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=legalizer -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=P5600
5 declare <16 x i8> @llvm.mips.div.s.b(<16 x i8>, <16 x i8>)
6 define void @sdiv_v16i8_builtin(ptr %a, ptr %b, ptr %c) { entry: ret void }
8 declare <8 x i16> @llvm.mips.div.s.h(<8 x i16>, <8 x i16>)
9 define void @sdiv_v8i16_builtin(ptr %a, ptr %b, ptr %c) { entry: ret void }
11 declare <4 x i32> @llvm.mips.div.s.w(<4 x i32>, <4 x i32>)
12 define void @sdiv_v4i32_builtin(ptr %a, ptr %b, ptr %c) { entry: ret void }
14 declare <2 x i64> @llvm.mips.div.s.d(<2 x i64>, <2 x i64>)
15 define void @sdiv_v2i64_builtin(ptr %a, ptr %b, ptr %c) { entry: ret void }
17 declare <16 x i8> @llvm.mips.mod.s.b(<16 x i8>, <16 x i8>)
18 define void @smod_v16i8_builtin(ptr %a, ptr %b, ptr %c) { entry: ret void }
20 declare <8 x i16> @llvm.mips.mod.s.h(<8 x i16>, <8 x i16>)
21 define void @smod_v8i16_builtin(ptr %a, ptr %b, ptr %c) { entry: ret void }
23 declare <4 x i32> @llvm.mips.mod.s.w(<4 x i32>, <4 x i32>)
24 define void @smod_v4i32_builtin(ptr %a, ptr %b, ptr %c) { entry: ret void }
26 declare <2 x i64> @llvm.mips.mod.s.d(<2 x i64>, <2 x i64>)
27 define void @smod_v2i64_builtin(ptr %a, ptr %b, ptr %c) { entry: ret void }
29 declare <16 x i8> @llvm.mips.div.u.b(<16 x i8>, <16 x i8>)
30 define void @udiv_v16i8_builtin(ptr %a, ptr %b, ptr %c) { entry: ret void }
32 declare <8 x i16> @llvm.mips.div.u.h(<8 x i16>, <8 x i16>)
33 define void @udiv_v8i16_builtin(ptr %a, ptr %b, ptr %c) { entry: ret void }
35 declare <4 x i32> @llvm.mips.div.u.w(<4 x i32>, <4 x i32>)
36 define void @udiv_v4i32_builtin(ptr %a, ptr %b, ptr %c) { entry: ret void }
38 declare <2 x i64> @llvm.mips.div.u.d(<2 x i64>, <2 x i64>)
39 define void @udiv_v2i64_builtin(ptr %a, ptr %b, ptr %c) { entry: ret void }
41 declare <16 x i8> @llvm.mips.mod.u.b(<16 x i8>, <16 x i8>)
42 define void @umod_v16i8_builtin(ptr %a, ptr %b, ptr %c) { entry: ret void }
44 declare <8 x i16> @llvm.mips.mod.u.h(<8 x i16>, <8 x i16>)
45 define void @umod_v8i16_builtin(ptr %a, ptr %b, ptr %c) { entry: ret void }
47 declare <4 x i32> @llvm.mips.mod.u.w(<4 x i32>, <4 x i32>)
48 define void @umod_v4i32_builtin(ptr %a, ptr %b, ptr %c) { entry: ret void }
50 declare <2 x i64> @llvm.mips.mod.u.d(<2 x i64>, <2 x i64>)
51 define void @umod_v2i64_builtin(ptr %a, ptr %b, ptr %c) { entry: ret void }
55 name: sdiv_v16i8_builtin
57 tracksRegLiveness: true
60 liveins: $a0, $a1, $a2
62 ; P5600-LABEL: name: sdiv_v16i8_builtin
63 ; P5600: liveins: $a0, $a1, $a2
64 ; P5600: [[COPY:%[0-9]+]]:_(p0) = COPY $a0
65 ; P5600: [[COPY1:%[0-9]+]]:_(p0) = COPY $a1
66 ; P5600: [[COPY2:%[0-9]+]]:_(p0) = COPY $a2
67 ; P5600: [[LOAD:%[0-9]+]]:_(<16 x s8>) = G_LOAD [[COPY]](p0) :: (load (<16 x s8>) from %ir.a)
68 ; P5600: [[LOAD1:%[0-9]+]]:_(<16 x s8>) = G_LOAD [[COPY1]](p0) :: (load (<16 x s8>) from %ir.b)
69 ; P5600: [[SDIV:%[0-9]+]]:_(<16 x s8>) = G_SDIV [[LOAD]], [[LOAD1]]
70 ; P5600: G_STORE [[SDIV]](<16 x s8>), [[COPY2]](p0) :: (store (<16 x s8>) into %ir.c)
75 %3:_(<16 x s8>) = G_LOAD %0(p0) :: (load (<16 x s8>) from %ir.a)
76 %4:_(<16 x s8>) = G_LOAD %1(p0) :: (load (<16 x s8>) from %ir.b)
77 %5:_(<16 x s8>) = G_INTRINSIC intrinsic(@llvm.mips.div.s.b), %3(<16 x s8>), %4(<16 x s8>)
78 G_STORE %5(<16 x s8>), %2(p0) :: (store (<16 x s8>) into %ir.c)
83 name: sdiv_v8i16_builtin
85 tracksRegLiveness: true
88 liveins: $a0, $a1, $a2
90 ; P5600-LABEL: name: sdiv_v8i16_builtin
91 ; P5600: liveins: $a0, $a1, $a2
92 ; P5600: [[COPY:%[0-9]+]]:_(p0) = COPY $a0
93 ; P5600: [[COPY1:%[0-9]+]]:_(p0) = COPY $a1
94 ; P5600: [[COPY2:%[0-9]+]]:_(p0) = COPY $a2
95 ; P5600: [[LOAD:%[0-9]+]]:_(<8 x s16>) = G_LOAD [[COPY]](p0) :: (load (<8 x s16>) from %ir.a)
96 ; P5600: [[LOAD1:%[0-9]+]]:_(<8 x s16>) = G_LOAD [[COPY1]](p0) :: (load (<8 x s16>) from %ir.b)
97 ; P5600: [[SDIV:%[0-9]+]]:_(<8 x s16>) = G_SDIV [[LOAD]], [[LOAD1]]
98 ; P5600: G_STORE [[SDIV]](<8 x s16>), [[COPY2]](p0) :: (store (<8 x s16>) into %ir.c)
103 %3:_(<8 x s16>) = G_LOAD %0(p0) :: (load (<8 x s16>) from %ir.a)
104 %4:_(<8 x s16>) = G_LOAD %1(p0) :: (load (<8 x s16>) from %ir.b)
105 %5:_(<8 x s16>) = G_INTRINSIC intrinsic(@llvm.mips.div.s.h), %3(<8 x s16>), %4(<8 x s16>)
106 G_STORE %5(<8 x s16>), %2(p0) :: (store (<8 x s16>) into %ir.c)
111 name: sdiv_v4i32_builtin
113 tracksRegLiveness: true
116 liveins: $a0, $a1, $a2
118 ; P5600-LABEL: name: sdiv_v4i32_builtin
119 ; P5600: liveins: $a0, $a1, $a2
120 ; P5600: [[COPY:%[0-9]+]]:_(p0) = COPY $a0
121 ; P5600: [[COPY1:%[0-9]+]]:_(p0) = COPY $a1
122 ; P5600: [[COPY2:%[0-9]+]]:_(p0) = COPY $a2
123 ; P5600: [[LOAD:%[0-9]+]]:_(<4 x s32>) = G_LOAD [[COPY]](p0) :: (load (<4 x s32>) from %ir.a)
124 ; P5600: [[LOAD1:%[0-9]+]]:_(<4 x s32>) = G_LOAD [[COPY1]](p0) :: (load (<4 x s32>) from %ir.b)
125 ; P5600: [[SDIV:%[0-9]+]]:_(<4 x s32>) = G_SDIV [[LOAD]], [[LOAD1]]
126 ; P5600: G_STORE [[SDIV]](<4 x s32>), [[COPY2]](p0) :: (store (<4 x s32>) into %ir.c)
131 %3:_(<4 x s32>) = G_LOAD %0(p0) :: (load (<4 x s32>) from %ir.a)
132 %4:_(<4 x s32>) = G_LOAD %1(p0) :: (load (<4 x s32>) from %ir.b)
133 %5:_(<4 x s32>) = G_INTRINSIC intrinsic(@llvm.mips.div.s.w), %3(<4 x s32>), %4(<4 x s32>)
134 G_STORE %5(<4 x s32>), %2(p0) :: (store (<4 x s32>) into %ir.c)
139 name: sdiv_v2i64_builtin
141 tracksRegLiveness: true
144 liveins: $a0, $a1, $a2
146 ; P5600-LABEL: name: sdiv_v2i64_builtin
147 ; P5600: liveins: $a0, $a1, $a2
148 ; P5600: [[COPY:%[0-9]+]]:_(p0) = COPY $a0
149 ; P5600: [[COPY1:%[0-9]+]]:_(p0) = COPY $a1
150 ; P5600: [[COPY2:%[0-9]+]]:_(p0) = COPY $a2
151 ; P5600: [[LOAD:%[0-9]+]]:_(<2 x s64>) = G_LOAD [[COPY]](p0) :: (load (<2 x s64>) from %ir.a)
152 ; P5600: [[LOAD1:%[0-9]+]]:_(<2 x s64>) = G_LOAD [[COPY1]](p0) :: (load (<2 x s64>) from %ir.b)
153 ; P5600: [[SDIV:%[0-9]+]]:_(<2 x s64>) = G_SDIV [[LOAD]], [[LOAD1]]
154 ; P5600: G_STORE [[SDIV]](<2 x s64>), [[COPY2]](p0) :: (store (<2 x s64>) into %ir.c)
159 %3:_(<2 x s64>) = G_LOAD %0(p0) :: (load (<2 x s64>) from %ir.a)
160 %4:_(<2 x s64>) = G_LOAD %1(p0) :: (load (<2 x s64>) from %ir.b)
161 %5:_(<2 x s64>) = G_INTRINSIC intrinsic(@llvm.mips.div.s.d), %3(<2 x s64>), %4(<2 x s64>)
162 G_STORE %5(<2 x s64>), %2(p0) :: (store (<2 x s64>) into %ir.c)
167 name: smod_v16i8_builtin
169 tracksRegLiveness: true
172 liveins: $a0, $a1, $a2
174 ; P5600-LABEL: name: smod_v16i8_builtin
175 ; P5600: liveins: $a0, $a1, $a2
176 ; P5600: [[COPY:%[0-9]+]]:_(p0) = COPY $a0
177 ; P5600: [[COPY1:%[0-9]+]]:_(p0) = COPY $a1
178 ; P5600: [[COPY2:%[0-9]+]]:_(p0) = COPY $a2
179 ; P5600: [[LOAD:%[0-9]+]]:_(<16 x s8>) = G_LOAD [[COPY]](p0) :: (load (<16 x s8>) from %ir.a)
180 ; P5600: [[LOAD1:%[0-9]+]]:_(<16 x s8>) = G_LOAD [[COPY1]](p0) :: (load (<16 x s8>) from %ir.b)
181 ; P5600: [[SREM:%[0-9]+]]:_(<16 x s8>) = G_SREM [[LOAD]], [[LOAD1]]
182 ; P5600: G_STORE [[SREM]](<16 x s8>), [[COPY2]](p0) :: (store (<16 x s8>) into %ir.c)
187 %3:_(<16 x s8>) = G_LOAD %0(p0) :: (load (<16 x s8>) from %ir.a)
188 %4:_(<16 x s8>) = G_LOAD %1(p0) :: (load (<16 x s8>) from %ir.b)
189 %5:_(<16 x s8>) = G_INTRINSIC intrinsic(@llvm.mips.mod.s.b), %3(<16 x s8>), %4(<16 x s8>)
190 G_STORE %5(<16 x s8>), %2(p0) :: (store (<16 x s8>) into %ir.c)
195 name: smod_v8i16_builtin
197 tracksRegLiveness: true
200 liveins: $a0, $a1, $a2
202 ; P5600-LABEL: name: smod_v8i16_builtin
203 ; P5600: liveins: $a0, $a1, $a2
204 ; P5600: [[COPY:%[0-9]+]]:_(p0) = COPY $a0
205 ; P5600: [[COPY1:%[0-9]+]]:_(p0) = COPY $a1
206 ; P5600: [[COPY2:%[0-9]+]]:_(p0) = COPY $a2
207 ; P5600: [[LOAD:%[0-9]+]]:_(<8 x s16>) = G_LOAD [[COPY]](p0) :: (load (<8 x s16>) from %ir.a)
208 ; P5600: [[LOAD1:%[0-9]+]]:_(<8 x s16>) = G_LOAD [[COPY1]](p0) :: (load (<8 x s16>) from %ir.b)
209 ; P5600: [[SREM:%[0-9]+]]:_(<8 x s16>) = G_SREM [[LOAD]], [[LOAD1]]
210 ; P5600: G_STORE [[SREM]](<8 x s16>), [[COPY2]](p0) :: (store (<8 x s16>) into %ir.c)
215 %3:_(<8 x s16>) = G_LOAD %0(p0) :: (load (<8 x s16>) from %ir.a)
216 %4:_(<8 x s16>) = G_LOAD %1(p0) :: (load (<8 x s16>) from %ir.b)
217 %5:_(<8 x s16>) = G_INTRINSIC intrinsic(@llvm.mips.mod.s.h), %3(<8 x s16>), %4(<8 x s16>)
218 G_STORE %5(<8 x s16>), %2(p0) :: (store (<8 x s16>) into %ir.c)
223 name: smod_v4i32_builtin
225 tracksRegLiveness: true
228 liveins: $a0, $a1, $a2
230 ; P5600-LABEL: name: smod_v4i32_builtin
231 ; P5600: liveins: $a0, $a1, $a2
232 ; P5600: [[COPY:%[0-9]+]]:_(p0) = COPY $a0
233 ; P5600: [[COPY1:%[0-9]+]]:_(p0) = COPY $a1
234 ; P5600: [[COPY2:%[0-9]+]]:_(p0) = COPY $a2
235 ; P5600: [[LOAD:%[0-9]+]]:_(<4 x s32>) = G_LOAD [[COPY]](p0) :: (load (<4 x s32>) from %ir.a)
236 ; P5600: [[LOAD1:%[0-9]+]]:_(<4 x s32>) = G_LOAD [[COPY1]](p0) :: (load (<4 x s32>) from %ir.b)
237 ; P5600: [[SREM:%[0-9]+]]:_(<4 x s32>) = G_SREM [[LOAD]], [[LOAD1]]
238 ; P5600: G_STORE [[SREM]](<4 x s32>), [[COPY2]](p0) :: (store (<4 x s32>) into %ir.c)
243 %3:_(<4 x s32>) = G_LOAD %0(p0) :: (load (<4 x s32>) from %ir.a)
244 %4:_(<4 x s32>) = G_LOAD %1(p0) :: (load (<4 x s32>) from %ir.b)
245 %5:_(<4 x s32>) = G_INTRINSIC intrinsic(@llvm.mips.mod.s.w), %3(<4 x s32>), %4(<4 x s32>)
246 G_STORE %5(<4 x s32>), %2(p0) :: (store (<4 x s32>) into %ir.c)
251 name: smod_v2i64_builtin
253 tracksRegLiveness: true
256 liveins: $a0, $a1, $a2
258 ; P5600-LABEL: name: smod_v2i64_builtin
259 ; P5600: liveins: $a0, $a1, $a2
260 ; P5600: [[COPY:%[0-9]+]]:_(p0) = COPY $a0
261 ; P5600: [[COPY1:%[0-9]+]]:_(p0) = COPY $a1
262 ; P5600: [[COPY2:%[0-9]+]]:_(p0) = COPY $a2
263 ; P5600: [[LOAD:%[0-9]+]]:_(<2 x s64>) = G_LOAD [[COPY]](p0) :: (load (<2 x s64>) from %ir.a)
264 ; P5600: [[LOAD1:%[0-9]+]]:_(<2 x s64>) = G_LOAD [[COPY1]](p0) :: (load (<2 x s64>) from %ir.b)
265 ; P5600: [[SREM:%[0-9]+]]:_(<2 x s64>) = G_SREM [[LOAD]], [[LOAD1]]
266 ; P5600: G_STORE [[SREM]](<2 x s64>), [[COPY2]](p0) :: (store (<2 x s64>) into %ir.c)
271 %3:_(<2 x s64>) = G_LOAD %0(p0) :: (load (<2 x s64>) from %ir.a)
272 %4:_(<2 x s64>) = G_LOAD %1(p0) :: (load (<2 x s64>) from %ir.b)
273 %5:_(<2 x s64>) = G_INTRINSIC intrinsic(@llvm.mips.mod.s.d), %3(<2 x s64>), %4(<2 x s64>)
274 G_STORE %5(<2 x s64>), %2(p0) :: (store (<2 x s64>) into %ir.c)
279 name: udiv_v16i8_builtin
281 tracksRegLiveness: true
284 liveins: $a0, $a1, $a2
286 ; P5600-LABEL: name: udiv_v16i8_builtin
287 ; P5600: liveins: $a0, $a1, $a2
288 ; P5600: [[COPY:%[0-9]+]]:_(p0) = COPY $a0
289 ; P5600: [[COPY1:%[0-9]+]]:_(p0) = COPY $a1
290 ; P5600: [[COPY2:%[0-9]+]]:_(p0) = COPY $a2
291 ; P5600: [[LOAD:%[0-9]+]]:_(<16 x s8>) = G_LOAD [[COPY]](p0) :: (load (<16 x s8>) from %ir.a)
292 ; P5600: [[LOAD1:%[0-9]+]]:_(<16 x s8>) = G_LOAD [[COPY1]](p0) :: (load (<16 x s8>) from %ir.b)
293 ; P5600: [[UDIV:%[0-9]+]]:_(<16 x s8>) = G_UDIV [[LOAD]], [[LOAD1]]
294 ; P5600: G_STORE [[UDIV]](<16 x s8>), [[COPY2]](p0) :: (store (<16 x s8>) into %ir.c)
299 %3:_(<16 x s8>) = G_LOAD %0(p0) :: (load (<16 x s8>) from %ir.a)
300 %4:_(<16 x s8>) = G_LOAD %1(p0) :: (load (<16 x s8>) from %ir.b)
301 %5:_(<16 x s8>) = G_INTRINSIC intrinsic(@llvm.mips.div.u.b), %3(<16 x s8>), %4(<16 x s8>)
302 G_STORE %5(<16 x s8>), %2(p0) :: (store (<16 x s8>) into %ir.c)
307 name: udiv_v8i16_builtin
309 tracksRegLiveness: true
312 liveins: $a0, $a1, $a2
314 ; P5600-LABEL: name: udiv_v8i16_builtin
315 ; P5600: liveins: $a0, $a1, $a2
316 ; P5600: [[COPY:%[0-9]+]]:_(p0) = COPY $a0
317 ; P5600: [[COPY1:%[0-9]+]]:_(p0) = COPY $a1
318 ; P5600: [[COPY2:%[0-9]+]]:_(p0) = COPY $a2
319 ; P5600: [[LOAD:%[0-9]+]]:_(<8 x s16>) = G_LOAD [[COPY]](p0) :: (load (<8 x s16>) from %ir.a)
320 ; P5600: [[LOAD1:%[0-9]+]]:_(<8 x s16>) = G_LOAD [[COPY1]](p0) :: (load (<8 x s16>) from %ir.b)
321 ; P5600: [[UDIV:%[0-9]+]]:_(<8 x s16>) = G_UDIV [[LOAD]], [[LOAD1]]
322 ; P5600: G_STORE [[UDIV]](<8 x s16>), [[COPY2]](p0) :: (store (<8 x s16>) into %ir.c)
327 %3:_(<8 x s16>) = G_LOAD %0(p0) :: (load (<8 x s16>) from %ir.a)
328 %4:_(<8 x s16>) = G_LOAD %1(p0) :: (load (<8 x s16>) from %ir.b)
329 %5:_(<8 x s16>) = G_INTRINSIC intrinsic(@llvm.mips.div.u.h), %3(<8 x s16>), %4(<8 x s16>)
330 G_STORE %5(<8 x s16>), %2(p0) :: (store (<8 x s16>) into %ir.c)
335 name: udiv_v4i32_builtin
337 tracksRegLiveness: true
340 liveins: $a0, $a1, $a2
342 ; P5600-LABEL: name: udiv_v4i32_builtin
343 ; P5600: liveins: $a0, $a1, $a2
344 ; P5600: [[COPY:%[0-9]+]]:_(p0) = COPY $a0
345 ; P5600: [[COPY1:%[0-9]+]]:_(p0) = COPY $a1
346 ; P5600: [[COPY2:%[0-9]+]]:_(p0) = COPY $a2
347 ; P5600: [[LOAD:%[0-9]+]]:_(<4 x s32>) = G_LOAD [[COPY]](p0) :: (load (<4 x s32>) from %ir.a)
348 ; P5600: [[LOAD1:%[0-9]+]]:_(<4 x s32>) = G_LOAD [[COPY1]](p0) :: (load (<4 x s32>) from %ir.b)
349 ; P5600: [[UDIV:%[0-9]+]]:_(<4 x s32>) = G_UDIV [[LOAD]], [[LOAD1]]
350 ; P5600: G_STORE [[UDIV]](<4 x s32>), [[COPY2]](p0) :: (store (<4 x s32>) into %ir.c)
355 %3:_(<4 x s32>) = G_LOAD %0(p0) :: (load (<4 x s32>) from %ir.a)
356 %4:_(<4 x s32>) = G_LOAD %1(p0) :: (load (<4 x s32>) from %ir.b)
357 %5:_(<4 x s32>) = G_INTRINSIC intrinsic(@llvm.mips.div.u.w), %3(<4 x s32>), %4(<4 x s32>)
358 G_STORE %5(<4 x s32>), %2(p0) :: (store (<4 x s32>) into %ir.c)
363 name: udiv_v2i64_builtin
365 tracksRegLiveness: true
368 liveins: $a0, $a1, $a2
370 ; P5600-LABEL: name: udiv_v2i64_builtin
371 ; P5600: liveins: $a0, $a1, $a2
372 ; P5600: [[COPY:%[0-9]+]]:_(p0) = COPY $a0
373 ; P5600: [[COPY1:%[0-9]+]]:_(p0) = COPY $a1
374 ; P5600: [[COPY2:%[0-9]+]]:_(p0) = COPY $a2
375 ; P5600: [[LOAD:%[0-9]+]]:_(<2 x s64>) = G_LOAD [[COPY]](p0) :: (load (<2 x s64>) from %ir.a)
376 ; P5600: [[LOAD1:%[0-9]+]]:_(<2 x s64>) = G_LOAD [[COPY1]](p0) :: (load (<2 x s64>) from %ir.b)
377 ; P5600: [[UDIV:%[0-9]+]]:_(<2 x s64>) = G_UDIV [[LOAD]], [[LOAD1]]
378 ; P5600: G_STORE [[UDIV]](<2 x s64>), [[COPY2]](p0) :: (store (<2 x s64>) into %ir.c)
383 %3:_(<2 x s64>) = G_LOAD %0(p0) :: (load (<2 x s64>) from %ir.a)
384 %4:_(<2 x s64>) = G_LOAD %1(p0) :: (load (<2 x s64>) from %ir.b)
385 %5:_(<2 x s64>) = G_INTRINSIC intrinsic(@llvm.mips.div.u.d), %3(<2 x s64>), %4(<2 x s64>)
386 G_STORE %5(<2 x s64>), %2(p0) :: (store (<2 x s64>) into %ir.c)
391 name: umod_v16i8_builtin
393 tracksRegLiveness: true
396 liveins: $a0, $a1, $a2
398 ; P5600-LABEL: name: umod_v16i8_builtin
399 ; P5600: liveins: $a0, $a1, $a2
400 ; P5600: [[COPY:%[0-9]+]]:_(p0) = COPY $a0
401 ; P5600: [[COPY1:%[0-9]+]]:_(p0) = COPY $a1
402 ; P5600: [[COPY2:%[0-9]+]]:_(p0) = COPY $a2
403 ; P5600: [[LOAD:%[0-9]+]]:_(<16 x s8>) = G_LOAD [[COPY]](p0) :: (load (<16 x s8>) from %ir.a)
404 ; P5600: [[LOAD1:%[0-9]+]]:_(<16 x s8>) = G_LOAD [[COPY1]](p0) :: (load (<16 x s8>) from %ir.b)
405 ; P5600: [[UREM:%[0-9]+]]:_(<16 x s8>) = G_UREM [[LOAD]], [[LOAD1]]
406 ; P5600: G_STORE [[UREM]](<16 x s8>), [[COPY2]](p0) :: (store (<16 x s8>) into %ir.c)
411 %3:_(<16 x s8>) = G_LOAD %0(p0) :: (load (<16 x s8>) from %ir.a)
412 %4:_(<16 x s8>) = G_LOAD %1(p0) :: (load (<16 x s8>) from %ir.b)
413 %5:_(<16 x s8>) = G_INTRINSIC intrinsic(@llvm.mips.mod.u.b), %3(<16 x s8>), %4(<16 x s8>)
414 G_STORE %5(<16 x s8>), %2(p0) :: (store (<16 x s8>) into %ir.c)
419 name: umod_v8i16_builtin
421 tracksRegLiveness: true
424 liveins: $a0, $a1, $a2
426 ; P5600-LABEL: name: umod_v8i16_builtin
427 ; P5600: liveins: $a0, $a1, $a2
428 ; P5600: [[COPY:%[0-9]+]]:_(p0) = COPY $a0
429 ; P5600: [[COPY1:%[0-9]+]]:_(p0) = COPY $a1
430 ; P5600: [[COPY2:%[0-9]+]]:_(p0) = COPY $a2
431 ; P5600: [[LOAD:%[0-9]+]]:_(<8 x s16>) = G_LOAD [[COPY]](p0) :: (load (<8 x s16>) from %ir.a)
432 ; P5600: [[LOAD1:%[0-9]+]]:_(<8 x s16>) = G_LOAD [[COPY1]](p0) :: (load (<8 x s16>) from %ir.b)
433 ; P5600: [[UREM:%[0-9]+]]:_(<8 x s16>) = G_UREM [[LOAD]], [[LOAD1]]
434 ; P5600: G_STORE [[UREM]](<8 x s16>), [[COPY2]](p0) :: (store (<8 x s16>) into %ir.c)
439 %3:_(<8 x s16>) = G_LOAD %0(p0) :: (load (<8 x s16>) from %ir.a)
440 %4:_(<8 x s16>) = G_LOAD %1(p0) :: (load (<8 x s16>) from %ir.b)
441 %5:_(<8 x s16>) = G_INTRINSIC intrinsic(@llvm.mips.mod.u.h), %3(<8 x s16>), %4(<8 x s16>)
442 G_STORE %5(<8 x s16>), %2(p0) :: (store (<8 x s16>) into %ir.c)
447 name: umod_v4i32_builtin
449 tracksRegLiveness: true
452 liveins: $a0, $a1, $a2
454 ; P5600-LABEL: name: umod_v4i32_builtin
455 ; P5600: liveins: $a0, $a1, $a2
456 ; P5600: [[COPY:%[0-9]+]]:_(p0) = COPY $a0
457 ; P5600: [[COPY1:%[0-9]+]]:_(p0) = COPY $a1
458 ; P5600: [[COPY2:%[0-9]+]]:_(p0) = COPY $a2
459 ; P5600: [[LOAD:%[0-9]+]]:_(<4 x s32>) = G_LOAD [[COPY]](p0) :: (load (<4 x s32>) from %ir.a)
460 ; P5600: [[LOAD1:%[0-9]+]]:_(<4 x s32>) = G_LOAD [[COPY1]](p0) :: (load (<4 x s32>) from %ir.b)
461 ; P5600: [[UREM:%[0-9]+]]:_(<4 x s32>) = G_UREM [[LOAD]], [[LOAD1]]
462 ; P5600: G_STORE [[UREM]](<4 x s32>), [[COPY2]](p0) :: (store (<4 x s32>) into %ir.c)
467 %3:_(<4 x s32>) = G_LOAD %0(p0) :: (load (<4 x s32>) from %ir.a)
468 %4:_(<4 x s32>) = G_LOAD %1(p0) :: (load (<4 x s32>) from %ir.b)
469 %5:_(<4 x s32>) = G_INTRINSIC intrinsic(@llvm.mips.mod.u.w), %3(<4 x s32>), %4(<4 x s32>)
470 G_STORE %5(<4 x s32>), %2(p0) :: (store (<4 x s32>) into %ir.c)
475 name: umod_v2i64_builtin
477 tracksRegLiveness: true
480 liveins: $a0, $a1, $a2
482 ; P5600-LABEL: name: umod_v2i64_builtin
483 ; P5600: liveins: $a0, $a1, $a2
484 ; P5600: [[COPY:%[0-9]+]]:_(p0) = COPY $a0
485 ; P5600: [[COPY1:%[0-9]+]]:_(p0) = COPY $a1
486 ; P5600: [[COPY2:%[0-9]+]]:_(p0) = COPY $a2
487 ; P5600: [[LOAD:%[0-9]+]]:_(<2 x s64>) = G_LOAD [[COPY]](p0) :: (load (<2 x s64>) from %ir.a)
488 ; P5600: [[LOAD1:%[0-9]+]]:_(<2 x s64>) = G_LOAD [[COPY1]](p0) :: (load (<2 x s64>) from %ir.b)
489 ; P5600: [[UREM:%[0-9]+]]:_(<2 x s64>) = G_UREM [[LOAD]], [[LOAD1]]
490 ; P5600: G_STORE [[UREM]](<2 x s64>), [[COPY2]](p0) :: (store (<2 x s64>) into %ir.c)
495 %3:_(<2 x s64>) = G_LOAD %0(p0) :: (load (<2 x s64>) from %ir.a)
496 %4:_(<2 x s64>) = G_LOAD %1(p0) :: (load (<2 x s64>) from %ir.b)
497 %5:_(<2 x s64>) = G_INTRINSIC intrinsic(@llvm.mips.mod.u.d), %3(<2 x s64>), %4(<2 x s64>)
498 G_STORE %5(<2 x s64>), %2(p0) :: (store (<2 x s64>) into %ir.c)