[llvm] r328928 - [X86] Allow i16 subtracts to be promoted if the load is on the LHS and its not being stored.
Craig Topper via llvm-commits
llvm-commits at lists.llvm.org
Sat Mar 31 23:29:25 PDT 2018
Author: ctopper
Date: Sat Mar 31 23:29:25 2018
New Revision: 328928
URL: http://llvm.org/viewvc/llvm-project?rev=328928&view=rev
Log:
[X86] Allow i16 subtracts to be promoted if the load is on the LHS and its not being stored.
Modified:
llvm/trunk/lib/Target/X86/X86ISelLowering.cpp
llvm/trunk/test/CodeGen/X86/promote-i16.ll
Modified: llvm/trunk/lib/Target/X86/X86ISelLowering.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ISelLowering.cpp?rev=328928&r1=328927&r2=328928&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86ISelLowering.cpp (original)
+++ llvm/trunk/lib/Target/X86/X86ISelLowering.cpp Sat Mar 31 23:29:25 2018
@@ -38742,12 +38742,12 @@ bool X86TargetLowering::IsDesirableToPro
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;
}
}
Modified: llvm/trunk/test/CodeGen/X86/promote-i16.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/promote-i16.ll?rev=328928&r1=328927&r2=328928&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/X86/promote-i16.ll (original)
+++ llvm/trunk/test/CodeGen/X86/promote-i16.ll Sat Mar 31 23:29:25 2018
@@ -49,7 +49,8 @@ define signext i16 @baz(i16* %x, i16 sig
; 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
More information about the llvm-commits
mailing list