Skip to content

Commit 09d73fe

Browse files
committed
[RISCV] Add MIR comments for VecPolicy operands
Analogous to what we already do for SEW operands, aimed at making the resulting MIR readable by a human.
1 parent 6bf6730 commit 09d73fe

File tree

9 files changed

+21
-9
lines changed

9 files changed

+21
-9
lines changed

llvm/lib/Target/RISCV/MCTargetDesc/RISCVBaseInfo.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,11 @@ static inline unsigned getSEWOpNum(const MCInstrDesc &Desc) {
188188
return Desc.getNumOperands() - Offset;
189189
}
190190

191+
static inline unsigned getVecPolicyOpNum(const MCInstrDesc &Desc) {
192+
assert(hasVecPolicyOp(Desc.TSFlags));
193+
return Desc.getNumOperands() - 1;
194+
}
195+
191196
// RISC-V Specific Machine Operand Flags
192197
enum {
193198
MO_None = 0,

llvm/lib/Target/RISCV/RISCVInstrInfo.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1510,6 +1510,13 @@ std::string RISCVInstrInfo::createMIROperandComment(
15101510
unsigned SEW = Log2SEW ? 1 << Log2SEW : 8;
15111511
assert(RISCVVType::isValidSEW(SEW) && "Unexpected SEW");
15121512
OS << "e" << SEW;
1513+
} else if (RISCVII::hasVecPolicyOp(TSFlags) &&
1514+
OpIdx == RISCVII::getVecPolicyOpNum(MI.getDesc())) {
1515+
unsigned Policy = MI.getOperand(OpIdx).getImm();
1516+
assert(Policy <= (RISCVII::TAIL_AGNOSTIC | RISCVII::MASK_AGNOSTIC) &&
1517+
"Invalid Policy Value");
1518+
OS << (Policy & RISCVII::TAIL_AGNOSTIC ? "ta" : "tu") << ", "
1519+
<< (Policy & RISCVII::MASK_AGNOSTIC ? "ma" : "mu");
15131520
}
15141521

15151522
OS.flush();

llvm/test/CodeGen/RISCV/rvv/commuted-op-indices-regression.mir

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ body: |
3030
; CHECK-NEXT: [[COPY:%[0-9]+]]:vr = COPY $v0
3131
; CHECK-NEXT: [[COPY1:%[0-9]+]]:vrnov0 = COPY $v1
3232
; CHECK-NEXT: [[COPY2:%[0-9]+]]:vrnov0 = COPY $v2
33-
; CHECK-NEXT: [[PseudoVNMSUB_VV_M1_:%[0-9]+]]:vr = PseudoVNMSUB_VV_M1 [[PseudoVNMSUB_VV_M1_]], [[COPY1]], [[COPY2]], -1, 6 /* e64 */, 1, implicit $vl, implicit $vtype
33+
; CHECK-NEXT: [[PseudoVNMSUB_VV_M1_:%[0-9]+]]:vr = PseudoVNMSUB_VV_M1 [[PseudoVNMSUB_VV_M1_]], [[COPY1]], [[COPY2]], -1, 6 /* e64 */, 1 /* ta, mu */, implicit $vl, implicit $vtype
3434
; CHECK-NEXT: [[COPY2:%[0-9]+]]:vr = COPY [[PseudoVNMSUB_VV_M1_]]
3535
; CHECK-NEXT: dead [[COPY2]]:vr = PseudoVSLL_VI_M1 [[COPY2]], 11, $noreg, 6 /* e64 */, implicit $vl, implicit $vtype
3636
; CHECK-NEXT: $v0 = COPY [[PseudoVNMSUB_VV_M1_]]

llvm/test/CodeGen/RISCV/rvv/emergency-slot.mir

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ body: |
141141
; CHECK-NEXT: $x5 = LD $x2, 0 :: (load (s64) from %stack.16)
142142
; CHECK-NEXT: renamable $v0 = PseudoVRELOAD_M1 killed $x1 :: (load unknown-size from %stack.1, align 8)
143143
; CHECK-NEXT: $x1 = LD $x2, 8 :: (load (s64) from %stack.15)
144-
; CHECK-NEXT: renamable $v0 = PseudoVSLIDEDOWN_VX_M1 undef renamable $v0, killed renamable $v0, killed renamable $x13, $noreg, 3 /* e8 */, 1, implicit $vl, implicit $vtype
144+
; CHECK-NEXT: renamable $v0 = PseudoVSLIDEDOWN_VX_M1 undef renamable $v0, killed renamable $v0, killed renamable $x13, $noreg, 3 /* e8 */, 1 /* ta, mu */, implicit $vl, implicit $vtype
145145
; CHECK-NEXT: renamable $x13 = PseudoVMV_X_S_M1 killed renamable $v0, 3 /* e8 */, implicit $vl, implicit $vtype
146146
; CHECK-NEXT: BLT killed renamable $x16, renamable $x27, %bb.2
147147
; CHECK-NEXT: {{ $}}

llvm/test/CodeGen/RISCV/rvv/implicit-def-copy.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ define <vscale x 8 x i64> @vpload_nxv8i64(<vscale x 8 x i64>* %ptr, <vscale x 8
1313
; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr = COPY $x10
1414
; CHECK-NEXT: $v0 = COPY [[COPY1]]
1515
; CHECK-NEXT: [[DEF:%[0-9]+]]:vrm8nov0 = IMPLICIT_DEF
16-
; CHECK-NEXT: [[PseudoVLE64_V_M8_MASK:%[0-9]+]]:vrm8nov0 = PseudoVLE64_V_M8_MASK [[DEF]], [[COPY2]], $v0, [[COPY]], 6 /* e64 */, 1 :: (load unknown-size from %ir.ptr, align 64)
16+
; CHECK-NEXT: [[PseudoVLE64_V_M8_MASK:%[0-9]+]]:vrm8nov0 = PseudoVLE64_V_M8_MASK [[DEF]], [[COPY2]], $v0, [[COPY]], 6 /* e64 */, 1 /* ta, mu */ :: (load unknown-size from %ir.ptr, align 64)
1717
; CHECK-NEXT: $v8m8 = COPY [[PseudoVLE64_V_M8_MASK]]
1818
; CHECK-NEXT: PseudoRET implicit $v8m8
1919
%load = call <vscale x 8 x i64> @llvm.vp.load.nxv8i64.p0nxv8i64(<vscale x 8 x i64>* %ptr, <vscale x 8 x i1> %m, i32 %evl)

llvm/test/CodeGen/RISCV/rvv/pass-fast-math-flags-sdnode.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ define <vscale x 1 x double> @foo(<vscale x 1 x double> %x, <vscale x 1 x double
1616
; CHECK-NEXT: [[SRLI:%[0-9]+]]:gprnox0 = SRLI killed [[SLLI]], 32
1717
; CHECK-NEXT: $v0 = COPY [[COPY1]]
1818
; CHECK-NEXT: [[DEF:%[0-9]+]]:vrnov0 = IMPLICIT_DEF
19-
; CHECK-NEXT: %7:vrnov0 = nnan ninf nsz arcp contract afn reassoc nofpexcept PseudoVFMUL_VV_M1_MASK [[DEF]], [[COPY3]], [[COPY2]], $v0, killed [[SRLI]], 6 /* e64 */, 1, implicit $frm
19+
; CHECK-NEXT: %7:vrnov0 = nnan ninf nsz arcp contract afn reassoc nofpexcept PseudoVFMUL_VV_M1_MASK [[DEF]], [[COPY3]], [[COPY2]], $v0, killed [[SRLI]], 6 /* e64 */, 1 /* ta, mu */, implicit $frm
2020
; CHECK-NEXT: $v8 = COPY %7
2121
; CHECK-NEXT: PseudoRET implicit $v8
2222
%1 = call fast <vscale x 1 x double> @llvm.vp.fmul.nxv1f64(<vscale x 1 x double> %x, <vscale x 1 x double> %y, <vscale x 1 x i1> %m, i32 %vl)

llvm/test/CodeGen/RISCV/rvv/tail-agnostic-impdef-copy.mir

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ body: |
5353
; CHECK-NEXT: $v0 = COPY [[COPY]]
5454
; CHECK-NEXT: [[DEF:%[0-9]+]]:vrm8 = IMPLICIT_DEF
5555
; CHECK-NEXT: [[COPY2:%[0-9]+]]:vrm8nov0 = COPY [[DEF]]
56-
; CHECK-NEXT: [[PseudoVLE64_V_M8_MASK:%[0-9]+]]:vrm8nov0 = PseudoVLE64_V_M8_MASK [[COPY2]], [[COPY1]], $v0, -1, 6 /* e64 */, 1 :: (load (s512) from %ir.a, align 8)
56+
; CHECK-NEXT: [[PseudoVLE64_V_M8_MASK:%[0-9]+]]:vrm8nov0 = PseudoVLE64_V_M8_MASK [[COPY2]], [[COPY1]], $v0, -1, 6 /* e64 */, 1 /* ta, mu */ :: (load (s512) from %ir.a, align 8)
5757
; CHECK-NEXT: $v8m8 = COPY [[PseudoVLE64_V_M8_MASK]]
5858
; CHECK-NEXT: PseudoRET implicit $v8m8
5959
%1:vr = COPY $v0

llvm/test/CodeGen/RISCV/rvv/vleff-vlseg2ff-output.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ define i64 @test_vleff_nxv8i8_mask(<vscale x 8 x i8> %maskedoff, <vscale x 8 x i
5050
; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr = COPY $x10
5151
; CHECK-NEXT: [[COPY3:%[0-9]+]]:vrnov0 = COPY $v8
5252
; CHECK-NEXT: $v0 = COPY [[COPY1]]
53-
; CHECK-NEXT: [[PseudoVLE8FF_V_M1_MASK:%[0-9]+]]:vrnov0, [[PseudoVLE8FF_V_M1_MASK1:%[0-9]+]]:gpr = PseudoVLE8FF_V_M1_MASK [[COPY3]], [[COPY2]], $v0, [[COPY]], 3 /* e8 */, 0, implicit-def dead $vl
53+
; CHECK-NEXT: [[PseudoVLE8FF_V_M1_MASK:%[0-9]+]]:vrnov0, [[PseudoVLE8FF_V_M1_MASK1:%[0-9]+]]:gpr = PseudoVLE8FF_V_M1_MASK [[COPY3]], [[COPY2]], $v0, [[COPY]], 3 /* e8 */, 0 /* tu, mu */, implicit-def dead $vl
5454
; CHECK-NEXT: $x10 = COPY [[PseudoVLE8FF_V_M1_MASK1]]
5555
; CHECK-NEXT: PseudoRET implicit $x10
5656
entry:
@@ -104,7 +104,7 @@ define i64 @test_vlseg2ff_nxv8i8_mask(<vscale x 8 x i8> %val, i8* %base, <vscale
104104
; CHECK-NEXT: [[COPY3:%[0-9]+]]:vr = COPY $v8
105105
; CHECK-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vrn2m1nov0 = REG_SEQUENCE [[COPY3]], %subreg.sub_vrm1_0, [[COPY3]], %subreg.sub_vrm1_1
106106
; CHECK-NEXT: $v0 = COPY [[COPY1]]
107-
; CHECK-NEXT: [[PseudoVLSEG2E8FF_V_M1_MASK:%[0-9]+]]:vrn2m1nov0, [[PseudoVLSEG2E8FF_V_M1_MASK1:%[0-9]+]]:gpr = PseudoVLSEG2E8FF_V_M1_MASK [[REG_SEQUENCE]], [[COPY2]], $v0, [[COPY]], 3 /* e8 */, 0, implicit-def dead $vl
107+
; CHECK-NEXT: [[PseudoVLSEG2E8FF_V_M1_MASK:%[0-9]+]]:vrn2m1nov0, [[PseudoVLSEG2E8FF_V_M1_MASK1:%[0-9]+]]:gpr = PseudoVLSEG2E8FF_V_M1_MASK [[REG_SEQUENCE]], [[COPY2]], $v0, [[COPY]], 3 /* e8 */, 0 /* tu, mu */, implicit-def dead $vl
108108
; CHECK-NEXT: $x10 = COPY [[PseudoVLSEG2E8FF_V_M1_MASK1]]
109109
; CHECK-NEXT: PseudoRET implicit $x10
110110
entry:

llvm/test/CodeGen/RISCV/rvv/vsetvli-insert-crossbb.mir

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -518,7 +518,7 @@ body: |
518518
; CHECK-NEXT: [[PseudoVMSEQ_VI_MF2_:%[0-9]+]]:vmv0 = PseudoVMSEQ_VI_MF2 killed [[PseudoVID_V_MF2_]], 0, -1, 5 /* e32 */, implicit $vl, implicit $vtype
519519
; CHECK-NEXT: $v0 = COPY [[PseudoVMSEQ_VI_MF2_]]
520520
; CHECK-NEXT: dead $x0 = PseudoVSETVLIX0 killed $x0, 23 /* e32, mf2, tu, mu */, implicit-def $vl, implicit-def $vtype, implicit $vl
521-
; CHECK-NEXT: [[PseudoVLE32_V_MF2_MASK:%[0-9]+]]:vrnov0 = PseudoVLE32_V_MF2_MASK [[PseudoVMV_V_I_MF2_]], killed [[COPY]], $v0, -1, 5 /* e32 */, 0, implicit $vl, implicit $vtype
521+
; CHECK-NEXT: [[PseudoVLE32_V_MF2_MASK:%[0-9]+]]:vrnov0 = PseudoVLE32_V_MF2_MASK [[PseudoVMV_V_I_MF2_]], killed [[COPY]], $v0, -1, 5 /* e32 */, 0 /* tu, mu */, implicit $vl, implicit $vtype
522522
; CHECK-NEXT: dead $x0 = PseudoVSETVLIX0 killed $x0, 69 /* e8, mf8, ta, mu */, implicit-def $vl, implicit-def $vtype, implicit $vl
523523
; CHECK-NEXT: [[PseudoVCPOP_M_B1_:%[0-9]+]]:gpr = PseudoVCPOP_M_B1 [[PseudoVMSEQ_VI_MF2_]], -1, 0 /* e8 */, implicit $vl, implicit $vtype
524524
; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr = COPY $x0
@@ -854,7 +854,7 @@ body: |
854854
; CHECK-NEXT: {{ $}}
855855
; CHECK-NEXT: $v0 = COPY %mask
856856
; CHECK-NEXT: dead $x0 = PseudoVSETVLIX0 killed $x0, 69 /* e8, mf8, ta, mu */, implicit-def $vl, implicit-def $vtype, implicit $vl
857-
; CHECK-NEXT: early-clobber %t0:vrnov0 = PseudoVLUXEI64_V_M1_MF8_MASK %t5, killed %inaddr, %idxs, $v0, -1, 3 /* e8 */, 1, implicit $vl, implicit $vtype
857+
; CHECK-NEXT: early-clobber %t0:vrnov0 = PseudoVLUXEI64_V_M1_MF8_MASK %t5, killed %inaddr, %idxs, $v0, -1, 3 /* e8 */, 1 /* ta, mu */, implicit $vl, implicit $vtype
858858
; CHECK-NEXT: %ldval:vr = COPY %t0
859859
; CHECK-NEXT: PseudoBR %bb.3
860860
; CHECK-NEXT: {{ $}}

0 commit comments

Comments
 (0)