@@ -5699,33 +5699,28 @@ void CombinerHelper::applyCombineFunnelShift(MachineInstr &MI,
56995699}
57005700
57015701bool 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
57315726bool CombinerHelper::applyCombineIdentity (MachineInstr &MI) {
0 commit comments