10
10
//
11
11
//===----------------------------------------------------------------------===//
12
12
13
- let DecoderNamespace = "XCV",
14
- hasSideEffects = 0, mayLoad = 0, mayStore = 0 in {
13
+ let hasSideEffects = 0, mayLoad = 0, mayStore = 0 in {
15
14
class CVInstBitManipRII<bits<2> funct2, bits<3> funct3, dag outs, dag ins,
16
15
string opcodestr, string argstr>
17
16
: RVInstIBase<funct3, OPC_CUSTOM_2, outs, ins, opcodestr, argstr> {
@@ -37,9 +36,9 @@ let DecoderNamespace = "XCV",
37
36
(ins GPR:$rs1), opcodestr, "$rd, $rs1"> {
38
37
let rs2 = 0b00000;
39
38
}
40
- } // DecoderNamespace = "XCV", hasSideEffects = 0, mayLoad = 0, mayStore = 0
39
+ } // hasSideEffects = 0, mayLoad = 0, mayStore = 0
41
40
42
- let Predicates = [HasVendorXCVbitmanip, IsRV32] in {
41
+ let Predicates = [HasVendorXCVbitmanip, IsRV32], DecoderNamespace = "XCV" in {
43
42
def CV_EXTRACT : CVBitManipRII<0b00, 0b000, "cv.extract">;
44
43
def CV_EXTRACTU : CVBitManipRII<0b01, 0b000, "cv.extractu">;
45
44
@@ -54,8 +53,7 @@ let Predicates = [HasVendorXCVbitmanip, IsRV32] in {
54
53
def CV_INSERT : CVInstBitManipRII<0b10, 0b000, (outs GPR:$rd_wb),
55
54
(ins GPR:$rd, GPR:$rs1, uimm5:$is3, uimm5:$is2),
56
55
"cv.insert", "$rd, $rs1, $is3, $is2">;
57
- let DecoderNamespace = "XCV",
58
- hasSideEffects = 0, mayLoad = 0, mayStore = 0 in
56
+ let hasSideEffects = 0, mayLoad = 0, mayStore = 0 in
59
57
def CV_INSERTR : RVInstR<0b0011010, 0b011, OPC_CUSTOM_1, (outs GPR:$rd_wb),
60
58
(ins GPR:$rd, GPR:$rs1, GPR:$rs2),
61
59
"cv.insertr", "$rd, $rs1, $rs2">;
@@ -79,7 +77,6 @@ class CVInstMac<bits<7> funct7, bits<3> funct3, string opcodestr>
79
77
let hasSideEffects = 0;
80
78
let mayLoad = 0;
81
79
let mayStore = 0;
82
- let DecoderNamespace = "XCV";
83
80
}
84
81
85
82
class CVInstMacMulN<bits<2> funct2, bits<3> funct3, dag outs, dag ins,
@@ -94,8 +91,6 @@ class CVInstMacMulN<bits<2> funct2, bits<3> funct3, dag outs, dag ins,
94
91
let hasSideEffects = 0;
95
92
let mayLoad = 0;
96
93
let mayStore = 0;
97
-
98
- let DecoderNamespace = "XCV";
99
94
}
100
95
101
96
class CVInstMacN<bits<2> funct2, bits<3> funct3, string opcodestr>
@@ -108,7 +103,7 @@ class CVInstMulN<bits<2> funct2, bits<3> funct3, string opcodestr>
108
103
: CVInstMacMulN<funct2, funct3, (outs GPR:$rd),
109
104
(ins GPR:$rs1, GPR:$rs2, uimm5:$imm5), opcodestr>;
110
105
111
- let Predicates = [HasVendorXCVmac, IsRV32] in {
106
+ let Predicates = [HasVendorXCVmac, IsRV32], DecoderNamespace = "XCV" in {
112
107
// 32x32 bit macs
113
108
def CV_MAC : CVInstMac<0b1001000, 0b011, "cv.mac">,
114
109
Sched<[]>;
@@ -154,7 +149,9 @@ let Predicates = [HasVendorXCVmac, IsRV32] in {
154
149
Sched<[]>;
155
150
def CV_MULHHURN : CVInstMulN<0b11, 0b101, "cv.mulhhurn">,
156
151
Sched<[]>;
152
+ } // Predicates = [HasVendorXCVmac, IsRV32], DecoderNamespace = "XCV"
157
153
154
+ let Predicates = [HasVendorXCVmac, IsRV32] in {
158
155
// Xcvmac Pseudo Instructions
159
156
// Signed 16x16 bit muls
160
157
def : InstAlias<"cv.muls $rd1, $rs1, $rs2",
@@ -169,8 +166,7 @@ let Predicates = [HasVendorXCVmac, IsRV32] in {
169
166
(CV_MULHHUN GPR:$rd1, GPR:$rs1, GPR:$rs2, 0)>;
170
167
} // Predicates = [HasVendorXCVmac, IsRV32]
171
168
172
- let DecoderNamespace = "XCV",
173
- hasSideEffects = 0, mayLoad = 0, mayStore = 0 in {
169
+ let hasSideEffects = 0, mayLoad = 0, mayStore = 0 in {
174
170
class CVInstAluRRI<bits<2> funct2, bits<3> funct3, string opcodestr>
175
171
: RVInstRBase<funct3, OPC_CUSTOM_2, (outs GPR:$rd),
176
172
(ins GPR:$rs1, GPR:$rs2, uimm5:$imm5), opcodestr,
@@ -206,10 +202,9 @@ let DecoderNamespace = "XCV",
206
202
opcodestr, "$rd, $rs1"> {
207
203
let rs2 = 0b00000;
208
204
}
205
+ } // hasSideEffects = 0, mayLoad = 0, mayStore = 0
209
206
210
- } // DecoderNamespace = "XCV"
211
-
212
- let Predicates = [HasVendorXCValu, IsRV32] in {
207
+ let Predicates = [HasVendorXCValu, IsRV32], DecoderNamespace = "XCV" in {
213
208
// General ALU Operations
214
209
def CV_ABS : CVInstAluR<0b0101000, 0b011, "cv.abs">,
215
210
Sched<[]>;
@@ -291,7 +286,6 @@ class CVInstSIMDRR<bits<5> funct5, bit F, bit funct1, bits<3> funct3,
291
286
let Inst{31-27} = funct5;
292
287
let Inst{26} = F;
293
288
let Inst{25} = funct1;
294
- let DecoderNamespace = "XCV";
295
289
}
296
290
297
291
class CVInstSIMDRI<bits<5> funct5, bit F, bits<3> funct3, RISCVOpcode opcode,
@@ -303,7 +297,6 @@ class CVInstSIMDRI<bits<5> funct5, bit F, bits<3> funct3, RISCVOpcode opcode,
303
297
let Inst{26} = F;
304
298
let Inst{25} = imm6{0}; // funct1 unused
305
299
let Inst{24-20} = imm6{5-1};
306
- let DecoderNamespace = "XCV";
307
300
}
308
301
309
302
let hasSideEffects = 0, mayLoad = 0, mayStore = 0 in {
@@ -392,7 +385,7 @@ multiclass CVSIMDBinaryUnsignedWb<bits<5> funct5, bit F, bit funct1, string mnem
392
385
}
393
386
394
387
395
- let Predicates = [HasVendorXCVsimd, IsRV32] in {
388
+ let Predicates = [HasVendorXCVsimd, IsRV32], DecoderNamespace = "XCV" in {
396
389
defm ADD : CVSIMDBinarySigned<0b00000, 0, 0, "add">;
397
390
defm SUB : CVSIMDBinarySigned<0b00001, 0, 0, "sub">;
398
391
defm AVG : CVSIMDBinarySigned<0b00010, 0, 0, "avg">;
@@ -499,10 +492,9 @@ class CVInstImmBranch<bits<3> funct3, dag outs, dag ins,
499
492
let hasSideEffects = 0;
500
493
let mayLoad = 0;
501
494
let mayStore = 0;
502
- let DecoderNamespace = "XCV";
503
495
}
504
496
505
- let Predicates = [HasVendorXCVbi, IsRV32] in {
497
+ let Predicates = [HasVendorXCVbi, IsRV32], DecoderNamespace = "XCV" in {
506
498
// Immediate branching operations
507
499
def CV_BEQIMM : CVInstImmBranch<0b110, (outs),
508
500
(ins GPR:$rs1, simm5:$imm5, simm13_lsb0:$imm12),
@@ -534,15 +526,13 @@ class CVLoad_ri_inc<bits<3> funct3, string opcodestr>
534
526
(ins GPRMem:$rs1, simm12:$imm12),
535
527
opcodestr, "$rd, (${rs1}), ${imm12}"> {
536
528
let Constraints = "$rs1_wb = $rs1";
537
- let DecoderNamespace = "XCV";
538
529
}
539
530
540
531
class CVLoad_rr_inc<bits<7> funct7, bits<3> funct3, string opcodestr>
541
532
: RVInstR<funct7, funct3, OPC_CUSTOM_1, (outs GPR:$rd, GPR:$rs1_wb),
542
533
(ins GPRMem:$rs1, GPR:$rs2),
543
534
opcodestr, "$rd, (${rs1}), ${rs2}"> {
544
535
let Constraints = "$rs1_wb = $rs1";
545
- let DecoderNamespace = "XCV";
546
536
}
547
537
548
538
class CVLoad_rr<bits<7> funct7, bits<3> funct3, string opcodestr>
@@ -556,11 +546,10 @@ class CVLoad_rr<bits<7> funct7, bits<3> funct3, string opcodestr>
556
546
let Inst{19-15} = cvrr{9-5};
557
547
let Inst{14-12} = funct3;
558
548
let Inst{11-7} = rd;
559
- let DecoderNamespace = "XCV";
560
549
}
561
550
} // hasSideEffects = 0, mayLoad = 1, mayStore = 0
562
551
563
- let Predicates = [HasVendorXCVmem, IsRV32] in {
552
+ let Predicates = [HasVendorXCVmem, IsRV32], DecoderNamespace = "XCV" in {
564
553
// Register-Immediate load with post-increment
565
554
def CV_LB_ri_inc : CVLoad_ri_inc<0b000, "cv.lb">;
566
555
def CV_LBU_ri_inc : CVLoad_ri_inc<0b100, "cv.lbu">;
@@ -589,7 +578,6 @@ class CVStore_ri_inc<bits<3> funct3, string opcodestr>
589
578
(ins GPR:$rs2, GPR:$rs1, simm12:$imm12),
590
579
opcodestr, "$rs2, (${rs1}), ${imm12}"> {
591
580
let Constraints = "$rs1_wb = $rs1";
592
- let DecoderNamespace = "XCV";
593
581
}
594
582
595
583
class CVStore_rr_inc<bits<3> funct3, bits<7> funct7, string opcodestr>
@@ -606,7 +594,6 @@ class CVStore_rr_inc<bits<3> funct3, bits<7> funct7, string opcodestr>
606
594
let Inst{11-7} = rs3;
607
595
let Inst{6-0} = OPC_CUSTOM_1.Value;
608
596
let Constraints = "$rs1_wb = $rs1";
609
- let DecoderNamespace = "XCV";
610
597
}
611
598
612
599
@@ -622,11 +609,10 @@ class CVStore_rr<bits<3> funct3, bits<7> funct7, string opcodestr>
622
609
let Inst{14-12} = funct3;
623
610
let Inst{11-7} = cvrr{4-0};
624
611
let Inst{6-0} = OPC_CUSTOM_1.Value;
625
- let DecoderNamespace = "XCV";
626
612
}
627
613
} // hasSideEffects = 0, mayLoad = 0, mayStore = 1
628
614
629
- let Predicates = [HasVendorXCVmem, IsRV32] in {
615
+ let Predicates = [HasVendorXCVmem, IsRV32], DecoderNamespace = "XCV" in {
630
616
// Register-Immediate store with post-increment
631
617
def CV_SB_ri_inc : CVStore_ri_inc<0b000, "cv.sb">;
632
618
def CV_SH_ri_inc : CVStore_ri_inc<0b001, "cv.sh">;
@@ -643,7 +629,6 @@ let Predicates = [HasVendorXCVmem, IsRV32] in {
643
629
def CV_SW_rr : CVStore_rr<0b011, 0b0010110, "cv.sw">;
644
630
}
645
631
646
- let DecoderNamespace = "XCV" in
647
632
class CVLoad_ri<bits<3> funct3, string opcodestr>
648
633
: RVInstI<funct3, OPC_CUSTOM_0, (outs GPR:$rd),
649
634
(ins GPRMem:$rs1, simm12:$imm12), opcodestr, "$rd, ${imm12}(${rs1})">;
0 commit comments