|
8 | 8 | ; CHECK-GI-NEXT: warning: Instruction selection used fallback path for v3f64_i32
|
9 | 9 | ; CHECK-GI-NEXT: warning: Instruction selection used fallback path for v3f32_float
|
10 | 10 | ; CHECK-GI-NEXT: warning: Instruction selection used fallback path for v3f32_i32
|
11 |
| -; CHECK-GI-NEXT: warning: Instruction selection used fallback path for v7f16_half |
| 11 | +; CHECK-GI-FP16-NEXT: warning: Instruction selection used fallback path for v7f16_half |
12 | 12 | ; CHECK-GI-FP16-NEXT: warning: Instruction selection used fallback path for v16f16_half
|
13 |
| -; CHECK-GI-NEXT: warning: Instruction selection used fallback path for v7f16_i32 |
| 13 | +; CHECK-GI-FP16-NEXT: warning: Instruction selection used fallback path for v7f16_i32 |
14 | 14 | ; CHECK-GI-FP16-NEXT: warning: Instruction selection used fallback path for v16f16_i32
|
15 | 15 |
|
16 | 16 | define double @f64_double(double %a, double %b, double %d, double %e) {
|
@@ -437,62 +437,87 @@ define <7 x half> @v7f16_half(<7 x half> %a, <7 x half> %b, <7 x half> %d, <7 x
|
437 | 437 | ;
|
438 | 438 | ; CHECK-GI-NOFP16-LABEL: v7f16_half:
|
439 | 439 | ; CHECK-GI-NOFP16: // %bb.0: // %entry
|
440 |
| -; CHECK-GI-NOFP16-NEXT: mov h4, v1.h[1] |
441 |
| -; CHECK-GI-NOFP16-NEXT: mov h5, v0.h[1] |
442 |
| -; CHECK-GI-NOFP16-NEXT: fcvt s6, h1 |
443 |
| -; CHECK-GI-NOFP16-NEXT: fcvt s7, h0 |
444 |
| -; CHECK-GI-NOFP16-NEXT: mov h16, v1.h[2] |
445 |
| -; CHECK-GI-NOFP16-NEXT: fcvt s4, h4 |
| 440 | +; CHECK-GI-NOFP16-NEXT: mov h4, v0.h[1] |
| 441 | +; CHECK-GI-NOFP16-NEXT: mov h5, v1.h[1] |
| 442 | +; CHECK-GI-NOFP16-NEXT: mov w9, #15 // =0xf |
| 443 | +; CHECK-GI-NOFP16-NEXT: fcvt s6, h0 |
| 444 | +; CHECK-GI-NOFP16-NEXT: fcvt s7, h1 |
| 445 | +; CHECK-GI-NOFP16-NEXT: mov h16, v0.h[2] |
| 446 | +; CHECK-GI-NOFP16-NEXT: mov h17, v1.h[2] |
| 447 | +; CHECK-GI-NOFP16-NEXT: mov h19, v1.h[4] |
| 448 | +; CHECK-GI-NOFP16-NEXT: mov h20, v1.h[5] |
| 449 | +; CHECK-GI-NOFP16-NEXT: fcvt s18, h4 |
446 | 450 | ; CHECK-GI-NOFP16-NEXT: fcvt s5, h5
|
447 |
| -; CHECK-GI-NOFP16-NEXT: fcmp s5, s4 |
448 |
| -; CHECK-GI-NOFP16-NEXT: mov h4, v0.h[2] |
449 |
| -; CHECK-GI-NOFP16-NEXT: mov h5, v1.h[3] |
450 |
| -; CHECK-GI-NOFP16-NEXT: csetm w8, mi |
451 |
| -; CHECK-GI-NOFP16-NEXT: fcmp s7, s6 |
| 451 | +; CHECK-GI-NOFP16-NEXT: mov h4, v0.h[3] |
| 452 | +; CHECK-GI-NOFP16-NEXT: fcmp s6, s7 |
452 | 453 | ; CHECK-GI-NOFP16-NEXT: fcvt s7, h16
|
453 |
| -; CHECK-GI-NOFP16-NEXT: fcvt s4, h4 |
454 |
| -; CHECK-GI-NOFP16-NEXT: mov h6, v0.h[3] |
455 |
| -; CHECK-GI-NOFP16-NEXT: fcvt s5, h5 |
456 |
| -; CHECK-GI-NOFP16-NEXT: mov h16, v0.h[4] |
457 |
| -; CHECK-GI-NOFP16-NEXT: csetm w9, mi |
458 |
| -; CHECK-GI-NOFP16-NEXT: fcmp s4, s7 |
459 |
| -; CHECK-GI-NOFP16-NEXT: fmov s4, w9 |
460 |
| -; CHECK-GI-NOFP16-NEXT: fcvt s6, h6 |
461 |
| -; CHECK-GI-NOFP16-NEXT: mov h7, v1.h[4] |
462 |
| -; CHECK-GI-NOFP16-NEXT: fcvt s16, h16 |
463 |
| -; CHECK-GI-NOFP16-NEXT: mov v4.h[1], w8 |
464 |
| -; CHECK-GI-NOFP16-NEXT: csetm w8, mi |
465 |
| -; CHECK-GI-NOFP16-NEXT: fcmp s6, s5 |
466 |
| -; CHECK-GI-NOFP16-NEXT: mov h5, v1.h[5] |
467 |
| -; CHECK-GI-NOFP16-NEXT: mov h6, v0.h[5] |
468 |
| -; CHECK-GI-NOFP16-NEXT: fcvt s7, h7 |
469 |
| -; CHECK-GI-NOFP16-NEXT: mov v4.h[2], w8 |
470 |
| -; CHECK-GI-NOFP16-NEXT: csetm w8, mi |
471 |
| -; CHECK-GI-NOFP16-NEXT: fcvt s5, h5 |
472 |
| -; CHECK-GI-NOFP16-NEXT: fcvt s6, h6 |
473 |
| -; CHECK-GI-NOFP16-NEXT: fcmp s16, s7 |
474 |
| -; CHECK-GI-NOFP16-NEXT: mov h7, v1.h[6] |
475 |
| -; CHECK-GI-NOFP16-NEXT: mov h16, v0.h[6] |
476 |
| -; CHECK-GI-NOFP16-NEXT: mov h1, v1.h[7] |
477 |
| -; CHECK-GI-NOFP16-NEXT: mov h0, v0.h[7] |
478 |
| -; CHECK-GI-NOFP16-NEXT: mov v4.h[3], w8 |
479 |
| -; CHECK-GI-NOFP16-NEXT: csetm w8, mi |
480 |
| -; CHECK-GI-NOFP16-NEXT: fcmp s6, s5 |
481 |
| -; CHECK-GI-NOFP16-NEXT: fcvt s5, h7 |
482 |
| -; CHECK-GI-NOFP16-NEXT: fcvt s6, h16 |
| 454 | +; CHECK-GI-NOFP16-NEXT: fmov s6, w9 |
| 455 | +; CHECK-GI-NOFP16-NEXT: fcvt s16, h17 |
| 456 | +; CHECK-GI-NOFP16-NEXT: mov h17, v1.h[3] |
| 457 | +; CHECK-GI-NOFP16-NEXT: fcvt s19, h19 |
| 458 | +; CHECK-GI-NOFP16-NEXT: mov h1, v1.h[6] |
| 459 | +; CHECK-GI-NOFP16-NEXT: cset w8, mi |
| 460 | +; CHECK-GI-NOFP16-NEXT: fcmp s18, s5 |
| 461 | +; CHECK-GI-NOFP16-NEXT: mov h18, v0.h[4] |
| 462 | +; CHECK-GI-NOFP16-NEXT: fmov s5, w8 |
| 463 | +; CHECK-GI-NOFP16-NEXT: cset w9, mi |
| 464 | +; CHECK-GI-NOFP16-NEXT: fcmp s7, s16 |
| 465 | +; CHECK-GI-NOFP16-NEXT: fcvt s7, h4 |
| 466 | +; CHECK-GI-NOFP16-NEXT: fcvt s16, h17 |
| 467 | +; CHECK-GI-NOFP16-NEXT: fmov s17, w9 |
| 468 | +; CHECK-GI-NOFP16-NEXT: mov v4.16b, v6.16b |
| 469 | +; CHECK-GI-NOFP16-NEXT: fcvt s18, h18 |
483 | 470 | ; CHECK-GI-NOFP16-NEXT: fcvt s1, h1
|
| 471 | +; CHECK-GI-NOFP16-NEXT: cset w8, mi |
| 472 | +; CHECK-GI-NOFP16-NEXT: mov v5.h[1], v17.h[0] |
| 473 | +; CHECK-GI-NOFP16-NEXT: mov v4.h[1], v6.h[0] |
| 474 | +; CHECK-GI-NOFP16-NEXT: mov h17, v0.h[5] |
| 475 | +; CHECK-GI-NOFP16-NEXT: fcmp s7, s16 |
| 476 | +; CHECK-GI-NOFP16-NEXT: fmov s7, w8 |
| 477 | +; CHECK-GI-NOFP16-NEXT: mov w8, #65535 // =0xffff |
| 478 | +; CHECK-GI-NOFP16-NEXT: mov h0, v0.h[6] |
| 479 | +; CHECK-GI-NOFP16-NEXT: mov v5.h[2], v7.h[0] |
| 480 | +; CHECK-GI-NOFP16-NEXT: fmov s7, w8 |
| 481 | +; CHECK-GI-NOFP16-NEXT: mov v4.h[2], v6.h[0] |
| 482 | +; CHECK-GI-NOFP16-NEXT: cset w8, mi |
| 483 | +; CHECK-GI-NOFP16-NEXT: fcmp s18, s19 |
| 484 | +; CHECK-GI-NOFP16-NEXT: fcvt s17, h17 |
| 485 | +; CHECK-GI-NOFP16-NEXT: fcvt s18, h20 |
| 486 | +; CHECK-GI-NOFP16-NEXT: fmov s19, w8 |
484 | 487 | ; CHECK-GI-NOFP16-NEXT: fcvt s0, h0
|
485 |
| -; CHECK-GI-NOFP16-NEXT: mov v4.h[4], w8 |
486 |
| -; CHECK-GI-NOFP16-NEXT: csetm w8, mi |
487 |
| -; CHECK-GI-NOFP16-NEXT: fcmp s6, s5 |
488 |
| -; CHECK-GI-NOFP16-NEXT: mov v4.h[5], w8 |
489 |
| -; CHECK-GI-NOFP16-NEXT: csetm w8, mi |
| 488 | +; CHECK-GI-NOFP16-NEXT: mov v16.16b, v7.16b |
| 489 | +; CHECK-GI-NOFP16-NEXT: mov v4.h[3], v6.h[0] |
| 490 | +; CHECK-GI-NOFP16-NEXT: cset w8, mi |
| 491 | +; CHECK-GI-NOFP16-NEXT: mov v5.h[3], v19.h[0] |
| 492 | +; CHECK-GI-NOFP16-NEXT: mov v16.h[1], v7.h[0] |
| 493 | +; CHECK-GI-NOFP16-NEXT: fcmp s17, s18 |
| 494 | +; CHECK-GI-NOFP16-NEXT: fmov s17, w8 |
| 495 | +; CHECK-GI-NOFP16-NEXT: mov v4.h[4], v6.h[0] |
| 496 | +; CHECK-GI-NOFP16-NEXT: mov v5.h[4], v17.h[0] |
| 497 | +; CHECK-GI-NOFP16-NEXT: cset w8, mi |
490 | 498 | ; CHECK-GI-NOFP16-NEXT: fcmp s0, s1
|
491 |
| -; CHECK-GI-NOFP16-NEXT: mov v4.h[6], w8 |
492 |
| -; CHECK-GI-NOFP16-NEXT: csetm w8, mi |
493 |
| -; CHECK-GI-NOFP16-NEXT: mov v4.h[7], w8 |
494 |
| -; CHECK-GI-NOFP16-NEXT: mov v0.16b, v4.16b |
495 |
| -; CHECK-GI-NOFP16-NEXT: bsl v0.16b, v2.16b, v3.16b |
| 499 | +; CHECK-GI-NOFP16-NEXT: mov v16.h[2], v7.h[0] |
| 500 | +; CHECK-GI-NOFP16-NEXT: fmov s0, w8 |
| 501 | +; CHECK-GI-NOFP16-NEXT: mov v4.h[5], v6.h[0] |
| 502 | +; CHECK-GI-NOFP16-NEXT: cset w8, mi |
| 503 | +; CHECK-GI-NOFP16-NEXT: mov v5.h[5], v0.h[0] |
| 504 | +; CHECK-GI-NOFP16-NEXT: fmov s0, w8 |
| 505 | +; CHECK-GI-NOFP16-NEXT: mov v16.h[3], v7.h[0] |
| 506 | +; CHECK-GI-NOFP16-NEXT: mov v4.h[6], v6.h[0] |
| 507 | +; CHECK-GI-NOFP16-NEXT: mov v5.h[6], v0.h[0] |
| 508 | +; CHECK-GI-NOFP16-NEXT: mov v16.h[4], v7.h[0] |
| 509 | +; CHECK-GI-NOFP16-NEXT: mov v4.h[7], v0.h[0] |
| 510 | +; CHECK-GI-NOFP16-NEXT: mov v5.h[7], v0.h[0] |
| 511 | +; CHECK-GI-NOFP16-NEXT: mov v16.h[5], v7.h[0] |
| 512 | +; CHECK-GI-NOFP16-NEXT: neg v0.8h, v4.8h |
| 513 | +; CHECK-GI-NOFP16-NEXT: ushl v1.8h, v5.8h, v4.8h |
| 514 | +; CHECK-GI-NOFP16-NEXT: mov v16.h[6], v7.h[0] |
| 515 | +; CHECK-GI-NOFP16-NEXT: mov v16.h[7], v0.h[0] |
| 516 | +; CHECK-GI-NOFP16-NEXT: sshl v0.8h, v1.8h, v0.8h |
| 517 | +; CHECK-GI-NOFP16-NEXT: eor v1.16b, v0.16b, v16.16b |
| 518 | +; CHECK-GI-NOFP16-NEXT: and v0.16b, v2.16b, v0.16b |
| 519 | +; CHECK-GI-NOFP16-NEXT: and v1.16b, v3.16b, v1.16b |
| 520 | +; CHECK-GI-NOFP16-NEXT: orr v0.16b, v0.16b, v1.16b |
496 | 521 | ; CHECK-GI-NOFP16-NEXT: ret
|
497 | 522 | ;
|
498 | 523 | ; CHECK-GI-FP16-LABEL: v7f16_half:
|
@@ -1112,90 +1137,110 @@ define <7 x i32> @v7f16_i32(<7 x half> %a, <7 x half> %b, <7 x i32> %d, <7 x i32
|
1112 | 1137 | ;
|
1113 | 1138 | ; CHECK-GI-NOFP16-LABEL: v7f16_i32:
|
1114 | 1139 | ; CHECK-GI-NOFP16: // %bb.0: // %entry
|
1115 |
| -; CHECK-GI-NOFP16-NEXT: mov h2, v1.h[1] |
1116 |
| -; CHECK-GI-NOFP16-NEXT: mov h3, v0.h[1] |
1117 |
| -; CHECK-GI-NOFP16-NEXT: mov h4, v1.h[2] |
1118 |
| -; CHECK-GI-NOFP16-NEXT: mov h5, v0.h[2] |
1119 |
| -; CHECK-GI-NOFP16-NEXT: fcvt s6, h1 |
1120 |
| -; CHECK-GI-NOFP16-NEXT: fcvt s7, h0 |
| 1140 | +; CHECK-GI-NOFP16-NEXT: mov h2, v0.h[1] |
| 1141 | +; CHECK-GI-NOFP16-NEXT: mov h3, v1.h[1] |
| 1142 | +; CHECK-GI-NOFP16-NEXT: mov w13, #31 // =0x1f |
| 1143 | +; CHECK-GI-NOFP16-NEXT: fcvt s4, h0 |
| 1144 | +; CHECK-GI-NOFP16-NEXT: fcvt s5, h1 |
| 1145 | +; CHECK-GI-NOFP16-NEXT: ldr s17, [sp, #40] |
| 1146 | +; CHECK-GI-NOFP16-NEXT: mov h6, v0.h[2] |
| 1147 | +; CHECK-GI-NOFP16-NEXT: mov h7, v1.h[2] |
| 1148 | +; CHECK-GI-NOFP16-NEXT: fmov s16, w0 |
1121 | 1149 | ; CHECK-GI-NOFP16-NEXT: fcvt s2, h2
|
1122 | 1150 | ; CHECK-GI-NOFP16-NEXT: fcvt s3, h3
|
| 1151 | +; CHECK-GI-NOFP16-NEXT: fcmp s4, s5 |
| 1152 | +; CHECK-GI-NOFP16-NEXT: mov h4, v0.h[3] |
| 1153 | +; CHECK-GI-NOFP16-NEXT: mov h5, v1.h[3] |
| 1154 | +; CHECK-GI-NOFP16-NEXT: fcvt s6, h6 |
| 1155 | +; CHECK-GI-NOFP16-NEXT: fcvt s7, h7 |
| 1156 | +; CHECK-GI-NOFP16-NEXT: mov v16.s[1], w1 |
| 1157 | +; CHECK-GI-NOFP16-NEXT: cset w9, mi |
| 1158 | +; CHECK-GI-NOFP16-NEXT: fcmp s2, s3 |
| 1159 | +; CHECK-GI-NOFP16-NEXT: mov h2, v0.h[4] |
| 1160 | +; CHECK-GI-NOFP16-NEXT: mov h3, v1.h[4] |
1123 | 1161 | ; CHECK-GI-NOFP16-NEXT: fcvt s4, h4
|
1124 | 1162 | ; CHECK-GI-NOFP16-NEXT: fcvt s5, h5
|
1125 |
| -; CHECK-GI-NOFP16-NEXT: fcmp s3, s2 |
1126 |
| -; CHECK-GI-NOFP16-NEXT: mov h2, v1.h[3] |
1127 |
| -; CHECK-GI-NOFP16-NEXT: mov h3, v0.h[3] |
1128 |
| -; CHECK-GI-NOFP16-NEXT: csetm w8, mi |
1129 |
| -; CHECK-GI-NOFP16-NEXT: fcmp s7, s6 |
1130 |
| -; CHECK-GI-NOFP16-NEXT: mov h6, v1.h[5] |
1131 |
| -; CHECK-GI-NOFP16-NEXT: mov h7, v0.h[5] |
| 1163 | +; CHECK-GI-NOFP16-NEXT: mov v16.s[2], w2 |
| 1164 | +; CHECK-GI-NOFP16-NEXT: cset w10, mi |
| 1165 | +; CHECK-GI-NOFP16-NEXT: fcmp s6, s7 |
| 1166 | +; CHECK-GI-NOFP16-NEXT: mov h6, v0.h[5] |
| 1167 | +; CHECK-GI-NOFP16-NEXT: mov h7, v1.h[5] |
1132 | 1168 | ; CHECK-GI-NOFP16-NEXT: fcvt s2, h2
|
| 1169 | +; CHECK-GI-NOFP16-NEXT: mov h0, v0.h[6] |
1133 | 1170 | ; CHECK-GI-NOFP16-NEXT: fcvt s3, h3
|
1134 |
| -; CHECK-GI-NOFP16-NEXT: csetm w9, mi |
1135 |
| -; CHECK-GI-NOFP16-NEXT: fcmp s5, s4 |
1136 |
| -; CHECK-GI-NOFP16-NEXT: mov h4, v1.h[4] |
1137 |
| -; CHECK-GI-NOFP16-NEXT: mov h5, v0.h[4] |
1138 |
| -; CHECK-GI-NOFP16-NEXT: fcvt s6, h6 |
1139 |
| -; CHECK-GI-NOFP16-NEXT: fcvt s7, h7 |
1140 |
| -; CHECK-GI-NOFP16-NEXT: csetm w10, mi |
1141 |
| -; CHECK-GI-NOFP16-NEXT: fcmp s3, s2 |
1142 |
| -; CHECK-GI-NOFP16-NEXT: fcvt s2, h4 |
1143 |
| -; CHECK-GI-NOFP16-NEXT: mov h4, v1.h[6] |
1144 |
| -; CHECK-GI-NOFP16-NEXT: mov h1, v1.h[7] |
1145 |
| -; CHECK-GI-NOFP16-NEXT: fcvt s3, h5 |
1146 |
| -; CHECK-GI-NOFP16-NEXT: mov h5, v0.h[6] |
1147 |
| -; CHECK-GI-NOFP16-NEXT: mov h0, v0.h[7] |
1148 |
| -; CHECK-GI-NOFP16-NEXT: csetm w11, mi |
1149 |
| -; CHECK-GI-NOFP16-NEXT: fcmp s7, s6 |
1150 |
| -; CHECK-GI-NOFP16-NEXT: fcvt s1, h1 |
1151 |
| -; CHECK-GI-NOFP16-NEXT: csetm w12, mi |
1152 |
| -; CHECK-GI-NOFP16-NEXT: fcmp s3, s2 |
1153 |
| -; CHECK-GI-NOFP16-NEXT: fcvt s2, h4 |
1154 |
| -; CHECK-GI-NOFP16-NEXT: fcvt s3, h5 |
1155 |
| -; CHECK-GI-NOFP16-NEXT: fmov s4, w9 |
| 1171 | +; CHECK-GI-NOFP16-NEXT: mov h1, v1.h[6] |
| 1172 | +; CHECK-GI-NOFP16-NEXT: cset w11, mi |
| 1173 | +; CHECK-GI-NOFP16-NEXT: fcmp s4, s5 |
| 1174 | +; CHECK-GI-NOFP16-NEXT: mov v16.s[3], w3 |
| 1175 | +; CHECK-GI-NOFP16-NEXT: fcvt s4, h6 |
| 1176 | +; CHECK-GI-NOFP16-NEXT: ldr s6, [sp, #32] |
| 1177 | +; CHECK-GI-NOFP16-NEXT: fcvt s5, h7 |
1156 | 1178 | ; CHECK-GI-NOFP16-NEXT: fcvt s0, h0
|
1157 |
| -; CHECK-GI-NOFP16-NEXT: add x9, sp, #8 |
1158 |
| -; CHECK-GI-NOFP16-NEXT: csetm w13, mi |
1159 |
| -; CHECK-GI-NOFP16-NEXT: fmov s5, w13 |
1160 |
| -; CHECK-GI-NOFP16-NEXT: mov v4.h[1], w8 |
1161 |
| -; CHECK-GI-NOFP16-NEXT: mov x8, sp |
1162 |
| -; CHECK-GI-NOFP16-NEXT: fcmp s3, s2 |
1163 |
| -; CHECK-GI-NOFP16-NEXT: fmov s2, w7 |
1164 |
| -; CHECK-GI-NOFP16-NEXT: fmov s3, w0 |
1165 |
| -; CHECK-GI-NOFP16-NEXT: mov v5.h[1], w12 |
1166 |
| -; CHECK-GI-NOFP16-NEXT: ld1 { v2.s }[1], [x8] |
1167 |
| -; CHECK-GI-NOFP16-NEXT: mov v3.s[1], w1 |
1168 |
| -; CHECK-GI-NOFP16-NEXT: csetm w8, mi |
1169 |
| -; CHECK-GI-NOFP16-NEXT: mov v4.h[2], w10 |
| 1179 | +; CHECK-GI-NOFP16-NEXT: fmov s7, w4 |
| 1180 | +; CHECK-GI-NOFP16-NEXT: cset w8, mi |
| 1181 | +; CHECK-GI-NOFP16-NEXT: fcmp s2, s3 |
| 1182 | +; CHECK-GI-NOFP16-NEXT: fcvt s1, h1 |
| 1183 | +; CHECK-GI-NOFP16-NEXT: fmov s2, w13 |
| 1184 | +; CHECK-GI-NOFP16-NEXT: mov v7.s[1], w5 |
| 1185 | +; CHECK-GI-NOFP16-NEXT: cset w12, mi |
| 1186 | +; CHECK-GI-NOFP16-NEXT: fcmp s4, s5 |
| 1187 | +; CHECK-GI-NOFP16-NEXT: ldr s5, [sp] |
| 1188 | +; CHECK-GI-NOFP16-NEXT: fmov s3, w12 |
| 1189 | +; CHECK-GI-NOFP16-NEXT: mov v2.s[1], w13 |
| 1190 | +; CHECK-GI-NOFP16-NEXT: cset w14, mi |
1170 | 1191 | ; CHECK-GI-NOFP16-NEXT: fcmp s0, s1
|
1171 |
| -; CHECK-GI-NOFP16-NEXT: fmov s1, w4 |
1172 |
| -; CHECK-GI-NOFP16-NEXT: ldr s0, [sp, #24] |
1173 |
| -; CHECK-GI-NOFP16-NEXT: mov v5.h[2], w8 |
1174 |
| -; CHECK-GI-NOFP16-NEXT: ld1 { v2.s }[2], [x9] |
1175 |
| -; CHECK-GI-NOFP16-NEXT: add x9, sp, #32 |
1176 |
| -; CHECK-GI-NOFP16-NEXT: mov v3.s[2], w2 |
1177 |
| -; CHECK-GI-NOFP16-NEXT: mov v1.s[1], w5 |
1178 |
| -; CHECK-GI-NOFP16-NEXT: csetm w8, mi |
1179 |
| -; CHECK-GI-NOFP16-NEXT: mov v4.h[3], w11 |
1180 |
| -; CHECK-GI-NOFP16-NEXT: ld1 { v0.s }[1], [x9] |
1181 |
| -; CHECK-GI-NOFP16-NEXT: mov v5.h[3], w8 |
1182 |
| -; CHECK-GI-NOFP16-NEXT: add x8, sp, #16 |
1183 |
| -; CHECK-GI-NOFP16-NEXT: ld1 { v2.s }[3], [x8] |
1184 |
| -; CHECK-GI-NOFP16-NEXT: mov v3.s[3], w3 |
1185 |
| -; CHECK-GI-NOFP16-NEXT: add x8, sp, #40 |
1186 |
| -; CHECK-GI-NOFP16-NEXT: mov v1.s[2], w6 |
1187 |
| -; CHECK-GI-NOFP16-NEXT: sshll v4.4s, v4.4h, #0 |
1188 |
| -; CHECK-GI-NOFP16-NEXT: ld1 { v0.s }[2], [x8] |
1189 |
| -; CHECK-GI-NOFP16-NEXT: sshll v5.4s, v5.4h, #0 |
1190 |
| -; CHECK-GI-NOFP16-NEXT: bit v2.16b, v3.16b, v4.16b |
1191 |
| -; CHECK-GI-NOFP16-NEXT: bit v0.16b, v1.16b, v5.16b |
1192 |
| -; CHECK-GI-NOFP16-NEXT: mov w1, v2.s[1] |
1193 |
| -; CHECK-GI-NOFP16-NEXT: mov w2, v2.s[2] |
1194 |
| -; CHECK-GI-NOFP16-NEXT: mov w3, v2.s[3] |
1195 |
| -; CHECK-GI-NOFP16-NEXT: fmov w0, s2 |
1196 |
| -; CHECK-GI-NOFP16-NEXT: mov w5, v0.s[1] |
1197 |
| -; CHECK-GI-NOFP16-NEXT: mov w6, v0.s[2] |
1198 |
| -; CHECK-GI-NOFP16-NEXT: fmov w4, s0 |
| 1192 | +; CHECK-GI-NOFP16-NEXT: fmov s0, w9 |
| 1193 | +; CHECK-GI-NOFP16-NEXT: mov v3.s[1], w14 |
| 1194 | +; CHECK-GI-NOFP16-NEXT: ldr s1, [sp, #24] |
| 1195 | +; CHECK-GI-NOFP16-NEXT: mov v7.s[2], w6 |
| 1196 | +; CHECK-GI-NOFP16-NEXT: mov v2.s[2], w13 |
| 1197 | +; CHECK-GI-NOFP16-NEXT: cset w9, mi |
| 1198 | +; CHECK-GI-NOFP16-NEXT: mov v0.s[1], w10 |
| 1199 | +; CHECK-GI-NOFP16-NEXT: fmov w10, s5 |
| 1200 | +; CHECK-GI-NOFP16-NEXT: fmov s5, w7 |
| 1201 | +; CHECK-GI-NOFP16-NEXT: mov v1.s[1], v6.s[0] |
| 1202 | +; CHECK-GI-NOFP16-NEXT: ldr s6, [sp, #8] |
| 1203 | +; CHECK-GI-NOFP16-NEXT: mov v3.s[2], w9 |
| 1204 | +; CHECK-GI-NOFP16-NEXT: mov w9, #-1 // =0xffffffff |
| 1205 | +; CHECK-GI-NOFP16-NEXT: fmov s4, w9 |
| 1206 | +; CHECK-GI-NOFP16-NEXT: mov v2.s[3], w8 |
| 1207 | +; CHECK-GI-NOFP16-NEXT: mov v0.s[2], w11 |
| 1208 | +; CHECK-GI-NOFP16-NEXT: mov v5.s[1], w10 |
| 1209 | +; CHECK-GI-NOFP16-NEXT: mov v1.s[2], v17.s[0] |
| 1210 | +; CHECK-GI-NOFP16-NEXT: mov v4.s[1], w9 |
| 1211 | +; CHECK-GI-NOFP16-NEXT: mov v3.s[3], w8 |
| 1212 | +; CHECK-GI-NOFP16-NEXT: neg v18.4s, v2.4s |
| 1213 | +; CHECK-GI-NOFP16-NEXT: mov v0.s[3], w8 |
| 1214 | +; CHECK-GI-NOFP16-NEXT: fmov w8, s6 |
| 1215 | +; CHECK-GI-NOFP16-NEXT: mov v4.s[2], w9 |
| 1216 | +; CHECK-GI-NOFP16-NEXT: ushl v2.4s, v3.4s, v2.4s |
| 1217 | +; CHECK-GI-NOFP16-NEXT: ldr s3, [sp, #16] |
| 1218 | +; CHECK-GI-NOFP16-NEXT: mov v5.s[2], w8 |
| 1219 | +; CHECK-GI-NOFP16-NEXT: mov v7.s[3], w8 |
| 1220 | +; CHECK-GI-NOFP16-NEXT: shl v0.4s, v0.4s, #31 |
| 1221 | +; CHECK-GI-NOFP16-NEXT: sshl v2.4s, v2.4s, v18.4s |
| 1222 | +; CHECK-GI-NOFP16-NEXT: mov v4.s[3], w8 |
| 1223 | +; CHECK-GI-NOFP16-NEXT: fmov w8, s3 |
| 1224 | +; CHECK-GI-NOFP16-NEXT: mov v1.s[3], v0.s[0] |
| 1225 | +; CHECK-GI-NOFP16-NEXT: sshr v0.4s, v0.4s, #31 |
| 1226 | +; CHECK-GI-NOFP16-NEXT: mov v5.s[3], w8 |
| 1227 | +; CHECK-GI-NOFP16-NEXT: eor v3.16b, v2.16b, v4.16b |
| 1228 | +; CHECK-GI-NOFP16-NEXT: and v2.16b, v7.16b, v2.16b |
| 1229 | +; CHECK-GI-NOFP16-NEXT: and v1.16b, v1.16b, v3.16b |
| 1230 | +; CHECK-GI-NOFP16-NEXT: bsl v0.16b, v16.16b, v5.16b |
| 1231 | +; CHECK-GI-NOFP16-NEXT: orr v1.16b, v2.16b, v1.16b |
| 1232 | +; CHECK-GI-NOFP16-NEXT: mov s2, v0.s[1] |
| 1233 | +; CHECK-GI-NOFP16-NEXT: mov s3, v0.s[2] |
| 1234 | +; CHECK-GI-NOFP16-NEXT: mov s4, v0.s[3] |
| 1235 | +; CHECK-GI-NOFP16-NEXT: fmov w0, s0 |
| 1236 | +; CHECK-GI-NOFP16-NEXT: mov s5, v1.s[1] |
| 1237 | +; CHECK-GI-NOFP16-NEXT: mov s6, v1.s[2] |
| 1238 | +; CHECK-GI-NOFP16-NEXT: fmov w4, s1 |
| 1239 | +; CHECK-GI-NOFP16-NEXT: fmov w1, s2 |
| 1240 | +; CHECK-GI-NOFP16-NEXT: fmov w2, s3 |
| 1241 | +; CHECK-GI-NOFP16-NEXT: fmov w3, s4 |
| 1242 | +; CHECK-GI-NOFP16-NEXT: fmov w5, s5 |
| 1243 | +; CHECK-GI-NOFP16-NEXT: fmov w6, s6 |
1199 | 1244 | ; CHECK-GI-NOFP16-NEXT: ret
|
1200 | 1245 | ;
|
1201 | 1246 | ; CHECK-GI-FP16-LABEL: v7f16_i32:
|
|
0 commit comments