From f2aa295a31f6d0de376e807b2dfab5a62418c8dc Mon Sep 17 00:00:00 2001 From: Chih-Min Chao Date: Tue, 7 Apr 2026 00:46:22 -0700 Subject: [PATCH] rvp: replace __int128 with int128_t/uint128_t and guard p-ext by HAVE_INT128 Replace bare __int128 / unsigned __int128 in psshar_dhs.h and psshar_dws.h with the int128_t / uint128_t typedefs from fesvr/byteorder.h, and guard the entire riscv_insn_ext_p list in riscv.mk.in with $(if $(HAVE_INT128),...) matching the existing pattern for the V extension Signed-off-by: Chih-Min Chao --- riscv/insns/psshar_dhs.h | 28 ++++++++++++++-------------- riscv/insns/psshar_dws.h | 30 +++++++++++++++--------------- riscv/riscv.mk.in | 2 +- 3 files changed, 30 insertions(+), 30 deletions(-) diff --git a/riscv/insns/psshar_dhs.h b/riscv/insns/psshar_dhs.h index 33c5eccb..e3116570 100644 --- a/riscv/insns/psshar_dhs.h +++ b/riscv/insns/psshar_dhs.h @@ -12,30 +12,30 @@ P_RD_RS1_DW_LOOP(16, 16, { if ((rev & 0xFFu) == 0u) p_rd = (uint16_t)p_rs1; else{ - __int128 v_sext; + int128_t v_sext; bool neg = ((p_rs1 >> (16 - 1)) & 1u); - if(!neg) v_sext = static_cast<__int128>(p_rs1); - else v_sext = (static_cast<__int128>(-1) << 16) | static_cast<__int128>(p_rs1); - __int128 v_cat0 = v_sext << 1; + if(!neg) v_sext = static_cast(p_rs1); + else v_sext = static_cast((~static_cast(0) << 16) | static_cast(p_rs1)); + int128_t v_cat0 = v_sext << 1; unsigned sh = ((unsigned)(uint8_t)rev > 255u) ? 255u : (unsigned)(uint8_t)rev; - __int128 sra_val; - if(sh == 0) + int128_t sra_val; + if(sh == 0) sra_val = v_cat0; else if(sh >=127) - sra_val = (v_cat0 < 0) ? static_cast<__int128>(-1) : static_cast<__int128>(0); + sra_val = (v_cat0 < 0) ? static_cast(-1) : static_cast(0); else{ - __int128 ux = static_cast(v_cat0); - __int128 shifted = ux >> sh; + int128_t ux = static_cast(v_cat0); + int128_t shifted = ux >> sh; if(v_cat0 < 0) - shifted |= (~static_cast(0)) << (128 - sh); - sra_val = static_cast<__int128>(shifted); + shifted |= (~static_cast(0)) << (128 - sh); + sra_val = static_cast(shifted); } - __int128 plus1 = sra_val + static_cast<__int128>(1); - unsigned __int128 ures = static_cast(plus1); - p_rd = (uint16_t)(static_cast((ures >> 1) & static_cast(mask))); + int128_t plus1 = sra_val + static_cast(1); + uint128_t ures = static_cast(plus1); + p_rd = (uint16_t)(static_cast((ures >> 1) & static_cast(mask))); } } else{ diff --git a/riscv/insns/psshar_dws.h b/riscv/insns/psshar_dws.h index 979c9bef..1f530b39 100644 --- a/riscv/insns/psshar_dws.h +++ b/riscv/insns/psshar_dws.h @@ -12,30 +12,30 @@ P_RD_RS1_DW_LOOP(32, 32, { if ((rev & 0xFFu) == 0u) p_rd = (uint32_t)p_rs1; else{ - __int128 v_sext; + int128_t v_sext; bool neg = ((p_rs1 >> (32 - 1)) & 1u); - if(!neg) v_sext = static_cast<__int128>(p_rs1); - else v_sext = (static_cast<__int128>(-1) << 32) | static_cast<__int128>(p_rs1); - __int128 v_cat0 = v_sext << 1; + if(!neg) v_sext = static_cast(p_rs1); + else v_sext = static_cast((~static_cast(0) << 32) | static_cast(p_rs1)); + int128_t v_cat0 = v_sext << 1; unsigned sh = ((unsigned)(uint8_t)rev > 255u) ? 255u : (unsigned)(uint8_t)rev; - __int128 sra_val; - if(sh == 0) + int128_t sra_val; + if(sh == 0) sra_val = v_cat0; - else if(sh >=127) - sra_val = (v_cat0 < 0) ? static_cast<__int128>(-1) : static_cast<__int128>(0); + else if(sh >=127) + sra_val = (v_cat0 < 0) ? static_cast(-1) : static_cast(0); else{ - __int128 ux = static_cast(v_cat0); - __int128 shifted = ux >> sh; + int128_t ux = static_cast(v_cat0); + int128_t shifted = ux >> sh; if(v_cat0 < 0) - shifted |= (~static_cast(0)) << (128 - sh); - sra_val = static_cast<__int128>(shifted); + shifted |= (~static_cast(0)) << (128 - sh); + sra_val = static_cast(shifted); } - __int128 plus1 = sra_val + static_cast<__int128>(1); - unsigned __int128 ures = static_cast(plus1); - p_rd = (uint32_t)(static_cast((ures >> 1) & static_cast(mask))); + int128_t plus1 = sra_val + static_cast(1); + uint128_t ures = static_cast(plus1); + p_rd = (uint32_t)(static_cast((ures >> 1) & static_cast(mask))); } } else{ diff --git a/riscv/riscv.mk.in b/riscv/riscv.mk.in index 19fa7974..b44fc288 100644 --- a/riscv/riscv.mk.in +++ b/riscv/riscv.mk.in @@ -1775,7 +1775,7 @@ riscv_insn_list = \ $(riscv_insn_ext_cmo) \ $(riscv_insn_ext_d_zfa) \ $(riscv_insn_ext_f_zfa) \ - $(riscv_insn_ext_p) \ + $(if $(HAVE_INT128),$(riscv_insn_ext_p)) \ $(riscv_insn_ext_h) \ $(riscv_insn_ext_k) \ $(if $(HAVE_INT128),$(riscv_insn_ext_q),) \