Skip to content

Commit 56af4f8

Browse files
committed
Fix identity combine.
1 parent 13d167a commit 56af4f8

File tree

1 file changed

+22
-27
lines changed

1 file changed

+22
-27
lines changed

llvm/lib/CodeGen/GlobalISel/CombinerHelper.cpp

Lines changed: 22 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -5699,33 +5699,28 @@ void CombinerHelper::applyCombineFunnelShift(MachineInstr &MI,
56995699
}
57005700

57015701
bool CombinerHelper::matchCombineIdentity(MachineInstr &MI) {
5702-
int64_t IdentityElement;
5703-
switch (MI.getOpcode()) {
5704-
case TargetOpcode::G_ADD:
5705-
case TargetOpcode::G_SUB:
5706-
case TargetOpcode::G_OR:
5707-
case TargetOpcode::G_XOR:
5708-
case TargetOpcode::G_SHL:
5709-
case TargetOpcode::G_LSHR:
5710-
case TargetOpcode::G_ASHR:
5711-
case TargetOpcode::G_PTR_ADD:
5712-
IdentityElement = 0;
5713-
break;
5714-
case TargetOpcode::G_MUL:
5715-
case TargetOpcode::G_SDIV:
5716-
case TargetOpcode::G_UDIV:
5717-
IdentityElement = 1;
5718-
break;
5719-
case TargetOpcode::G_AND:
5720-
case TargetOpcode::G_PTRMASK:
5721-
IdentityElement = -1;
5722-
break;
5723-
default:
5724-
return false;
5725-
}
5726-
auto MaybeImmVal =
5727-
getIConstantVRegValWithLookThrough(MI.getOperand(2).getReg(), MRI);
5728-
return MaybeImmVal && MaybeImmVal->Value == IdentityElement;
5702+
if (MI.getNumOperands() == 3 && MI.getOperand(2).isReg())
5703+
if (auto MaybeImmVal =
5704+
getIConstantVRegValWithLookThrough(MI.getOperand(2).getReg(), MRI))
5705+
switch (MI.getOpcode()) {
5706+
case TargetOpcode::G_ADD:
5707+
case TargetOpcode::G_SUB:
5708+
case TargetOpcode::G_OR:
5709+
case TargetOpcode::G_XOR:
5710+
case TargetOpcode::G_SHL:
5711+
case TargetOpcode::G_LSHR:
5712+
case TargetOpcode::G_ASHR:
5713+
case TargetOpcode::G_PTR_ADD:
5714+
return MaybeImmVal->Value.isZero();
5715+
case TargetOpcode::G_MUL:
5716+
case TargetOpcode::G_SDIV:
5717+
case TargetOpcode::G_UDIV:
5718+
return MaybeImmVal->Value.isOne();
5719+
case TargetOpcode::G_AND:
5720+
case TargetOpcode::G_PTRMASK:
5721+
return MaybeImmVal->Value.isAllOnes();
5722+
}
5723+
return false;
57295724
}
57305725

57315726
bool CombinerHelper::applyCombineIdentity(MachineInstr &MI) {

0 commit comments

Comments
 (0)