diff options
author | Simon Pilgrim <llvm-dev@redking.me.uk> | 2017-12-18 18:31:02 +0000 |
---|---|---|
committer | Simon Pilgrim <llvm-dev@redking.me.uk> | 2017-12-18 18:31:02 +0000 |
commit | f947137ed0b6486cb0dc8cd47496e98899fc2987 (patch) | |
tree | 247ff63247ae1ad734d8453f03d5dfe3b660d2c7 /llvm | |
parent | 5439a70d973d689ec3d35bea523b9e05204f13c8 (diff) | |
download | bcm5719-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.ll | 90 |
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 |