Skip to content

Commit

Permalink
[RISCV] Refactor vfcvt_rm pseudo insertion case statements. NFC
Browse files Browse the repository at this point in the history
Reviewed By: craig.topper

Differential Revision: https://reviews.llvm.org/D154258
  • Loading branch information
lukel97 committed Jul 3, 2023
1 parent 35041a4 commit 49899cd
Showing 1 changed file with 36 additions and 159 deletions.
195 changes: 36 additions & 159 deletions llvm/lib/Target/RISCV/RISCVISelLowering.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14035,165 +14035,42 @@ RISCVTargetLowering::EmitInstrWithCustomInserter(MachineInstr &MI,
return emitQuietFCMP(MI, BB, RISCV::FLT_D_IN32X, RISCV::FEQ_D_IN32X,
Subtarget);

// =========================================================================
// VFCVT
// =========================================================================

case RISCV::PseudoVFCVT_RM_X_F_V_M1_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFCVT_X_F_V_M1_MASK);
case RISCV::PseudoVFCVT_RM_X_F_V_M2_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFCVT_X_F_V_M2_MASK);
case RISCV::PseudoVFCVT_RM_X_F_V_M4_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFCVT_X_F_V_M4_MASK);
case RISCV::PseudoVFCVT_RM_X_F_V_M8_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFCVT_X_F_V_M8_MASK);
case RISCV::PseudoVFCVT_RM_X_F_V_MF2_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFCVT_X_F_V_MF2_MASK);
case RISCV::PseudoVFCVT_RM_X_F_V_MF4_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFCVT_X_F_V_MF4_MASK);

case RISCV::PseudoVFCVT_RM_XU_F_V_M1_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFCVT_XU_F_V_M1_MASK);
case RISCV::PseudoVFCVT_RM_XU_F_V_M2_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFCVT_XU_F_V_M2_MASK);
case RISCV::PseudoVFCVT_RM_XU_F_V_M4_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFCVT_XU_F_V_M4_MASK);
case RISCV::PseudoVFCVT_RM_XU_F_V_M8_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFCVT_XU_F_V_M8_MASK);
case RISCV::PseudoVFCVT_RM_XU_F_V_MF2_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFCVT_XU_F_V_MF2_MASK);
case RISCV::PseudoVFCVT_RM_XU_F_V_MF4_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFCVT_XU_F_V_MF4_MASK);

case RISCV::PseudoVFCVT_RM_F_XU_V_M1_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFCVT_F_XU_V_M1_MASK);
case RISCV::PseudoVFCVT_RM_F_XU_V_M2_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFCVT_F_XU_V_M2_MASK);
case RISCV::PseudoVFCVT_RM_F_XU_V_M4_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFCVT_F_XU_V_M4_MASK);
case RISCV::PseudoVFCVT_RM_F_XU_V_M8_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFCVT_F_XU_V_M8_MASK);
case RISCV::PseudoVFCVT_RM_F_XU_V_MF2_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFCVT_F_XU_V_MF2_MASK);
case RISCV::PseudoVFCVT_RM_F_XU_V_MF4_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFCVT_F_XU_V_MF4_MASK);

case RISCV::PseudoVFCVT_RM_F_X_V_M1_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFCVT_F_X_V_M1_MASK);
case RISCV::PseudoVFCVT_RM_F_X_V_M2_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFCVT_F_X_V_M2_MASK);
case RISCV::PseudoVFCVT_RM_F_X_V_M4_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFCVT_F_X_V_M4_MASK);
case RISCV::PseudoVFCVT_RM_F_X_V_M8_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFCVT_F_X_V_M8_MASK);
case RISCV::PseudoVFCVT_RM_F_X_V_MF2_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFCVT_F_X_V_MF2_MASK);
case RISCV::PseudoVFCVT_RM_F_X_V_MF4_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFCVT_F_X_V_MF4_MASK);

// =========================================================================
// VFWCVT
// =========================================================================

case RISCV::PseudoVFWCVT_RM_XU_F_V_M1_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFWCVT_XU_F_V_M1_MASK);
case RISCV::PseudoVFWCVT_RM_XU_F_V_M2_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFWCVT_XU_F_V_M2_MASK);
case RISCV::PseudoVFWCVT_RM_XU_F_V_M4_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFWCVT_XU_F_V_M4_MASK);
case RISCV::PseudoVFWCVT_RM_XU_F_V_MF2_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFWCVT_XU_F_V_MF2_MASK);
case RISCV::PseudoVFWCVT_RM_XU_F_V_MF4_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFWCVT_XU_F_V_MF4_MASK);

case RISCV::PseudoVFWCVT_RM_X_F_V_M1_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFWCVT_X_F_V_M1_MASK);
case RISCV::PseudoVFWCVT_RM_X_F_V_M2_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFWCVT_X_F_V_M2_MASK);
case RISCV::PseudoVFWCVT_RM_X_F_V_M4_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFWCVT_X_F_V_M4_MASK);
case RISCV::PseudoVFWCVT_RM_X_F_V_MF2_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFWCVT_X_F_V_MF2_MASK);
case RISCV::PseudoVFWCVT_RM_X_F_V_MF4_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFWCVT_X_F_V_MF4_MASK);

case RISCV::PseudoVFWCVT_RM_F_XU_V_M1_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFWCVT_F_XU_V_M1_MASK);
case RISCV::PseudoVFWCVT_RM_F_XU_V_M2_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFWCVT_F_XU_V_M2_MASK);
case RISCV::PseudoVFWCVT_RM_F_XU_V_M4_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFWCVT_F_XU_V_M4_MASK);
case RISCV::PseudoVFWCVT_RM_F_XU_V_MF2_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFWCVT_F_XU_V_MF2_MASK);
case RISCV::PseudoVFWCVT_RM_F_XU_V_MF4_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFWCVT_F_XU_V_MF4_MASK);
case RISCV::PseudoVFWCVT_RM_F_XU_V_MF8_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFWCVT_F_XU_V_MF8_MASK);

case RISCV::PseudoVFWCVT_RM_F_X_V_M1_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFWCVT_F_X_V_M1_MASK);
case RISCV::PseudoVFWCVT_RM_F_X_V_M2_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFWCVT_F_X_V_M2_MASK);
case RISCV::PseudoVFWCVT_RM_F_X_V_M4_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFWCVT_F_X_V_M4_MASK);
case RISCV::PseudoVFWCVT_RM_F_X_V_MF2_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFWCVT_F_X_V_MF2_MASK);
case RISCV::PseudoVFWCVT_RM_F_X_V_MF4_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFWCVT_F_X_V_MF4_MASK);
case RISCV::PseudoVFWCVT_RM_F_X_V_MF8_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFWCVT_F_X_V_MF8_MASK);

// =========================================================================
// VFNCVT
// =========================================================================

case RISCV::PseudoVFNCVT_RM_XU_F_W_M1_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFNCVT_XU_F_W_M1_MASK);
case RISCV::PseudoVFNCVT_RM_XU_F_W_M2_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFNCVT_XU_F_W_M2_MASK);
case RISCV::PseudoVFNCVT_RM_XU_F_W_M4_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFNCVT_XU_F_W_M4_MASK);
case RISCV::PseudoVFNCVT_RM_XU_F_W_MF2_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFNCVT_XU_F_W_MF2_MASK);
case RISCV::PseudoVFNCVT_RM_XU_F_W_MF4_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFNCVT_XU_F_W_MF4_MASK);
case RISCV::PseudoVFNCVT_RM_XU_F_W_MF8_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFNCVT_XU_F_W_MF8_MASK);

case RISCV::PseudoVFNCVT_RM_X_F_W_M1_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFNCVT_X_F_W_M1_MASK);
case RISCV::PseudoVFNCVT_RM_X_F_W_M2_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFNCVT_X_F_W_M2_MASK);
case RISCV::PseudoVFNCVT_RM_X_F_W_M4_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFNCVT_X_F_W_M4_MASK);
case RISCV::PseudoVFNCVT_RM_X_F_W_MF2_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFNCVT_X_F_W_MF2_MASK);
case RISCV::PseudoVFNCVT_RM_X_F_W_MF4_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFNCVT_X_F_W_MF4_MASK);
case RISCV::PseudoVFNCVT_RM_X_F_W_MF8_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFNCVT_X_F_W_MF8_MASK);

case RISCV::PseudoVFNCVT_RM_F_XU_W_M1_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFNCVT_F_XU_W_M1_MASK);
case RISCV::PseudoVFNCVT_RM_F_XU_W_M2_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFNCVT_F_XU_W_M2_MASK);
case RISCV::PseudoVFNCVT_RM_F_XU_W_M4_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFNCVT_F_XU_W_M4_MASK);
case RISCV::PseudoVFNCVT_RM_F_XU_W_MF2_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFNCVT_F_XU_W_MF2_MASK);
case RISCV::PseudoVFNCVT_RM_F_XU_W_MF4_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFNCVT_F_XU_W_MF4_MASK);

case RISCV::PseudoVFNCVT_RM_F_X_W_M1_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFNCVT_F_X_W_M1_MASK);
case RISCV::PseudoVFNCVT_RM_F_X_W_M2_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFNCVT_F_X_W_M2_MASK);
case RISCV::PseudoVFNCVT_RM_F_X_W_M4_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFNCVT_F_X_W_M4_MASK);
case RISCV::PseudoVFNCVT_RM_F_X_W_MF2_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFNCVT_F_X_W_MF2_MASK);
case RISCV::PseudoVFNCVT_RM_F_X_W_MF4_MASK:
return emitVFCVT_RM_MASK(MI, BB, RISCV::PseudoVFNCVT_F_X_W_MF4_MASK);
#define PseudoVFCVT_RM_LMUL_CASE(RMOpc, Opc, LMUL) \
case RISCV::RMOpc##_##LMUL##_MASK: \
return emitVFCVT_RM_MASK(MI, BB, RISCV::Opc##_##LMUL##_MASK);

#define PseudoVFCVT_RM_CASE(RMOpc, Opc) \
PseudoVFCVT_RM_LMUL_CASE(RMOpc, Opc, M1) \
PseudoVFCVT_RM_LMUL_CASE(RMOpc, Opc, M2) \
PseudoVFCVT_RM_LMUL_CASE(RMOpc, Opc, M4) \
PseudoVFCVT_RM_LMUL_CASE(RMOpc, Opc, MF2) \
PseudoVFCVT_RM_LMUL_CASE(RMOpc, Opc, MF4)

#define PseudoVFCVT_RM_CASE_M8(RMOpc, Opc) \
PseudoVFCVT_RM_CASE(RMOpc, Opc) \
PseudoVFCVT_RM_LMUL_CASE(RMOpc, Opc, M8)

#define PseudoVFCVT_RM_CASE_MF8(RMOpc, Opc) \
PseudoVFCVT_RM_CASE(RMOpc, Opc) \
PseudoVFCVT_RM_LMUL_CASE(RMOpc, Opc, MF8)

// VFCVT
PseudoVFCVT_RM_CASE_M8(PseudoVFCVT_RM_X_F_V, PseudoVFCVT_X_F_V)
PseudoVFCVT_RM_CASE_M8(PseudoVFCVT_RM_XU_F_V, PseudoVFCVT_XU_F_V)
PseudoVFCVT_RM_CASE_M8(PseudoVFCVT_RM_F_XU_V, PseudoVFCVT_F_XU_V)
PseudoVFCVT_RM_CASE_M8(PseudoVFCVT_RM_F_X_V, PseudoVFCVT_F_X_V)

// VFWCVT
PseudoVFCVT_RM_CASE(PseudoVFWCVT_RM_XU_F_V, PseudoVFWCVT_XU_F_V);
PseudoVFCVT_RM_CASE(PseudoVFWCVT_RM_X_F_V, PseudoVFWCVT_X_F_V);
PseudoVFCVT_RM_CASE_MF8(PseudoVFWCVT_RM_F_XU_V, PseudoVFWCVT_F_XU_V);
PseudoVFCVT_RM_CASE_MF8(PseudoVFWCVT_RM_F_X_V, PseudoVFWCVT_F_X_V);

// VFNCVT
PseudoVFCVT_RM_CASE_MF8(PseudoVFNCVT_RM_XU_F_W, PseudoVFNCVT_XU_F_W);
PseudoVFCVT_RM_CASE_MF8(PseudoVFNCVT_RM_X_F_W, PseudoVFNCVT_X_F_W);
PseudoVFCVT_RM_CASE(PseudoVFNCVT_RM_F_XU_W, PseudoVFNCVT_F_XU_W);
PseudoVFCVT_RM_CASE(PseudoVFNCVT_RM_F_X_W, PseudoVFNCVT_F_X_W);

case RISCV::PseudoVFROUND_NOEXCEPT_V_M1_MASK:
return emitVFROUND_NOEXCEPT_MASK(MI, BB, RISCV::PseudoVFCVT_X_F_V_M1_MASK,
Expand Down

0 comments on commit 49899cd

Please sign in to comment.