1
1
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2
- # RUN: llc -mtriple=riscv32 -mattr=+d,+zfh -run-pass=regbankselect \
3
- # RUN: -disable-gisel-legality-check -simplify-mir -verify-machineinstrs %s \
4
- # RUN: -o - | FileCheck %s --check-prefixes=CHECK
5
- # RUN: llc -mtriple=riscv64 -mattr=+d,+zfh -run-pass=regbankselect \
6
- # RUN: -disable-gisel-legality-check -simplify-mir -verify-machineinstrs %s \
7
- # RUN: -o - | FileCheck %s --check-prefixes=CHECK
2
+ # RUN: sed 's/XLen/32/g' %s | llc -mtriple=riscv32 -mattr=+d,+zfh -run-pass=regbankselect \
3
+ # RUN: -disable-gisel-legality-check -simplify-mir -verify-machineinstrs -x mir \
4
+ # RUN: -o - | FileCheck %s --check-prefixes=CHECK-RV32
5
+ # RUN: sed 's/XLen/64/g' %s | llc -mtriple=riscv64 -mattr=+d,+zfh -run-pass=regbankselect \
6
+ # RUN: -disable-gisel-legality-check -simplify-mir -verify-machineinstrs -x mir \
7
+ # RUN: -o - | FileCheck %s --check-prefixes=CHECK-RV64
8
8
9
9
---
10
10
name : fp_store_fp_def_f32
@@ -14,15 +14,25 @@ body: |
14
14
bb.1:
15
15
liveins: $x10, $f10_f, $f11_f
16
16
17
- ; CHECK-LABEL: name: fp_store_fp_def_f32
18
- ; CHECK: liveins: $x10, $f10_f, $f11_f
19
- ; CHECK-NEXT: {{ $}}
20
- ; CHECK-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
21
- ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fprb(s32) = COPY $f10_f
22
- ; CHECK-NEXT: [[COPY2:%[0-9]+]]:fprb(s32) = COPY $f11_f
23
- ; CHECK-NEXT: [[FADD:%[0-9]+]]:fprb(s32) = G_FADD [[COPY1]], [[COPY2]]
24
- ; CHECK-NEXT: G_STORE [[FADD]](s32), [[COPY]](p0) :: (store (s32))
25
- ; CHECK-NEXT: PseudoRET
17
+ ; CHECK-RV32-LABEL: name: fp_store_fp_def_f32
18
+ ; CHECK-RV32: liveins: $x10, $f10_f, $f11_f
19
+ ; CHECK-RV32-NEXT: {{ $}}
20
+ ; CHECK-RV32-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
21
+ ; CHECK-RV32-NEXT: [[COPY1:%[0-9]+]]:fprb(s32) = COPY $f10_f
22
+ ; CHECK-RV32-NEXT: [[COPY2:%[0-9]+]]:fprb(s32) = COPY $f11_f
23
+ ; CHECK-RV32-NEXT: [[FADD:%[0-9]+]]:fprb(s32) = G_FADD [[COPY1]], [[COPY2]]
24
+ ; CHECK-RV32-NEXT: G_STORE [[FADD]](s32), [[COPY]](p0) :: (store (s32))
25
+ ; CHECK-RV32-NEXT: PseudoRET
26
+ ;
27
+ ; CHECK-RV64-LABEL: name: fp_store_fp_def_f32
28
+ ; CHECK-RV64: liveins: $x10, $f10_f, $f11_f
29
+ ; CHECK-RV64-NEXT: {{ $}}
30
+ ; CHECK-RV64-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
31
+ ; CHECK-RV64-NEXT: [[COPY1:%[0-9]+]]:fprb(s32) = COPY $f10_f
32
+ ; CHECK-RV64-NEXT: [[COPY2:%[0-9]+]]:fprb(s32) = COPY $f11_f
33
+ ; CHECK-RV64-NEXT: [[FADD:%[0-9]+]]:fprb(s32) = G_FADD [[COPY1]], [[COPY2]]
34
+ ; CHECK-RV64-NEXT: G_STORE [[FADD]](s32), [[COPY]](p0) :: (store (s32))
35
+ ; CHECK-RV64-NEXT: PseudoRET
26
36
%0:_(p0) = COPY $x10
27
37
%1:_(s32) = COPY $f10_f
28
38
%2:_(s32) = COPY $f11_f
@@ -39,15 +49,25 @@ body: |
39
49
bb.1:
40
50
liveins: $x10, $f10_d, $f11_d
41
51
42
- ; CHECK-LABEL: name: fp_store_fp_def_f64
43
- ; CHECK: liveins: $x10, $f10_d, $f11_d
44
- ; CHECK-NEXT: {{ $}}
45
- ; CHECK-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
46
- ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fprb(s64) = COPY $f10_d
47
- ; CHECK-NEXT: [[COPY2:%[0-9]+]]:fprb(s64) = COPY $f11_d
48
- ; CHECK-NEXT: [[FADD:%[0-9]+]]:fprb(s64) = G_FADD [[COPY1]], [[COPY2]]
49
- ; CHECK-NEXT: G_STORE [[FADD]](s64), [[COPY]](p0) :: (store (s64))
50
- ; CHECK-NEXT: PseudoRET
52
+ ; CHECK-RV32-LABEL: name: fp_store_fp_def_f64
53
+ ; CHECK-RV32: liveins: $x10, $f10_d, $f11_d
54
+ ; CHECK-RV32-NEXT: {{ $}}
55
+ ; CHECK-RV32-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
56
+ ; CHECK-RV32-NEXT: [[COPY1:%[0-9]+]]:fprb(s64) = COPY $f10_d
57
+ ; CHECK-RV32-NEXT: [[COPY2:%[0-9]+]]:fprb(s64) = COPY $f11_d
58
+ ; CHECK-RV32-NEXT: [[FADD:%[0-9]+]]:fprb(s64) = G_FADD [[COPY1]], [[COPY2]]
59
+ ; CHECK-RV32-NEXT: G_STORE [[FADD]](s64), [[COPY]](p0) :: (store (s64))
60
+ ; CHECK-RV32-NEXT: PseudoRET
61
+ ;
62
+ ; CHECK-RV64-LABEL: name: fp_store_fp_def_f64
63
+ ; CHECK-RV64: liveins: $x10, $f10_d, $f11_d
64
+ ; CHECK-RV64-NEXT: {{ $}}
65
+ ; CHECK-RV64-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
66
+ ; CHECK-RV64-NEXT: [[COPY1:%[0-9]+]]:fprb(s64) = COPY $f10_d
67
+ ; CHECK-RV64-NEXT: [[COPY2:%[0-9]+]]:fprb(s64) = COPY $f11_d
68
+ ; CHECK-RV64-NEXT: [[FADD:%[0-9]+]]:fprb(s64) = G_FADD [[COPY1]], [[COPY2]]
69
+ ; CHECK-RV64-NEXT: G_STORE [[FADD]](s64), [[COPY]](p0) :: (store (s64))
70
+ ; CHECK-RV64-NEXT: PseudoRET
51
71
%0:_(p0) = COPY $x10
52
72
%1:_(s64) = COPY $f10_d
53
73
%2:_(s64) = COPY $f11_d
@@ -64,13 +84,21 @@ body: |
64
84
bb.1:
65
85
liveins: $x10, $f10_d
66
86
67
- ; CHECK-LABEL: name: fp_store_no_def_f64
68
- ; CHECK: liveins: $x10, $f10_d
69
- ; CHECK-NEXT: {{ $}}
70
- ; CHECK-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
71
- ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fprb(s64) = COPY $f10_d
72
- ; CHECK-NEXT: G_STORE [[COPY1]](s64), [[COPY]](p0) :: (store (s64))
73
- ; CHECK-NEXT: PseudoRET
87
+ ; CHECK-RV32-LABEL: name: fp_store_no_def_f64
88
+ ; CHECK-RV32: liveins: $x10, $f10_d
89
+ ; CHECK-RV32-NEXT: {{ $}}
90
+ ; CHECK-RV32-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
91
+ ; CHECK-RV32-NEXT: [[COPY1:%[0-9]+]]:fprb(s64) = COPY $f10_d
92
+ ; CHECK-RV32-NEXT: G_STORE [[COPY1]](s64), [[COPY]](p0) :: (store (s64))
93
+ ; CHECK-RV32-NEXT: PseudoRET
94
+ ;
95
+ ; CHECK-RV64-LABEL: name: fp_store_no_def_f64
96
+ ; CHECK-RV64: liveins: $x10, $f10_d
97
+ ; CHECK-RV64-NEXT: {{ $}}
98
+ ; CHECK-RV64-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
99
+ ; CHECK-RV64-NEXT: [[COPY1:%[0-9]+]]:fprb(s64) = COPY $f10_d
100
+ ; CHECK-RV64-NEXT: G_STORE [[COPY1]](s64), [[COPY]](p0) :: (store (s64))
101
+ ; CHECK-RV64-NEXT: PseudoRET
74
102
%0:_(p0) = COPY $x10
75
103
%1:_(s64) = COPY $f10_d
76
104
G_STORE %1(s64), %0(p0) :: (store (s64))
@@ -85,15 +113,25 @@ body: |
85
113
bb.1:
86
114
liveins: $x10, $f10_f
87
115
88
- ; CHECK-LABEL: name: fp_load_fp_use_f32
89
- ; CHECK: liveins: $x10, $f10_f
90
- ; CHECK-NEXT: {{ $}}
91
- ; CHECK-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
92
- ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fprb(s32) = COPY $f10_f
93
- ; CHECK-NEXT: [[LOAD:%[0-9]+]]:fprb(s32) = G_LOAD [[COPY]](p0) :: (load (s32))
94
- ; CHECK-NEXT: [[FADD:%[0-9]+]]:fprb(s32) = G_FADD [[LOAD]], [[COPY1]]
95
- ; CHECK-NEXT: $f10_f = COPY [[FADD]](s32)
96
- ; CHECK-NEXT: PseudoRET implicit $f10_f
116
+ ; CHECK-RV32-LABEL: name: fp_load_fp_use_f32
117
+ ; CHECK-RV32: liveins: $x10, $f10_f
118
+ ; CHECK-RV32-NEXT: {{ $}}
119
+ ; CHECK-RV32-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
120
+ ; CHECK-RV32-NEXT: [[COPY1:%[0-9]+]]:fprb(s32) = COPY $f10_f
121
+ ; CHECK-RV32-NEXT: [[LOAD:%[0-9]+]]:fprb(s32) = G_LOAD [[COPY]](p0) :: (load (s32))
122
+ ; CHECK-RV32-NEXT: [[FADD:%[0-9]+]]:fprb(s32) = G_FADD [[LOAD]], [[COPY1]]
123
+ ; CHECK-RV32-NEXT: $f10_f = COPY [[FADD]](s32)
124
+ ; CHECK-RV32-NEXT: PseudoRET implicit $f10_f
125
+ ;
126
+ ; CHECK-RV64-LABEL: name: fp_load_fp_use_f32
127
+ ; CHECK-RV64: liveins: $x10, $f10_f
128
+ ; CHECK-RV64-NEXT: {{ $}}
129
+ ; CHECK-RV64-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
130
+ ; CHECK-RV64-NEXT: [[COPY1:%[0-9]+]]:fprb(s32) = COPY $f10_f
131
+ ; CHECK-RV64-NEXT: [[LOAD:%[0-9]+]]:fprb(s32) = G_LOAD [[COPY]](p0) :: (load (s32))
132
+ ; CHECK-RV64-NEXT: [[FADD:%[0-9]+]]:fprb(s32) = G_FADD [[LOAD]], [[COPY1]]
133
+ ; CHECK-RV64-NEXT: $f10_f = COPY [[FADD]](s32)
134
+ ; CHECK-RV64-NEXT: PseudoRET implicit $f10_f
97
135
%0:_(p0) = COPY $x10
98
136
%1:_(s32) = COPY $f10_f
99
137
%2:_(s32) = G_LOAD %0(p0) :: (load (s32))
@@ -110,15 +148,25 @@ body: |
110
148
bb.1:
111
149
liveins: $x10, $f10_d
112
150
113
- ; CHECK-LABEL: name: fp_load_fp_use_f64
114
- ; CHECK: liveins: $x10, $f10_d
115
- ; CHECK-NEXT: {{ $}}
116
- ; CHECK-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
117
- ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fprb(s64) = COPY $f10_d
118
- ; CHECK-NEXT: [[LOAD:%[0-9]+]]:fprb(s64) = G_LOAD [[COPY]](p0) :: (load (s64))
119
- ; CHECK-NEXT: [[FADD:%[0-9]+]]:fprb(s64) = G_FADD [[LOAD]], [[COPY1]]
120
- ; CHECK-NEXT: $f10_d = COPY [[FADD]](s64)
121
- ; CHECK-NEXT: PseudoRET implicit $f10_d
151
+ ; CHECK-RV32-LABEL: name: fp_load_fp_use_f64
152
+ ; CHECK-RV32: liveins: $x10, $f10_d
153
+ ; CHECK-RV32-NEXT: {{ $}}
154
+ ; CHECK-RV32-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
155
+ ; CHECK-RV32-NEXT: [[COPY1:%[0-9]+]]:fprb(s64) = COPY $f10_d
156
+ ; CHECK-RV32-NEXT: [[LOAD:%[0-9]+]]:fprb(s64) = G_LOAD [[COPY]](p0) :: (load (s64))
157
+ ; CHECK-RV32-NEXT: [[FADD:%[0-9]+]]:fprb(s64) = G_FADD [[LOAD]], [[COPY1]]
158
+ ; CHECK-RV32-NEXT: $f10_d = COPY [[FADD]](s64)
159
+ ; CHECK-RV32-NEXT: PseudoRET implicit $f10_d
160
+ ;
161
+ ; CHECK-RV64-LABEL: name: fp_load_fp_use_f64
162
+ ; CHECK-RV64: liveins: $x10, $f10_d
163
+ ; CHECK-RV64-NEXT: {{ $}}
164
+ ; CHECK-RV64-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
165
+ ; CHECK-RV64-NEXT: [[COPY1:%[0-9]+]]:fprb(s64) = COPY $f10_d
166
+ ; CHECK-RV64-NEXT: [[LOAD:%[0-9]+]]:fprb(s64) = G_LOAD [[COPY]](p0) :: (load (s64))
167
+ ; CHECK-RV64-NEXT: [[FADD:%[0-9]+]]:fprb(s64) = G_FADD [[LOAD]], [[COPY1]]
168
+ ; CHECK-RV64-NEXT: $f10_d = COPY [[FADD]](s64)
169
+ ; CHECK-RV64-NEXT: PseudoRET implicit $f10_d
122
170
%0:_(p0) = COPY $x10
123
171
%1:_(s64) = COPY $f10_d
124
172
%2:_(s64) = G_LOAD %0(p0) :: (load (s64))
@@ -135,14 +183,23 @@ body: |
135
183
bb.1:
136
184
liveins: $x10, $f10_d
137
185
138
- ; CHECK-LABEL: name: fp_load_no_use_f64
139
- ; CHECK: liveins: $x10, $f10_d
140
- ; CHECK-NEXT: {{ $}}
141
- ; CHECK-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
142
- ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fprb(s64) = COPY $f10_d
143
- ; CHECK-NEXT: [[LOAD:%[0-9]+]]:fprb(s64) = G_LOAD [[COPY]](p0) :: (load (s64))
144
- ; CHECK-NEXT: $f10_d = COPY [[LOAD]](s64)
145
- ; CHECK-NEXT: PseudoRET implicit $f10_d
186
+ ; CHECK-RV32-LABEL: name: fp_load_no_use_f64
187
+ ; CHECK-RV32: liveins: $x10, $f10_d
188
+ ; CHECK-RV32-NEXT: {{ $}}
189
+ ; CHECK-RV32-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
190
+ ; CHECK-RV32-NEXT: [[COPY1:%[0-9]+]]:fprb(s64) = COPY $f10_d
191
+ ; CHECK-RV32-NEXT: [[LOAD:%[0-9]+]]:fprb(s64) = G_LOAD [[COPY]](p0) :: (load (s64))
192
+ ; CHECK-RV32-NEXT: $f10_d = COPY [[LOAD]](s64)
193
+ ; CHECK-RV32-NEXT: PseudoRET implicit $f10_d
194
+ ;
195
+ ; CHECK-RV64-LABEL: name: fp_load_no_use_f64
196
+ ; CHECK-RV64: liveins: $x10, $f10_d
197
+ ; CHECK-RV64-NEXT: {{ $}}
198
+ ; CHECK-RV64-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
199
+ ; CHECK-RV64-NEXT: [[COPY1:%[0-9]+]]:fprb(s64) = COPY $f10_d
200
+ ; CHECK-RV64-NEXT: [[LOAD:%[0-9]+]]:fprb(s64) = G_LOAD [[COPY]](p0) :: (load (s64))
201
+ ; CHECK-RV64-NEXT: $f10_d = COPY [[LOAD]](s64)
202
+ ; CHECK-RV64-NEXT: PseudoRET implicit $f10_d
146
203
%0:_(p0) = COPY $x10
147
204
%1:_(s64) = COPY $f10_d
148
205
%2:_(s64) = G_LOAD %0(p0) :: (load (s64))
@@ -158,15 +215,25 @@ body: |
158
215
bb.1:
159
216
liveins: $x10, $f10_h, $f11_h
160
217
161
- ; CHECK-LABEL: name: fp_store_fp_def_f16
162
- ; CHECK: liveins: $x10, $f10_h, $f11_h
163
- ; CHECK-NEXT: {{ $}}
164
- ; CHECK-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
165
- ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fprb(s16) = COPY $f10_h
166
- ; CHECK-NEXT: [[COPY2:%[0-9]+]]:fprb(s16) = COPY $f11_h
167
- ; CHECK-NEXT: [[FADD:%[0-9]+]]:fprb(s16) = G_FADD [[COPY1]], [[COPY2]]
168
- ; CHECK-NEXT: G_STORE [[FADD]](s16), [[COPY]](p0) :: (store (s16))
169
- ; CHECK-NEXT: PseudoRET
218
+ ; CHECK-RV32-LABEL: name: fp_store_fp_def_f16
219
+ ; CHECK-RV32: liveins: $x10, $f10_h, $f11_h
220
+ ; CHECK-RV32-NEXT: {{ $}}
221
+ ; CHECK-RV32-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
222
+ ; CHECK-RV32-NEXT: [[COPY1:%[0-9]+]]:fprb(s16) = COPY $f10_h
223
+ ; CHECK-RV32-NEXT: [[COPY2:%[0-9]+]]:fprb(s16) = COPY $f11_h
224
+ ; CHECK-RV32-NEXT: [[FADD:%[0-9]+]]:fprb(s16) = G_FADD [[COPY1]], [[COPY2]]
225
+ ; CHECK-RV32-NEXT: G_STORE [[FADD]](s16), [[COPY]](p0) :: (store (s16))
226
+ ; CHECK-RV32-NEXT: PseudoRET
227
+ ;
228
+ ; CHECK-RV64-LABEL: name: fp_store_fp_def_f16
229
+ ; CHECK-RV64: liveins: $x10, $f10_h, $f11_h
230
+ ; CHECK-RV64-NEXT: {{ $}}
231
+ ; CHECK-RV64-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
232
+ ; CHECK-RV64-NEXT: [[COPY1:%[0-9]+]]:fprb(s16) = COPY $f10_h
233
+ ; CHECK-RV64-NEXT: [[COPY2:%[0-9]+]]:fprb(s16) = COPY $f11_h
234
+ ; CHECK-RV64-NEXT: [[FADD:%[0-9]+]]:fprb(s16) = G_FADD [[COPY1]], [[COPY2]]
235
+ ; CHECK-RV64-NEXT: G_STORE [[FADD]](s16), [[COPY]](p0) :: (store (s16))
236
+ ; CHECK-RV64-NEXT: PseudoRET
170
237
%0:_(p0) = COPY $x10
171
238
%1:_(s16) = COPY $f10_h
172
239
%2:_(s16) = COPY $f11_h
@@ -183,15 +250,25 @@ body: |
183
250
bb.1:
184
251
liveins: $x10, $f10_h
185
252
186
- ; CHECK-LABEL: name: fp_load_fp_use_f16
187
- ; CHECK: liveins: $x10, $f10_h
188
- ; CHECK-NEXT: {{ $}}
189
- ; CHECK-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
190
- ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fprb(s16) = COPY $f10_h
191
- ; CHECK-NEXT: [[LOAD:%[0-9]+]]:fprb(s16) = G_LOAD [[COPY]](p0) :: (load (s16))
192
- ; CHECK-NEXT: [[FADD:%[0-9]+]]:fprb(s16) = G_FADD [[LOAD]], [[COPY1]]
193
- ; CHECK-NEXT: $f10_h = COPY [[FADD]](s16)
194
- ; CHECK-NEXT: PseudoRET implicit $f10_h
253
+ ; CHECK-RV32-LABEL: name: fp_load_fp_use_f16
254
+ ; CHECK-RV32: liveins: $x10, $f10_h
255
+ ; CHECK-RV32-NEXT: {{ $}}
256
+ ; CHECK-RV32-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
257
+ ; CHECK-RV32-NEXT: [[COPY1:%[0-9]+]]:fprb(s16) = COPY $f10_h
258
+ ; CHECK-RV32-NEXT: [[LOAD:%[0-9]+]]:fprb(s16) = G_LOAD [[COPY]](p0) :: (load (s16))
259
+ ; CHECK-RV32-NEXT: [[FADD:%[0-9]+]]:fprb(s16) = G_FADD [[LOAD]], [[COPY1]]
260
+ ; CHECK-RV32-NEXT: $f10_h = COPY [[FADD]](s16)
261
+ ; CHECK-RV32-NEXT: PseudoRET implicit $f10_h
262
+ ;
263
+ ; CHECK-RV64-LABEL: name: fp_load_fp_use_f16
264
+ ; CHECK-RV64: liveins: $x10, $f10_h
265
+ ; CHECK-RV64-NEXT: {{ $}}
266
+ ; CHECK-RV64-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
267
+ ; CHECK-RV64-NEXT: [[COPY1:%[0-9]+]]:fprb(s16) = COPY $f10_h
268
+ ; CHECK-RV64-NEXT: [[LOAD:%[0-9]+]]:fprb(s16) = G_LOAD [[COPY]](p0) :: (load (s16))
269
+ ; CHECK-RV64-NEXT: [[FADD:%[0-9]+]]:fprb(s16) = G_FADD [[LOAD]], [[COPY1]]
270
+ ; CHECK-RV64-NEXT: $f10_h = COPY [[FADD]](s16)
271
+ ; CHECK-RV64-NEXT: PseudoRET implicit $f10_h
195
272
%0:_(p0) = COPY $x10
196
273
%1:_(s16) = COPY $f10_h
197
274
%2:_(s16) = G_LOAD %0(p0) :: (load (s16))
@@ -200,3 +277,49 @@ body: |
200
277
PseudoRET implicit $f10_h
201
278
202
279
...
280
+ ---
281
+ name : fpclass
282
+ legalized : true
283
+ tracksRegLiveness : true
284
+ liveins :
285
+ - { reg: '$x10' }
286
+ body : |
287
+ bb.1:
288
+ liveins: $x10
289
+
290
+ ; CHECK-RV32-LABEL: name: fpclass
291
+ ; CHECK-RV32: liveins: $x10
292
+ ; CHECK-RV32-NEXT: {{ $}}
293
+ ; CHECK-RV32-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
294
+ ; CHECK-RV32-NEXT: [[LOAD:%[0-9]+]]:fprb(s32) = G_LOAD [[COPY]](p0) :: (load (s32))
295
+ ; CHECK-RV32-NEXT: [[C:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 927
296
+ ; CHECK-RV32-NEXT: [[C1:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 0
297
+ ; CHECK-RV32-NEXT: [[FCLASS:%[0-9]+]]:gprb(s32) = G_FCLASS [[LOAD]](s32)
298
+ ; CHECK-RV32-NEXT: [[AND:%[0-9]+]]:gprb(s32) = G_AND [[FCLASS]], [[C]]
299
+ ; CHECK-RV32-NEXT: [[ICMP:%[0-9]+]]:gprb(s32) = G_ICMP intpred(ne), [[AND]](s32), [[C1]]
300
+ ; CHECK-RV32-NEXT: $x10 = COPY [[ICMP]](s32)
301
+ ; CHECK-RV32-NEXT: PseudoRET implicit $x10
302
+ ;
303
+ ; CHECK-RV64-LABEL: name: fpclass
304
+ ; CHECK-RV64: liveins: $x10
305
+ ; CHECK-RV64-NEXT: {{ $}}
306
+ ; CHECK-RV64-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
307
+ ; CHECK-RV64-NEXT: [[LOAD:%[0-9]+]]:fprb(s32) = G_LOAD [[COPY]](p0) :: (load (s32))
308
+ ; CHECK-RV64-NEXT: [[C:%[0-9]+]]:gprb(s64) = G_CONSTANT i64 927
309
+ ; CHECK-RV64-NEXT: [[C1:%[0-9]+]]:gprb(s64) = G_CONSTANT i64 0
310
+ ; CHECK-RV64-NEXT: [[FCLASS:%[0-9]+]]:gprb(s64) = G_FCLASS [[LOAD]](s32)
311
+ ; CHECK-RV64-NEXT: [[AND:%[0-9]+]]:gprb(s64) = G_AND [[FCLASS]], [[C]]
312
+ ; CHECK-RV64-NEXT: [[ICMP:%[0-9]+]]:gprb(s64) = G_ICMP intpred(ne), [[AND]](s64), [[C1]]
313
+ ; CHECK-RV64-NEXT: $x10 = COPY [[ICMP]](s64)
314
+ ; CHECK-RV64-NEXT: PseudoRET implicit $x10
315
+ %0:_(p0) = COPY $x10
316
+ %1:_(s32) = G_LOAD %0(p0) :: (load (s32))
317
+ %4:_(sXLen) = G_CONSTANT iXLen 927
318
+ %5:_(sXLen) = G_CONSTANT iXLen 0
319
+ %6:_(sXLen) = G_FCLASS %1(s32)
320
+ %7:_(sXLen) = G_AND %6, %4
321
+ %8:_(sXLen) = G_ICMP intpred(ne), %7(sXLen), %5
322
+ $x10 = COPY %8(sXLen)
323
+ PseudoRET implicit $x10
324
+
325
+ ...
0 commit comments