|
72 | 72 | ret void
|
73 | 73 | }
|
74 | 74 |
|
| 75 | + define void @vmv_s_x() { |
| 76 | + ret void |
| 77 | + } |
| 78 | + |
| 79 | + define void @vmv_s_x_too_large_ratio_diff() { |
| 80 | + ret void |
| 81 | + } |
| 82 | + |
75 | 83 | declare <vscale x 1 x i64> @llvm.riscv.vadd.nxv1i64.nxv1i64.i64(<vscale x 1 x i64>, <vscale x 1 x i64>, <vscale x 1 x i64>, i64) #1
|
76 | 84 |
|
77 | 85 | declare <vscale x 1 x i64> @llvm.riscv.vle.nxv1i64.i64(<vscale x 1 x i64>, <vscale x 1 x i64>* nocapture, i64) #4
|
@@ -446,3 +454,49 @@ body: |
|
446 | 454 | %4:vr = PseudoVMV_V_I_MF4 undef %4, 0, 4, 3, 0
|
447 | 455 | PseudoRET
|
448 | 456 | ...
|
| 457 | + |
| 458 | +... |
| 459 | +--- |
| 460 | +name: vmv_s_x |
| 461 | +tracksRegLiveness: true |
| 462 | +body: | |
| 463 | + bb.0: |
| 464 | + liveins: $x1 |
| 465 | + ; CHECK-LABEL: name: vmv_s_x |
| 466 | + ; CHECK: liveins: $x1 |
| 467 | + ; CHECK-NEXT: {{ $}} |
| 468 | + ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x1 |
| 469 | + ; CHECK-NEXT: %pt:vr = IMPLICIT_DEF |
| 470 | + ; CHECK-NEXT: dead $x0 = PseudoVSETIVLI 1, 201 /* e16, m2, ta, ma */, implicit-def $vl, implicit-def $vtype |
| 471 | + ; CHECK-NEXT: [[PseudoVMV_S_X_M1_:%[0-9]+]]:vr = PseudoVMV_S_X_M1 %pt, [[COPY]], 1, 4 /* e16 */, implicit $vl, implicit $vtype |
| 472 | + ; CHECK-NEXT: dead $x0 = PseudoVSETVLIX0 killed $x0, 192 /* e8, m1, ta, ma */, implicit-def $vl, implicit-def $vtype |
| 473 | + ; CHECK-NEXT: [[PseudoVADD_VI_M1_:%[0-9]+]]:vr = PseudoVADD_VI_M1 %pt, [[PseudoVMV_S_X_M1_]], 1, 1, 3 /* e8 */, 0 /* tu, mu */, implicit $vl, implicit $vtype |
| 474 | + ; CHECK-NEXT: PseudoRET |
| 475 | + %0:gpr = COPY $x1 |
| 476 | + %pt:vr = IMPLICIT_DEF |
| 477 | + %1:vr = PseudoVMV_S_X_M1 %pt, %0, 1, 4 |
| 478 | + %2:vr = PseudoVADD_VI_M1 %pt, %1, 1, 1, 3, 0 |
| 479 | + PseudoRET |
| 480 | +
|
| 481 | +... |
| 482 | +--- |
| 483 | +name: vmv_s_x_too_large_ratio_diff |
| 484 | +tracksRegLiveness: true |
| 485 | +body: | |
| 486 | + bb.0: |
| 487 | + liveins: $x1 |
| 488 | + ; CHECK-LABEL: name: vmv_s_x_too_large_ratio_diff |
| 489 | + ; CHECK: liveins: $x1 |
| 490 | + ; CHECK-NEXT: {{ $}} |
| 491 | + ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x1 |
| 492 | + ; CHECK-NEXT: %pt:vrm8 = IMPLICIT_DEF |
| 493 | + ; CHECK-NEXT: dead $x0 = PseudoVSETIVLI 1, 219 /* e64, m8, ta, ma */, implicit-def $vl, implicit-def $vtype |
| 494 | + ; CHECK-NEXT: [[PseudoVMV_S_X_M8_:%[0-9]+]]:vrm8 = PseudoVMV_S_X_M8 %pt, [[COPY]], 1, 6 /* e64 */, implicit $vl, implicit $vtype |
| 495 | + ; CHECK-NEXT: dead $x0 = PseudoVSETIVLI 1, 195 /* e8, m8, ta, ma */, implicit-def $vl, implicit-def $vtype |
| 496 | + ; CHECK-NEXT: [[PseudoVADD_VI_M8_:%[0-9]+]]:vrm8 = PseudoVADD_VI_M8 %pt, [[PseudoVMV_S_X_M8_]], 1, 1, 3 /* e8 */, 0 /* tu, mu */, implicit $vl, implicit $vtype |
| 497 | + ; CHECK-NEXT: PseudoRET |
| 498 | + %0:gpr = COPY $x1 |
| 499 | + %pt:vrm8 = IMPLICIT_DEF |
| 500 | + %1:vrm8 = PseudoVMV_S_X_M8 %pt, %0, 1, 6 |
| 501 | + %2:vrm8 = PseudoVADD_VI_M8 %pt, %1, 1, 1, 3, 0 |
| 502 | + PseudoRET |
0 commit comments