1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596
|
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
; RUN: llc < %s -O3 -verify-machineinstrs -disable-wasm-fallthrough-return-opt -wasm-disable-explicit-locals -wasm-keep-registers -mattr=+simd128 | FileCheck %s
target triple = "wasm64"
define i16 @legal_bitcast_v16i8(<16 x i8> %x) {
; CHECK-LABEL: legal_bitcast_v16i8:
; CHECK: .functype legal_bitcast_v16i8 (v128) -> (i32)
; CHECK-NEXT: # %bb.0:
; CHECK-NEXT: v128.const $push0=, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16
; CHECK-NEXT: i8x16.eq $push1=, $0, $pop0
; CHECK-NEXT: i8x16.bitmask $push2=, $pop1
; CHECK-NEXT: return $pop2
%z = icmp eq <16 x i8> %x, splat (i8 16)
%res = bitcast <16 x i1> %z to i16
ret i16 %res
}
define i32 @optimize_illegal_bitcast_v32i8(<32 x i8> %x) {
; CHECK-LABEL: optimize_illegal_bitcast_v32i8:
; CHECK: .functype optimize_illegal_bitcast_v32i8 (v128, v128) -> (i32)
; CHECK-NEXT: # %bb.0:
; CHECK-NEXT: i32.const $push2=, 16
; CHECK-NEXT: v128.const $push10=, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32
; CHECK-NEXT: local.tee $push9=, $2=, $pop10
; CHECK-NEXT: i8x16.eq $push0=, $0, $pop9
; CHECK-NEXT: i8x16.bitmask $push1=, $pop0
; CHECK-NEXT: i32.const $push8=, 16
; CHECK-NEXT: i32.add $push3=, $pop1, $pop8
; CHECK-NEXT: i32.shl $push4=, $pop2, $pop3
; CHECK-NEXT: i8x16.eq $push5=, $1, $2
; CHECK-NEXT: i8x16.bitmask $push6=, $pop5
; CHECK-NEXT: i32.add $push7=, $pop4, $pop6
; CHECK-NEXT: return $pop7
%z = icmp eq <32 x i8> %x, splat (i8 32)
%res = bitcast <32 x i1> %z to i32
ret i32 %res
}
define i32 @optimize_illegal_bitcast_v32i8_const_step_vec(<32 x i8> %x) {
; CHECK-LABEL: optimize_illegal_bitcast_v32i8_const_step_vec:
; CHECK: .functype optimize_illegal_bitcast_v32i8_const_step_vec (v128, v128) -> (i32)
; CHECK-NEXT: # %bb.0:
; CHECK-NEXT: i32.const $push3=, 16
; CHECK-NEXT: v128.const $push0=, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16
; CHECK-NEXT: i8x16.eq $push1=, $0, $pop0
; CHECK-NEXT: i8x16.bitmask $push2=, $pop1
; CHECK-NEXT: i32.const $push10=, 16
; CHECK-NEXT: i32.add $push4=, $pop2, $pop10
; CHECK-NEXT: i32.shl $push5=, $pop3, $pop4
; CHECK-NEXT: v128.const $push6=, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32
; CHECK-NEXT: i8x16.eq $push7=, $1, $pop6
; CHECK-NEXT: i8x16.bitmask $push8=, $pop7
; CHECK-NEXT: i32.add $push9=, $pop5, $pop8
; CHECK-NEXT: return $pop9
%const_step_vec = add <32 x i8> <i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 8,
i8 9, i8 10, i8 11, i8 12, i8 13, i8 14, i8 15, i8 16,
i8 17, i8 18, i8 19, i8 20, i8 21, i8 22, i8 23, i8 24,
i8 25, i8 26, i8 27, i8 28, i8 29, i8 30, i8 31, i8 32>, zeroinitializer
%z = icmp eq <32 x i8> %x, %const_step_vec
%res = bitcast <32 x i1> %z to i32
ret i32 %res
}
define i32 @optimize_illegal_bitcast_v32i8_non_const_vec(<32 x i8> %x, <32 x i8> %y) {
; CHECK-LABEL: optimize_illegal_bitcast_v32i8_non_const_vec:
; CHECK: .functype optimize_illegal_bitcast_v32i8_non_const_vec (v128, v128, v128, v128) -> (i32)
; CHECK-NEXT: # %bb.0:
; CHECK-NEXT: i32.const $push2=, 16
; CHECK-NEXT: i8x16.eq $push0=, $0, $2
; CHECK-NEXT: i8x16.bitmask $push1=, $pop0
; CHECK-NEXT: i32.const $push8=, 16
; CHECK-NEXT: i32.add $push3=, $pop1, $pop8
; CHECK-NEXT: i32.shl $push4=, $pop2, $pop3
; CHECK-NEXT: i8x16.eq $push5=, $1, $3
; CHECK-NEXT: i8x16.bitmask $push6=, $pop5
; CHECK-NEXT: i32.add $push7=, $pop4, $pop6
; CHECK-NEXT: return $pop7
%z = icmp eq <32 x i8> %x, %y
%res = bitcast <32 x i1> %z to i32
ret i32 %res
}
define i64 @optimize_illegal_bitcast_v64i8(<64 x i8> %x) {
; CHECK-LABEL: optimize_illegal_bitcast_v64i8:
; CHECK: .functype optimize_illegal_bitcast_v64i8 (v128, v128, v128, v128) -> (i64)
; CHECK-NEXT: # %bb.0:
; CHECK-NEXT: i64.const $push3=, 16
; CHECK-NEXT: i64.const $push24=, 16
; CHECK-NEXT: i64.const $push23=, 16
; CHECK-NEXT: v128.const $push22=, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64
; CHECK-NEXT: local.tee $push21=, $4=, $pop22
; CHECK-NEXT: i8x16.eq $push0=, $0, $pop21
; CHECK-NEXT: i8x16.bitmask $push1=, $pop0
; CHECK-NEXT: i64.extend_i32_u $push2=, $pop1
; CHECK-NEXT: i64.const $push20=, 16
; CHECK-NEXT: i64.add $push4=, $pop2, $pop20
; CHECK-NEXT: i64.shl $push5=, $pop23, $pop4
; CHECK-NEXT: i8x16.eq $push6=, $1, $4
; CHECK-NEXT: i8x16.bitmask $push7=, $pop6
; CHECK-NEXT: i64.extend_i32_u $push8=, $pop7
; CHECK-NEXT: i64.add $push9=, $pop5, $pop8
; CHECK-NEXT: i64.shl $push10=, $pop24, $pop9
; CHECK-NEXT: i8x16.eq $push11=, $2, $4
; CHECK-NEXT: i8x16.bitmask $push12=, $pop11
; CHECK-NEXT: i64.extend_i32_u $push13=, $pop12
; CHECK-NEXT: i64.add $push14=, $pop10, $pop13
; CHECK-NEXT: i64.shl $push15=, $pop3, $pop14
; CHECK-NEXT: i8x16.eq $push16=, $3, $4
; CHECK-NEXT: i8x16.bitmask $push17=, $pop16
; CHECK-NEXT: i64.extend_i32_u $push18=, $pop17
; CHECK-NEXT: i64.add $push19=, $pop15, $pop18
; CHECK-NEXT: return $pop19
%z = icmp eq <64 x i8> %x, splat (i8 64)
%res = bitcast <64 x i1> %z to i64
ret i64 %res
}
define i64 @optimize_illegal_bitcast_v64i4(<64 x i4> %x) {
; CHECK-LABEL: optimize_illegal_bitcast_v64i4:
; CHECK: .functype optimize_illegal_bitcast_v64i4 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> (i64)
; CHECK-NEXT: # %bb.0:
; CHECK-NEXT: global.get $push355=, __stack_pointer
; CHECK-NEXT: i64.const $push356=, 16
; CHECK-NEXT: i64.sub $drop=, $pop355, $pop356
; CHECK-NEXT: i8x16.splat $push273=, $0
; CHECK-NEXT: i8x16.replace_lane $push274=, $pop273, 1, $1
; CHECK-NEXT: i8x16.replace_lane $push275=, $pop274, 2, $2
; CHECK-NEXT: i8x16.replace_lane $push276=, $pop275, 3, $3
; CHECK-NEXT: i8x16.replace_lane $push277=, $pop276, 4, $4
; CHECK-NEXT: i8x16.replace_lane $push278=, $pop277, 5, $5
; CHECK-NEXT: i8x16.replace_lane $push279=, $pop278, 6, $6
; CHECK-NEXT: i8x16.replace_lane $push280=, $pop279, 7, $7
; CHECK-NEXT: i8x16.replace_lane $push281=, $pop280, 8, $8
; CHECK-NEXT: i8x16.replace_lane $push282=, $pop281, 9, $9
; CHECK-NEXT: i8x16.replace_lane $push283=, $pop282, 10, $10
; CHECK-NEXT: i8x16.replace_lane $push284=, $pop283, 11, $11
; CHECK-NEXT: i8x16.replace_lane $push285=, $pop284, 12, $12
; CHECK-NEXT: i8x16.replace_lane $push286=, $pop285, 13, $13
; CHECK-NEXT: i8x16.replace_lane $push287=, $pop286, 14, $14
; CHECK-NEXT: i8x16.replace_lane $push288=, $pop287, 15, $15
; CHECK-NEXT: v128.const $push460=, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15
; CHECK-NEXT: local.tee $push459=, $64=, $pop460
; CHECK-NEXT: v128.and $push289=, $pop288, $pop459
; CHECK-NEXT: v128.const $push458=, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
; CHECK-NEXT: local.tee $push457=, $65=, $pop458
; CHECK-NEXT: i8x16.eq $push456=, $pop289, $pop457
; CHECK-NEXT: local.tee $push455=, $66=, $pop456
; CHECK-NEXT: i8x16.extract_lane_u $push290=, $pop455, 0
; CHECK-NEXT: i32.const $push18=, 1
; CHECK-NEXT: i32.and $push291=, $pop290, $pop18
; CHECK-NEXT: i8x16.extract_lane_u $push292=, $66, 1
; CHECK-NEXT: i32.const $push454=, 1
; CHECK-NEXT: i32.and $push293=, $pop292, $pop454
; CHECK-NEXT: i32.const $push453=, 1
; CHECK-NEXT: i32.shl $push294=, $pop293, $pop453
; CHECK-NEXT: i32.or $push295=, $pop291, $pop294
; CHECK-NEXT: i8x16.extract_lane_u $push296=, $66, 2
; CHECK-NEXT: i32.const $push452=, 1
; CHECK-NEXT: i32.and $push297=, $pop296, $pop452
; CHECK-NEXT: i32.const $push121=, 2
; CHECK-NEXT: i32.shl $push298=, $pop297, $pop121
; CHECK-NEXT: i32.or $push299=, $pop295, $pop298
; CHECK-NEXT: i8x16.extract_lane_u $push300=, $66, 3
; CHECK-NEXT: i32.const $push451=, 1
; CHECK-NEXT: i32.and $push301=, $pop300, $pop451
; CHECK-NEXT: i32.const $push126=, 3
; CHECK-NEXT: i32.shl $push302=, $pop301, $pop126
; CHECK-NEXT: i32.or $push303=, $pop299, $pop302
; CHECK-NEXT: i8x16.extract_lane_u $push304=, $66, 4
; CHECK-NEXT: i32.const $push450=, 1
; CHECK-NEXT: i32.and $push305=, $pop304, $pop450
; CHECK-NEXT: i32.const $push131=, 4
; CHECK-NEXT: i32.shl $push306=, $pop305, $pop131
; CHECK-NEXT: i32.or $push307=, $pop303, $pop306
; CHECK-NEXT: i8x16.extract_lane_u $push308=, $66, 5
; CHECK-NEXT: i32.const $push449=, 1
; CHECK-NEXT: i32.and $push309=, $pop308, $pop449
; CHECK-NEXT: i32.const $push136=, 5
; CHECK-NEXT: i32.shl $push310=, $pop309, $pop136
; CHECK-NEXT: i32.or $push311=, $pop307, $pop310
; CHECK-NEXT: i8x16.extract_lane_u $push312=, $66, 6
; CHECK-NEXT: i32.const $push448=, 1
; CHECK-NEXT: i32.and $push313=, $pop312, $pop448
; CHECK-NEXT: i32.const $push141=, 6
; CHECK-NEXT: i32.shl $push314=, $pop313, $pop141
; CHECK-NEXT: i32.or $push315=, $pop311, $pop314
; CHECK-NEXT: i8x16.extract_lane_u $push316=, $66, 7
; CHECK-NEXT: i32.const $push447=, 1
; CHECK-NEXT: i32.and $push317=, $pop316, $pop447
; CHECK-NEXT: i32.const $push146=, 7
; CHECK-NEXT: i32.shl $push318=, $pop317, $pop146
; CHECK-NEXT: i32.or $push319=, $pop315, $pop318
; CHECK-NEXT: i8x16.extract_lane_u $push320=, $66, 8
; CHECK-NEXT: i32.const $push446=, 1
; CHECK-NEXT: i32.and $push321=, $pop320, $pop446
; CHECK-NEXT: i32.const $push151=, 8
; CHECK-NEXT: i32.shl $push322=, $pop321, $pop151
; CHECK-NEXT: i32.or $push323=, $pop319, $pop322
; CHECK-NEXT: i8x16.extract_lane_u $push324=, $66, 9
; CHECK-NEXT: i32.const $push445=, 1
; CHECK-NEXT: i32.and $push325=, $pop324, $pop445
; CHECK-NEXT: i32.const $push156=, 9
; CHECK-NEXT: i32.shl $push326=, $pop325, $pop156
; CHECK-NEXT: i32.or $push327=, $pop323, $pop326
; CHECK-NEXT: i8x16.extract_lane_u $push328=, $66, 10
; CHECK-NEXT: i32.const $push444=, 1
; CHECK-NEXT: i32.and $push329=, $pop328, $pop444
; CHECK-NEXT: i32.const $push161=, 10
; CHECK-NEXT: i32.shl $push330=, $pop329, $pop161
; CHECK-NEXT: i32.or $push331=, $pop327, $pop330
; CHECK-NEXT: i8x16.extract_lane_u $push332=, $66, 11
; CHECK-NEXT: i32.const $push443=, 1
; CHECK-NEXT: i32.and $push333=, $pop332, $pop443
; CHECK-NEXT: i32.const $push166=, 11
; CHECK-NEXT: i32.shl $push334=, $pop333, $pop166
; CHECK-NEXT: i32.or $push335=, $pop331, $pop334
; CHECK-NEXT: i8x16.extract_lane_u $push336=, $66, 12
; CHECK-NEXT: i32.const $push442=, 1
; CHECK-NEXT: i32.and $push337=, $pop336, $pop442
; CHECK-NEXT: i32.const $push171=, 12
; CHECK-NEXT: i32.shl $push338=, $pop337, $pop171
; CHECK-NEXT: i32.or $push339=, $pop335, $pop338
; CHECK-NEXT: i8x16.extract_lane_u $push340=, $66, 13
; CHECK-NEXT: i32.const $push441=, 1
; CHECK-NEXT: i32.and $push341=, $pop340, $pop441
; CHECK-NEXT: i32.const $push176=, 13
; CHECK-NEXT: i32.shl $push342=, $pop341, $pop176
; CHECK-NEXT: i32.or $push343=, $pop339, $pop342
; CHECK-NEXT: i8x16.extract_lane_u $push344=, $66, 14
; CHECK-NEXT: i32.const $push440=, 1
; CHECK-NEXT: i32.and $push345=, $pop344, $pop440
; CHECK-NEXT: i32.const $push181=, 14
; CHECK-NEXT: i32.shl $push346=, $pop345, $pop181
; CHECK-NEXT: i32.or $push347=, $pop343, $pop346
; CHECK-NEXT: i8x16.extract_lane_u $push348=, $66, 15
; CHECK-NEXT: i32.const $push185=, 15
; CHECK-NEXT: i32.shl $push349=, $pop348, $pop185
; CHECK-NEXT: i32.or $push350=, $pop347, $pop349
; CHECK-NEXT: i32.const $push188=, 65535
; CHECK-NEXT: i32.and $push351=, $pop350, $pop188
; CHECK-NEXT: i8x16.splat $push194=, $16
; CHECK-NEXT: i8x16.replace_lane $push195=, $pop194, 1, $17
; CHECK-NEXT: i8x16.replace_lane $push196=, $pop195, 2, $18
; CHECK-NEXT: i8x16.replace_lane $push197=, $pop196, 3, $19
; CHECK-NEXT: i8x16.replace_lane $push198=, $pop197, 4, $20
; CHECK-NEXT: i8x16.replace_lane $push199=, $pop198, 5, $21
; CHECK-NEXT: i8x16.replace_lane $push200=, $pop199, 6, $22
; CHECK-NEXT: i8x16.replace_lane $push201=, $pop200, 7, $23
; CHECK-NEXT: i8x16.replace_lane $push202=, $pop201, 8, $24
; CHECK-NEXT: i8x16.replace_lane $push203=, $pop202, 9, $25
; CHECK-NEXT: i8x16.replace_lane $push204=, $pop203, 10, $26
; CHECK-NEXT: i8x16.replace_lane $push205=, $pop204, 11, $27
; CHECK-NEXT: i8x16.replace_lane $push206=, $pop205, 12, $28
; CHECK-NEXT: i8x16.replace_lane $push207=, $pop206, 13, $29
; CHECK-NEXT: i8x16.replace_lane $push208=, $pop207, 14, $30
; CHECK-NEXT: i8x16.replace_lane $push209=, $pop208, 15, $31
; CHECK-NEXT: v128.and $push210=, $pop209, $64
; CHECK-NEXT: i8x16.eq $push439=, $pop210, $65
; CHECK-NEXT: local.tee $push438=, $66=, $pop439
; CHECK-NEXT: i8x16.extract_lane_u $push270=, $pop438, 15
; CHECK-NEXT: i32.const $push93=, 31
; CHECK-NEXT: i32.shl $push271=, $pop270, $pop93
; CHECK-NEXT: i8x16.extract_lane_u $push266=, $66, 14
; CHECK-NEXT: i32.const $push437=, 1
; CHECK-NEXT: i32.and $push267=, $pop266, $pop437
; CHECK-NEXT: i32.const $push89=, 30
; CHECK-NEXT: i32.shl $push268=, $pop267, $pop89
; CHECK-NEXT: i8x16.extract_lane_u $push262=, $66, 13
; CHECK-NEXT: i32.const $push436=, 1
; CHECK-NEXT: i32.and $push263=, $pop262, $pop436
; CHECK-NEXT: i32.const $push84=, 29
; CHECK-NEXT: i32.shl $push264=, $pop263, $pop84
; CHECK-NEXT: i8x16.extract_lane_u $push258=, $66, 12
; CHECK-NEXT: i32.const $push435=, 1
; CHECK-NEXT: i32.and $push259=, $pop258, $pop435
; CHECK-NEXT: i32.const $push79=, 28
; CHECK-NEXT: i32.shl $push260=, $pop259, $pop79
; CHECK-NEXT: i8x16.extract_lane_u $push254=, $66, 11
; CHECK-NEXT: i32.const $push434=, 1
; CHECK-NEXT: i32.and $push255=, $pop254, $pop434
; CHECK-NEXT: i32.const $push74=, 27
; CHECK-NEXT: i32.shl $push256=, $pop255, $pop74
; CHECK-NEXT: i8x16.extract_lane_u $push250=, $66, 10
; CHECK-NEXT: i32.const $push433=, 1
; CHECK-NEXT: i32.and $push251=, $pop250, $pop433
; CHECK-NEXT: i32.const $push69=, 26
; CHECK-NEXT: i32.shl $push252=, $pop251, $pop69
; CHECK-NEXT: i8x16.extract_lane_u $push246=, $66, 9
; CHECK-NEXT: i32.const $push432=, 1
; CHECK-NEXT: i32.and $push247=, $pop246, $pop432
; CHECK-NEXT: i32.const $push64=, 25
; CHECK-NEXT: i32.shl $push248=, $pop247, $pop64
; CHECK-NEXT: i8x16.extract_lane_u $push242=, $66, 8
; CHECK-NEXT: i32.const $push431=, 1
; CHECK-NEXT: i32.and $push243=, $pop242, $pop431
; CHECK-NEXT: i32.const $push59=, 24
; CHECK-NEXT: i32.shl $push244=, $pop243, $pop59
; CHECK-NEXT: i8x16.extract_lane_u $push238=, $66, 7
; CHECK-NEXT: i32.const $push430=, 1
; CHECK-NEXT: i32.and $push239=, $pop238, $pop430
; CHECK-NEXT: i32.const $push54=, 23
; CHECK-NEXT: i32.shl $push240=, $pop239, $pop54
; CHECK-NEXT: i8x16.extract_lane_u $push234=, $66, 6
; CHECK-NEXT: i32.const $push429=, 1
; CHECK-NEXT: i32.and $push235=, $pop234, $pop429
; CHECK-NEXT: i32.const $push49=, 22
; CHECK-NEXT: i32.shl $push236=, $pop235, $pop49
; CHECK-NEXT: i8x16.extract_lane_u $push230=, $66, 5
; CHECK-NEXT: i32.const $push428=, 1
; CHECK-NEXT: i32.and $push231=, $pop230, $pop428
; CHECK-NEXT: i32.const $push44=, 21
; CHECK-NEXT: i32.shl $push232=, $pop231, $pop44
; CHECK-NEXT: i8x16.extract_lane_u $push226=, $66, 4
; CHECK-NEXT: i32.const $push427=, 1
; CHECK-NEXT: i32.and $push227=, $pop226, $pop427
; CHECK-NEXT: i32.const $push39=, 20
; CHECK-NEXT: i32.shl $push228=, $pop227, $pop39
; CHECK-NEXT: i8x16.extract_lane_u $push222=, $66, 3
; CHECK-NEXT: i32.const $push426=, 1
; CHECK-NEXT: i32.and $push223=, $pop222, $pop426
; CHECK-NEXT: i32.const $push34=, 19
; CHECK-NEXT: i32.shl $push224=, $pop223, $pop34
; CHECK-NEXT: i8x16.extract_lane_u $push218=, $66, 2
; CHECK-NEXT: i32.const $push425=, 1
; CHECK-NEXT: i32.and $push219=, $pop218, $pop425
; CHECK-NEXT: i32.const $push29=, 18
; CHECK-NEXT: i32.shl $push220=, $pop219, $pop29
; CHECK-NEXT: i8x16.extract_lane_u $push214=, $66, 1
; CHECK-NEXT: i32.const $push424=, 1
; CHECK-NEXT: i32.and $push215=, $pop214, $pop424
; CHECK-NEXT: i32.const $push24=, 17
; CHECK-NEXT: i32.shl $push216=, $pop215, $pop24
; CHECK-NEXT: i8x16.extract_lane_u $push211=, $66, 0
; CHECK-NEXT: i32.const $push423=, 1
; CHECK-NEXT: i32.and $push212=, $pop211, $pop423
; CHECK-NEXT: i32.const $push20=, 16
; CHECK-NEXT: i32.shl $push213=, $pop212, $pop20
; CHECK-NEXT: i32.or $push217=, $pop216, $pop213
; CHECK-NEXT: i32.or $push221=, $pop220, $pop217
; CHECK-NEXT: i32.or $push225=, $pop224, $pop221
; CHECK-NEXT: i32.or $push229=, $pop228, $pop225
; CHECK-NEXT: i32.or $push233=, $pop232, $pop229
; CHECK-NEXT: i32.or $push237=, $pop236, $pop233
; CHECK-NEXT: i32.or $push241=, $pop240, $pop237
; CHECK-NEXT: i32.or $push245=, $pop244, $pop241
; CHECK-NEXT: i32.or $push249=, $pop248, $pop245
; CHECK-NEXT: i32.or $push253=, $pop252, $pop249
; CHECK-NEXT: i32.or $push257=, $pop256, $pop253
; CHECK-NEXT: i32.or $push261=, $pop260, $pop257
; CHECK-NEXT: i32.or $push265=, $pop264, $pop261
; CHECK-NEXT: i32.or $push269=, $pop268, $pop265
; CHECK-NEXT: i32.or $push272=, $pop271, $pop269
; CHECK-NEXT: i32.or $push352=, $pop351, $pop272
; CHECK-NEXT: i64.extend_i32_u $push353=, $pop352
; CHECK-NEXT: i8x16.splat $push96=, $32
; CHECK-NEXT: i8x16.replace_lane $push97=, $pop96, 1, $33
; CHECK-NEXT: i8x16.replace_lane $push98=, $pop97, 2, $34
; CHECK-NEXT: i8x16.replace_lane $push99=, $pop98, 3, $35
; CHECK-NEXT: i8x16.replace_lane $push100=, $pop99, 4, $36
; CHECK-NEXT: i8x16.replace_lane $push101=, $pop100, 5, $37
; CHECK-NEXT: i8x16.replace_lane $push102=, $pop101, 6, $38
; CHECK-NEXT: i8x16.replace_lane $push103=, $pop102, 7, $39
; CHECK-NEXT: i8x16.replace_lane $push104=, $pop103, 8, $40
; CHECK-NEXT: i8x16.replace_lane $push105=, $pop104, 9, $41
; CHECK-NEXT: i8x16.replace_lane $push106=, $pop105, 10, $42
; CHECK-NEXT: i8x16.replace_lane $push107=, $pop106, 11, $43
; CHECK-NEXT: i8x16.replace_lane $push108=, $pop107, 12, $44
; CHECK-NEXT: i8x16.replace_lane $push109=, $pop108, 13, $45
; CHECK-NEXT: i8x16.replace_lane $push110=, $pop109, 14, $46
; CHECK-NEXT: i8x16.replace_lane $push111=, $pop110, 15, $47
; CHECK-NEXT: v128.and $push112=, $pop111, $64
; CHECK-NEXT: i8x16.eq $push422=, $pop112, $65
; CHECK-NEXT: local.tee $push421=, $66=, $pop422
; CHECK-NEXT: i8x16.extract_lane_u $push113=, $pop421, 0
; CHECK-NEXT: i32.const $push420=, 1
; CHECK-NEXT: i32.and $push114=, $pop113, $pop420
; CHECK-NEXT: i8x16.extract_lane_u $push115=, $66, 1
; CHECK-NEXT: i32.const $push419=, 1
; CHECK-NEXT: i32.and $push116=, $pop115, $pop419
; CHECK-NEXT: i32.const $push418=, 1
; CHECK-NEXT: i32.shl $push117=, $pop116, $pop418
; CHECK-NEXT: i32.or $push118=, $pop114, $pop117
; CHECK-NEXT: i8x16.extract_lane_u $push119=, $66, 2
; CHECK-NEXT: i32.const $push417=, 1
; CHECK-NEXT: i32.and $push120=, $pop119, $pop417
; CHECK-NEXT: i32.const $push416=, 2
; CHECK-NEXT: i32.shl $push122=, $pop120, $pop416
; CHECK-NEXT: i32.or $push123=, $pop118, $pop122
; CHECK-NEXT: i8x16.extract_lane_u $push124=, $66, 3
; CHECK-NEXT: i32.const $push415=, 1
; CHECK-NEXT: i32.and $push125=, $pop124, $pop415
; CHECK-NEXT: i32.const $push414=, 3
; CHECK-NEXT: i32.shl $push127=, $pop125, $pop414
; CHECK-NEXT: i32.or $push128=, $pop123, $pop127
; CHECK-NEXT: i8x16.extract_lane_u $push129=, $66, 4
; CHECK-NEXT: i32.const $push413=, 1
; CHECK-NEXT: i32.and $push130=, $pop129, $pop413
; CHECK-NEXT: i32.const $push412=, 4
; CHECK-NEXT: i32.shl $push132=, $pop130, $pop412
; CHECK-NEXT: i32.or $push133=, $pop128, $pop132
; CHECK-NEXT: i8x16.extract_lane_u $push134=, $66, 5
; CHECK-NEXT: i32.const $push411=, 1
; CHECK-NEXT: i32.and $push135=, $pop134, $pop411
; CHECK-NEXT: i32.const $push410=, 5
; CHECK-NEXT: i32.shl $push137=, $pop135, $pop410
; CHECK-NEXT: i32.or $push138=, $pop133, $pop137
; CHECK-NEXT: i8x16.extract_lane_u $push139=, $66, 6
; CHECK-NEXT: i32.const $push409=, 1
; CHECK-NEXT: i32.and $push140=, $pop139, $pop409
; CHECK-NEXT: i32.const $push408=, 6
; CHECK-NEXT: i32.shl $push142=, $pop140, $pop408
; CHECK-NEXT: i32.or $push143=, $pop138, $pop142
; CHECK-NEXT: i8x16.extract_lane_u $push144=, $66, 7
; CHECK-NEXT: i32.const $push407=, 1
; CHECK-NEXT: i32.and $push145=, $pop144, $pop407
; CHECK-NEXT: i32.const $push406=, 7
; CHECK-NEXT: i32.shl $push147=, $pop145, $pop406
; CHECK-NEXT: i32.or $push148=, $pop143, $pop147
; CHECK-NEXT: i8x16.extract_lane_u $push149=, $66, 8
; CHECK-NEXT: i32.const $push405=, 1
; CHECK-NEXT: i32.and $push150=, $pop149, $pop405
; CHECK-NEXT: i32.const $push404=, 8
; CHECK-NEXT: i32.shl $push152=, $pop150, $pop404
; CHECK-NEXT: i32.or $push153=, $pop148, $pop152
; CHECK-NEXT: i8x16.extract_lane_u $push154=, $66, 9
; CHECK-NEXT: i32.const $push403=, 1
; CHECK-NEXT: i32.and $push155=, $pop154, $pop403
; CHECK-NEXT: i32.const $push402=, 9
; CHECK-NEXT: i32.shl $push157=, $pop155, $pop402
; CHECK-NEXT: i32.or $push158=, $pop153, $pop157
; CHECK-NEXT: i8x16.extract_lane_u $push159=, $66, 10
; CHECK-NEXT: i32.const $push401=, 1
; CHECK-NEXT: i32.and $push160=, $pop159, $pop401
; CHECK-NEXT: i32.const $push400=, 10
; CHECK-NEXT: i32.shl $push162=, $pop160, $pop400
; CHECK-NEXT: i32.or $push163=, $pop158, $pop162
; CHECK-NEXT: i8x16.extract_lane_u $push164=, $66, 11
; CHECK-NEXT: i32.const $push399=, 1
; CHECK-NEXT: i32.and $push165=, $pop164, $pop399
; CHECK-NEXT: i32.const $push398=, 11
; CHECK-NEXT: i32.shl $push167=, $pop165, $pop398
; CHECK-NEXT: i32.or $push168=, $pop163, $pop167
; CHECK-NEXT: i8x16.extract_lane_u $push169=, $66, 12
; CHECK-NEXT: i32.const $push397=, 1
; CHECK-NEXT: i32.and $push170=, $pop169, $pop397
; CHECK-NEXT: i32.const $push396=, 12
; CHECK-NEXT: i32.shl $push172=, $pop170, $pop396
; CHECK-NEXT: i32.or $push173=, $pop168, $pop172
; CHECK-NEXT: i8x16.extract_lane_u $push174=, $66, 13
; CHECK-NEXT: i32.const $push395=, 1
; CHECK-NEXT: i32.and $push175=, $pop174, $pop395
; CHECK-NEXT: i32.const $push394=, 13
; CHECK-NEXT: i32.shl $push177=, $pop175, $pop394
; CHECK-NEXT: i32.or $push178=, $pop173, $pop177
; CHECK-NEXT: i8x16.extract_lane_u $push179=, $66, 14
; CHECK-NEXT: i32.const $push393=, 1
; CHECK-NEXT: i32.and $push180=, $pop179, $pop393
; CHECK-NEXT: i32.const $push392=, 14
; CHECK-NEXT: i32.shl $push182=, $pop180, $pop392
; CHECK-NEXT: i32.or $push183=, $pop178, $pop182
; CHECK-NEXT: i8x16.extract_lane_u $push184=, $66, 15
; CHECK-NEXT: i32.const $push391=, 15
; CHECK-NEXT: i32.shl $push186=, $pop184, $pop391
; CHECK-NEXT: i32.or $push187=, $pop183, $pop186
; CHECK-NEXT: i32.const $push390=, 65535
; CHECK-NEXT: i32.and $push189=, $pop187, $pop390
; CHECK-NEXT: i8x16.splat $push0=, $48
; CHECK-NEXT: i8x16.replace_lane $push1=, $pop0, 1, $49
; CHECK-NEXT: i8x16.replace_lane $push2=, $pop1, 2, $50
; CHECK-NEXT: i8x16.replace_lane $push3=, $pop2, 3, $51
; CHECK-NEXT: i8x16.replace_lane $push4=, $pop3, 4, $52
; CHECK-NEXT: i8x16.replace_lane $push5=, $pop4, 5, $53
; CHECK-NEXT: i8x16.replace_lane $push6=, $pop5, 6, $54
; CHECK-NEXT: i8x16.replace_lane $push7=, $pop6, 7, $55
; CHECK-NEXT: i8x16.replace_lane $push8=, $pop7, 8, $56
; CHECK-NEXT: i8x16.replace_lane $push9=, $pop8, 9, $57
; CHECK-NEXT: i8x16.replace_lane $push10=, $pop9, 10, $58
; CHECK-NEXT: i8x16.replace_lane $push11=, $pop10, 11, $59
; CHECK-NEXT: i8x16.replace_lane $push12=, $pop11, 12, $60
; CHECK-NEXT: i8x16.replace_lane $push13=, $pop12, 13, $61
; CHECK-NEXT: i8x16.replace_lane $push14=, $pop13, 14, $62
; CHECK-NEXT: i8x16.replace_lane $push15=, $pop14, 15, $63
; CHECK-NEXT: v128.and $push16=, $pop15, $64
; CHECK-NEXT: i8x16.eq $push389=, $pop16, $65
; CHECK-NEXT: local.tee $push388=, $66=, $pop389
; CHECK-NEXT: i8x16.extract_lane_u $push92=, $pop388, 15
; CHECK-NEXT: i32.const $push387=, 31
; CHECK-NEXT: i32.shl $push94=, $pop92, $pop387
; CHECK-NEXT: i8x16.extract_lane_u $push87=, $66, 14
; CHECK-NEXT: i32.const $push386=, 1
; CHECK-NEXT: i32.and $push88=, $pop87, $pop386
; CHECK-NEXT: i32.const $push385=, 30
; CHECK-NEXT: i32.shl $push90=, $pop88, $pop385
; CHECK-NEXT: i8x16.extract_lane_u $push82=, $66, 13
; CHECK-NEXT: i32.const $push384=, 1
; CHECK-NEXT: i32.and $push83=, $pop82, $pop384
; CHECK-NEXT: i32.const $push383=, 29
; CHECK-NEXT: i32.shl $push85=, $pop83, $pop383
; CHECK-NEXT: i8x16.extract_lane_u $push77=, $66, 12
; CHECK-NEXT: i32.const $push382=, 1
; CHECK-NEXT: i32.and $push78=, $pop77, $pop382
; CHECK-NEXT: i32.const $push381=, 28
; CHECK-NEXT: i32.shl $push80=, $pop78, $pop381
; CHECK-NEXT: i8x16.extract_lane_u $push72=, $66, 11
; CHECK-NEXT: i32.const $push380=, 1
; CHECK-NEXT: i32.and $push73=, $pop72, $pop380
; CHECK-NEXT: i32.const $push379=, 27
; CHECK-NEXT: i32.shl $push75=, $pop73, $pop379
; CHECK-NEXT: i8x16.extract_lane_u $push67=, $66, 10
; CHECK-NEXT: i32.const $push378=, 1
; CHECK-NEXT: i32.and $push68=, $pop67, $pop378
; CHECK-NEXT: i32.const $push377=, 26
; CHECK-NEXT: i32.shl $push70=, $pop68, $pop377
; CHECK-NEXT: i8x16.extract_lane_u $push62=, $66, 9
; CHECK-NEXT: i32.const $push376=, 1
; CHECK-NEXT: i32.and $push63=, $pop62, $pop376
; CHECK-NEXT: i32.const $push375=, 25
; CHECK-NEXT: i32.shl $push65=, $pop63, $pop375
; CHECK-NEXT: i8x16.extract_lane_u $push57=, $66, 8
; CHECK-NEXT: i32.const $push374=, 1
; CHECK-NEXT: i32.and $push58=, $pop57, $pop374
; CHECK-NEXT: i32.const $push373=, 24
; CHECK-NEXT: i32.shl $push60=, $pop58, $pop373
; CHECK-NEXT: i8x16.extract_lane_u $push52=, $66, 7
; CHECK-NEXT: i32.const $push372=, 1
; CHECK-NEXT: i32.and $push53=, $pop52, $pop372
; CHECK-NEXT: i32.const $push371=, 23
; CHECK-NEXT: i32.shl $push55=, $pop53, $pop371
; CHECK-NEXT: i8x16.extract_lane_u $push47=, $66, 6
; CHECK-NEXT: i32.const $push370=, 1
; CHECK-NEXT: i32.and $push48=, $pop47, $pop370
; CHECK-NEXT: i32.const $push369=, 22
; CHECK-NEXT: i32.shl $push50=, $pop48, $pop369
; CHECK-NEXT: i8x16.extract_lane_u $push42=, $66, 5
; CHECK-NEXT: i32.const $push368=, 1
; CHECK-NEXT: i32.and $push43=, $pop42, $pop368
; CHECK-NEXT: i32.const $push367=, 21
; CHECK-NEXT: i32.shl $push45=, $pop43, $pop367
; CHECK-NEXT: i8x16.extract_lane_u $push37=, $66, 4
; CHECK-NEXT: i32.const $push366=, 1
; CHECK-NEXT: i32.and $push38=, $pop37, $pop366
; CHECK-NEXT: i32.const $push365=, 20
; CHECK-NEXT: i32.shl $push40=, $pop38, $pop365
; CHECK-NEXT: i8x16.extract_lane_u $push32=, $66, 3
; CHECK-NEXT: i32.const $push364=, 1
; CHECK-NEXT: i32.and $push33=, $pop32, $pop364
; CHECK-NEXT: i32.const $push363=, 19
; CHECK-NEXT: i32.shl $push35=, $pop33, $pop363
; CHECK-NEXT: i8x16.extract_lane_u $push27=, $66, 2
; CHECK-NEXT: i32.const $push362=, 1
; CHECK-NEXT: i32.and $push28=, $pop27, $pop362
; CHECK-NEXT: i32.const $push361=, 18
; CHECK-NEXT: i32.shl $push30=, $pop28, $pop361
; CHECK-NEXT: i8x16.extract_lane_u $push22=, $66, 1
; CHECK-NEXT: i32.const $push360=, 1
; CHECK-NEXT: i32.and $push23=, $pop22, $pop360
; CHECK-NEXT: i32.const $push359=, 17
; CHECK-NEXT: i32.shl $push25=, $pop23, $pop359
; CHECK-NEXT: i8x16.extract_lane_u $push17=, $66, 0
; CHECK-NEXT: i32.const $push358=, 1
; CHECK-NEXT: i32.and $push19=, $pop17, $pop358
; CHECK-NEXT: i32.const $push357=, 16
; CHECK-NEXT: i32.shl $push21=, $pop19, $pop357
; CHECK-NEXT: i32.or $push26=, $pop25, $pop21
; CHECK-NEXT: i32.or $push31=, $pop30, $pop26
; CHECK-NEXT: i32.or $push36=, $pop35, $pop31
; CHECK-NEXT: i32.or $push41=, $pop40, $pop36
; CHECK-NEXT: i32.or $push46=, $pop45, $pop41
; CHECK-NEXT: i32.or $push51=, $pop50, $pop46
; CHECK-NEXT: i32.or $push56=, $pop55, $pop51
; CHECK-NEXT: i32.or $push61=, $pop60, $pop56
; CHECK-NEXT: i32.or $push66=, $pop65, $pop61
; CHECK-NEXT: i32.or $push71=, $pop70, $pop66
; CHECK-NEXT: i32.or $push76=, $pop75, $pop71
; CHECK-NEXT: i32.or $push81=, $pop80, $pop76
; CHECK-NEXT: i32.or $push86=, $pop85, $pop81
; CHECK-NEXT: i32.or $push91=, $pop90, $pop86
; CHECK-NEXT: i32.or $push95=, $pop94, $pop91
; CHECK-NEXT: i32.or $push190=, $pop189, $pop95
; CHECK-NEXT: i64.extend_i32_u $push191=, $pop190
; CHECK-NEXT: i64.const $push192=, 32
; CHECK-NEXT: i64.shl $push193=, $pop191, $pop192
; CHECK-NEXT: i64.or $push354=, $pop353, $pop193
; CHECK-NEXT: return $pop354
%z = icmp eq <64 x i4> %x, splat (i4 64)
%res = bitcast <64 x i1> %z to i64
ret i64 %res
}
|