summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
authorSimon Pilgrim <llvm-dev@redking.me.uk>2017-12-18 18:31:02 +0000
committerSimon Pilgrim <llvm-dev@redking.me.uk>2017-12-18 18:31:02 +0000
commitf947137ed0b6486cb0dc8cd47496e98899fc2987 (patch)
tree247ff63247ae1ad734d8453f03d5dfe3b660d2c7 /llvm
parent5439a70d973d689ec3d35bea523b9e05204f13c8 (diff)
downloadbcm5719-llvm-f947137ed0b6486cb0dc8cd47496e98899fc2987.tar.gz
bcm5719-llvm-f947137ed0b6486cb0dc8cd47496e98899fc2987.zip
[X86] Regenerate test to improve codegen testing for D41350
llvm-svn: 321003
Diffstat (limited to 'llvm')
-rw-r--r--llvm/test/CodeGen/X86/h-registers-1.ll90
1 files changed, 75 insertions, 15 deletions
diff --git a/llvm/test/CodeGen/X86/h-registers-1.ll b/llvm/test/CodeGen/X86/h-registers-1.ll
index 469d5517b40..9daf563455d 100644
--- a/llvm/test/CodeGen/X86/h-registers-1.ll
+++ b/llvm/test/CodeGen/X86/h-registers-1.ll
@@ -1,24 +1,84 @@
-; RUN: llc -mattr=-bmi < %s -mtriple=x86_64-linux | FileCheck %s
-; RUN: llc -mattr=-bmi < %s -mtriple=x86_64-linux-gnux32 | FileCheck %s
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
+; RUN: llc < %s -mtriple=x86_64-linux -mattr=-bmi | FileCheck %s --check-prefix=CHECK
+; RUN: llc < %s -mtriple=x86_64-linux-gnux32 -mattr=-bmi | FileCheck %s --check-prefix=GNUX32
; LLVM creates virtual registers for values live across blocks
; based on the type of the value. Make sure that the extracts
; here use the GR64_NOREX register class for their result,
; instead of plain GR64.
-; CHECK: foo:
-; CHECK: movzbl %{{[abcd]}}h, %e
-; CHECK: movzbl %{{[abcd]}}h, %e
-; CHECK: movzbl %{{[abcd]}}h, %e
-; CHECK: movzbl %{{[abcd]}}h, %e
-; CHECK: movzbl %{{[abcd]}}h, %e
-; CHECK: movzbl %{{[abcd]}}h, %e
-; CHECK: movzbl %{{[abcd]}}h, %e
-; CHECK: movzbl %{{[abcd]}}h, %e
-; CHECK: ret
-
-define i64 @foo(i64 %a, i64 %b, i64 %c, i64 %d,
- i64 %e, i64 %f, i64 %g, i64 %h) {
+define i64 @foo(i64 %a, i64 %b, i64 %c, i64 %d, i64 %e, i64 %f, i64 %g, i64 %h) {
+; CHECK-LABEL: foo:
+; CHECK: # %bb.0:
+; CHECK-NEXT: pushq %rbp
+; CHECK-NEXT: .cfi_def_cfa_offset 16
+; CHECK-NEXT: pushq %rbx
+; CHECK-NEXT: .cfi_def_cfa_offset 24
+; CHECK-NEXT: .cfi_offset %rbx, -24
+; CHECK-NEXT: .cfi_offset %rbp, -16
+; CHECK-NEXT: movq %rsi, %rax
+; CHECK-NEXT: movq %rdi, %rbx
+; CHECK-NEXT: movzbl %bh, %esi # NOREX
+; CHECK-NEXT: movzbl %ah, %eax # NOREX
+; CHECK-NEXT: movq %rax, %r10
+; CHECK-NEXT: movzbl %dh, %edx # NOREX
+; CHECK-NEXT: movzbl %ch, %eax # NOREX
+; CHECK-NEXT: movq %rax, %r11
+; CHECK-NEXT: movq %r8, %rax
+; CHECK-NEXT: movzbl %ah, %ecx # NOREX
+; CHECK-NEXT: movq %r9, %rax
+; CHECK-NEXT: movzbl %ah, %ebp # NOREX
+; CHECK-NEXT: movl {{[0-9]+}}(%rsp), %eax
+; CHECK-NEXT: movzbl %ah, %eax # NOREX
+; CHECK-NEXT: movl {{[0-9]+}}(%rsp), %ebx
+; CHECK-NEXT: movzbl %bh, %edi # NOREX
+; CHECK-NEXT: movq %r10, %r8
+; CHECK-NEXT: addq %r8, %rsi
+; CHECK-NEXT: addq %r11, %rdx
+; CHECK-NEXT: addq %rsi, %rdx
+; CHECK-NEXT: addq %rbp, %rcx
+; CHECK-NEXT: addq %rdi, %rax
+; CHECK-NEXT: addq %rcx, %rax
+; CHECK-NEXT: addq %rdx, %rax
+; CHECK-NEXT: popq %rbx
+; CHECK-NEXT: popq %rbp
+; CHECK-NEXT: retq
+;
+; GNUX32-LABEL: foo:
+; GNUX32: # %bb.0:
+; GNUX32-NEXT: pushq %rbp
+; GNUX32-NEXT: .cfi_def_cfa_offset 16
+; GNUX32-NEXT: pushq %rbx
+; GNUX32-NEXT: .cfi_def_cfa_offset 24
+; GNUX32-NEXT: .cfi_offset %rbx, -24
+; GNUX32-NEXT: .cfi_offset %rbp, -16
+; GNUX32-NEXT: movq %rsi, %rax
+; GNUX32-NEXT: movq %rdi, %rbx
+; GNUX32-NEXT: movzbl %bh, %esi # NOREX
+; GNUX32-NEXT: movzbl %ah, %eax # NOREX
+; GNUX32-NEXT: movq %rax, %r10
+; GNUX32-NEXT: movzbl %dh, %edx # NOREX
+; GNUX32-NEXT: movzbl %ch, %eax # NOREX
+; GNUX32-NEXT: movq %rax, %r11
+; GNUX32-NEXT: movq %r8, %rax
+; GNUX32-NEXT: movzbl %ah, %ecx # NOREX
+; GNUX32-NEXT: movq %r9, %rax
+; GNUX32-NEXT: movzbl %ah, %ebp # NOREX
+; GNUX32-NEXT: movl {{[0-9]+}}(%esp), %eax
+; GNUX32-NEXT: movzbl %ah, %eax # NOREX
+; GNUX32-NEXT: movl {{[0-9]+}}(%esp), %ebx
+; GNUX32-NEXT: movzbl %bh, %edi # NOREX
+; GNUX32-NEXT: movq %r10, %r8
+; GNUX32-NEXT: addq %r8, %rsi
+; GNUX32-NEXT: addq %r11, %rdx
+; GNUX32-NEXT: addq %rsi, %rdx
+; GNUX32-NEXT: addq %rbp, %rcx
+; GNUX32-NEXT: addq %rdi, %rax
+; GNUX32-NEXT: addq %rcx, %rax
+; GNUX32-NEXT: addq %rdx, %rax
+; GNUX32-NEXT: popq %rbx
+; GNUX32-NEXT: popq %rbp
+; GNUX32-NEXT: retq
%sa = lshr i64 %a, 8
%A = and i64 %sa, 255
%sb = lshr i64 %b, 8
OpenPOWER on IntegriCloud