From 22b35c4291d2d90db27cac4ccf5c21f619ff49af Mon Sep 17 00:00:00 2001 From: Craig Topper Date: Fri, 6 Sep 2019 19:15:04 +0000 Subject: [PATCH] [X86] Use MOVZX16rr8/MOVZXrm8 when extending input for i8 udivrem. We can rely on X86FixupBWInsts to turn these into MOVZX32. This simplifies a follow up commit to use MOVSX for i8 sdivrem with a late optimization to use CBW when register allocation works out. llvm-svn: 371242 --- llvm/lib/Target/X86/X86ISelDAGToDAG.cpp | 6 ++-- llvm/test/CodeGen/X86/2008-09-11-CoalescerBug2.ll | 1 - llvm/test/CodeGen/X86/anyext.ll | 2 -- llvm/test/CodeGen/X86/bypass-slow-division-32.ll | 7 ----- llvm/test/CodeGen/X86/bypass-slow-division-tune.ll | 1 - .../X86/div-rem-pair-recomposition-unsigned.ll | 33 ---------------------- llvm/test/CodeGen/X86/divrem.ll | 2 -- llvm/test/CodeGen/X86/divrem8_ext.ll | 10 ------- llvm/test/CodeGen/X86/scalar_widen_div.ll | 3 -- llvm/test/CodeGen/X86/urem-power-of-two.ll | 2 -- 10 files changed, 3 insertions(+), 64 deletions(-) diff --git a/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp b/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp index eaedf14..1b870d5 100644 --- a/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp +++ b/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp @@ -4732,17 +4732,17 @@ void X86DAGToDAGISel::Select(SDNode *Node) { MachineSDNode *Move; if (tryFoldLoad(Node, N0, Tmp0, Tmp1, Tmp2, Tmp3, Tmp4)) { SDValue Ops[] = { Tmp0, Tmp1, Tmp2, Tmp3, Tmp4, N0.getOperand(0) }; - Move = CurDAG->getMachineNode(X86::MOVZX32rm8, dl, MVT::i32, + Move = CurDAG->getMachineNode(X86::MOVZX16rm8, dl, MVT::i32, MVT::Other, Ops); Chain = SDValue(Move, 1); ReplaceUses(N0.getValue(1), Chain); // Record the mem-refs CurDAG->setNodeMemRefs(Move, {cast(N0)->getMemOperand()}); } else { - Move = CurDAG->getMachineNode(X86::MOVZX32rr8, dl, MVT::i32, N0); + Move = CurDAG->getMachineNode(X86::MOVZX16rr8, dl, MVT::i32, N0); Chain = CurDAG->getEntryNode(); } - Chain = CurDAG->getCopyToReg(Chain, dl, X86::EAX, SDValue(Move, 0), + Chain = CurDAG->getCopyToReg(Chain, dl, X86::AX, SDValue(Move, 0), SDValue()); InFlag = Chain.getValue(1); } else { diff --git a/llvm/test/CodeGen/X86/2008-09-11-CoalescerBug2.ll b/llvm/test/CodeGen/X86/2008-09-11-CoalescerBug2.ll index cbccc90..2458852 100644 --- a/llvm/test/CodeGen/X86/2008-09-11-CoalescerBug2.ll +++ b/llvm/test/CodeGen/X86/2008-09-11-CoalescerBug2.ll @@ -22,7 +22,6 @@ define i32 @func_44(i16 signext %p_46) nounwind { ; SOURCE-SCHED-NEXT: jne .LBB0_2 ; SOURCE-SCHED-NEXT: # %bb.1: # %bb11 ; SOURCE-SCHED-NEXT: movzbl %al, %eax -; SOURCE-SCHED-NEXT: # kill: def $eax killed $eax def $ax ; SOURCE-SCHED-NEXT: divb %dl ; SOURCE-SCHED-NEXT: movzbl %ah, %eax ; SOURCE-SCHED-NEXT: .LBB0_2: # %bb12 diff --git a/llvm/test/CodeGen/X86/anyext.ll b/llvm/test/CodeGen/X86/anyext.ll index 9320673..7833658 100644 --- a/llvm/test/CodeGen/X86/anyext.ll +++ b/llvm/test/CodeGen/X86/anyext.ll @@ -8,7 +8,6 @@ define i32 @foo(i32 %p, i8 zeroext %x) nounwind { ; X32-LABEL: foo: ; X32: # %bb.0: ; X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax -; X32-NEXT: # kill: def $eax killed $eax def $ax ; X32-NEXT: divb {{[0-9]+}}(%esp) ; X32-NEXT: movzbl %al, %eax ; X32-NEXT: andl $1, %eax @@ -17,7 +16,6 @@ define i32 @foo(i32 %p, i8 zeroext %x) nounwind { ; X64-LABEL: foo: ; X64: # %bb.0: ; X64-NEXT: movzbl %dil, %eax -; X64-NEXT: # kill: def $eax killed $eax def $ax ; X64-NEXT: divb %sil ; X64-NEXT: movzbl %al, %eax ; X64-NEXT: andl $1, %eax diff --git a/llvm/test/CodeGen/X86/bypass-slow-division-32.ll b/llvm/test/CodeGen/X86/bypass-slow-division-32.ll index 66aacf1..988e4f9 100644 --- a/llvm/test/CodeGen/X86/bypass-slow-division-32.ll +++ b/llvm/test/CodeGen/X86/bypass-slow-division-32.ll @@ -17,7 +17,6 @@ define i32 @Test_get_quotient(i32 %a, i32 %b) nounwind { ; CHECK-NEXT: retl ; CHECK-NEXT: .LBB0_1: ; CHECK-NEXT: movzbl %al, %eax -; CHECK-NEXT: # kill: def $eax killed $eax def $ax ; CHECK-NEXT: divb %cl ; CHECK-NEXT: movzbl %al, %eax ; CHECK-NEXT: retl @@ -41,7 +40,6 @@ define i32 @Test_get_remainder(i32 %a, i32 %b) nounwind { ; CHECK-NEXT: retl ; CHECK-NEXT: .LBB1_1: ; CHECK-NEXT: movzbl %al, %eax -; CHECK-NEXT: # kill: def $eax killed $eax def $ax ; CHECK-NEXT: divb %cl ; CHECK-NEXT: movzbl %ah, %eax ; CHECK-NEXT: retl @@ -65,7 +63,6 @@ define i32 @Test_get_quotient_and_remainder(i32 %a, i32 %b) nounwind { ; CHECK-NEXT: retl ; CHECK-NEXT: .LBB2_1: ; CHECK-NEXT: movzbl %al, %eax -; CHECK-NEXT: # kill: def $eax killed $eax def $ax ; CHECK-NEXT: divb %cl ; CHECK-NEXT: movzbl %ah, %edx ; CHECK-NEXT: movzbl %al, %eax @@ -103,14 +100,12 @@ define i32 @Test_use_div_and_idiv(i32 %a, i32 %b) nounwind { ; CHECK-NEXT: jmp .LBB3_6 ; CHECK-NEXT: .LBB3_1: ; CHECK-NEXT: movzbl %cl, %eax -; CHECK-NEXT: # kill: def $eax killed $eax def $ax ; CHECK-NEXT: divb %bl ; CHECK-NEXT: movzbl %al, %esi ; CHECK-NEXT: testl $-256, %edi ; CHECK-NEXT: jne .LBB3_5 ; CHECK-NEXT: .LBB3_4: ; CHECK-NEXT: movzbl %cl, %eax -; CHECK-NEXT: # kill: def $eax killed $eax def $ax ; CHECK-NEXT: divb %bl ; CHECK-NEXT: movzbl %al, %eax ; CHECK-NEXT: .LBB3_6: @@ -208,7 +203,6 @@ define i32 @Test_use_div_imm_reg(i32 %a) nounwind { ; CHECK-NEXT: .LBB8_1: ; CHECK-NEXT: movb $4, %al ; CHECK-NEXT: movzbl %al, %eax -; CHECK-NEXT: # kill: def $eax killed $eax def $ax ; CHECK-NEXT: divb %cl ; CHECK-NEXT: movzbl %al, %eax ; CHECK-NEXT: retl @@ -230,7 +224,6 @@ define i32 @Test_use_rem_imm_reg(i32 %a) nounwind { ; CHECK-NEXT: .LBB9_1: ; CHECK-NEXT: movb $4, %al ; CHECK-NEXT: movzbl %al, %eax -; CHECK-NEXT: # kill: def $eax killed $eax def $ax ; CHECK-NEXT: divb %cl ; CHECK-NEXT: movzbl %al, %eax ; CHECK-NEXT: retl diff --git a/llvm/test/CodeGen/X86/bypass-slow-division-tune.ll b/llvm/test/CodeGen/X86/bypass-slow-division-tune.ll index a387d68..7bcb012 100644 --- a/llvm/test/CodeGen/X86/bypass-slow-division-tune.ll +++ b/llvm/test/CodeGen/X86/bypass-slow-division-tune.ll @@ -20,7 +20,6 @@ define i32 @div32(i32 %a, i32 %b) { ; ATOM-NEXT: retq ; ATOM-NEXT: .LBB0_1: ; ATOM-NEXT: movzbl %dil, %eax -; ATOM-NEXT: # kill: def $eax killed $eax def $ax ; ATOM-NEXT: divb %sil ; ATOM-NEXT: movzbl %al, %eax ; ATOM-NEXT: retq diff --git a/llvm/test/CodeGen/X86/div-rem-pair-recomposition-unsigned.ll b/llvm/test/CodeGen/X86/div-rem-pair-recomposition-unsigned.ll index 952a8d0..500c211 100644 --- a/llvm/test/CodeGen/X86/div-rem-pair-recomposition-unsigned.ll +++ b/llvm/test/CodeGen/X86/div-rem-pair-recomposition-unsigned.ll @@ -15,7 +15,6 @@ define i8 @scalar_i8(i8 %x, i8 %y, i8* %divdst) nounwind { ; X86-NEXT: movb {{[0-9]+}}(%esp), %ch ; X86-NEXT: movb {{[0-9]+}}(%esp), %cl ; X86-NEXT: movzbl %cl, %eax -; X86-NEXT: # kill: def $eax killed $eax def $ax ; X86-NEXT: divb %ch ; X86-NEXT: movb %al, (%edx) ; X86-NEXT: mulb %ch @@ -183,82 +182,66 @@ define <16 x i8> @vector_i128_i8(<16 x i8> %x, <16 x i8> %y, <16 x i8>* %divdst) ; X86-NEXT: movdqa %xmm0, (%esp) ; X86-NEXT: movdqa %xmm1, {{[0-9]+}}(%esp) ; X86-NEXT: movzbl {{[0-9]+}}(%esp), %eax -; X86-NEXT: # kill: def $eax killed $eax def $ax ; X86-NEXT: divb {{[0-9]+}}(%esp) ; X86-NEXT: movzbl %al, %eax ; X86-NEXT: movd %eax, %xmm2 ; X86-NEXT: movzbl {{[0-9]+}}(%esp), %eax -; X86-NEXT: # kill: def $eax killed $eax def $ax ; X86-NEXT: divb {{[0-9]+}}(%esp) ; X86-NEXT: movzbl %al, %eax ; X86-NEXT: movd %eax, %xmm3 ; X86-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3],xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7] ; X86-NEXT: movzbl {{[0-9]+}}(%esp), %eax -; X86-NEXT: # kill: def $eax killed $eax def $ax ; X86-NEXT: divb {{[0-9]+}}(%esp) ; X86-NEXT: movzbl %al, %eax ; X86-NEXT: movd %eax, %xmm4 ; X86-NEXT: movzbl {{[0-9]+}}(%esp), %eax -; X86-NEXT: # kill: def $eax killed $eax def $ax ; X86-NEXT: divb {{[0-9]+}}(%esp) ; X86-NEXT: movzbl %al, %eax ; X86-NEXT: movd %eax, %xmm2 ; X86-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm4[0],xmm2[1],xmm4[1],xmm2[2],xmm4[2],xmm2[3],xmm4[3],xmm2[4],xmm4[4],xmm2[5],xmm4[5],xmm2[6],xmm4[6],xmm2[7],xmm4[7] ; X86-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1],xmm2[2],xmm3[2],xmm2[3],xmm3[3] ; X86-NEXT: movzbl {{[0-9]+}}(%esp), %eax -; X86-NEXT: # kill: def $eax killed $eax def $ax ; X86-NEXT: divb {{[0-9]+}}(%esp) ; X86-NEXT: movzbl %al, %eax ; X86-NEXT: movd %eax, %xmm3 ; X86-NEXT: movzbl {{[0-9]+}}(%esp), %eax -; X86-NEXT: # kill: def $eax killed $eax def $ax ; X86-NEXT: divb {{[0-9]+}}(%esp) ; X86-NEXT: movzbl %al, %eax ; X86-NEXT: movd %eax, %xmm4 ; X86-NEXT: punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm3[0],xmm4[1],xmm3[1],xmm4[2],xmm3[2],xmm4[3],xmm3[3],xmm4[4],xmm3[4],xmm4[5],xmm3[5],xmm4[6],xmm3[6],xmm4[7],xmm3[7] ; X86-NEXT: movzbl {{[0-9]+}}(%esp), %eax -; X86-NEXT: # kill: def $eax killed $eax def $ax ; X86-NEXT: divb {{[0-9]+}}(%esp) ; X86-NEXT: movzbl %al, %eax ; X86-NEXT: movd %eax, %xmm5 ; X86-NEXT: movzbl {{[0-9]+}}(%esp), %eax -; X86-NEXT: # kill: def $eax killed $eax def $ax ; X86-NEXT: divb {{[0-9]+}}(%esp) ; X86-NEXT: movzbl %al, %eax ; X86-NEXT: movd %eax, %xmm3 ; X86-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm5[0],xmm3[1],xmm5[1],xmm3[2],xmm5[2],xmm3[3],xmm5[3],xmm3[4],xmm5[4],xmm3[5],xmm5[5],xmm3[6],xmm5[6],xmm3[7],xmm5[7] ; X86-NEXT: movzbl {{[0-9]+}}(%esp), %eax -; X86-NEXT: # kill: def $eax killed $eax def $ax ; X86-NEXT: divb {{[0-9]+}}(%esp) ; X86-NEXT: movzbl %al, %eax ; X86-NEXT: movd %eax, %xmm5 ; X86-NEXT: movzbl {{[0-9]+}}(%esp), %eax -; X86-NEXT: # kill: def $eax killed $eax def $ax ; X86-NEXT: divb {{[0-9]+}}(%esp) ; X86-NEXT: movzbl %al, %eax ; X86-NEXT: movd %eax, %xmm6 ; X86-NEXT: movzbl {{[0-9]+}}(%esp), %eax -; X86-NEXT: # kill: def $eax killed $eax def $ax ; X86-NEXT: divb {{[0-9]+}}(%esp) ; X86-NEXT: movzbl %al, %edx ; X86-NEXT: movzbl {{[0-9]+}}(%esp), %eax -; X86-NEXT: # kill: def $eax killed $eax def $ax ; X86-NEXT: divb {{[0-9]+}}(%esp) ; X86-NEXT: movzbl %al, %esi ; X86-NEXT: movzbl {{[0-9]+}}(%esp), %eax -; X86-NEXT: # kill: def $eax killed $eax def $ax ; X86-NEXT: divb {{[0-9]+}}(%esp) ; X86-NEXT: movzbl %al, %edi ; X86-NEXT: movzbl {{[0-9]+}}(%esp), %eax -; X86-NEXT: # kill: def $eax killed $eax def $ax ; X86-NEXT: divb {{[0-9]+}}(%esp) ; X86-NEXT: movzbl %al, %ebx ; X86-NEXT: movzbl {{[0-9]+}}(%esp), %eax -; X86-NEXT: # kill: def $eax killed $eax def $ax ; X86-NEXT: divb {{[0-9]+}}(%esp) ; X86-NEXT: movl %eax, %ecx ; X86-NEXT: movzbl (%esp), %eax -; X86-NEXT: # kill: def $eax killed $eax def $ax ; X86-NEXT: divb {{[0-9]+}}(%esp) ; X86-NEXT: punpcklwd {{.*#+}} xmm3 = xmm3[0],xmm4[0],xmm3[1],xmm4[1],xmm3[2],xmm4[2],xmm3[3],xmm4[3] ; X86-NEXT: movd %edx, %xmm4 @@ -312,68 +295,52 @@ define <16 x i8> @vector_i128_i8(<16 x i8> %x, <16 x i8> %y, <16 x i8>* %divdst) ; X64-NEXT: movdqa %xmm0, -{{[0-9]+}}(%rsp) ; X64-NEXT: movdqa %xmm1, -{{[0-9]+}}(%rsp) ; X64-NEXT: movzbl -{{[0-9]+}}(%rsp), %eax -; X64-NEXT: # kill: def $eax killed $eax def $ax ; X64-NEXT: divb -{{[0-9]+}}(%rsp) ; X64-NEXT: movzbl %al, %eax ; X64-NEXT: movd %eax, %xmm2 ; X64-NEXT: movzbl -{{[0-9]+}}(%rsp), %eax -; X64-NEXT: # kill: def $eax killed $eax def $ax ; X64-NEXT: divb -{{[0-9]+}}(%rsp) ; X64-NEXT: movzbl %al, %r8d ; X64-NEXT: movzbl -{{[0-9]+}}(%rsp), %eax -; X64-NEXT: # kill: def $eax killed $eax def $ax ; X64-NEXT: divb -{{[0-9]+}}(%rsp) ; X64-NEXT: movzbl %al, %r9d ; X64-NEXT: movzbl -{{[0-9]+}}(%rsp), %eax -; X64-NEXT: # kill: def $eax killed $eax def $ax ; X64-NEXT: divb -{{[0-9]+}}(%rsp) ; X64-NEXT: movzbl %al, %r10d ; X64-NEXT: movzbl -{{[0-9]+}}(%rsp), %eax -; X64-NEXT: # kill: def $eax killed $eax def $ax ; X64-NEXT: divb -{{[0-9]+}}(%rsp) ; X64-NEXT: movzbl %al, %r11d ; X64-NEXT: movzbl -{{[0-9]+}}(%rsp), %eax -; X64-NEXT: # kill: def $eax killed $eax def $ax ; X64-NEXT: divb -{{[0-9]+}}(%rsp) ; X64-NEXT: movzbl %al, %r14d ; X64-NEXT: movzbl -{{[0-9]+}}(%rsp), %eax -; X64-NEXT: # kill: def $eax killed $eax def $ax ; X64-NEXT: divb -{{[0-9]+}}(%rsp) ; X64-NEXT: movzbl %al, %r15d ; X64-NEXT: movzbl -{{[0-9]+}}(%rsp), %eax -; X64-NEXT: # kill: def $eax killed $eax def $ax ; X64-NEXT: divb -{{[0-9]+}}(%rsp) ; X64-NEXT: movzbl %al, %r12d ; X64-NEXT: movzbl -{{[0-9]+}}(%rsp), %eax -; X64-NEXT: # kill: def $eax killed $eax def $ax ; X64-NEXT: divb -{{[0-9]+}}(%rsp) ; X64-NEXT: movzbl %al, %r13d ; X64-NEXT: movzbl -{{[0-9]+}}(%rsp), %eax -; X64-NEXT: # kill: def $eax killed $eax def $ax ; X64-NEXT: divb -{{[0-9]+}}(%rsp) ; X64-NEXT: movzbl %al, %edi ; X64-NEXT: movzbl -{{[0-9]+}}(%rsp), %eax -; X64-NEXT: # kill: def $eax killed $eax def $ax ; X64-NEXT: divb -{{[0-9]+}}(%rsp) ; X64-NEXT: movzbl %al, %esi ; X64-NEXT: movzbl -{{[0-9]+}}(%rsp), %eax -; X64-NEXT: # kill: def $eax killed $eax def $ax ; X64-NEXT: divb -{{[0-9]+}}(%rsp) ; X64-NEXT: movzbl %al, %ebx ; X64-NEXT: movzbl -{{[0-9]+}}(%rsp), %eax -; X64-NEXT: # kill: def $eax killed $eax def $ax ; X64-NEXT: divb -{{[0-9]+}}(%rsp) ; X64-NEXT: movzbl %al, %ebp ; X64-NEXT: movzbl -{{[0-9]+}}(%rsp), %eax -; X64-NEXT: # kill: def $eax killed $eax def $ax ; X64-NEXT: divb -{{[0-9]+}}(%rsp) ; X64-NEXT: movzbl %al, %edx ; X64-NEXT: movzbl -{{[0-9]+}}(%rsp), %eax -; X64-NEXT: # kill: def $eax killed $eax def $ax ; X64-NEXT: divb -{{[0-9]+}}(%rsp) ; X64-NEXT: movl %eax, %ecx ; X64-NEXT: movzbl -{{[0-9]+}}(%rsp), %eax -; X64-NEXT: # kill: def $eax killed $eax def $ax ; X64-NEXT: divb -{{[0-9]+}}(%rsp) ; X64-NEXT: movd %r8d, %xmm3 ; X64-NEXT: movd %r9d, %xmm4 diff --git a/llvm/test/CodeGen/X86/divrem.ll b/llvm/test/CodeGen/X86/divrem.ll index 0592dc9..222d0ba 100644 --- a/llvm/test/CodeGen/X86/divrem.ll +++ b/llvm/test/CodeGen/X86/divrem.ll @@ -263,7 +263,6 @@ define void @ui8(i8 %x, i8 %y, i8* %p, i8* %q) nounwind { ; X32: # %bb.0: ; X32-NEXT: pushl %ebx ; X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax -; X32-NEXT: # kill: def $eax killed $eax def $ax ; X32-NEXT: divb {{[0-9]+}}(%esp) ; X32-NEXT: movl {{[0-9]+}}(%esp), %ecx ; X32-NEXT: movl {{[0-9]+}}(%esp), %edx @@ -276,7 +275,6 @@ define void @ui8(i8 %x, i8 %y, i8* %p, i8* %q) nounwind { ; X64-LABEL: ui8: ; X64: # %bb.0: ; X64-NEXT: movzbl %dil, %eax -; X64-NEXT: # kill: def $eax killed $eax def $ax ; X64-NEXT: divb %sil ; X64-NEXT: movzbl %ah, %esi ; X64-NEXT: movb %al, (%rdx) diff --git a/llvm/test/CodeGen/X86/divrem8_ext.ll b/llvm/test/CodeGen/X86/divrem8_ext.ll index c141f91..3198e9c 100644 --- a/llvm/test/CodeGen/X86/divrem8_ext.ll +++ b/llvm/test/CodeGen/X86/divrem8_ext.ll @@ -6,7 +6,6 @@ define zeroext i8 @test_udivrem_zext_ah(i8 %x, i8 %y) { ; X32-LABEL: test_udivrem_zext_ah: ; X32: # %bb.0: ; X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax -; X32-NEXT: # kill: def $eax killed $eax def $ax ; X32-NEXT: divb {{[0-9]+}}(%esp) ; X32-NEXT: movzbl %ah, %ecx ; X32-NEXT: movb %al, z @@ -16,7 +15,6 @@ define zeroext i8 @test_udivrem_zext_ah(i8 %x, i8 %y) { ; X64-LABEL: test_udivrem_zext_ah: ; X64: # %bb.0: ; X64-NEXT: movzbl %dil, %eax -; X64-NEXT: # kill: def $eax killed $eax def $ax ; X64-NEXT: divb %sil ; X64-NEXT: movzbl %ah, %ecx ; X64-NEXT: movb %al, {{.*}}(%rip) @@ -32,7 +30,6 @@ define zeroext i8 @test_urem_zext_ah(i8 %x, i8 %y) { ; X32-LABEL: test_urem_zext_ah: ; X32: # %bb.0: ; X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax -; X32-NEXT: # kill: def $eax killed $eax def $ax ; X32-NEXT: divb {{[0-9]+}}(%esp) ; X32-NEXT: movzbl %ah, %eax ; X32-NEXT: # kill: def $al killed $al killed $eax @@ -41,7 +38,6 @@ define zeroext i8 @test_urem_zext_ah(i8 %x, i8 %y) { ; X64-LABEL: test_urem_zext_ah: ; X64: # %bb.0: ; X64-NEXT: movzbl %dil, %eax -; X64-NEXT: # kill: def $eax killed $eax def $ax ; X64-NEXT: divb %sil ; X64-NEXT: movzbl %ah, %eax ; X64-NEXT: # kill: def $al killed $al killed $eax @@ -55,7 +51,6 @@ define i8 @test_urem_noext_ah(i8 %x, i8 %y) { ; X32: # %bb.0: ; X32-NEXT: movb {{[0-9]+}}(%esp), %cl ; X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax -; X32-NEXT: # kill: def $eax killed $eax def $ax ; X32-NEXT: divb %cl ; X32-NEXT: movzbl %ah, %eax ; X32-NEXT: addb %cl, %al @@ -65,7 +60,6 @@ define i8 @test_urem_noext_ah(i8 %x, i8 %y) { ; X64-LABEL: test_urem_noext_ah: ; X64: # %bb.0: ; X64-NEXT: movzbl %dil, %eax -; X64-NEXT: # kill: def $eax killed $eax def $ax ; X64-NEXT: divb %sil ; X64-NEXT: movzbl %ah, %eax ; X64-NEXT: addb %sil, %al @@ -80,7 +74,6 @@ define i64 @test_urem_zext64_ah(i8 %x, i8 %y) { ; X32-LABEL: test_urem_zext64_ah: ; X32: # %bb.0: ; X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax -; X32-NEXT: # kill: def $eax killed $eax def $ax ; X32-NEXT: divb {{[0-9]+}}(%esp) ; X32-NEXT: movzbl %ah, %eax ; X32-NEXT: xorl %edx, %edx @@ -89,7 +82,6 @@ define i64 @test_urem_zext64_ah(i8 %x, i8 %y) { ; X64-LABEL: test_urem_zext64_ah: ; X64: # %bb.0: ; X64-NEXT: movzbl %dil, %eax -; X64-NEXT: # kill: def $eax killed $eax def $ax ; X64-NEXT: divb %sil ; X64-NEXT: movzbl %ah, %eax ; X64-NEXT: retq @@ -204,7 +196,6 @@ define i64 @pr25754(i8 %a, i8 %c) { ; X32-LABEL: pr25754: ; X32: # %bb.0: ; X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax -; X32-NEXT: # kill: def $eax killed $eax def $ax ; X32-NEXT: divb {{[0-9]+}}(%esp) ; X32-NEXT: movzbl %ah, %ecx ; X32-NEXT: movzbl %al, %eax @@ -215,7 +206,6 @@ define i64 @pr25754(i8 %a, i8 %c) { ; X64-LABEL: pr25754: ; X64: # %bb.0: ; X64-NEXT: movzbl %dil, %eax -; X64-NEXT: # kill: def $eax killed $eax def $ax ; X64-NEXT: divb %sil ; X64-NEXT: movzbl %ah, %ecx ; X64-NEXT: movzbl %al, %eax diff --git a/llvm/test/CodeGen/X86/scalar_widen_div.ll b/llvm/test/CodeGen/X86/scalar_widen_div.ll index 17ca514..8808da9 100644 --- a/llvm/test/CodeGen/X86/scalar_widen_div.ll +++ b/llvm/test/CodeGen/X86/scalar_widen_div.ll @@ -81,15 +81,12 @@ define <3 x i8> @test_uchar_div(<3 x i8> %num, <3 x i8> %div) { ; CHECK-LABEL: test_uchar_div: ; CHECK: # %bb.0: ; CHECK-NEXT: movzbl %dil, %eax -; CHECK-NEXT: # kill: def $eax killed $eax def $ax ; CHECK-NEXT: divb %cl ; CHECK-NEXT: movl %eax, %edi ; CHECK-NEXT: movzbl %sil, %eax -; CHECK-NEXT: # kill: def $eax killed $eax def $ax ; CHECK-NEXT: divb %r8b ; CHECK-NEXT: movl %eax, %esi ; CHECK-NEXT: movzbl %dl, %eax -; CHECK-NEXT: # kill: def $eax killed $eax def $ax ; CHECK-NEXT: divb %r9b ; CHECK-NEXT: movl %eax, %ecx ; CHECK-NEXT: movl %edi, %eax diff --git a/llvm/test/CodeGen/X86/urem-power-of-two.ll b/llvm/test/CodeGen/X86/urem-power-of-two.ll index c60305e..ba9b552 100644 --- a/llvm/test/CodeGen/X86/urem-power-of-two.ll +++ b/llvm/test/CodeGen/X86/urem-power-of-two.ll @@ -83,7 +83,6 @@ define i8 @and_pow_2(i8 %x, i8 %y) { ; X86-NEXT: movb {{[0-9]+}}(%esp), %cl ; X86-NEXT: andb $4, %cl ; X86-NEXT: movzbl {{[0-9]+}}(%esp), %eax -; X86-NEXT: # kill: def $eax killed $eax def $ax ; X86-NEXT: divb %cl ; X86-NEXT: movzbl %ah, %eax ; X86-NEXT: # kill: def $al killed $al killed $eax @@ -93,7 +92,6 @@ define i8 @and_pow_2(i8 %x, i8 %y) { ; X64: # %bb.0: ; X64-NEXT: andb $4, %sil ; X64-NEXT: movzbl %dil, %eax -; X64-NEXT: # kill: def $eax killed $eax def $ax ; X64-NEXT: divb %sil ; X64-NEXT: movzbl %ah, %eax ; X64-NEXT: # kill: def $al killed $al killed $eax -- 2.7.4