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 3--- | 4 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 } 7 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 } 10 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 } 13 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 } 16 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 } 19 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 } 22 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 } 25 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 } 28 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 } 31 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 } 34 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 } 37 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 } 40 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 } 43 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 } 46 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 } 49 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 } 52 53... 54--- 55name: sdiv_v16i8_builtin 56alignment: 4 57tracksRegLiveness: true 58body: | 59 bb.1.entry: 60 liveins: $a0, $a1, $a2 61 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) 71 ; P5600: RetRA 72 %0:_(p0) = COPY $a0 73 %1:_(p0) = COPY $a1 74 %2:_(p0) = COPY $a2 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) 79 RetRA 80 81... 82--- 83name: sdiv_v8i16_builtin 84alignment: 4 85tracksRegLiveness: true 86body: | 87 bb.1.entry: 88 liveins: $a0, $a1, $a2 89 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) 99 ; P5600: RetRA 100 %0:_(p0) = COPY $a0 101 %1:_(p0) = COPY $a1 102 %2:_(p0) = COPY $a2 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) 107 RetRA 108 109... 110--- 111name: sdiv_v4i32_builtin 112alignment: 4 113tracksRegLiveness: true 114body: | 115 bb.1.entry: 116 liveins: $a0, $a1, $a2 117 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) 127 ; P5600: RetRA 128 %0:_(p0) = COPY $a0 129 %1:_(p0) = COPY $a1 130 %2:_(p0) = COPY $a2 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) 135 RetRA 136 137... 138--- 139name: sdiv_v2i64_builtin 140alignment: 4 141tracksRegLiveness: true 142body: | 143 bb.1.entry: 144 liveins: $a0, $a1, $a2 145 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) 155 ; P5600: RetRA 156 %0:_(p0) = COPY $a0 157 %1:_(p0) = COPY $a1 158 %2:_(p0) = COPY $a2 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) 163 RetRA 164 165... 166--- 167name: smod_v16i8_builtin 168alignment: 4 169tracksRegLiveness: true 170body: | 171 bb.1.entry: 172 liveins: $a0, $a1, $a2 173 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) 183 ; P5600: RetRA 184 %0:_(p0) = COPY $a0 185 %1:_(p0) = COPY $a1 186 %2:_(p0) = COPY $a2 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) 191 RetRA 192 193... 194--- 195name: smod_v8i16_builtin 196alignment: 4 197tracksRegLiveness: true 198body: | 199 bb.1.entry: 200 liveins: $a0, $a1, $a2 201 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) 211 ; P5600: RetRA 212 %0:_(p0) = COPY $a0 213 %1:_(p0) = COPY $a1 214 %2:_(p0) = COPY $a2 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) 219 RetRA 220 221... 222--- 223name: smod_v4i32_builtin 224alignment: 4 225tracksRegLiveness: true 226body: | 227 bb.1.entry: 228 liveins: $a0, $a1, $a2 229 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) 239 ; P5600: RetRA 240 %0:_(p0) = COPY $a0 241 %1:_(p0) = COPY $a1 242 %2:_(p0) = COPY $a2 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) 247 RetRA 248 249... 250--- 251name: smod_v2i64_builtin 252alignment: 4 253tracksRegLiveness: true 254body: | 255 bb.1.entry: 256 liveins: $a0, $a1, $a2 257 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) 267 ; P5600: RetRA 268 %0:_(p0) = COPY $a0 269 %1:_(p0) = COPY $a1 270 %2:_(p0) = COPY $a2 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) 275 RetRA 276 277... 278--- 279name: udiv_v16i8_builtin 280alignment: 4 281tracksRegLiveness: true 282body: | 283 bb.1.entry: 284 liveins: $a0, $a1, $a2 285 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) 295 ; P5600: RetRA 296 %0:_(p0) = COPY $a0 297 %1:_(p0) = COPY $a1 298 %2:_(p0) = COPY $a2 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) 303 RetRA 304 305... 306--- 307name: udiv_v8i16_builtin 308alignment: 4 309tracksRegLiveness: true 310body: | 311 bb.1.entry: 312 liveins: $a0, $a1, $a2 313 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) 323 ; P5600: RetRA 324 %0:_(p0) = COPY $a0 325 %1:_(p0) = COPY $a1 326 %2:_(p0) = COPY $a2 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) 331 RetRA 332 333... 334--- 335name: udiv_v4i32_builtin 336alignment: 4 337tracksRegLiveness: true 338body: | 339 bb.1.entry: 340 liveins: $a0, $a1, $a2 341 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) 351 ; P5600: RetRA 352 %0:_(p0) = COPY $a0 353 %1:_(p0) = COPY $a1 354 %2:_(p0) = COPY $a2 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) 359 RetRA 360 361... 362--- 363name: udiv_v2i64_builtin 364alignment: 4 365tracksRegLiveness: true 366body: | 367 bb.1.entry: 368 liveins: $a0, $a1, $a2 369 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) 379 ; P5600: RetRA 380 %0:_(p0) = COPY $a0 381 %1:_(p0) = COPY $a1 382 %2:_(p0) = COPY $a2 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) 387 RetRA 388 389... 390--- 391name: umod_v16i8_builtin 392alignment: 4 393tracksRegLiveness: true 394body: | 395 bb.1.entry: 396 liveins: $a0, $a1, $a2 397 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) 407 ; P5600: RetRA 408 %0:_(p0) = COPY $a0 409 %1:_(p0) = COPY $a1 410 %2:_(p0) = COPY $a2 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) 415 RetRA 416 417... 418--- 419name: umod_v8i16_builtin 420alignment: 4 421tracksRegLiveness: true 422body: | 423 bb.1.entry: 424 liveins: $a0, $a1, $a2 425 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) 435 ; P5600: RetRA 436 %0:_(p0) = COPY $a0 437 %1:_(p0) = COPY $a1 438 %2:_(p0) = COPY $a2 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) 443 RetRA 444 445... 446--- 447name: umod_v4i32_builtin 448alignment: 4 449tracksRegLiveness: true 450body: | 451 bb.1.entry: 452 liveins: $a0, $a1, $a2 453 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) 463 ; P5600: RetRA 464 %0:_(p0) = COPY $a0 465 %1:_(p0) = COPY $a1 466 %2:_(p0) = COPY $a2 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) 471 RetRA 472 473... 474--- 475name: umod_v2i64_builtin 476alignment: 4 477tracksRegLiveness: true 478body: | 479 bb.1.entry: 480 liveins: $a0, $a1, $a2 481 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) 491 ; P5600: RetRA 492 %0:_(p0) = COPY $a0 493 %1:_(p0) = COPY $a1 494 %2:_(p0) = COPY $a2 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) 499 RetRA 500 501... 502