diff options
Diffstat (limited to 'llvm/test/CodeGen/X86/2007-01-13-StackPtrIndex.ll')
-rw-r--r-- | llvm/test/CodeGen/X86/2007-01-13-StackPtrIndex.ll | 249 |
1 files changed, 247 insertions, 2 deletions
diff --git a/llvm/test/CodeGen/X86/2007-01-13-StackPtrIndex.ll b/llvm/test/CodeGen/X86/2007-01-13-StackPtrIndex.ll index f8975e6c3b5..08ddd422284 100644 --- a/llvm/test/CodeGen/X86/2007-01-13-StackPtrIndex.ll +++ b/llvm/test/CodeGen/X86/2007-01-13-StackPtrIndex.ll @@ -1,5 +1,5 @@ -; RUN: llc < %s -mtriple=x86_64-- > %t -; RUN: not grep ",%rsp)" %t +; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py +; RUN: llc < %s -mtriple=x86_64-- | FileCheck %s ; PR1103 target datalayout = "e-p:64:64" @@ -7,6 +7,251 @@ target datalayout = "e-p:64:64" define void @foo(i32* %a0, i32* %a1, i32* %a2, i32* %a3, i32* %a4, i32* %a5) { +; CHECK-LABEL: foo: +; CHECK: # %bb.0: # %b +; CHECK-NEXT: pushq %rbp +; CHECK-NEXT: .cfi_def_cfa_offset 16 +; CHECK-NEXT: .cfi_offset %rbp, -16 +; CHECK-NEXT: movq %rsp, %rbp +; CHECK-NEXT: .cfi_def_cfa_register %rbp +; CHECK-NEXT: movslq (%rdi), %rax +; CHECK-NEXT: movslq (%rsi), %r8 +; CHECK-NEXT: movslq (%rdx), %r10 +; CHECK-NEXT: movl (%rcx), %edi +; CHECK-NEXT: movslq (%r9), %rcx +; CHECK-NEXT: movq %rsp, %rdx +; CHECK-NEXT: subl %eax, %r8d +; CHECK-NEXT: movslq %r8d, %rsi +; CHECK-NEXT: js .LBB0_1 +; CHECK-NEXT: # %bb.11: # %b63 +; CHECK-NEXT: testq %rsi, %rsi +; CHECK-NEXT: js .LBB0_14 +; CHECK-NEXT: # %bb.12: +; CHECK-NEXT: xorl %eax, %eax +; CHECK-NEXT: .p2align 4, 0x90 +; CHECK-NEXT: .LBB0_13: # %a25b +; CHECK-NEXT: # =>This Inner Loop Header: Depth=1 +; CHECK-NEXT: testb %al, %al +; CHECK-NEXT: je .LBB0_13 +; CHECK-NEXT: .LBB0_14: # %b85 +; CHECK-NEXT: movb $1, %al +; CHECK-NEXT: testb %al, %al +; CHECK-NEXT: jne .LBB0_1 +; CHECK-NEXT: # %bb.15: +; CHECK-NEXT: xorl %eax, %eax +; CHECK-NEXT: .p2align 4, 0x90 +; CHECK-NEXT: .LBB0_16: # %a25b140 +; CHECK-NEXT: # =>This Inner Loop Header: Depth=1 +; CHECK-NEXT: testb %al, %al +; CHECK-NEXT: je .LBB0_16 +; CHECK-NEXT: .LBB0_1: # %a29b +; CHECK-NEXT: cmpl %r10d, %edi +; CHECK-NEXT: js .LBB0_10 +; CHECK-NEXT: # %bb.2: # %b158 +; CHECK-NEXT: xorl %edi, %edi +; CHECK-NEXT: xorps %xmm0, %xmm0 +; CHECK-NEXT: movb $1, %r10b +; CHECK-NEXT: jmp .LBB0_3 +; CHECK-NEXT: .p2align 4, 0x90 +; CHECK-NEXT: .LBB0_9: # %b1606 +; CHECK-NEXT: # in Loop: Header=BB0_3 Depth=1 +; CHECK-NEXT: testb %dil, %dil +; CHECK-NEXT: je .LBB0_10 +; CHECK-NEXT: .LBB0_3: # %a29b173 +; CHECK-NEXT: # =>This Loop Header: Depth=1 +; CHECK-NEXT: # Child Loop BB0_37 Depth 2 +; CHECK-NEXT: # Child Loop BB0_19 Depth 2 +; CHECK-NEXT: # Child Loop BB0_20 Depth 2 +; CHECK-NEXT: # Child Loop BB0_21 Depth 3 +; CHECK-NEXT: # Child Loop BB0_23 Depth 2 +; CHECK-NEXT: # Child Loop BB0_24 Depth 3 +; CHECK-NEXT: # Child Loop BB0_26 Depth 2 +; CHECK-NEXT: # Child Loop BB0_38 Depth 3 +; CHECK-NEXT: # Child Loop BB0_29 Depth 3 +; CHECK-NEXT: # Child Loop BB0_30 Depth 2 +; CHECK-NEXT: # Child Loop BB0_39 Depth 3 +; CHECK-NEXT: # Child Loop BB0_33 Depth 3 +; CHECK-NEXT: # Child Loop BB0_34 Depth 2 +; CHECK-NEXT: # Child Loop BB0_36 Depth 2 +; CHECK-NEXT: testl %r8d, %r8d +; CHECK-NEXT: js .LBB0_4 +; CHECK-NEXT: # %bb.17: # %b179 +; CHECK-NEXT: # in Loop: Header=BB0_3 Depth=1 +; CHECK-NEXT: testq %rsi, %rsi +; CHECK-NEXT: js .LBB0_18 +; CHECK-NEXT: .p2align 4, 0x90 +; CHECK-NEXT: .LBB0_37: # %a30b +; CHECK-NEXT: # Parent Loop BB0_3 Depth=1 +; CHECK-NEXT: # => This Inner Loop Header: Depth=2 +; CHECK-NEXT: testb %dil, %dil +; CHECK-NEXT: je .LBB0_37 +; CHECK-NEXT: .LBB0_18: # %b188 +; CHECK-NEXT: # in Loop: Header=BB0_3 Depth=1 +; CHECK-NEXT: testb %r10b, %r10b +; CHECK-NEXT: jne .LBB0_4 +; CHECK-NEXT: .p2align 4, 0x90 +; CHECK-NEXT: .LBB0_19: # %a30b294 +; CHECK-NEXT: # Parent Loop BB0_3 Depth=1 +; CHECK-NEXT: # => This Inner Loop Header: Depth=2 +; CHECK-NEXT: testb %dil, %dil +; CHECK-NEXT: je .LBB0_19 +; CHECK-NEXT: .LBB0_4: # %a33b +; CHECK-NEXT: # in Loop: Header=BB0_3 Depth=1 +; CHECK-NEXT: movl %ecx, %eax +; CHECK-NEXT: orl %r8d, %eax +; CHECK-NEXT: movl %eax, %r9d +; CHECK-NEXT: shrl $31, %r9d +; CHECK-NEXT: testl %eax, %eax +; CHECK-NEXT: jns .LBB0_20 +; CHECK-NEXT: .LBB0_5: # %a50b +; CHECK-NEXT: # in Loop: Header=BB0_3 Depth=1 +; CHECK-NEXT: movl %r8d, %eax +; CHECK-NEXT: orl %ecx, %eax +; CHECK-NEXT: movl %eax, %r11d +; CHECK-NEXT: shrl $31, %r11d +; CHECK-NEXT: testl %eax, %eax +; CHECK-NEXT: jns .LBB0_26 +; CHECK-NEXT: .LBB0_6: # %a57b +; CHECK-NEXT: # in Loop: Header=BB0_3 Depth=1 +; CHECK-NEXT: testb %r9b, %r9b +; CHECK-NEXT: je .LBB0_30 +; CHECK-NEXT: .LBB0_7: # %a66b +; CHECK-NEXT: # in Loop: Header=BB0_3 Depth=1 +; CHECK-NEXT: testb %r11b, %r11b +; CHECK-NEXT: jne .LBB0_8 +; CHECK-NEXT: .p2align 4, 0x90 +; CHECK-NEXT: .LBB0_34: # %a74b +; CHECK-NEXT: # Parent Loop BB0_3 Depth=1 +; CHECK-NEXT: # => This Inner Loop Header: Depth=2 +; CHECK-NEXT: testb %dil, %dil +; CHECK-NEXT: jne .LBB0_34 +; CHECK-NEXT: # %bb.35: # %b1582 +; CHECK-NEXT: # in Loop: Header=BB0_34 Depth=2 +; CHECK-NEXT: testb %dil, %dil +; CHECK-NEXT: jne .LBB0_34 +; CHECK-NEXT: .LBB0_8: # %a93b +; CHECK-NEXT: # in Loop: Header=BB0_3 Depth=1 +; CHECK-NEXT: testl %r8d, %r8d +; CHECK-NEXT: js .LBB0_9 +; CHECK-NEXT: .p2align 4, 0x90 +; CHECK-NEXT: .LBB0_36: # %a97b +; CHECK-NEXT: # Parent Loop BB0_3 Depth=1 +; CHECK-NEXT: # => This Inner Loop Header: Depth=2 +; CHECK-NEXT: movss {{.*#+}} xmm1 = mem[0],zero,zero,zero +; CHECK-NEXT: addss %xmm0, %xmm1 +; CHECK-NEXT: addss %xmm0, %xmm1 +; CHECK-NEXT: movss {{.*#+}} xmm2 = mem[0],zero,zero,zero +; CHECK-NEXT: addss %xmm0, %xmm2 +; CHECK-NEXT: addss %xmm1, %xmm2 +; CHECK-NEXT: movss %xmm2, {{.*}}(%rip) +; CHECK-NEXT: testb %dil, %dil +; CHECK-NEXT: jne .LBB0_36 +; CHECK-NEXT: jmp .LBB0_9 +; CHECK-NEXT: .p2align 4, 0x90 +; CHECK-NEXT: .LBB0_22: # %b463 +; CHECK-NEXT: # in Loop: Header=BB0_20 Depth=2 +; CHECK-NEXT: testb %dil, %dil +; CHECK-NEXT: je .LBB0_23 +; CHECK-NEXT: .LBB0_20: # %b341 +; CHECK-NEXT: # Parent Loop BB0_3 Depth=1 +; CHECK-NEXT: # => This Loop Header: Depth=2 +; CHECK-NEXT: # Child Loop BB0_21 Depth 3 +; CHECK-NEXT: testq %rcx, %rcx +; CHECK-NEXT: js .LBB0_22 +; CHECK-NEXT: .p2align 4, 0x90 +; CHECK-NEXT: .LBB0_21: # %a35b +; CHECK-NEXT: # Parent Loop BB0_3 Depth=1 +; CHECK-NEXT: # Parent Loop BB0_20 Depth=2 +; CHECK-NEXT: # => This Inner Loop Header: Depth=3 +; CHECK-NEXT: testb %dil, %dil +; CHECK-NEXT: je .LBB0_21 +; CHECK-NEXT: jmp .LBB0_22 +; CHECK-NEXT: .p2align 4, 0x90 +; CHECK-NEXT: .LBB0_28: # %b1016 +; CHECK-NEXT: # in Loop: Header=BB0_26 Depth=2 +; CHECK-NEXT: testq %rcx, %rcx +; CHECK-NEXT: jle .LBB0_6 +; CHECK-NEXT: .LBB0_26: # %b858 +; CHECK-NEXT: # Parent Loop BB0_3 Depth=1 +; CHECK-NEXT: # => This Loop Header: Depth=2 +; CHECK-NEXT: # Child Loop BB0_38 Depth 3 +; CHECK-NEXT: # Child Loop BB0_29 Depth 3 +; CHECK-NEXT: testq %rsi, %rsi +; CHECK-NEXT: js .LBB0_27 +; CHECK-NEXT: .p2align 4, 0x90 +; CHECK-NEXT: .LBB0_38: # %a53b +; CHECK-NEXT: # Parent Loop BB0_3 Depth=1 +; CHECK-NEXT: # Parent Loop BB0_26 Depth=2 +; CHECK-NEXT: # => This Inner Loop Header: Depth=3 +; CHECK-NEXT: testb %dil, %dil +; CHECK-NEXT: je .LBB0_38 +; CHECK-NEXT: .LBB0_27: # %b879 +; CHECK-NEXT: # in Loop: Header=BB0_26 Depth=2 +; CHECK-NEXT: testb %r10b, %r10b +; CHECK-NEXT: jne .LBB0_28 +; CHECK-NEXT: .p2align 4, 0x90 +; CHECK-NEXT: .LBB0_29: # %a53b1019 +; CHECK-NEXT: # Parent Loop BB0_3 Depth=1 +; CHECK-NEXT: # Parent Loop BB0_26 Depth=2 +; CHECK-NEXT: # => This Inner Loop Header: Depth=3 +; CHECK-NEXT: testq %rsi, %rsi +; CHECK-NEXT: jle .LBB0_29 +; CHECK-NEXT: jmp .LBB0_28 +; CHECK-NEXT: .p2align 4, 0x90 +; CHECK-NEXT: .LBB0_32: # %b1263 +; CHECK-NEXT: # in Loop: Header=BB0_30 Depth=2 +; CHECK-NEXT: testq %rsi, %rsi +; CHECK-NEXT: jle .LBB0_7 +; CHECK-NEXT: .LBB0_30: # %b1117 +; CHECK-NEXT: # Parent Loop BB0_3 Depth=1 +; CHECK-NEXT: # => This Loop Header: Depth=2 +; CHECK-NEXT: # Child Loop BB0_39 Depth 3 +; CHECK-NEXT: # Child Loop BB0_33 Depth 3 +; CHECK-NEXT: testq %rcx, %rcx +; CHECK-NEXT: js .LBB0_31 +; CHECK-NEXT: .p2align 4, 0x90 +; CHECK-NEXT: .LBB0_39: # %a63b +; CHECK-NEXT: # Parent Loop BB0_3 Depth=1 +; CHECK-NEXT: # Parent Loop BB0_30 Depth=2 +; CHECK-NEXT: # => This Inner Loop Header: Depth=3 +; CHECK-NEXT: testq %rcx, %rcx +; CHECK-NEXT: jle .LBB0_39 +; CHECK-NEXT: .LBB0_31: # %b1139 +; CHECK-NEXT: # in Loop: Header=BB0_30 Depth=2 +; CHECK-NEXT: testq %rcx, %rcx +; CHECK-NEXT: jle .LBB0_32 +; CHECK-NEXT: .p2align 4, 0x90 +; CHECK-NEXT: .LBB0_33: # %a63b1266 +; CHECK-NEXT: # Parent Loop BB0_3 Depth=1 +; CHECK-NEXT: # Parent Loop BB0_30 Depth=2 +; CHECK-NEXT: # => This Inner Loop Header: Depth=3 +; CHECK-NEXT: testq %rcx, %rcx +; CHECK-NEXT: jle .LBB0_33 +; CHECK-NEXT: jmp .LBB0_32 +; CHECK-NEXT: .p2align 4, 0x90 +; CHECK-NEXT: .LBB0_25: # %b712 +; CHECK-NEXT: # in Loop: Header=BB0_23 Depth=2 +; CHECK-NEXT: testb %dil, %dil +; CHECK-NEXT: je .LBB0_5 +; CHECK-NEXT: .LBB0_23: # %b535 +; CHECK-NEXT: # Parent Loop BB0_3 Depth=1 +; CHECK-NEXT: # => This Loop Header: Depth=2 +; CHECK-NEXT: # Child Loop BB0_24 Depth 3 +; CHECK-NEXT: testq %rsi, %rsi +; CHECK-NEXT: js .LBB0_25 +; CHECK-NEXT: .p2align 4, 0x90 +; CHECK-NEXT: .LBB0_24: # %a45b +; CHECK-NEXT: # Parent Loop BB0_3 Depth=1 +; CHECK-NEXT: # Parent Loop BB0_23 Depth=2 +; CHECK-NEXT: # => This Inner Loop Header: Depth=3 +; CHECK-NEXT: testb %dil, %dil +; CHECK-NEXT: je .LBB0_24 +; CHECK-NEXT: jmp .LBB0_25 +; CHECK-NEXT: .LBB0_10: # %a109b +; CHECK-NEXT: movq %rbp, %rsp +; CHECK-NEXT: popq %rbp +; CHECK-NEXT: .cfi_def_cfa %rsp, 8 +; CHECK-NEXT: retq b: %r = load i32, i32* %a0 %r2 = load i32, i32* %a1 |