@@ -8335,23 +8335,40 @@ static unsigned getRVVReductionOp(unsigned ISDOpcode) {
8335
8335
switch (ISDOpcode) {
8336
8336
default:
8337
8337
llvm_unreachable("Unhandled reduction");
8338
+ case ISD::VP_REDUCE_ADD:
8338
8339
case ISD::VECREDUCE_ADD:
8339
8340
return RISCVISD::VECREDUCE_ADD_VL;
8341
+ case ISD::VP_REDUCE_UMAX:
8340
8342
case ISD::VECREDUCE_UMAX:
8341
8343
return RISCVISD::VECREDUCE_UMAX_VL;
8344
+ case ISD::VP_REDUCE_SMAX:
8342
8345
case ISD::VECREDUCE_SMAX:
8343
8346
return RISCVISD::VECREDUCE_SMAX_VL;
8347
+ case ISD::VP_REDUCE_UMIN:
8344
8348
case ISD::VECREDUCE_UMIN:
8345
8349
return RISCVISD::VECREDUCE_UMIN_VL;
8350
+ case ISD::VP_REDUCE_SMIN:
8346
8351
case ISD::VECREDUCE_SMIN:
8347
8352
return RISCVISD::VECREDUCE_SMIN_VL;
8353
+ case ISD::VP_REDUCE_AND:
8348
8354
case ISD::VECREDUCE_AND:
8349
8355
return RISCVISD::VECREDUCE_AND_VL;
8356
+ case ISD::VP_REDUCE_OR:
8350
8357
case ISD::VECREDUCE_OR:
8351
8358
return RISCVISD::VECREDUCE_OR_VL;
8359
+ case ISD::VP_REDUCE_XOR:
8352
8360
case ISD::VECREDUCE_XOR:
8353
8361
return RISCVISD::VECREDUCE_XOR_VL;
8362
+ case ISD::VP_REDUCE_FADD:
8363
+ return RISCVISD::VECREDUCE_FADD_VL;
8364
+ case ISD::VP_REDUCE_SEQ_FADD:
8365
+ return RISCVISD::VECREDUCE_SEQ_FADD_VL;
8366
+ case ISD::VP_REDUCE_FMAX:
8367
+ return RISCVISD::VECREDUCE_FMAX_VL;
8368
+ case ISD::VP_REDUCE_FMIN:
8369
+ return RISCVISD::VECREDUCE_FMIN_VL;
8354
8370
}
8371
+
8355
8372
}
8356
8373
8357
8374
SDValue RISCVTargetLowering::lowerVectorMaskVecReduction(SDValue Op,
@@ -8583,37 +8600,6 @@ SDValue RISCVTargetLowering::lowerFPVECREDUCE(SDValue Op,
8583
8600
VectorVal, Mask, VL, DL, DAG, Subtarget);
8584
8601
}
8585
8602
8586
- static unsigned getRVVVPReductionOp(unsigned ISDOpcode) {
8587
- switch (ISDOpcode) {
8588
- default:
8589
- llvm_unreachable("Unhandled reduction");
8590
- case ISD::VP_REDUCE_ADD:
8591
- return RISCVISD::VECREDUCE_ADD_VL;
8592
- case ISD::VP_REDUCE_UMAX:
8593
- return RISCVISD::VECREDUCE_UMAX_VL;
8594
- case ISD::VP_REDUCE_SMAX:
8595
- return RISCVISD::VECREDUCE_SMAX_VL;
8596
- case ISD::VP_REDUCE_UMIN:
8597
- return RISCVISD::VECREDUCE_UMIN_VL;
8598
- case ISD::VP_REDUCE_SMIN:
8599
- return RISCVISD::VECREDUCE_SMIN_VL;
8600
- case ISD::VP_REDUCE_AND:
8601
- return RISCVISD::VECREDUCE_AND_VL;
8602
- case ISD::VP_REDUCE_OR:
8603
- return RISCVISD::VECREDUCE_OR_VL;
8604
- case ISD::VP_REDUCE_XOR:
8605
- return RISCVISD::VECREDUCE_XOR_VL;
8606
- case ISD::VP_REDUCE_FADD:
8607
- return RISCVISD::VECREDUCE_FADD_VL;
8608
- case ISD::VP_REDUCE_SEQ_FADD:
8609
- return RISCVISD::VECREDUCE_SEQ_FADD_VL;
8610
- case ISD::VP_REDUCE_FMAX:
8611
- return RISCVISD::VECREDUCE_FMAX_VL;
8612
- case ISD::VP_REDUCE_FMIN:
8613
- return RISCVISD::VECREDUCE_FMIN_VL;
8614
- }
8615
- }
8616
-
8617
8603
SDValue RISCVTargetLowering::lowerVPREDUCE(SDValue Op,
8618
8604
SelectionDAG &DAG) const {
8619
8605
SDLoc DL(Op);
@@ -8626,7 +8612,7 @@ SDValue RISCVTargetLowering::lowerVPREDUCE(SDValue Op,
8626
8612
return SDValue();
8627
8613
8628
8614
MVT VecVT = VecEVT.getSimpleVT();
8629
- unsigned RVVOpcode = getRVVVPReductionOp (Op.getOpcode());
8615
+ unsigned RVVOpcode = getRVVReductionOp (Op.getOpcode());
8630
8616
8631
8617
if (VecVT.isFixedLengthVector()) {
8632
8618
auto ContainerVT = getContainerForFixedLengthVector(VecVT);
0 commit comments