Skip to content

Commit d60c64d

Browse files
committed
[RISCV] Remove fcvt.d.l(u) and fcvt.l(u).d instructions with _IN32X suffix.
This is the same as D152950 without depending on D152948. _IN32X instructions are for Zdinx on RV32 where doubles are split across 2 registers. fcvt.d.l(u) and fcvt.l(u).d are RV64 only instructions so we don't need _IN32X versions of them. Reviewed By: sunshaoce Differential Revision: https://reviews.llvm.org/D152952
1 parent 7371ec7 commit d60c64d

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed

llvm/lib/Target/RISCV/RISCVInstrInfoD.td

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,11 @@ defvar DFINX = [DF, DF_INX, DF_IN32X];
8585
defvar FDINX = [FD, FD_INX, FD_IN32X];
8686
defvar XDINX = [XD, XD_INX, XD_IN32X];
8787

88+
// Lists without the IN32X classes that aren't needed for some RV64-only
89+
// instructions.
90+
defvar DXINXRV64 = [DX, DX_INX];
91+
defvar XDINXRV64 = [XD, XD_INX];
92+
8893
//===----------------------------------------------------------------------===//
8994
// Instructions
9095
//===----------------------------------------------------------------------===//
@@ -160,20 +165,20 @@ defm FCVT_D_W : FPUnaryOp_r_m<0b1101001, 0b00000, 0b000, DXINX, "fcvt.d.w">,
160165
defm FCVT_D_WU : FPUnaryOp_r_m<0b1101001, 0b00001, 0b000, DXINX, "fcvt.d.wu">,
161166
Sched<[WriteFCvtI32ToF64, ReadFCvtI32ToF64]>;
162167

163-
defm FCVT_L_D : FPUnaryOp_r_frm_m<0b1100001, 0b00010, XDINX, "fcvt.l.d", [IsRV64]>,
168+
defm FCVT_L_D : FPUnaryOp_r_frm_m<0b1100001, 0b00010, XDINXRV64, "fcvt.l.d", [IsRV64]>,
164169
Sched<[WriteFCvtF64ToI64, ReadFCvtF64ToI64]>;
165170

166-
defm FCVT_LU_D : FPUnaryOp_r_frm_m<0b1100001, 0b00011, XDINX, "fcvt.lu.d", [IsRV64]>,
171+
defm FCVT_LU_D : FPUnaryOp_r_frm_m<0b1100001, 0b00011, XDINXRV64, "fcvt.lu.d", [IsRV64]>,
167172
Sched<[WriteFCvtF64ToI64, ReadFCvtF64ToI64]>;
168173

169174
let Predicates = [HasStdExtD, IsRV64], mayRaiseFPException = 0 in
170175
def FMV_X_D : FPUnaryOp_r<0b1110001, 0b00000, 0b000, GPR, FPR64, "fmv.x.d">,
171176
Sched<[WriteFMovF64ToI64, ReadFMovF64ToI64]>;
172177

173-
defm FCVT_D_L : FPUnaryOp_r_frm_m<0b1101001, 0b00010, DXINX, "fcvt.d.l", [IsRV64]>,
178+
defm FCVT_D_L : FPUnaryOp_r_frm_m<0b1101001, 0b00010, DXINXRV64, "fcvt.d.l", [IsRV64]>,
174179
Sched<[WriteFCvtI64ToF64, ReadFCvtI64ToF64]>;
175180

176-
defm FCVT_D_LU : FPUnaryOp_r_frm_m<0b1101001, 0b00011, DXINX, "fcvt.d.lu", [IsRV64]>,
181+
defm FCVT_D_LU : FPUnaryOp_r_frm_m<0b1101001, 0b00011, DXINXRV64, "fcvt.d.lu", [IsRV64]>,
177182
Sched<[WriteFCvtI64ToF64, ReadFCvtI64ToF64]>;
178183

179184
let Predicates = [HasStdExtD, IsRV64], mayRaiseFPException = 0 in

0 commit comments

Comments
 (0)