[Mesa-dev] [PATCH] gallivm: fix pointer type for stmxcsr/ldmxcsr

Zack Rusin zackr at vmware.com
Fri Dec 13 13:19:01 PST 2013


Looks good. Thanks Roland!

----- Original Message -----
> From: Roland Scheidegger <sroland at vmware.com>
> 
> The argument is a i8 pointer not a i32 pointer (even though the value
> actually
> stored/loaded IS i32). Older llvm versions didn't care but 3.2 and newer do
> leading to crashes.
> ---
>  src/gallium/auxiliary/gallivm/lp_bld_arit.c |    9 +++++++--
>  1 file changed, 7 insertions(+), 2 deletions(-)
> 
> diff --git a/src/gallium/auxiliary/gallivm/lp_bld_arit.c
> b/src/gallium/auxiliary/gallivm/lp_bld_arit.c
> index 440dd0b..e516ae8 100644
> --- a/src/gallium/auxiliary/gallivm/lp_bld_arit.c
> +++ b/src/gallium/auxiliary/gallivm/lp_bld_arit.c
> @@ -3510,10 +3510,12 @@ lp_build_fpstate_get(struct gallivm_state *gallivm)
>           gallivm,
>           LLVMInt32TypeInContext(gallivm->context),
>           "mxcsr_ptr");
> +      LLVMValueRef mxcsr_ptr8 = LLVMBuildPointerCast(builder, mxcsr_ptr,
> +          LLVMPointerType(LLVMInt8TypeInContext(gallivm->context), 0), "");
>        lp_build_intrinsic(builder,
>                           "llvm.x86.sse.stmxcsr",
>                           LLVMVoidTypeInContext(gallivm->context),
> -                         &mxcsr_ptr, 1);
> +                         &mxcsr_ptr8, 1);
>        return mxcsr_ptr;
>     }
>     return 0;
> @@ -3554,7 +3556,10 @@ lp_build_fpstate_set(struct gallivm_state *gallivm,
>                       LLVMValueRef mxcsr_ptr)
>  {
>     if (util_cpu_caps.has_sse) {
> -      lp_build_intrinsic(gallivm->builder,
> +      LLVMBuilderRef builder = gallivm->builder;
> +      mxcsr_ptr = LLVMBuildPointerCast(builder, mxcsr_ptr,
> +
> LLVMPointerType(LLVMInt8TypeInContext(gallivm->context),
> 0), "");
> +      lp_build_intrinsic(builder,
>                           "llvm.x86.sse.ldmxcsr",
>                           LLVMVoidTypeInContext(gallivm->context),
>                           &mxcsr_ptr, 1);
> --
> 1.7.9.5
> 


More information about the mesa-dev mailing list