Skip to content

Commit 825b09a

Browse files
committed
Split c_ldsp and c_fldsp
1 parent dc022be commit 825b09a

File tree

1 file changed

+21
-11
lines changed

1 file changed

+21
-11
lines changed

src/hotspot/cpu/riscv/assembler_riscv.hpp

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2386,11 +2386,11 @@ enum Nf {
23862386

23872387
#undef INSN
23882388

2389-
#define INSN(NAME, funct3, op, REGISTER_TYPE, CHECK) \
2390-
void NAME(REGISTER_TYPE Rd, uint32_t uimm) { \
2389+
#define INSN(NAME, funct3, op) \
2390+
void NAME(Register Rd, uint32_t uimm) { \
23912391
assert_cond(is_unsigned_imm_in_range(uimm, 9, 0)); \
23922392
assert_cond((uimm & 0b111) == 0); \
2393-
IF(CHECK, assert_cond(Rd != x0);) \
2393+
assert_cond(Rd != x0); \
23942394
uint16_t insn = 0; \
23952395
c_patch((address)&insn, 1, 0, op); \
23962396
c_patch((address)&insn, 4, 2, (uimm & right_n_bits(9)) >> 6); \
@@ -2401,16 +2401,26 @@ enum Nf {
24012401
emit_int16(insn); \
24022402
}
24032403

2404-
#define IF(BOOL, ...) IF_##BOOL(__VA_ARGS__)
2405-
#define IF_true(code) code
2406-
#define IF_false(code)
2404+
INSN(c_ldsp, 0b011, 0b10);
2405+
2406+
#undef INSN
2407+
2408+
#define INSN(NAME, funct3, op) \
2409+
void NAME(FloatRegister Rd, uint32_t uimm) { \
2410+
assert_cond(is_unsigned_imm_in_range(uimm, 9, 0)); \
2411+
assert_cond((uimm & 0b111) == 0); \
2412+
uint16_t insn = 0; \
2413+
c_patch((address)&insn, 1, 0, op); \
2414+
c_patch((address)&insn, 4, 2, (uimm & right_n_bits(9)) >> 6); \
2415+
c_patch((address)&insn, 6, 5, (uimm & right_n_bits(5)) >> 3); \
2416+
c_patch_reg((address)&insn, 7, Rd); \
2417+
c_patch((address)&insn, 12, 12, (uimm & nth_bit(5)) >> 5); \
2418+
c_patch((address)&insn, 15, 13, funct3); \
2419+
emit_int16(insn); \
2420+
}
24072421

2408-
INSN(c_ldsp, 0b011, 0b10, Register, true);
2409-
INSN(c_fldsp, 0b001, 0b10, FloatRegister, false);
2422+
INSN(c_fldsp, 0b001, 0b10);
24102423

2411-
#undef IF_false
2412-
#undef IF_true
2413-
#undef IF
24142424
#undef INSN
24152425

24162426
#define INSN(NAME, funct3, op, REGISTER_TYPE) \

0 commit comments

Comments
 (0)