summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test/CodeGen')
-rw-r--r--llvm/test/CodeGen/X86/bitreverse.ll52
-rw-r--r--llvm/test/CodeGen/X86/bool-math.ll6
-rw-r--r--llvm/test/CodeGen/X86/fshl.ll7
-rw-r--r--llvm/test/CodeGen/X86/select.ll27
-rw-r--r--llvm/test/CodeGen/X86/select_const.ll6
-rw-r--r--llvm/test/CodeGen/X86/unfold-masked-merge-scalar-constmask-innerouter.ll14
-rw-r--r--llvm/test/CodeGen/X86/unfold-masked-merge-scalar-constmask-interleavedbits.ll14
-rw-r--r--llvm/test/CodeGen/X86/unfold-masked-merge-scalar-constmask-interleavedbytehalves.ll14
-rw-r--r--llvm/test/CodeGen/X86/unfold-masked-merge-scalar-constmask-lowhigh.ll14
-rw-r--r--llvm/test/CodeGen/X86/vector-bitreverse.ll52
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
;
OpenPOWER on IntegriCloud