diff --git a/.pick_status.json b/.pick_status.json index 3c29f6b9a9f..cc59e580baa 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -814,7 +814,7 @@ "description": "gallivm: Fix gather/scatter types for newer llvm", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null }, diff --git a/src/gallium/auxiliary/gallivm/lp_bld_gather.c b/src/gallium/auxiliary/gallivm/lp_bld_gather.c index b93251b4444..f55f2f3145e 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_gather.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_gather.c @@ -611,8 +611,14 @@ lp_build_masked_gather(struct gallivm_state *gallivm, LLVMValueRef args[4]; char intrin_name[64]; +#if LLVM_VERSION_MAJOR >= 16 + snprintf(intrin_name, 64, "llvm.masked.gather.v%ui%u.v%up0", + length, bit_size, length); +#else snprintf(intrin_name, 64, "llvm.masked.gather.v%ui%u.v%up0i%u", length, bit_size, length, bit_size); +#endif + args[0] = offset_ptr; args[1] = lp_build_const_int32(gallivm, bit_size / 8); args[2] = LLVMBuildICmp(builder, LLVMIntNE, exec_mask, @@ -635,8 +641,14 @@ lp_build_masked_scatter(struct gallivm_state *gallivm, LLVMValueRef args[4]; char intrin_name[64]; +#if LLVM_VERSION_MAJOR >= 16 + snprintf(intrin_name, 64, "llvm.masked.scatter.v%ui%u.v%up0", + length, bit_size, length); +#else snprintf(intrin_name, 64, "llvm.masked.scatter.v%ui%u.v%up0i%u", length, bit_size, length, bit_size); +#endif + args[0] = value_vec; args[1] = offset_ptr; args[2] = lp_build_const_int32(gallivm, bit_size / 8);