Skip to content

Commit 94187bf

Browse files
fixup! fix after rebase
1 parent 3e46864 commit 94187bf

File tree

2 files changed

+13
-10
lines changed

2 files changed

+13
-10
lines changed

llvm/lib/Target/RISCV/RISCVVLOptimizer.cpp

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -711,19 +711,16 @@ getOperandLog2EEW(const MachineOperand &MO, const MachineRegisterInfo *MRI) {
711711
}
712712

713713
// Vector Widening Integer Reduction Instructions
714-
// The Dest and VS1 read only element 0 for the vector register. Return 2*EEW
715-
// for these. VS2 has EEW=SEW and EMUL=LMUL.
714+
// The Dest and VS1 read only element 0 for the vector register. Return
715+
// 2*EEW for these. VS2 has EEW=SEW and EMUL=LMUL.
716716
case RISCV::VWREDSUM_VS:
717717
case RISCV::VWREDSUMU_VS:
718718
// Vector Widening Floating-Point Reduction Instructions
719719
case RISCV::VFWREDOSUM_VS:
720720
case RISCV::VFWREDUSUM_VS: {
721721
bool TwoTimes = IsMODef || MO.getOperandNo() == 3;
722722
unsigned Log2EEW = TwoTimes ? MILog2SEW + 1 : MILog2SEW;
723-
if (MO.getOperandNo() == 2)
724-
return OperandInfo(
725-
RISCVVType::getEMULEqualsEEWDivSEWTimesLMUL(Log2EEW, MI), Log2EEW);
726-
return OperandInfo(Log2EEW);
723+
return Log2EEW;
727724
}
728725

729726
default:
@@ -745,6 +742,8 @@ getOperandInfo(const MachineOperand &MO, const MachineRegisterInfo *MRI) {
745742
switch (RVV->BaseInstr) {
746743
// Vector Reduction Operations
747744
// Vector Single-Width Integer Reduction Instructions
745+
// Vector Widening Integer Reduction Instructions
746+
// Vector Widening Floating-Point Reduction Instructions
748747
// The Dest and VS1 only read element 0 of the vector register. Return just
749748
// the EEW for these.
750749
case RISCV::VREDAND_VS:
@@ -755,6 +754,10 @@ getOperandInfo(const MachineOperand &MO, const MachineRegisterInfo *MRI) {
755754
case RISCV::VREDOR_VS:
756755
case RISCV::VREDSUM_VS:
757756
case RISCV::VREDXOR_VS:
757+
case RISCV::VWREDSUM_VS:
758+
case RISCV::VWREDSUMU_VS:
759+
case RISCV::VFWREDOSUM_VS:
760+
case RISCV::VFWREDUSUM_VS:
758761
if (MO.getOperandNo() != 2)
759762
return OperandInfo(*Log2EEW);
760763
break;

llvm/test/CodeGen/RISCV/rvv/vl-opt-op-info.mir

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1342,9 +1342,9 @@ body: |
13421342
name: vwred_vs2
13431343
body: |
13441344
bb.0:
1345-
; CHECK-LABEL: name: vred_vs2
1346-
; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */
1347-
; CHECK-NEXT: %y:vr = PseudoVREDAND_VS_M1_E8 $noreg, %x, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */
1345+
; CHECK-LABEL: name: vwred_vs2
1346+
; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1, 4 /* e16 */, 0 /* tu, mu */
1347+
; CHECK-NEXT: %y:vr = PseudoVWREDSUM_VS_M1_E8 $noreg, $noreg, %x, 1, 3 /* e8 */, 0 /* tu, mu */
13481348
%x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 4 /* e16 */, 0
13491349
%y:vr = PseudoVWREDSUM_VS_M1_E8 $noreg, $noreg, %x, 1, 3 /* e8 */, 0
13501350
...
@@ -1382,7 +1382,7 @@ body: |
13821382
name: vwred_incompatible_emul
13831383
body: |
13841384
bb.0:
1385-
; CHECK-LABEL: name: vwred_vs1_incompatible_emul
1385+
; CHECK-LABEL: name: vwred_incompatible_emul
13861386
; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */
13871387
; CHECK-NEXT: %y:vr = PseudoVWREDSUM_VS_MF2_E8 $noreg, %x, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */
13881388
%x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0

0 commit comments

Comments
 (0)