@@ -835,7 +835,7 @@ enum operand_size { int8, int16, int32, uint32, int64 };
835835
836836// Immediate Instruction
837837#define INSN (NAME, op, funct3 ) \
838- void NAME (Register Rd, Register Rs1, int32_t imm) { \
838+ void NAME (Register Rd, Register Rs1, int64_t imm) { \
839839 guarantee (is_simm12 (imm), " Immediate is out of validity" ); \
840840 unsigned insn = 0 ; \
841841 patch ((address)&insn, 6 , 0 , op); \
@@ -846,17 +846,17 @@ enum operand_size { int8, int16, int32, uint32, int64 };
846846 emit (insn); \
847847 }
848848
849- INSN (_addi, 0b0010011 , 0b000 );
850- INSN (slti, 0b0010011 , 0b010 );
851- INSN (_addiw , 0b0011011 , 0b000 );
852- INSN (_and_imm12, 0b0010011 , 0b111 );
853- INSN (ori , 0b0010011 , 0b110 );
854- INSN (xori , 0b0010011 , 0b100 );
849+ INSN (_addi, 0b0010011 , 0b000 );
850+ INSN (_addiw, 0b0011011 , 0b000 );
851+ INSN (_andi , 0b0010011 , 0b111 );
852+ INSN (ori, 0b0010011 , 0b110 );
853+ INSN (xori , 0b0010011 , 0b100 );
854+ INSN (slti , 0b0010011 , 0b010 );
855855
856856#undef INSN
857857
858858#define INSN (NAME, op, funct3 ) \
859- void NAME (Register Rd, Register Rs1, uint32_t imm) { \
859+ void NAME (Register Rd, Register Rs1, uint64_t imm) { \
860860 guarantee (is_uimm12 (imm), " Immediate is out of validity" ); \
861861 unsigned insn = 0 ; \
862862 patch ((address)&insn,6 , 0 , op); \
@@ -2230,7 +2230,7 @@ enum Nf {
22302230 }
22312231
22322232#define INSN (NAME, funct3, op ) \
2233- void NAME (Register Rd_Rs1, int32_t imm) { \
2233+ void NAME (Register Rd_Rs1, int64_t imm) { \
22342234 assert_cond (is_simm6 (imm)); \
22352235 uint16_t insn = 0 ; \
22362236 c_patch ((address)&insn, 1 , 0 , op); \
@@ -2247,7 +2247,7 @@ enum Nf {
22472247#undef INSN
22482248
22492249#define INSN (NAME, funct3, op ) \
2250- void NAME (int32_t imm) { \
2250+ void NAME (int64_t imm) { \
22512251 assert_cond (is_simm10 (imm)); \
22522252 assert_cond ((imm & 0b1111 ) == 0 ); \
22532253 assert_cond (imm != 0 ); \
@@ -2268,7 +2268,7 @@ enum Nf {
22682268#undef INSN
22692269
22702270#define INSN (NAME, funct3, op ) \
2271- void NAME (Register Rd, uint32_t uimm) { \
2271+ void NAME (Register Rd, uint64_t uimm) { \
22722272 assert_cond (is_uimm10 (uimm)); \
22732273 assert_cond ((uimm & 0b11 ) == 0 ); \
22742274 assert_cond (uimm != 0 ); \
@@ -2325,7 +2325,7 @@ enum Nf {
23252325#undef INSN
23262326
23272327#define INSN (NAME, funct3, funct2, op ) \
2328- void NAME (Register Rd_Rs1, int32_t imm) { \
2328+ void NAME (Register Rd_Rs1, int64_t imm) { \
23292329 assert_cond (is_simm6 (imm)); \
23302330 uint16_t insn = 0 ; \
23312331 c_patch ((address)&insn, 1 , 0 , op); \
@@ -2950,7 +2950,7 @@ enum Nf {
29502950// Immediate Instructions
29512951// --------------------------
29522952#define INSN (NAME ) \
2953- void NAME (Register Rd, Register Rs1, int32_t imm) { \
2953+ void NAME (Register Rd, Register Rs1, int64_t imm) { \
29542954 /* addi -> c.addi/c.nop/c.mv/c.addi16sp/c.addi4spn */ \
29552955 if (do_compress ()) { \
29562956 if (Rd == Rs1 && is_simm6 (imm)) { \
@@ -2978,7 +2978,7 @@ enum Nf {
29782978
29792979// --------------------------
29802980#define INSN (NAME ) \
2981- void NAME (Register Rd, Register Rs1, int32_t imm) { \
2981+ void NAME (Register Rd, Register Rs1, int64_t imm) { \
29822982 /* addiw -> c.addiw */ \
29832983 if (do_compress () && (Rd == Rs1 && Rd != x0 && is_simm6 (imm))) { \
29842984 c_addiw (Rd, imm); \
@@ -2993,17 +2993,17 @@ enum Nf {
29932993
29942994// --------------------------
29952995#define INSN (NAME ) \
2996- void NAME (Register Rd, Register Rs1, int32_t imm) { \
2997- /* and_imm12 -> c.andi */ \
2996+ void NAME (Register Rd, Register Rs1, int64_t imm) { \
2997+ /* andi -> c.andi */ \
29982998 if (do_compress () && \
29992999 (Rd == Rs1 && Rd->is_compressed_valid () && is_simm6 (imm))) { \
30003000 c_andi (Rd, imm); \
30013001 return ; \
30023002 } \
3003- _and_imm12 (Rd, Rs1, imm); \
3003+ _andi (Rd, Rs1, imm); \
30043004 }
30053005
3006- INSN (and_imm12 );
3006+ INSN (andi );
30073007
30083008#undef INSN
30093009
0 commit comments