diff options
Diffstat (limited to 'llvm/test')
10 files changed, 113 insertions, 93 deletions
diff --git a/llvm/test/CodeGen/X86/bitreverse.ll b/llvm/test/CodeGen/X86/bitreverse.ll index ed3fdefce7a..5da95c574eb 100644 --- a/llvm/test/CodeGen/X86/bitreverse.ll +++ b/llvm/test/CodeGen/X86/bitreverse.ll @@ -340,20 +340,20 @@ define i8 @test_bitreverse_i8(i8 %a) { ; ; X64-LABEL: test_bitreverse_i8: ; X64: # %bb.0: +; X64-NEXT: # kill: def $edi killed $edi def $rdi +; X64-NEXT: rolb $4, %dil ; X64-NEXT: movl %edi, %eax -; X64-NEXT: rolb $4, %al -; X64-NEXT: movl %eax, %ecx -; X64-NEXT: andb $51, %cl -; X64-NEXT: shlb $2, %cl -; X64-NEXT: andb $-52, %al -; X64-NEXT: shrb $2, %al -; X64-NEXT: orb %cl, %al -; X64-NEXT: movl %eax, %ecx -; X64-NEXT: andb $85, %cl -; X64-NEXT: addb %cl, %cl -; X64-NEXT: andb $-86, %al -; X64-NEXT: shrb %al -; X64-NEXT: orb %cl, %al +; X64-NEXT: andb $51, %al +; X64-NEXT: shlb $2, %al +; X64-NEXT: andb $-52, %dil +; X64-NEXT: shrb $2, %dil +; X64-NEXT: orb %al, %dil +; X64-NEXT: movl %edi, %eax +; X64-NEXT: andb $85, %al +; X64-NEXT: addb %al, %al +; X64-NEXT: andb $-86, %dil +; X64-NEXT: shrb %dil +; X64-NEXT: leal (%rdi,%rax), %eax ; X64-NEXT: # kill: def $al killed $al killed $eax ; X64-NEXT: retq %b = call i8 @llvm.bitreverse.i8(i8 %a) @@ -384,20 +384,20 @@ define i4 @test_bitreverse_i4(i4 %a) { ; ; X64-LABEL: test_bitreverse_i4: ; X64: # %bb.0: +; X64-NEXT: # kill: def $edi killed $edi def $rdi +; X64-NEXT: rolb $4, %dil ; X64-NEXT: movl %edi, %eax -; X64-NEXT: rolb $4, %al -; X64-NEXT: movl %eax, %ecx -; X64-NEXT: andb $51, %cl -; X64-NEXT: shlb $2, %cl -; X64-NEXT: andb $-52, %al -; X64-NEXT: shrb $2, %al -; X64-NEXT: orb %cl, %al -; X64-NEXT: movl %eax, %ecx -; X64-NEXT: andb $80, %cl -; X64-NEXT: addb %cl, %cl -; X64-NEXT: andb $-96, %al -; X64-NEXT: shrb %al -; X64-NEXT: orb %cl, %al +; X64-NEXT: andb $51, %al +; X64-NEXT: shlb $2, %al +; X64-NEXT: andb $-52, %dil +; X64-NEXT: shrb $2, %dil +; X64-NEXT: orb %al, %dil +; X64-NEXT: movl %edi, %eax +; X64-NEXT: andb $80, %al +; X64-NEXT: addb %al, %al +; X64-NEXT: andb $-96, %dil +; X64-NEXT: shrb %dil +; X64-NEXT: leal (%rdi,%rax), %eax ; X64-NEXT: shrb $4, %al ; X64-NEXT: # kill: def $al killed $al killed $eax ; X64-NEXT: retq diff --git a/llvm/test/CodeGen/X86/bool-math.ll b/llvm/test/CodeGen/X86/bool-math.ll index 3a7193bd631..c0a7a5bd4fb 100644 --- a/llvm/test/CodeGen/X86/bool-math.ll +++ b/llvm/test/CodeGen/X86/bool-math.ll @@ -47,9 +47,9 @@ define i32 @sub_zext_cmp_mask_wider_result(i8 %x) { define i8 @sub_zext_cmp_mask_narrower_result(i32 %x) { ; X64-LABEL: sub_zext_cmp_mask_narrower_result: ; X64: # %bb.0: -; X64-NEXT: movl %edi, %eax -; X64-NEXT: andb $1, %al -; X64-NEXT: orb $46, %al +; X64-NEXT: # kill: def $edi killed $edi def $rdi +; X64-NEXT: andb $1, %dil +; X64-NEXT: leal 46(%rdi), %eax ; X64-NEXT: # kill: def $al killed $al killed $eax ; X64-NEXT: retq ; diff --git a/llvm/test/CodeGen/X86/fshl.ll b/llvm/test/CodeGen/X86/fshl.ll index ccf451e0451..0e1bcb2e26d 100644 --- a/llvm/test/CodeGen/X86/fshl.ll +++ b/llvm/test/CodeGen/X86/fshl.ll @@ -381,10 +381,11 @@ define i8 @const_shift_i8(i8 %x, i8 %y) nounwind { ; ; X64-LABEL: const_shift_i8: ; X64: # %bb.0: -; X64-NEXT: movl %edi, %eax +; X64-NEXT: # kill: def $esi killed $esi def $rsi +; X64-NEXT: # kill: def $edi killed $edi def $rdi ; X64-NEXT: shrb %sil -; X64-NEXT: shlb $7, %al -; X64-NEXT: orb %sil, %al +; X64-NEXT: shlb $7, %dil +; X64-NEXT: leal (%rdi,%rsi), %eax ; X64-NEXT: # kill: def $al killed $al killed $eax ; X64-NEXT: retq %tmp = tail call i8 @llvm.fshl.i8(i8 %x, i8 %y, i8 7) diff --git a/llvm/test/CodeGen/X86/select.ll b/llvm/test/CodeGen/X86/select.ll index 99c4a99b6ed..558dc7db42d 100644 --- a/llvm/test/CodeGen/X86/select.ll +++ b/llvm/test/CodeGen/X86/select.ll @@ -1088,14 +1088,25 @@ define i8 @test18(i32 %x, i8 zeroext %a, i8 zeroext %b) nounwind { } define i32 @trunc_select_miscompile(i32 %a, i1 zeroext %cc) { -; CHECK-LABEL: trunc_select_miscompile: -; CHECK: ## %bb.0: -; CHECK-NEXT: movl %esi, %ecx -; CHECK-NEXT: movl %edi, %eax -; CHECK-NEXT: orb $2, %cl -; CHECK-NEXT: ## kill: def $cl killed $cl killed $ecx -; CHECK-NEXT: shll %cl, %eax -; CHECK-NEXT: retq +; GENERIC-LABEL: trunc_select_miscompile: +; GENERIC: ## %bb.0: +; GENERIC-NEXT: ## kill: def $esi killed $esi def $rsi +; GENERIC-NEXT: movl %edi, %eax +; GENERIC-NEXT: leal 2(%rsi), %ecx +; GENERIC-NEXT: ## kill: def $cl killed $cl killed $ecx +; GENERIC-NEXT: shll %cl, %eax +; GENERIC-NEXT: retq +; +; ATOM-LABEL: trunc_select_miscompile: +; ATOM: ## %bb.0: +; ATOM-NEXT: ## kill: def $esi killed $esi def $rsi +; ATOM-NEXT: leal 2(%rsi), %ecx +; ATOM-NEXT: movl %edi, %eax +; ATOM-NEXT: ## kill: def $cl killed $cl killed $ecx +; ATOM-NEXT: shll %cl, %eax +; ATOM-NEXT: nop +; ATOM-NEXT: nop +; ATOM-NEXT: retq ; ; ATHLON-LABEL: trunc_select_miscompile: ; ATHLON: ## %bb.0: diff --git a/llvm/test/CodeGen/X86/select_const.ll b/llvm/test/CodeGen/X86/select_const.ll index 8ab603d396f..8f7989e2bed 100644 --- a/llvm/test/CodeGen/X86/select_const.ll +++ b/llvm/test/CodeGen/X86/select_const.ll @@ -328,9 +328,9 @@ define i32 @sel_neg1_1_32(i32 %x) { define i8 @select_pow2_diff(i1 zeroext %cond) { ; CHECK-LABEL: select_pow2_diff: ; CHECK: # %bb.0: -; CHECK-NEXT: movl %edi, %eax -; CHECK-NEXT: shlb $4, %al -; CHECK-NEXT: orb $3, %al +; CHECK-NEXT: # kill: def $edi killed $edi def $rdi +; CHECK-NEXT: shlb $4, %dil +; CHECK-NEXT: leal 3(%rdi), %eax ; CHECK-NEXT: # kill: def $al killed $al killed $eax ; CHECK-NEXT: retq %sel = select i1 %cond, i8 19, i8 3 diff --git a/llvm/test/CodeGen/X86/unfold-masked-merge-scalar-constmask-innerouter.ll b/llvm/test/CodeGen/X86/unfold-masked-merge-scalar-constmask-innerouter.ll index ac554781653..8daa0a6e969 100644 --- a/llvm/test/CodeGen/X86/unfold-masked-merge-scalar-constmask-innerouter.ll +++ b/llvm/test/CodeGen/X86/unfold-masked-merge-scalar-constmask-innerouter.ll @@ -10,19 +10,21 @@ define i8 @out8_constmask(i8 %x, i8 %y) { ; CHECK-NOBMI-LABEL: out8_constmask: ; CHECK-NOBMI: # %bb.0: -; CHECK-NOBMI-NEXT: movl %esi, %eax +; CHECK-NOBMI-NEXT: # kill: def $esi killed $esi def $rsi +; CHECK-NOBMI-NEXT: # kill: def $edi killed $edi def $rdi ; CHECK-NOBMI-NEXT: andb $60, %dil -; CHECK-NOBMI-NEXT: andb $-61, %al -; CHECK-NOBMI-NEXT: orb %dil, %al +; CHECK-NOBMI-NEXT: andb $-61, %sil +; CHECK-NOBMI-NEXT: leal (%rsi,%rdi), %eax ; CHECK-NOBMI-NEXT: # kill: def $al killed $al killed $eax ; CHECK-NOBMI-NEXT: retq ; ; CHECK-BMI-LABEL: out8_constmask: ; CHECK-BMI: # %bb.0: -; CHECK-BMI-NEXT: movl %esi, %eax +; CHECK-BMI-NEXT: # kill: def $esi killed $esi def $rsi +; CHECK-BMI-NEXT: # kill: def $edi killed $edi def $rdi ; CHECK-BMI-NEXT: andb $60, %dil -; CHECK-BMI-NEXT: andb $-61, %al -; CHECK-BMI-NEXT: orb %dil, %al +; CHECK-BMI-NEXT: andb $-61, %sil +; CHECK-BMI-NEXT: leal (%rsi,%rdi), %eax ; CHECK-BMI-NEXT: # kill: def $al killed $al killed $eax ; CHECK-BMI-NEXT: retq %mx = and i8 %x, 60 diff --git a/llvm/test/CodeGen/X86/unfold-masked-merge-scalar-constmask-interleavedbits.ll b/llvm/test/CodeGen/X86/unfold-masked-merge-scalar-constmask-interleavedbits.ll index 95de3bb2e03..33b6b66b66d 100644 --- a/llvm/test/CodeGen/X86/unfold-masked-merge-scalar-constmask-interleavedbits.ll +++ b/llvm/test/CodeGen/X86/unfold-masked-merge-scalar-constmask-interleavedbits.ll @@ -10,19 +10,21 @@ define i8 @out8_constmask(i8 %x, i8 %y) { ; CHECK-NOBMI-LABEL: out8_constmask: ; CHECK-NOBMI: # %bb.0: -; CHECK-NOBMI-NEXT: movl %esi, %eax +; CHECK-NOBMI-NEXT: # kill: def $esi killed $esi def $rsi +; CHECK-NOBMI-NEXT: # kill: def $edi killed $edi def $rdi ; CHECK-NOBMI-NEXT: andb $85, %dil -; CHECK-NOBMI-NEXT: andb $-86, %al -; CHECK-NOBMI-NEXT: orb %dil, %al +; CHECK-NOBMI-NEXT: andb $-86, %sil +; CHECK-NOBMI-NEXT: leal (%rsi,%rdi), %eax ; CHECK-NOBMI-NEXT: # kill: def $al killed $al killed $eax ; CHECK-NOBMI-NEXT: retq ; ; CHECK-BMI-LABEL: out8_constmask: ; CHECK-BMI: # %bb.0: -; CHECK-BMI-NEXT: movl %esi, %eax +; CHECK-BMI-NEXT: # kill: def $esi killed $esi def $rsi +; CHECK-BMI-NEXT: # kill: def $edi killed $edi def $rdi ; CHECK-BMI-NEXT: andb $85, %dil -; CHECK-BMI-NEXT: andb $-86, %al -; CHECK-BMI-NEXT: orb %dil, %al +; CHECK-BMI-NEXT: andb $-86, %sil +; CHECK-BMI-NEXT: leal (%rsi,%rdi), %eax ; CHECK-BMI-NEXT: # kill: def $al killed $al killed $eax ; CHECK-BMI-NEXT: retq %mx = and i8 %x, 85 diff --git a/llvm/test/CodeGen/X86/unfold-masked-merge-scalar-constmask-interleavedbytehalves.ll b/llvm/test/CodeGen/X86/unfold-masked-merge-scalar-constmask-interleavedbytehalves.ll index c7579e2aa9d..bbc987d4474 100644 --- a/llvm/test/CodeGen/X86/unfold-masked-merge-scalar-constmask-interleavedbytehalves.ll +++ b/llvm/test/CodeGen/X86/unfold-masked-merge-scalar-constmask-interleavedbytehalves.ll @@ -10,19 +10,21 @@ define i8 @out8_constmask(i8 %x, i8 %y) { ; CHECK-NOBMI-LABEL: out8_constmask: ; CHECK-NOBMI: # %bb.0: -; CHECK-NOBMI-NEXT: movl %esi, %eax +; CHECK-NOBMI-NEXT: # kill: def $esi killed $esi def $rsi +; CHECK-NOBMI-NEXT: # kill: def $edi killed $edi def $rdi ; CHECK-NOBMI-NEXT: andb $15, %dil -; CHECK-NOBMI-NEXT: andb $-16, %al -; CHECK-NOBMI-NEXT: orb %dil, %al +; CHECK-NOBMI-NEXT: andb $-16, %sil +; CHECK-NOBMI-NEXT: leal (%rsi,%rdi), %eax ; CHECK-NOBMI-NEXT: # kill: def $al killed $al killed $eax ; CHECK-NOBMI-NEXT: retq ; ; CHECK-BMI-LABEL: out8_constmask: ; CHECK-BMI: # %bb.0: -; CHECK-BMI-NEXT: movl %esi, %eax +; CHECK-BMI-NEXT: # kill: def $esi killed $esi def $rsi +; CHECK-BMI-NEXT: # kill: def $edi killed $edi def $rdi ; CHECK-BMI-NEXT: andb $15, %dil -; CHECK-BMI-NEXT: andb $-16, %al -; CHECK-BMI-NEXT: orb %dil, %al +; CHECK-BMI-NEXT: andb $-16, %sil +; CHECK-BMI-NEXT: leal (%rsi,%rdi), %eax ; CHECK-BMI-NEXT: # kill: def $al killed $al killed $eax ; CHECK-BMI-NEXT: retq %mx = and i8 %x, 15 diff --git a/llvm/test/CodeGen/X86/unfold-masked-merge-scalar-constmask-lowhigh.ll b/llvm/test/CodeGen/X86/unfold-masked-merge-scalar-constmask-lowhigh.ll index 4a63eba04d8..78faa3ca717 100644 --- a/llvm/test/CodeGen/X86/unfold-masked-merge-scalar-constmask-lowhigh.ll +++ b/llvm/test/CodeGen/X86/unfold-masked-merge-scalar-constmask-lowhigh.ll @@ -10,19 +10,21 @@ define i8 @out8_constmask(i8 %x, i8 %y) { ; CHECK-NOBMI-LABEL: out8_constmask: ; CHECK-NOBMI: # %bb.0: -; CHECK-NOBMI-NEXT: movl %esi, %eax +; CHECK-NOBMI-NEXT: # kill: def $esi killed $esi def $rsi +; CHECK-NOBMI-NEXT: # kill: def $edi killed $edi def $rdi ; CHECK-NOBMI-NEXT: andb $15, %dil -; CHECK-NOBMI-NEXT: andb $-16, %al -; CHECK-NOBMI-NEXT: orb %dil, %al +; CHECK-NOBMI-NEXT: andb $-16, %sil +; CHECK-NOBMI-NEXT: leal (%rsi,%rdi), %eax ; CHECK-NOBMI-NEXT: # kill: def $al killed $al killed $eax ; CHECK-NOBMI-NEXT: retq ; ; CHECK-BMI-LABEL: out8_constmask: ; CHECK-BMI: # %bb.0: -; CHECK-BMI-NEXT: movl %esi, %eax +; CHECK-BMI-NEXT: # kill: def $esi killed $esi def $rsi +; CHECK-BMI-NEXT: # kill: def $edi killed $edi def $rdi ; CHECK-BMI-NEXT: andb $15, %dil -; CHECK-BMI-NEXT: andb $-16, %al -; CHECK-BMI-NEXT: orb %dil, %al +; CHECK-BMI-NEXT: andb $-16, %sil +; CHECK-BMI-NEXT: leal (%rsi,%rdi), %eax ; CHECK-BMI-NEXT: # kill: def $al killed $al killed $eax ; CHECK-BMI-NEXT: retq %mx = and i8 %x, 15 diff --git a/llvm/test/CodeGen/X86/vector-bitreverse.ll b/llvm/test/CodeGen/X86/vector-bitreverse.ll index df1b5041caf..a564bbc1743 100644 --- a/llvm/test/CodeGen/X86/vector-bitreverse.ll +++ b/llvm/test/CodeGen/X86/vector-bitreverse.ll @@ -14,39 +14,39 @@ define i8 @test_bitreverse_i8(i8 %a) nounwind { ; SSE-LABEL: test_bitreverse_i8: ; SSE: # %bb.0: +; SSE-NEXT: # kill: def $edi killed $edi def $rdi +; SSE-NEXT: rolb $4, %dil ; SSE-NEXT: movl %edi, %eax -; SSE-NEXT: rolb $4, %al -; SSE-NEXT: movl %eax, %ecx -; SSE-NEXT: andb $51, %cl -; SSE-NEXT: shlb $2, %cl -; SSE-NEXT: andb $-52, %al -; SSE-NEXT: shrb $2, %al -; SSE-NEXT: orb %cl, %al -; SSE-NEXT: movl %eax, %ecx -; SSE-NEXT: andb $85, %cl -; SSE-NEXT: addb %cl, %cl -; SSE-NEXT: andb $-86, %al -; SSE-NEXT: shrb %al -; SSE-NEXT: orb %cl, %al +; SSE-NEXT: andb $51, %al +; SSE-NEXT: shlb $2, %al +; SSE-NEXT: andb $-52, %dil +; SSE-NEXT: shrb $2, %dil +; SSE-NEXT: orb %al, %dil +; SSE-NEXT: movl %edi, %eax +; SSE-NEXT: andb $85, %al +; SSE-NEXT: addb %al, %al +; SSE-NEXT: andb $-86, %dil +; SSE-NEXT: shrb %dil +; SSE-NEXT: leal (%rdi,%rax), %eax ; SSE-NEXT: # kill: def $al killed $al killed $eax ; SSE-NEXT: retq ; ; AVX-LABEL: test_bitreverse_i8: ; AVX: # %bb.0: +; AVX-NEXT: # kill: def $edi killed $edi def $rdi +; AVX-NEXT: rolb $4, %dil ; AVX-NEXT: movl %edi, %eax -; AVX-NEXT: rolb $4, %al -; AVX-NEXT: movl %eax, %ecx -; AVX-NEXT: andb $51, %cl -; AVX-NEXT: shlb $2, %cl -; AVX-NEXT: andb $-52, %al -; AVX-NEXT: shrb $2, %al -; AVX-NEXT: orb %cl, %al -; AVX-NEXT: movl %eax, %ecx -; AVX-NEXT: andb $85, %cl -; AVX-NEXT: addb %cl, %cl -; AVX-NEXT: andb $-86, %al -; AVX-NEXT: shrb %al -; AVX-NEXT: orb %cl, %al +; AVX-NEXT: andb $51, %al +; AVX-NEXT: shlb $2, %al +; AVX-NEXT: andb $-52, %dil +; AVX-NEXT: shrb $2, %dil +; AVX-NEXT: orb %al, %dil +; AVX-NEXT: movl %edi, %eax +; AVX-NEXT: andb $85, %al +; AVX-NEXT: addb %al, %al +; AVX-NEXT: andb $-86, %dil +; AVX-NEXT: shrb %dil +; AVX-NEXT: leal (%rdi,%rax), %eax ; AVX-NEXT: # kill: def $al killed $al killed $eax ; AVX-NEXT: retq ; |