From d4f63d3dcfed8b2629cacf7456c65bb1b9fe6111 Mon Sep 17 00:00:00 2001 From: Zihao Yu Date: Mon, 20 Apr 2020 13:21:21 +0800 Subject: [PATCH] engine,rv64,rtl-basic: refactor load_imm() --- src/engine/rv64/rv64-backend/rtl-basic.c | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/src/engine/rv64/rv64-backend/rtl-basic.c b/src/engine/rv64/rv64-backend/rtl-basic.c index e4b40c75..7b218248 100644 --- a/src/engine/rv64/rv64-backend/rtl-basic.c +++ b/src/engine/rv64/rv64-backend/rtl-basic.c @@ -31,20 +31,7 @@ static inline bool load_imm_big(uint32_t r, const sword_t imm) { } static inline void load_imm(uint32_t r, const sword_t imm) { - if (imm == 0) { - rv64_addi(r, x0, 0); - return; - } - - RV_IMM rv_imm = { .val = imm }; - uint32_t lui_imm = (rv_imm.imm_31_12 + (rv_imm.imm_11_0 >> 11)) & 0xfffffu; - - uint32_t hi = x0; - if (lui_imm != 0) { - rv64_lui(r, lui_imm); - hi = r; - } - if (rv_imm.imm_11_0 != 0) rv64_addiw(r, hi, rv_imm.imm_11_0); + if (!load_imm_big(r, imm)) rv64_addiw(r, x0, imm & 0xfff); } static inline void load_imm_no_opt(uint32_t r, const sword_t imm) { -- GitLab