Revert "[Flang][Driver] Add a flag to control zero initialization of global v…" ...
[llvm-project.git] / llvm / test / CodeGen / Mips / GlobalISel / instruction-select / rem_and_div_vec.mir
blob05c40e515712ce9e63f72ed4902cd8c31388402c
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=mipsel-linux-gnu -mcpu=mips32r5 -mattr=+msa,+fp64,+nan2008 -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=P5600
3 --- |
5   define void @sdiv_v16i8(ptr %a, ptr %b, ptr %c) { entry: ret void }
6   define void @sdiv_v8i16(ptr %a, ptr %b, ptr %c) { entry: ret void }
7   define void @sdiv_v4i32(ptr %a, ptr %b, ptr %c) { entry: ret void }
8   define void @sdiv_v2i64(ptr %a, ptr %b, ptr %c) { entry: ret void }
10   define void @srem_v16i8(ptr %a, ptr %b, ptr %c) { entry: ret void }
11   define void @srem_v8i16(ptr %a, ptr %b, ptr %c) { entry: ret void }
12   define void @srem_v4i32(ptr %a, ptr %b, ptr %c) { entry: ret void }
13   define void @srem_v2i64(ptr %a, ptr %b, ptr %c) { entry: ret void }
15   define void @udiv_v16u8(ptr %a, ptr %b, ptr %c) { entry: ret void }
16   define void @udiv_v8u16(ptr %a, ptr %b, ptr %c) { entry: ret void }
17   define void @udiv_v4u32(ptr %a, ptr %b, ptr %c) { entry: ret void }
18   define void @udiv_v2u64(ptr %a, ptr %b, ptr %c) { entry: ret void }
20   define void @urem_v16u8(ptr %a, ptr %b, ptr %c) { entry: ret void }
21   define void @urem_v8u16(ptr %a, ptr %b, ptr %c) { entry: ret void }
22   define void @urem_v4u32(ptr %a, ptr %b, ptr %c) { entry: ret void }
23   define void @urem_v2u64(ptr %a, ptr %b, ptr %c) { entry: ret void }
25 ...
26 ---
27 name:            sdiv_v16i8
28 alignment:       4
29 legalized:       true
30 regBankSelected: true
31 tracksRegLiveness: true
32 body:             |
33   bb.1.entry:
34     liveins: $a0, $a1, $a2
36     ; P5600-LABEL: name: sdiv_v16i8
37     ; P5600: liveins: $a0, $a1, $a2
38     ; P5600: [[COPY:%[0-9]+]]:gpr32 = COPY $a0
39     ; P5600: [[COPY1:%[0-9]+]]:gpr32 = COPY $a1
40     ; P5600: [[COPY2:%[0-9]+]]:gpr32 = COPY $a2
41     ; P5600: [[LD_B:%[0-9]+]]:msa128b = LD_B [[COPY]], 0 :: (load (<16 x s8>) from %ir.a)
42     ; P5600: [[LD_B1:%[0-9]+]]:msa128b = LD_B [[COPY1]], 0 :: (load (<16 x s8>) from %ir.b)
43     ; P5600: [[DIV_S_B:%[0-9]+]]:msa128b = DIV_S_B [[LD_B]], [[LD_B1]]
44     ; P5600: ST_B [[DIV_S_B]], [[COPY2]], 0 :: (store (<16 x s8>) into %ir.c)
45     ; P5600: RetRA
46     %0:gprb(p0) = COPY $a0
47     %1:gprb(p0) = COPY $a1
48     %2:gprb(p0) = COPY $a2
49     %3:fprb(<16 x s8>) = G_LOAD %0(p0) :: (load (<16 x s8>) from %ir.a)
50     %4:fprb(<16 x s8>) = G_LOAD %1(p0) :: (load (<16 x s8>) from %ir.b)
51     %5:fprb(<16 x s8>) = G_SDIV %3, %4
52     G_STORE %5(<16 x s8>), %2(p0) :: (store (<16 x s8>) into %ir.c)
53     RetRA
55 ...
56 ---
57 name:            sdiv_v8i16
58 alignment:       4
59 legalized:       true
60 regBankSelected: true
61 tracksRegLiveness: true
62 body:             |
63   bb.1.entry:
64     liveins: $a0, $a1, $a2
66     ; P5600-LABEL: name: sdiv_v8i16
67     ; P5600: liveins: $a0, $a1, $a2
68     ; P5600: [[COPY:%[0-9]+]]:gpr32 = COPY $a0
69     ; P5600: [[COPY1:%[0-9]+]]:gpr32 = COPY $a1
70     ; P5600: [[COPY2:%[0-9]+]]:gpr32 = COPY $a2
71     ; P5600: [[LD_H:%[0-9]+]]:msa128h = LD_H [[COPY]], 0 :: (load (<8 x s16>) from %ir.a)
72     ; P5600: [[LD_H1:%[0-9]+]]:msa128h = LD_H [[COPY1]], 0 :: (load (<8 x s16>) from %ir.b)
73     ; P5600: [[DIV_S_H:%[0-9]+]]:msa128h = DIV_S_H [[LD_H]], [[LD_H1]]
74     ; P5600: ST_H [[DIV_S_H]], [[COPY2]], 0 :: (store (<8 x s16>) into %ir.c)
75     ; P5600: RetRA
76     %0:gprb(p0) = COPY $a0
77     %1:gprb(p0) = COPY $a1
78     %2:gprb(p0) = COPY $a2
79     %3:fprb(<8 x s16>) = G_LOAD %0(p0) :: (load (<8 x s16>) from %ir.a)
80     %4:fprb(<8 x s16>) = G_LOAD %1(p0) :: (load (<8 x s16>) from %ir.b)
81     %5:fprb(<8 x s16>) = G_SDIV %3, %4
82     G_STORE %5(<8 x s16>), %2(p0) :: (store (<8 x s16>) into %ir.c)
83     RetRA
85 ...
86 ---
87 name:            sdiv_v4i32
88 alignment:       4
89 legalized:       true
90 regBankSelected: true
91 tracksRegLiveness: true
92 body:             |
93   bb.1.entry:
94     liveins: $a0, $a1, $a2
96     ; P5600-LABEL: name: sdiv_v4i32
97     ; P5600: liveins: $a0, $a1, $a2
98     ; P5600: [[COPY:%[0-9]+]]:gpr32 = COPY $a0
99     ; P5600: [[COPY1:%[0-9]+]]:gpr32 = COPY $a1
100     ; P5600: [[COPY2:%[0-9]+]]:gpr32 = COPY $a2
101     ; P5600: [[LD_W:%[0-9]+]]:msa128w = LD_W [[COPY]], 0 :: (load (<4 x s32>) from %ir.a)
102     ; P5600: [[LD_W1:%[0-9]+]]:msa128w = LD_W [[COPY1]], 0 :: (load (<4 x s32>) from %ir.b)
103     ; P5600: [[DIV_S_W:%[0-9]+]]:msa128w = DIV_S_W [[LD_W]], [[LD_W1]]
104     ; P5600: ST_W [[DIV_S_W]], [[COPY2]], 0 :: (store (<4 x s32>) into %ir.c)
105     ; P5600: RetRA
106     %0:gprb(p0) = COPY $a0
107     %1:gprb(p0) = COPY $a1
108     %2:gprb(p0) = COPY $a2
109     %3:fprb(<4 x s32>) = G_LOAD %0(p0) :: (load (<4 x s32>) from %ir.a)
110     %4:fprb(<4 x s32>) = G_LOAD %1(p0) :: (load (<4 x s32>) from %ir.b)
111     %5:fprb(<4 x s32>) = G_SDIV %3, %4
112     G_STORE %5(<4 x s32>), %2(p0) :: (store (<4 x s32>) into %ir.c)
113     RetRA
117 name:            sdiv_v2i64
118 alignment:       4
119 legalized:       true
120 regBankSelected: true
121 tracksRegLiveness: true
122 body:             |
123   bb.1.entry:
124     liveins: $a0, $a1, $a2
126     ; P5600-LABEL: name: sdiv_v2i64
127     ; P5600: liveins: $a0, $a1, $a2
128     ; P5600: [[COPY:%[0-9]+]]:gpr32 = COPY $a0
129     ; P5600: [[COPY1:%[0-9]+]]:gpr32 = COPY $a1
130     ; P5600: [[COPY2:%[0-9]+]]:gpr32 = COPY $a2
131     ; P5600: [[LD_D:%[0-9]+]]:msa128d = LD_D [[COPY]], 0 :: (load (<2 x s64>) from %ir.a)
132     ; P5600: [[LD_D1:%[0-9]+]]:msa128d = LD_D [[COPY1]], 0 :: (load (<2 x s64>) from %ir.b)
133     ; P5600: [[DIV_S_D:%[0-9]+]]:msa128d = DIV_S_D [[LD_D]], [[LD_D1]]
134     ; P5600: ST_D [[DIV_S_D]], [[COPY2]], 0 :: (store (<2 x s64>) into %ir.c)
135     ; P5600: RetRA
136     %0:gprb(p0) = COPY $a0
137     %1:gprb(p0) = COPY $a1
138     %2:gprb(p0) = COPY $a2
139     %3:fprb(<2 x s64>) = G_LOAD %0(p0) :: (load (<2 x s64>) from %ir.a)
140     %4:fprb(<2 x s64>) = G_LOAD %1(p0) :: (load (<2 x s64>) from %ir.b)
141     %5:fprb(<2 x s64>) = G_SDIV %3, %4
142     G_STORE %5(<2 x s64>), %2(p0) :: (store (<2 x s64>) into %ir.c)
143     RetRA
147 name:            srem_v16i8
148 alignment:       4
149 legalized:       true
150 regBankSelected: true
151 tracksRegLiveness: true
152 body:             |
153   bb.1.entry:
154     liveins: $a0, $a1, $a2
156     ; P5600-LABEL: name: srem_v16i8
157     ; P5600: liveins: $a0, $a1, $a2
158     ; P5600: [[COPY:%[0-9]+]]:gpr32 = COPY $a0
159     ; P5600: [[COPY1:%[0-9]+]]:gpr32 = COPY $a1
160     ; P5600: [[COPY2:%[0-9]+]]:gpr32 = COPY $a2
161     ; P5600: [[LD_B:%[0-9]+]]:msa128b = LD_B [[COPY]], 0 :: (load (<16 x s8>) from %ir.a)
162     ; P5600: [[LD_B1:%[0-9]+]]:msa128b = LD_B [[COPY1]], 0 :: (load (<16 x s8>) from %ir.b)
163     ; P5600: [[MOD_S_B:%[0-9]+]]:msa128b = MOD_S_B [[LD_B]], [[LD_B1]]
164     ; P5600: ST_B [[MOD_S_B]], [[COPY2]], 0 :: (store (<16 x s8>) into %ir.c)
165     ; P5600: RetRA
166     %0:gprb(p0) = COPY $a0
167     %1:gprb(p0) = COPY $a1
168     %2:gprb(p0) = COPY $a2
169     %3:fprb(<16 x s8>) = G_LOAD %0(p0) :: (load (<16 x s8>) from %ir.a)
170     %4:fprb(<16 x s8>) = G_LOAD %1(p0) :: (load (<16 x s8>) from %ir.b)
171     %5:fprb(<16 x s8>) = G_SREM %3, %4
172     G_STORE %5(<16 x s8>), %2(p0) :: (store (<16 x s8>) into %ir.c)
173     RetRA
177 name:            srem_v8i16
178 alignment:       4
179 legalized:       true
180 regBankSelected: true
181 tracksRegLiveness: true
182 body:             |
183   bb.1.entry:
184     liveins: $a0, $a1, $a2
186     ; P5600-LABEL: name: srem_v8i16
187     ; P5600: liveins: $a0, $a1, $a2
188     ; P5600: [[COPY:%[0-9]+]]:gpr32 = COPY $a0
189     ; P5600: [[COPY1:%[0-9]+]]:gpr32 = COPY $a1
190     ; P5600: [[COPY2:%[0-9]+]]:gpr32 = COPY $a2
191     ; P5600: [[LD_H:%[0-9]+]]:msa128h = LD_H [[COPY]], 0 :: (load (<8 x s16>) from %ir.a)
192     ; P5600: [[LD_H1:%[0-9]+]]:msa128h = LD_H [[COPY1]], 0 :: (load (<8 x s16>) from %ir.b)
193     ; P5600: [[MOD_S_H:%[0-9]+]]:msa128h = MOD_S_H [[LD_H]], [[LD_H1]]
194     ; P5600: ST_H [[MOD_S_H]], [[COPY2]], 0 :: (store (<8 x s16>) into %ir.c)
195     ; P5600: RetRA
196     %0:gprb(p0) = COPY $a0
197     %1:gprb(p0) = COPY $a1
198     %2:gprb(p0) = COPY $a2
199     %3:fprb(<8 x s16>) = G_LOAD %0(p0) :: (load (<8 x s16>) from %ir.a)
200     %4:fprb(<8 x s16>) = G_LOAD %1(p0) :: (load (<8 x s16>) from %ir.b)
201     %5:fprb(<8 x s16>) = G_SREM %3, %4
202     G_STORE %5(<8 x s16>), %2(p0) :: (store (<8 x s16>) into %ir.c)
203     RetRA
207 name:            srem_v4i32
208 alignment:       4
209 legalized:       true
210 regBankSelected: true
211 tracksRegLiveness: true
212 body:             |
213   bb.1.entry:
214     liveins: $a0, $a1, $a2
216     ; P5600-LABEL: name: srem_v4i32
217     ; P5600: liveins: $a0, $a1, $a2
218     ; P5600: [[COPY:%[0-9]+]]:gpr32 = COPY $a0
219     ; P5600: [[COPY1:%[0-9]+]]:gpr32 = COPY $a1
220     ; P5600: [[COPY2:%[0-9]+]]:gpr32 = COPY $a2
221     ; P5600: [[LD_W:%[0-9]+]]:msa128w = LD_W [[COPY]], 0 :: (load (<4 x s32>) from %ir.a)
222     ; P5600: [[LD_W1:%[0-9]+]]:msa128w = LD_W [[COPY1]], 0 :: (load (<4 x s32>) from %ir.b)
223     ; P5600: [[MOD_S_W:%[0-9]+]]:msa128w = MOD_S_W [[LD_W]], [[LD_W1]]
224     ; P5600: ST_W [[MOD_S_W]], [[COPY2]], 0 :: (store (<4 x s32>) into %ir.c)
225     ; P5600: RetRA
226     %0:gprb(p0) = COPY $a0
227     %1:gprb(p0) = COPY $a1
228     %2:gprb(p0) = COPY $a2
229     %3:fprb(<4 x s32>) = G_LOAD %0(p0) :: (load (<4 x s32>) from %ir.a)
230     %4:fprb(<4 x s32>) = G_LOAD %1(p0) :: (load (<4 x s32>) from %ir.b)
231     %5:fprb(<4 x s32>) = G_SREM %3, %4
232     G_STORE %5(<4 x s32>), %2(p0) :: (store (<4 x s32>) into %ir.c)
233     RetRA
237 name:            srem_v2i64
238 alignment:       4
239 legalized:       true
240 regBankSelected: true
241 tracksRegLiveness: true
242 body:             |
243   bb.1.entry:
244     liveins: $a0, $a1, $a2
246     ; P5600-LABEL: name: srem_v2i64
247     ; P5600: liveins: $a0, $a1, $a2
248     ; P5600: [[COPY:%[0-9]+]]:gpr32 = COPY $a0
249     ; P5600: [[COPY1:%[0-9]+]]:gpr32 = COPY $a1
250     ; P5600: [[COPY2:%[0-9]+]]:gpr32 = COPY $a2
251     ; P5600: [[LD_D:%[0-9]+]]:msa128d = LD_D [[COPY]], 0 :: (load (<2 x s64>) from %ir.a)
252     ; P5600: [[LD_D1:%[0-9]+]]:msa128d = LD_D [[COPY1]], 0 :: (load (<2 x s64>) from %ir.b)
253     ; P5600: [[MOD_S_D:%[0-9]+]]:msa128d = MOD_S_D [[LD_D]], [[LD_D1]]
254     ; P5600: ST_D [[MOD_S_D]], [[COPY2]], 0 :: (store (<2 x s64>) into %ir.c)
255     ; P5600: RetRA
256     %0:gprb(p0) = COPY $a0
257     %1:gprb(p0) = COPY $a1
258     %2:gprb(p0) = COPY $a2
259     %3:fprb(<2 x s64>) = G_LOAD %0(p0) :: (load (<2 x s64>) from %ir.a)
260     %4:fprb(<2 x s64>) = G_LOAD %1(p0) :: (load (<2 x s64>) from %ir.b)
261     %5:fprb(<2 x s64>) = G_SREM %3, %4
262     G_STORE %5(<2 x s64>), %2(p0) :: (store (<2 x s64>) into %ir.c)
263     RetRA
267 name:            udiv_v16u8
268 alignment:       4
269 legalized:       true
270 regBankSelected: true
271 tracksRegLiveness: true
272 body:             |
273   bb.1.entry:
274     liveins: $a0, $a1, $a2
276     ; P5600-LABEL: name: udiv_v16u8
277     ; P5600: liveins: $a0, $a1, $a2
278     ; P5600: [[COPY:%[0-9]+]]:gpr32 = COPY $a0
279     ; P5600: [[COPY1:%[0-9]+]]:gpr32 = COPY $a1
280     ; P5600: [[COPY2:%[0-9]+]]:gpr32 = COPY $a2
281     ; P5600: [[LD_B:%[0-9]+]]:msa128b = LD_B [[COPY]], 0 :: (load (<16 x s8>) from %ir.a)
282     ; P5600: [[LD_B1:%[0-9]+]]:msa128b = LD_B [[COPY1]], 0 :: (load (<16 x s8>) from %ir.b)
283     ; P5600: [[DIV_U_B:%[0-9]+]]:msa128b = DIV_U_B [[LD_B]], [[LD_B1]]
284     ; P5600: ST_B [[DIV_U_B]], [[COPY2]], 0 :: (store (<16 x s8>) into %ir.c)
285     ; P5600: RetRA
286     %0:gprb(p0) = COPY $a0
287     %1:gprb(p0) = COPY $a1
288     %2:gprb(p0) = COPY $a2
289     %3:fprb(<16 x s8>) = G_LOAD %0(p0) :: (load (<16 x s8>) from %ir.a)
290     %4:fprb(<16 x s8>) = G_LOAD %1(p0) :: (load (<16 x s8>) from %ir.b)
291     %5:fprb(<16 x s8>) = G_UDIV %3, %4
292     G_STORE %5(<16 x s8>), %2(p0) :: (store (<16 x s8>) into %ir.c)
293     RetRA
297 name:            udiv_v8u16
298 alignment:       4
299 legalized:       true
300 regBankSelected: true
301 tracksRegLiveness: true
302 body:             |
303   bb.1.entry:
304     liveins: $a0, $a1, $a2
306     ; P5600-LABEL: name: udiv_v8u16
307     ; P5600: liveins: $a0, $a1, $a2
308     ; P5600: [[COPY:%[0-9]+]]:gpr32 = COPY $a0
309     ; P5600: [[COPY1:%[0-9]+]]:gpr32 = COPY $a1
310     ; P5600: [[COPY2:%[0-9]+]]:gpr32 = COPY $a2
311     ; P5600: [[LD_H:%[0-9]+]]:msa128h = LD_H [[COPY]], 0 :: (load (<8 x s16>) from %ir.a)
312     ; P5600: [[LD_H1:%[0-9]+]]:msa128h = LD_H [[COPY1]], 0 :: (load (<8 x s16>) from %ir.b)
313     ; P5600: [[DIV_U_H:%[0-9]+]]:msa128h = DIV_U_H [[LD_H]], [[LD_H1]]
314     ; P5600: ST_H [[DIV_U_H]], [[COPY2]], 0 :: (store (<8 x s16>) into %ir.c)
315     ; P5600: RetRA
316     %0:gprb(p0) = COPY $a0
317     %1:gprb(p0) = COPY $a1
318     %2:gprb(p0) = COPY $a2
319     %3:fprb(<8 x s16>) = G_LOAD %0(p0) :: (load (<8 x s16>) from %ir.a)
320     %4:fprb(<8 x s16>) = G_LOAD %1(p0) :: (load (<8 x s16>) from %ir.b)
321     %5:fprb(<8 x s16>) = G_UDIV %3, %4
322     G_STORE %5(<8 x s16>), %2(p0) :: (store (<8 x s16>) into %ir.c)
323     RetRA
327 name:            udiv_v4u32
328 alignment:       4
329 legalized:       true
330 regBankSelected: true
331 tracksRegLiveness: true
332 body:             |
333   bb.1.entry:
334     liveins: $a0, $a1, $a2
336     ; P5600-LABEL: name: udiv_v4u32
337     ; P5600: liveins: $a0, $a1, $a2
338     ; P5600: [[COPY:%[0-9]+]]:gpr32 = COPY $a0
339     ; P5600: [[COPY1:%[0-9]+]]:gpr32 = COPY $a1
340     ; P5600: [[COPY2:%[0-9]+]]:gpr32 = COPY $a2
341     ; P5600: [[LD_W:%[0-9]+]]:msa128w = LD_W [[COPY]], 0 :: (load (<4 x s32>) from %ir.a)
342     ; P5600: [[LD_W1:%[0-9]+]]:msa128w = LD_W [[COPY1]], 0 :: (load (<4 x s32>) from %ir.b)
343     ; P5600: [[DIV_U_W:%[0-9]+]]:msa128w = DIV_U_W [[LD_W]], [[LD_W1]]
344     ; P5600: ST_W [[DIV_U_W]], [[COPY2]], 0 :: (store (<4 x s32>) into %ir.c)
345     ; P5600: RetRA
346     %0:gprb(p0) = COPY $a0
347     %1:gprb(p0) = COPY $a1
348     %2:gprb(p0) = COPY $a2
349     %3:fprb(<4 x s32>) = G_LOAD %0(p0) :: (load (<4 x s32>) from %ir.a)
350     %4:fprb(<4 x s32>) = G_LOAD %1(p0) :: (load (<4 x s32>) from %ir.b)
351     %5:fprb(<4 x s32>) = G_UDIV %3, %4
352     G_STORE %5(<4 x s32>), %2(p0) :: (store (<4 x s32>) into %ir.c)
353     RetRA
357 name:            udiv_v2u64
358 alignment:       4
359 legalized:       true
360 regBankSelected: true
361 tracksRegLiveness: true
362 body:             |
363   bb.1.entry:
364     liveins: $a0, $a1, $a2
366     ; P5600-LABEL: name: udiv_v2u64
367     ; P5600: liveins: $a0, $a1, $a2
368     ; P5600: [[COPY:%[0-9]+]]:gpr32 = COPY $a0
369     ; P5600: [[COPY1:%[0-9]+]]:gpr32 = COPY $a1
370     ; P5600: [[COPY2:%[0-9]+]]:gpr32 = COPY $a2
371     ; P5600: [[LD_D:%[0-9]+]]:msa128d = LD_D [[COPY]], 0 :: (load (<2 x s64>) from %ir.a)
372     ; P5600: [[LD_D1:%[0-9]+]]:msa128d = LD_D [[COPY1]], 0 :: (load (<2 x s64>) from %ir.b)
373     ; P5600: [[DIV_U_D:%[0-9]+]]:msa128d = DIV_U_D [[LD_D]], [[LD_D1]]
374     ; P5600: ST_D [[DIV_U_D]], [[COPY2]], 0 :: (store (<2 x s64>) into %ir.c)
375     ; P5600: RetRA
376     %0:gprb(p0) = COPY $a0
377     %1:gprb(p0) = COPY $a1
378     %2:gprb(p0) = COPY $a2
379     %3:fprb(<2 x s64>) = G_LOAD %0(p0) :: (load (<2 x s64>) from %ir.a)
380     %4:fprb(<2 x s64>) = G_LOAD %1(p0) :: (load (<2 x s64>) from %ir.b)
381     %5:fprb(<2 x s64>) = G_UDIV %3, %4
382     G_STORE %5(<2 x s64>), %2(p0) :: (store (<2 x s64>) into %ir.c)
383     RetRA
387 name:            urem_v16u8
388 alignment:       4
389 legalized:       true
390 regBankSelected: true
391 tracksRegLiveness: true
392 body:             |
393   bb.1.entry:
394     liveins: $a0, $a1, $a2
396     ; P5600-LABEL: name: urem_v16u8
397     ; P5600: liveins: $a0, $a1, $a2
398     ; P5600: [[COPY:%[0-9]+]]:gpr32 = COPY $a0
399     ; P5600: [[COPY1:%[0-9]+]]:gpr32 = COPY $a1
400     ; P5600: [[COPY2:%[0-9]+]]:gpr32 = COPY $a2
401     ; P5600: [[LD_B:%[0-9]+]]:msa128b = LD_B [[COPY]], 0 :: (load (<16 x s8>) from %ir.a)
402     ; P5600: [[LD_B1:%[0-9]+]]:msa128b = LD_B [[COPY1]], 0 :: (load (<16 x s8>) from %ir.b)
403     ; P5600: [[MOD_U_B:%[0-9]+]]:msa128b = MOD_U_B [[LD_B]], [[LD_B1]]
404     ; P5600: ST_B [[MOD_U_B]], [[COPY2]], 0 :: (store (<16 x s8>) into %ir.c)
405     ; P5600: RetRA
406     %0:gprb(p0) = COPY $a0
407     %1:gprb(p0) = COPY $a1
408     %2:gprb(p0) = COPY $a2
409     %3:fprb(<16 x s8>) = G_LOAD %0(p0) :: (load (<16 x s8>) from %ir.a)
410     %4:fprb(<16 x s8>) = G_LOAD %1(p0) :: (load (<16 x s8>) from %ir.b)
411     %5:fprb(<16 x s8>) = G_UREM %3, %4
412     G_STORE %5(<16 x s8>), %2(p0) :: (store (<16 x s8>) into %ir.c)
413     RetRA
417 name:            urem_v8u16
418 alignment:       4
419 legalized:       true
420 regBankSelected: true
421 tracksRegLiveness: true
422 body:             |
423   bb.1.entry:
424     liveins: $a0, $a1, $a2
426     ; P5600-LABEL: name: urem_v8u16
427     ; P5600: liveins: $a0, $a1, $a2
428     ; P5600: [[COPY:%[0-9]+]]:gpr32 = COPY $a0
429     ; P5600: [[COPY1:%[0-9]+]]:gpr32 = COPY $a1
430     ; P5600: [[COPY2:%[0-9]+]]:gpr32 = COPY $a2
431     ; P5600: [[LD_H:%[0-9]+]]:msa128h = LD_H [[COPY]], 0 :: (load (<8 x s16>) from %ir.a)
432     ; P5600: [[LD_H1:%[0-9]+]]:msa128h = LD_H [[COPY1]], 0 :: (load (<8 x s16>) from %ir.b)
433     ; P5600: [[MOD_U_H:%[0-9]+]]:msa128h = MOD_U_H [[LD_H]], [[LD_H1]]
434     ; P5600: ST_H [[MOD_U_H]], [[COPY2]], 0 :: (store (<8 x s16>) into %ir.c)
435     ; P5600: RetRA
436     %0:gprb(p0) = COPY $a0
437     %1:gprb(p0) = COPY $a1
438     %2:gprb(p0) = COPY $a2
439     %3:fprb(<8 x s16>) = G_LOAD %0(p0) :: (load (<8 x s16>) from %ir.a)
440     %4:fprb(<8 x s16>) = G_LOAD %1(p0) :: (load (<8 x s16>) from %ir.b)
441     %5:fprb(<8 x s16>) = G_UREM %3, %4
442     G_STORE %5(<8 x s16>), %2(p0) :: (store (<8 x s16>) into %ir.c)
443     RetRA
447 name:            urem_v4u32
448 alignment:       4
449 legalized:       true
450 regBankSelected: true
451 tracksRegLiveness: true
452 body:             |
453   bb.1.entry:
454     liveins: $a0, $a1, $a2
456     ; P5600-LABEL: name: urem_v4u32
457     ; P5600: liveins: $a0, $a1, $a2
458     ; P5600: [[COPY:%[0-9]+]]:gpr32 = COPY $a0
459     ; P5600: [[COPY1:%[0-9]+]]:gpr32 = COPY $a1
460     ; P5600: [[COPY2:%[0-9]+]]:gpr32 = COPY $a2
461     ; P5600: [[LD_W:%[0-9]+]]:msa128w = LD_W [[COPY]], 0 :: (load (<4 x s32>) from %ir.a)
462     ; P5600: [[LD_W1:%[0-9]+]]:msa128w = LD_W [[COPY1]], 0 :: (load (<4 x s32>) from %ir.b)
463     ; P5600: [[MOD_U_W:%[0-9]+]]:msa128w = MOD_U_W [[LD_W]], [[LD_W1]]
464     ; P5600: ST_W [[MOD_U_W]], [[COPY2]], 0 :: (store (<4 x s32>) into %ir.c)
465     ; P5600: RetRA
466     %0:gprb(p0) = COPY $a0
467     %1:gprb(p0) = COPY $a1
468     %2:gprb(p0) = COPY $a2
469     %3:fprb(<4 x s32>) = G_LOAD %0(p0) :: (load (<4 x s32>) from %ir.a)
470     %4:fprb(<4 x s32>) = G_LOAD %1(p0) :: (load (<4 x s32>) from %ir.b)
471     %5:fprb(<4 x s32>) = G_UREM %3, %4
472     G_STORE %5(<4 x s32>), %2(p0) :: (store (<4 x s32>) into %ir.c)
473     RetRA
477 name:            urem_v2u64
478 alignment:       4
479 legalized:       true
480 regBankSelected: true
481 tracksRegLiveness: true
482 body:             |
483   bb.1.entry:
484     liveins: $a0, $a1, $a2
486     ; P5600-LABEL: name: urem_v2u64
487     ; P5600: liveins: $a0, $a1, $a2
488     ; P5600: [[COPY:%[0-9]+]]:gpr32 = COPY $a0
489     ; P5600: [[COPY1:%[0-9]+]]:gpr32 = COPY $a1
490     ; P5600: [[COPY2:%[0-9]+]]:gpr32 = COPY $a2
491     ; P5600: [[LD_D:%[0-9]+]]:msa128d = LD_D [[COPY]], 0 :: (load (<2 x s64>) from %ir.a)
492     ; P5600: [[LD_D1:%[0-9]+]]:msa128d = LD_D [[COPY1]], 0 :: (load (<2 x s64>) from %ir.b)
493     ; P5600: [[MOD_U_D:%[0-9]+]]:msa128d = MOD_U_D [[LD_D]], [[LD_D1]]
494     ; P5600: ST_D [[MOD_U_D]], [[COPY2]], 0 :: (store (<2 x s64>) into %ir.c)
495     ; P5600: RetRA
496     %0:gprb(p0) = COPY $a0
497     %1:gprb(p0) = COPY $a1
498     %2:gprb(p0) = COPY $a2
499     %3:fprb(<2 x s64>) = G_LOAD %0(p0) :: (load (<2 x s64>) from %ir.a)
500     %4:fprb(<2 x s64>) = G_LOAD %1(p0) :: (load (<2 x s64>) from %ir.b)
501     %5:fprb(<2 x s64>) = G_UREM %3, %4
502     G_STORE %5(<2 x s64>), %2(p0) :: (store (<2 x s64>) into %ir.c)
503     RetRA