diff --git a/src/target/llvm/codegen_amdgpu.cc b/src/target/llvm/codegen_amdgpu.cc index d95f985fe63f..0ab4771f6c69 100644 --- a/src/target/llvm/codegen_amdgpu.cc +++ b/src/target/llvm/codegen_amdgpu.cc @@ -187,7 +187,8 @@ class CodeGenAMDGPU : public CodeGenLLVM { } } llvm::Function* f = llvm::Intrinsic::getDeclaration(module_.get(), intrin_id); - return builder_->CreateCall(f, {}); + llvm::Value* result = builder_->CreateCall(f, {}); + return this->CreateCast(DataType::Int(32), iv->var->dtype, result); } llvm::Value* CreateStorageSync(const CallNode* op) final { diff --git a/src/target/llvm/intrin_rule_rocm.cc b/src/target/llvm/intrin_rule_rocm.cc index 17baaf3e657a..d25126f5d828 100644 --- a/src/target/llvm/intrin_rule_rocm.cc +++ b/src/target/llvm/intrin_rule_rocm.cc @@ -89,7 +89,7 @@ inline PrimExpr DispatchShuffle(const PrimExpr& e) { index = self + delta; index = Select((self & (width - 1)) + delta >= width, self, index); } - PrimExpr res = Call(var.dtype(), builtin::call_pure_extern(), + PrimExpr res = Call(DataType::Int(32), builtin::call_pure_extern(), {StringImm("llvm.amdgcn.ds.bpermute"), index << 2, var}); return res; }