Looks good. Thanks Roland!
----- Original Message ----- > From: Roland Scheidegger <srol...@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 > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev