From 6deb9f7f2c186655420c8249f30f70f24cc39080 Mon Sep 17 00:00:00 2001 From: Tim Rowley Date: Wed, 11 May 2016 18:05:23 -0600 Subject: [PATCH] swr: [rasterizer jitter] fix assert in AVX implementation of MASKLOADD llvm changed the mask type to vector of ints with 3.8. Reviewed-by: Bruce Cherniak --- .../drivers/swr/rasterizer/jitter/builder_misc.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/swr/rasterizer/jitter/builder_misc.cpp b/src/gallium/drivers/swr/rasterizer/jitter/builder_misc.cpp index 3a304ecf57a..7da4c025a7a 100644 --- a/src/gallium/drivers/swr/rasterizer/jitter/builder_misc.cpp +++ b/src/gallium/drivers/swr/rasterizer/jitter/builder_misc.cpp @@ -350,9 +350,14 @@ Value *Builder::MASKLOADD(Value* src,Value* mask) } else { + // maskload intrinsic expects integer mask operand in llvm >= 3.8 +#if (LLVM_VERSION_MAJOR > 3) || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 8) + mask = BITCAST(mask,VectorType::get(mInt32Ty,mVWidth)); +#else + mask = BITCAST(mask,VectorType::get(mFP32Ty,mVWidth)); +#endif Function *func = Intrinsic::getDeclaration(JM()->mpCurrentModule,Intrinsic::x86_avx_maskload_ps_256); - Value* fMask = BITCAST(mask,VectorType::get(mInt32Ty,mVWidth)); - vResult = BITCAST(CALL(func,{src,fMask}), VectorType::get(mInt32Ty,mVWidth)); + vResult = BITCAST(CALL(func,{src,mask}), VectorType::get(mInt32Ty,mVWidth)); } return vResult; } -- 2.30.2