|
138 | 138 | ret void
|
139 | 139 | }
|
140 | 140 |
|
| 141 | + define void @clobberred_forwarded_phi_avl() { |
| 142 | + ret void |
| 143 | + } |
| 144 | + |
141 | 145 | declare i32 @llvm.vector.reduce.add.v4i32(<4 x i32>)
|
142 | 146 |
|
143 | 147 | 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
|
@@ -1035,3 +1039,63 @@ body: |
|
1035 | 1039 | renamable $v10m2 = PseudoVADD_VV_M2 undef renamable $v10m2, renamable $v8m2, renamable $v8m2, -1, 5, 0
|
1036 | 1040 | renamable $v8m2 = PseudoVADD_VV_M2 undef renamable $v8m2, killed renamable $v10m2, killed renamable $v8m2, %outvl:gprnox0, 5, 0
|
1037 | 1041 | PseudoRET implicit $v8m2
|
| 1042 | +... |
| 1043 | +--- |
| 1044 | +name: clobberred_forwarded_phi_avl |
| 1045 | +tracksRegLiveness: true |
| 1046 | +body: | |
| 1047 | + ; CHECK-LABEL: name: clobberred_forwarded_phi_avl |
| 1048 | + ; CHECK: bb.0: |
| 1049 | + ; CHECK-NEXT: successors: %bb.2(0x40000000), %bb.1(0x40000000) |
| 1050 | + ; CHECK-NEXT: liveins: $x10, $x11, $v8m2 |
| 1051 | + ; CHECK-NEXT: {{ $}} |
| 1052 | + ; CHECK-NEXT: %v:vrm2 = COPY $v8m2 |
| 1053 | + ; CHECK-NEXT: [[ADDI:%[0-9]+]]:gprnox0 = ADDI $x0, 1 |
| 1054 | + ; CHECK-NEXT: %x:gpr = COPY $x10 |
| 1055 | + ; CHECK-NEXT: %y:gpr = COPY $x11 |
| 1056 | + ; CHECK-NEXT: BEQ %x, %y, %bb.2 |
| 1057 | + ; CHECK-NEXT: {{ $}} |
| 1058 | + ; CHECK-NEXT: bb.1: |
| 1059 | + ; CHECK-NEXT: successors: %bb.2(0x80000000) |
| 1060 | + ; CHECK-NEXT: {{ $}} |
| 1061 | + ; CHECK-NEXT: [[ADDI:%[0-9]+]]:gprnox0 = ADDI $x0, 2 |
| 1062 | + ; CHECK-NEXT: {{ $}} |
| 1063 | + ; CHECK-NEXT: bb.2: |
| 1064 | + ; CHECK-NEXT: successors: %bb.3(0x80000000) |
| 1065 | + ; CHECK-NEXT: {{ $}} |
| 1066 | + ; CHECK-NEXT: dead %outvl:gprnox0 = PseudoVSETVLI [[ADDI]], 209 /* e32, m2, ta, ma */, implicit-def $vl, implicit-def $vtype |
| 1067 | + ; CHECK-NEXT: [[COPY:%[0-9]+]]:gprnox0 = COPY [[ADDI]] |
| 1068 | + ; CHECK-NEXT: {{ $}} |
| 1069 | + ; CHECK-NEXT: bb.3: |
| 1070 | + ; CHECK-NEXT: successors: %bb.4(0x80000000) |
| 1071 | + ; CHECK-NEXT: {{ $}} |
| 1072 | + ; CHECK-NEXT: dead [[ADDI:%[0-9]+]]:gprnox0 = ADDI [[ADDI]], 1 |
| 1073 | + ; CHECK-NEXT: {{ $}} |
| 1074 | + ; CHECK-NEXT: bb.4: |
| 1075 | + ; CHECK-NEXT: dead [[PseudoVSETVLIX0_:%[0-9]+]]:gpr = PseudoVSETVLIX0 killed $x0, 209 /* e32, m2, ta, ma */, implicit-def $vl, implicit-def $vtype |
| 1076 | + ; CHECK-NEXT: renamable $v10m2 = PseudoVADD_VV_M2 undef renamable $v10m2, %v, %v, -1, 5 /* e32 */, 0 /* tu, mu */, implicit $vl, implicit $vtype |
| 1077 | + ; CHECK-NEXT: dead $x0 = PseudoVSETVLI [[COPY]], 209 /* e32, m2, ta, ma */, implicit-def $vl, implicit-def $vtype |
| 1078 | + ; CHECK-NEXT: renamable $v8m2 = PseudoVADD_VV_M2 undef renamable $v8m2, killed renamable $v10m2, %v, $noreg, 5 /* e32 */, 0 /* tu, mu */, implicit $vl, implicit $vtype |
| 1079 | + ; CHECK-NEXT: PseudoRET implicit $v8m2 |
| 1080 | + bb.0: |
| 1081 | + liveins: $x10, $x11, $v8m2 |
| 1082 | + %v:vrm2 = COPY $v8m2 |
| 1083 | + %a:gpr = ADDI $x0, 1 |
| 1084 | + %x:gpr = COPY $x10 |
| 1085 | + %y:gpr = COPY $x11 |
| 1086 | + BEQ %x, %y, %bb.2 |
| 1087 | +
|
| 1088 | + bb.1: |
| 1089 | + %b:gpr = ADDI $x0, 2 |
| 1090 | +
|
| 1091 | + bb.2: |
| 1092 | + %avl:gprnox0 = PHI %a, %bb.0, %b, %bb.1 |
| 1093 | + %outvl:gprnox0 = PseudoVSETVLI %avl:gprnox0, 209, implicit-def dead $vl, implicit-def dead $vtype |
| 1094 | +
|
| 1095 | + bb.3: |
| 1096 | + %avl:gprnox0 = ADDI %avl:gprnox0, 1 |
| 1097 | +
|
| 1098 | + bb.4: |
| 1099 | + renamable $v10m2 = PseudoVADD_VV_M2 undef renamable $v10m2, %v, %v, -1, 5, 0 |
| 1100 | + renamable $v8m2 = PseudoVADD_VV_M2 undef renamable $v8m2, killed renamable $v10m2, killed %v, %outvl:gprnox0, 5, 0 |
| 1101 | + PseudoRET implicit $v8m2 |
0 commit comments