blob: ce53e49eddbbe6223bd8a99c467568a9ae0551ce [file] [log] [blame]
Matthias Braun538859c2016-07-16 02:24:59 +00001# RUN: llc -march=x86-64 -run-pass none -o - %s | FileCheck %s
Alex Lorenz5022f6b2015-08-13 23:10:16 +00002
3--- |
4
5 define i32 @foo(i32 %a) {
6 entry:
7 %0 = icmp sle i32 %a, 10
8 br i1 %0, label %less, label %exit
9
10 less:
11 ret i32 0
12
13 exit:
14 ret i32 %a
15 }
16
17 define i32 @bar(i32 %a) {
18 entry:
19 %0 = icmp sle i32 %a, 10
20 br i1 %0, label %less, label %exit
21
22 less:
23 ret i32 0
24
25 exit:
26 ret i32 %a
27 }
28
29...
30---
31name: foo
32tracksRegLiveness: true
33liveins:
34 - { reg: '%edi' }
35# CHECK-LABEL: name: foo
36# CHECK: body: |
37# CHECK-NEXT: bb.0.entry:
Geoff Berryb51774a2016-11-18 19:37:24 +000038# CHECK-NEXT: successors: %bb.1.less(0x40000000), %bb.2.exit(0x40000000)
Alex Lorenz5022f6b2015-08-13 23:10:16 +000039# CHECK-NEXT: liveins: %edi
40# CHECK: CMP32ri8 %edi, 10, implicit-def %eflags
41# CHECK-NEXT: JG_1 %bb.2.exit, implicit killed %eflags
42
43# CHECK: bb.1.less:
44# CHECK-NEXT: %eax = MOV32r0 implicit-def dead %eflags
45# CHECK-NEXT: RETQ killed %eax
46
47# CHECK: bb.2.exit:
48# CHECK-NEXT: liveins: %edi
49# CHECK: %eax = COPY killed %edi
50# CHECK-NEXT: RETQ killed %eax
51body: |
52 bb.0.entry:
53 successors: %bb.1.less, %bb.2.exit
54
55 liveins: %edi
56
57 CMP32ri8 %edi, 10, implicit-def %eflags
58
59 JG_1 %bb.2.exit, implicit killed %eflags
60
61 bb.1.less:
62
63
64 %eax = MOV32r0 implicit-def dead %eflags
65 RETQ killed %eax
66 bb.2.exit:
67
68
69 liveins: %edi
70 %eax = COPY killed %edi
71 RETQ killed %eax
72
73...
74---
75name: bar
76tracksRegLiveness: true
77liveins:
78 - { reg: '%edi' }
79# CHECK-LABEL: name: bar
80# CHECK: body: |
81# CHECK-NEXT: bb.0.entry:
Geoff Berryb51774a2016-11-18 19:37:24 +000082# CHECK-NEXT: successors: %bb.1.less(0x40000000), %bb.2.exit(0x40000000)
Alex Lorenz5022f6b2015-08-13 23:10:16 +000083# CHECK-NEXT: liveins: %edi
84# CHECK: CMP32ri8 %edi, 10, implicit-def %eflags
85# CHECK-NEXT: JG_1 %bb.2.exit, implicit killed %eflags
86
87# CHECK: bb.1.less:
88# CHECK-NEXT: %eax = MOV32r0 implicit-def dead %eflags
89# CHECK-NEXT: RETQ killed %eax
90
91# CHECK: bb.2.exit:
92# CHECK-NEXT: liveins: %edi
93# CHECK: %eax = COPY killed %edi
94# CHECK-NEXT: RETQ killed %eax
95body: |
96
97 bb.0.entry:
98 successors: %bb.1.less, %bb.2.exit
99 liveins: %edi
100 CMP32ri8 %edi, 10, implicit-def %eflags
101 JG_1 %bb.2.exit, implicit killed %eflags
102 bb.1.less: %eax = MOV32r0 implicit-def dead %eflags
103 RETQ killed %eax
104
105 bb.2.exit: liveins: %edi
106 %eax = COPY killed %edi
107 RETQ killed %eax
108
109...