@@ -5699,33 +5699,28 @@ void CombinerHelper::applyCombineFunnelShift(MachineInstr &MI,
5699
5699
}
5700
5700
5701
5701
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 ;
5729
5724
}
5730
5725
5731
5726
bool CombinerHelper::applyCombineIdentity (MachineInstr &MI) {
0 commit comments