@@ -70,13 +70,13 @@ bool HalfPromotion::runOnFunction(Function& F)
70
70
71
71
void HalfPromotion::visitCallInst (llvm::CallInst& I)
72
72
{
73
- if (llvm::isa<llvm::IntrinsicInst >(I) && I.getType ()->isHalfTy ())
73
+ if (llvm::isa<GenIntrinsicInst >(I) && I.getType ()->isHalfTy ())
74
74
{
75
- handleLLVMIntrinsic (llvm::cast<IntrinsicInst >(I));
75
+ handleGenIntrinsic (llvm::cast<GenIntrinsicInst >(I));
76
76
}
77
- else if (llvm::isa<GenIntrinsicInst >(I) && I.getType ()->isHalfTy ())
77
+ else if (llvm::isa<llvm::IntrinsicInst >(I) && I.getType ()->isHalfTy ())
78
78
{
79
- handleGenIntrinsic (llvm::cast<GenIntrinsicInst >(I));
79
+ handleLLVMIntrinsic (llvm::cast<IntrinsicInst >(I));
80
80
}
81
81
}
82
82
@@ -130,11 +130,9 @@ void IGC::HalfPromotion::handleLLVMIntrinsic(llvm::IntrinsicInst& I)
130
130
void IGC::HalfPromotion::handleGenIntrinsic (llvm::GenIntrinsicInst& I)
131
131
{
132
132
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)
138
136
{
139
137
Module* M = I.getParent ()->getParent ()->getParent ();
140
138
llvm::IGCIRBuilder<> builder (&I);
@@ -163,6 +161,7 @@ void IGC::HalfPromotion::handleGenIntrinsic(llvm::GenIntrinsicInst& I)
163
161
arguments);
164
162
Value* f16Val = builder.CreateFPTrunc (f32Val, builder.getHalfTy ());
165
163
I.replaceAllUsesWith (f16Val);
164
+ I.eraseFromParent ();
166
165
m_changed = true ;
167
166
}
168
167
}
0 commit comments