Skip to content

Commit 4d5de0d

Browse files
aratajewsys_zuul
authored and
sys_zuul
committed
Fix wave intrinsics fp16 emulation
Change-Id: I87f367f1bf502e178c88546246b4a16aef9ca864
1 parent 173eb2a commit 4d5de0d

File tree

1 file changed

+8
-9
lines changed

1 file changed

+8
-9
lines changed

IGC/Compiler/CISACodeGen/HalfPromotion.cpp

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -70,13 +70,13 @@ bool HalfPromotion::runOnFunction(Function& F)
7070

7171
void HalfPromotion::visitCallInst(llvm::CallInst& I)
7272
{
73-
if (llvm::isa<llvm::IntrinsicInst>(I) && I.getType()->isHalfTy())
73+
if (llvm::isa<GenIntrinsicInst>(I) && I.getType()->isHalfTy())
7474
{
75-
handleLLVMIntrinsic(llvm::cast<IntrinsicInst>(I));
75+
handleGenIntrinsic(llvm::cast<GenIntrinsicInst>(I));
7676
}
77-
else if (llvm::isa<GenIntrinsicInst>(I) && I.getType()->isHalfTy())
77+
else if (llvm::isa<llvm::IntrinsicInst>(I) && I.getType()->isHalfTy())
7878
{
79-
handleGenIntrinsic(llvm::cast<GenIntrinsicInst>(I));
79+
handleLLVMIntrinsic(llvm::cast<IntrinsicInst>(I));
8080
}
8181
}
8282

@@ -130,11 +130,9 @@ void IGC::HalfPromotion::handleLLVMIntrinsic(llvm::IntrinsicInst& I)
130130
void IGC::HalfPromotion::handleGenIntrinsic(llvm::GenIntrinsicInst& I)
131131
{
132132
GenISAIntrinsic::ID id = I.getIntrinsicID();
133-
if (id == GenISAIntrinsic::GenISA_fsat ||
134-
id == GenISAIntrinsic::GenISA_rsq ||
135-
id == GenISAIntrinsic::GenISA_GradientX ||
136-
id == GenISAIntrinsic::GenISA_GradientY ||
137-
id == GenISAIntrinsic::GenISA_WaveShuffleIndex)
133+
if (id == GenISAIntrinsic::GenISA_WaveAll ||
134+
id == GenISAIntrinsic::GenISA_WavePrefix ||
135+
id == GenISAIntrinsic::GenISA_WaveClustered)
138136
{
139137
Module* M = I.getParent()->getParent()->getParent();
140138
llvm::IGCIRBuilder<> builder(&I);
@@ -163,6 +161,7 @@ void IGC::HalfPromotion::handleGenIntrinsic(llvm::GenIntrinsicInst& I)
163161
arguments);
164162
Value* f16Val = builder.CreateFPTrunc(f32Val, builder.getHalfTy());
165163
I.replaceAllUsesWith(f16Val);
164+
I.eraseFromParent();
166165
m_changed = true;
167166
}
168167
}

0 commit comments

Comments
 (0)