Skip to content

Commit 0e094e1

Browse files
committed
Pre commit test
1 parent 9516f44 commit 0e094e1

File tree

1 file changed

+140
-0
lines changed

1 file changed

+140
-0
lines changed
Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
1+
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 5
2+
# RUN: llc -mtriple=riscv32 -x mir -run-pass=machine-outliner -simplify-mir -verify-machineinstrs < %s \
3+
# RUN: | FileCheck -check-prefixes=RV32I-MO %s
4+
# RUN: llc -mtriple=riscv64 -x mir -run-pass=machine-outliner -simplify-mir -verify-machineinstrs < %s \
5+
# RUN: | FileCheck -check-prefixes=RV64I-MO %s
6+
7+
# MIR has been edited by hand to have x5 as live out in @dont_outline
8+
9+
--- |
10+
define i32 @outline_0(i32 %a, i32 %b) { ret i32 0 }
11+
12+
; Can't outline if x5 is live out of the MBB
13+
define i32 @dont_outline(i32 %a, i32 %b) { ret i32 0 }
14+
15+
define i32 @outline_1(i32 %a, i32 %b) { ret i32 0 }
16+
17+
define i32 @outline_2(i32 %a, i32 %b) { ret i32 0 }
18+
...
19+
---
20+
21+
name: outline_0
22+
tracksRegLiveness: true
23+
isOutlined: false
24+
body: |
25+
bb.0:
26+
liveins: $x10, $x11
27+
28+
; RV32I-MO-LABEL: name: outline_0
29+
; RV32I-MO: liveins: $x10, $x11
30+
; RV32I-MO-NEXT: {{ $}}
31+
; RV32I-MO-NEXT: $x5 = PseudoCALLReg target-flags(riscv-call) @OUTLINED_FUNCTION_0, implicit-def $x5, implicit-def $x10, implicit-def $x11, implicit-def $x12, implicit $x10, implicit $x11
32+
; RV32I-MO-NEXT: PseudoRET implicit $x11
33+
;
34+
; RV64I-MO-LABEL: name: outline_0
35+
; RV64I-MO: liveins: $x10, $x11
36+
; RV64I-MO-NEXT: {{ $}}
37+
; RV64I-MO-NEXT: $x5 = PseudoCALLReg target-flags(riscv-call) @OUTLINED_FUNCTION_0, implicit-def $x5, implicit-def $x10, implicit-def $x11, implicit-def $x12, implicit $x10, implicit $x11
38+
; RV64I-MO-NEXT: PseudoRET implicit $x11
39+
$x11 = ORI $x11, 1023
40+
$x12 = ADDI $x10, 17
41+
$x11 = AND $x12, $x11
42+
$x10 = SUB $x10, $x11
43+
PseudoRET implicit $x11
44+
45+
...
46+
---
47+
48+
name: dont_outline
49+
tracksRegLiveness: true
50+
isOutlined: false
51+
body: |
52+
; RV32I-MO-LABEL: name: dont_outline
53+
; RV32I-MO: bb.0:
54+
; RV32I-MO-NEXT: liveins: $x10, $x11
55+
; RV32I-MO-NEXT: {{ $}}
56+
; RV32I-MO-NEXT: $x5 = PseudoCALLReg target-flags(riscv-call) @OUTLINED_FUNCTION_0, implicit-def $x5, implicit-def $x10, implicit-def $x11, implicit-def $x12, implicit $x10, implicit $x11
57+
; RV32I-MO-NEXT: BEQ $x10, $x11, %bb.1
58+
; RV32I-MO-NEXT: {{ $}}
59+
; RV32I-MO-NEXT: bb.1:
60+
; RV32I-MO-NEXT: liveins: $x10, $x5
61+
; RV32I-MO-NEXT: {{ $}}
62+
; RV32I-MO-NEXT: PseudoRET implicit $x10, implicit $x5
63+
;
64+
; RV64I-MO-LABEL: name: dont_outline
65+
; RV64I-MO: bb.0:
66+
; RV64I-MO-NEXT: liveins: $x10, $x11
67+
; RV64I-MO-NEXT: {{ $}}
68+
; RV64I-MO-NEXT: $x5 = PseudoCALLReg target-flags(riscv-call) @OUTLINED_FUNCTION_0, implicit-def $x5, implicit-def $x10, implicit-def $x11, implicit-def $x12, implicit $x10, implicit $x11
69+
; RV64I-MO-NEXT: BEQ $x10, $x11, %bb.1
70+
; RV64I-MO-NEXT: {{ $}}
71+
; RV64I-MO-NEXT: bb.1:
72+
; RV64I-MO-NEXT: liveins: $x10, $x5
73+
; RV64I-MO-NEXT: {{ $}}
74+
; RV64I-MO-NEXT: PseudoRET implicit $x10, implicit $x5
75+
bb.0:
76+
liveins: $x10, $x11
77+
78+
$x11 = ORI $x11, 1023
79+
$x12 = ADDI $x10, 17
80+
$x11 = AND $x12, $x11
81+
$x10 = SUB $x10, $x11
82+
BEQ $x10, $x11, %bb.1
83+
84+
bb.1:
85+
liveins: $x10, $x5
86+
PseudoRET implicit $x10, implicit $x5
87+
88+
...
89+
---
90+
91+
name: outline_1
92+
tracksRegLiveness: true
93+
isOutlined: false
94+
body: |
95+
bb.0:
96+
liveins: $x10, $x11
97+
98+
; RV32I-MO-LABEL: name: outline_1
99+
; RV32I-MO: liveins: $x10, $x11
100+
; RV32I-MO-NEXT: {{ $}}
101+
; RV32I-MO-NEXT: $x5 = PseudoCALLReg target-flags(riscv-call) @OUTLINED_FUNCTION_0, implicit-def $x5, implicit-def $x10, implicit-def $x11, implicit-def $x12, implicit $x10, implicit $x11
102+
; RV32I-MO-NEXT: PseudoRET implicit $x10
103+
;
104+
; RV64I-MO-LABEL: name: outline_1
105+
; RV64I-MO: liveins: $x10, $x11
106+
; RV64I-MO-NEXT: {{ $}}
107+
; RV64I-MO-NEXT: $x5 = PseudoCALLReg target-flags(riscv-call) @OUTLINED_FUNCTION_0, implicit-def $x5, implicit-def $x10, implicit-def $x11, implicit-def $x12, implicit $x10, implicit $x11
108+
; RV64I-MO-NEXT: PseudoRET implicit $x10
109+
$x11 = ORI $x11, 1023
110+
$x12 = ADDI $x10, 17
111+
$x11 = AND $x12, $x11
112+
$x10 = SUB $x10, $x11
113+
PseudoRET implicit $x10
114+
115+
...
116+
---
117+
name: outline_2
118+
tracksRegLiveness: true
119+
isOutlined: false
120+
body: |
121+
bb.0:
122+
liveins: $x10, $x11
123+
124+
; RV32I-MO-LABEL: name: outline_2
125+
; RV32I-MO: liveins: $x10, $x11
126+
; RV32I-MO-NEXT: {{ $}}
127+
; RV32I-MO-NEXT: $x5 = PseudoCALLReg target-flags(riscv-call) @OUTLINED_FUNCTION_0, implicit-def $x5, implicit-def $x10, implicit-def $x11, implicit-def $x12, implicit $x10, implicit $x11
128+
; RV32I-MO-NEXT: PseudoRET implicit $x12
129+
;
130+
; RV64I-MO-LABEL: name: outline_2
131+
; RV64I-MO: liveins: $x10, $x11
132+
; RV64I-MO-NEXT: {{ $}}
133+
; RV64I-MO-NEXT: $x5 = PseudoCALLReg target-flags(riscv-call) @OUTLINED_FUNCTION_0, implicit-def $x5, implicit-def $x10, implicit-def $x11, implicit-def $x12, implicit $x10, implicit $x11
134+
; RV64I-MO-NEXT: PseudoRET implicit $x12
135+
$x11 = ORI $x11, 1023
136+
$x12 = ADDI $x10, 17
137+
$x11 = AND $x12, $x11
138+
$x10 = SUB $x10, $x11
139+
PseudoRET implicit $x12
140+
...

0 commit comments

Comments
 (0)