45 changed files with 258 additions and 24 deletions
@ -1,4 +1,4 @@ |
|||
require_extension('C'); |
|||
require_extension('D'); |
|||
require_fp; |
|||
MMU.store_uint64(RVC_RS1S + insn.rvc_ld_imm(), RVC_FRS2S.v); |
|||
MMU.store_uint64(RVC_RS1S + insn.rvc_ld_imm(), RVC_FRS2S.v[0]); |
|||
|
|||
@ -1,4 +1,4 @@ |
|||
require_extension('C'); |
|||
require_extension('D'); |
|||
require_fp; |
|||
MMU.store_uint64(RVC_SP + insn.rvc_sdsp_imm(), RVC_FRS2.v); |
|||
MMU.store_uint64(RVC_SP + insn.rvc_sdsp_imm(), RVC_FRS2.v[0]); |
|||
|
|||
@ -0,0 +1,5 @@ |
|||
require_extension('Q'); |
|||
require_fp; |
|||
softfloat_roundingMode = RM; |
|||
WRITE_FRD(f128_add(f128(FRS1), f128(FRS2))); |
|||
set_fp_exceptions; |
|||
@ -0,0 +1,3 @@ |
|||
require_extension('Q'); |
|||
require_fp; |
|||
WRITE_RD(f128_classify(f128(FRS1))); |
|||
@ -0,0 +1,5 @@ |
|||
require_extension('Q'); |
|||
require_fp; |
|||
softfloat_roundingMode = RM; |
|||
WRITE_FRD(f128_to_f64(f128(FRS1))); |
|||
set_fp_exceptions; |
|||
@ -0,0 +1,6 @@ |
|||
require_extension('Q'); |
|||
require_rv64; |
|||
require_fp; |
|||
softfloat_roundingMode = RM; |
|||
WRITE_RD(f128_to_i64(f128(FRS1), RM, true)); |
|||
set_fp_exceptions; |
|||
@ -0,0 +1,6 @@ |
|||
require_extension('Q'); |
|||
require_rv64; |
|||
require_fp; |
|||
softfloat_roundingMode = RM; |
|||
WRITE_RD(f128_to_ui64(f128(FRS1), RM, true)); |
|||
set_fp_exceptions; |
|||
@ -0,0 +1,5 @@ |
|||
require_extension('Q'); |
|||
require_fp; |
|||
softfloat_roundingMode = RM; |
|||
WRITE_FRD(f64_to_f128(f64(FRS1))); |
|||
set_fp_exceptions; |
|||
@ -0,0 +1,6 @@ |
|||
require_extension('Q'); |
|||
require_rv64; |
|||
require_fp; |
|||
softfloat_roundingMode = RM; |
|||
WRITE_FRD(i64_to_f128(RS1)); |
|||
set_fp_exceptions; |
|||
@ -0,0 +1,6 @@ |
|||
require_extension('Q'); |
|||
require_rv64; |
|||
require_fp; |
|||
softfloat_roundingMode = RM; |
|||
WRITE_FRD(ui64_to_f128(RS1)); |
|||
set_fp_exceptions; |
|||
@ -0,0 +1,5 @@ |
|||
require_extension('Q'); |
|||
require_fp; |
|||
softfloat_roundingMode = RM; |
|||
WRITE_FRD(f32_to_f128(f32(FRS1))); |
|||
set_fp_exceptions; |
|||
@ -0,0 +1,5 @@ |
|||
require_extension('Q'); |
|||
require_fp; |
|||
softfloat_roundingMode = RM; |
|||
WRITE_FRD(i32_to_f128((int32_t)RS1)); |
|||
set_fp_exceptions; |
|||
@ -0,0 +1,5 @@ |
|||
require_extension('Q'); |
|||
require_fp; |
|||
softfloat_roundingMode = RM; |
|||
WRITE_FRD(ui32_to_f128((uint32_t)RS1)); |
|||
set_fp_exceptions; |
|||
@ -0,0 +1,5 @@ |
|||
require_extension('Q'); |
|||
require_fp; |
|||
softfloat_roundingMode = RM; |
|||
WRITE_FRD(f128_to_f32(f128(FRS1))); |
|||
set_fp_exceptions; |
|||
@ -0,0 +1,5 @@ |
|||
require_extension('Q'); |
|||
require_fp; |
|||
softfloat_roundingMode = RM; |
|||
WRITE_RD(sext32(f128_to_i32(f128(FRS1), RM, true))); |
|||
set_fp_exceptions; |
|||
@ -0,0 +1,5 @@ |
|||
require_extension('Q'); |
|||
require_fp; |
|||
softfloat_roundingMode = RM; |
|||
WRITE_RD(sext32(f128_to_ui32(f128(FRS1), RM, true))); |
|||
set_fp_exceptions; |
|||
@ -0,0 +1,5 @@ |
|||
require_extension('Q'); |
|||
require_fp; |
|||
softfloat_roundingMode = RM; |
|||
WRITE_FRD(f128_div(f128(FRS1), f128(FRS2))); |
|||
set_fp_exceptions; |
|||
@ -0,0 +1,4 @@ |
|||
require_extension('Q'); |
|||
require_fp; |
|||
WRITE_RD(f128_eq(f128(FRS1), f128(FRS2))); |
|||
set_fp_exceptions; |
|||
@ -0,0 +1,4 @@ |
|||
require_extension('Q'); |
|||
require_fp; |
|||
WRITE_RD(f128_le(f128(FRS1), f128(FRS2))); |
|||
set_fp_exceptions; |
|||
@ -0,0 +1,3 @@ |
|||
require_extension('Q'); |
|||
require_fp; |
|||
WRITE_FRD(MMU.load_float128(RS1 + insn.i_imm())); |
|||
@ -0,0 +1,4 @@ |
|||
require_extension('Q'); |
|||
require_fp; |
|||
WRITE_RD(f128_lt(f128(FRS1), f128(FRS2))); |
|||
set_fp_exceptions; |
|||
@ -0,0 +1,5 @@ |
|||
require_extension('Q'); |
|||
require_fp; |
|||
softfloat_roundingMode = RM; |
|||
WRITE_FRD(f128_mulAdd(f128(FRS1), f128(FRS2), f128(FRS3))); |
|||
set_fp_exceptions; |
|||
@ -0,0 +1,8 @@ |
|||
require_extension('Q'); |
|||
require_fp; |
|||
bool greater = f128_lt_quiet(f128(FRS2), f128(FRS1)) || |
|||
(f128_eq(f128(FRS2), f128(FRS1)) && (f128(FRS2).v[1] & F64_SIGN)); |
|||
WRITE_FRD(greater || isNaNF128(f128(FRS2)) ? FRS1 : FRS2); |
|||
if (isNaNF128(f128(FRS1)) && isNaNF128(f128(FRS2))) |
|||
WRITE_FRD(f128(defaultNaNF128())); |
|||
set_fp_exceptions; |
|||
@ -0,0 +1,8 @@ |
|||
require_extension('Q'); |
|||
require_fp; |
|||
bool less = f128_lt_quiet(f128(FRS1), f128(FRS2)) || |
|||
(f128_eq(f128(FRS1), f128(FRS2)) && (f128(FRS1).v[1] & F64_SIGN)); |
|||
WRITE_FRD(less || isNaNF128(f128(FRS2)) ? FRS1 : FRS2); |
|||
if (isNaNF128(f128(FRS1)) && isNaNF128(f128(FRS2))) |
|||
WRITE_FRD(f128(defaultNaNF128())); |
|||
set_fp_exceptions; |
|||
@ -0,0 +1,5 @@ |
|||
require_extension('Q'); |
|||
require_fp; |
|||
softfloat_roundingMode = RM; |
|||
WRITE_FRD(f128_mulAdd(f128(FRS1), f128(FRS2), f128_negate(f128(FRS3)))); |
|||
set_fp_exceptions; |
|||
@ -0,0 +1,5 @@ |
|||
require_extension('Q'); |
|||
require_fp; |
|||
softfloat_roundingMode = RM; |
|||
WRITE_FRD(f128_mul(f128(FRS1), f128(FRS2))); |
|||
set_fp_exceptions; |
|||
@ -1,4 +1,4 @@ |
|||
require_extension('D'); |
|||
require_rv64; |
|||
require_fp; |
|||
WRITE_RD(FRS1.v); |
|||
WRITE_RD(FRS1.v[0]); |
|||
|
|||
@ -1,3 +1,3 @@ |
|||
require_extension('F'); |
|||
require_fp; |
|||
WRITE_RD(sext32(FRS1.v)); |
|||
WRITE_RD(sext32(FRS1.v[0])); |
|||
|
|||
@ -0,0 +1,5 @@ |
|||
require_extension('Q'); |
|||
require_fp; |
|||
softfloat_roundingMode = RM; |
|||
WRITE_FRD(f128_mulAdd(f128_negate(f128(FRS1)), f128(FRS2), f128_negate(f128(FRS3)))); |
|||
set_fp_exceptions; |
|||
@ -0,0 +1,5 @@ |
|||
require_extension('Q'); |
|||
require_fp; |
|||
softfloat_roundingMode = RM; |
|||
WRITE_FRD(f128_mulAdd(f128_negate(f128(FRS1)), f128(FRS2), f128(FRS3))); |
|||
set_fp_exceptions; |
|||
@ -1,3 +1,3 @@ |
|||
require_extension('D'); |
|||
require_fp; |
|||
MMU.store_uint64(RS1 + insn.s_imm(), FRS2.v); |
|||
MMU.store_uint64(RS1 + insn.s_imm(), FRS2.v[0]); |
|||
|
|||
@ -0,0 +1,3 @@ |
|||
require_extension('Q'); |
|||
require_fp; |
|||
WRITE_FRD(fsgnj128(FRS1, FRS2, false, false)); |
|||
@ -0,0 +1,3 @@ |
|||
require_extension('Q'); |
|||
require_fp; |
|||
WRITE_FRD(fsgnj128(FRS1, FRS2, true, false)); |
|||
@ -0,0 +1,3 @@ |
|||
require_extension('Q'); |
|||
require_fp; |
|||
WRITE_FRD(fsgnj128(FRS1, FRS2, false, true)); |
|||
@ -0,0 +1,3 @@ |
|||
require_extension('Q'); |
|||
require_fp; |
|||
MMU.store_float128(RS1 + insn.s_imm(), FRS2); |
|||
@ -0,0 +1,5 @@ |
|||
require_extension('Q'); |
|||
require_fp; |
|||
softfloat_roundingMode = RM; |
|||
WRITE_FRD(f128_sqrt(f128(FRS1))); |
|||
set_fp_exceptions; |
|||
@ -0,0 +1,5 @@ |
|||
require_extension('Q'); |
|||
require_fp; |
|||
softfloat_roundingMode = RM; |
|||
WRITE_FRD(f128_sub(f128(FRS1), f128(FRS2))); |
|||
set_fp_exceptions; |
|||
@ -1,3 +1,3 @@ |
|||
require_extension('F'); |
|||
require_fp; |
|||
MMU.store_uint32(RS1 + insn.s_imm(), FRS2.v); |
|||
MMU.store_uint32(RS1 + insn.s_imm(), FRS2.v[0]); |
|||
|
|||
Loading…
Reference in new issue