64 changes: 32 additions & 32 deletions llvm/test/CodeGen/X86/commute-fcmp.ll
Original file line number Diff line number Diff line change
Expand Up @@ -896,14 +896,14 @@ define <16 x i32> @commute_cmpps_uno_zmm(ptr %a0, <16 x float> %a1) {
define <16 x i32> @commute_cmpps_ueq_zmm(ptr %a0, <16 x float> %a1) {
; SSE-LABEL: commute_cmpps_ueq_zmm:
; SSE: # %bb.0:
; SSE-NEXT: movaps (%rdi), %xmm7
; SSE-NEXT: movaps (%rdi), %xmm4
; SSE-NEXT: movaps 16(%rdi), %xmm5
; SSE-NEXT: movaps 32(%rdi), %xmm6
; SSE-NEXT: movaps 48(%rdi), %xmm8
; SSE-NEXT: movaps %xmm7, %xmm4
; SSE-NEXT: cmpeqps %xmm0, %xmm4
; SSE-NEXT: cmpunordps %xmm7, %xmm0
; SSE-NEXT: orps %xmm4, %xmm0
; SSE-NEXT: movaps 48(%rdi), %xmm7
; SSE-NEXT: movaps %xmm4, %xmm8
; SSE-NEXT: cmpeqps %xmm0, %xmm8
; SSE-NEXT: cmpunordps %xmm4, %xmm0
; SSE-NEXT: orps %xmm8, %xmm0
; SSE-NEXT: movaps %xmm5, %xmm4
; SSE-NEXT: cmpeqps %xmm1, %xmm4
; SSE-NEXT: cmpunordps %xmm5, %xmm1
Expand All @@ -912,9 +912,9 @@ define <16 x i32> @commute_cmpps_ueq_zmm(ptr %a0, <16 x float> %a1) {
; SSE-NEXT: cmpeqps %xmm2, %xmm4
; SSE-NEXT: cmpunordps %xmm6, %xmm2
; SSE-NEXT: orps %xmm4, %xmm2
; SSE-NEXT: movaps %xmm8, %xmm4
; SSE-NEXT: movaps %xmm7, %xmm4
; SSE-NEXT: cmpeqps %xmm3, %xmm4
; SSE-NEXT: cmpunordps %xmm8, %xmm3
; SSE-NEXT: cmpunordps %xmm7, %xmm3
; SSE-NEXT: orps %xmm4, %xmm3
; SSE-NEXT: retq
;
Expand All @@ -938,14 +938,14 @@ define <16 x i32> @commute_cmpps_ueq_zmm(ptr %a0, <16 x float> %a1) {
define <16 x i32> @commute_cmpps_one_zmm(ptr %a0, <16 x float> %a1) {
; SSE-LABEL: commute_cmpps_one_zmm:
; SSE: # %bb.0:
; SSE-NEXT: movaps (%rdi), %xmm7
; SSE-NEXT: movaps (%rdi), %xmm4
; SSE-NEXT: movaps 16(%rdi), %xmm5
; SSE-NEXT: movaps 32(%rdi), %xmm6
; SSE-NEXT: movaps 48(%rdi), %xmm8
; SSE-NEXT: movaps %xmm7, %xmm4
; SSE-NEXT: cmpneqps %xmm0, %xmm4
; SSE-NEXT: cmpordps %xmm7, %xmm0
; SSE-NEXT: andps %xmm4, %xmm0
; SSE-NEXT: movaps 48(%rdi), %xmm7
; SSE-NEXT: movaps %xmm4, %xmm8
; SSE-NEXT: cmpneqps %xmm0, %xmm8
; SSE-NEXT: cmpordps %xmm4, %xmm0
; SSE-NEXT: andps %xmm8, %xmm0
; SSE-NEXT: movaps %xmm5, %xmm4
; SSE-NEXT: cmpneqps %xmm1, %xmm4
; SSE-NEXT: cmpordps %xmm5, %xmm1
Expand All @@ -954,9 +954,9 @@ define <16 x i32> @commute_cmpps_one_zmm(ptr %a0, <16 x float> %a1) {
; SSE-NEXT: cmpneqps %xmm2, %xmm4
; SSE-NEXT: cmpordps %xmm6, %xmm2
; SSE-NEXT: andps %xmm4, %xmm2
; SSE-NEXT: movaps %xmm8, %xmm4
; SSE-NEXT: movaps %xmm7, %xmm4
; SSE-NEXT: cmpneqps %xmm3, %xmm4
; SSE-NEXT: cmpordps %xmm8, %xmm3
; SSE-NEXT: cmpordps %xmm7, %xmm3
; SSE-NEXT: andps %xmm4, %xmm3
; SSE-NEXT: retq
;
Expand Down Expand Up @@ -1156,14 +1156,14 @@ define <8 x i64> @commute_cmppd_uno_zmmm(ptr %a0, <8 x double> %a1) {
define <8 x i64> @commute_cmppd_ueq_zmmm(ptr %a0, <8 x double> %a1) {
; SSE-LABEL: commute_cmppd_ueq_zmmm:
; SSE: # %bb.0:
; SSE-NEXT: movapd (%rdi), %xmm7
; SSE-NEXT: movapd (%rdi), %xmm4
; SSE-NEXT: movapd 16(%rdi), %xmm5
; SSE-NEXT: movapd 32(%rdi), %xmm6
; SSE-NEXT: movapd 48(%rdi), %xmm8
; SSE-NEXT: movapd %xmm7, %xmm4
; SSE-NEXT: cmpeqpd %xmm0, %xmm4
; SSE-NEXT: cmpunordpd %xmm7, %xmm0
; SSE-NEXT: orpd %xmm4, %xmm0
; SSE-NEXT: movapd 48(%rdi), %xmm7
; SSE-NEXT: movapd %xmm4, %xmm8
; SSE-NEXT: cmpeqpd %xmm0, %xmm8
; SSE-NEXT: cmpunordpd %xmm4, %xmm0
; SSE-NEXT: orpd %xmm8, %xmm0
; SSE-NEXT: movapd %xmm5, %xmm4
; SSE-NEXT: cmpeqpd %xmm1, %xmm4
; SSE-NEXT: cmpunordpd %xmm5, %xmm1
Expand All @@ -1172,9 +1172,9 @@ define <8 x i64> @commute_cmppd_ueq_zmmm(ptr %a0, <8 x double> %a1) {
; SSE-NEXT: cmpeqpd %xmm2, %xmm4
; SSE-NEXT: cmpunordpd %xmm6, %xmm2
; SSE-NEXT: orpd %xmm4, %xmm2
; SSE-NEXT: movapd %xmm8, %xmm4
; SSE-NEXT: movapd %xmm7, %xmm4
; SSE-NEXT: cmpeqpd %xmm3, %xmm4
; SSE-NEXT: cmpunordpd %xmm8, %xmm3
; SSE-NEXT: cmpunordpd %xmm7, %xmm3
; SSE-NEXT: orpd %xmm4, %xmm3
; SSE-NEXT: retq
;
Expand All @@ -1198,14 +1198,14 @@ define <8 x i64> @commute_cmppd_ueq_zmmm(ptr %a0, <8 x double> %a1) {
define <8 x i64> @commute_cmppd_one_zmmm(ptr %a0, <8 x double> %a1) {
; SSE-LABEL: commute_cmppd_one_zmmm:
; SSE: # %bb.0:
; SSE-NEXT: movapd (%rdi), %xmm7
; SSE-NEXT: movapd (%rdi), %xmm4
; SSE-NEXT: movapd 16(%rdi), %xmm5
; SSE-NEXT: movapd 32(%rdi), %xmm6
; SSE-NEXT: movapd 48(%rdi), %xmm8
; SSE-NEXT: movapd %xmm7, %xmm4
; SSE-NEXT: cmpneqpd %xmm0, %xmm4
; SSE-NEXT: cmpordpd %xmm7, %xmm0
; SSE-NEXT: andpd %xmm4, %xmm0
; SSE-NEXT: movapd 48(%rdi), %xmm7
; SSE-NEXT: movapd %xmm4, %xmm8
; SSE-NEXT: cmpneqpd %xmm0, %xmm8
; SSE-NEXT: cmpordpd %xmm4, %xmm0
; SSE-NEXT: andpd %xmm8, %xmm0
; SSE-NEXT: movapd %xmm5, %xmm4
; SSE-NEXT: cmpneqpd %xmm1, %xmm4
; SSE-NEXT: cmpordpd %xmm5, %xmm1
Expand All @@ -1214,9 +1214,9 @@ define <8 x i64> @commute_cmppd_one_zmmm(ptr %a0, <8 x double> %a1) {
; SSE-NEXT: cmpneqpd %xmm2, %xmm4
; SSE-NEXT: cmpordpd %xmm6, %xmm2
; SSE-NEXT: andpd %xmm4, %xmm2
; SSE-NEXT: movapd %xmm8, %xmm4
; SSE-NEXT: movapd %xmm7, %xmm4
; SSE-NEXT: cmpneqpd %xmm3, %xmm4
; SSE-NEXT: cmpordpd %xmm8, %xmm3
; SSE-NEXT: cmpordpd %xmm7, %xmm3
; SSE-NEXT: andpd %xmm4, %xmm3
; SSE-NEXT: retq
;
Expand Down
4 changes: 2 additions & 2 deletions llvm/test/CodeGen/X86/compact-unwind.ll
Original file line number Diff line number Diff line change
Expand Up @@ -65,12 +65,12 @@ declare void @OSMemoryBarrier() optsize

; NOFP-CU: Entry at offset 0x20:
; NOFP-CU-NEXT: start: 0x1d _test1
; NOFP-CU-NEXT: length: 0x42
; NOFP-CU-NEXT: length: 0x44
; NOFP-CU-NEXT: compact encoding: 0x02040c0a

; NOFP-FROM-ASM: Entry at offset 0x20:
; NOFP-FROM-ASM-NEXT: start: 0x1d _test1
; NOFP-FROM-ASM-NEXT: length: 0x42
; NOFP-FROM-ASM-NEXT: length: 0x44
; NOFP-FROM-ASM-NEXT: compact encoding: 0x02040c0a

define void @test1(ptr %image) optsize ssp uwtable {
Expand Down
68 changes: 34 additions & 34 deletions llvm/test/CodeGen/X86/conditional-tailcall.ll
Original file line number Diff line number Diff line change
Expand Up @@ -362,14 +362,14 @@ define zeroext i1 @pr31257(ptr nocapture readonly dereferenceable(8) %s) minsize
; CHECK64-NEXT: movq (%rdi), %rdi # encoding: [0x48,0x8b,0x3f]
; CHECK64-NEXT: movq -24(%rdi), %rax # encoding: [0x48,0x8b,0x47,0xe8]
; CHECK64-NEXT: leaq (%rdi,%rax), %rsi # encoding: [0x48,0x8d,0x34,0x07]
; CHECK64-NEXT: xorl %ecx, %ecx # encoding: [0x31,0xc9]
; CHECK64-NEXT: xorl %r8d, %r8d # encoding: [0x45,0x31,0xc0]
; CHECK64-NEXT: pushq $2 # encoding: [0x6a,0x02]
; CHECK64-NEXT: .cfi_adjust_cfa_offset 8
; CHECK64-NEXT: popq %r9 # encoding: [0x41,0x59]
; CHECK64-NEXT: popq %rcx # encoding: [0x59]
; CHECK64-NEXT: .cfi_adjust_cfa_offset -8
; CHECK64-NEXT: pushq $1 # encoding: [0x6a,0x01]
; CHECK64-NEXT: .cfi_adjust_cfa_offset 8
; CHECK64-NEXT: popq %r8 # encoding: [0x41,0x58]
; CHECK64-NEXT: popq %rdx # encoding: [0x5a]
; CHECK64-NEXT: .cfi_adjust_cfa_offset -8
; CHECK64-NEXT: .LBB3_1: # %for.cond
; CHECK64-NEXT: # =>This Inner Loop Header: Depth=1
Expand All @@ -378,56 +378,56 @@ define zeroext i1 @pr31257(ptr nocapture readonly dereferenceable(8) %s) minsize
; CHECK64-NEXT: # fixup A - offset: 1, value: .LBB3_12-1, kind: FK_PCRel_1
; CHECK64-NEXT: # %bb.2: # %for.body
; CHECK64-NEXT: # in Loop: Header=BB3_1 Depth=1
; CHECK64-NEXT: cmpl $2, %ecx # encoding: [0x83,0xf9,0x02]
; CHECK64-NEXT: cmpl $2, %r8d # encoding: [0x41,0x83,0xf8,0x02]
; CHECK64-NEXT: je .LBB3_10 # encoding: [0x74,A]
; CHECK64-NEXT: # fixup A - offset: 1, value: .LBB3_10-1, kind: FK_PCRel_1
; CHECK64-NEXT: # %bb.3: # %for.body
; CHECK64-NEXT: # in Loop: Header=BB3_1 Depth=1
; CHECK64-NEXT: cmpl $1, %ecx # encoding: [0x83,0xf9,0x01]
; CHECK64-NEXT: cmpl $1, %r8d # encoding: [0x41,0x83,0xf8,0x01]
; CHECK64-NEXT: je .LBB3_8 # encoding: [0x74,A]
; CHECK64-NEXT: # fixup A - offset: 1, value: .LBB3_8-1, kind: FK_PCRel_1
; CHECK64-NEXT: # %bb.4: # %for.body
; CHECK64-NEXT: # in Loop: Header=BB3_1 Depth=1
; CHECK64-NEXT: testl %ecx, %ecx # encoding: [0x85,0xc9]
; CHECK64-NEXT: testl %r8d, %r8d # encoding: [0x45,0x85,0xc0]
; CHECK64-NEXT: jne .LBB3_11 # encoding: [0x75,A]
; CHECK64-NEXT: # fixup A - offset: 1, value: .LBB3_11-1, kind: FK_PCRel_1
; CHECK64-NEXT: # %bb.5: # %sw.bb
; CHECK64-NEXT: # in Loop: Header=BB3_1 Depth=1
; CHECK64-NEXT: movzbl (%rdi), %edx # encoding: [0x0f,0xb6,0x17]
; CHECK64-NEXT: cmpl $43, %edx # encoding: [0x83,0xfa,0x2b]
; CHECK64-NEXT: movl %r8d, %ecx # encoding: [0x44,0x89,0xc1]
; CHECK64-NEXT: movzbl (%rdi), %r9d # encoding: [0x44,0x0f,0xb6,0x0f]
; CHECK64-NEXT: cmpl $43, %r9d # encoding: [0x41,0x83,0xf9,0x2b]
; CHECK64-NEXT: movl %edx, %r8d # encoding: [0x41,0x89,0xd0]
; CHECK64-NEXT: je .LBB3_11 # encoding: [0x74,A]
; CHECK64-NEXT: # fixup A - offset: 1, value: .LBB3_11-1, kind: FK_PCRel_1
; CHECK64-NEXT: # %bb.6: # %sw.bb
; CHECK64-NEXT: # in Loop: Header=BB3_1 Depth=1
; CHECK64-NEXT: cmpl $45, %edx # encoding: [0x83,0xfa,0x2d]
; CHECK64-NEXT: movl %r8d, %ecx # encoding: [0x44,0x89,0xc1]
; CHECK64-NEXT: cmpl $45, %r9d # encoding: [0x41,0x83,0xf9,0x2d]
; CHECK64-NEXT: movl %edx, %r8d # encoding: [0x41,0x89,0xd0]
; CHECK64-NEXT: je .LBB3_11 # encoding: [0x74,A]
; CHECK64-NEXT: # fixup A - offset: 1, value: .LBB3_11-1, kind: FK_PCRel_1
; CHECK64-NEXT: # %bb.7: # %if.else
; CHECK64-NEXT: # in Loop: Header=BB3_1 Depth=1
; CHECK64-NEXT: addl $-48, %edx # encoding: [0x83,0xc2,0xd0]
; CHECK64-NEXT: cmpl $10, %edx # encoding: [0x83,0xfa,0x0a]
; CHECK64-NEXT: addl $-48, %r9d # encoding: [0x41,0x83,0xc1,0xd0]
; CHECK64-NEXT: cmpl $10, %r9d # encoding: [0x41,0x83,0xf9,0x0a]
; CHECK64-NEXT: jmp .LBB3_9 # encoding: [0xeb,A]
; CHECK64-NEXT: # fixup A - offset: 1, value: .LBB3_9-1, kind: FK_PCRel_1
; CHECK64-NEXT: .LBB3_8: # %sw.bb14
; CHECK64-NEXT: # in Loop: Header=BB3_1 Depth=1
; CHECK64-NEXT: movzbl (%rdi), %ecx # encoding: [0x0f,0xb6,0x0f]
; CHECK64-NEXT: addl $-48, %ecx # encoding: [0x83,0xc1,0xd0]
; CHECK64-NEXT: cmpl $10, %ecx # encoding: [0x83,0xf9,0x0a]
; CHECK64-NEXT: movzbl (%rdi), %r8d # encoding: [0x44,0x0f,0xb6,0x07]
; CHECK64-NEXT: addl $-48, %r8d # encoding: [0x41,0x83,0xc0,0xd0]
; CHECK64-NEXT: cmpl $10, %r8d # encoding: [0x41,0x83,0xf8,0x0a]
; CHECK64-NEXT: .LBB3_9: # %if.else
; CHECK64-NEXT: # in Loop: Header=BB3_1 Depth=1
; CHECK64-NEXT: movl %r9d, %ecx # encoding: [0x44,0x89,0xc9]
; CHECK64-NEXT: movl %ecx, %r8d # encoding: [0x41,0x89,0xc8]
; CHECK64-NEXT: jb .LBB3_11 # encoding: [0x72,A]
; CHECK64-NEXT: # fixup A - offset: 1, value: .LBB3_11-1, kind: FK_PCRel_1
; CHECK64-NEXT: jmp .LBB3_13 # encoding: [0xeb,A]
; CHECK64-NEXT: # fixup A - offset: 1, value: .LBB3_13-1, kind: FK_PCRel_1
; CHECK64-NEXT: .LBB3_10: # %sw.bb22
; CHECK64-NEXT: # in Loop: Header=BB3_1 Depth=1
; CHECK64-NEXT: movzbl (%rdi), %ecx # encoding: [0x0f,0xb6,0x0f]
; CHECK64-NEXT: addl $-48, %ecx # encoding: [0x83,0xc1,0xd0]
; CHECK64-NEXT: cmpl $10, %ecx # encoding: [0x83,0xf9,0x0a]
; CHECK64-NEXT: movl %r9d, %ecx # encoding: [0x44,0x89,0xc9]
; CHECK64-NEXT: movzbl (%rdi), %r8d # encoding: [0x44,0x0f,0xb6,0x07]
; CHECK64-NEXT: addl $-48, %r8d # encoding: [0x41,0x83,0xc0,0xd0]
; CHECK64-NEXT: cmpl $10, %r8d # encoding: [0x41,0x83,0xf8,0x0a]
; CHECK64-NEXT: movl %ecx, %r8d # encoding: [0x41,0x89,0xc8]
; CHECK64-NEXT: jae _Z20isValidIntegerSuffixN9__gnu_cxx17__normal_iteratorIPKcSsEES3_ # TAILCALL
; CHECK64-NEXT: # encoding: [0x73,A]
; CHECK64-NEXT: # fixup A - offset: 1, value: _Z20isValidIntegerSuffixN9__gnu_cxx17__normal_iteratorIPKcSsEES3_-1, kind: FK_PCRel_1
Expand All @@ -438,7 +438,7 @@ define zeroext i1 @pr31257(ptr nocapture readonly dereferenceable(8) %s) minsize
; CHECK64-NEXT: jmp .LBB3_1 # encoding: [0xeb,A]
; CHECK64-NEXT: # fixup A - offset: 1, value: .LBB3_1-1, kind: FK_PCRel_1
; CHECK64-NEXT: .LBB3_12:
; CHECK64-NEXT: cmpl $2, %ecx # encoding: [0x83,0xf9,0x02]
; CHECK64-NEXT: cmpl $2, %r8d # encoding: [0x41,0x83,0xf8,0x02]
; CHECK64-NEXT: sete %al # encoding: [0x0f,0x94,0xc0]
; CHECK64-NEXT: # kill: def $al killed $al killed $eax
; CHECK64-NEXT: retq # encoding: [0xc3]
Expand All @@ -450,34 +450,34 @@ define zeroext i1 @pr31257(ptr nocapture readonly dereferenceable(8) %s) minsize
; WIN64-LABEL: pr31257:
; WIN64: # %bb.0: # %entry
; WIN64-NEXT: movq (%rcx), %rcx # encoding: [0x48,0x8b,0x09]
; WIN64-NEXT: movq -24(%rcx), %r8 # encoding: [0x4c,0x8b,0x41,0xe8]
; WIN64-NEXT: leaq (%rcx,%r8), %rdx # encoding: [0x4a,0x8d,0x14,0x01]
; WIN64-NEXT: xorl %eax, %eax # encoding: [0x31,0xc0]
; WIN64-NEXT: movq -24(%rcx), %rax # encoding: [0x48,0x8b,0x41,0xe8]
; WIN64-NEXT: leaq (%rcx,%rax), %rdx # encoding: [0x48,0x8d,0x14,0x01]
; WIN64-NEXT: xorl %r8d, %r8d # encoding: [0x45,0x31,0xc0]
; WIN64-NEXT: .LBB3_1: # %for.cond
; WIN64-NEXT: # =>This Inner Loop Header: Depth=1
; WIN64-NEXT: testq %r8, %r8 # encoding: [0x4d,0x85,0xc0]
; WIN64-NEXT: testq %rax, %rax # encoding: [0x48,0x85,0xc0]
; WIN64-NEXT: je .LBB3_11 # encoding: [0x74,A]
; WIN64-NEXT: # fixup A - offset: 1, value: .LBB3_11-1, kind: FK_PCRel_1
; WIN64-NEXT: # %bb.2: # %for.body
; WIN64-NEXT: # in Loop: Header=BB3_1 Depth=1
; WIN64-NEXT: cmpl $2, %eax # encoding: [0x83,0xf8,0x02]
; WIN64-NEXT: cmpl $2, %r8d # encoding: [0x41,0x83,0xf8,0x02]
; WIN64-NEXT: je .LBB3_9 # encoding: [0x74,A]
; WIN64-NEXT: # fixup A - offset: 1, value: .LBB3_9-1, kind: FK_PCRel_1
; WIN64-NEXT: # %bb.3: # %for.body
; WIN64-NEXT: # in Loop: Header=BB3_1 Depth=1
; WIN64-NEXT: cmpl $1, %eax # encoding: [0x83,0xf8,0x01]
; WIN64-NEXT: cmpl $1, %r8d # encoding: [0x41,0x83,0xf8,0x01]
; WIN64-NEXT: je .LBB3_7 # encoding: [0x74,A]
; WIN64-NEXT: # fixup A - offset: 1, value: .LBB3_7-1, kind: FK_PCRel_1
; WIN64-NEXT: # %bb.4: # %for.body
; WIN64-NEXT: # in Loop: Header=BB3_1 Depth=1
; WIN64-NEXT: testl %eax, %eax # encoding: [0x85,0xc0]
; WIN64-NEXT: testl %r8d, %r8d # encoding: [0x45,0x85,0xc0]
; WIN64-NEXT: jne .LBB3_10 # encoding: [0x75,A]
; WIN64-NEXT: # fixup A - offset: 1, value: .LBB3_10-1, kind: FK_PCRel_1
; WIN64-NEXT: # %bb.5: # %sw.bb
; WIN64-NEXT: # in Loop: Header=BB3_1 Depth=1
; WIN64-NEXT: movzbl (%rcx), %r9d # encoding: [0x44,0x0f,0xb6,0x09]
; WIN64-NEXT: cmpl $43, %r9d # encoding: [0x41,0x83,0xf9,0x2b]
; WIN64-NEXT: movl $1, %eax # encoding: [0xb8,0x01,0x00,0x00,0x00]
; WIN64-NEXT: movl $1, %r8d # encoding: [0x41,0xb8,0x01,0x00,0x00,0x00]
; WIN64-NEXT: je .LBB3_10 # encoding: [0x74,A]
; WIN64-NEXT: # fixup A - offset: 1, value: .LBB3_10-1, kind: FK_PCRel_1
; WIN64-NEXT: # %bb.6: # %sw.bb
Expand All @@ -493,7 +493,7 @@ define zeroext i1 @pr31257(ptr nocapture readonly dereferenceable(8) %s) minsize
; WIN64-NEXT: .LBB3_8: # %if.else
; WIN64-NEXT: # in Loop: Header=BB3_1 Depth=1
; WIN64-NEXT: addl $-48, %r9d # encoding: [0x41,0x83,0xc1,0xd0]
; WIN64-NEXT: movl $2, %eax # encoding: [0xb8,0x02,0x00,0x00,0x00]
; WIN64-NEXT: movl $2, %r8d # encoding: [0x41,0xb8,0x02,0x00,0x00,0x00]
; WIN64-NEXT: cmpl $10, %r9d # encoding: [0x41,0x83,0xf9,0x0a]
; WIN64-NEXT: jb .LBB3_10 # encoding: [0x72,A]
; WIN64-NEXT: # fixup A - offset: 1, value: .LBB3_10-1, kind: FK_PCRel_1
Expand All @@ -503,19 +503,19 @@ define zeroext i1 @pr31257(ptr nocapture readonly dereferenceable(8) %s) minsize
; WIN64-NEXT: # in Loop: Header=BB3_1 Depth=1
; WIN64-NEXT: movzbl (%rcx), %r9d # encoding: [0x44,0x0f,0xb6,0x09]
; WIN64-NEXT: addl $-48, %r9d # encoding: [0x41,0x83,0xc1,0xd0]
; WIN64-NEXT: movl $2, %eax # encoding: [0xb8,0x02,0x00,0x00,0x00]
; WIN64-NEXT: movl $2, %r8d # encoding: [0x41,0xb8,0x02,0x00,0x00,0x00]
; WIN64-NEXT: cmpl $10, %r9d # encoding: [0x41,0x83,0xf9,0x0a]
; WIN64-NEXT: jae _Z20isValidIntegerSuffixN9__gnu_cxx17__normal_iteratorIPKcSsEES3_ # TAILCALL
; WIN64-NEXT: # encoding: [0x73,A]
; WIN64-NEXT: # fixup A - offset: 1, value: _Z20isValidIntegerSuffixN9__gnu_cxx17__normal_iteratorIPKcSsEES3_-1, kind: FK_PCRel_1
; WIN64-NEXT: .LBB3_10: # %for.inc
; WIN64-NEXT: # in Loop: Header=BB3_1 Depth=1
; WIN64-NEXT: incq %rcx # encoding: [0x48,0xff,0xc1]
; WIN64-NEXT: decq %r8 # encoding: [0x49,0xff,0xc8]
; WIN64-NEXT: decq %rax # encoding: [0x48,0xff,0xc8]
; WIN64-NEXT: jmp .LBB3_1 # encoding: [0xeb,A]
; WIN64-NEXT: # fixup A - offset: 1, value: .LBB3_1-1, kind: FK_PCRel_1
; WIN64-NEXT: .LBB3_11:
; WIN64-NEXT: cmpl $2, %eax # encoding: [0x83,0xf8,0x02]
; WIN64-NEXT: cmpl $2, %r8d # encoding: [0x41,0x83,0xf8,0x02]
; WIN64-NEXT: sete %al # encoding: [0x0f,0x94,0xc0]
; WIN64-NEXT: # kill: def $al killed $al killed $eax
; WIN64-NEXT: retq # encoding: [0xc3]
Expand Down
24 changes: 12 additions & 12 deletions llvm/test/CodeGen/X86/copy-eflags.ll
Original file line number Diff line number Diff line change
Expand Up @@ -247,25 +247,25 @@ define dso_local void @PR37100(i8 %arg1, i16 %arg2, i64 %arg3, i8 %arg4, ptr %pt
;
; X64-LABEL: PR37100:
; X64: # %bb.0: # %bb
; X64-NEXT: movq %rdx, %rsi
; X64-NEXT: movl {{[0-9]+}}(%rsp), %r10d
; X64-NEXT: movzbl %cl, %r11d
; X64-NEXT: movq %rdx, %r10
; X64-NEXT: movl {{[0-9]+}}(%rsp), %esi
; X64-NEXT: movzbl %cl, %ecx
; X64-NEXT: .p2align 4, 0x90
; X64-NEXT: .LBB3_1: # %bb1
; X64-NEXT: # =>This Inner Loop Header: Depth=1
; X64-NEXT: movsbq %dil, %rax
; X64-NEXT: xorl %ecx, %ecx
; X64-NEXT: cmpq %rax, %rsi
; X64-NEXT: setl %cl
; X64-NEXT: negl %ecx
; X64-NEXT: cmpq %rax, %rsi
; X64-NEXT: xorl %r11d, %r11d
; X64-NEXT: cmpq %rax, %r10
; X64-NEXT: setl %r11b
; X64-NEXT: negl %r11d
; X64-NEXT: cmpq %rax, %r10
; X64-NEXT: movzbl %al, %edi
; X64-NEXT: cmovgel %r11d, %edi
; X64-NEXT: cmovgel %ecx, %edi
; X64-NEXT: movb %dil, (%r8)
; X64-NEXT: cmovgel (%r9), %ecx
; X64-NEXT: movl %r10d, %eax
; X64-NEXT: cmovgel (%r9), %r11d
; X64-NEXT: movl %esi, %eax
; X64-NEXT: cltd
; X64-NEXT: idivl %ecx
; X64-NEXT: idivl %r11d
; X64-NEXT: jmp .LBB3_1
bb:
br label %bb1
Expand Down
32 changes: 16 additions & 16 deletions llvm/test/CodeGen/X86/ctpop-combine.ll
Original file line number Diff line number Diff line change
Expand Up @@ -162,27 +162,27 @@ define i32 @ctpop_ne_one(i64 %x) nounwind readnone {
define i1 @ctpop_trunc_non_power2(i255 %x) nounwind {
; CHECK-LABEL: ctpop_trunc_non_power2:
; CHECK: # %bb.0:
; CHECK-NEXT: movabsq $9223372036854775807, %r8 # imm = 0x7FFFFFFFFFFFFFFF
; CHECK-NEXT: movq %rcx, %r9
; CHECK-NEXT: andq %r8, %r9
; CHECK-NEXT: movq %rdi, %r10
; CHECK-NEXT: addq $-1, %r10
; CHECK-NEXT: movq %rsi, %rax
; CHECK-NEXT: adcq $-1, %rax
; CHECK-NEXT: movabsq $9223372036854775807, %rax # imm = 0x7FFFFFFFFFFFFFFF
; CHECK-NEXT: movq %rcx, %r8
; CHECK-NEXT: andq %rax, %r8
; CHECK-NEXT: movq %rdi, %r9
; CHECK-NEXT: addq $-1, %r9
; CHECK-NEXT: movq %rsi, %r10
; CHECK-NEXT: adcq $-1, %r10
; CHECK-NEXT: movq %rdx, %r11
; CHECK-NEXT: adcq $-1, %r11
; CHECK-NEXT: adcq %r8, %rcx
; CHECK-NEXT: andq %rdi, %r10
; CHECK-NEXT: adcq %rax, %rcx
; CHECK-NEXT: andq %rdi, %r9
; CHECK-NEXT: andq %rdx, %r11
; CHECK-NEXT: orq %r10, %r11
; CHECK-NEXT: andq %r9, %rcx
; CHECK-NEXT: andq %rsi, %rax
; CHECK-NEXT: orq %rcx, %rax
; CHECK-NEXT: orq %r11, %rax
; CHECK-NEXT: orq %r9, %r11
; CHECK-NEXT: andq %r8, %rcx
; CHECK-NEXT: andq %rsi, %r10
; CHECK-NEXT: orq %rcx, %r10
; CHECK-NEXT: orq %r11, %r10
; CHECK-NEXT: sete %cl
; CHECK-NEXT: orq %rdx, %rdi
; CHECK-NEXT: orq %rsi, %r9
; CHECK-NEXT: orq %rdi, %r9
; CHECK-NEXT: orq %rsi, %r8
; CHECK-NEXT: orq %rdi, %r8
; CHECK-NEXT: setne %al
; CHECK-NEXT: andb %cl, %al
; CHECK-NEXT: retq
Expand Down
178 changes: 89 additions & 89 deletions llvm/test/CodeGen/X86/dag-update-nodetomatch.ll
Original file line number Diff line number Diff line change
Expand Up @@ -24,38 +24,38 @@ define void @_Z1nv() local_unnamed_addr {
; CHECK-LABEL: _Z1nv:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: movq k@GOTPCREL(%rip), %rax
; CHECK-NEXT: movl 4(%rax), %r11d
; CHECK-NEXT: movl 4(%rax), %edx
; CHECK-NEXT: movq c@GOTPCREL(%rip), %rax
; CHECK-NEXT: movswl (%rax), %r10d
; CHECK-NEXT: movq b@GOTPCREL(%rip), %r8
; CHECK-NEXT: movswl (%r8), %r9d
; CHECK-NEXT: movswl (%rax), %ecx
; CHECK-NEXT: movq b@GOTPCREL(%rip), %rax
; CHECK-NEXT: movswl (%rax), %edi
; CHECK-NEXT: movq a@GOTPCREL(%rip), %rsi
; CHECK-NEXT: movl (%rsi), %esi
; CHECK-NEXT: movq l@GOTPCREL(%rip), %rax
; CHECK-NEXT: movl (%rax), %edi
; CHECK-NEXT: movl %edi, %eax
; CHECK-NEXT: shll $7, %eax
; CHECK-NEXT: sarl $7, %eax
; CHECK-NEXT: negl %eax
; CHECK-NEXT: movq l@GOTPCREL(%rip), %r8
; CHECK-NEXT: movl (%r8), %r8d
; CHECK-NEXT: movl %r8d, %r9d
; CHECK-NEXT: shll $7, %r9d
; CHECK-NEXT: sarl $7, %r9d
; CHECK-NEXT: negl %r9d
; CHECK-NEXT: testl %esi, %esi
; CHECK-NEXT: cmovel %esi, %eax
; CHECK-NEXT: movzwl %r11w, %ecx
; CHECK-NEXT: leal (%r10,%rcx,2), %ecx
; CHECK-NEXT: addl %r9d, %ecx
; CHECK-NEXT: cmpl %eax, %ecx
; CHECK-NEXT: sete %al
; CHECK-NEXT: testl $33554431, %edi # imm = 0x1FFFFFF
; CHECK-NEXT: sete %dl
; CHECK-NEXT: orb %al, %dl
; CHECK-NEXT: movzbl %dl, %eax
; CHECK-NEXT: movq e@GOTPCREL(%rip), %rdx
; CHECK-NEXT: movw %ax, (%rdx)
; CHECK-NEXT: cmovel %esi, %r9d
; CHECK-NEXT: movzwl %dx, %r10d
; CHECK-NEXT: leal (%rcx,%r10,2), %ecx
; CHECK-NEXT: addl %edi, %ecx
; CHECK-NEXT: cmpl %r9d, %ecx
; CHECK-NEXT: sete %dil
; CHECK-NEXT: testl $33554431, %r8d # imm = 0x1FFFFFF
; CHECK-NEXT: sete %r8b
; CHECK-NEXT: orb %dil, %r8b
; CHECK-NEXT: movzbl %r8b, %edi
; CHECK-NEXT: movq e@GOTPCREL(%rip), %r8
; CHECK-NEXT: movw %di, (%r8)
; CHECK-NEXT: notl %ecx
; CHECK-NEXT: shrl $31, %ecx
; CHECK-NEXT: addl %r11d, %ecx
; CHECK-NEXT: addl %edx, %ecx
; CHECK-NEXT: # kill: def $cl killed $cl killed $ecx
; CHECK-NEXT: sarl %cl, %esi
; CHECK-NEXT: movw %si, (%r8)
; CHECK-NEXT: movw %si, (%rax)
; CHECK-NEXT: retq
entry:
%bf.load = load i32, i32* bitcast (i24* getelementptr inbounds (%struct.m, %struct.m* @k, i64 0, i32 0, i32 1) to i32*), align 4
Expand Down Expand Up @@ -115,115 +115,115 @@ define void @_Z2x6v() local_unnamed_addr {
; CHECK-NEXT: .cfi_offset %r15, -24
; CHECK-NEXT: .cfi_offset %rbp, -16
; CHECK-NEXT: movq x1@GOTPCREL(%rip), %rax
; CHECK-NEXT: movl (%rax), %edx
; CHECK-NEXT: movl %edx, %eax
; CHECK-NEXT: andl $511, %eax # imm = 0x1FF
; CHECK-NEXT: leaq 1(%rax), %rsi
; CHECK-NEXT: movl (%rax), %ebx
; CHECK-NEXT: movl %ebx, %r9d
; CHECK-NEXT: andl $511, %r9d # imm = 0x1FF
; CHECK-NEXT: leaq 1(%r9), %rax
; CHECK-NEXT: movq x4@GOTPCREL(%rip), %rcx
; CHECK-NEXT: movl %esi, (%rcx)
; CHECK-NEXT: movl %eax, (%rcx)
; CHECK-NEXT: movq x3@GOTPCREL(%rip), %rcx
; CHECK-NEXT: movl (%rcx), %ecx
; CHECK-NEXT: testl %ecx, %ecx
; CHECK-NEXT: je .LBB1_18
; CHECK-NEXT: # %bb.1: # %for.cond1thread-pre-split.lr.ph
; CHECK-NEXT: movq x5@GOTPCREL(%rip), %rdi
; CHECK-NEXT: movq (%rdi), %r12
; CHECK-NEXT: movl %ecx, %edi
; CHECK-NEXT: notl %edi
; CHECK-NEXT: leaq 8(,%rdi,8), %r14
; CHECK-NEXT: imulq %rsi, %r14
; CHECK-NEXT: addq %r12, %r14
; CHECK-NEXT: movq x2@GOTPCREL(%rip), %r15
; CHECK-NEXT: movl (%r15), %ebx
; CHECK-NEXT: leal 8(,%rax,8), %eax
; CHECK-NEXT: movq x5@GOTPCREL(%rip), %rdx
; CHECK-NEXT: movq (%rdx), %rsi
; CHECK-NEXT: movl %ecx, %edx
; CHECK-NEXT: notl %edx
; CHECK-NEXT: leaq 8(,%rdx,8), %rdi
; CHECK-NEXT: imulq %rax, %rdi
; CHECK-NEXT: addq %rsi, %rdi
; CHECK-NEXT: movq x2@GOTPCREL(%rip), %r8
; CHECK-NEXT: movl (%r8), %edx
; CHECK-NEXT: leal 8(,%r9,8), %eax
; CHECK-NEXT: movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
; CHECK-NEXT: leaq 8(%r12), %rax
; CHECK-NEXT: leaq 8(%rsi), %rax
; CHECK-NEXT: movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
; CHECK-NEXT: leaq 32(%r12), %rax
; CHECK-NEXT: andl $511, %edx # imm = 0x1FF
; CHECK-NEXT: leaq 8(,%rdx,8), %r13
; CHECK-NEXT: xorl %edi, %edi
; CHECK-NEXT: movq x0@GOTPCREL(%rip), %rdx
; CHECK-NEXT: movq %r12, %rsi
; CHECK-NEXT: leaq 32(%rsi), %r11
; CHECK-NEXT: andl $511, %ebx # imm = 0x1FF
; CHECK-NEXT: leaq 8(,%rbx,8), %rbx
; CHECK-NEXT: xorl %r14d, %r14d
; CHECK-NEXT: movq x0@GOTPCREL(%rip), %r15
; CHECK-NEXT: movq %rsi, %r12
; CHECK-NEXT: jmp .LBB1_2
; CHECK-NEXT: .p2align 4, 0x90
; CHECK-NEXT: .LBB1_15: # %for.cond1.for.inc3_crit_edge
; CHECK-NEXT: # in Loop: Header=BB1_2 Depth=1
; CHECK-NEXT: movl %ebx, (%r15)
; CHECK-NEXT: movl %edx, (%r8)
; CHECK-NEXT: .LBB1_16: # %for.inc3
; CHECK-NEXT: # in Loop: Header=BB1_2 Depth=1
; CHECK-NEXT: addq %r13, %rsi
; CHECK-NEXT: incq %rdi
; CHECK-NEXT: addq %r13, %rax
; CHECK-NEXT: addq %rbx, %r12
; CHECK-NEXT: incq %r14
; CHECK-NEXT: addq %rbx, %r11
; CHECK-NEXT: incl %ecx
; CHECK-NEXT: je .LBB1_17
; CHECK-NEXT: .LBB1_2: # %for.cond1thread-pre-split
; CHECK-NEXT: # =>This Loop Header: Depth=1
; CHECK-NEXT: # Child Loop BB1_12 Depth 2
; CHECK-NEXT: # Child Loop BB1_14 Depth 2
; CHECK-NEXT: testl %ebx, %ebx
; CHECK-NEXT: testl %edx, %edx
; CHECK-NEXT: jns .LBB1_16
; CHECK-NEXT: # %bb.3: # %for.body2.preheader
; CHECK-NEXT: # in Loop: Header=BB1_2 Depth=1
; CHECK-NEXT: movslq %ebx, %r9
; CHECK-NEXT: testq %r9, %r9
; CHECK-NEXT: movslq %edx, %r13
; CHECK-NEXT: testq %r13, %r13
; CHECK-NEXT: movq $-1, %rbp
; CHECK-NEXT: cmovnsq %r9, %rbp
; CHECK-NEXT: subq %r9, %rbp
; CHECK-NEXT: cmovnsq %r13, %rbp
; CHECK-NEXT: subq %r13, %rbp
; CHECK-NEXT: incq %rbp
; CHECK-NEXT: cmpq $4, %rbp
; CHECK-NEXT: jb .LBB1_14
; CHECK-NEXT: # %bb.4: # %min.iters.checked
; CHECK-NEXT: # in Loop: Header=BB1_2 Depth=1
; CHECK-NEXT: movq %rbp, %r8
; CHECK-NEXT: andq $-4, %r8
; CHECK-NEXT: movq %rbp, %rdx
; CHECK-NEXT: andq $-4, %rdx
; CHECK-NEXT: je .LBB1_14
; CHECK-NEXT: # %bb.5: # %vector.memcheck
; CHECK-NEXT: # in Loop: Header=BB1_2 Depth=1
; CHECK-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %r11 # 8-byte Reload
; CHECK-NEXT: imulq %rdi, %r11
; CHECK-NEXT: leaq (%r12,%r11), %rbx
; CHECK-NEXT: leaq (%rbx,%r9,8), %rbx
; CHECK-NEXT: testq %r9, %r9
; CHECK-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Reload
; CHECK-NEXT: imulq %r14, %rax
; CHECK-NEXT: leaq (%rsi,%rax), %r10
; CHECK-NEXT: leaq (%r10,%r13,8), %r9
; CHECK-NEXT: testq %r13, %r13
; CHECK-NEXT: movq $-1, %r10
; CHECK-NEXT: cmovnsq %r9, %r10
; CHECK-NEXT: cmpq %rdx, %rbx
; CHECK-NEXT: cmovnsq %r13, %r10
; CHECK-NEXT: cmpq %r15, %r9
; CHECK-NEXT: jae .LBB1_7
; CHECK-NEXT: # %bb.6: # %vector.memcheck
; CHECK-NEXT: # in Loop: Header=BB1_2 Depth=1
; CHECK-NEXT: addq {{[-0-9]+}}(%r{{[sb]}}p), %r11 # 8-byte Folded Reload
; CHECK-NEXT: leaq (%r11,%r10,8), %rbx
; CHECK-NEXT: cmpq %rdx, %rbx
; CHECK-NEXT: addq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Folded Reload
; CHECK-NEXT: leaq (%rax,%r10,8), %rax
; CHECK-NEXT: cmpq %r15, %rax
; CHECK-NEXT: ja .LBB1_14
; CHECK-NEXT: .LBB1_7: # %vector.body.preheader
; CHECK-NEXT: # in Loop: Header=BB1_2 Depth=1
; CHECK-NEXT: leaq -4(%r8), %rbx
; CHECK-NEXT: movq %rbx, %r11
; CHECK-NEXT: shrq $2, %r11
; CHECK-NEXT: btl $2, %ebx
; CHECK-NEXT: leaq -4(%rdx), %r9
; CHECK-NEXT: movq %r9, %rax
; CHECK-NEXT: shrq $2, %rax
; CHECK-NEXT: btl $2, %r9d
; CHECK-NEXT: jb .LBB1_8
; CHECK-NEXT: # %bb.9: # %vector.body.prol.preheader
; CHECK-NEXT: # in Loop: Header=BB1_2 Depth=1
; CHECK-NEXT: movq {{.*#+}} xmm0 = mem[0],zero
; CHECK-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,1,0,1]
; CHECK-NEXT: movdqu %xmm0, (%rsi,%r9,8)
; CHECK-NEXT: movdqu %xmm0, 16(%rsi,%r9,8)
; CHECK-NEXT: movdqu %xmm0, (%r12,%r13,8)
; CHECK-NEXT: movdqu %xmm0, 16(%r12,%r13,8)
; CHECK-NEXT: movl $4, %r10d
; CHECK-NEXT: testq %r11, %r11
; CHECK-NEXT: testq %rax, %rax
; CHECK-NEXT: jne .LBB1_11
; CHECK-NEXT: jmp .LBB1_13
; CHECK-NEXT: .LBB1_8: # in Loop: Header=BB1_2 Depth=1
; CHECK-NEXT: xorl %r10d, %r10d
; CHECK-NEXT: testq %r11, %r11
; CHECK-NEXT: testq %rax, %rax
; CHECK-NEXT: je .LBB1_13
; CHECK-NEXT: .LBB1_11: # %vector.body.preheader.new
; CHECK-NEXT: # in Loop: Header=BB1_2 Depth=1
; CHECK-NEXT: movq {{.*#+}} xmm0 = mem[0],zero
; CHECK-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,1,0,1]
; CHECK-NEXT: movq %r10, %rbx
; CHECK-NEXT: subq %r8, %rbx
; CHECK-NEXT: addq %r9, %r10
; CHECK-NEXT: leaq (%rax,%r10,8), %r10
; CHECK-NEXT: movq %r10, %rax
; CHECK-NEXT: subq %rdx, %rax
; CHECK-NEXT: addq %r13, %r10
; CHECK-NEXT: leaq (%r11,%r10,8), %r10
; CHECK-NEXT: .p2align 4, 0x90
; CHECK-NEXT: .LBB1_12: # %vector.body
; CHECK-NEXT: # Parent Loop BB1_2 Depth=1
Expand All @@ -233,28 +233,28 @@ define void @_Z2x6v() local_unnamed_addr {
; CHECK-NEXT: movdqu %xmm0, (%r10)
; CHECK-NEXT: movdqu %xmm0, 16(%r10)
; CHECK-NEXT: addq $64, %r10
; CHECK-NEXT: addq $8, %rbx
; CHECK-NEXT: addq $8, %rax
; CHECK-NEXT: jne .LBB1_12
; CHECK-NEXT: .LBB1_13: # %middle.block
; CHECK-NEXT: # in Loop: Header=BB1_2 Depth=1
; CHECK-NEXT: addq %r8, %r9
; CHECK-NEXT: cmpq %r8, %rbp
; CHECK-NEXT: movq %r9, %rbx
; CHECK-NEXT: addq %rdx, %r13
; CHECK-NEXT: cmpq %rdx, %rbp
; CHECK-NEXT: movq %r13, %rdx
; CHECK-NEXT: je .LBB1_15
; CHECK-NEXT: .p2align 4, 0x90
; CHECK-NEXT: .LBB1_14: # %for.body2
; CHECK-NEXT: # Parent Loop BB1_2 Depth=1
; CHECK-NEXT: # => This Inner Loop Header: Depth=2
; CHECK-NEXT: movq (%rdx), %rbp
; CHECK-NEXT: movq %rbp, (%rsi,%r9,8)
; CHECK-NEXT: leaq 1(%r9), %rbx
; CHECK-NEXT: cmpq $-1, %r9
; CHECK-NEXT: movq %rbx, %r9
; CHECK-NEXT: movq (%r15), %rax
; CHECK-NEXT: movq %rax, (%r12,%r13,8)
; CHECK-NEXT: leaq 1(%r13), %rdx
; CHECK-NEXT: cmpq $-1, %r13
; CHECK-NEXT: movq %rdx, %r13
; CHECK-NEXT: jl .LBB1_14
; CHECK-NEXT: jmp .LBB1_15
; CHECK-NEXT: .LBB1_17: # %for.cond.for.end5_crit_edge
; CHECK-NEXT: movq x5@GOTPCREL(%rip), %rax
; CHECK-NEXT: movq %r14, (%rax)
; CHECK-NEXT: movq %rdi, (%rax)
; CHECK-NEXT: movq x3@GOTPCREL(%rip), %rax
; CHECK-NEXT: movl $0, (%rax)
; CHECK-NEXT: .LBB1_18: # %for.end5
Expand Down
16 changes: 8 additions & 8 deletions llvm/test/CodeGen/X86/dagcombine-cse.ll
Original file line number Diff line number Diff line change
Expand Up @@ -114,20 +114,20 @@ define i96 @square_high(i96 %x) nounwind {
; X64-NEXT: movl %esi, %ecx
; X64-NEXT: movq %rcx, %rax
; X64-NEXT: mulq %rdi
; X64-NEXT: movq %rdx, %r8
; X64-NEXT: movq %rax, %rsi
; X64-NEXT: movq %rdx, %rsi
; X64-NEXT: movq %rax, %r8
; X64-NEXT: movq %rdi, %rax
; X64-NEXT: mulq %rdi
; X64-NEXT: addq %rsi, %rdx
; X64-NEXT: movq %r8, %rax
; X64-NEXT: addq %r8, %rdx
; X64-NEXT: movq %rsi, %rax
; X64-NEXT: adcq $0, %rax
; X64-NEXT: addq %rdx, %rsi
; X64-NEXT: adcq %r8, %rax
; X64-NEXT: addq %rdx, %r8
; X64-NEXT: adcq %rsi, %rax
; X64-NEXT: imulq %rcx, %rcx
; X64-NEXT: addq %rax, %rcx
; X64-NEXT: shrdq $32, %rcx, %rsi
; X64-NEXT: shrdq $32, %rcx, %r8
; X64-NEXT: shrq $32, %rcx
; X64-NEXT: movq %rsi, %rax
; X64-NEXT: movq %r8, %rax
; X64-NEXT: movq %rcx, %rdx
; X64-NEXT: retq
entry:
Expand Down
60 changes: 30 additions & 30 deletions llvm/test/CodeGen/X86/div-rem-pair-recomposition-signed.ll
Original file line number Diff line number Diff line change
Expand Up @@ -181,18 +181,18 @@ define i128 @scalar_i128(i128 %x, i128 %y, ptr %divdst) nounwind {
; X64-NEXT: pushq %r13
; X64-NEXT: pushq %r12
; X64-NEXT: pushq %rbx
; X64-NEXT: movq %r8, %r14
; X64-NEXT: movq %rcx, %rbx
; X64-NEXT: movq %r8, %rbx
; X64-NEXT: movq %rcx, %r14
; X64-NEXT: movq %rdx, %r15
; X64-NEXT: movq %rsi, %r12
; X64-NEXT: movq %rdi, %r13
; X64-NEXT: callq __divti3@PLT
; X64-NEXT: movq %rdx, %rcx
; X64-NEXT: movq %rdx, 8(%r14)
; X64-NEXT: movq %rax, (%r14)
; X64-NEXT: imulq %rax, %rbx
; X64-NEXT: movq %rdx, 8(%rbx)
; X64-NEXT: movq %rax, (%rbx)
; X64-NEXT: imulq %rax, %r14
; X64-NEXT: mulq %r15
; X64-NEXT: addq %rbx, %rdx
; X64-NEXT: addq %r14, %rdx
; X64-NEXT: imulq %r15, %rcx
; X64-NEXT: addq %rdx, %rcx
; X64-NEXT: subq %rax, %r13
Expand Down Expand Up @@ -343,40 +343,40 @@ define <16 x i8> @vector_i128_i8(<16 x i8> %x, <16 x i8> %y, ptr %divdst) nounwi
; X64-NEXT: movd %eax, %xmm2
; X64-NEXT: movsbl -{{[0-9]+}}(%rsp), %eax
; X64-NEXT: idivb -{{[0-9]+}}(%rsp)
; X64-NEXT: movzbl %al, %r8d
; X64-NEXT: movzbl %al, %edi
; X64-NEXT: movsbl -{{[0-9]+}}(%rsp), %eax
; X64-NEXT: idivb -{{[0-9]+}}(%rsp)
; X64-NEXT: movzbl %al, %r9d
; X64-NEXT: movzbl %al, %esi
; X64-NEXT: movsbl -{{[0-9]+}}(%rsp), %eax
; X64-NEXT: idivb -{{[0-9]+}}(%rsp)
; X64-NEXT: movzbl %al, %r10d
; X64-NEXT: movzbl %al, %r8d
; X64-NEXT: movsbl -{{[0-9]+}}(%rsp), %eax
; X64-NEXT: idivb -{{[0-9]+}}(%rsp)
; X64-NEXT: movzbl %al, %r11d
; X64-NEXT: movzbl %al, %r9d
; X64-NEXT: movsbl -{{[0-9]+}}(%rsp), %eax
; X64-NEXT: idivb -{{[0-9]+}}(%rsp)
; X64-NEXT: movzbl %al, %r14d
; X64-NEXT: movzbl %al, %r10d
; X64-NEXT: movsbl -{{[0-9]+}}(%rsp), %eax
; X64-NEXT: idivb -{{[0-9]+}}(%rsp)
; X64-NEXT: movzbl %al, %r15d
; X64-NEXT: movzbl %al, %r11d
; X64-NEXT: movsbl -{{[0-9]+}}(%rsp), %eax
; X64-NEXT: idivb -{{[0-9]+}}(%rsp)
; X64-NEXT: movzbl %al, %r12d
; X64-NEXT: movzbl %al, %ebx
; X64-NEXT: movsbl -{{[0-9]+}}(%rsp), %eax
; X64-NEXT: idivb -{{[0-9]+}}(%rsp)
; X64-NEXT: movzbl %al, %r13d
; X64-NEXT: movzbl %al, %ebp
; X64-NEXT: movsbl -{{[0-9]+}}(%rsp), %eax
; X64-NEXT: idivb -{{[0-9]+}}(%rsp)
; X64-NEXT: movzbl %al, %edi
; X64-NEXT: movzbl %al, %r14d
; X64-NEXT: movsbl -{{[0-9]+}}(%rsp), %eax
; X64-NEXT: idivb -{{[0-9]+}}(%rsp)
; X64-NEXT: movzbl %al, %esi
; X64-NEXT: movzbl %al, %r15d
; X64-NEXT: movsbl -{{[0-9]+}}(%rsp), %eax
; X64-NEXT: idivb -{{[0-9]+}}(%rsp)
; X64-NEXT: movzbl %al, %ebx
; X64-NEXT: movzbl %al, %r12d
; X64-NEXT: movsbl -{{[0-9]+}}(%rsp), %eax
; X64-NEXT: idivb -{{[0-9]+}}(%rsp)
; X64-NEXT: movzbl %al, %ebp
; X64-NEXT: movzbl %al, %r13d
; X64-NEXT: movsbl -{{[0-9]+}}(%rsp), %eax
; X64-NEXT: idivb -{{[0-9]+}}(%rsp)
; X64-NEXT: movzbl %al, %edx
Expand All @@ -385,26 +385,26 @@ define <16 x i8> @vector_i128_i8(<16 x i8> %x, <16 x i8> %y, ptr %divdst) nounwi
; X64-NEXT: movl %eax, %ecx
; X64-NEXT: movsbl -{{[0-9]+}}(%rsp), %eax
; X64-NEXT: idivb -{{[0-9]+}}(%rsp)
; X64-NEXT: movd %r8d, %xmm3
; X64-NEXT: movd %r9d, %xmm4
; X64-NEXT: movd %r10d, %xmm5
; X64-NEXT: movd %r11d, %xmm6
; X64-NEXT: movd %edi, %xmm3
; X64-NEXT: movd %esi, %xmm4
; X64-NEXT: movd %r8d, %xmm5
; X64-NEXT: movd %r9d, %xmm6
; X64-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]
; X64-NEXT: movd %r14d, %xmm2
; X64-NEXT: movd %r10d, %xmm2
; X64-NEXT: punpcklbw {{.*#+}} xmm5 = xmm5[0],xmm4[0],xmm5[1],xmm4[1],xmm5[2],xmm4[2],xmm5[3],xmm4[3],xmm5[4],xmm4[4],xmm5[5],xmm4[5],xmm5[6],xmm4[6],xmm5[7],xmm4[7]
; X64-NEXT: movd %r15d, %xmm4
; X64-NEXT: movd %r11d, %xmm4
; X64-NEXT: punpcklwd {{.*#+}} xmm5 = xmm5[0],xmm3[0],xmm5[1],xmm3[1],xmm5[2],xmm3[2],xmm5[3],xmm3[3]
; X64-NEXT: movd %r12d, %xmm3
; X64-NEXT: movd %ebx, %xmm3
; X64-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm6[0],xmm2[1],xmm6[1],xmm2[2],xmm6[2],xmm2[3],xmm6[3],xmm2[4],xmm6[4],xmm2[5],xmm6[5],xmm2[6],xmm6[6],xmm2[7],xmm6[7]
; X64-NEXT: movd %r13d, %xmm6
; X64-NEXT: movd %ebp, %xmm6
; X64-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm4[0],xmm3[1],xmm4[1],xmm3[2],xmm4[2],xmm3[3],xmm4[3],xmm3[4],xmm4[4],xmm3[5],xmm4[5],xmm3[6],xmm4[6],xmm3[7],xmm4[7]
; X64-NEXT: movd %edi, %xmm4
; X64-NEXT: movd %r14d, %xmm4
; X64-NEXT: punpcklwd {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3]
; X64-NEXT: movd %esi, %xmm2
; X64-NEXT: movd %r15d, %xmm2
; X64-NEXT: punpckldq {{.*#+}} xmm3 = xmm3[0],xmm5[0],xmm3[1],xmm5[1]
; X64-NEXT: movd %ebx, %xmm5
; X64-NEXT: movd %r12d, %xmm5
; X64-NEXT: punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm6[0],xmm4[1],xmm6[1],xmm4[2],xmm6[2],xmm4[3],xmm6[3],xmm4[4],xmm6[4],xmm4[5],xmm6[5],xmm4[6],xmm6[6],xmm4[7],xmm6[7]
; X64-NEXT: movd %ebp, %xmm6
; X64-NEXT: movd %r13d, %xmm6
; X64-NEXT: punpcklbw {{.*#+}} xmm5 = xmm5[0],xmm2[0],xmm5[1],xmm2[1],xmm5[2],xmm2[2],xmm5[3],xmm2[3],xmm5[4],xmm2[4],xmm5[5],xmm2[5],xmm5[6],xmm2[6],xmm5[7],xmm2[7]
; X64-NEXT: movd %edx, %xmm2
; X64-NEXT: punpcklwd {{.*#+}} xmm5 = xmm5[0],xmm4[0],xmm5[1],xmm4[1],xmm5[2],xmm4[2],xmm5[3],xmm4[3]
Expand Down
60 changes: 30 additions & 30 deletions llvm/test/CodeGen/X86/div-rem-pair-recomposition-unsigned.ll
Original file line number Diff line number Diff line change
Expand Up @@ -181,18 +181,18 @@ define i128 @scalar_i128(i128 %x, i128 %y, ptr %divdst) nounwind {
; X64-NEXT: pushq %r13
; X64-NEXT: pushq %r12
; X64-NEXT: pushq %rbx
; X64-NEXT: movq %r8, %r14
; X64-NEXT: movq %rcx, %rbx
; X64-NEXT: movq %r8, %rbx
; X64-NEXT: movq %rcx, %r14
; X64-NEXT: movq %rdx, %r15
; X64-NEXT: movq %rsi, %r12
; X64-NEXT: movq %rdi, %r13
; X64-NEXT: callq __udivti3@PLT
; X64-NEXT: movq %rdx, %rcx
; X64-NEXT: movq %rdx, 8(%r14)
; X64-NEXT: movq %rax, (%r14)
; X64-NEXT: imulq %rax, %rbx
; X64-NEXT: movq %rdx, 8(%rbx)
; X64-NEXT: movq %rax, (%rbx)
; X64-NEXT: imulq %rax, %r14
; X64-NEXT: mulq %r15
; X64-NEXT: addq %rbx, %rdx
; X64-NEXT: addq %r14, %rdx
; X64-NEXT: imulq %r15, %rcx
; X64-NEXT: addq %rdx, %rcx
; X64-NEXT: subq %rax, %r13
Expand Down Expand Up @@ -343,40 +343,40 @@ define <16 x i8> @vector_i128_i8(<16 x i8> %x, <16 x i8> %y, ptr %divdst) nounwi
; X64-NEXT: movd %eax, %xmm2
; X64-NEXT: movzbl -{{[0-9]+}}(%rsp), %eax
; X64-NEXT: divb -{{[0-9]+}}(%rsp)
; X64-NEXT: movzbl %al, %r8d
; X64-NEXT: movzbl %al, %edi
; X64-NEXT: movzbl -{{[0-9]+}}(%rsp), %eax
; X64-NEXT: divb -{{[0-9]+}}(%rsp)
; X64-NEXT: movzbl %al, %r9d
; X64-NEXT: movzbl %al, %esi
; X64-NEXT: movzbl -{{[0-9]+}}(%rsp), %eax
; X64-NEXT: divb -{{[0-9]+}}(%rsp)
; X64-NEXT: movzbl %al, %r10d
; X64-NEXT: movzbl %al, %r8d
; X64-NEXT: movzbl -{{[0-9]+}}(%rsp), %eax
; X64-NEXT: divb -{{[0-9]+}}(%rsp)
; X64-NEXT: movzbl %al, %r11d
; X64-NEXT: movzbl %al, %r9d
; X64-NEXT: movzbl -{{[0-9]+}}(%rsp), %eax
; X64-NEXT: divb -{{[0-9]+}}(%rsp)
; X64-NEXT: movzbl %al, %r14d
; X64-NEXT: movzbl %al, %r10d
; X64-NEXT: movzbl -{{[0-9]+}}(%rsp), %eax
; X64-NEXT: divb -{{[0-9]+}}(%rsp)
; X64-NEXT: movzbl %al, %r15d
; X64-NEXT: movzbl %al, %r11d
; X64-NEXT: movzbl -{{[0-9]+}}(%rsp), %eax
; X64-NEXT: divb -{{[0-9]+}}(%rsp)
; X64-NEXT: movzbl %al, %r12d
; X64-NEXT: movzbl %al, %ebx
; X64-NEXT: movzbl -{{[0-9]+}}(%rsp), %eax
; X64-NEXT: divb -{{[0-9]+}}(%rsp)
; X64-NEXT: movzbl %al, %r13d
; X64-NEXT: movzbl %al, %ebp
; X64-NEXT: movzbl -{{[0-9]+}}(%rsp), %eax
; X64-NEXT: divb -{{[0-9]+}}(%rsp)
; X64-NEXT: movzbl %al, %edi
; X64-NEXT: movzbl %al, %r14d
; X64-NEXT: movzbl -{{[0-9]+}}(%rsp), %eax
; X64-NEXT: divb -{{[0-9]+}}(%rsp)
; X64-NEXT: movzbl %al, %esi
; X64-NEXT: movzbl %al, %r15d
; X64-NEXT: movzbl -{{[0-9]+}}(%rsp), %eax
; X64-NEXT: divb -{{[0-9]+}}(%rsp)
; X64-NEXT: movzbl %al, %ebx
; X64-NEXT: movzbl %al, %r12d
; X64-NEXT: movzbl -{{[0-9]+}}(%rsp), %eax
; X64-NEXT: divb -{{[0-9]+}}(%rsp)
; X64-NEXT: movzbl %al, %ebp
; X64-NEXT: movzbl %al, %r13d
; X64-NEXT: movzbl -{{[0-9]+}}(%rsp), %eax
; X64-NEXT: divb -{{[0-9]+}}(%rsp)
; X64-NEXT: movzbl %al, %edx
Expand All @@ -385,26 +385,26 @@ define <16 x i8> @vector_i128_i8(<16 x i8> %x, <16 x i8> %y, ptr %divdst) nounwi
; X64-NEXT: movl %eax, %ecx
; X64-NEXT: movzbl -{{[0-9]+}}(%rsp), %eax
; X64-NEXT: divb -{{[0-9]+}}(%rsp)
; X64-NEXT: movd %r8d, %xmm3
; X64-NEXT: movd %r9d, %xmm4
; X64-NEXT: movd %r10d, %xmm5
; X64-NEXT: movd %r11d, %xmm6
; X64-NEXT: movd %edi, %xmm3
; X64-NEXT: movd %esi, %xmm4
; X64-NEXT: movd %r8d, %xmm5
; X64-NEXT: movd %r9d, %xmm6
; X64-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]
; X64-NEXT: movd %r14d, %xmm2
; X64-NEXT: movd %r10d, %xmm2
; X64-NEXT: punpcklbw {{.*#+}} xmm5 = xmm5[0],xmm4[0],xmm5[1],xmm4[1],xmm5[2],xmm4[2],xmm5[3],xmm4[3],xmm5[4],xmm4[4],xmm5[5],xmm4[5],xmm5[6],xmm4[6],xmm5[7],xmm4[7]
; X64-NEXT: movd %r15d, %xmm4
; X64-NEXT: movd %r11d, %xmm4
; X64-NEXT: punpcklwd {{.*#+}} xmm5 = xmm5[0],xmm3[0],xmm5[1],xmm3[1],xmm5[2],xmm3[2],xmm5[3],xmm3[3]
; X64-NEXT: movd %r12d, %xmm3
; X64-NEXT: movd %ebx, %xmm3
; X64-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm6[0],xmm2[1],xmm6[1],xmm2[2],xmm6[2],xmm2[3],xmm6[3],xmm2[4],xmm6[4],xmm2[5],xmm6[5],xmm2[6],xmm6[6],xmm2[7],xmm6[7]
; X64-NEXT: movd %r13d, %xmm6
; X64-NEXT: movd %ebp, %xmm6
; X64-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm4[0],xmm3[1],xmm4[1],xmm3[2],xmm4[2],xmm3[3],xmm4[3],xmm3[4],xmm4[4],xmm3[5],xmm4[5],xmm3[6],xmm4[6],xmm3[7],xmm4[7]
; X64-NEXT: movd %edi, %xmm4
; X64-NEXT: movd %r14d, %xmm4
; X64-NEXT: punpcklwd {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3]
; X64-NEXT: movd %esi, %xmm2
; X64-NEXT: movd %r15d, %xmm2
; X64-NEXT: punpckldq {{.*#+}} xmm3 = xmm3[0],xmm5[0],xmm3[1],xmm5[1]
; X64-NEXT: movd %ebx, %xmm5
; X64-NEXT: movd %r12d, %xmm5
; X64-NEXT: punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm6[0],xmm4[1],xmm6[1],xmm4[2],xmm6[2],xmm4[3],xmm6[3],xmm4[4],xmm6[4],xmm4[5],xmm6[5],xmm4[6],xmm6[6],xmm4[7],xmm6[7]
; X64-NEXT: movd %ebp, %xmm6
; X64-NEXT: movd %r13d, %xmm6
; X64-NEXT: punpcklbw {{.*#+}} xmm5 = xmm5[0],xmm2[0],xmm5[1],xmm2[1],xmm5[2],xmm2[2],xmm5[3],xmm2[3],xmm5[4],xmm2[4],xmm5[5],xmm2[5],xmm5[6],xmm2[6],xmm5[7],xmm2[7]
; X64-NEXT: movd %edx, %xmm2
; X64-NEXT: punpcklwd {{.*#+}} xmm5 = xmm5[0],xmm4[0],xmm5[1],xmm4[1],xmm5[2],xmm4[2],xmm5[3],xmm4[3]
Expand Down
144 changes: 72 additions & 72 deletions llvm/test/CodeGen/X86/divmod128.ll
Original file line number Diff line number Diff line change
Expand Up @@ -479,21 +479,21 @@ define i128 @udiv_i128_3(i128 %x) nounwind {
; WIN64: # %bb.0: # %entry
; WIN64-NEXT: movq %rdx, %r8
; WIN64-NEXT: movq %rcx, %r9
; WIN64-NEXT: addq %rdx, %rcx
; WIN64-NEXT: adcq $0, %rcx
; WIN64-NEXT: addq %rdx, %r9
; WIN64-NEXT: adcq $0, %r9
; WIN64-NEXT: movabsq $-6148914691236517205, %r10 # imm = 0xAAAAAAAAAAAAAAAB
; WIN64-NEXT: movq %rcx, %rax
; WIN64-NEXT: movq %r9, %rax
; WIN64-NEXT: mulq %r10
; WIN64-NEXT: shrq %rdx
; WIN64-NEXT: leaq (%rdx,%rdx,2), %rax
; WIN64-NEXT: subq %rax, %rcx
; WIN64-NEXT: subq %rcx, %r9
; WIN64-NEXT: subq %rax, %r9
; WIN64-NEXT: subq %r9, %rcx
; WIN64-NEXT: sbbq $0, %r8
; WIN64-NEXT: movabsq $-6148914691236517206, %rcx # imm = 0xAAAAAAAAAAAAAAAA
; WIN64-NEXT: imulq %r9, %rcx
; WIN64-NEXT: movq %r9, %rax
; WIN64-NEXT: movabsq $-6148914691236517206, %r9 # imm = 0xAAAAAAAAAAAAAAAA
; WIN64-NEXT: imulq %rcx, %r9
; WIN64-NEXT: movq %rcx, %rax
; WIN64-NEXT: mulq %r10
; WIN64-NEXT: addq %rcx, %rdx
; WIN64-NEXT: addq %r9, %rdx
; WIN64-NEXT: imulq %r10, %r8
; WIN64-NEXT: addq %r8, %rdx
; WIN64-NEXT: retq
Expand Down Expand Up @@ -529,21 +529,21 @@ define i128 @udiv_i128_5(i128 %x) nounwind {
; WIN64: # %bb.0: # %entry
; WIN64-NEXT: movq %rdx, %r8
; WIN64-NEXT: movq %rcx, %r9
; WIN64-NEXT: addq %rdx, %rcx
; WIN64-NEXT: adcq $0, %rcx
; WIN64-NEXT: addq %rdx, %r9
; WIN64-NEXT: adcq $0, %r9
; WIN64-NEXT: movabsq $-3689348814741910323, %r10 # imm = 0xCCCCCCCCCCCCCCCD
; WIN64-NEXT: movq %rcx, %rax
; WIN64-NEXT: movq %r9, %rax
; WIN64-NEXT: mulq %r10
; WIN64-NEXT: shrq $2, %rdx
; WIN64-NEXT: leaq (%rdx,%rdx,4), %rax
; WIN64-NEXT: subq %rax, %rcx
; WIN64-NEXT: subq %rcx, %r9
; WIN64-NEXT: subq %rax, %r9
; WIN64-NEXT: subq %r9, %rcx
; WIN64-NEXT: sbbq $0, %r8
; WIN64-NEXT: movabsq $-3689348814741910324, %rcx # imm = 0xCCCCCCCCCCCCCCCC
; WIN64-NEXT: imulq %r9, %rcx
; WIN64-NEXT: movq %r9, %rax
; WIN64-NEXT: movabsq $-3689348814741910324, %r9 # imm = 0xCCCCCCCCCCCCCCCC
; WIN64-NEXT: imulq %rcx, %r9
; WIN64-NEXT: movq %rcx, %rax
; WIN64-NEXT: mulq %r10
; WIN64-NEXT: addq %rcx, %rdx
; WIN64-NEXT: addq %r9, %rdx
; WIN64-NEXT: imulq %r10, %r8
; WIN64-NEXT: addq %r8, %rdx
; WIN64-NEXT: retq
Expand All @@ -567,37 +567,37 @@ define i128 @udiv_i128_15(i128 %x) nounwind {
; X86-64-NEXT: subq %rax, %rcx
; X86-64-NEXT: subq %rcx, %rdi
; X86-64-NEXT: sbbq $0, %rsi
; X86-64-NEXT: movabsq $-1229782938247303442, %r8 # imm = 0xEEEEEEEEEEEEEEEE
; X86-64-NEXT: imulq %rdi, %r8
; X86-64-NEXT: movabsq $-1229782938247303441, %rcx # imm = 0xEEEEEEEEEEEEEEEF
; X86-64-NEXT: movabsq $-1229782938247303442, %rcx # imm = 0xEEEEEEEEEEEEEEEE
; X86-64-NEXT: imulq %rdi, %rcx
; X86-64-NEXT: movabsq $-1229782938247303441, %r8 # imm = 0xEEEEEEEEEEEEEEEF
; X86-64-NEXT: movq %rdi, %rax
; X86-64-NEXT: mulq %rcx
; X86-64-NEXT: addq %r8, %rdx
; X86-64-NEXT: imulq %rsi, %rcx
; X86-64-NEXT: mulq %r8
; X86-64-NEXT: addq %rcx, %rdx
; X86-64-NEXT: imulq %rsi, %r8
; X86-64-NEXT: addq %r8, %rdx
; X86-64-NEXT: retq
;
; WIN64-LABEL: udiv_i128_15:
; WIN64: # %bb.0: # %entry
; WIN64-NEXT: movq %rdx, %r8
; WIN64-NEXT: movq %rcx, %r9
; WIN64-NEXT: addq %rdx, %rcx
; WIN64-NEXT: adcq $0, %rcx
; WIN64-NEXT: addq %rdx, %r9
; WIN64-NEXT: adcq $0, %r9
; WIN64-NEXT: movabsq $-8608480567731124087, %rdx # imm = 0x8888888888888889
; WIN64-NEXT: movq %rcx, %rax
; WIN64-NEXT: movq %r9, %rax
; WIN64-NEXT: mulq %rdx
; WIN64-NEXT: shrq $3, %rdx
; WIN64-NEXT: leaq (%rdx,%rdx,4), %rax
; WIN64-NEXT: leaq (%rax,%rax,2), %rax
; WIN64-NEXT: subq %rax, %rcx
; WIN64-NEXT: subq %rcx, %r9
; WIN64-NEXT: subq %rax, %r9
; WIN64-NEXT: subq %r9, %rcx
; WIN64-NEXT: sbbq $0, %r8
; WIN64-NEXT: movabsq $-1229782938247303442, %rcx # imm = 0xEEEEEEEEEEEEEEEE
; WIN64-NEXT: imulq %r9, %rcx
; WIN64-NEXT: movabsq $-1229782938247303442, %r9 # imm = 0xEEEEEEEEEEEEEEEE
; WIN64-NEXT: imulq %rcx, %r9
; WIN64-NEXT: movabsq $-1229782938247303441, %r10 # imm = 0xEEEEEEEEEEEEEEEF
; WIN64-NEXT: movq %r9, %rax
; WIN64-NEXT: movq %rcx, %rax
; WIN64-NEXT: mulq %r10
; WIN64-NEXT: addq %rcx, %rdx
; WIN64-NEXT: addq %r9, %rdx
; WIN64-NEXT: imulq %r10, %r8
; WIN64-NEXT: addq %r8, %rdx
; WIN64-NEXT: retq
Expand Down Expand Up @@ -635,23 +635,23 @@ define i128 @udiv_i128_17(i128 %x) nounwind {
; WIN64: # %bb.0: # %entry
; WIN64-NEXT: movq %rdx, %r8
; WIN64-NEXT: movq %rcx, %r9
; WIN64-NEXT: addq %rdx, %rcx
; WIN64-NEXT: adcq $0, %rcx
; WIN64-NEXT: addq %rdx, %r9
; WIN64-NEXT: adcq $0, %r9
; WIN64-NEXT: movabsq $-1085102592571150095, %r10 # imm = 0xF0F0F0F0F0F0F0F1
; WIN64-NEXT: movq %rcx, %rax
; WIN64-NEXT: movq %r9, %rax
; WIN64-NEXT: mulq %r10
; WIN64-NEXT: movq %rdx, %rax
; WIN64-NEXT: andq $-16, %rax
; WIN64-NEXT: shrq $4, %rdx
; WIN64-NEXT: addq %rax, %rdx
; WIN64-NEXT: subq %rdx, %rcx
; WIN64-NEXT: subq %rcx, %r9
; WIN64-NEXT: subq %rdx, %r9
; WIN64-NEXT: subq %r9, %rcx
; WIN64-NEXT: sbbq $0, %r8
; WIN64-NEXT: movabsq $-1085102592571150096, %rcx # imm = 0xF0F0F0F0F0F0F0F0
; WIN64-NEXT: imulq %r9, %rcx
; WIN64-NEXT: movq %r9, %rax
; WIN64-NEXT: movabsq $-1085102592571150096, %r9 # imm = 0xF0F0F0F0F0F0F0F0
; WIN64-NEXT: imulq %rcx, %r9
; WIN64-NEXT: movq %rcx, %rax
; WIN64-NEXT: mulq %r10
; WIN64-NEXT: addq %rcx, %rdx
; WIN64-NEXT: addq %r9, %rdx
; WIN64-NEXT: imulq %r10, %r8
; WIN64-NEXT: addq %r8, %rdx
; WIN64-NEXT: retq
Expand All @@ -677,14 +677,14 @@ define i128 @udiv_i128_255(i128 %x) nounwind {
; X86-64-NEXT: adcq %rdx, %rax
; X86-64-NEXT: subq %rax, %rdi
; X86-64-NEXT: sbbq $0, %rsi
; X86-64-NEXT: movabsq $-72340172838076674, %r8 # imm = 0xFEFEFEFEFEFEFEFE
; X86-64-NEXT: imulq %rdi, %r8
; X86-64-NEXT: movabsq $-72340172838076673, %rcx # imm = 0xFEFEFEFEFEFEFEFF
; X86-64-NEXT: movabsq $-72340172838076674, %rcx # imm = 0xFEFEFEFEFEFEFEFE
; X86-64-NEXT: imulq %rdi, %rcx
; X86-64-NEXT: movabsq $-72340172838076673, %r8 # imm = 0xFEFEFEFEFEFEFEFF
; X86-64-NEXT: movq %rdi, %rax
; X86-64-NEXT: mulq %rcx
; X86-64-NEXT: addq %r8, %rdx
; X86-64-NEXT: imulq %rsi, %rcx
; X86-64-NEXT: mulq %r8
; X86-64-NEXT: addq %rcx, %rdx
; X86-64-NEXT: imulq %rsi, %r8
; X86-64-NEXT: addq %r8, %rdx
; X86-64-NEXT: retq
;
; WIN64-LABEL: udiv_i128_255:
Expand Down Expand Up @@ -747,23 +747,23 @@ define i128 @udiv_i128_257(i128 %x) nounwind {
; WIN64: # %bb.0: # %entry
; WIN64-NEXT: movq %rdx, %r8
; WIN64-NEXT: movq %rcx, %r9
; WIN64-NEXT: addq %rdx, %rcx
; WIN64-NEXT: adcq $0, %rcx
; WIN64-NEXT: addq %rdx, %r9
; WIN64-NEXT: adcq $0, %r9
; WIN64-NEXT: movabsq $-71777214294589695, %r10 # imm = 0xFF00FF00FF00FF01
; WIN64-NEXT: movq %rcx, %rax
; WIN64-NEXT: movq %r9, %rax
; WIN64-NEXT: mulq %r10
; WIN64-NEXT: movq %rdx, %rax
; WIN64-NEXT: andq $-256, %rax
; WIN64-NEXT: shrq $8, %rdx
; WIN64-NEXT: addq %rax, %rdx
; WIN64-NEXT: subq %rdx, %rcx
; WIN64-NEXT: subq %rcx, %r9
; WIN64-NEXT: subq %rdx, %r9
; WIN64-NEXT: subq %r9, %rcx
; WIN64-NEXT: sbbq $0, %r8
; WIN64-NEXT: movabsq $-71777214294589696, %rcx # imm = 0xFF00FF00FF00FF00
; WIN64-NEXT: imulq %r9, %rcx
; WIN64-NEXT: movq %r9, %rax
; WIN64-NEXT: movabsq $-71777214294589696, %r9 # imm = 0xFF00FF00FF00FF00
; WIN64-NEXT: imulq %rcx, %r9
; WIN64-NEXT: movq %rcx, %rax
; WIN64-NEXT: mulq %r10
; WIN64-NEXT: addq %rcx, %rdx
; WIN64-NEXT: addq %r9, %rdx
; WIN64-NEXT: imulq %r10, %r8
; WIN64-NEXT: addq %r8, %rdx
; WIN64-NEXT: retq
Expand All @@ -789,14 +789,14 @@ define i128 @udiv_i128_65535(i128 %x) nounwind {
; X86-64-NEXT: adcq %rdx, %rax
; X86-64-NEXT: subq %rax, %rdi
; X86-64-NEXT: sbbq $0, %rsi
; X86-64-NEXT: movabsq $-281479271743490, %r8 # imm = 0xFFFEFFFEFFFEFFFE
; X86-64-NEXT: imulq %rdi, %r8
; X86-64-NEXT: movabsq $-281479271743489, %rcx # imm = 0xFFFEFFFEFFFEFFFF
; X86-64-NEXT: movabsq $-281479271743490, %rcx # imm = 0xFFFEFFFEFFFEFFFE
; X86-64-NEXT: imulq %rdi, %rcx
; X86-64-NEXT: movabsq $-281479271743489, %r8 # imm = 0xFFFEFFFEFFFEFFFF
; X86-64-NEXT: movq %rdi, %rax
; X86-64-NEXT: mulq %rcx
; X86-64-NEXT: addq %r8, %rdx
; X86-64-NEXT: imulq %rsi, %rcx
; X86-64-NEXT: mulq %r8
; X86-64-NEXT: addq %rcx, %rdx
; X86-64-NEXT: imulq %rsi, %r8
; X86-64-NEXT: addq %r8, %rdx
; X86-64-NEXT: retq
;
; WIN64-LABEL: udiv_i128_65535:
Expand Down Expand Up @@ -859,23 +859,23 @@ define i128 @udiv_i128_65537(i128 %x) nounwind {
; WIN64: # %bb.0: # %entry
; WIN64-NEXT: movq %rdx, %r8
; WIN64-NEXT: movq %rcx, %r9
; WIN64-NEXT: addq %rdx, %rcx
; WIN64-NEXT: adcq $0, %rcx
; WIN64-NEXT: addq %rdx, %r9
; WIN64-NEXT: adcq $0, %r9
; WIN64-NEXT: movabsq $-281470681808895, %r10 # imm = 0xFFFF0000FFFF0001
; WIN64-NEXT: movq %rcx, %rax
; WIN64-NEXT: movq %r9, %rax
; WIN64-NEXT: mulq %r10
; WIN64-NEXT: movq %rdx, %rax
; WIN64-NEXT: andq $-65536, %rax # imm = 0xFFFF0000
; WIN64-NEXT: shrq $16, %rdx
; WIN64-NEXT: addq %rax, %rdx
; WIN64-NEXT: subq %rdx, %rcx
; WIN64-NEXT: subq %rcx, %r9
; WIN64-NEXT: subq %rdx, %r9
; WIN64-NEXT: subq %r9, %rcx
; WIN64-NEXT: sbbq $0, %r8
; WIN64-NEXT: movabsq $-281470681808896, %rcx # imm = 0xFFFF0000FFFF0000
; WIN64-NEXT: imulq %r9, %rcx
; WIN64-NEXT: movq %r9, %rax
; WIN64-NEXT: movabsq $-281470681808896, %r9 # imm = 0xFFFF0000FFFF0000
; WIN64-NEXT: imulq %rcx, %r9
; WIN64-NEXT: movq %rcx, %rax
; WIN64-NEXT: mulq %r10
; WIN64-NEXT: addq %rcx, %rdx
; WIN64-NEXT: addq %r9, %rdx
; WIN64-NEXT: imulq %r10, %r8
; WIN64-NEXT: addq %r8, %rdx
; WIN64-NEXT: retq
Expand Down
200 changes: 100 additions & 100 deletions llvm/test/CodeGen/X86/extract-bits.ll
Original file line number Diff line number Diff line change
Expand Up @@ -1921,58 +1921,58 @@ define i32 @bextr64_32_a1_trunc_extrause(i64 %val, i64 %numskipbits, i32 %numlow
;
; X64-NOBMI-LABEL: bextr64_32_a1_trunc_extrause:
; X64-NOBMI: # %bb.0:
; X64-NOBMI-NEXT: pushq %rbp
; X64-NOBMI-NEXT: pushq %r14
; X64-NOBMI-NEXT: pushq %rbx
; X64-NOBMI-NEXT: pushq %rax
; X64-NOBMI-NEXT: movl %edx, %ebp
; X64-NOBMI-NEXT: movl %edx, %ebx
; X64-NOBMI-NEXT: movq %rsi, %rcx
; X64-NOBMI-NEXT: movq %rdi, %rbx
; X64-NOBMI-NEXT: movq %rdi, %r14
; X64-NOBMI-NEXT: # kill: def $cl killed $cl killed $rcx
; X64-NOBMI-NEXT: shrq %cl, %rbx
; X64-NOBMI-NEXT: movl %ebx, %edi
; X64-NOBMI-NEXT: shrq %cl, %r14
; X64-NOBMI-NEXT: movl %r14d, %edi
; X64-NOBMI-NEXT: callq use32@PLT
; X64-NOBMI-NEXT: movl $1, %eax
; X64-NOBMI-NEXT: movl %ebp, %ecx
; X64-NOBMI-NEXT: movl %ebx, %ecx
; X64-NOBMI-NEXT: shll %cl, %eax
; X64-NOBMI-NEXT: decl %eax
; X64-NOBMI-NEXT: andl %ebx, %eax
; X64-NOBMI-NEXT: andl %r14d, %eax
; X64-NOBMI-NEXT: addq $8, %rsp
; X64-NOBMI-NEXT: popq %rbx
; X64-NOBMI-NEXT: popq %rbp
; X64-NOBMI-NEXT: popq %r14
; X64-NOBMI-NEXT: retq
;
; X64-BMI1-LABEL: bextr64_32_a1_trunc_extrause:
; X64-BMI1: # %bb.0:
; X64-BMI1-NEXT: pushq %rbp
; X64-BMI1-NEXT: pushq %r14
; X64-BMI1-NEXT: pushq %rbx
; X64-BMI1-NEXT: pushq %rax
; X64-BMI1-NEXT: movl %edx, %ebp
; X64-BMI1-NEXT: movl %edx, %ebx
; X64-BMI1-NEXT: movq %rsi, %rcx
; X64-BMI1-NEXT: movq %rdi, %rbx
; X64-BMI1-NEXT: movq %rdi, %r14
; X64-BMI1-NEXT: # kill: def $cl killed $cl killed $rcx
; X64-BMI1-NEXT: shrq %cl, %rbx
; X64-BMI1-NEXT: movl %ebx, %edi
; X64-BMI1-NEXT: shrq %cl, %r14
; X64-BMI1-NEXT: movl %r14d, %edi
; X64-BMI1-NEXT: callq use32@PLT
; X64-BMI1-NEXT: shll $8, %ebp
; X64-BMI1-NEXT: bextrl %ebp, %ebx, %eax
; X64-BMI1-NEXT: shll $8, %ebx
; X64-BMI1-NEXT: bextrl %ebx, %r14d, %eax
; X64-BMI1-NEXT: addq $8, %rsp
; X64-BMI1-NEXT: popq %rbx
; X64-BMI1-NEXT: popq %rbp
; X64-BMI1-NEXT: popq %r14
; X64-BMI1-NEXT: retq
;
; X64-BMI2-LABEL: bextr64_32_a1_trunc_extrause:
; X64-BMI2: # %bb.0:
; X64-BMI2-NEXT: pushq %rbp
; X64-BMI2-NEXT: pushq %r14
; X64-BMI2-NEXT: pushq %rbx
; X64-BMI2-NEXT: pushq %rax
; X64-BMI2-NEXT: movl %edx, %ebp
; X64-BMI2-NEXT: shrxq %rsi, %rdi, %rbx
; X64-BMI2-NEXT: movl %ebx, %edi
; X64-BMI2-NEXT: movl %edx, %ebx
; X64-BMI2-NEXT: shrxq %rsi, %rdi, %r14
; X64-BMI2-NEXT: movl %r14d, %edi
; X64-BMI2-NEXT: callq use32@PLT
; X64-BMI2-NEXT: bzhil %ebp, %ebx, %eax
; X64-BMI2-NEXT: bzhil %ebx, %r14d, %eax
; X64-BMI2-NEXT: addq $8, %rsp
; X64-BMI2-NEXT: popq %rbx
; X64-BMI2-NEXT: popq %rbp
; X64-BMI2-NEXT: popq %r14
; X64-BMI2-NEXT: retq
%shifted = lshr i64 %val, %numskipbits
%truncshifted = trunc i64 %shifted to i32
Expand Down Expand Up @@ -4782,20 +4782,20 @@ define i32 @bextr32_c5_skipextrauses(i32 %val, i32 %numskipbits, i32 %numlowbits
; X64-NOBMI-NEXT: pushq %rbp
; X64-NOBMI-NEXT: pushq %r14
; X64-NOBMI-NEXT: pushq %rbx
; X64-NOBMI-NEXT: movl %esi, %r14d
; X64-NOBMI-NEXT: movl %esi, %ebx
; X64-NOBMI-NEXT: movl %edi, %ebp
; X64-NOBMI-NEXT: movl %r14d, %ecx
; X64-NOBMI-NEXT: movl %ebx, %ecx
; X64-NOBMI-NEXT: shrl %cl, %ebp
; X64-NOBMI-NEXT: negb %dl
; X64-NOBMI-NEXT: movl $-1, %ebx
; X64-NOBMI-NEXT: movl $-1, %r14d
; X64-NOBMI-NEXT: movl %edx, %ecx
; X64-NOBMI-NEXT: shrl %cl, %ebx
; X64-NOBMI-NEXT: movl %ebx, %edi
; X64-NOBMI-NEXT: callq use32@PLT
; X64-NOBMI-NEXT: andl %ebp, %ebx
; X64-NOBMI-NEXT: shrl %cl, %r14d
; X64-NOBMI-NEXT: movl %r14d, %edi
; X64-NOBMI-NEXT: callq use32@PLT
; X64-NOBMI-NEXT: movl %ebx, %eax
; X64-NOBMI-NEXT: andl %ebp, %r14d
; X64-NOBMI-NEXT: movl %ebx, %edi
; X64-NOBMI-NEXT: callq use32@PLT
; X64-NOBMI-NEXT: movl %r14d, %eax
; X64-NOBMI-NEXT: popq %rbx
; X64-NOBMI-NEXT: popq %r14
; X64-NOBMI-NEXT: popq %rbp
Expand All @@ -4806,20 +4806,20 @@ define i32 @bextr32_c5_skipextrauses(i32 %val, i32 %numskipbits, i32 %numlowbits
; X64-BMI1-NEXT: pushq %rbp
; X64-BMI1-NEXT: pushq %r14
; X64-BMI1-NEXT: pushq %rbx
; X64-BMI1-NEXT: movl %esi, %r14d
; X64-BMI1-NEXT: movl %esi, %ebx
; X64-BMI1-NEXT: movl %edi, %ebp
; X64-BMI1-NEXT: movl %r14d, %ecx
; X64-BMI1-NEXT: movl %ebx, %ecx
; X64-BMI1-NEXT: shrl %cl, %ebp
; X64-BMI1-NEXT: negb %dl
; X64-BMI1-NEXT: movl $-1, %ebx
; X64-BMI1-NEXT: movl $-1, %r14d
; X64-BMI1-NEXT: movl %edx, %ecx
; X64-BMI1-NEXT: shrl %cl, %ebx
; X64-BMI1-NEXT: movl %ebx, %edi
; X64-BMI1-NEXT: callq use32@PLT
; X64-BMI1-NEXT: andl %ebp, %ebx
; X64-BMI1-NEXT: shrl %cl, %r14d
; X64-BMI1-NEXT: movl %r14d, %edi
; X64-BMI1-NEXT: callq use32@PLT
; X64-BMI1-NEXT: movl %ebx, %eax
; X64-BMI1-NEXT: andl %ebp, %r14d
; X64-BMI1-NEXT: movl %ebx, %edi
; X64-BMI1-NEXT: callq use32@PLT
; X64-BMI1-NEXT: movl %r14d, %eax
; X64-BMI1-NEXT: popq %rbx
; X64-BMI1-NEXT: popq %r14
; X64-BMI1-NEXT: popq %rbp
Expand Down Expand Up @@ -5000,17 +5000,17 @@ define i64 @bextr64_c0(i64 %val, i64 %numskipbits, i64 %numlowbits) nounwind {
; X64-NOBMI-NEXT: pushq %rbx
; X64-NOBMI-NEXT: pushq %rax
; X64-NOBMI-NEXT: movq %rsi, %rcx
; X64-NOBMI-NEXT: movq %rdi, %r14
; X64-NOBMI-NEXT: movq %rdi, %rbx
; X64-NOBMI-NEXT: # kill: def $cl killed $cl killed $rcx
; X64-NOBMI-NEXT: shrq %cl, %r14
; X64-NOBMI-NEXT: shrq %cl, %rbx
; X64-NOBMI-NEXT: negb %dl
; X64-NOBMI-NEXT: movq $-1, %rbx
; X64-NOBMI-NEXT: movq $-1, %r14
; X64-NOBMI-NEXT: movl %edx, %ecx
; X64-NOBMI-NEXT: shrq %cl, %rbx
; X64-NOBMI-NEXT: movq %rbx, %rdi
; X64-NOBMI-NEXT: shrq %cl, %r14
; X64-NOBMI-NEXT: movq %r14, %rdi
; X64-NOBMI-NEXT: callq use64@PLT
; X64-NOBMI-NEXT: andq %r14, %rbx
; X64-NOBMI-NEXT: movq %rbx, %rax
; X64-NOBMI-NEXT: andq %rbx, %r14
; X64-NOBMI-NEXT: movq %r14, %rax
; X64-NOBMI-NEXT: addq $8, %rsp
; X64-NOBMI-NEXT: popq %rbx
; X64-NOBMI-NEXT: popq %r14
Expand All @@ -5022,17 +5022,17 @@ define i64 @bextr64_c0(i64 %val, i64 %numskipbits, i64 %numlowbits) nounwind {
; X64-BMI1-NEXT: pushq %rbx
; X64-BMI1-NEXT: pushq %rax
; X64-BMI1-NEXT: movq %rsi, %rcx
; X64-BMI1-NEXT: movq %rdi, %r14
; X64-BMI1-NEXT: movq %rdi, %rbx
; X64-BMI1-NEXT: # kill: def $cl killed $cl killed $rcx
; X64-BMI1-NEXT: shrq %cl, %r14
; X64-BMI1-NEXT: shrq %cl, %rbx
; X64-BMI1-NEXT: negb %dl
; X64-BMI1-NEXT: movq $-1, %rbx
; X64-BMI1-NEXT: movq $-1, %r14
; X64-BMI1-NEXT: movl %edx, %ecx
; X64-BMI1-NEXT: shrq %cl, %rbx
; X64-BMI1-NEXT: movq %rbx, %rdi
; X64-BMI1-NEXT: shrq %cl, %r14
; X64-BMI1-NEXT: movq %r14, %rdi
; X64-BMI1-NEXT: callq use64@PLT
; X64-BMI1-NEXT: andq %r14, %rbx
; X64-BMI1-NEXT: movq %rbx, %rax
; X64-BMI1-NEXT: andq %rbx, %r14
; X64-BMI1-NEXT: movq %r14, %rax
; X64-BMI1-NEXT: addq $8, %rsp
; X64-BMI1-NEXT: popq %rbx
; X64-BMI1-NEXT: popq %r14
Expand Down Expand Up @@ -5206,17 +5206,17 @@ define i64 @bextr64_c1_indexzext(i64 %val, i8 %numskipbits, i8 %numlowbits) noun
; X64-NOBMI-NEXT: pushq %rbx
; X64-NOBMI-NEXT: pushq %rax
; X64-NOBMI-NEXT: movl %esi, %ecx
; X64-NOBMI-NEXT: movq %rdi, %r14
; X64-NOBMI-NEXT: movq %rdi, %rbx
; X64-NOBMI-NEXT: # kill: def $cl killed $cl killed $ecx
; X64-NOBMI-NEXT: shrq %cl, %r14
; X64-NOBMI-NEXT: shrq %cl, %rbx
; X64-NOBMI-NEXT: negb %dl
; X64-NOBMI-NEXT: movq $-1, %rbx
; X64-NOBMI-NEXT: movq $-1, %r14
; X64-NOBMI-NEXT: movl %edx, %ecx
; X64-NOBMI-NEXT: shrq %cl, %rbx
; X64-NOBMI-NEXT: movq %rbx, %rdi
; X64-NOBMI-NEXT: shrq %cl, %r14
; X64-NOBMI-NEXT: movq %r14, %rdi
; X64-NOBMI-NEXT: callq use64@PLT
; X64-NOBMI-NEXT: andq %r14, %rbx
; X64-NOBMI-NEXT: movq %rbx, %rax
; X64-NOBMI-NEXT: andq %rbx, %r14
; X64-NOBMI-NEXT: movq %r14, %rax
; X64-NOBMI-NEXT: addq $8, %rsp
; X64-NOBMI-NEXT: popq %rbx
; X64-NOBMI-NEXT: popq %r14
Expand All @@ -5228,17 +5228,17 @@ define i64 @bextr64_c1_indexzext(i64 %val, i8 %numskipbits, i8 %numlowbits) noun
; X64-BMI1-NEXT: pushq %rbx
; X64-BMI1-NEXT: pushq %rax
; X64-BMI1-NEXT: movl %esi, %ecx
; X64-BMI1-NEXT: movq %rdi, %r14
; X64-BMI1-NEXT: movq %rdi, %rbx
; X64-BMI1-NEXT: # kill: def $cl killed $cl killed $ecx
; X64-BMI1-NEXT: shrq %cl, %r14
; X64-BMI1-NEXT: shrq %cl, %rbx
; X64-BMI1-NEXT: negb %dl
; X64-BMI1-NEXT: movq $-1, %rbx
; X64-BMI1-NEXT: movq $-1, %r14
; X64-BMI1-NEXT: movl %edx, %ecx
; X64-BMI1-NEXT: shrq %cl, %rbx
; X64-BMI1-NEXT: movq %rbx, %rdi
; X64-BMI1-NEXT: shrq %cl, %r14
; X64-BMI1-NEXT: movq %r14, %rdi
; X64-BMI1-NEXT: callq use64@PLT
; X64-BMI1-NEXT: andq %r14, %rbx
; X64-BMI1-NEXT: movq %rbx, %rax
; X64-BMI1-NEXT: andq %rbx, %r14
; X64-BMI1-NEXT: movq %r14, %rax
; X64-BMI1-NEXT: addq $8, %rsp
; X64-BMI1-NEXT: popq %rbx
; X64-BMI1-NEXT: popq %r14
Expand Down Expand Up @@ -5838,17 +5838,17 @@ define i64 @bextr64_c4_commutative(i64 %val, i64 %numskipbits, i64 %numlowbits)
; X64-NOBMI-NEXT: pushq %rbx
; X64-NOBMI-NEXT: pushq %rax
; X64-NOBMI-NEXT: movq %rsi, %rcx
; X64-NOBMI-NEXT: movq %rdi, %r14
; X64-NOBMI-NEXT: movq %rdi, %rbx
; X64-NOBMI-NEXT: # kill: def $cl killed $cl killed $rcx
; X64-NOBMI-NEXT: shrq %cl, %r14
; X64-NOBMI-NEXT: shrq %cl, %rbx
; X64-NOBMI-NEXT: negb %dl
; X64-NOBMI-NEXT: movq $-1, %rbx
; X64-NOBMI-NEXT: movq $-1, %r14
; X64-NOBMI-NEXT: movl %edx, %ecx
; X64-NOBMI-NEXT: shrq %cl, %rbx
; X64-NOBMI-NEXT: movq %rbx, %rdi
; X64-NOBMI-NEXT: shrq %cl, %r14
; X64-NOBMI-NEXT: movq %r14, %rdi
; X64-NOBMI-NEXT: callq use64@PLT
; X64-NOBMI-NEXT: andq %r14, %rbx
; X64-NOBMI-NEXT: movq %rbx, %rax
; X64-NOBMI-NEXT: andq %rbx, %r14
; X64-NOBMI-NEXT: movq %r14, %rax
; X64-NOBMI-NEXT: addq $8, %rsp
; X64-NOBMI-NEXT: popq %rbx
; X64-NOBMI-NEXT: popq %r14
Expand All @@ -5860,17 +5860,17 @@ define i64 @bextr64_c4_commutative(i64 %val, i64 %numskipbits, i64 %numlowbits)
; X64-BMI1-NEXT: pushq %rbx
; X64-BMI1-NEXT: pushq %rax
; X64-BMI1-NEXT: movq %rsi, %rcx
; X64-BMI1-NEXT: movq %rdi, %r14
; X64-BMI1-NEXT: movq %rdi, %rbx
; X64-BMI1-NEXT: # kill: def $cl killed $cl killed $rcx
; X64-BMI1-NEXT: shrq %cl, %r14
; X64-BMI1-NEXT: shrq %cl, %rbx
; X64-BMI1-NEXT: negb %dl
; X64-BMI1-NEXT: movq $-1, %rbx
; X64-BMI1-NEXT: movq $-1, %r14
; X64-BMI1-NEXT: movl %edx, %ecx
; X64-BMI1-NEXT: shrq %cl, %rbx
; X64-BMI1-NEXT: movq %rbx, %rdi
; X64-BMI1-NEXT: shrq %cl, %r14
; X64-BMI1-NEXT: movq %r14, %rdi
; X64-BMI1-NEXT: callq use64@PLT
; X64-BMI1-NEXT: andq %r14, %rbx
; X64-BMI1-NEXT: movq %rbx, %rax
; X64-BMI1-NEXT: andq %rbx, %r14
; X64-BMI1-NEXT: movq %r14, %rax
; X64-BMI1-NEXT: addq $8, %rsp
; X64-BMI1-NEXT: popq %rbx
; X64-BMI1-NEXT: popq %r14
Expand Down Expand Up @@ -6058,20 +6058,20 @@ define i64 @bextr64_c5_skipextrauses(i64 %val, i64 %numskipbits, i64 %numlowbits
; X64-NOBMI-NEXT: pushq %r15
; X64-NOBMI-NEXT: pushq %r14
; X64-NOBMI-NEXT: pushq %rbx
; X64-NOBMI-NEXT: movq %rsi, %r14
; X64-NOBMI-NEXT: movq %rdi, %r15
; X64-NOBMI-NEXT: movl %r14d, %ecx
; X64-NOBMI-NEXT: shrq %cl, %r15
; X64-NOBMI-NEXT: movq %rsi, %rbx
; X64-NOBMI-NEXT: movq %rdi, %r14
; X64-NOBMI-NEXT: movl %ebx, %ecx
; X64-NOBMI-NEXT: shrq %cl, %r14
; X64-NOBMI-NEXT: negb %dl
; X64-NOBMI-NEXT: movq $-1, %rbx
; X64-NOBMI-NEXT: movq $-1, %r15
; X64-NOBMI-NEXT: movl %edx, %ecx
; X64-NOBMI-NEXT: shrq %cl, %rbx
; X64-NOBMI-NEXT: movq %rbx, %rdi
; X64-NOBMI-NEXT: shrq %cl, %r15
; X64-NOBMI-NEXT: movq %r15, %rdi
; X64-NOBMI-NEXT: callq use64@PLT
; X64-NOBMI-NEXT: andq %r15, %rbx
; X64-NOBMI-NEXT: movq %r14, %rdi
; X64-NOBMI-NEXT: andq %r14, %r15
; X64-NOBMI-NEXT: movq %rbx, %rdi
; X64-NOBMI-NEXT: callq use64@PLT
; X64-NOBMI-NEXT: movq %rbx, %rax
; X64-NOBMI-NEXT: movq %r15, %rax
; X64-NOBMI-NEXT: popq %rbx
; X64-NOBMI-NEXT: popq %r14
; X64-NOBMI-NEXT: popq %r15
Expand All @@ -6082,20 +6082,20 @@ define i64 @bextr64_c5_skipextrauses(i64 %val, i64 %numskipbits, i64 %numlowbits
; X64-BMI1-NEXT: pushq %r15
; X64-BMI1-NEXT: pushq %r14
; X64-BMI1-NEXT: pushq %rbx
; X64-BMI1-NEXT: movq %rsi, %r14
; X64-BMI1-NEXT: movq %rdi, %r15
; X64-BMI1-NEXT: movl %r14d, %ecx
; X64-BMI1-NEXT: shrq %cl, %r15
; X64-BMI1-NEXT: movq %rsi, %rbx
; X64-BMI1-NEXT: movq %rdi, %r14
; X64-BMI1-NEXT: movl %ebx, %ecx
; X64-BMI1-NEXT: shrq %cl, %r14
; X64-BMI1-NEXT: negb %dl
; X64-BMI1-NEXT: movq $-1, %rbx
; X64-BMI1-NEXT: movq $-1, %r15
; X64-BMI1-NEXT: movl %edx, %ecx
; X64-BMI1-NEXT: shrq %cl, %rbx
; X64-BMI1-NEXT: movq %rbx, %rdi
; X64-BMI1-NEXT: shrq %cl, %r15
; X64-BMI1-NEXT: movq %r15, %rdi
; X64-BMI1-NEXT: callq use64@PLT
; X64-BMI1-NEXT: andq %r15, %rbx
; X64-BMI1-NEXT: movq %r14, %rdi
; X64-BMI1-NEXT: andq %r14, %r15
; X64-BMI1-NEXT: movq %rbx, %rdi
; X64-BMI1-NEXT: callq use64@PLT
; X64-BMI1-NEXT: movq %rbx, %rax
; X64-BMI1-NEXT: movq %r15, %rax
; X64-BMI1-NEXT: popq %rbx
; X64-BMI1-NEXT: popq %r14
; X64-BMI1-NEXT: popq %r15
Expand Down
16 changes: 8 additions & 8 deletions llvm/test/CodeGen/X86/flt-rounds.ll
Original file line number Diff line number Diff line change
Expand Up @@ -116,14 +116,14 @@ define i32 @multiple_flt_rounds() nounwind {
; X64-NEXT: movzwl {{[0-9]+}}(%rsp), %ecx
; X64-NEXT: shrl $9, %ecx
; X64-NEXT: andb $6, %cl
; X64-NEXT: movl $45, %r14d
; X64-NEXT: movl $45, %ebx
; X64-NEXT: movl $45, %eax
; X64-NEXT: # kill: def $cl killed $cl killed $ecx
; X64-NEXT: shrl %cl, %eax
; X64-NEXT: andl $3, %eax
; X64-NEXT: xorl %ebx, %ebx
; X64-NEXT: xorl %r14d, %r14d
; X64-NEXT: cmpl $3, %eax
; X64-NEXT: setne %bl
; X64-NEXT: setne %r14b
; X64-NEXT: xorl %edi, %edi
; X64-NEXT: callq fesetround
; X64-NEXT: fnstcw {{[0-9]+}}(%rsp)
Expand All @@ -134,9 +134,9 @@ define i32 @multiple_flt_rounds() nounwind {
; X64-NEXT: # kill: def $cl killed $cl killed $ecx
; X64-NEXT: shrl %cl, %eax
; X64-NEXT: andl $3, %eax
; X64-NEXT: leal 1(%rbx), %ebp
; X64-NEXT: leal 1(%r14), %ebp
; X64-NEXT: cmpl $1, %eax
; X64-NEXT: cmovel %ebx, %ebp
; X64-NEXT: cmovel %r14d, %ebp
; X64-NEXT: movl $3072, %edi # imm = 0xC00
; X64-NEXT: callq fesetround
; X64-NEXT: fnstcw {{[0-9]+}}(%rsp)
Expand All @@ -156,10 +156,10 @@ define i32 @multiple_flt_rounds() nounwind {
; X64-NEXT: shrl $9, %ecx
; X64-NEXT: andb $6, %cl
; X64-NEXT: # kill: def $cl killed $cl killed $ecx
; X64-NEXT: shrl %cl, %r14d
; X64-NEXT: andl $3, %r14d
; X64-NEXT: shrl %cl, %ebx
; X64-NEXT: andl $3, %ebx
; X64-NEXT: xorl %ecx, %ecx
; X64-NEXT: cmpl $2, %r14d
; X64-NEXT: cmpl $2, %ebx
; X64-NEXT: setne %cl
; X64-NEXT: negl %ecx
; X64-NEXT: xorl %eax, %eax
Expand Down
24 changes: 12 additions & 12 deletions llvm/test/CodeGen/X86/fma-commute-loop.ll
Original file line number Diff line number Diff line change
Expand Up @@ -12,17 +12,17 @@ define void @eggs(ptr %arg, ptr %arg1, ptr %arg2, ptr %arg3, ptr %arg4, ptr %arg
; CHECK-NEXT: movq {{[0-9]+}}(%rsp), %rax
; CHECK-NEXT: movq {{[0-9]+}}(%rsp), %r10
; CHECK-NEXT: movq {{[0-9]+}}(%rsp), %r11
; CHECK-NEXT: movq {{[0-9]+}}(%rsp), %r12
; CHECK-NEXT: movq {{[0-9]+}}(%rsp), %rbx
; CHECK-NEXT: movq {{[0-9]+}}(%rsp), %r15
; CHECK-NEXT: movq {{[0-9]+}}(%rsp), %r14
; CHECK-NEXT: movq {{[0-9]+}}(%rsp), %rbx
; CHECK-NEXT: leaq (%rbx,%r14,8), %r14
; CHECK-NEXT: leaq (%rbx,%r15,8), %r15
; CHECK-NEXT: movq {{[0-9]+}}(%rsp), %r12
; CHECK-NEXT: leaq (%r12,%r14,8), %r14
; CHECK-NEXT: leaq (%r12,%r15,8), %r15
; CHECK-NEXT: vxorpd %xmm0, %xmm0, %xmm0
; CHECK-NEXT: xorl %ebx, %ebx
; CHECK-NEXT: xorl %r12d, %r12d
; CHECK-NEXT: movq {{[0-9]+}}(%rsp), %r13
; CHECK-NEXT: addq %r12, %r13
; CHECK-NEXT: addq {{[0-9]+}}(%rsp), %r12
; CHECK-NEXT: addq %rbx, %r13
; CHECK-NEXT: addq {{[0-9]+}}(%rsp), %rbx
; CHECK-NEXT: vxorpd %xmm1, %xmm1, %xmm1
; CHECK-NEXT: vxorpd %xmm2, %xmm2, %xmm2
; CHECK-NEXT: vxorpd %xmm3, %xmm3, %xmm3
Expand All @@ -33,17 +33,17 @@ define void @eggs(ptr %arg, ptr %arg1, ptr %arg2, ptr %arg3, ptr %arg4, ptr %arg
; CHECK-NEXT: ## =>This Inner Loop Header: Depth=1
; CHECK-NEXT: vmovupd (%rax,%r11,8), %zmm6
; CHECK-NEXT: vmovupd (%rax,%r13,8), %zmm7
; CHECK-NEXT: vmovupd (%rax,%r12,8), %zmm8
; CHECK-NEXT: vbroadcastsd (%r15,%rbx,8), %zmm9
; CHECK-NEXT: vmovupd (%rax,%rbx,8), %zmm8
; CHECK-NEXT: vbroadcastsd (%r15,%r12,8), %zmm9
; CHECK-NEXT: vfmadd231pd {{.*#+}} zmm0 = (zmm6 * zmm9) + zmm0
; CHECK-NEXT: vfmadd231pd {{.*#+}} zmm1 = (zmm7 * zmm9) + zmm1
; CHECK-NEXT: vfmadd231pd {{.*#+}} zmm2 = (zmm8 * zmm9) + zmm2
; CHECK-NEXT: vbroadcastsd (%r14,%rbx,8), %zmm9
; CHECK-NEXT: vbroadcastsd (%r14,%r12,8), %zmm9
; CHECK-NEXT: vfmadd231pd {{.*#+}} zmm3 = (zmm9 * zmm6) + zmm3
; CHECK-NEXT: vfmadd231pd {{.*#+}} zmm4 = (zmm9 * zmm7) + zmm4
; CHECK-NEXT: vfmadd231pd {{.*#+}} zmm5 = (zmm8 * zmm9) + zmm5
; CHECK-NEXT: incq %rbx
; CHECK-NEXT: cmpq %rbx, %r10
; CHECK-NEXT: incq %r12
; CHECK-NEXT: cmpq %r12, %r10
; CHECK-NEXT: jne LBB0_1
; CHECK-NEXT: ## %bb.2: ## %bb51
; CHECK-NEXT: vmovapd %zmm0, (%rdi)
Expand Down
84 changes: 42 additions & 42 deletions llvm/test/CodeGen/X86/fmaddsub-combine.ll
Original file line number Diff line number Diff line change
Expand Up @@ -569,14 +569,14 @@ define <8 x float> @buildvector_mul_subadd_ps256(<8 x float> %C, <8 x float> %D,
; NOFMA-NEXT: vaddss %xmm4, %xmm3, %xmm3
; NOFMA-NEXT: vextractf128 $1, %ymm0, %xmm4
; NOFMA-NEXT: vextractf128 $1, %ymm2, %xmm5
; NOFMA-NEXT: vaddss %xmm5, %xmm4, %xmm8
; NOFMA-NEXT: vaddss %xmm5, %xmm4, %xmm6
; NOFMA-NEXT: vpermilpd {{.*#+}} xmm7 = xmm4[1,0]
; NOFMA-NEXT: vpermilpd {{.*#+}} xmm6 = xmm5[1,0]
; NOFMA-NEXT: vaddss %xmm6, %xmm7, %xmm9
; NOFMA-NEXT: vmovshdup {{.*#+}} xmm7 = xmm0[1,1,3,3]
; NOFMA-NEXT: vmovshdup {{.*#+}} xmm6 = xmm2[1,1,3,3]
; NOFMA-NEXT: vsubss %xmm6, %xmm7, %xmm6
; NOFMA-NEXT: vinsertps {{.*#+}} xmm1 = xmm1[0],xmm6[0],xmm1[2,3]
; NOFMA-NEXT: vpermilpd {{.*#+}} xmm8 = xmm5[1,0]
; NOFMA-NEXT: vaddss %xmm7, %xmm8, %xmm7
; NOFMA-NEXT: vmovshdup {{.*#+}} xmm8 = xmm0[1,1,3,3]
; NOFMA-NEXT: vmovshdup {{.*#+}} xmm9 = xmm2[1,1,3,3]
; NOFMA-NEXT: vsubss %xmm9, %xmm8, %xmm8
; NOFMA-NEXT: vinsertps {{.*#+}} xmm1 = xmm1[0],xmm8[0],xmm1[2,3]
; NOFMA-NEXT: vinsertps {{.*#+}} xmm1 = xmm1[0,1],xmm3[0],xmm1[3]
; NOFMA-NEXT: vpermilps {{.*#+}} xmm0 = xmm0[3,3,3,3]
; NOFMA-NEXT: vpermilps {{.*#+}} xmm2 = xmm2[3,3,3,3]
Expand All @@ -585,8 +585,8 @@ define <8 x float> @buildvector_mul_subadd_ps256(<8 x float> %C, <8 x float> %D,
; NOFMA-NEXT: vmovshdup {{.*#+}} xmm1 = xmm4[1,1,3,3]
; NOFMA-NEXT: vmovshdup {{.*#+}} xmm2 = xmm5[1,1,3,3]
; NOFMA-NEXT: vsubss %xmm2, %xmm1, %xmm1
; NOFMA-NEXT: vinsertps {{.*#+}} xmm1 = xmm8[0],xmm1[0],xmm8[2,3]
; NOFMA-NEXT: vinsertps {{.*#+}} xmm1 = xmm1[0,1],xmm9[0],xmm1[3]
; NOFMA-NEXT: vinsertps {{.*#+}} xmm1 = xmm6[0],xmm1[0],xmm6[2,3]
; NOFMA-NEXT: vinsertps {{.*#+}} xmm1 = xmm1[0,1],xmm7[0],xmm1[3]
; NOFMA-NEXT: vpermilps {{.*#+}} xmm2 = xmm4[3,3,3,3]
; NOFMA-NEXT: vpermilps {{.*#+}} xmm3 = xmm5[3,3,3,3]
; NOFMA-NEXT: vsubss %xmm3, %xmm2, %xmm2
Expand Down Expand Up @@ -694,54 +694,54 @@ define <16 x float> @buildvector_mul_subadd_ps512(<16 x float> %C, <16 x float>
; NOFMA: # %bb.0: # %bb
; NOFMA-NEXT: vmulps %ymm3, %ymm1, %ymm1
; NOFMA-NEXT: vmulps %ymm2, %ymm0, %ymm0
; NOFMA-NEXT: vaddss %xmm4, %xmm0, %xmm8
; NOFMA-NEXT: vaddss %xmm4, %xmm0, %xmm2
; NOFMA-NEXT: vpermilpd {{.*#+}} xmm3 = xmm0[1,0]
; NOFMA-NEXT: vpermilpd {{.*#+}} xmm6 = xmm4[1,0]
; NOFMA-NEXT: vaddss %xmm6, %xmm3, %xmm9
; NOFMA-NEXT: vaddss %xmm6, %xmm3, %xmm3
; NOFMA-NEXT: vextractf128 $1, %ymm0, %xmm6
; NOFMA-NEXT: vextractf128 $1, %ymm4, %xmm7
; NOFMA-NEXT: vaddss %xmm7, %xmm6, %xmm10
; NOFMA-NEXT: vpermilpd {{.*#+}} xmm3 = xmm6[1,0]
; NOFMA-NEXT: vpermilpd {{.*#+}} xmm2 = xmm7[1,0]
; NOFMA-NEXT: vaddss %xmm2, %xmm3, %xmm2
; NOFMA-NEXT: vinsertps {{.*#+}} xmm11 = xmm10[0,1],xmm2[0],xmm10[3]
; NOFMA-NEXT: vaddss %xmm5, %xmm1, %xmm10
; NOFMA-NEXT: vpermilpd {{.*#+}} xmm3 = xmm1[1,0]
; NOFMA-NEXT: vpermilpd {{.*#+}} xmm2 = xmm5[1,0]
; NOFMA-NEXT: vaddss %xmm2, %xmm3, %xmm12
; NOFMA-NEXT: vextractf128 $1, %ymm1, %xmm14
; NOFMA-NEXT: vpermilpd {{.*#+}} xmm13 = xmm14[1,0]
; NOFMA-NEXT: vextractf128 $1, %ymm5, %xmm15
; NOFMA-NEXT: vpermilpd {{.*#+}} xmm3 = xmm15[1,0]
; NOFMA-NEXT: vaddss %xmm3, %xmm13, %xmm13
; NOFMA-NEXT: vmovshdup {{.*#+}} xmm3 = xmm0[1,1,3,3]
; NOFMA-NEXT: vmovshdup {{.*#+}} xmm2 = xmm4[1,1,3,3]
; NOFMA-NEXT: vsubss %xmm2, %xmm3, %xmm2
; NOFMA-NEXT: vinsertps {{.*#+}} xmm2 = xmm8[0],xmm2[0],xmm8[2,3]
; NOFMA-NEXT: vinsertps {{.*#+}} xmm2 = xmm2[0,1],xmm9[0],xmm2[3]
; NOFMA-NEXT: vaddss %xmm7, %xmm6, %xmm8
; NOFMA-NEXT: vpermilpd {{.*#+}} xmm9 = xmm6[1,0]
; NOFMA-NEXT: vpermilpd {{.*#+}} xmm10 = xmm7[1,0]
; NOFMA-NEXT: vaddss %xmm10, %xmm9, %xmm9
; NOFMA-NEXT: vinsertps {{.*#+}} xmm8 = xmm8[0,1],xmm9[0],xmm8[3]
; NOFMA-NEXT: vaddss %xmm5, %xmm1, %xmm9
; NOFMA-NEXT: vpermilpd {{.*#+}} xmm10 = xmm1[1,0]
; NOFMA-NEXT: vpermilpd {{.*#+}} xmm11 = xmm5[1,0]
; NOFMA-NEXT: vaddss %xmm11, %xmm10, %xmm10
; NOFMA-NEXT: vextractf128 $1, %ymm1, %xmm11
; NOFMA-NEXT: vpermilpd {{.*#+}} xmm12 = xmm11[1,0]
; NOFMA-NEXT: vextractf128 $1, %ymm5, %xmm13
; NOFMA-NEXT: vpermilpd {{.*#+}} xmm14 = xmm13[1,0]
; NOFMA-NEXT: vaddss %xmm14, %xmm12, %xmm12
; NOFMA-NEXT: vmovshdup {{.*#+}} xmm14 = xmm0[1,1,3,3]
; NOFMA-NEXT: vmovshdup {{.*#+}} xmm15 = xmm4[1,1,3,3]
; NOFMA-NEXT: vsubss %xmm15, %xmm14, %xmm14
; NOFMA-NEXT: vinsertps {{.*#+}} xmm2 = xmm2[0],xmm14[0],xmm2[2,3]
; NOFMA-NEXT: vinsertps {{.*#+}} xmm2 = xmm2[0,1],xmm3[0],xmm2[3]
; NOFMA-NEXT: vpermilps {{.*#+}} xmm0 = xmm0[3,3,3,3]
; NOFMA-NEXT: vpermilps {{.*#+}} xmm3 = xmm4[3,3,3,3]
; NOFMA-NEXT: vsubss %xmm3, %xmm0, %xmm0
; NOFMA-NEXT: vinsertps {{.*#+}} xmm0 = xmm2[0,1,2],xmm0[0]
; NOFMA-NEXT: vpermilps {{.*#+}} xmm2 = xmm6[3,3,3,3]
; NOFMA-NEXT: vpermilps {{.*#+}} xmm3 = xmm7[3,3,3,3]
; NOFMA-NEXT: vsubss %xmm3, %xmm2, %xmm2
; NOFMA-NEXT: vinsertps {{.*#+}} xmm2 = xmm11[0,1,2],xmm2[0]
; NOFMA-NEXT: vinsertps {{.*#+}} xmm2 = xmm8[0,1,2],xmm2[0]
; NOFMA-NEXT: vmovshdup {{.*#+}} xmm3 = xmm1[1,1,3,3]
; NOFMA-NEXT: vmovshdup {{.*#+}} xmm4 = xmm5[1,1,3,3]
; NOFMA-NEXT: vsubss %xmm4, %xmm3, %xmm3
; NOFMA-NEXT: vinsertps {{.*#+}} xmm3 = xmm10[0],xmm3[0],xmm10[2,3]
; NOFMA-NEXT: vinsertps {{.*#+}} xmm3 = xmm3[0,1],xmm12[0],xmm3[3]
; NOFMA-NEXT: vinsertps {{.*#+}} xmm3 = xmm9[0],xmm3[0],xmm9[2,3]
; NOFMA-NEXT: vinsertps {{.*#+}} xmm3 = xmm3[0,1],xmm10[0],xmm3[3]
; NOFMA-NEXT: vpermilps {{.*#+}} xmm1 = xmm1[3,3,3,3]
; NOFMA-NEXT: vpermilps {{.*#+}} xmm4 = xmm5[3,3,3,3]
; NOFMA-NEXT: vsubss %xmm4, %xmm1, %xmm1
; NOFMA-NEXT: vinsertps {{.*#+}} xmm1 = xmm3[0,1,2],xmm1[0]
; NOFMA-NEXT: vmovshdup {{.*#+}} xmm3 = xmm14[1,1,3,3]
; NOFMA-NEXT: vmovshdup {{.*#+}} xmm4 = xmm15[1,1,3,3]
; NOFMA-NEXT: vmovshdup {{.*#+}} xmm3 = xmm11[1,1,3,3]
; NOFMA-NEXT: vmovshdup {{.*#+}} xmm4 = xmm13[1,1,3,3]
; NOFMA-NEXT: vsubss %xmm4, %xmm3, %xmm3
; NOFMA-NEXT: vshufps {{.*#+}} xmm3 = xmm3[0,0],xmm13[0,0]
; NOFMA-NEXT: vpermilps {{.*#+}} xmm4 = xmm14[3,3,3,3]
; NOFMA-NEXT: vpermilps {{.*#+}} xmm5 = xmm15[3,3,3,3]
; NOFMA-NEXT: vshufps {{.*#+}} xmm3 = xmm3[0,0],xmm12[0,0]
; NOFMA-NEXT: vpermilps {{.*#+}} xmm4 = xmm11[3,3,3,3]
; NOFMA-NEXT: vpermilps {{.*#+}} xmm5 = xmm13[3,3,3,3]
; NOFMA-NEXT: vsubss %xmm5, %xmm4, %xmm4
; NOFMA-NEXT: vinsertps {{.*#+}} xmm3 = xmm3[0,1,2],xmm4[0]
; NOFMA-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
Expand Down Expand Up @@ -841,23 +841,23 @@ define <8 x double> @buildvector_mul_subadd_pd512(<8 x double> %C, <8 x double>
; NOFMA-NEXT: vaddsd %xmm4, %xmm0, %xmm2
; NOFMA-NEXT: vextractf128 $1, %ymm0, %xmm3
; NOFMA-NEXT: vextractf128 $1, %ymm4, %xmm6
; NOFMA-NEXT: vaddsd %xmm6, %xmm3, %xmm9
; NOFMA-NEXT: vaddsd %xmm6, %xmm3, %xmm7
; NOFMA-NEXT: vaddsd %xmm5, %xmm1, %xmm8
; NOFMA-NEXT: vextractf128 $1, %ymm1, %xmm1
; NOFMA-NEXT: vextractf128 $1, %ymm5, %xmm5
; NOFMA-NEXT: vaddsd %xmm5, %xmm1, %xmm7
; NOFMA-NEXT: vaddsd %xmm5, %xmm1, %xmm9
; NOFMA-NEXT: vpermilpd {{.*#+}} xmm0 = xmm0[1,0]
; NOFMA-NEXT: vpermilpd {{.*#+}} xmm4 = xmm4[1,0]
; NOFMA-NEXT: vsubsd %xmm4, %xmm0, %xmm0
; NOFMA-NEXT: vunpcklpd {{.*#+}} xmm0 = xmm2[0],xmm0[0]
; NOFMA-NEXT: vpermilpd {{.*#+}} xmm2 = xmm3[1,0]
; NOFMA-NEXT: vpermilpd {{.*#+}} xmm3 = xmm6[1,0]
; NOFMA-NEXT: vsubsd %xmm3, %xmm2, %xmm2
; NOFMA-NEXT: vunpcklpd {{.*#+}} xmm2 = xmm9[0],xmm2[0]
; NOFMA-NEXT: vunpcklpd {{.*#+}} xmm2 = xmm7[0],xmm2[0]
; NOFMA-NEXT: vpermilpd {{.*#+}} xmm1 = xmm1[1,0]
; NOFMA-NEXT: vpermilpd {{.*#+}} xmm3 = xmm5[1,0]
; NOFMA-NEXT: vsubsd %xmm3, %xmm1, %xmm1
; NOFMA-NEXT: vunpcklpd {{.*#+}} xmm1 = xmm7[0],xmm1[0]
; NOFMA-NEXT: vunpcklpd {{.*#+}} xmm1 = xmm9[0],xmm1[0]
; NOFMA-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
; NOFMA-NEXT: vinsertf128 $1, %xmm1, %ymm8, %ymm1
; NOFMA-NEXT: retq
Expand Down
64 changes: 32 additions & 32 deletions llvm/test/CodeGen/X86/fmaxnum.ll
Original file line number Diff line number Diff line change
Expand Up @@ -322,29 +322,29 @@ define <16 x float> @test_intrinsic_fmax_v16f32(<16 x float> %x, <16 x float> %y
;
; SSE4-LABEL: test_intrinsic_fmax_v16f32:
; SSE4: # %bb.0:
; SSE4-NEXT: movaps %xmm3, %xmm8
; SSE4-NEXT: movaps %xmm2, %xmm9
; SSE4-NEXT: movaps %xmm1, %xmm2
; SSE4-NEXT: movaps %xmm4, %xmm10
; SSE4-NEXT: maxps %xmm0, %xmm10
; SSE4-NEXT: movaps %xmm3, %xmm11
; SSE4-NEXT: movaps %xmm2, %xmm10
; SSE4-NEXT: movaps %xmm1, %xmm9
; SSE4-NEXT: movaps %xmm4, %xmm8
; SSE4-NEXT: maxps %xmm0, %xmm8
; SSE4-NEXT: cmpunordps %xmm0, %xmm0
; SSE4-NEXT: blendvps %xmm0, %xmm4, %xmm10
; SSE4-NEXT: blendvps %xmm0, %xmm4, %xmm8
; SSE4-NEXT: movaps %xmm5, %xmm1
; SSE4-NEXT: maxps %xmm2, %xmm1
; SSE4-NEXT: cmpunordps %xmm2, %xmm2
; SSE4-NEXT: movaps %xmm2, %xmm0
; SSE4-NEXT: blendvps %xmm0, %xmm5, %xmm1
; SSE4-NEXT: movaps %xmm6, %xmm2
; SSE4-NEXT: maxps %xmm9, %xmm2
; SSE4-NEXT: maxps %xmm9, %xmm1
; SSE4-NEXT: cmpunordps %xmm9, %xmm9
; SSE4-NEXT: movaps %xmm9, %xmm0
; SSE4-NEXT: blendvps %xmm0, %xmm5, %xmm1
; SSE4-NEXT: movaps %xmm6, %xmm2
; SSE4-NEXT: maxps %xmm10, %xmm2
; SSE4-NEXT: cmpunordps %xmm10, %xmm10
; SSE4-NEXT: movaps %xmm10, %xmm0
; SSE4-NEXT: blendvps %xmm0, %xmm6, %xmm2
; SSE4-NEXT: movaps %xmm7, %xmm3
; SSE4-NEXT: maxps %xmm8, %xmm3
; SSE4-NEXT: cmpunordps %xmm8, %xmm8
; SSE4-NEXT: movaps %xmm8, %xmm0
; SSE4-NEXT: maxps %xmm11, %xmm3
; SSE4-NEXT: cmpunordps %xmm11, %xmm11
; SSE4-NEXT: movaps %xmm11, %xmm0
; SSE4-NEXT: blendvps %xmm0, %xmm7, %xmm3
; SSE4-NEXT: movaps %xmm10, %xmm0
; SSE4-NEXT: movaps %xmm8, %xmm0
; SSE4-NEXT: retq
;
; AVX1-LABEL: test_intrinsic_fmax_v16f32:
Expand Down Expand Up @@ -471,29 +471,29 @@ define <8 x double> @test_intrinsic_fmax_v8f64(<8 x double> %x, <8 x double> %y)
;
; SSE4-LABEL: test_intrinsic_fmax_v8f64:
; SSE4: # %bb.0:
; SSE4-NEXT: movapd %xmm3, %xmm8
; SSE4-NEXT: movapd %xmm2, %xmm9
; SSE4-NEXT: movapd %xmm1, %xmm2
; SSE4-NEXT: movapd %xmm4, %xmm10
; SSE4-NEXT: maxpd %xmm0, %xmm10
; SSE4-NEXT: movapd %xmm3, %xmm11
; SSE4-NEXT: movapd %xmm2, %xmm10
; SSE4-NEXT: movapd %xmm1, %xmm9
; SSE4-NEXT: movapd %xmm4, %xmm8
; SSE4-NEXT: maxpd %xmm0, %xmm8
; SSE4-NEXT: cmpunordpd %xmm0, %xmm0
; SSE4-NEXT: blendvpd %xmm0, %xmm4, %xmm10
; SSE4-NEXT: blendvpd %xmm0, %xmm4, %xmm8
; SSE4-NEXT: movapd %xmm5, %xmm1
; SSE4-NEXT: maxpd %xmm2, %xmm1
; SSE4-NEXT: cmpunordpd %xmm2, %xmm2
; SSE4-NEXT: movapd %xmm2, %xmm0
; SSE4-NEXT: blendvpd %xmm0, %xmm5, %xmm1
; SSE4-NEXT: movapd %xmm6, %xmm2
; SSE4-NEXT: maxpd %xmm9, %xmm2
; SSE4-NEXT: maxpd %xmm9, %xmm1
; SSE4-NEXT: cmpunordpd %xmm9, %xmm9
; SSE4-NEXT: movapd %xmm9, %xmm0
; SSE4-NEXT: blendvpd %xmm0, %xmm5, %xmm1
; SSE4-NEXT: movapd %xmm6, %xmm2
; SSE4-NEXT: maxpd %xmm10, %xmm2
; SSE4-NEXT: cmpunordpd %xmm10, %xmm10
; SSE4-NEXT: movapd %xmm10, %xmm0
; SSE4-NEXT: blendvpd %xmm0, %xmm6, %xmm2
; SSE4-NEXT: movapd %xmm7, %xmm3
; SSE4-NEXT: maxpd %xmm8, %xmm3
; SSE4-NEXT: cmpunordpd %xmm8, %xmm8
; SSE4-NEXT: movapd %xmm8, %xmm0
; SSE4-NEXT: maxpd %xmm11, %xmm3
; SSE4-NEXT: cmpunordpd %xmm11, %xmm11
; SSE4-NEXT: movapd %xmm11, %xmm0
; SSE4-NEXT: blendvpd %xmm0, %xmm7, %xmm3
; SSE4-NEXT: movapd %xmm10, %xmm0
; SSE4-NEXT: movapd %xmm8, %xmm0
; SSE4-NEXT: retq
;
; AVX1-LABEL: test_intrinsic_fmax_v8f64:
Expand Down
64 changes: 32 additions & 32 deletions llvm/test/CodeGen/X86/fminnum.ll
Original file line number Diff line number Diff line change
Expand Up @@ -322,29 +322,29 @@ define <16 x float> @test_intrinsic_fmin_v16f32(<16 x float> %x, <16 x float> %y
;
; SSE4-LABEL: test_intrinsic_fmin_v16f32:
; SSE4: # %bb.0:
; SSE4-NEXT: movaps %xmm3, %xmm8
; SSE4-NEXT: movaps %xmm2, %xmm9
; SSE4-NEXT: movaps %xmm1, %xmm2
; SSE4-NEXT: movaps %xmm4, %xmm10
; SSE4-NEXT: minps %xmm0, %xmm10
; SSE4-NEXT: movaps %xmm3, %xmm11
; SSE4-NEXT: movaps %xmm2, %xmm10
; SSE4-NEXT: movaps %xmm1, %xmm9
; SSE4-NEXT: movaps %xmm4, %xmm8
; SSE4-NEXT: minps %xmm0, %xmm8
; SSE4-NEXT: cmpunordps %xmm0, %xmm0
; SSE4-NEXT: blendvps %xmm0, %xmm4, %xmm10
; SSE4-NEXT: blendvps %xmm0, %xmm4, %xmm8
; SSE4-NEXT: movaps %xmm5, %xmm1
; SSE4-NEXT: minps %xmm2, %xmm1
; SSE4-NEXT: cmpunordps %xmm2, %xmm2
; SSE4-NEXT: movaps %xmm2, %xmm0
; SSE4-NEXT: blendvps %xmm0, %xmm5, %xmm1
; SSE4-NEXT: movaps %xmm6, %xmm2
; SSE4-NEXT: minps %xmm9, %xmm2
; SSE4-NEXT: minps %xmm9, %xmm1
; SSE4-NEXT: cmpunordps %xmm9, %xmm9
; SSE4-NEXT: movaps %xmm9, %xmm0
; SSE4-NEXT: blendvps %xmm0, %xmm5, %xmm1
; SSE4-NEXT: movaps %xmm6, %xmm2
; SSE4-NEXT: minps %xmm10, %xmm2
; SSE4-NEXT: cmpunordps %xmm10, %xmm10
; SSE4-NEXT: movaps %xmm10, %xmm0
; SSE4-NEXT: blendvps %xmm0, %xmm6, %xmm2
; SSE4-NEXT: movaps %xmm7, %xmm3
; SSE4-NEXT: minps %xmm8, %xmm3
; SSE4-NEXT: cmpunordps %xmm8, %xmm8
; SSE4-NEXT: movaps %xmm8, %xmm0
; SSE4-NEXT: minps %xmm11, %xmm3
; SSE4-NEXT: cmpunordps %xmm11, %xmm11
; SSE4-NEXT: movaps %xmm11, %xmm0
; SSE4-NEXT: blendvps %xmm0, %xmm7, %xmm3
; SSE4-NEXT: movaps %xmm10, %xmm0
; SSE4-NEXT: movaps %xmm8, %xmm0
; SSE4-NEXT: retq
;
; AVX1-LABEL: test_intrinsic_fmin_v16f32:
Expand Down Expand Up @@ -471,29 +471,29 @@ define <8 x double> @test_intrinsic_fmin_v8f64(<8 x double> %x, <8 x double> %y)
;
; SSE4-LABEL: test_intrinsic_fmin_v8f64:
; SSE4: # %bb.0:
; SSE4-NEXT: movapd %xmm3, %xmm8
; SSE4-NEXT: movapd %xmm2, %xmm9
; SSE4-NEXT: movapd %xmm1, %xmm2
; SSE4-NEXT: movapd %xmm4, %xmm10
; SSE4-NEXT: minpd %xmm0, %xmm10
; SSE4-NEXT: movapd %xmm3, %xmm11
; SSE4-NEXT: movapd %xmm2, %xmm10
; SSE4-NEXT: movapd %xmm1, %xmm9
; SSE4-NEXT: movapd %xmm4, %xmm8
; SSE4-NEXT: minpd %xmm0, %xmm8
; SSE4-NEXT: cmpunordpd %xmm0, %xmm0
; SSE4-NEXT: blendvpd %xmm0, %xmm4, %xmm10
; SSE4-NEXT: blendvpd %xmm0, %xmm4, %xmm8
; SSE4-NEXT: movapd %xmm5, %xmm1
; SSE4-NEXT: minpd %xmm2, %xmm1
; SSE4-NEXT: cmpunordpd %xmm2, %xmm2
; SSE4-NEXT: movapd %xmm2, %xmm0
; SSE4-NEXT: blendvpd %xmm0, %xmm5, %xmm1
; SSE4-NEXT: movapd %xmm6, %xmm2
; SSE4-NEXT: minpd %xmm9, %xmm2
; SSE4-NEXT: minpd %xmm9, %xmm1
; SSE4-NEXT: cmpunordpd %xmm9, %xmm9
; SSE4-NEXT: movapd %xmm9, %xmm0
; SSE4-NEXT: blendvpd %xmm0, %xmm5, %xmm1
; SSE4-NEXT: movapd %xmm6, %xmm2
; SSE4-NEXT: minpd %xmm10, %xmm2
; SSE4-NEXT: cmpunordpd %xmm10, %xmm10
; SSE4-NEXT: movapd %xmm10, %xmm0
; SSE4-NEXT: blendvpd %xmm0, %xmm6, %xmm2
; SSE4-NEXT: movapd %xmm7, %xmm3
; SSE4-NEXT: minpd %xmm8, %xmm3
; SSE4-NEXT: cmpunordpd %xmm8, %xmm8
; SSE4-NEXT: movapd %xmm8, %xmm0
; SSE4-NEXT: minpd %xmm11, %xmm3
; SSE4-NEXT: cmpunordpd %xmm11, %xmm11
; SSE4-NEXT: movapd %xmm11, %xmm0
; SSE4-NEXT: blendvpd %xmm0, %xmm7, %xmm3
; SSE4-NEXT: movapd %xmm10, %xmm0
; SSE4-NEXT: movapd %xmm8, %xmm0
; SSE4-NEXT: retq
;
; AVX1-LABEL: test_intrinsic_fmin_v8f64:
Expand Down
12 changes: 6 additions & 6 deletions llvm/test/CodeGen/X86/fp-stack-2results.ll
Original file line number Diff line number Diff line change
Expand Up @@ -68,11 +68,11 @@ define void @call1(ptr%P1, ptr%P2) {
; x86_64-NEXT: .cfi_def_cfa_offset 32
; x86_64-NEXT: .cfi_offset %rbx, -24
; x86_64-NEXT: .cfi_offset %r14, -16
; x86_64-NEXT: movq %rsi, %r14
; x86_64-NEXT: movq %rdi, %rbx
; x86_64-NEXT: movq %rsi, %rbx
; x86_64-NEXT: movq %rdi, %r14
; x86_64-NEXT: callq test@PLT
; x86_64-NEXT: fstpt (%rbx)
; x86_64-NEXT: fstpt (%r14)
; x86_64-NEXT: fstpt (%rbx)
; x86_64-NEXT: addq $8, %rsp
; x86_64-NEXT: .cfi_def_cfa_offset 24
; x86_64-NEXT: popq %rbx
Expand Down Expand Up @@ -121,12 +121,12 @@ define void @call2(ptr%P1, ptr%P2) {
; x86_64-NEXT: .cfi_def_cfa_offset 32
; x86_64-NEXT: .cfi_offset %rbx, -24
; x86_64-NEXT: .cfi_offset %r14, -16
; x86_64-NEXT: movq %rsi, %r14
; x86_64-NEXT: movq %rdi, %rbx
; x86_64-NEXT: movq %rsi, %rbx
; x86_64-NEXT: movq %rdi, %r14
; x86_64-NEXT: callq test@PLT
; x86_64-NEXT: fxch %st(1)
; x86_64-NEXT: fstpt (%rbx)
; x86_64-NEXT: fstpt (%r14)
; x86_64-NEXT: fstpt (%rbx)
; x86_64-NEXT: addq $8, %rsp
; x86_64-NEXT: .cfi_def_cfa_offset 24
; x86_64-NEXT: popq %rbx
Expand Down
32 changes: 16 additions & 16 deletions llvm/test/CodeGen/X86/fp128-libcalls-strict.ll
Original file line number Diff line number Diff line change
Expand Up @@ -1175,12 +1175,12 @@ define i64 @cmp(i64 %a, i64 %b, fp128 %x, fp128 %y) #0 {
; CHECK-NEXT: pushq %r14
; CHECK-NEXT: pushq %rbx
; CHECK-NEXT: pushq %rax
; CHECK-NEXT: movq %rsi, %r14
; CHECK-NEXT: movq %rdi, %rbx
; CHECK-NEXT: movq %rsi, %rbx
; CHECK-NEXT: movq %rdi, %r14
; CHECK-NEXT: callq __eqtf2@PLT
; CHECK-NEXT: testl %eax, %eax
; CHECK-NEXT: cmovneq %r14, %rbx
; CHECK-NEXT: movq %rbx, %rax
; CHECK-NEXT: cmovneq %rbx, %r14
; CHECK-NEXT: movq %r14, %rax
; CHECK-NEXT: addq $8, %rsp
; CHECK-NEXT: popq %rbx
; CHECK-NEXT: popq %r14
Expand Down Expand Up @@ -1221,12 +1221,12 @@ define i64 @cmps(i64 %a, i64 %b, fp128 %x, fp128 %y) #0 {
; CHECK-NEXT: pushq %r14
; CHECK-NEXT: pushq %rbx
; CHECK-NEXT: pushq %rax
; CHECK-NEXT: movq %rsi, %r14
; CHECK-NEXT: movq %rdi, %rbx
; CHECK-NEXT: movq %rsi, %rbx
; CHECK-NEXT: movq %rdi, %r14
; CHECK-NEXT: callq __eqtf2@PLT
; CHECK-NEXT: testl %eax, %eax
; CHECK-NEXT: cmovneq %r14, %rbx
; CHECK-NEXT: movq %rbx, %rax
; CHECK-NEXT: cmovneq %rbx, %r14
; CHECK-NEXT: movq %r14, %rax
; CHECK-NEXT: addq $8, %rsp
; CHECK-NEXT: popq %rbx
; CHECK-NEXT: popq %r14
Expand Down Expand Up @@ -1270,8 +1270,8 @@ define i64 @cmp_ueq_q(i64 %a, i64 %b, fp128 %x, fp128 %y) #0 {
; CHECK-NEXT: subq $32, %rsp
; CHECK-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
; CHECK-NEXT: movaps %xmm0, (%rsp) # 16-byte Spill
; CHECK-NEXT: movq %rsi, %r14
; CHECK-NEXT: movq %rdi, %rbx
; CHECK-NEXT: movq %rsi, %rbx
; CHECK-NEXT: movq %rdi, %r14
; CHECK-NEXT: callq __eqtf2@PLT
; CHECK-NEXT: testl %eax, %eax
; CHECK-NEXT: sete %bpl
Expand All @@ -1281,8 +1281,8 @@ define i64 @cmp_ueq_q(i64 %a, i64 %b, fp128 %x, fp128 %y) #0 {
; CHECK-NEXT: testl %eax, %eax
; CHECK-NEXT: setne %al
; CHECK-NEXT: orb %bpl, %al
; CHECK-NEXT: cmoveq %r14, %rbx
; CHECK-NEXT: movq %rbx, %rax
; CHECK-NEXT: cmoveq %rbx, %r14
; CHECK-NEXT: movq %r14, %rax
; CHECK-NEXT: addq $32, %rsp
; CHECK-NEXT: popq %rbx
; CHECK-NEXT: popq %r14
Expand Down Expand Up @@ -1353,8 +1353,8 @@ define i64 @cmp_one_q(i64 %a, i64 %b, fp128 %x, fp128 %y) #0 {
; CHECK-NEXT: subq $32, %rsp
; CHECK-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
; CHECK-NEXT: movaps %xmm0, (%rsp) # 16-byte Spill
; CHECK-NEXT: movq %rsi, %r14
; CHECK-NEXT: movq %rdi, %rbx
; CHECK-NEXT: movq %rsi, %rbx
; CHECK-NEXT: movq %rdi, %r14
; CHECK-NEXT: callq __eqtf2@PLT
; CHECK-NEXT: testl %eax, %eax
; CHECK-NEXT: setne %bpl
Expand All @@ -1364,8 +1364,8 @@ define i64 @cmp_one_q(i64 %a, i64 %b, fp128 %x, fp128 %y) #0 {
; CHECK-NEXT: testl %eax, %eax
; CHECK-NEXT: sete %al
; CHECK-NEXT: testb %bpl, %al
; CHECK-NEXT: cmoveq %r14, %rbx
; CHECK-NEXT: movq %rbx, %rax
; CHECK-NEXT: cmoveq %rbx, %r14
; CHECK-NEXT: movq %r14, %rax
; CHECK-NEXT: addq $32, %rsp
; CHECK-NEXT: popq %rbx
; CHECK-NEXT: popq %r14
Expand Down
20 changes: 10 additions & 10 deletions llvm/test/CodeGen/X86/fp128-select.ll
Original file line number Diff line number Diff line change
Expand Up @@ -92,16 +92,16 @@ define fp128 @test_select_cc(fp128, fp128) {
; NOSSE-NEXT: .cfi_offset %r14, -32
; NOSSE-NEXT: .cfi_offset %r15, -24
; NOSSE-NEXT: .cfi_offset %rbp, -16
; NOSSE-NEXT: movq %rcx, %r12
; NOSSE-NEXT: movq %rdx, %rbx
; NOSSE-NEXT: movq %rsi, %r14
; NOSSE-NEXT: movq %rdi, %r15
; NOSSE-NEXT: movq %rcx, %r15
; NOSSE-NEXT: movq %rdx, %r12
; NOSSE-NEXT: movq %rsi, %rbx
; NOSSE-NEXT: movq %rdi, %r14
; NOSSE-NEXT: callq __netf2@PLT
; NOSSE-NEXT: movl %eax, %ebp
; NOSSE-NEXT: movq %r15, %rdi
; NOSSE-NEXT: movq %r14, %rsi
; NOSSE-NEXT: movq %rbx, %rdx
; NOSSE-NEXT: movq %r12, %rcx
; NOSSE-NEXT: movq %r14, %rdi
; NOSSE-NEXT: movq %rbx, %rsi
; NOSSE-NEXT: movq %r12, %rdx
; NOSSE-NEXT: movq %r15, %rcx
; NOSSE-NEXT: callq __eqtf2@PLT
; NOSSE-NEXT: movl %eax, %ecx
; NOSSE-NEXT: xorl %eax, %eax
Expand All @@ -111,8 +111,8 @@ define fp128 @test_select_cc(fp128, fp128) {
; NOSSE-NEXT: testl %ebp, %ebp
; NOSSE-NEXT: je .LBB1_2
; NOSSE-NEXT: # %bb.1:
; NOSSE-NEXT: movq %r15, %rax
; NOSSE-NEXT: movq %r14, %rdx
; NOSSE-NEXT: movq %r14, %rax
; NOSSE-NEXT: movq %rbx, %rdx
; NOSSE-NEXT: .LBB1_2: # %BB2
; NOSSE-NEXT: popq %rbx
; NOSSE-NEXT: .cfi_def_cfa_offset 40
Expand Down
Loading