| OLD | NEW |
| 1 ; This test checks support for vector arithmetic. | 1 ; This test checks support for vector arithmetic. |
| 2 | 2 |
| 3 ; RUN: %p2i -i %s --filetype=obj --disassemble -a -O2 \ | 3 ; RUN: %p2i -i %s --filetype=obj --disassemble -a -O2 \ |
| 4 ; RUN: | FileCheck %s | 4 ; RUN: | FileCheck %s |
| 5 ; RUN: %p2i -i %s --filetype=obj --disassemble -a -Om1 \ | 5 ; RUN: %p2i -i %s --filetype=obj --disassemble -a -Om1 \ |
| 6 ; RUN: | FileCheck %s | 6 ; RUN: | FileCheck %s |
| 7 ; RUN: %p2i -i %s --filetype=obj --disassemble -a -O2 -mattr=sse4.1 \ | 7 ; RUN: %p2i -i %s --filetype=obj --disassemble -a -O2 -mattr=sse4.1 \ |
| 8 ; RUN: | FileCheck --check-prefix=SSE41 %s | 8 ; RUN: | FileCheck --check-prefix=SSE41 %s |
| 9 ; RUN: %p2i -i %s --filetype=obj --disassemble -a -Om1 -mattr=sse4.1 \ | 9 ; RUN: %p2i -i %s --filetype=obj --disassemble -a -Om1 -mattr=sse4.1 \ |
| 10 ; RUN: | FileCheck --check-prefix=SSE41 %s | 10 ; RUN: | FileCheck --check-prefix=SSE41 %s |
| 11 | 11 |
| 12 ; RUN: %if --need=target_MIPS32 --need=allow_dump \ |
| 13 ; RUN: --command %p2i --filetype=asm --assemble --disassemble --target \ |
| 14 ; RUN: mips32 -i %s --args -O2 -allow-externally-defined-symbols \ |
| 15 ; RUN: | %if --need=target_MIPS32 --need=allow_dump \ |
| 16 ; RUN: --command FileCheck --check-prefix MIPS32 %s |
| 17 |
| 12 define internal <4 x float> @test_fadd(<4 x float> %arg0, <4 x float> %arg1) { | 18 define internal <4 x float> @test_fadd(<4 x float> %arg0, <4 x float> %arg1) { |
| 13 entry: | 19 entry: |
| 14 %res = fadd <4 x float> %arg0, %arg1 | 20 %res = fadd <4 x float> %arg0, %arg1 |
| 15 ret <4 x float> %res | 21 ret <4 x float> %res |
| 16 ; CHECK-LABEL: test_fadd | 22 ; CHECK-LABEL: test_fadd |
| 17 ; CHECK: addps | 23 ; CHECK: addps |
| 24 ; MIPS32-LABEL: test_fadd |
| 25 ; MIPS32: add.s |
| 26 ; MIPS32: add.s |
| 27 ; MIPS32: add.s |
| 28 ; MIPS32: add.s |
| 18 } | 29 } |
| 19 | 30 |
| 20 define internal <4 x float> @test_fsub(<4 x float> %arg0, <4 x float> %arg1) { | 31 define internal <4 x float> @test_fsub(<4 x float> %arg0, <4 x float> %arg1) { |
| 21 entry: | 32 entry: |
| 22 %res = fsub <4 x float> %arg0, %arg1 | 33 %res = fsub <4 x float> %arg0, %arg1 |
| 23 ret <4 x float> %res | 34 ret <4 x float> %res |
| 24 ; CHECK-LABEL: test_fsub | 35 ; CHECK-LABEL: test_fsub |
| 25 ; CHECK: subps | 36 ; CHECK: subps |
| 37 ; MIPS32-LABEL: test_fsub |
| 38 ; MIPS32: sub.s |
| 39 ; MIPS32: sub.s |
| 40 ; MIPS32: sub.s |
| 41 ; MIPS32: sub.s |
| 26 } | 42 } |
| 27 | 43 |
| 28 define internal <4 x float> @test_fmul(<4 x float> %arg0, <4 x float> %arg1) { | 44 define internal <4 x float> @test_fmul(<4 x float> %arg0, <4 x float> %arg1) { |
| 29 entry: | 45 entry: |
| 30 %res = fmul <4 x float> %arg0, %arg1 | 46 %res = fmul <4 x float> %arg0, %arg1 |
| 31 ret <4 x float> %res | 47 ret <4 x float> %res |
| 32 ; CHECK-LABEL: test_fmul | 48 ; CHECK-LABEL: test_fmul |
| 33 ; CHECK: mulps | 49 ; CHECK: mulps |
| 50 ; MIPS32-LABEL: test_fmul |
| 51 ; MIPS32: mul.s |
| 52 ; MIPS32: mul.s |
| 53 ; MIPS32: mul.s |
| 54 ; MIPS32: mul.s |
| 34 } | 55 } |
| 35 | 56 |
| 36 define internal <4 x float> @test_fdiv(<4 x float> %arg0, <4 x float> %arg1) { | 57 define internal <4 x float> @test_fdiv(<4 x float> %arg0, <4 x float> %arg1) { |
| 37 entry: | 58 entry: |
| 38 %res = fdiv <4 x float> %arg0, %arg1 | 59 %res = fdiv <4 x float> %arg0, %arg1 |
| 39 ret <4 x float> %res | 60 ret <4 x float> %res |
| 40 ; CHECK-LABEL: test_fdiv | 61 ; CHECK-LABEL: test_fdiv |
| 41 ; CHECK: divps | 62 ; CHECK: divps |
| 63 ; MIPS32-LABEL: test_fdiv |
| 64 ; MIPS32: div.s |
| 65 ; MIPS32: div.s |
| 66 ; MIPS32: div.s |
| 67 ; MIPS32: div.s |
| 42 } | 68 } |
| 43 | 69 |
| 44 define internal <4 x float> @test_frem(<4 x float> %arg0, <4 x float> %arg1) { | 70 define internal <4 x float> @test_frem(<4 x float> %arg0, <4 x float> %arg1) { |
| 45 entry: | 71 entry: |
| 46 %res = frem <4 x float> %arg0, %arg1 | 72 %res = frem <4 x float> %arg0, %arg1 |
| 47 ret <4 x float> %res | 73 ret <4 x float> %res |
| 48 ; CHECK-LABEL: test_frem | 74 ; CHECK-LABEL: test_frem |
| 49 ; CHECK: fmodf | 75 ; CHECK: fmodf |
| 50 ; CHECK: fmodf | 76 ; CHECK: fmodf |
| 51 ; CHECK: fmodf | 77 ; CHECK: fmodf |
| 52 ; CHECK: fmodf | 78 ; CHECK: fmodf |
| 53 } | 79 } |
| 54 | 80 |
| 55 define internal <16 x i8> @test_add_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) { | 81 define internal <16 x i8> @test_add_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) { |
| 56 entry: | 82 entry: |
| 57 %res = add <16 x i8> %arg0, %arg1 | 83 %res = add <16 x i8> %arg0, %arg1 |
| 58 ret <16 x i8> %res | 84 ret <16 x i8> %res |
| 59 ; CHECK-LABEL: test_add_v16i8 | 85 ; CHECK-LABEL: test_add_v16i8 |
| 60 ; CHECK: paddb | 86 ; CHECK: paddb |
| 87 ; MIPS32-LABEL: test_add_v16i8 |
| 88 ; MIPS32: addu |
| 89 ; MIPS32: addu |
| 90 ; MIPS32: addu |
| 91 ; MIPS32: addu |
| 92 ; MIPS32: addu |
| 93 ; MIPS32: addu |
| 94 ; MIPS32: addu |
| 95 ; MIPS32: addu |
| 96 ; MIPS32: addu |
| 97 ; MIPS32: addu |
| 98 ; MIPS32: addu |
| 99 ; MIPS32: addu |
| 100 ; MIPS32: addu |
| 101 ; MIPS32: addu |
| 102 ; MIPS32: addu |
| 103 ; MIPS32: addu |
| 61 } | 104 } |
| 62 | 105 |
| 63 define internal <16 x i8> @test_and_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) { | 106 define internal <16 x i8> @test_and_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) { |
| 64 entry: | 107 entry: |
| 65 %res = and <16 x i8> %arg0, %arg1 | 108 %res = and <16 x i8> %arg0, %arg1 |
| 66 ret <16 x i8> %res | 109 ret <16 x i8> %res |
| 67 ; CHECK-LABEL: test_and_v16i8 | 110 ; CHECK-LABEL: test_and_v16i8 |
| 68 ; CHECK: pand | 111 ; CHECK: pand |
| 112 ; MIPS32-LABEL: test_and_v16i8 |
| 113 ; MIPS32: and |
| 114 ; MIPS32: and |
| 115 ; MIPS32: and |
| 116 ; MIPS32: and |
| 117 ; MIPS32: and |
| 118 ; MIPS32: and |
| 119 ; MIPS32: and |
| 120 ; MIPS32: and |
| 121 ; MIPS32: and |
| 122 ; MIPS32: and |
| 123 ; MIPS32: and |
| 124 ; MIPS32: and |
| 125 ; MIPS32: and |
| 126 ; MIPS32: and |
| 127 ; MIPS32: and |
| 128 ; MIPS32: and |
| 69 } | 129 } |
| 70 | 130 |
| 71 define internal <16 x i8> @test_or_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) { | 131 define internal <16 x i8> @test_or_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) { |
| 72 entry: | 132 entry: |
| 73 %res = or <16 x i8> %arg0, %arg1 | 133 %res = or <16 x i8> %arg0, %arg1 |
| 74 ret <16 x i8> %res | 134 ret <16 x i8> %res |
| 75 ; CHECK-LABEL: test_or_v16i8 | 135 ; CHECK-LABEL: test_or_v16i8 |
| 76 ; CHECK: por | 136 ; CHECK: por |
| 137 ; MIPS32-LABEL: test_or_v16i8 |
| 138 ; MIPS32: or |
| 139 ; MIPS32: or |
| 140 ; MIPS32: or |
| 141 ; MIPS32: or |
| 142 ; MIPS32: or |
| 143 ; MIPS32: or |
| 144 ; MIPS32: or |
| 145 ; MIPS32: or |
| 146 ; MIPS32: or |
| 147 ; MIPS32: or |
| 148 ; MIPS32: or |
| 149 ; MIPS32: or |
| 150 ; MIPS32: or |
| 151 ; MIPS32: or |
| 152 ; MIPS32: or |
| 153 ; MIPS32: or |
| 77 } | 154 } |
| 78 | 155 |
| 79 define internal <16 x i8> @test_xor_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) { | 156 define internal <16 x i8> @test_xor_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) { |
| 80 entry: | 157 entry: |
| 81 %res = xor <16 x i8> %arg0, %arg1 | 158 %res = xor <16 x i8> %arg0, %arg1 |
| 82 ret <16 x i8> %res | 159 ret <16 x i8> %res |
| 83 ; CHECK-LABEL: test_xor_v16i8 | 160 ; CHECK-LABEL: test_xor_v16i8 |
| 84 ; CHECK: pxor | 161 ; CHECK: pxor |
| 162 ; MIPS32-LABEL: test_xor_v16i8 |
| 163 ; MIPS32: xor |
| 164 ; MIPS32: xor |
| 165 ; MIPS32: xor |
| 166 ; MIPS32: xor |
| 167 ; MIPS32: xor |
| 168 ; MIPS32: xor |
| 169 ; MIPS32: xor |
| 170 ; MIPS32: xor |
| 171 ; MIPS32: xor |
| 172 ; MIPS32: xor |
| 173 ; MIPS32: xor |
| 174 ; MIPS32: xor |
| 175 ; MIPS32: xor |
| 176 ; MIPS32: xor |
| 177 ; MIPS32: xor |
| 178 ; MIPS32: xor |
| 85 } | 179 } |
| 86 | 180 |
| 87 define internal <16 x i8> @test_sub_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) { | 181 define internal <16 x i8> @test_sub_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) { |
| 88 entry: | 182 entry: |
| 89 %res = sub <16 x i8> %arg0, %arg1 | 183 %res = sub <16 x i8> %arg0, %arg1 |
| 90 ret <16 x i8> %res | 184 ret <16 x i8> %res |
| 91 ; CHECK-LABEL: test_sub_v16i8 | 185 ; CHECK-LABEL: test_sub_v16i8 |
| 92 ; CHECK: psubb | 186 ; CHECK: psubb |
| 187 ; MIPS32-LABEL: test_sub_v16i8 |
| 188 ; MIPS32: subu |
| 189 ; MIPS32: subu |
| 190 ; MIPS32: subu |
| 191 ; MIPS32: subu |
| 192 ; MIPS32: subu |
| 193 ; MIPS32: subu |
| 194 ; MIPS32: subu |
| 195 ; MIPS32: subu |
| 196 ; MIPS32: subu |
| 197 ; MIPS32: subu |
| 198 ; MIPS32: subu |
| 199 ; MIPS32: subu |
| 200 ; MIPS32: subu |
| 201 ; MIPS32: subu |
| 202 ; MIPS32: subu |
| 203 ; MIPS32: subu |
| 93 } | 204 } |
| 94 | 205 |
| 95 define internal <16 x i8> @test_mul_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) { | 206 define internal <16 x i8> @test_mul_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) { |
| 96 entry: | 207 entry: |
| 97 %res = mul <16 x i8> %arg0, %arg1 | 208 %res = mul <16 x i8> %arg0, %arg1 |
| 98 ret <16 x i8> %res | 209 ret <16 x i8> %res |
| 99 ; CHECK-LABEL: test_mul_v16i8 | 210 ; CHECK-LABEL: test_mul_v16i8 |
| 100 ; CHECK: imul | 211 ; CHECK: imul |
| 101 ; CHECK: imul | 212 ; CHECK: imul |
| 102 ; CHECK: imul | 213 ; CHECK: imul |
| 103 ; CHECK: imul | 214 ; CHECK: imul |
| 104 ; CHECK: imul | 215 ; CHECK: imul |
| 105 ; CHECK: imul | 216 ; CHECK: imul |
| 106 ; CHECK: imul | 217 ; CHECK: imul |
| 107 ; CHECK: imul | 218 ; CHECK: imul |
| 108 ; CHECK: imul | 219 ; CHECK: imul |
| 109 ; CHECK: imul | 220 ; CHECK: imul |
| 110 ; CHECK: imul | 221 ; CHECK: imul |
| 111 ; CHECK: imul | 222 ; CHECK: imul |
| 112 ; CHECK: imul | 223 ; CHECK: imul |
| 113 ; CHECK: imul | 224 ; CHECK: imul |
| 114 ; CHECK: imul | 225 ; CHECK: imul |
| 115 ; CHECK: imul | 226 ; CHECK: imul |
| 227 ; MIPS32-LABEL: test_mul_v16i8 |
| 228 ; MIPS32: mul |
| 229 ; MIPS32: mul |
| 230 ; MIPS32: mul |
| 231 ; MIPS32: mul |
| 232 ; MIPS32: mul |
| 233 ; MIPS32: mul |
| 234 ; MIPS32: mul |
| 235 ; MIPS32: mul |
| 236 ; MIPS32: mul |
| 237 ; MIPS32: mul |
| 238 ; MIPS32: mul |
| 239 ; MIPS32: mul |
| 240 ; MIPS32: mul |
| 241 ; MIPS32: mul |
| 242 ; MIPS32: mul |
| 243 ; MIPS32: mul |
| 116 } | 244 } |
| 117 | 245 |
| 118 define internal <16 x i8> @test_shl_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) { | 246 define internal <16 x i8> @test_shl_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) { |
| 119 entry: | 247 entry: |
| 120 %res = shl <16 x i8> %arg0, %arg1 | 248 %res = shl <16 x i8> %arg0, %arg1 |
| 121 ret <16 x i8> %res | 249 ret <16 x i8> %res |
| 122 ; CHECK-LABEL: test_shl_v16i8 | 250 ; CHECK-LABEL: test_shl_v16i8 |
| 123 ; CHECK: shl | 251 ; CHECK: shl |
| 124 ; CHECK: shl | 252 ; CHECK: shl |
| 125 ; CHECK: shl | 253 ; CHECK: shl |
| 126 ; CHECK: shl | 254 ; CHECK: shl |
| 127 ; CHECK: shl | 255 ; CHECK: shl |
| 128 ; CHECK: shl | 256 ; CHECK: shl |
| 129 ; CHECK: shl | 257 ; CHECK: shl |
| 130 ; CHECK: shl | 258 ; CHECK: shl |
| 131 ; CHECK: shl | 259 ; CHECK: shl |
| 132 ; CHECK: shl | 260 ; CHECK: shl |
| 133 ; CHECK: shl | 261 ; CHECK: shl |
| 134 ; CHECK: shl | 262 ; CHECK: shl |
| 135 ; CHECK: shl | 263 ; CHECK: shl |
| 136 ; CHECK: shl | 264 ; CHECK: shl |
| 137 ; CHECK: shl | 265 ; CHECK: shl |
| 138 ; CHECK: shl | 266 ; CHECK: shl |
| 267 ; MIPS32-LABEL: test_shl_v16i8 |
| 268 ; MIPS32: sllv |
| 269 ; MIPS32: sllv |
| 270 ; MIPS32: sllv |
| 271 ; MIPS32: sllv |
| 272 ; MIPS32: sllv |
| 273 ; MIPS32: sllv |
| 274 ; MIPS32: sllv |
| 275 ; MIPS32: sllv |
| 276 ; MIPS32: sllv |
| 277 ; MIPS32: sllv |
| 278 ; MIPS32: sllv |
| 279 ; MIPS32: sllv |
| 280 ; MIPS32: sllv |
| 281 ; MIPS32: sllv |
| 282 ; MIPS32: sllv |
| 283 ; MIPS32: sllv |
| 139 } | 284 } |
| 140 | 285 |
| 141 define internal <16 x i8> @test_lshr_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) { | 286 define internal <16 x i8> @test_lshr_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) { |
| 142 entry: | 287 entry: |
| 143 %res = lshr <16 x i8> %arg0, %arg1 | 288 %res = lshr <16 x i8> %arg0, %arg1 |
| 144 ret <16 x i8> %res | 289 ret <16 x i8> %res |
| 145 ; CHECK-LABEL: test_lshr_v16i8 | 290 ; CHECK-LABEL: test_lshr_v16i8 |
| 146 ; CHECK: shr | 291 ; CHECK: shr |
| 147 ; CHECK: shr | 292 ; CHECK: shr |
| 148 ; CHECK: shr | 293 ; CHECK: shr |
| 149 ; CHECK: shr | 294 ; CHECK: shr |
| 150 ; CHECK: shr | 295 ; CHECK: shr |
| 151 ; CHECK: shr | 296 ; CHECK: shr |
| 152 ; CHECK: shr | 297 ; CHECK: shr |
| 153 ; CHECK: shr | 298 ; CHECK: shr |
| 154 ; CHECK: shr | 299 ; CHECK: shr |
| 155 ; CHECK: shr | 300 ; CHECK: shr |
| 156 ; CHECK: shr | 301 ; CHECK: shr |
| 157 ; CHECK: shr | 302 ; CHECK: shr |
| 158 ; CHECK: shr | 303 ; CHECK: shr |
| 159 ; CHECK: shr | 304 ; CHECK: shr |
| 160 ; CHECK: shr | 305 ; CHECK: shr |
| 161 ; CHECK: shr | 306 ; CHECK: shr |
| 307 ; MIPS32-LABEL: test_lshr_v16i8 |
| 308 ; MIPS32: srlv |
| 309 ; MIPS32: srlv |
| 310 ; MIPS32: srlv |
| 311 ; MIPS32: srlv |
| 312 ; MIPS32: srlv |
| 313 ; MIPS32: srlv |
| 314 ; MIPS32: srlv |
| 315 ; MIPS32: srlv |
| 316 ; MIPS32: srlv |
| 317 ; MIPS32: srlv |
| 318 ; MIPS32: srlv |
| 319 ; MIPS32: srlv |
| 320 ; MIPS32: srlv |
| 321 ; MIPS32: srlv |
| 322 ; MIPS32: srlv |
| 323 ; MIPS32: srlv |
| 162 } | 324 } |
| 163 | 325 |
| 164 define internal <16 x i8> @test_ashr_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) { | 326 define internal <16 x i8> @test_ashr_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) { |
| 165 entry: | 327 entry: |
| 166 %res = ashr <16 x i8> %arg0, %arg1 | 328 %res = ashr <16 x i8> %arg0, %arg1 |
| 167 ret <16 x i8> %res | 329 ret <16 x i8> %res |
| 168 ; CHECK-LABEL: test_ashr_v16i8 | 330 ; CHECK-LABEL: test_ashr_v16i8 |
| 169 ; CHECK: sar | 331 ; CHECK: sar |
| 170 ; CHECK: sar | 332 ; CHECK: sar |
| 171 ; CHECK: sar | 333 ; CHECK: sar |
| 172 ; CHECK: sar | 334 ; CHECK: sar |
| 173 ; CHECK: sar | 335 ; CHECK: sar |
| 174 ; CHECK: sar | 336 ; CHECK: sar |
| 175 ; CHECK: sar | 337 ; CHECK: sar |
| 176 ; CHECK: sar | 338 ; CHECK: sar |
| 177 ; CHECK: sar | 339 ; CHECK: sar |
| 178 ; CHECK: sar | 340 ; CHECK: sar |
| 179 ; CHECK: sar | 341 ; CHECK: sar |
| 180 ; CHECK: sar | 342 ; CHECK: sar |
| 181 ; CHECK: sar | 343 ; CHECK: sar |
| 182 ; CHECK: sar | 344 ; CHECK: sar |
| 183 ; CHECK: sar | 345 ; CHECK: sar |
| 184 ; CHECK: sar | 346 ; CHECK: sar |
| 347 ; MIPS32-LABEL: test_ashr_v16i8 |
| 348 ; MIPS32: srav |
| 349 ; MIPS32: srav |
| 350 ; MIPS32: srav |
| 351 ; MIPS32: srav |
| 352 ; MIPS32: srav |
| 353 ; MIPS32: srav |
| 354 ; MIPS32: srav |
| 355 ; MIPS32: srav |
| 356 ; MIPS32: srav |
| 357 ; MIPS32: srav |
| 358 ; MIPS32: srav |
| 359 ; MIPS32: srav |
| 360 ; MIPS32: srav |
| 361 ; MIPS32: srav |
| 362 ; MIPS32: srav |
| 363 ; MIPS32: srav |
| 185 } | 364 } |
| 186 | 365 |
| 187 define internal <16 x i8> @test_udiv_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) { | 366 define internal <16 x i8> @test_udiv_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) { |
| 188 entry: | 367 entry: |
| 189 %res = udiv <16 x i8> %arg0, %arg1 | 368 %res = udiv <16 x i8> %arg0, %arg1 |
| 190 ret <16 x i8> %res | 369 ret <16 x i8> %res |
| 191 ; CHECK-LABEL: test_udiv_v16i8 | 370 ; CHECK-LABEL: test_udiv_v16i8 |
| 192 ; CHECK: div | 371 ; CHECK: div |
| 193 ; CHECK: div | 372 ; CHECK: div |
| 194 ; CHECK: div | 373 ; CHECK: div |
| 195 ; CHECK: div | 374 ; CHECK: div |
| 196 ; CHECK: div | 375 ; CHECK: div |
| 197 ; CHECK: div | 376 ; CHECK: div |
| 198 ; CHECK: div | 377 ; CHECK: div |
| 199 ; CHECK: div | 378 ; CHECK: div |
| 200 ; CHECK: div | 379 ; CHECK: div |
| 201 ; CHECK: div | 380 ; CHECK: div |
| 202 ; CHECK: div | 381 ; CHECK: div |
| 203 ; CHECK: div | 382 ; CHECK: div |
| 204 ; CHECK: div | 383 ; CHECK: div |
| 205 ; CHECK: div | 384 ; CHECK: div |
| 206 ; CHECK: div | 385 ; CHECK: div |
| 207 ; CHECK: div | 386 ; CHECK: div |
| 387 ; MIPS32-LABEL: test_udiv_v16i8 |
| 388 ; MIPS32: divu |
| 389 ; MIPS32: divu |
| 390 ; MIPS32: divu |
| 391 ; MIPS32: divu |
| 392 ; MIPS32: divu |
| 393 ; MIPS32: divu |
| 394 ; MIPS32: divu |
| 395 ; MIPS32: divu |
| 396 ; MIPS32: divu |
| 397 ; MIPS32: divu |
| 398 ; MIPS32: divu |
| 399 ; MIPS32: divu |
| 400 ; MIPS32: divu |
| 401 ; MIPS32: divu |
| 402 ; MIPS32: divu |
| 403 ; MIPS32: divu |
| 208 } | 404 } |
| 209 | 405 |
| 210 define internal <16 x i8> @test_sdiv_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) { | 406 define internal <16 x i8> @test_sdiv_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) { |
| 211 entry: | 407 entry: |
| 212 %res = sdiv <16 x i8> %arg0, %arg1 | 408 %res = sdiv <16 x i8> %arg0, %arg1 |
| 213 ret <16 x i8> %res | 409 ret <16 x i8> %res |
| 214 ; CHECK-LABEL: test_sdiv_v16i8 | 410 ; CHECK-LABEL: test_sdiv_v16i8 |
| 215 ; CHECK: idiv | 411 ; CHECK: idiv |
| 216 ; CHECK: idiv | 412 ; CHECK: idiv |
| 217 ; CHECK: idiv | 413 ; CHECK: idiv |
| 218 ; CHECK: idiv | 414 ; CHECK: idiv |
| 219 ; CHECK: idiv | 415 ; CHECK: idiv |
| 220 ; CHECK: idiv | 416 ; CHECK: idiv |
| 221 ; CHECK: idiv | 417 ; CHECK: idiv |
| 222 ; CHECK: idiv | 418 ; CHECK: idiv |
| 223 ; CHECK: idiv | 419 ; CHECK: idiv |
| 224 ; CHECK: idiv | 420 ; CHECK: idiv |
| 225 ; CHECK: idiv | 421 ; CHECK: idiv |
| 226 ; CHECK: idiv | 422 ; CHECK: idiv |
| 227 ; CHECK: idiv | 423 ; CHECK: idiv |
| 228 ; CHECK: idiv | 424 ; CHECK: idiv |
| 229 ; CHECK: idiv | 425 ; CHECK: idiv |
| 230 ; CHECK: idiv | 426 ; CHECK: idiv |
| 427 ; MIPS32-LABEL: test_sdiv_v16i8 |
| 428 ; MIPS32: div |
| 429 ; MIPS32: div |
| 430 ; MIPS32: div |
| 431 ; MIPS32: div |
| 432 ; MIPS32: div |
| 433 ; MIPS32: div |
| 434 ; MIPS32: div |
| 435 ; MIPS32: div |
| 436 ; MIPS32: div |
| 437 ; MIPS32: div |
| 438 ; MIPS32: div |
| 439 ; MIPS32: div |
| 440 ; MIPS32: div |
| 441 ; MIPS32: div |
| 442 ; MIPS32: div |
| 443 ; MIPS32: div |
| 231 } | 444 } |
| 232 | 445 |
| 233 define internal <16 x i8> @test_urem_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) { | 446 define internal <16 x i8> @test_urem_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) { |
| 234 entry: | 447 entry: |
| 235 %res = urem <16 x i8> %arg0, %arg1 | 448 %res = urem <16 x i8> %arg0, %arg1 |
| 236 ret <16 x i8> %res | 449 ret <16 x i8> %res |
| 237 ; CHECK-LABEL: test_urem_v16i8 | 450 ; CHECK-LABEL: test_urem_v16i8 |
| 238 ; CHECK: div | 451 ; CHECK: div |
| 239 ; CHECK: div | 452 ; CHECK: div |
| 240 ; CHECK: div | 453 ; CHECK: div |
| 241 ; CHECK: div | 454 ; CHECK: div |
| 242 ; CHECK: div | 455 ; CHECK: div |
| 243 ; CHECK: div | 456 ; CHECK: div |
| 244 ; CHECK: div | 457 ; CHECK: div |
| 245 ; CHECK: div | 458 ; CHECK: div |
| 246 ; CHECK: div | 459 ; CHECK: div |
| 247 ; CHECK: div | 460 ; CHECK: div |
| 248 ; CHECK: div | 461 ; CHECK: div |
| 249 ; CHECK: div | 462 ; CHECK: div |
| 250 ; CHECK: div | 463 ; CHECK: div |
| 251 ; CHECK: div | 464 ; CHECK: div |
| 252 ; CHECK: div | 465 ; CHECK: div |
| 253 ; CHECK: div | 466 ; CHECK: div |
| 467 ; MIPS32-LABEL: test_urem_v16i8 |
| 468 ; MIPS32: divu |
| 469 ; MIPS32: divu |
| 470 ; MIPS32: divu |
| 471 ; MIPS32: divu |
| 472 ; MIPS32: divu |
| 473 ; MIPS32: divu |
| 474 ; MIPS32: divu |
| 475 ; MIPS32: divu |
| 476 ; MIPS32: divu |
| 477 ; MIPS32: divu |
| 478 ; MIPS32: divu |
| 479 ; MIPS32: divu |
| 480 ; MIPS32: divu |
| 481 ; MIPS32: divu |
| 482 ; MIPS32: divu |
| 483 ; MIPS32: divu |
| 254 } | 484 } |
| 255 | 485 |
| 256 define internal <16 x i8> @test_srem_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) { | 486 define internal <16 x i8> @test_srem_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) { |
| 257 entry: | 487 entry: |
| 258 %res = srem <16 x i8> %arg0, %arg1 | 488 %res = srem <16 x i8> %arg0, %arg1 |
| 259 ret <16 x i8> %res | 489 ret <16 x i8> %res |
| 260 ; CHECK-LABEL: test_srem_v16i8 | 490 ; CHECK-LABEL: test_srem_v16i8 |
| 261 ; CHECK: idiv | 491 ; CHECK: idiv |
| 262 ; CHECK: idiv | 492 ; CHECK: idiv |
| 263 ; CHECK: idiv | 493 ; CHECK: idiv |
| 264 ; CHECK: idiv | 494 ; CHECK: idiv |
| 265 ; CHECK: idiv | 495 ; CHECK: idiv |
| 266 ; CHECK: idiv | 496 ; CHECK: idiv |
| 267 ; CHECK: idiv | 497 ; CHECK: idiv |
| 268 ; CHECK: idiv | 498 ; CHECK: idiv |
| 269 ; CHECK: idiv | 499 ; CHECK: idiv |
| 270 ; CHECK: idiv | 500 ; CHECK: idiv |
| 271 ; CHECK: idiv | 501 ; CHECK: idiv |
| 272 ; CHECK: idiv | 502 ; CHECK: idiv |
| 273 ; CHECK: idiv | 503 ; CHECK: idiv |
| 274 ; CHECK: idiv | 504 ; CHECK: idiv |
| 275 ; CHECK: idiv | 505 ; CHECK: idiv |
| 276 ; CHECK: idiv | 506 ; CHECK: idiv |
| 507 ; MIPS32-LABEL: test_srem_v16i8 |
| 508 ; MIPS32: div |
| 509 ; MIPS32: div |
| 510 ; MIPS32: div |
| 511 ; MIPS32: div |
| 512 ; MIPS32: div |
| 513 ; MIPS32: div |
| 514 ; MIPS32: div |
| 515 ; MIPS32: div |
| 516 ; MIPS32: div |
| 517 ; MIPS32: div |
| 518 ; MIPS32: div |
| 519 ; MIPS32: div |
| 520 ; MIPS32: div |
| 521 ; MIPS32: div |
| 522 ; MIPS32: div |
| 523 ; MIPS32: div |
| 277 } | 524 } |
| 278 | 525 |
| 279 define internal <8 x i16> @test_add_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) { | 526 define internal <8 x i16> @test_add_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) { |
| 280 entry: | 527 entry: |
| 281 %res = add <8 x i16> %arg0, %arg1 | 528 %res = add <8 x i16> %arg0, %arg1 |
| 282 ret <8 x i16> %res | 529 ret <8 x i16> %res |
| 283 ; CHECK-LABEL: test_add_v8i16 | 530 ; CHECK-LABEL: test_add_v8i16 |
| 284 ; CHECK: paddw | 531 ; CHECK: paddw |
| 532 ; MIPS32-LABEL: test_add_v8i16 |
| 533 ; MIPS32: addu |
| 534 ; MIPS32: addu |
| 535 ; MIPS32: addu |
| 536 ; MIPS32: addu |
| 537 ; MIPS32: addu |
| 538 ; MIPS32: addu |
| 539 ; MIPS32: addu |
| 540 ; MIPS32: addu |
| 285 } | 541 } |
| 286 | 542 |
| 287 define internal <8 x i16> @test_and_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) { | 543 define internal <8 x i16> @test_and_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) { |
| 288 entry: | 544 entry: |
| 289 %res = and <8 x i16> %arg0, %arg1 | 545 %res = and <8 x i16> %arg0, %arg1 |
| 290 ret <8 x i16> %res | 546 ret <8 x i16> %res |
| 291 ; CHECK-LABEL: test_and_v8i16 | 547 ; CHECK-LABEL: test_and_v8i16 |
| 292 ; CHECK: pand | 548 ; CHECK: pand |
| 549 ; MIPS32-LABEL: test_and_v8i16 |
| 550 ; MIPS32: andi |
| 551 ; MIPS32: andi |
| 552 ; MIPS32: andi |
| 553 ; MIPS32: andi |
| 554 ; MIPS32: andi |
| 555 ; MIPS32: andi |
| 556 ; MIPS32: andi |
| 557 ; MIPS32: andi |
| 293 } | 558 } |
| 294 | 559 |
| 295 define internal <8 x i16> @test_or_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) { | 560 define internal <8 x i16> @test_or_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) { |
| 296 entry: | 561 entry: |
| 297 %res = or <8 x i16> %arg0, %arg1 | 562 %res = or <8 x i16> %arg0, %arg1 |
| 298 ret <8 x i16> %res | 563 ret <8 x i16> %res |
| 299 ; CHECK-LABEL: test_or_v8i16 | 564 ; CHECK-LABEL: test_or_v8i16 |
| 300 ; CHECK: por | 565 ; CHECK: por |
| 566 ; MIPS32-LABEL: test_or_v8i16 |
| 567 ; MIPS32: or |
| 568 ; MIPS32: or |
| 569 ; MIPS32: or |
| 570 ; MIPS32: or |
| 571 ; MIPS32: or |
| 572 ; MIPS32: or |
| 573 ; MIPS32: or |
| 574 ; MIPS32: or |
| 301 } | 575 } |
| 302 | 576 |
| 303 define internal <8 x i16> @test_xor_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) { | 577 define internal <8 x i16> @test_xor_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) { |
| 304 entry: | 578 entry: |
| 305 %res = xor <8 x i16> %arg0, %arg1 | 579 %res = xor <8 x i16> %arg0, %arg1 |
| 306 ret <8 x i16> %res | 580 ret <8 x i16> %res |
| 307 ; CHECK-LABEL: test_xor_v8i16 | 581 ; CHECK-LABEL: test_xor_v8i16 |
| 308 ; CHECK: pxor | 582 ; CHECK: pxor |
| 583 ; MIPS32-LABEL: test_xor_v8i16 |
| 584 ; MIPS32: xor |
| 585 ; MIPS32: xor |
| 586 ; MIPS32: xor |
| 587 ; MIPS32: xor |
| 588 ; MIPS32: xor |
| 589 ; MIPS32: xor |
| 590 ; MIPS32: xor |
| 591 ; MIPS32: xor |
| 309 } | 592 } |
| 310 | 593 |
| 311 define internal <8 x i16> @test_sub_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) { | 594 define internal <8 x i16> @test_sub_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) { |
| 312 entry: | 595 entry: |
| 313 %res = sub <8 x i16> %arg0, %arg1 | 596 %res = sub <8 x i16> %arg0, %arg1 |
| 314 ret <8 x i16> %res | 597 ret <8 x i16> %res |
| 315 ; CHECK-LABEL: test_sub_v8i16 | 598 ; CHECK-LABEL: test_sub_v8i16 |
| 316 ; CHECK: psubw | 599 ; CHECK: psubw |
| 600 ; MIPS32-LABEL: test_sub_v8i16 |
| 601 ; MIPS32: subu |
| 602 ; MIPS32: subu |
| 603 ; MIPS32: subu |
| 604 ; MIPS32: subu |
| 605 ; MIPS32: subu |
| 606 ; MIPS32: subu |
| 607 ; MIPS32: subu |
| 608 ; MIPS32: subu |
| 317 } | 609 } |
| 318 | 610 |
| 319 define internal <8 x i16> @test_mul_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) { | 611 define internal <8 x i16> @test_mul_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) { |
| 320 entry: | 612 entry: |
| 321 %res = mul <8 x i16> %arg0, %arg1 | 613 %res = mul <8 x i16> %arg0, %arg1 |
| 322 ret <8 x i16> %res | 614 ret <8 x i16> %res |
| 323 ; CHECK-LABEL: test_mul_v8i16 | 615 ; CHECK-LABEL: test_mul_v8i16 |
| 324 ; CHECK: pmullw | 616 ; CHECK: pmullw |
| 617 ; MIPS32-LABEL: test_mul_v8i16 |
| 618 ; MIPS32: mul |
| 619 ; MIPS32: mul |
| 620 ; MIPS32: mul |
| 621 ; MIPS32: mul |
| 622 ; MIPS32: mul |
| 623 ; MIPS32: mul |
| 624 ; MIPS32: mul |
| 625 ; MIPS32: mul |
| 325 } | 626 } |
| 326 | 627 |
| 327 define internal <8 x i16> @test_shl_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) { | 628 define internal <8 x i16> @test_shl_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) { |
| 328 entry: | 629 entry: |
| 329 %res = shl <8 x i16> %arg0, %arg1 | 630 %res = shl <8 x i16> %arg0, %arg1 |
| 330 ret <8 x i16> %res | 631 ret <8 x i16> %res |
| 331 ; CHECK-LABEL: test_shl_v8i16 | 632 ; CHECK-LABEL: test_shl_v8i16 |
| 332 ; CHECK: shl | 633 ; CHECK: shl |
| 333 ; CHECK: shl | 634 ; CHECK: shl |
| 334 ; CHECK: shl | 635 ; CHECK: shl |
| 335 ; CHECK: shl | 636 ; CHECK: shl |
| 336 ; CHECK: shl | 637 ; CHECK: shl |
| 337 ; CHECK: shl | 638 ; CHECK: shl |
| 338 ; CHECK: shl | 639 ; CHECK: shl |
| 339 ; CHECK: shl | 640 ; CHECK: shl |
| 641 ; MIPS32-LABEL: test_shl_v8i16 |
| 642 ; MIPS32: sllv |
| 643 ; MIPS32: sllv |
| 644 ; MIPS32: sllv |
| 645 ; MIPS32: sllv |
| 646 ; MIPS32: sllv |
| 647 ; MIPS32: sllv |
| 648 ; MIPS32: sllv |
| 649 ; MIPS32: sllv |
| 340 } | 650 } |
| 341 | 651 |
| 342 define internal <8 x i16> @test_lshr_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) { | 652 define internal <8 x i16> @test_lshr_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) { |
| 343 entry: | 653 entry: |
| 344 %res = lshr <8 x i16> %arg0, %arg1 | 654 %res = lshr <8 x i16> %arg0, %arg1 |
| 345 ret <8 x i16> %res | 655 ret <8 x i16> %res |
| 346 ; CHECK-LABEL: test_lshr_v8i16 | 656 ; CHECK-LABEL: test_lshr_v8i16 |
| 347 ; CHECK: shr | 657 ; CHECK: shr |
| 348 ; CHECK: shr | 658 ; CHECK: shr |
| 349 ; CHECK: shr | 659 ; CHECK: shr |
| 350 ; CHECK: shr | 660 ; CHECK: shr |
| 351 ; CHECK: shr | 661 ; CHECK: shr |
| 352 ; CHECK: shr | 662 ; CHECK: shr |
| 353 ; CHECK: shr | 663 ; CHECK: shr |
| 354 ; CHECK: shr | 664 ; CHECK: shr |
| 665 ; MIPS32-LABEL: test_lshr_v8i16 |
| 666 ; MIPS32: srlv |
| 667 ; MIPS32: srlv |
| 668 ; MIPS32: srlv |
| 669 ; MIPS32: srlv |
| 670 ; MIPS32: srlv |
| 671 ; MIPS32: srlv |
| 672 ; MIPS32: srlv |
| 673 ; MIPS32: srlv |
| 355 } | 674 } |
| 356 | 675 |
| 357 define internal <8 x i16> @test_ashr_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) { | 676 define internal <8 x i16> @test_ashr_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) { |
| 358 entry: | 677 entry: |
| 359 %res = ashr <8 x i16> %arg0, %arg1 | 678 %res = ashr <8 x i16> %arg0, %arg1 |
| 360 ret <8 x i16> %res | 679 ret <8 x i16> %res |
| 361 ; CHECK-LABEL: test_ashr_v8i16 | 680 ; CHECK-LABEL: test_ashr_v8i16 |
| 362 ; CHECK: sar | 681 ; CHECK: sar |
| 363 ; CHECK: sar | 682 ; CHECK: sar |
| 364 ; CHECK: sar | 683 ; CHECK: sar |
| 365 ; CHECK: sar | 684 ; CHECK: sar |
| 366 ; CHECK: sar | 685 ; CHECK: sar |
| 367 ; CHECK: sar | 686 ; CHECK: sar |
| 368 ; CHECK: sar | 687 ; CHECK: sar |
| 369 ; CHECK: sar | 688 ; CHECK: sar |
| 689 ; MIPS32-LABEL: test_ashr_v8i16 |
| 690 ; MIPS32: srav |
| 691 ; MIPS32: srav |
| 692 ; MIPS32: srav |
| 693 ; MIPS32: srav |
| 694 ; MIPS32: srav |
| 695 ; MIPS32: srav |
| 696 ; MIPS32: srav |
| 697 ; MIPS32: srav |
| 370 } | 698 } |
| 371 | 699 |
| 372 define internal <8 x i16> @test_udiv_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) { | 700 define internal <8 x i16> @test_udiv_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) { |
| 373 entry: | 701 entry: |
| 374 %res = udiv <8 x i16> %arg0, %arg1 | 702 %res = udiv <8 x i16> %arg0, %arg1 |
| 375 ret <8 x i16> %res | 703 ret <8 x i16> %res |
| 376 ; CHECK-LABEL: test_udiv_v8i16 | 704 ; CHECK-LABEL: test_udiv_v8i16 |
| 377 ; CHECK: div | 705 ; CHECK: div |
| 378 ; CHECK: div | 706 ; CHECK: div |
| 379 ; CHECK: div | 707 ; CHECK: div |
| 380 ; CHECK: div | 708 ; CHECK: div |
| 381 ; CHECK: div | 709 ; CHECK: div |
| 382 ; CHECK: div | 710 ; CHECK: div |
| 383 ; CHECK: div | 711 ; CHECK: div |
| 384 ; CHECK: div | 712 ; CHECK: div |
| 713 ; MIPS32-LABEL: test_udiv_v8i16 |
| 714 ; MIPS32: divu |
| 715 ; MIPS32: divu |
| 716 ; MIPS32: divu |
| 717 ; MIPS32: divu |
| 718 ; MIPS32: divu |
| 719 ; MIPS32: divu |
| 720 ; MIPS32: divu |
| 721 ; MIPS32: divu |
| 385 } | 722 } |
| 386 | 723 |
| 387 define internal <8 x i16> @test_sdiv_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) { | 724 define internal <8 x i16> @test_sdiv_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) { |
| 388 entry: | 725 entry: |
| 389 %res = sdiv <8 x i16> %arg0, %arg1 | 726 %res = sdiv <8 x i16> %arg0, %arg1 |
| 390 ret <8 x i16> %res | 727 ret <8 x i16> %res |
| 391 ; CHECK-LABEL: test_sdiv_v8i16 | 728 ; CHECK-LABEL: test_sdiv_v8i16 |
| 392 ; CHECK: idiv | 729 ; CHECK: idiv |
| 393 ; CHECK: idiv | 730 ; CHECK: idiv |
| 394 ; CHECK: idiv | 731 ; CHECK: idiv |
| 395 ; CHECK: idiv | 732 ; CHECK: idiv |
| 396 ; CHECK: idiv | 733 ; CHECK: idiv |
| 397 ; CHECK: idiv | 734 ; CHECK: idiv |
| 398 ; CHECK: idiv | 735 ; CHECK: idiv |
| 399 ; CHECK: idiv | 736 ; CHECK: idiv |
| 737 ; MIPS32-LABEL: test_sdiv_v8i16 |
| 738 ; MIPS32: div |
| 739 ; MIPS32: div |
| 740 ; MIPS32: div |
| 741 ; MIPS32: div |
| 742 ; MIPS32: div |
| 743 ; MIPS32: div |
| 744 ; MIPS32: div |
| 745 ; MIPS32: div |
| 400 } | 746 } |
| 401 | 747 |
| 402 define internal <8 x i16> @test_urem_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) { | 748 define internal <8 x i16> @test_urem_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) { |
| 403 entry: | 749 entry: |
| 404 %res = urem <8 x i16> %arg0, %arg1 | 750 %res = urem <8 x i16> %arg0, %arg1 |
| 405 ret <8 x i16> %res | 751 ret <8 x i16> %res |
| 406 ; CHECK-LABEL: test_urem_v8i16 | 752 ; CHECK-LABEL: test_urem_v8i16 |
| 407 ; CHECK: div | 753 ; CHECK: div |
| 408 ; CHECK: div | 754 ; CHECK: div |
| 409 ; CHECK: div | 755 ; CHECK: div |
| 410 ; CHECK: div | 756 ; CHECK: div |
| 411 ; CHECK: div | 757 ; CHECK: div |
| 412 ; CHECK: div | 758 ; CHECK: div |
| 413 ; CHECK: div | 759 ; CHECK: div |
| 414 ; CHECK: div | 760 ; CHECK: div |
| 761 ; MIPS32-LABEL: test_urem_v8i16 |
| 762 ; MIPS32: divu |
| 763 ; MIPS32: divu |
| 764 ; MIPS32: divu |
| 765 ; MIPS32: divu |
| 766 ; MIPS32: divu |
| 767 ; MIPS32: divu |
| 768 ; MIPS32: divu |
| 769 ; MIPS32: divu |
| 415 } | 770 } |
| 416 | 771 |
| 417 define internal <8 x i16> @test_srem_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) { | 772 define internal <8 x i16> @test_srem_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) { |
| 418 entry: | 773 entry: |
| 419 %res = srem <8 x i16> %arg0, %arg1 | 774 %res = srem <8 x i16> %arg0, %arg1 |
| 420 ret <8 x i16> %res | 775 ret <8 x i16> %res |
| 421 ; CHECK-LABEL: test_srem_v8i16 | 776 ; CHECK-LABEL: test_srem_v8i16 |
| 422 ; CHECK: idiv | 777 ; CHECK: idiv |
| 423 ; CHECK: idiv | 778 ; CHECK: idiv |
| 424 ; CHECK: idiv | 779 ; CHECK: idiv |
| 425 ; CHECK: idiv | 780 ; CHECK: idiv |
| 426 ; CHECK: idiv | 781 ; CHECK: idiv |
| 427 ; CHECK: idiv | 782 ; CHECK: idiv |
| 428 ; CHECK: idiv | 783 ; CHECK: idiv |
| 429 ; CHECK: idiv | 784 ; CHECK: idiv |
| 785 ; MIPS32-LABEL: test_srem_v8i16 |
| 786 ; MIPS32: div |
| 787 ; MIPS32: div |
| 788 ; MIPS32: div |
| 789 ; MIPS32: div |
| 790 ; MIPS32: div |
| 791 ; MIPS32: div |
| 792 ; MIPS32: div |
| 793 ; MIPS32: div |
| 430 } | 794 } |
| 431 | 795 |
| 432 define internal <4 x i32> @test_add_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) { | 796 define internal <4 x i32> @test_add_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) { |
| 433 entry: | 797 entry: |
| 434 %res = add <4 x i32> %arg0, %arg1 | 798 %res = add <4 x i32> %arg0, %arg1 |
| 435 ret <4 x i32> %res | 799 ret <4 x i32> %res |
| 436 ; CHECK-LABEL: test_add_v4i32 | 800 ; CHECK-LABEL: test_add_v4i32 |
| 437 ; CHECK: paddd | 801 ; CHECK: paddd |
| 802 ; MIPS32-LABEL: test_add_v4i32 |
| 803 ; MIPS32: addu |
| 804 ; MIPS32: addu |
| 805 ; MIPS32: addu |
| 806 ; MIPS32: addu |
| 438 } | 807 } |
| 439 | 808 |
| 440 define internal <4 x i32> @test_and_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) { | 809 define internal <4 x i32> @test_and_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) { |
| 441 entry: | 810 entry: |
| 442 %res = and <4 x i32> %arg0, %arg1 | 811 %res = and <4 x i32> %arg0, %arg1 |
| 443 ret <4 x i32> %res | 812 ret <4 x i32> %res |
| 444 ; CHECK-LABEL: test_and_v4i32 | 813 ; CHECK-LABEL: test_and_v4i32 |
| 445 ; CHECK: pand | 814 ; CHECK: pand |
| 815 ; MIPS32-LABEL: test_and_v4i32 |
| 816 ; MIPS32: and |
| 817 ; MIPS32: and |
| 818 ; MIPS32: and |
| 819 ; MIPS32: and |
| 446 } | 820 } |
| 447 | 821 |
| 448 define internal <4 x i32> @test_or_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) { | 822 define internal <4 x i32> @test_or_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) { |
| 449 entry: | 823 entry: |
| 450 %res = or <4 x i32> %arg0, %arg1 | 824 %res = or <4 x i32> %arg0, %arg1 |
| 451 ret <4 x i32> %res | 825 ret <4 x i32> %res |
| 452 ; CHECK-LABEL: test_or_v4i32 | 826 ; CHECK-LABEL: test_or_v4i32 |
| 453 ; CHECK: por | 827 ; CHECK: por |
| 828 ; MIPS32-LABEL: test_or_v4i32 |
| 829 ; MIPS32: or |
| 830 ; MIPS32: or |
| 831 ; MIPS32: or |
| 832 ; MIPS32: or |
| 454 } | 833 } |
| 455 | 834 |
| 456 define internal <4 x i32> @test_xor_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) { | 835 define internal <4 x i32> @test_xor_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) { |
| 457 entry: | 836 entry: |
| 458 %res = xor <4 x i32> %arg0, %arg1 | 837 %res = xor <4 x i32> %arg0, %arg1 |
| 459 ret <4 x i32> %res | 838 ret <4 x i32> %res |
| 460 ; CHECK-LABEL: test_xor_v4i32 | 839 ; CHECK-LABEL: test_xor_v4i32 |
| 461 ; CHECK: pxor | 840 ; CHECK: pxor |
| 841 ; MIPS32-LABEL: test_xor_v4i32 |
| 842 ; MIPS32: xor |
| 843 ; MIPS32: xor |
| 844 ; MIPS32: xor |
| 845 ; MIPS32: xor |
| 462 } | 846 } |
| 463 | 847 |
| 464 define internal <4 x i32> @test_sub_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) { | 848 define internal <4 x i32> @test_sub_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) { |
| 465 entry: | 849 entry: |
| 466 %res = sub <4 x i32> %arg0, %arg1 | 850 %res = sub <4 x i32> %arg0, %arg1 |
| 467 ret <4 x i32> %res | 851 ret <4 x i32> %res |
| 468 ; CHECK-LABEL: test_sub_v4i32 | 852 ; CHECK-LABEL: test_sub_v4i32 |
| 469 ; CHECK: psubd | 853 ; CHECK: psubd |
| 854 ; MIPS32-LABEL: test_sub_v4i32 |
| 855 ; MIPS32: subu |
| 856 ; MIPS32: subu |
| 857 ; MIPS32: subu |
| 858 ; MIPS32: subu |
| 470 } | 859 } |
| 471 | 860 |
| 472 define internal <4 x i32> @test_mul_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) { | 861 define internal <4 x i32> @test_mul_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) { |
| 473 entry: | 862 entry: |
| 474 %res = mul <4 x i32> %arg0, %arg1 | 863 %res = mul <4 x i32> %arg0, %arg1 |
| 475 ret <4 x i32> %res | 864 ret <4 x i32> %res |
| 476 ; CHECK-LABEL: test_mul_v4i32 | 865 ; CHECK-LABEL: test_mul_v4i32 |
| 477 ; CHECK: pmuludq | 866 ; CHECK: pmuludq |
| 478 ; CHECK: pmuludq | 867 ; CHECK: pmuludq |
| 479 ; | 868 ; |
| 480 ; SSE41-LABEL: test_mul_v4i32 | 869 ; SSE41-LABEL: test_mul_v4i32 |
| 481 ; SSE41: pmulld | 870 ; SSE41: pmulld |
| 871 ; MIPS32-LABEL: test_mul_v4i32 |
| 872 ; MIPS32: mul |
| 873 ; MIPS32: mul |
| 874 ; MIPS32: mul |
| 875 ; MIPS32: mul |
| 482 } | 876 } |
| 483 | 877 |
| 484 define internal <4 x i32> @test_shl_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) { | 878 define internal <4 x i32> @test_shl_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) { |
| 485 entry: | 879 entry: |
| 486 %res = shl <4 x i32> %arg0, %arg1 | 880 %res = shl <4 x i32> %arg0, %arg1 |
| 487 ret <4 x i32> %res | 881 ret <4 x i32> %res |
| 488 ; CHECK-LABEL: test_shl_v4i32 | 882 ; CHECK-LABEL: test_shl_v4i32 |
| 489 ; CHECK: shl | 883 ; CHECK: shl |
| 490 ; CHECK: shl | 884 ; CHECK: shl |
| 491 ; CHECK: shl | 885 ; CHECK: shl |
| 492 ; CHECK: shl | 886 ; CHECK: shl |
| 493 | 887 |
| 494 ; This line is to ensure that pmulld is generated in test_mul_v4i32 above. | 888 ; This line is to ensure that pmulld is generated in test_mul_v4i32 above. |
| 495 ; SSE41-LABEL: test_shl_v4i32 | 889 ; SSE41-LABEL: test_shl_v4i32 |
| 890 ; MIPS32-LABEL: test_shl_v4i32 |
| 891 ; MIPS32: sllv |
| 892 ; MIPS32: sllv |
| 893 ; MIPS32: sllv |
| 894 ; MIPS32: sllv |
| 496 } | 895 } |
| 497 | 896 |
| 498 define internal <4 x i32> @test_lshr_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) { | 897 define internal <4 x i32> @test_lshr_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) { |
| 499 entry: | 898 entry: |
| 500 %res = lshr <4 x i32> %arg0, %arg1 | 899 %res = lshr <4 x i32> %arg0, %arg1 |
| 501 ret <4 x i32> %res | 900 ret <4 x i32> %res |
| 502 ; CHECK-LABEL: test_lshr_v4i32 | 901 ; CHECK-LABEL: test_lshr_v4i32 |
| 503 ; CHECK: shr | 902 ; CHECK: shr |
| 504 ; CHECK: shr | 903 ; CHECK: shr |
| 505 ; CHECK: shr | 904 ; CHECK: shr |
| 506 ; CHECK: shr | 905 ; CHECK: shr |
| 906 ; MIPS32-LABEL: test_lshr_v4i32 |
| 907 ; MIPS32: srlv |
| 908 ; MIPS32: srlv |
| 909 ; MIPS32: srlv |
| 910 ; MIPS32: srlv |
| 507 } | 911 } |
| 508 | 912 |
| 509 define internal <4 x i32> @test_ashr_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) { | 913 define internal <4 x i32> @test_ashr_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) { |
| 510 entry: | 914 entry: |
| 511 %res = ashr <4 x i32> %arg0, %arg1 | 915 %res = ashr <4 x i32> %arg0, %arg1 |
| 512 ret <4 x i32> %res | 916 ret <4 x i32> %res |
| 513 ; CHECK-LABEL: test_ashr_v4i32 | 917 ; CHECK-LABEL: test_ashr_v4i32 |
| 514 ; CHECK: sar | 918 ; CHECK: sar |
| 515 ; CHECK: sar | 919 ; CHECK: sar |
| 516 ; CHECK: sar | 920 ; CHECK: sar |
| 517 ; CHECK: sar | 921 ; CHECK: sar |
| 922 ; MIPS32-LABEL: test_ashr_v4i32 |
| 923 ; MIPS32: srav |
| 924 ; MIPS32: srav |
| 925 ; MIPS32: srav |
| 926 ; MIPS32: srav |
| 518 } | 927 } |
| 519 | 928 |
| 520 define internal <4 x i32> @test_udiv_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) { | 929 define internal <4 x i32> @test_udiv_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) { |
| 521 entry: | 930 entry: |
| 522 %res = udiv <4 x i32> %arg0, %arg1 | 931 %res = udiv <4 x i32> %arg0, %arg1 |
| 523 ret <4 x i32> %res | 932 ret <4 x i32> %res |
| 524 ; CHECK-LABEL: test_udiv_v4i32 | 933 ; CHECK-LABEL: test_udiv_v4i32 |
| 525 ; CHECK: div | 934 ; CHECK: div |
| 526 ; CHECK: div | 935 ; CHECK: div |
| 527 ; CHECK: div | 936 ; CHECK: div |
| 528 ; CHECK: div | 937 ; CHECK: div |
| 938 ; MIPS32-LABEL: test_udiv_v4i32 |
| 939 ; MIPS32: divu |
| 940 ; MIPS32: divu |
| 941 ; MIPS32: divu |
| 942 ; MIPS32: divu |
| 529 } | 943 } |
| 530 | 944 |
| 531 define internal <4 x i32> @test_sdiv_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) { | 945 define internal <4 x i32> @test_sdiv_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) { |
| 532 entry: | 946 entry: |
| 533 %res = sdiv <4 x i32> %arg0, %arg1 | 947 %res = sdiv <4 x i32> %arg0, %arg1 |
| 534 ret <4 x i32> %res | 948 ret <4 x i32> %res |
| 535 ; CHECK-LABEL: test_sdiv_v4i32 | 949 ; CHECK-LABEL: test_sdiv_v4i32 |
| 536 ; CHECK: idiv | 950 ; CHECK: idiv |
| 537 ; CHECK: idiv | 951 ; CHECK: idiv |
| 538 ; CHECK: idiv | 952 ; CHECK: idiv |
| 539 ; CHECK: idiv | 953 ; CHECK: idiv |
| 954 ; MIPS32-LABEL: test_sdiv_v4i32 |
| 955 ; MIPS32: div |
| 956 ; MIPS32: div |
| 957 ; MIPS32: div |
| 958 ; MIPS32: div |
| 540 } | 959 } |
| 541 | 960 |
| 542 define internal <4 x i32> @test_urem_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) { | 961 define internal <4 x i32> @test_urem_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) { |
| 543 entry: | 962 entry: |
| 544 %res = urem <4 x i32> %arg0, %arg1 | 963 %res = urem <4 x i32> %arg0, %arg1 |
| 545 ret <4 x i32> %res | 964 ret <4 x i32> %res |
| 546 ; CHECK-LABEL: test_urem_v4i32 | 965 ; CHECK-LABEL: test_urem_v4i32 |
| 547 ; CHECK: div | 966 ; CHECK: div |
| 548 ; CHECK: div | 967 ; CHECK: div |
| 549 ; CHECK: div | 968 ; CHECK: div |
| 550 ; CHECK: div | 969 ; CHECK: div |
| 970 ; MIPS32-LABEL: test_urem_v4i32 |
| 971 ; MIPS32: divu |
| 972 ; MIPS32: divu |
| 973 ; MIPS32: divu |
| 974 ; MIPS32: divu |
| 551 } | 975 } |
| 552 | 976 |
| 553 define internal <4 x i32> @test_srem_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) { | 977 define internal <4 x i32> @test_srem_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) { |
| 554 entry: | 978 entry: |
| 555 %res = srem <4 x i32> %arg0, %arg1 | 979 %res = srem <4 x i32> %arg0, %arg1 |
| 556 ret <4 x i32> %res | 980 ret <4 x i32> %res |
| 557 ; CHECK-LABEL: test_srem_v4i32 | 981 ; CHECK-LABEL: test_srem_v4i32 |
| 558 ; CHECK: idiv | 982 ; CHECK: idiv |
| 559 ; CHECK: idiv | 983 ; CHECK: idiv |
| 560 ; CHECK: idiv | 984 ; CHECK: idiv |
| 561 ; CHECK: idiv | 985 ; CHECK: idiv |
| 986 ; MIPS32-LABEL: test_srem_v4i32 |
| 987 ; MIPS32: div |
| 988 ; MIPS32: div |
| 989 ; MIPS32: div |
| 990 ; MIPS32: div |
| 562 } | 991 } |
| OLD | NEW |