mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-26 06:20:09 +01:00
gallivm/ppc64le: allow environmental control of Altivec code generation
In check_os_altivec_support(), allow control of Altivec (first PPC vector instruction set) code generation via a new environmental control, GALLIVM_ALTIVEC, which is expected to take on a value of 1 or 0. The default is to enable Altivec code generation. This environmental control of Altivec code generation is initially available only #ifdef DEBUG. Cc: "17.2" <mesa-stable@lists.freedesktop.org> Signed-off-by: Ben Crocker <bcrocker@redhat.com> Acked-by: Roland Scheidegger <sroland@vmware.com>
This commit is contained in:
parent
e93f056a4e
commit
1359af930e
1 changed files with 24 additions and 8 deletions
|
|
@ -132,16 +132,32 @@ check_os_altivec_support(void)
|
|||
if (setjmp(__lv_powerpc_jmpbuf)) {
|
||||
signal(SIGILL, SIG_DFL);
|
||||
} else {
|
||||
__lv_powerpc_canjump = 1;
|
||||
boolean enable_altivec = TRUE; /* Default: enable if available, and if not overridden */
|
||||
#ifdef DEBUG
|
||||
/* Disabling Altivec code generation is not the same as disabling VSX code generation,
|
||||
* which can be done simply by passing -mattr=-vsx to the LLVM compiler; cf.
|
||||
* lp_build_create_jit_compiler_for_module().
|
||||
* If you want to disable Altivec code generation, the best place to do it is here.
|
||||
*/
|
||||
char *env_control = getenv("GALLIVM_ALTIVEC"); /* 1=enable (default); 0=disable */
|
||||
if (env_control && env_control[0] == '0') {
|
||||
enable_altivec = FALSE;
|
||||
}
|
||||
#endif
|
||||
if (enable_altivec) {
|
||||
__lv_powerpc_canjump = 1;
|
||||
|
||||
__asm __volatile
|
||||
("mtspr 256, %0\n\t"
|
||||
"vand %%v0, %%v0, %%v0"
|
||||
:
|
||||
: "r" (-1));
|
||||
__asm __volatile
|
||||
("mtspr 256, %0\n\t"
|
||||
"vand %%v0, %%v0, %%v0"
|
||||
:
|
||||
: "r" (-1));
|
||||
|
||||
signal(SIGILL, SIG_DFL);
|
||||
util_cpu_caps.has_altivec = 1;
|
||||
signal(SIGILL, SIG_DFL);
|
||||
util_cpu_caps.has_altivec = 1;
|
||||
} else {
|
||||
util_cpu_caps.has_altivec = 0;
|
||||
}
|
||||
}
|
||||
#endif /* !PIPE_OS_APPLE */
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue