[NFC][RemoveDIs] Prefer iterators over inst-pointers in InstCombine
[llvm-project.git] / llvm / test / CodeGen / AArch64 / GlobalISel / legalize-frint.mir
blob3aa60935512c18571101ca9a1c3cb4f0f32e26cc
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -verify-machineinstrs -mtriple aarch64-unknown-unknown -run-pass=legalizer -mattr=-fullfp16 -global-isel %s -o - | FileCheck %s --check-prefix=NOFP16
3 # RUN: llc -verify-machineinstrs -mtriple aarch64-unknown-unknown -run-pass=legalizer -mattr=+fullfp16 -global-isel %s -o - | FileCheck %s --check-prefix=FP16
5 name:            test_f16.rint
6 alignment:       4
7 tracksRegLiveness: true
8 machineFunctionInfo: {}
9 body:             |
10   bb.0:
11     liveins: $h0
13     %0:_(s16) = COPY $h0
14     %1:_(s16) = G_FRINT %0
15     $h0 = COPY %1(s16)
16     RET_ReallyLR implicit $h0
18 ...
19 ---
20 name:            test_f32.rint
21 alignment:       4
22 tracksRegLiveness: true
23 machineFunctionInfo: {}
24 body:             |
25   bb.0:
26     liveins: $s0
28     ; NOFP16-LABEL: name: test_f32.rint
29     ; NOFP16: liveins: $s0
30     ; NOFP16-NEXT: {{  $}}
31     ; NOFP16-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $s0
32     ; NOFP16-NEXT: [[FRINT:%[0-9]+]]:_(s32) = G_FRINT [[COPY]]
33     ; NOFP16-NEXT: $s0 = COPY [[FRINT]](s32)
34     ; NOFP16-NEXT: RET_ReallyLR implicit $s0
35     ;
36     ; FP16-LABEL: name: test_f32.rint
37     ; FP16: liveins: $s0
38     ; FP16-NEXT: {{  $}}
39     ; FP16-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $s0
40     ; FP16-NEXT: [[FRINT:%[0-9]+]]:_(s32) = G_FRINT [[COPY]]
41     ; FP16-NEXT: $s0 = COPY [[FRINT]](s32)
42     ; FP16-NEXT: RET_ReallyLR implicit $s0
43     %0:_(s32) = COPY $s0
44     %1:_(s32) = G_FRINT %0
45     $s0 = COPY %1(s32)
46     RET_ReallyLR implicit $s0
48 ...
49 ---
50 name:            test_f64.rint
51 alignment:       4
52 tracksRegLiveness: true
53 machineFunctionInfo: {}
54 body:             |
55   bb.0:
56     liveins: $d0
58     ; NOFP16-LABEL: name: test_f64.rint
59     ; NOFP16: liveins: $d0
60     ; NOFP16-NEXT: {{  $}}
61     ; NOFP16-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $d0
62     ; NOFP16-NEXT: [[FRINT:%[0-9]+]]:_(s64) = G_FRINT [[COPY]]
63     ; NOFP16-NEXT: $d0 = COPY [[FRINT]](s64)
64     ; NOFP16-NEXT: RET_ReallyLR implicit $d0
65     ;
66     ; FP16-LABEL: name: test_f64.rint
67     ; FP16: liveins: $d0
68     ; FP16-NEXT: {{  $}}
69     ; FP16-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $d0
70     ; FP16-NEXT: [[FRINT:%[0-9]+]]:_(s64) = G_FRINT [[COPY]]
71     ; FP16-NEXT: $d0 = COPY [[FRINT]](s64)
72     ; FP16-NEXT: RET_ReallyLR implicit $d0
73     %0:_(s64) = COPY $d0
74     %1:_(s64) = G_FRINT %0
75     $d0 = COPY %1(s64)
76     RET_ReallyLR implicit $d0
78 ...
79 ---
80 name:            test_v4f32.rint
81 alignment:       4
82 tracksRegLiveness: true
83 machineFunctionInfo: {}
84 body:             |
85   bb.0:
86     liveins: $q0
88     ; NOFP16-LABEL: name: test_v4f32.rint
89     ; NOFP16: liveins: $q0
90     ; NOFP16-NEXT: {{  $}}
91     ; NOFP16-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $q0
92     ; NOFP16-NEXT: [[FRINT:%[0-9]+]]:_(<4 x s32>) = G_FRINT [[COPY]]
93     ; NOFP16-NEXT: $q0 = COPY [[FRINT]](<4 x s32>)
94     ; NOFP16-NEXT: RET_ReallyLR implicit $q0
95     ;
96     ; FP16-LABEL: name: test_v4f32.rint
97     ; FP16: liveins: $q0
98     ; FP16-NEXT: {{  $}}
99     ; FP16-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $q0
100     ; FP16-NEXT: [[FRINT:%[0-9]+]]:_(<4 x s32>) = G_FRINT [[COPY]]
101     ; FP16-NEXT: $q0 = COPY [[FRINT]](<4 x s32>)
102     ; FP16-NEXT: RET_ReallyLR implicit $q0
103     %0:_(<4 x s32>) = COPY $q0
104     %1:_(<4 x s32>) = G_FRINT %0
105     $q0 = COPY %1(<4 x s32>)
106     RET_ReallyLR implicit $q0
110 name:            test_v2f64.rint
111 alignment:       4
112 tracksRegLiveness: true
113 machineFunctionInfo: {}
114 body:             |
115   bb.0:
116     liveins: $q0
118     ; NOFP16-LABEL: name: test_v2f64.rint
119     ; NOFP16: liveins: $q0
120     ; NOFP16-NEXT: {{  $}}
121     ; NOFP16-NEXT: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $q0
122     ; NOFP16-NEXT: [[FRINT:%[0-9]+]]:_(<2 x s64>) = G_FRINT [[COPY]]
123     ; NOFP16-NEXT: $q0 = COPY [[FRINT]](<2 x s64>)
124     ; NOFP16-NEXT: RET_ReallyLR implicit $q0
125     ;
126     ; FP16-LABEL: name: test_v2f64.rint
127     ; FP16: liveins: $q0
128     ; FP16-NEXT: {{  $}}
129     ; FP16-NEXT: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $q0
130     ; FP16-NEXT: [[FRINT:%[0-9]+]]:_(<2 x s64>) = G_FRINT [[COPY]]
131     ; FP16-NEXT: $q0 = COPY [[FRINT]](<2 x s64>)
132     ; FP16-NEXT: RET_ReallyLR implicit $q0
133     %0:_(<2 x s64>) = COPY $q0
134     %1:_(<2 x s64>) = G_FRINT %0
135     $q0 = COPY %1(<2 x s64>)
136     RET_ReallyLR implicit $q0
140 name:            test_v4f16.rint
141 alignment:       4
142 tracksRegLiveness: true
143 machineFunctionInfo: {}
144 body:             |
145   bb.0:
146     liveins: $d0
148     ; NOFP16-LABEL: name: test_v4f16.rint
149     ; NOFP16: liveins: $d0
150     ; NOFP16-NEXT: {{  $}}
151     ; NOFP16-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $d0
152     ; NOFP16-NEXT: [[FPEXT:%[0-9]+]]:_(<4 x s32>) = G_FPEXT [[COPY]](<4 x s16>)
153     ; NOFP16-NEXT: [[FRINT:%[0-9]+]]:_(<4 x s32>) = G_FRINT [[FPEXT]]
154     ; NOFP16-NEXT: [[FPTRUNC:%[0-9]+]]:_(<4 x s16>) = G_FPTRUNC [[FRINT]](<4 x s32>)
155     ; NOFP16-NEXT: $d0 = COPY [[FPTRUNC]](<4 x s16>)
156     ; NOFP16-NEXT: RET_ReallyLR implicit $d0
157     ;
158     ; FP16-LABEL: name: test_v4f16.rint
159     ; FP16: liveins: $d0
160     ; FP16-NEXT: {{  $}}
161     ; FP16-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $d0
162     ; FP16-NEXT: [[FRINT:%[0-9]+]]:_(<4 x s16>) = G_FRINT [[COPY]]
163     ; FP16-NEXT: $d0 = COPY [[FRINT]](<4 x s16>)
164     ; FP16-NEXT: RET_ReallyLR implicit $d0
165     %0:_(<4 x s16>) = COPY $d0
166     %1:_(<4 x s16>) = G_FRINT %0
167     $d0 = COPY %1(<4 x s16>)
168     RET_ReallyLR implicit $d0
172 name:            test_v8f16.rint
173 alignment:       4
174 tracksRegLiveness: true
175 machineFunctionInfo: {}
176 body:             |
177   bb.0:
178     liveins: $q0
180     ; NOFP16-LABEL: name: test_v8f16.rint
181     ; NOFP16: liveins: $q0
182     ; NOFP16-NEXT: {{  $}}
183     ; NOFP16-NEXT: [[COPY:%[0-9]+]]:_(<8 x s16>) = COPY $q0
184     ; NOFP16-NEXT: [[UV:%[0-9]+]]:_(<4 x s16>), [[UV1:%[0-9]+]]:_(<4 x s16>) = G_UNMERGE_VALUES [[COPY]](<8 x s16>)
185     ; NOFP16-NEXT: [[FPEXT:%[0-9]+]]:_(<4 x s32>) = G_FPEXT [[UV]](<4 x s16>)
186     ; NOFP16-NEXT: [[FPEXT1:%[0-9]+]]:_(<4 x s32>) = G_FPEXT [[UV1]](<4 x s16>)
187     ; NOFP16-NEXT: [[FRINT:%[0-9]+]]:_(<4 x s32>) = G_FRINT [[FPEXT]]
188     ; NOFP16-NEXT: [[FRINT1:%[0-9]+]]:_(<4 x s32>) = G_FRINT [[FPEXT1]]
189     ; NOFP16-NEXT: [[FPTRUNC:%[0-9]+]]:_(<4 x s16>) = G_FPTRUNC [[FRINT]](<4 x s32>)
190     ; NOFP16-NEXT: [[FPTRUNC1:%[0-9]+]]:_(<4 x s16>) = G_FPTRUNC [[FRINT1]](<4 x s32>)
191     ; NOFP16-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<8 x s16>) = G_CONCAT_VECTORS [[FPTRUNC]](<4 x s16>), [[FPTRUNC1]](<4 x s16>)
192     ; NOFP16-NEXT: $q0 = COPY [[CONCAT_VECTORS]](<8 x s16>)
193     ; NOFP16-NEXT: RET_ReallyLR implicit $q0
194     ;
195     ; FP16-LABEL: name: test_v8f16.rint
196     ; FP16: liveins: $q0
197     ; FP16-NEXT: {{  $}}
198     ; FP16-NEXT: [[COPY:%[0-9]+]]:_(<8 x s16>) = COPY $q0
199     ; FP16-NEXT: [[FRINT:%[0-9]+]]:_(<8 x s16>) = G_FRINT [[COPY]]
200     ; FP16-NEXT: $q0 = COPY [[FRINT]](<8 x s16>)
201     ; FP16-NEXT: RET_ReallyLR implicit $q0
202     %0:_(<8 x s16>) = COPY $q0
203     %1:_(<8 x s16>) = G_FRINT %0
204     $q0 = COPY %1(<8 x s16>)
205     RET_ReallyLR implicit $q0
209 name:            test_v2f32.rint
210 alignment:       4
211 tracksRegLiveness: true
212 machineFunctionInfo: {}
213 body:             |
214   bb.0:
215     liveins: $d0
217     ; NOFP16-LABEL: name: test_v2f32.rint
218     ; NOFP16: liveins: $d0
219     ; NOFP16-NEXT: {{  $}}
220     ; NOFP16-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $d0
221     ; NOFP16-NEXT: [[FRINT:%[0-9]+]]:_(<2 x s32>) = G_FRINT [[COPY]]
222     ; NOFP16-NEXT: $d0 = COPY [[FRINT]](<2 x s32>)
223     ; NOFP16-NEXT: RET_ReallyLR implicit $d0
224     ;
225     ; FP16-LABEL: name: test_v2f32.rint
226     ; FP16: liveins: $d0
227     ; FP16-NEXT: {{  $}}
228     ; FP16-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $d0
229     ; FP16-NEXT: [[FRINT:%[0-9]+]]:_(<2 x s32>) = G_FRINT [[COPY]]
230     ; FP16-NEXT: $d0 = COPY [[FRINT]](<2 x s32>)
231     ; FP16-NEXT: RET_ReallyLR implicit $d0
232     %0:_(<2 x s32>) = COPY $d0
233     %1:_(<2 x s32>) = G_FRINT %0
234     $d0 = COPY %1(<2 x s32>)
235     RET_ReallyLR implicit $d0