|
134 | 134 | ret void
|
135 | 135 | }
|
136 | 136 |
|
| 137 | + define void @unforwardable_avl() { |
| 138 | + ret void |
| 139 | + } |
| 140 | + |
137 | 141 | declare i32 @llvm.vector.reduce.add.v4i32(<4 x i32>)
|
138 | 142 |
|
139 | 143 | 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
|
@@ -990,3 +994,43 @@ body: |
|
990 | 994 | %x:gpr = PseudoVMV_X_S undef $noreg, 6
|
991 | 995 | PseudoBR %bb.1
|
992 | 996 | ...
|
| 997 | +--- |
| 998 | +name: unforwardable_avl |
| 999 | +tracksRegLiveness: true |
| 1000 | +body: | |
| 1001 | + ; CHECK-LABEL: name: unforwardable_avl |
| 1002 | + ; CHECK: bb.0: |
| 1003 | + ; CHECK-NEXT: successors: %bb.1(0x80000000) |
| 1004 | + ; CHECK-NEXT: liveins: $x10, $v8m2 |
| 1005 | + ; CHECK-NEXT: {{ $}} |
| 1006 | + ; CHECK-NEXT: %avl:gprnox0 = COPY $x10 |
| 1007 | + ; CHECK-NEXT: %outvl:gprnox0 = PseudoVSETVLI %avl, 209 /* e32, m2, ta, ma */, implicit-def $vl, implicit-def $vtype |
| 1008 | + ; CHECK-NEXT: {{ $}} |
| 1009 | + ; CHECK-NEXT: bb.1: |
| 1010 | + ; CHECK-NEXT: successors: %bb.2(0x80000000) |
| 1011 | + ; CHECK-NEXT: liveins: $v8m2 |
| 1012 | + ; CHECK-NEXT: {{ $}} |
| 1013 | + ; CHECK-NEXT: dead %avl:gprnox0 = ADDI %avl, 1 |
| 1014 | + ; CHECK-NEXT: {{ $}} |
| 1015 | + ; CHECK-NEXT: bb.2: |
| 1016 | + ; CHECK-NEXT: liveins: $v8m2 |
| 1017 | + ; CHECK-NEXT: {{ $}} |
| 1018 | + ; CHECK-NEXT: dead [[PseudoVSETVLIX0_:%[0-9]+]]:gpr = PseudoVSETVLIX0 killed $x0, 209 /* e32, m2, ta, ma */, implicit-def $vl, implicit-def $vtype |
| 1019 | + ; CHECK-NEXT: renamable $v10m2 = PseudoVADD_VV_M2 undef renamable $v10m2, renamable $v8m2, renamable $v8m2, -1, 5 /* e32 */, 0 /* tu, mu */, implicit $vl, implicit $vtype |
| 1020 | + ; CHECK-NEXT: dead $x0 = PseudoVSETVLI %outvl, 209 /* e32, m2, ta, ma */, implicit-def $vl, implicit-def $vtype |
| 1021 | + ; CHECK-NEXT: renamable $v8m2 = PseudoVADD_VV_M2 undef renamable $v8m2, killed renamable $v10m2, renamable $v8m2, $noreg, 5 /* e32 */, 0 /* tu, mu */, implicit $vl, implicit $vtype |
| 1022 | + ; CHECK-NEXT: PseudoRET implicit $v8m2 |
| 1023 | + bb.0: |
| 1024 | + liveins: $x10, $v8m2 |
| 1025 | + %avl:gprnox0 = COPY $x10 |
| 1026 | + %outvl:gprnox0 = PseudoVSETVLI %avl:gprnox0, 209, implicit-def dead $vl, implicit-def dead $vtype |
| 1027 | +
|
| 1028 | + bb.1: |
| 1029 | + liveins: $v8m2 |
| 1030 | + %avl:gprnox0 = ADDI %avl:gprnox0, 1 |
| 1031 | +
|
| 1032 | + bb.2: |
| 1033 | + liveins: $v8m2 |
| 1034 | + renamable $v10m2 = PseudoVADD_VV_M2 undef renamable $v10m2, renamable $v8m2, renamable $v8m2, -1, 5, 0 |
| 1035 | + renamable $v8m2 = PseudoVADD_VV_M2 undef renamable $v8m2, killed renamable $v10m2, killed renamable $v8m2, %outvl:gprnox0, 5, 0 |
| 1036 | + PseudoRET implicit $v8m2 |
0 commit comments