@@ -70,13 +70,13 @@ bool HalfPromotion::runOnFunction(Function& F)
7070
7171void 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)
130130void 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