diff options
-rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp | 12 | ||||
-rw-r--r-- | llvm/test/CodeGen/X86/3addr-16bit.ll | 10 | ||||
-rw-r--r-- | llvm/test/CodeGen/X86/avx512-mask-op.ll | 6 | ||||
-rw-r--r-- | llvm/test/CodeGen/X86/fixup-bw-copy.ll | 2 | ||||
-rw-r--r-- | llvm/test/CodeGen/X86/iabs.ll | 2 | ||||
-rw-r--r-- | llvm/test/CodeGen/X86/ins_subreg_coalesce-1.ll | 15 | ||||
-rw-r--r-- | llvm/test/CodeGen/X86/mul-constant-i16.ll | 67 | ||||
-rw-r--r-- | llvm/test/CodeGen/X86/popcnt.ll | 2 | ||||
-rw-r--r-- | llvm/test/CodeGen/X86/pr32345.ll | 32 | ||||
-rw-r--r-- | llvm/test/CodeGen/X86/pr32420.ll | 18 | ||||
-rw-r--r-- | llvm/test/CodeGen/X86/pr34137.ll | 3 | ||||
-rw-r--r-- | llvm/test/CodeGen/X86/promote-i16.ll | 8 | ||||
-rw-r--r-- | llvm/test/CodeGen/X86/reduce-trunc-shl.ll | 4 |
13 files changed, 91 insertions, 90 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp index 45c6e9771a3..e123e814c66 100644 --- a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp @@ -1089,10 +1089,8 @@ SDValue DAGCombiner::PromoteOperand(SDValue Op, EVT PVT, bool &Replace) { if (ISD::isUNINDEXEDLoad(Op.getNode())) { LoadSDNode *LD = cast<LoadSDNode>(Op); EVT MemVT = LD->getMemoryVT(); - ISD::LoadExtType ExtType = ISD::isNON_EXTLoad(LD) - ? (TLI.isLoadExtLegal(ISD::ZEXTLOAD, PVT, MemVT) ? ISD::ZEXTLOAD - : ISD::EXTLOAD) - : LD->getExtensionType(); + ISD::LoadExtType ExtType = ISD::isNON_EXTLoad(LD) ? ISD::EXTLOAD + : LD->getExtensionType(); Replace = true; return DAG.getExtLoad(ExtType, DL, PVT, LD->getChain(), LD->getBasePtr(), @@ -1327,10 +1325,8 @@ bool DAGCombiner::PromoteLoad(SDValue Op) { SDNode *N = Op.getNode(); LoadSDNode *LD = cast<LoadSDNode>(N); EVT MemVT = LD->getMemoryVT(); - ISD::LoadExtType ExtType = ISD::isNON_EXTLoad(LD) - ? (TLI.isLoadExtLegal(ISD::ZEXTLOAD, PVT, MemVT) ? ISD::ZEXTLOAD - : ISD::EXTLOAD) - : LD->getExtensionType(); + ISD::LoadExtType ExtType = ISD::isNON_EXTLoad(LD) ? ISD::EXTLOAD + : LD->getExtensionType(); SDValue NewLD = DAG.getExtLoad(ExtType, DL, PVT, LD->getChain(), LD->getBasePtr(), MemVT, LD->getMemOperand()); diff --git a/llvm/test/CodeGen/X86/3addr-16bit.ll b/llvm/test/CodeGen/X86/3addr-16bit.ll index 15cd82e19bd..882150a6e39 100644 --- a/llvm/test/CodeGen/X86/3addr-16bit.ll +++ b/llvm/test/CodeGen/X86/3addr-16bit.ll @@ -29,7 +29,7 @@ define zeroext i16 @test1(i16 zeroext %c, i16 zeroext %k) nounwind ssp { ; X32: ## %bb.0: ## %entry ; X32-NEXT: pushl %esi ; X32-NEXT: subl $8, %esp -; X32-NEXT: movzwl {{[0-9]+}}(%esp), %ecx +; X32-NEXT: movl {{[0-9]+}}(%esp), %ecx ; X32-NEXT: movl %ecx, %eax ; X32-NEXT: incl %eax ; X32-NEXT: cmpw {{[0-9]+}}(%esp), %cx @@ -82,7 +82,7 @@ define zeroext i16 @test2(i16 zeroext %c, i16 zeroext %k) nounwind ssp { ; X32: ## %bb.0: ## %entry ; X32-NEXT: pushl %esi ; X32-NEXT: subl $8, %esp -; X32-NEXT: movzwl {{[0-9]+}}(%esp), %ecx +; X32-NEXT: movl {{[0-9]+}}(%esp), %ecx ; X32-NEXT: movl %ecx, %eax ; X32-NEXT: decl %eax ; X32-NEXT: cmpw {{[0-9]+}}(%esp), %cx @@ -137,7 +137,7 @@ define zeroext i16 @test3(i16 zeroext %c, i16 zeroext %k) nounwind ssp { ; X32: ## %bb.0: ## %entry ; X32-NEXT: pushl %esi ; X32-NEXT: subl $8, %esp -; X32-NEXT: movzwl {{[0-9]+}}(%esp), %ecx +; X32-NEXT: movl {{[0-9]+}}(%esp), %ecx ; X32-NEXT: movl %ecx, %eax ; X32-NEXT: addl $2, %eax ; X32-NEXT: cmpw {{[0-9]+}}(%esp), %cx @@ -190,8 +190,8 @@ define zeroext i16 @test4(i16 zeroext %c, i16 zeroext %k) nounwind ssp { ; X32: ## %bb.0: ## %entry ; X32-NEXT: pushl %esi ; X32-NEXT: subl $8, %esp -; X32-NEXT: movzwl {{[0-9]+}}(%esp), %ecx -; X32-NEXT: movzwl {{[0-9]+}}(%esp), %edx +; X32-NEXT: movl {{[0-9]+}}(%esp), %ecx +; X32-NEXT: movl {{[0-9]+}}(%esp), %edx ; X32-NEXT: movl %edx, %eax ; X32-NEXT: addl %ecx, %eax ; X32-NEXT: cmpw %cx, %dx diff --git a/llvm/test/CodeGen/X86/avx512-mask-op.ll b/llvm/test/CodeGen/X86/avx512-mask-op.ll index 649fd7debbf..dd2b9bdd4b2 100644 --- a/llvm/test/CodeGen/X86/avx512-mask-op.ll +++ b/llvm/test/CodeGen/X86/avx512-mask-op.ll @@ -15,7 +15,7 @@ define i16 @mask16(i16 %x) { ; ; X86-LABEL: mask16: ; X86: ## %bb.0: -; X86-NEXT: movzwl {{[0-9]+}}(%esp), %eax +; X86-NEXT: movl {{[0-9]+}}(%esp), %eax ; X86-NEXT: notl %eax ; X86-NEXT: ## kill: def $ax killed $ax killed $eax ; X86-NEXT: retl @@ -157,8 +157,8 @@ define i16 @mand16(i16 %x, i16 %y) { ; ; X86-LABEL: mand16: ; X86: ## %bb.0: -; X86-NEXT: movzwl {{[0-9]+}}(%esp), %ecx -; X86-NEXT: movzwl {{[0-9]+}}(%esp), %eax +; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx +; X86-NEXT: movl {{[0-9]+}}(%esp), %eax ; X86-NEXT: movl %eax, %edx ; X86-NEXT: andl %ecx, %edx ; X86-NEXT: xorl %ecx, %eax diff --git a/llvm/test/CodeGen/X86/fixup-bw-copy.ll b/llvm/test/CodeGen/X86/fixup-bw-copy.ll index 4f6d2e3b610..fe9b8861453 100644 --- a/llvm/test/CodeGen/X86/fixup-bw-copy.ll +++ b/llvm/test/CodeGen/X86/fixup-bw-copy.ll @@ -59,7 +59,7 @@ define i8 @test_movb_hreg(i16 %a0) { ; ; X32-LABEL: test_movb_hreg: ; X32: # %bb.0: -; X32-NEXT: movzwl {{[0-9]+}}(%esp), %eax +; X32-NEXT: movl {{[0-9]+}}(%esp), %eax ; X32-NEXT: addb %al, %ah ; X32-NEXT: movb %ah, %al ; X32-NEXT: retl diff --git a/llvm/test/CodeGen/X86/iabs.ll b/llvm/test/CodeGen/X86/iabs.ll index 0b2e39716d2..96f8f5caf97 100644 --- a/llvm/test/CodeGen/X86/iabs.ll +++ b/llvm/test/CodeGen/X86/iabs.ll @@ -36,7 +36,7 @@ define i8 @test_i8(i8 %a) nounwind { define i16 @test_i16(i16 %a) nounwind { ; X86-NO-CMOV-LABEL: test_i16: ; X86-NO-CMOV: # %bb.0: -; X86-NO-CMOV-NEXT: movzwl {{[0-9]+}}(%esp), %eax +; X86-NO-CMOV-NEXT: movl {{[0-9]+}}(%esp), %eax ; X86-NO-CMOV-NEXT: movl %eax, %ecx ; X86-NO-CMOV-NEXT: sarw $15, %cx ; X86-NO-CMOV-NEXT: addl %ecx, %eax diff --git a/llvm/test/CodeGen/X86/ins_subreg_coalesce-1.ll b/llvm/test/CodeGen/X86/ins_subreg_coalesce-1.ll index 19ca7cb17a4..e88b3a579c0 100644 --- a/llvm/test/CodeGen/X86/ins_subreg_coalesce-1.ll +++ b/llvm/test/CodeGen/X86/ins_subreg_coalesce-1.ll @@ -1,13 +1,16 @@ +; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py ; RUN: llc < %s -mtriple=i686-- -mattr=-bmi | FileCheck %s define fastcc i32 @t() nounwind { -entry: ; CHECK-LABEL: t: -; CHECK: movzwl 0, %eax -; CHECK: orl $2, %eax -; CHECK: movw %ax, 0 -; CHECK: shrl $3, %eax -; CHECK: andl $1, %eax +; CHECK: # %bb.0: # %walkExprTree.exit +; CHECK-NEXT: movl 0, %eax +; CHECK-NEXT: orl $2, %eax +; CHECK-NEXT: movw %ax, 0 +; CHECK-NEXT: shrl $3, %eax +; CHECK-NEXT: andl $1, %eax +; CHECK-NEXT: retl +entry: br i1 false, label %UnifiedReturnBlock, label %bb4 bb4: ; preds = %entry br i1 false, label %bb17, label %bb22 diff --git a/llvm/test/CodeGen/X86/mul-constant-i16.ll b/llvm/test/CodeGen/X86/mul-constant-i16.ll index 10fc16bda25..60a69dfbc2a 100644 --- a/llvm/test/CodeGen/X86/mul-constant-i16.ll +++ b/llvm/test/CodeGen/X86/mul-constant-i16.ll @@ -19,7 +19,7 @@ define i16 @test_mul_by_1(i16 %x) { define i16 @test_mul_by_2(i16 %x) { ; X86-LABEL: test_mul_by_2: ; X86: # %bb.0: -; X86-NEXT: movzwl {{[0-9]+}}(%esp), %eax +; X86-NEXT: movl {{[0-9]+}}(%esp), %eax ; X86-NEXT: addl %eax, %eax ; X86-NEXT: # kill: def $ax killed $ax killed $eax ; X86-NEXT: retl @@ -37,8 +37,7 @@ define i16 @test_mul_by_2(i16 %x) { define i16 @test_mul_by_3(i16 %x) { ; X86-LABEL: test_mul_by_3: ; X86: # %bb.0: -; X86-NEXT: movzwl {{[0-9]+}}(%esp), %eax -; X86-NEXT: leal (%eax,%eax,2), %eax +; X86-NEXT: imull $3, {{[0-9]+}}(%esp), %eax ; X86-NEXT: # kill: def $ax killed $ax killed $eax ; X86-NEXT: retl ; @@ -55,7 +54,7 @@ define i16 @test_mul_by_3(i16 %x) { define i16 @test_mul_by_4(i16 %x) { ; X86-LABEL: test_mul_by_4: ; X86: # %bb.0: -; X86-NEXT: movzwl {{[0-9]+}}(%esp), %eax +; X86-NEXT: movl {{[0-9]+}}(%esp), %eax ; X86-NEXT: shll $2, %eax ; X86-NEXT: # kill: def $ax killed $ax killed $eax ; X86-NEXT: retl @@ -73,8 +72,7 @@ define i16 @test_mul_by_4(i16 %x) { define i16 @test_mul_by_5(i16 %x) { ; X86-LABEL: test_mul_by_5: ; X86: # %bb.0: -; X86-NEXT: movzwl {{[0-9]+}}(%esp), %eax -; X86-NEXT: leal (%eax,%eax,4), %eax +; X86-NEXT: imull $5, {{[0-9]+}}(%esp), %eax ; X86-NEXT: # kill: def $ax killed $ax killed $eax ; X86-NEXT: retl ; @@ -91,7 +89,7 @@ define i16 @test_mul_by_5(i16 %x) { define i16 @test_mul_by_6(i16 %x) { ; X86-LABEL: test_mul_by_6: ; X86: # %bb.0: -; X86-NEXT: movzwl {{[0-9]+}}(%esp), %eax +; X86-NEXT: movl {{[0-9]+}}(%esp), %eax ; X86-NEXT: addl %eax, %eax ; X86-NEXT: leal (%eax,%eax,2), %eax ; X86-NEXT: # kill: def $ax killed $ax killed $eax @@ -111,7 +109,7 @@ define i16 @test_mul_by_6(i16 %x) { define i16 @test_mul_by_7(i16 %x) { ; X86-LABEL: test_mul_by_7: ; X86: # %bb.0: -; X86-NEXT: movzwl {{[0-9]+}}(%esp), %ecx +; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx ; X86-NEXT: leal (,%ecx,8), %eax ; X86-NEXT: subl %ecx, %eax ; X86-NEXT: # kill: def $ax killed $ax killed $eax @@ -131,7 +129,7 @@ define i16 @test_mul_by_7(i16 %x) { define i16 @test_mul_by_8(i16 %x) { ; X86-LABEL: test_mul_by_8: ; X86: # %bb.0: -; X86-NEXT: movzwl {{[0-9]+}}(%esp), %eax +; X86-NEXT: movl {{[0-9]+}}(%esp), %eax ; X86-NEXT: shll $3, %eax ; X86-NEXT: # kill: def $ax killed $ax killed $eax ; X86-NEXT: retl @@ -149,8 +147,7 @@ define i16 @test_mul_by_8(i16 %x) { define i16 @test_mul_by_9(i16 %x) { ; X86-LABEL: test_mul_by_9: ; X86: # %bb.0: -; X86-NEXT: movzwl {{[0-9]+}}(%esp), %eax -; X86-NEXT: leal (%eax,%eax,8), %eax +; X86-NEXT: imull $9, {{[0-9]+}}(%esp), %eax ; X86-NEXT: # kill: def $ax killed $ax killed $eax ; X86-NEXT: retl ; @@ -167,7 +164,7 @@ define i16 @test_mul_by_9(i16 %x) { define i16 @test_mul_by_10(i16 %x) { ; X86-LABEL: test_mul_by_10: ; X86: # %bb.0: -; X86-NEXT: movzwl {{[0-9]+}}(%esp), %eax +; X86-NEXT: movl {{[0-9]+}}(%esp), %eax ; X86-NEXT: addl %eax, %eax ; X86-NEXT: leal (%eax,%eax,4), %eax ; X86-NEXT: # kill: def $ax killed $ax killed $eax @@ -187,7 +184,7 @@ define i16 @test_mul_by_10(i16 %x) { define i16 @test_mul_by_11(i16 %x) { ; X86-LABEL: test_mul_by_11: ; X86: # %bb.0: -; X86-NEXT: movzwl {{[0-9]+}}(%esp), %eax +; X86-NEXT: movl {{[0-9]+}}(%esp), %eax ; X86-NEXT: leal (%eax,%eax,4), %ecx ; X86-NEXT: leal (%eax,%ecx,2), %eax ; X86-NEXT: # kill: def $ax killed $ax killed $eax @@ -207,7 +204,7 @@ define i16 @test_mul_by_11(i16 %x) { define i16 @test_mul_by_12(i16 %x) { ; X86-LABEL: test_mul_by_12: ; X86: # %bb.0: -; X86-NEXT: movzwl {{[0-9]+}}(%esp), %eax +; X86-NEXT: movl {{[0-9]+}}(%esp), %eax ; X86-NEXT: shll $2, %eax ; X86-NEXT: leal (%eax,%eax,2), %eax ; X86-NEXT: # kill: def $ax killed $ax killed $eax @@ -227,7 +224,7 @@ define i16 @test_mul_by_12(i16 %x) { define i16 @test_mul_by_13(i16 %x) { ; X86-LABEL: test_mul_by_13: ; X86: # %bb.0: -; X86-NEXT: movzwl {{[0-9]+}}(%esp), %eax +; X86-NEXT: movl {{[0-9]+}}(%esp), %eax ; X86-NEXT: leal (%eax,%eax,2), %ecx ; X86-NEXT: leal (%eax,%ecx,4), %eax ; X86-NEXT: # kill: def $ax killed $ax killed $eax @@ -247,7 +244,7 @@ define i16 @test_mul_by_13(i16 %x) { define i16 @test_mul_by_14(i16 %x) { ; X86-LABEL: test_mul_by_14: ; X86: # %bb.0: -; X86-NEXT: movzwl {{[0-9]+}}(%esp), %ecx +; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx ; X86-NEXT: leal (%ecx,%ecx,2), %eax ; X86-NEXT: leal (%ecx,%eax,4), %eax ; X86-NEXT: addl %ecx, %eax @@ -269,7 +266,7 @@ define i16 @test_mul_by_14(i16 %x) { define i16 @test_mul_by_15(i16 %x) { ; X86-LABEL: test_mul_by_15: ; X86: # %bb.0: -; X86-NEXT: movzwl {{[0-9]+}}(%esp), %eax +; X86-NEXT: movl {{[0-9]+}}(%esp), %eax ; X86-NEXT: leal (%eax,%eax,4), %eax ; X86-NEXT: leal (%eax,%eax,2), %eax ; X86-NEXT: # kill: def $ax killed $ax killed $eax @@ -289,7 +286,7 @@ define i16 @test_mul_by_15(i16 %x) { define i16 @test_mul_by_16(i16 %x) { ; X86-LABEL: test_mul_by_16: ; X86: # %bb.0: -; X86-NEXT: movzwl {{[0-9]+}}(%esp), %eax +; X86-NEXT: movl {{[0-9]+}}(%esp), %eax ; X86-NEXT: shll $4, %eax ; X86-NEXT: # kill: def $ax killed $ax killed $eax ; X86-NEXT: retl @@ -306,7 +303,7 @@ define i16 @test_mul_by_16(i16 %x) { define i16 @test_mul_by_17(i16 %x) { ; X86-LABEL: test_mul_by_17: ; X86: # %bb.0: -; X86-NEXT: movzwl {{[0-9]+}}(%esp), %ecx +; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx ; X86-NEXT: movl %ecx, %eax ; X86-NEXT: shll $4, %eax ; X86-NEXT: addl %ecx, %eax @@ -328,7 +325,7 @@ define i16 @test_mul_by_17(i16 %x) { define i16 @test_mul_by_18(i16 %x) { ; X86-LABEL: test_mul_by_18: ; X86: # %bb.0: -; X86-NEXT: movzwl {{[0-9]+}}(%esp), %eax +; X86-NEXT: movl {{[0-9]+}}(%esp), %eax ; X86-NEXT: addl %eax, %eax ; X86-NEXT: leal (%eax,%eax,8), %eax ; X86-NEXT: # kill: def $ax killed $ax killed $eax @@ -348,7 +345,7 @@ define i16 @test_mul_by_18(i16 %x) { define i16 @test_mul_by_19(i16 %x) { ; X86-LABEL: test_mul_by_19: ; X86: # %bb.0: -; X86-NEXT: movzwl {{[0-9]+}}(%esp), %ecx +; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx ; X86-NEXT: leal (%ecx,%ecx,4), %eax ; X86-NEXT: shll $2, %eax ; X86-NEXT: subl %ecx, %eax @@ -370,7 +367,7 @@ define i16 @test_mul_by_19(i16 %x) { define i16 @test_mul_by_20(i16 %x) { ; X86-LABEL: test_mul_by_20: ; X86: # %bb.0: -; X86-NEXT: movzwl {{[0-9]+}}(%esp), %eax +; X86-NEXT: movl {{[0-9]+}}(%esp), %eax ; X86-NEXT: shll $2, %eax ; X86-NEXT: leal (%eax,%eax,4), %eax ; X86-NEXT: # kill: def $ax killed $ax killed $eax @@ -390,7 +387,7 @@ define i16 @test_mul_by_20(i16 %x) { define i16 @test_mul_by_21(i16 %x) { ; X86-LABEL: test_mul_by_21: ; X86: # %bb.0: -; X86-NEXT: movzwl {{[0-9]+}}(%esp), %eax +; X86-NEXT: movl {{[0-9]+}}(%esp), %eax ; X86-NEXT: leal (%eax,%eax,4), %ecx ; X86-NEXT: leal (%eax,%ecx,4), %eax ; X86-NEXT: # kill: def $ax killed $ax killed $eax @@ -410,7 +407,7 @@ define i16 @test_mul_by_21(i16 %x) { define i16 @test_mul_by_22(i16 %x) { ; X86-LABEL: test_mul_by_22: ; X86: # %bb.0: -; X86-NEXT: movzwl {{[0-9]+}}(%esp), %ecx +; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx ; X86-NEXT: leal (%ecx,%ecx,4), %eax ; X86-NEXT: leal (%ecx,%eax,4), %eax ; X86-NEXT: addl %ecx, %eax @@ -432,7 +429,7 @@ define i16 @test_mul_by_22(i16 %x) { define i16 @test_mul_by_23(i16 %x) { ; X86-LABEL: test_mul_by_23: ; X86: # %bb.0: -; X86-NEXT: movzwl {{[0-9]+}}(%esp), %ecx +; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx ; X86-NEXT: leal (%ecx,%ecx,2), %eax ; X86-NEXT: shll $3, %eax ; X86-NEXT: subl %ecx, %eax @@ -454,7 +451,7 @@ define i16 @test_mul_by_23(i16 %x) { define i16 @test_mul_by_24(i16 %x) { ; X86-LABEL: test_mul_by_24: ; X86: # %bb.0: -; X86-NEXT: movzwl {{[0-9]+}}(%esp), %eax +; X86-NEXT: movl {{[0-9]+}}(%esp), %eax ; X86-NEXT: shll $3, %eax ; X86-NEXT: leal (%eax,%eax,2), %eax ; X86-NEXT: # kill: def $ax killed $ax killed $eax @@ -474,7 +471,7 @@ define i16 @test_mul_by_24(i16 %x) { define i16 @test_mul_by_25(i16 %x) { ; X86-LABEL: test_mul_by_25: ; X86: # %bb.0: -; X86-NEXT: movzwl {{[0-9]+}}(%esp), %eax +; X86-NEXT: movl {{[0-9]+}}(%esp), %eax ; X86-NEXT: leal (%eax,%eax,4), %eax ; X86-NEXT: leal (%eax,%eax,4), %eax ; X86-NEXT: # kill: def $ax killed $ax killed $eax @@ -494,7 +491,7 @@ define i16 @test_mul_by_25(i16 %x) { define i16 @test_mul_by_26(i16 %x) { ; X86-LABEL: test_mul_by_26: ; X86: # %bb.0: -; X86-NEXT: movzwl {{[0-9]+}}(%esp), %ecx +; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx ; X86-NEXT: leal (%ecx,%ecx,8), %eax ; X86-NEXT: leal (%eax,%eax,2), %eax ; X86-NEXT: subl %ecx, %eax @@ -516,7 +513,7 @@ define i16 @test_mul_by_26(i16 %x) { define i16 @test_mul_by_27(i16 %x) { ; X86-LABEL: test_mul_by_27: ; X86: # %bb.0: -; X86-NEXT: movzwl {{[0-9]+}}(%esp), %eax +; X86-NEXT: movl {{[0-9]+}}(%esp), %eax ; X86-NEXT: leal (%eax,%eax,8), %eax ; X86-NEXT: leal (%eax,%eax,2), %eax ; X86-NEXT: # kill: def $ax killed $ax killed $eax @@ -536,7 +533,7 @@ define i16 @test_mul_by_27(i16 %x) { define i16 @test_mul_by_28(i16 %x) { ; X86-LABEL: test_mul_by_28: ; X86: # %bb.0: -; X86-NEXT: movzwl {{[0-9]+}}(%esp), %ecx +; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx ; X86-NEXT: leal (%ecx,%ecx,8), %eax ; X86-NEXT: leal (%eax,%eax,2), %eax ; X86-NEXT: addl %ecx, %eax @@ -558,7 +555,7 @@ define i16 @test_mul_by_28(i16 %x) { define i16 @test_mul_by_29(i16 %x) { ; X86-LABEL: test_mul_by_29: ; X86: # %bb.0: -; X86-NEXT: movzwl {{[0-9]+}}(%esp), %ecx +; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx ; X86-NEXT: leal (%ecx,%ecx,8), %eax ; X86-NEXT: leal (%eax,%eax,2), %eax ; X86-NEXT: addl %ecx, %eax @@ -582,7 +579,7 @@ define i16 @test_mul_by_29(i16 %x) { define i16 @test_mul_by_30(i16 %x) { ; X86-LABEL: test_mul_by_30: ; X86: # %bb.0: -; X86-NEXT: movzwl {{[0-9]+}}(%esp), %ecx +; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx ; X86-NEXT: movl %ecx, %eax ; X86-NEXT: shll $5, %eax ; X86-NEXT: subl %ecx, %eax @@ -605,7 +602,7 @@ define i16 @test_mul_by_30(i16 %x) { define i16 @test_mul_by_31(i16 %x) { ; X86-LABEL: test_mul_by_31: ; X86: # %bb.0: -; X86-NEXT: movzwl {{[0-9]+}}(%esp), %ecx +; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx ; X86-NEXT: movl %ecx, %eax ; X86-NEXT: shll $5, %eax ; X86-NEXT: subl %ecx, %eax @@ -626,7 +623,7 @@ define i16 @test_mul_by_31(i16 %x) { define i16 @test_mul_by_32(i16 %x) { ; X86-LABEL: test_mul_by_32: ; X86: # %bb.0: -; X86-NEXT: movzwl {{[0-9]+}}(%esp), %eax +; X86-NEXT: movl {{[0-9]+}}(%esp), %eax ; X86-NEXT: shll $5, %eax ; X86-NEXT: # kill: def $ax killed $ax killed $eax ; X86-NEXT: retl @@ -644,7 +641,7 @@ define i16 @test_mul_by_32(i16 %x) { define i16 @test_mul_spec(i16 %x) nounwind { ; X86-LABEL: test_mul_spec: ; X86: # %bb.0: -; X86-NEXT: movzwl {{[0-9]+}}(%esp), %eax +; X86-NEXT: movl {{[0-9]+}}(%esp), %eax ; X86-NEXT: leal 42(%eax,%eax,8), %ecx ; X86-NEXT: leal 2(%eax,%eax,4), %eax ; X86-NEXT: imull %ecx, %eax diff --git a/llvm/test/CodeGen/X86/popcnt.ll b/llvm/test/CodeGen/X86/popcnt.ll index 8fa8154207f..5f70ce26d22 100644 --- a/llvm/test/CodeGen/X86/popcnt.ll +++ b/llvm/test/CodeGen/X86/popcnt.ll @@ -60,7 +60,7 @@ define i8 @cnt8(i8 %x) nounwind readnone { define i16 @cnt16(i16 %x) nounwind readnone { ; X32-LABEL: cnt16: ; X32: # %bb.0: -; X32-NEXT: movzwl {{[0-9]+}}(%esp), %eax +; X32-NEXT: movl {{[0-9]+}}(%esp), %eax ; X32-NEXT: movl %eax, %ecx ; X32-NEXT: shrl %ecx ; X32-NEXT: andl $21845, %ecx # imm = 0x5555 diff --git a/llvm/test/CodeGen/X86/pr32345.ll b/llvm/test/CodeGen/X86/pr32345.ll index 441af22946d..3a2db27727a 100644 --- a/llvm/test/CodeGen/X86/pr32345.ll +++ b/llvm/test/CodeGen/X86/pr32345.ll @@ -72,19 +72,19 @@ define void @foo() { ; 6860-NEXT: addl $-16610, %ecx # imm = 0xBF1E ; 6860-NEXT: movb %cl, %bl ; 6860-NEXT: xorl %ecx, %ecx -; 6860-NEXT: movl %ecx, {{[0-9]+}}(%esp) # 4-byte Spill +; 6860-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill ; 6860-NEXT: movb %bl, %cl -; 6860-NEXT: movl {{[0-9]+}}(%esp), %edi # 4-byte Reload +; 6860-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Reload ; 6860-NEXT: shrdl %cl, %edi, %esi ; 6860-NEXT: testb $32, %bl -; 6860-NEXT: movl %edi, {{[0-9]+}}(%esp) # 4-byte Spill -; 6860-NEXT: movl %esi, {{[0-9]+}}(%esp) # 4-byte Spill +; 6860-NEXT: movl %edi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill +; 6860-NEXT: movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill ; 6860-NEXT: jne .LBB0_2 ; 6860-NEXT: # %bb.1: # %bb -; 6860-NEXT: movl {{[0-9]+}}(%esp), %eax # 4-byte Reload -; 6860-NEXT: movl %eax, {{[0-9]+}}(%esp) # 4-byte Spill +; 6860-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload +; 6860-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill ; 6860-NEXT: .LBB0_2: # %bb -; 6860-NEXT: movl {{[0-9]+}}(%esp), %eax # 4-byte Reload +; 6860-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload ; 6860-NEXT: movb %al, %cl ; 6860-NEXT: # implicit-def: $eax ; 6860-NEXT: movb %cl, (%eax) @@ -98,11 +98,12 @@ define void @foo() { ; ; X64-LABEL: foo: ; X64: # %bb.0: # %bb -; X64-NEXT: movzwl {{.*}}(%rip), %ecx ; X64-NEXT: movzwl {{.*}}(%rip), %eax -; X64-NEXT: xorw %cx, %ax -; X64-NEXT: xorl %ecx, %eax -; X64-NEXT: movzwl %ax, %eax +; X64-NEXT: movzwl {{.*}}(%rip), %ecx +; X64-NEXT: movl %ecx, %edx +; X64-NEXT: xorl %edx, %edx +; X64-NEXT: xorl %eax, %edx +; X64-NEXT: movzwl %dx, %eax ; X64-NEXT: movq %rax, -{{[0-9]+}}(%rsp) ; X64-NEXT: addl $-16610, %ecx # imm = 0xBF1E ; X64-NEXT: # kill: def $cl killed $cl killed $ecx @@ -119,11 +120,12 @@ define void @foo() { ; 686-NEXT: .cfi_def_cfa_register %ebp ; 686-NEXT: andl $-8, %esp ; 686-NEXT: subl $8, %esp -; 686-NEXT: movzwl var_27, %ecx ; 686-NEXT: movzwl var_22, %eax -; 686-NEXT: xorw %cx, %ax -; 686-NEXT: xorl %ecx, %eax -; 686-NEXT: movzwl %ax, %eax +; 686-NEXT: movzwl var_27, %ecx +; 686-NEXT: movl %ecx, %edx +; 686-NEXT: xorl %ecx, %edx +; 686-NEXT: xorl %eax, %edx +; 686-NEXT: movzwl %dx, %eax ; 686-NEXT: movl %eax, (%esp) ; 686-NEXT: movl $0, {{[0-9]+}}(%esp) ; 686-NEXT: addl $-16610, %ecx # imm = 0xBF1E diff --git a/llvm/test/CodeGen/X86/pr32420.ll b/llvm/test/CodeGen/X86/pr32420.ll index e635c683502..beaec998a72 100644 --- a/llvm/test/CodeGen/X86/pr32420.ll +++ b/llvm/test/CodeGen/X86/pr32420.ll @@ -10,16 +10,18 @@ target triple = "x86_64-apple-macosx10.12.0" define i32 @PR32420() { ; CHECK-LABEL: PR32420: ; CHECK: ## %bb.0: -; CHECK-NEXT: movq _a@{{.*}}(%rip), %rax -; CHECK-NEXT: movzwl (%rax), %eax -; CHECK-NEXT: movl %eax, %ecx +; CHECK-NEXT: movq _a@{{.*}}(%rip), %rcx +; CHECK-NEXT: movzwl (%rcx), %eax +; CHECK-NEXT: movl %eax, %edx +; CHECK-NEXT: shll $12, %edx +; CHECK-NEXT: sarw $12, %dx +; CHECK-NEXT: movq _b@{{.*}}(%rip), %rsi +; CHECK-NEXT: orw (%rsi), %dx +; CHECK-NEXT: movl (%rcx), %ecx ; CHECK-NEXT: shll $12, %ecx ; CHECK-NEXT: sarw $12, %cx -; CHECK-NEXT: movq _b@{{.*}}(%rip), %rdx -; CHECK-NEXT: movl %ecx, %esi -; CHECK-NEXT: orw (%rdx), %si -; CHECK-NEXT: andl %ecx, %esi -; CHECK-NEXT: movw %si, (%rdx) +; CHECK-NEXT: andl %edx, %ecx +; CHECK-NEXT: movw %cx, (%rsi) ; CHECK-NEXT: retq %load2 = load i16, i16* @a, align 4 %shl3 = shl i16 %load2, 12 diff --git a/llvm/test/CodeGen/X86/pr34137.ll b/llvm/test/CodeGen/X86/pr34137.ll index 6210103db17..4e81cb82b5b 100644 --- a/llvm/test/CodeGen/X86/pr34137.ll +++ b/llvm/test/CodeGen/X86/pr34137.ll @@ -10,8 +10,9 @@ define void @pr34127() { ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: movzwl {{.*}}(%rip), %eax ; CHECK-NEXT: movzwl {{.*}}(%rip), %ecx -; CHECK-NEXT: andw %ax, %cx ; CHECK-NEXT: andl %eax, %ecx +; CHECK-NEXT: andl %eax, %ecx +; CHECK-NEXT: movzwl %cx, %ecx ; CHECK-NEXT: movl %ecx, -{{[0-9]+}}(%rsp) ; CHECK-NEXT: xorl %edx, %edx ; CHECK-NEXT: testw %cx, %cx diff --git a/llvm/test/CodeGen/X86/promote-i16.ll b/llvm/test/CodeGen/X86/promote-i16.ll index 7627d810204..311adc1d3f5 100644 --- a/llvm/test/CodeGen/X86/promote-i16.ll +++ b/llvm/test/CodeGen/X86/promote-i16.ll @@ -5,8 +5,8 @@ define signext i16 @foo(i16 signext %x) nounwind { ; X86-LABEL: foo: ; X86: # %bb.0: # %entry -; X86-NEXT: movzwl {{[0-9]+}}(%esp), %eax -; X86-NEXT: xorl $21998, %eax # imm = 0x55EE +; X86-NEXT: movl $21998, %eax # imm = 0x55EE +; X86-NEXT: xorl {{[0-9]+}}(%esp), %eax ; X86-NEXT: # kill: def $ax killed $ax killed $eax ; X86-NEXT: retl ; @@ -23,8 +23,8 @@ entry: define signext i16 @bar(i16 signext %x) nounwind { ; X86-LABEL: bar: ; X86: # %bb.0: # %entry -; X86-NEXT: movzwl {{[0-9]+}}(%esp), %eax -; X86-NEXT: xorl $54766, %eax # imm = 0xD5EE +; X86-NEXT: movl $54766, %eax # imm = 0xD5EE +; X86-NEXT: xorl {{[0-9]+}}(%esp), %eax ; X86-NEXT: # kill: def $ax killed $ax killed $eax ; X86-NEXT: retl ; diff --git a/llvm/test/CodeGen/X86/reduce-trunc-shl.ll b/llvm/test/CodeGen/X86/reduce-trunc-shl.ll index 4ca5d6c5705..f237c44102c 100644 --- a/llvm/test/CodeGen/X86/reduce-trunc-shl.ll +++ b/llvm/test/CodeGen/X86/reduce-trunc-shl.ll @@ -92,14 +92,14 @@ define void @trunc_shl_32_i32_i64(i32* %out, i64* %in) { define void @trunc_shl_15_i16_i64(i16* %out, i64* %in) { ; SSE2-LABEL: trunc_shl_15_i16_i64: ; SSE2: # %bb.0: -; SSE2-NEXT: movzwl (%rsi), %eax +; SSE2-NEXT: movl (%rsi), %eax ; SSE2-NEXT: shll $15, %eax ; SSE2-NEXT: movw %ax, (%rdi) ; SSE2-NEXT: retq ; ; AVX2-LABEL: trunc_shl_15_i16_i64: ; AVX2: # %bb.0: -; AVX2-NEXT: movzwl (%rsi), %eax +; AVX2-NEXT: movl (%rsi), %eax ; AVX2-NEXT: shll $15, %eax ; AVX2-NEXT: movw %ax, (%rdi) ; AVX2-NEXT: retq |