@@ -10,89 +10,89 @@ function clause currentlyEnabled(Ext_Zcb) = hartSupports(Ext_Zcb) & currentlyEna
1010
1111union clause ast = C_LBU : (bits (2 ), cregidx , cregidx )
1212
13- mapping clause encdec_compressed = C_LBU (uimm1 @ uimm0 , rdc , rs1c )
14- <-> 0b100 @ 0b000 @ encdec_creg (rs1c ) @ uimm0 : bits (1 ) @ uimm1 : bits (1 ) @ encdec_creg (rdc ) @ 0b00
13+ mapping clause encdec_compressed = C_LBU (uimm1 @ uimm0 , rdc , rsc1 )
14+ <-> 0b100 @ 0b000 @ encdec_creg (rsc1 ) @ uimm0 : bits (1 ) @ uimm1 : bits (1 ) @ encdec_creg (rdc ) @ 0b00
1515 when currentlyEnabled (Ext_Zcb )
1616
17- mapping clause assembly = C_LBU (uimm , rdc , rs1c ) <->
18- "c.lbu" ^ spc () ^ creg_name (rdc ) ^ sep () ^ hex_bits_2 (uimm ) ^ opt_spc () ^ "(" ^ opt_spc () ^ creg_name (rs1c ) ^ opt_spc () ^ ")"
17+ mapping clause assembly = C_LBU (uimm , rdc , rsc1 ) <->
18+ "c.lbu" ^ spc () ^ creg_name (rdc ) ^ sep () ^ hex_bits_2 (uimm ) ^ opt_spc () ^ "(" ^ opt_spc () ^ creg_name (rsc1 ) ^ opt_spc () ^ ")"
1919
20- function clause execute C_LBU (uimm , rdc , rs1c ) = {
20+ function clause execute C_LBU (uimm , rdc , rsc1 ) = {
2121 let imm : bits (12 ) = zero_extend (uimm );
2222 let rd = creg2reg_idx (rdc );
23- let rs1 = creg2reg_idx (rs1c );
23+ let rs1 = creg2reg_idx (rsc1 );
2424 execute (LOAD (imm , rs1 , rd , true , BYTE , false , false ))
2525}
2626
2727/* ****************************************************************** */
2828
2929union clause ast = C_LHU : (bits (2 ), cregidx , cregidx )
3030
31- mapping clause encdec_compressed = C_LHU (uimm1 @ 0b0 , rdc , rs1c )
32- <-> 0b100 @ 0b001 @ encdec_creg (rs1c ) @ 0b0 @ uimm1 : bits (1 ) @ encdec_creg (rdc ) @ 0b00
31+ mapping clause encdec_compressed = C_LHU (uimm1 @ 0b0 , rdc , rsc1 )
32+ <-> 0b100 @ 0b001 @ encdec_creg (rsc1 ) @ 0b0 @ uimm1 : bits (1 ) @ encdec_creg (rdc ) @ 0b00
3333 when currentlyEnabled (Ext_Zcb )
3434
35- mapping clause assembly = C_LHU (uimm , rdc , rs1c ) <->
36- "c.lhu" ^ spc () ^ creg_name (rdc ) ^ sep () ^ hex_bits_2 (uimm ) ^ opt_spc () ^ "(" ^ opt_spc () ^ creg_name (rs1c ) ^ opt_spc () ^ ")"
35+ mapping clause assembly = C_LHU (uimm , rdc , rsc1 ) <->
36+ "c.lhu" ^ spc () ^ creg_name (rdc ) ^ sep () ^ hex_bits_2 (uimm ) ^ opt_spc () ^ "(" ^ opt_spc () ^ creg_name (rsc1 ) ^ opt_spc () ^ ")"
3737
38- function clause execute C_LHU (uimm , rdc , rs1c ) = {
38+ function clause execute C_LHU (uimm , rdc , rsc1 ) = {
3939 let imm : bits (12 ) = zero_extend (uimm );
4040 let rd = creg2reg_idx (rdc );
41- let rs1 = creg2reg_idx (rs1c );
41+ let rs1 = creg2reg_idx (rsc1 );
4242 execute (LOAD (imm , rs1 , rd , true , HALF , false , false ))
4343}
4444
4545/* ****************************************************************** */
4646
4747union clause ast = C_LH : (bits (2 ), cregidx , cregidx )
4848
49- mapping clause encdec_compressed = C_LH (uimm1 @ 0b0 , rdc , rs1c )
50- <-> 0b100 @ 0b001 @ encdec_creg (rs1c ) @ 0b1 @ uimm1 : bits (1 ) @ encdec_creg (rdc ) @ 0b00
49+ mapping clause encdec_compressed = C_LH (uimm1 @ 0b0 , rdc , rsc1 )
50+ <-> 0b100 @ 0b001 @ encdec_creg (rsc1 ) @ 0b1 @ uimm1 : bits (1 ) @ encdec_creg (rdc ) @ 0b00
5151 when currentlyEnabled (Ext_Zcb )
5252
53- mapping clause assembly = C_LH (uimm , rdc , rs1c ) <->
54- "c.lh" ^ spc () ^ creg_name (rdc ) ^ sep () ^ hex_bits_2 (uimm ) ^ opt_spc () ^ "(" ^ opt_spc () ^ creg_name (rs1c ) ^ opt_spc () ^ ")"
53+ mapping clause assembly = C_LH (uimm , rdc , rsc1 ) <->
54+ "c.lh" ^ spc () ^ creg_name (rdc ) ^ sep () ^ hex_bits_2 (uimm ) ^ opt_spc () ^ "(" ^ opt_spc () ^ creg_name (rsc1 ) ^ opt_spc () ^ ")"
5555
56- function clause execute C_LH (uimm , rdc , rs1c ) = {
56+ function clause execute C_LH (uimm , rdc , rsc1 ) = {
5757 let imm : bits (12 ) = zero_extend (uimm );
5858 let rd = creg2reg_idx (rdc );
59- let rs1 = creg2reg_idx (rs1c );
59+ let rs1 = creg2reg_idx (rsc1 );
6060 execute (LOAD (imm , rs1 , rd , false , HALF , false , false ))
6161}
6262
6363/* ****************************************************************** */
6464
6565union clause ast = C_SB : (bits (2 ), cregidx , cregidx )
6666
67- mapping clause encdec_compressed = C_SB (uimm1 @ uimm0 , rs1c , rs2c )
68- <-> 0b100 @ 0b010 @ encdec_creg (rs1c ) @ uimm0 : bits (1 ) @ uimm1 : bits (1 ) @ encdec_creg (rs2c ) @ 0b00
67+ mapping clause encdec_compressed = C_SB (uimm1 @ uimm0 , rsc1 , rsc2 )
68+ <-> 0b100 @ 0b010 @ encdec_creg (rsc1 ) @ uimm0 : bits (1 ) @ uimm1 : bits (1 ) @ encdec_creg (rsc2 ) @ 0b00
6969 when currentlyEnabled (Ext_Zcb )
7070
71- mapping clause assembly = C_SB (uimm , rs1c , rs2c ) <->
72- "c.sb" ^ spc () ^ creg_name (rs2c ) ^ sep () ^ hex_bits_2 (uimm ) ^ opt_spc () ^ "(" ^ opt_spc () ^ creg_name (rs1c ) ^ opt_spc () ^ ")"
71+ mapping clause assembly = C_SB (uimm , rsc1 , rsc2 ) <->
72+ "c.sb" ^ spc () ^ creg_name (rsc2 ) ^ sep () ^ hex_bits_2 (uimm ) ^ opt_spc () ^ "(" ^ opt_spc () ^ creg_name (rsc1 ) ^ opt_spc () ^ ")"
7373
74- function clause execute C_SB (uimm , rs1c , rs2c ) = {
74+ function clause execute C_SB (uimm , rsc1 , rsc2 ) = {
7575 let imm : bits (12 ) = zero_extend (uimm );
76- let rs1 = creg2reg_idx (rs1c );
77- let rs2 = creg2reg_idx (rs2c );
76+ let rs1 = creg2reg_idx (rsc1 );
77+ let rs2 = creg2reg_idx (rsc2 );
7878 execute (STORE (imm , rs2 , rs1 , BYTE , false , false ))
7979}
8080
8181/* ****************************************************************** */
8282
8383union clause ast = C_SH : (bits (2 ), cregidx , cregidx )
8484
85- mapping clause encdec_compressed = C_SH (uimm1 @ 0b0 , rs1c , rs2c )
86- <-> 0b100 @ 0b011 @ encdec_creg (rs1c ) @ 0b0 @ uimm1 : bits (1 ) @ encdec_creg (rs2c ) @ 0b00
85+ mapping clause encdec_compressed = C_SH (uimm1 @ 0b0 , rsc1 , rsc2 )
86+ <-> 0b100 @ 0b011 @ encdec_creg (rsc1 ) @ 0b0 @ uimm1 : bits (1 ) @ encdec_creg (rsc2 ) @ 0b00
8787 when currentlyEnabled (Ext_Zcb )
8888
89- mapping clause assembly = C_SH (uimm , rs1c , rs2c ) <->
90- "c.sh" ^ spc () ^ creg_name (rs2c ) ^ sep () ^ hex_bits_2 (uimm ) ^ opt_spc () ^ "(" ^ opt_spc () ^ creg_name (rs1c ) ^ opt_spc () ^ ")"
89+ mapping clause assembly = C_SH (uimm , rsc1 , rsc2 ) <->
90+ "c.sh" ^ spc () ^ creg_name (rsc2 ) ^ sep () ^ hex_bits_2 (uimm ) ^ opt_spc () ^ "(" ^ opt_spc () ^ creg_name (rsc1 ) ^ opt_spc () ^ ")"
9191
92- function clause execute C_SH (uimm , rs1c , rs2c ) = {
92+ function clause execute C_SH (uimm , rsc1 , rsc2 ) = {
9393 let imm : bits (12 ) = zero_extend (uimm );
94- let rs1 = creg2reg_idx (rs1c );
95- let rs2 = creg2reg_idx (rs2c );
94+ let rs1 = creg2reg_idx (rsc1 );
95+ let rs2 = creg2reg_idx (rsc2 );
9696 execute (STORE (imm , rs2 , rs1 , HALF , false , false ))
9797}
9898
@@ -198,15 +198,15 @@ function clause execute C_NOT(rsdc) = {
198198
199199union clause ast = C_MUL : (cregidx , cregidx )
200200
201- mapping clause encdec_compressed = C_MUL (rsdc , rs2c )
202- <-> 0b100 @ 0b111 @ encdec_creg (rsdc ) @ 0b10 @ encdec_creg (rs2c ) @ 0b01
201+ mapping clause encdec_compressed = C_MUL (rsdc , rsc2 )
202+ <-> 0b100 @ 0b111 @ encdec_creg (rsdc ) @ 0b10 @ encdec_creg (rsc2 ) @ 0b01
203203 when currentlyEnabled (Ext_Zcb ) & (currentlyEnabled (Ext_M ) | currentlyEnabled (Ext_Zmmul ))
204204
205- mapping clause assembly = C_MUL (rsdc , rs2c ) <->
206- "c.mul" ^ spc () ^ creg_name (rsdc ) ^ sep () ^ creg_name (rs2c )
205+ mapping clause assembly = C_MUL (rsdc , rsc2 ) <->
206+ "c.mul" ^ spc () ^ creg_name (rsdc ) ^ sep () ^ creg_name (rsc2 )
207207
208- function clause execute C_MUL (rsdc , rs2c ) = {
208+ function clause execute C_MUL (rsdc , rsc2 ) = {
209209 let rd = creg2reg_idx (rsdc );
210- let rs = creg2reg_idx (rs2c );
210+ let rs = creg2reg_idx (rsc2 );
211211 execute (MUL (rs , rd , rd , struct { high = false , signed_rs1 = true , signed_rs2 = true }))
212212}
0 commit comments