Skip to content

Commit 2cb98c2

Browse files
fftzengsys_zuul
authored andcommitted
Remove redundant movs for waveShuffle
Change-Id: I9dd157dcde2b0ecd13d9801d9f74fe46aaf25d9d
1 parent aaf8589 commit 2cb98c2

File tree

2 files changed

+15
-0
lines changed

2 files changed

+15
-0
lines changed

IGC/Compiler/CustomSafeOptPass.cpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -446,6 +446,11 @@ void CustomSafeOptPass::visitCallInst(CallInst& C)
446446
break;
447447
}
448448

449+
case GenISAIntrinsic::GenISA_WaveShuffleIndex:
450+
{
451+
visitWaveShuffleIndex(inst);
452+
break;
453+
}
449454
default:
450455
break;
451456
}
@@ -1173,6 +1178,15 @@ void IGC::CustomSafeOptPass::visitLdptr(llvm::CallInst* inst)
11731178
}
11741179
}
11751180

1181+
void IGC::CustomSafeOptPass::visitWaveShuffleIndex(llvm::CallInst* inst)
1182+
{
1183+
llvm::Constant* src1 = llvm::dyn_cast<llvm::Constant>(inst->getOperand(1));
1184+
llvm::Constant* src2 = llvm::dyn_cast<llvm::Constant>(inst->getOperand(2));
1185+
if (src1 && src2 && src1->isZeroValue() && src2->isZeroValue())
1186+
{
1187+
inst->replaceAllUsesWith(inst->getOperand(0));
1188+
}
1189+
}
11761190

11771191
void IGC::CustomSafeOptPass::visitLdRawVec(llvm::CallInst* inst)
11781192
{

IGC/Compiler/CustomSafeOptPass.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ namespace IGC
8282
void visitLdptr(llvm::CallInst* inst);
8383
void visitLdRawVec(llvm::CallInst* inst);
8484
void visitLoadInst(llvm::LoadInst& I);
85+
void visitWaveShuffleIndex(llvm::CallInst* inst);
8586

8687
//
8788
// IEEE Floating point arithmetic is not associative. Any pattern

0 commit comments

Comments
 (0)