case ISD::SUB: {
SDValue N0 = Op.getOperand(0);
SDValue N1 = Op.getOperand(1);
- if (!Commute && MayFoldLoad(N1))
- return false;
// Avoid disabling potential load folding opportunities.
- if (MayFoldLoad(N0) && (!isa<ConstantSDNode>(N1) || MayFoldIntoStore(Op)))
+ if (MayFoldLoad(N1) &&
+ (!Commute || !isa<ConstantSDNode>(N0) || MayFoldIntoStore(Op)))
return false;
- if (MayFoldLoad(N1) && (!isa<ConstantSDNode>(N0) || MayFoldIntoStore(Op)))
+ if (MayFoldLoad(N0) &&
+ ((Commute && !isa<ConstantSDNode>(N1)) || MayFoldIntoStore(Op)))
return false;
}
}
; X64-LABEL: baz:
; X64: # %bb.0: # %entry
; X64-NEXT: movzwl (%rdi), %eax
-; X64-NEXT: subw %si, %ax
+; X64-NEXT: subl %esi, %eax
+; X64-NEXT: # kill: def $ax killed $ax killed $eax
; X64-NEXT: retq
entry:
%0 = load i16, i16* %x