summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/X86/2007-01-13-StackPtrIndex.ll
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test/CodeGen/X86/2007-01-13-StackPtrIndex.ll')
-rw-r--r--llvm/test/CodeGen/X86/2007-01-13-StackPtrIndex.ll249
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
OpenPOWER on IntegriCloud