Re-land [openmp] Fix warnings when building on Windows with latest MSVC or Clang...
[llvm-project.git] / llvm / test / CodeGen / RISCV / machineoutliner-pcrel-lo.mir
blob34f7a93b6a168c31ad732025441342e460e0e259
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=riscv32 -x mir -run-pass=machine-outliner -simplify-mir -verify-machineinstrs < %s \
3 # RUN: | FileCheck %s
4 # RUN: llc -mtriple=riscv64 -x mir -run-pass=machine-outliner -simplify-mir -verify-machineinstrs < %s \
5 # RUN: | FileCheck %s
6 # RUN: llc -mtriple=riscv32 -x mir -run-pass=machine-outliner -simplify-mir --function-sections -verify-machineinstrs < %s \
7 # RUN: | FileCheck -check-prefix=CHECK-FS %s
8 # RUN: llc -mtriple=riscv64 -x mir -run-pass=machine-outliner -simplify-mir --function-sections -verify-machineinstrs < %s \
9 # RUN: | FileCheck -check-prefix=CHECK-FS %s
11 --- |
12   ; Cannot outline instructions with pcrel-lo operands if function section
13   ; enabled.
14   @bar = dso_local local_unnamed_addr global i32 0, align 4
15   define i32 @foo(i32 %a, i32 %b) { ret i32 0 }
17   $foo2 = comdat any
18   define i32 @foo2(i32 %a, i32 %b) comdat { ret i32 0 }
20   define i32 @foo3(i32 %a, i32 %b) section ".abc" { ret i32 0 }
21 ...
22 ---
23 name:            foo
24 tracksRegLiveness: true
25 body:             |
26   ; CHECK-LABEL: name: foo
27   ; CHECK: bb.0:
28   ; CHECK-NEXT:   liveins: $x10, $x11, $x13
29   ; CHECK-NEXT: {{  $}}
30   ; CHECK-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, implicit $x13
31   ; CHECK-NEXT:   PseudoBR %bb.3
32   ; CHECK-NEXT: {{  $}}
33   ; CHECK-NEXT: bb.1:
34   ; CHECK-NEXT:   liveins: $x10, $x11, $x13
35   ; CHECK-NEXT: {{  $}}
36   ; CHECK-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, implicit $x13
37   ; CHECK-NEXT:   PseudoBR %bb.3
38   ; CHECK-NEXT: {{  $}}
39   ; CHECK-NEXT: bb.2:
40   ; CHECK-NEXT:   liveins: $x10, $x11, $x13
41   ; CHECK-NEXT: {{  $}}
42   ; CHECK-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, implicit $x13
43   ; CHECK-NEXT:   PseudoBR %bb.3
44   ; CHECK-NEXT: {{  $}}
45   ; CHECK-NEXT: bb.3:
46   ; CHECK-NEXT:   PseudoRET
47   ; CHECK-FS-LABEL: name: foo
48   ; CHECK-FS: bb.0:
49   ; CHECK-FS-NEXT:   liveins: $x10, $x11, $x13
50   ; CHECK-FS-NEXT: {{  $}}
51   ; CHECK-FS-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
52   ; CHECK-FS-NEXT:   $x11 = LW killed renamable $x13, target-flags(riscv-pcrel-lo) <mcsymbol .Lpcrel_hi1> :: (dereferenceable load (s32) from @bar)
53   ; CHECK-FS-NEXT:   PseudoBR %bb.3
54   ; CHECK-FS-NEXT: {{  $}}
55   ; CHECK-FS-NEXT: bb.1:
56   ; CHECK-FS-NEXT:   liveins: $x10, $x11, $x13
57   ; CHECK-FS-NEXT: {{  $}}
58   ; CHECK-FS-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
59   ; CHECK-FS-NEXT:   $x11 = LW killed renamable $x13, target-flags(riscv-pcrel-lo) <mcsymbol .Lpcrel_hi1> :: (dereferenceable load (s32) from @bar)
60   ; CHECK-FS-NEXT:   PseudoBR %bb.3
61   ; CHECK-FS-NEXT: {{  $}}
62   ; CHECK-FS-NEXT: bb.2:
63   ; CHECK-FS-NEXT:   liveins: $x10, $x11, $x13
64   ; CHECK-FS-NEXT: {{  $}}
65   ; CHECK-FS-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
66   ; CHECK-FS-NEXT:   $x11 = LW killed renamable $x13, target-flags(riscv-pcrel-lo) <mcsymbol .Lpcrel_hi1> :: (dereferenceable load (s32) from @bar)
67   ; CHECK-FS-NEXT:   PseudoBR %bb.3
68   ; CHECK-FS-NEXT: {{  $}}
69   ; CHECK-FS-NEXT: bb.3:
70   ; CHECK-FS-NEXT:   PseudoRET
71   bb.0:
72     liveins: $x10, $x11, $x13
74     $x11 = ORI $x11, 1023
75     $x12 = ADDI $x10, 17
76     $x11 = AND $x12, $x11
77     $x10 = SUB $x10, $x11
78     $x11 = LW killed renamable $x13, target-flags(riscv-pcrel-lo) <mcsymbol .Lpcrel_hi1> :: (dereferenceable load (s32) from @bar)
79     PseudoBR %bb.3
81   bb.1:
82     liveins: $x10, $x11, $x13
84     $x11 = ORI $x11, 1023
85     $x12 = ADDI $x10, 17
86     $x11 = AND $x12, $x11
87     $x10 = SUB $x10, $x11
88     $x11 = LW killed renamable $x13, target-flags(riscv-pcrel-lo) <mcsymbol .Lpcrel_hi1> :: (dereferenceable load (s32) from @bar)
89     PseudoBR %bb.3
91   bb.2:
92     liveins: $x10, $x11, $x13
94     $x11 = ORI $x11, 1023
95     $x12 = ADDI $x10, 17
96     $x11 = AND $x12, $x11
97     $x10 = SUB $x10, $x11
98     $x11 = LW killed renamable $x13, target-flags(riscv-pcrel-lo) <mcsymbol .Lpcrel_hi1> :: (dereferenceable load (s32) from @bar)
99     PseudoBR %bb.3
101   bb.3:
102     PseudoRET
105 name:            foo2
106 tracksRegLiveness: true
107 body:             |
108   ; CHECK-LABEL: name: foo2
109   ; CHECK: bb.0:
110   ; CHECK-NEXT:   liveins: $x10, $x11, $x13
111   ; CHECK-NEXT: {{  $}}
112   ; CHECK-NEXT:   $x5 = PseudoCALLReg target-flags(riscv-call) @OUTLINED_FUNCTION_1, implicit-def $x5, implicit-def $x10, implicit-def $x11, implicit-def $x12, implicit $x10, implicit $x11
113   ; CHECK-NEXT:   $x11 = LW killed renamable $x13, target-flags(riscv-pcrel-lo) <mcsymbol .Lpcrel_hi1> :: (dereferenceable load (s32) from @bar)
114   ; CHECK-NEXT:   PseudoBR %bb.3
115   ; CHECK-NEXT: {{  $}}
116   ; CHECK-NEXT: bb.1:
117   ; CHECK-NEXT:   liveins: $x10, $x11, $x13
118   ; CHECK-NEXT: {{  $}}
119   ; CHECK-NEXT:   $x5 = PseudoCALLReg target-flags(riscv-call) @OUTLINED_FUNCTION_1, implicit-def $x5, implicit-def $x10, implicit-def $x11, implicit-def $x12, implicit $x10, implicit $x11
120   ; CHECK-NEXT:   $x11 = LW killed renamable $x13, target-flags(riscv-pcrel-lo) <mcsymbol .Lpcrel_hi1> :: (dereferenceable load (s32) from @bar)
121   ; CHECK-NEXT:   PseudoBR %bb.3
122   ; CHECK-NEXT: {{  $}}
123   ; CHECK-NEXT: bb.2:
124   ; CHECK-NEXT:   liveins: $x10, $x11, $x13
125   ; CHECK-NEXT: {{  $}}
126   ; CHECK-NEXT:   $x5 = PseudoCALLReg target-flags(riscv-call) @OUTLINED_FUNCTION_1, implicit-def $x5, implicit-def $x10, implicit-def $x11, implicit-def $x12, implicit $x10, implicit $x11
127   ; CHECK-NEXT:   $x11 = LW killed renamable $x13, target-flags(riscv-pcrel-lo) <mcsymbol .Lpcrel_hi1> :: (dereferenceable load (s32) from @bar)
128   ; CHECK-NEXT:   PseudoBR %bb.3
129   ; CHECK-NEXT: {{  $}}
130   ; CHECK-NEXT: bb.3:
131   ; CHECK-NEXT:   PseudoRET
132   ; CHECK-FS-LABEL: name: foo2
133   ; CHECK-FS: bb.0:
134   ; CHECK-FS-NEXT:   liveins: $x10, $x11, $x13
135   ; CHECK-FS-NEXT: {{  $}}
136   ; CHECK-FS-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
137   ; CHECK-FS-NEXT:   $x11 = LW killed renamable $x13, target-flags(riscv-pcrel-lo) <mcsymbol .Lpcrel_hi1> :: (dereferenceable load (s32) from @bar)
138   ; CHECK-FS-NEXT:   PseudoBR %bb.3
139   ; CHECK-FS-NEXT: {{  $}}
140   ; CHECK-FS-NEXT: bb.1:
141   ; CHECK-FS-NEXT:   liveins: $x10, $x11, $x13
142   ; CHECK-FS-NEXT: {{  $}}
143   ; CHECK-FS-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
144   ; CHECK-FS-NEXT:   $x11 = LW killed renamable $x13, target-flags(riscv-pcrel-lo) <mcsymbol .Lpcrel_hi1> :: (dereferenceable load (s32) from @bar)
145   ; CHECK-FS-NEXT:   PseudoBR %bb.3
146   ; CHECK-FS-NEXT: {{  $}}
147   ; CHECK-FS-NEXT: bb.2:
148   ; CHECK-FS-NEXT:   liveins: $x10, $x11, $x13
149   ; CHECK-FS-NEXT: {{  $}}
150   ; CHECK-FS-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
151   ; CHECK-FS-NEXT:   $x11 = LW killed renamable $x13, target-flags(riscv-pcrel-lo) <mcsymbol .Lpcrel_hi1> :: (dereferenceable load (s32) from @bar)
152   ; CHECK-FS-NEXT:   PseudoBR %bb.3
153   ; CHECK-FS-NEXT: {{  $}}
154   ; CHECK-FS-NEXT: bb.3:
155   ; CHECK-FS-NEXT:   PseudoRET
156   bb.0:
157     liveins: $x10, $x11, $x13
159     $x11 = ORI $x11, 1023
160     $x12 = ADDI $x10, 17
161     $x11 = AND $x12, $x11
162     $x10 = SUB $x10, $x11
163     $x11 = LW killed renamable $x13, target-flags(riscv-pcrel-lo) <mcsymbol .Lpcrel_hi1> :: (dereferenceable load (s32) from @bar)
164     PseudoBR %bb.3
166   bb.1:
167     liveins: $x10, $x11, $x13
169     $x11 = ORI $x11, 1023
170     $x12 = ADDI $x10, 17
171     $x11 = AND $x12, $x11
172     $x10 = SUB $x10, $x11
173     $x11 = LW killed renamable $x13, target-flags(riscv-pcrel-lo) <mcsymbol .Lpcrel_hi1> :: (dereferenceable load (s32) from @bar)
174     PseudoBR %bb.3
176   bb.2:
177     liveins: $x10, $x11, $x13
179     $x11 = ORI $x11, 1023
180     $x12 = ADDI $x10, 17
181     $x11 = AND $x12, $x11
182     $x10 = SUB $x10, $x11
183     $x11 = LW killed renamable $x13, target-flags(riscv-pcrel-lo) <mcsymbol .Lpcrel_hi1> :: (dereferenceable load (s32) from @bar)
184     PseudoBR %bb.3
186   bb.3:
187     PseudoRET
190 name:            foo3
191 tracksRegLiveness: true
192 body:             |
193   ; CHECK-LABEL: name: foo3
194   ; CHECK: bb.0:
195   ; CHECK-NEXT:   liveins: $x10, $x11, $x13
196   ; CHECK-NEXT: {{  $}}
197   ; CHECK-NEXT:   $x11 = ORI $x11, 1023
198   ; CHECK-NEXT:   $x12 = ADDI $x10, 17
199   ; CHECK-NEXT:   $x11 = AND $x12, $x11
200   ; CHECK-NEXT:   $x10 = SUB $x10, $x11
201   ; CHECK-NEXT:   $x11 = LW killed renamable $x13, target-flags(riscv-pcrel-lo) <mcsymbol .Lpcrel_hi1> :: (dereferenceable load (s32) from @bar)
202   ; CHECK-NEXT:   PseudoBR %bb.3
203   ; CHECK-NEXT: {{  $}}
204   ; CHECK-NEXT: bb.1:
205   ; CHECK-NEXT:   liveins: $x10, $x11, $x13
206   ; CHECK-NEXT: {{  $}}
207   ; CHECK-NEXT:   $x11 = ORI $x11, 1023
208   ; CHECK-NEXT:   $x12 = ADDI $x10, 17
209   ; CHECK-NEXT:   $x11 = AND $x12, $x11
210   ; CHECK-NEXT:   $x10 = SUB $x10, $x11
211   ; CHECK-NEXT:   $x11 = LW killed renamable $x13, target-flags(riscv-pcrel-lo) <mcsymbol .Lpcrel_hi1> :: (dereferenceable load (s32) from @bar)
212   ; CHECK-NEXT:   PseudoBR %bb.3
213   ; CHECK-NEXT: {{  $}}
214   ; CHECK-NEXT: bb.2:
215   ; CHECK-NEXT:   liveins: $x10, $x11, $x13
216   ; CHECK-NEXT: {{  $}}
217   ; CHECK-NEXT:   $x11 = ORI $x11, 1023
218   ; CHECK-NEXT:   $x12 = ADDI $x10, 17
219   ; CHECK-NEXT:   $x11 = AND $x12, $x11
220   ; CHECK-NEXT:   $x10 = SUB $x10, $x11
221   ; CHECK-NEXT:   $x11 = LW killed renamable $x13, target-flags(riscv-pcrel-lo) <mcsymbol .Lpcrel_hi1> :: (dereferenceable load (s32) from @bar)
222   ; CHECK-NEXT:   PseudoBR %bb.3
223   ; CHECK-NEXT: {{  $}}
224   ; CHECK-NEXT: bb.3:
225   ; CHECK-NEXT:   PseudoRET
226   ; CHECK-FS-LABEL: name: foo3
227   ; CHECK-FS: bb.0:
228   ; CHECK-FS-NEXT:   liveins: $x10, $x11, $x13
229   ; CHECK-FS-NEXT: {{  $}}
230   ; CHECK-FS-NEXT:   $x11 = ORI $x11, 1023
231   ; CHECK-FS-NEXT:   $x12 = ADDI $x10, 17
232   ; CHECK-FS-NEXT:   $x11 = AND $x12, $x11
233   ; CHECK-FS-NEXT:   $x10 = SUB $x10, $x11
234   ; CHECK-FS-NEXT:   $x11 = LW killed renamable $x13, target-flags(riscv-pcrel-lo) <mcsymbol .Lpcrel_hi1> :: (dereferenceable load (s32) from @bar)
235   ; CHECK-FS-NEXT:   PseudoBR %bb.3
236   ; CHECK-FS-NEXT: {{  $}}
237   ; CHECK-FS-NEXT: bb.1:
238   ; CHECK-FS-NEXT:   liveins: $x10, $x11, $x13
239   ; CHECK-FS-NEXT: {{  $}}
240   ; CHECK-FS-NEXT:   $x11 = ORI $x11, 1023
241   ; CHECK-FS-NEXT:   $x12 = ADDI $x10, 17
242   ; CHECK-FS-NEXT:   $x11 = AND $x12, $x11
243   ; CHECK-FS-NEXT:   $x10 = SUB $x10, $x11
244   ; CHECK-FS-NEXT:   $x11 = LW killed renamable $x13, target-flags(riscv-pcrel-lo) <mcsymbol .Lpcrel_hi1> :: (dereferenceable load (s32) from @bar)
245   ; CHECK-FS-NEXT:   PseudoBR %bb.3
246   ; CHECK-FS-NEXT: {{  $}}
247   ; CHECK-FS-NEXT: bb.2:
248   ; CHECK-FS-NEXT:   liveins: $x10, $x11, $x13
249   ; CHECK-FS-NEXT: {{  $}}
250   ; CHECK-FS-NEXT:   $x11 = ORI $x11, 1023
251   ; CHECK-FS-NEXT:   $x12 = ADDI $x10, 17
252   ; CHECK-FS-NEXT:   $x11 = AND $x12, $x11
253   ; CHECK-FS-NEXT:   $x10 = SUB $x10, $x11
254   ; CHECK-FS-NEXT:   $x11 = LW killed renamable $x13, target-flags(riscv-pcrel-lo) <mcsymbol .Lpcrel_hi1> :: (dereferenceable load (s32) from @bar)
255   ; CHECK-FS-NEXT:   PseudoBR %bb.3
256   ; CHECK-FS-NEXT: {{  $}}
257   ; CHECK-FS-NEXT: bb.3:
258   ; CHECK-FS-NEXT:   PseudoRET
259   bb.0:
260     liveins: $x10, $x11, $x13
262     $x11 = ORI $x11, 1023
263     $x12 = ADDI $x10, 17
264     $x11 = AND $x12, $x11
265     $x10 = SUB $x10, $x11
266     $x11 = LW killed renamable $x13, target-flags(riscv-pcrel-lo) <mcsymbol .Lpcrel_hi1> :: (dereferenceable load (s32) from @bar)
267     PseudoBR %bb.3
269   bb.1:
270     liveins: $x10, $x11, $x13
272     $x11 = ORI $x11, 1023
273     $x12 = ADDI $x10, 17
274     $x11 = AND $x12, $x11
275     $x10 = SUB $x10, $x11
276     $x11 = LW killed renamable $x13, target-flags(riscv-pcrel-lo) <mcsymbol .Lpcrel_hi1> :: (dereferenceable load (s32) from @bar)
277     PseudoBR %bb.3
279   bb.2:
280     liveins: $x10, $x11, $x13
282     $x11 = ORI $x11, 1023
283     $x12 = ADDI $x10, 17
284     $x11 = AND $x12, $x11
285     $x10 = SUB $x10, $x11
286     $x11 = LW killed renamable $x13, target-flags(riscv-pcrel-lo) <mcsymbol .Lpcrel_hi1> :: (dereferenceable load (s32) from @bar)
287     PseudoBR %bb.3
289   bb.3:
290     PseudoRET