[NFC][Py Reformat] Reformat python files in llvm
[llvm-project.git] / llvm / test / CodeGen / ARM / ifcvt5.ll
blobdc9a3400b691acc88016099d4acf7117a01fe4a3
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc < %s -mtriple=armv7-apple-ios -mcpu=cortex-a8 | FileCheck %s -check-prefix=A8
3 ; RUN: llc < %s -mtriple=armv7-apple-ios -mcpu=swift     | FileCheck %s -check-prefix=SWIFT
4 ; rdar://8402126
6 @x = external global ptr                ; <ptr> [#uses=1]
8 define void @foo(i32 %a) "frame-pointer"="all" {
9 ; A8-LABEL: foo:
10 ; A8:       @ %bb.0: @ %entry
11 ; A8-NEXT:    movw r1, :lower16:(L_x$non_lazy_ptr-(LPC0_0+8))
12 ; A8-NEXT:    movt r1, :upper16:(L_x$non_lazy_ptr-(LPC0_0+8))
13 ; A8-NEXT:  LPC0_0:
14 ; A8-NEXT:    ldr r1, [pc, r1]
15 ; A8-NEXT:    ldr r1, [r1]
16 ; A8-NEXT:    str r0, [r1]
17 ; A8-NEXT:    bx lr
19 ; SWIFT-LABEL: foo:
20 ; SWIFT:       @ %bb.0: @ %entry
21 ; SWIFT-NEXT:    movw r1, :lower16:(L_x$non_lazy_ptr-(LPC0_0+8))
22 ; SWIFT-NEXT:    movt r1, :upper16:(L_x$non_lazy_ptr-(LPC0_0+8))
23 ; SWIFT-NEXT:  LPC0_0:
24 ; SWIFT-NEXT:    ldr r1, [pc, r1]
25 ; SWIFT-NEXT:    ldr r1, [r1]
26 ; SWIFT-NEXT:    str r0, [r1]
27 ; SWIFT-NEXT:    bx lr
28 entry:
29         %tmp = load ptr, ptr @x         ; <ptr> [#uses=1]
30         store i32 %a, ptr %tmp
31         ret void
34 define i32 @t1(i32 %a, i32 %b) "frame-pointer"="all" {
35 ; A8-LABEL: t1:
36 ; A8:       @ %bb.0: @ %entry
37 ; A8-NEXT:    mov r2, r0
38 ; A8-NEXT:    mov r0, #1
39 ; A8-NEXT:    cmp r2, #10
40 ; A8-NEXT:    bxle lr
41 ; A8-NEXT:  LBB1_1: @ %cond_true
42 ; A8-NEXT:    push {r7, lr}
43 ; A8-NEXT:    mov r7, sp
44 ; A8-NEXT:    mov r0, r1
45 ; A8-NEXT:    bl _foo
46 ; A8-NEXT:    mov r0, #0
47 ; A8-NEXT:    pop {r7, lr}
48 ; A8-NEXT:    bx lr
50 ; SWIFT-LABEL: t1:
51 ; SWIFT:       @ %bb.0: @ %entry
52 ; SWIFT-NEXT:    mov r2, r0
53 ; SWIFT-NEXT:    mov r0, #1
54 ; SWIFT-NEXT:    cmp r2, #10
55 ; SWIFT-NEXT:    bxle lr
56 ; SWIFT-NEXT:  LBB1_1: @ %cond_true
57 ; SWIFT-NEXT:    push {r7, lr}
58 ; SWIFT-NEXT:    mov r7, sp
59 ; SWIFT-NEXT:    mov r0, r1
60 ; SWIFT-NEXT:    bl _foo
61 ; SWIFT-NEXT:    mov r0, #0
62 ; SWIFT-NEXT:    pop {r7, lr}
63 ; SWIFT-NEXT:    bx lr
64 entry:
65         %tmp1 = icmp sgt i32 %a, 10             ; <i1> [#uses=1]
66         br i1 %tmp1, label %cond_true, label %UnifiedReturnBlock
68 cond_true:              ; preds = %entry
69         tail call void @foo( i32 %b )
70         ret i32 0
72 UnifiedReturnBlock:             ; preds = %entry
73         ret i32 1