Skip to content

Commit 2a1151b

Browse files
authored
[SYCL][ESIMD] Fix an issue causing incorrect conversion involving unsigned types (#6627)
Fix an issue causing incorrect conversion into unsigned types
1 parent 3d54d7e commit 2a1151b

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

llvm/lib/SYCLLowerIR/ESIMD/LowerESIMD.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1688,7 +1688,11 @@ size_t SYCLLowerESIMDPass::runOnFunction(Function &F,
16881688
auto TmpTy = llvm::FixedVectorType::get(
16891689
llvm::Type::getInt32Ty(DstTy->getContext()),
16901690
cast<FixedVectorType>(DstTy)->getNumElements());
1691-
Src = Builder.CreateFPToSI(Src, TmpTy);
1691+
if (CastOpcode == llvm::Instruction::FPToUI) {
1692+
Src = Builder.CreateFPToUI(Src, TmpTy);
1693+
} else {
1694+
Src = Builder.CreateFPToSI(Src, TmpTy);
1695+
}
16921696

16931697
llvm::Instruction::CastOps TruncOp = llvm::Instruction::Trunc;
16941698
llvm::Value *NewDst = Builder.CreateCast(TruncOp, Src, DstTy);

0 commit comments

Comments
 (0)