1111//===----------------------------------------------------------------------===//
1212
1313//===----------------------------------------------------------------------===//
14+ // Operand definitions.
15+ //===----------------------------------------------------------------------===//
16+
17+ // A 7-bit unsigned immediate where the least significant three bits are zero.
18+ def uimm7_lsb000 : RISCVOp,
19+ ImmLeaf<XLenVT, [{return isShiftedUInt<4, 3>(Imm);}]> {
20+ let ParserMatchClass = UImmAsmOperand<7, "Lsb000">;
21+ let EncoderMethod = "getImmOpValue";
22+ let DecoderMethod = "decodeUImmOperand<7>";
23+ let OperandType = "OPERAND_UIMM7_LSB000";
24+ let MCOperandPredicate = [{
25+ int64_t Imm;
26+ if (!MCOp.evaluateAsConstantImm(Imm))
27+ return false;
28+ return isShiftedUInt<4, 3>(Imm);
29+ }];
30+ }
1431
32+ //===----------------------------------------------------------------------===//
1533// MIPS extensions
1634//===----------------------------------------------------------------------===//
1735
18- let Predicates = [HasVendorMIPSCMove], hasSideEffects = 0, mayLoad = 0, mayStore = 0, DecoderNamespace = "Xmipscomve" in {
36+ let Predicates = [HasVendorXMIPSCMove], hasSideEffects = 0, mayLoad = 0, mayStore = 0,
37+ DecoderNamespace = "Xmipscmove" in {
1938def CCMOV : RVInstR4<0b11, 0b011, OPC_CUSTOM_0, (outs GPR:$rd),
2039 (ins GPR:$rs1, GPR:$rs2, GPR:$rs3),
2140 "mips.ccmov", "$rd, $rs2, $rs1, $rs3">,
2241 Sched<[]>;
2342}
2443
25- let Predicates = [HasVendorMIPSCMove ] in {
44+ let Predicates = [UseCCMovInsn ] in {
2645def : Pat<(select (XLenVT (setne (XLenVT GPR:$rs2), (XLenVT 0))),
2746 (XLenVT GPR:$rs1), (XLenVT GPR:$rs3)),
2847 (CCMOV GPR:$rs1, GPR:$rs2, GPR:$rs3)>;
@@ -41,42 +60,36 @@ def : Pat<(select (XLenVT (seteq (XLenVT GPR:$x), (XLenVT simm12_plus1:$y))),
4160def : Pat<(select (XLenVT (seteq (XLenVT GPR:$x), (XLenVT GPR:$y))),
4261 (XLenVT GPR:$rs3), (XLenVT GPR:$rs1)),
4362 (CCMOV GPR:$rs1, (XOR GPR:$x, GPR:$y), GPR:$rs3)>;
44- def : Pat<(select (XLenVT (setuge (XLenVT GPR:$x), (XLenVT GPR:$y))),
45- (XLenVT GPR:$rs3), (XLenVT GPR:$rs1)),
46- (CCMOV GPR:$rs1, (SLTU GPR:$x, GPR:$y), GPR:$rs3)>;
47- def : Pat<(select (XLenVT (setge (XLenVT GPR:$x), (XLenVT GPR:$y))),
48- (XLenVT GPR:$rs3), (XLenVT GPR:$rs1)),
49- (CCMOV GPR:$rs1, (SLT GPR:$x, GPR:$y), GPR:$rs3)>;
50- def : Pat<(select (XLenVT (setle (XLenVT GPR:$y), (XLenVT GPR:$x))),
51- (XLenVT GPR:$rs3), (XLenVT GPR:$rs1)),
52- (CCMOV GPR:$rs1, (SLT GPR:$x, GPR:$y), GPR:$rs3)>;
5363def : Pat<(select (XLenVT GPR:$rs2), (XLenVT GPR:$rs1), (XLenVT GPR:$rs3)),
5464 (CCMOV GPR:$rs1, GPR:$rs2, GPR:$rs3)>;
5565}
5666
57- let Predicates = [HasVendorMIPSLoadStorePairs], hasSideEffects = 0, DecoderNamespace = "Xmipslsp" in {
67+ let Predicates = [HasVendorXMIPSLSP], hasSideEffects = 0,
68+ DecoderNamespace = "Xmipslsp" in {
69+
5870def LWP : LWPFormat<(outs GPR:$rd1, GPR:$rd2), (ins GPR:$rs1, uimm7_lsb00:$imm7),
5971 "mips.lwp", "$rd1, $rd2, ${imm7}(${rs1})">,
60- Sched<[WriteLDW, WriteLDW, ReadMemBase]> {
61- let mayLoad = 1;
62- let mayStore = 0;
72+ Sched<[WriteLDW, WriteLDW, ReadMemBase]> {
73+ let mayLoad = 1;
74+ let mayStore = 0;
6375}
6476def LDP : LDPFormat<(outs GPR:$rd1, GPR:$rd2), (ins GPR:$rs1, uimm7_lsb000:$imm7),
6577 "mips.ldp", "$rd1, $rd2, ${imm7}(${rs1})">,
66- Sched<[WriteLDD, WriteLDD, ReadMemBase]> {
67- let mayLoad = 1;
68- let mayStore = 0;
78+ Sched<[WriteLDD, WriteLDD, ReadMemBase]> {
79+ let mayLoad = 1;
80+ let mayStore = 0;
6981}
7082def SWP : SWPFormat<(outs), (ins GPR:$rs2, GPR:$rs3, GPR:$rs1, uimm7_lsb00:$imm7),
7183 "mips.swp", "$rs2, $rs3, ${imm7}(${rs1})">,
72- Sched<[WriteSTW, ReadStoreData, ReadStoreData, ReadMemBase]> {
73- let mayLoad = 0;
74- let mayStore = 1;
84+ Sched<[WriteSTW, ReadStoreData, ReadStoreData, ReadMemBase]> {
85+ let mayLoad = 0;
86+ let mayStore = 1;
7587}
7688def SDP : SDPFormat<(outs), (ins GPR:$rs2, GPR:$rs3, GPR:$rs1, uimm7_lsb000:$imm7),
7789 "mips.sdp", "$rs2, $rs3, ${imm7}(${rs1})">,
78- Sched<[WriteSTD, ReadStoreData, ReadStoreData, ReadMemBase]> {
79- let mayLoad = 0;
80- let mayStore = 1;
90+ Sched<[WriteSTD, ReadStoreData, ReadStoreData, ReadMemBase]> {
91+ let mayLoad = 0;
92+ let mayStore = 1;
8193}
94+
8295}
0 commit comments