committed by
GitHub
23 changed files with 322 additions and 437 deletions
@ -1,11 +1,11 @@ |
|||||
// vfclass.v vd, vs2, vm
|
// vfclass.v vd, vs2, vm
|
||||
VI_VFP_V_LOOP |
VI_VFP_V_LOOP |
||||
({ |
({ |
||||
vd.v = f16_classify(vs2); |
vd = f16(f16_classify(vs2)); |
||||
}, |
}, |
||||
{ |
{ |
||||
vd.v = f32_classify(vs2); |
vd = f32(f32_classify(vs2)); |
||||
}, |
}, |
||||
{ |
{ |
||||
vd.v = f64_classify(vs2); |
vd = f64(f64_classify(vs2)); |
||||
}) |
}) |
||||
|
|||||
@ -1,14 +1,7 @@ |
|||||
// vfcvt.f.x.v vd, vd2, vm
|
// vfcvt.f.x.v vd, vd2, vm
|
||||
VI_VFP_VF_LOOP |
VI_VFP_CVT_INT_TO_FP( |
||||
({ |
{ vd = i32_to_f16(vs2); }, // BODY16
|
||||
auto vs2_i = P.VU.elt<int16_t>(rs2_num, i); |
{ vd = i32_to_f32(vs2); }, // BODY32
|
||||
vd = i32_to_f16(vs2_i); |
{ vd = i64_to_f64(vs2); }, // BODY64
|
||||
}, |
int // sign
|
||||
{ |
) |
||||
auto vs2_i = P.VU.elt<int32_t>(rs2_num, i); |
|
||||
vd = i32_to_f32(vs2_i); |
|
||||
}, |
|
||||
{ |
|
||||
auto vs2_i = P.VU.elt<int64_t>(rs2_num, i); |
|
||||
vd = i64_to_f64(vs2_i); |
|
||||
}) |
|
||||
|
|||||
@ -1,14 +1,7 @@ |
|||||
// vfcvt.f.xu.v vd, vd2, vm
|
// vfcvt.f.xu.v vd, vd2, vm
|
||||
VI_VFP_VF_LOOP |
VI_VFP_CVT_INT_TO_FP( |
||||
({ |
{ vd = ui32_to_f16(vs2); }, // BODY16
|
||||
auto vs2_u = P.VU.elt<uint16_t>(rs2_num, i); |
{ vd = ui32_to_f32(vs2); }, // BODY32
|
||||
vd = ui32_to_f16(vs2_u); |
{ vd = ui64_to_f64(vs2); }, // BODY64
|
||||
}, |
uint // sign
|
||||
{ |
) |
||||
auto vs2_u = P.VU.elt<uint32_t>(rs2_num, i); |
|
||||
vd = ui32_to_f32(vs2_u); |
|
||||
}, |
|
||||
{ |
|
||||
auto vs2_u = P.VU.elt<uint64_t>(rs2_num, i); |
|
||||
vd = ui64_to_f64(vs2_u); |
|
||||
}) |
|
||||
|
|||||
@ -1,11 +1,7 @@ |
|||||
// vfcvt.rtz.x.f.v vd, vd2, vm
|
// vfcvt.rtz.x.f.v vd, vd2, vm
|
||||
VI_VFP_VF_LOOP |
VI_VFP_CVT_FP_TO_INT( |
||||
({ |
{ vd = f16_to_i16(vs2, softfloat_round_minMag, true); }, // BODY16
|
||||
P.VU.elt<int16_t>(rd_num, i) = f16_to_i16(vs2, softfloat_round_minMag, true); |
{ vd = f32_to_i32(vs2, softfloat_round_minMag, true); }, // BODY32
|
||||
}, |
{ vd = f64_to_i64(vs2, softfloat_round_minMag, true); }, // BODY64
|
||||
{ |
int // sign
|
||||
P.VU.elt<int32_t>(rd_num, i) = f32_to_i32(vs2, softfloat_round_minMag, true); |
) |
||||
}, |
|
||||
{ |
|
||||
P.VU.elt<int64_t>(rd_num, i) = f64_to_i64(vs2, softfloat_round_minMag, true); |
|
||||
}) |
|
||||
|
|||||
@ -1,11 +1,7 @@ |
|||||
// vfcvt.rtz.xu.f.v vd, vd2, vm
|
// vfcvt.rtz.xu.f.v vd, vd2, vm
|
||||
VI_VFP_VF_LOOP |
VI_VFP_CVT_FP_TO_INT( |
||||
({ |
{ vd = f16_to_ui16(vs2, softfloat_round_minMag, true); }, // BODY16
|
||||
P.VU.elt<uint16_t>(rd_num, i) = f16_to_ui16(vs2, softfloat_round_minMag, true); |
{ vd = f32_to_ui32(vs2, softfloat_round_minMag, true); }, // BODY32
|
||||
}, |
{ vd = f64_to_ui64(vs2, softfloat_round_minMag, true); }, // BODY64
|
||||
{ |
uint // sign
|
||||
P.VU.elt<uint32_t>(rd_num, i) = f32_to_ui32(vs2, softfloat_round_minMag, true); |
) |
||||
}, |
|
||||
{ |
|
||||
P.VU.elt<uint64_t>(rd_num, i) = f64_to_ui64(vs2, softfloat_round_minMag, true); |
|
||||
}) |
|
||||
|
|||||
@ -1,11 +1,7 @@ |
|||||
// vfcvt.x.f.v vd, vd2, vm
|
// vfcvt.x.f.v vd, vd2, vm
|
||||
VI_VFP_VF_LOOP |
VI_VFP_CVT_FP_TO_INT( |
||||
({ |
{ vd = f16_to_i16(vs2, softfloat_roundingMode, true); }, // BODY16
|
||||
P.VU.elt<int16_t>(rd_num, i) = f16_to_i16(vs2, STATE.frm->read(), true); |
{ vd = f32_to_i32(vs2, softfloat_roundingMode, true); }, // BODY32
|
||||
}, |
{ vd = f64_to_i64(vs2, softfloat_roundingMode, true); }, // BODY64
|
||||
{ |
int // sign
|
||||
P.VU.elt<int32_t>(rd_num, i) = f32_to_i32(vs2, STATE.frm->read(), true); |
) |
||||
}, |
|
||||
{ |
|
||||
P.VU.elt<int64_t>(rd_num, i) = f64_to_i64(vs2, STATE.frm->read(), true); |
|
||||
}) |
|
||||
|
|||||
@ -1,11 +1,7 @@ |
|||||
// vfcvt.xu.f.v vd, vd2, vm
|
// vfcvt.xu.f.v vd, vd2, vm
|
||||
VI_VFP_VV_LOOP |
VI_VFP_CVT_FP_TO_INT( |
||||
({ |
{ vd = f16_to_ui16(vs2, softfloat_roundingMode, true); }, // BODY16
|
||||
P.VU.elt<uint16_t>(rd_num, i) = f16_to_ui16(vs2, STATE.frm->read(), true); |
{ vd = f32_to_ui32(vs2, softfloat_roundingMode, true); }, // BODY32
|
||||
}, |
{ vd = f64_to_ui64(vs2, softfloat_roundingMode, true); }, // BODY64
|
||||
{ |
uint // sign
|
||||
P.VU.elt<uint32_t>(rd_num, i) = f32_to_ui32(vs2, STATE.frm->read(), true); |
) |
||||
}, |
|
||||
{ |
|
||||
P.VU.elt<uint64_t>(rd_num, i) = f64_to_ui64(vs2, STATE.frm->read(), true); |
|
||||
}) |
|
||||
|
|||||
@ -1,23 +1,9 @@ |
|||||
// vfncvt.f.f.v vd, vs2, vm
|
// vfncvt.f.f.v vd, vs2, vm
|
||||
VI_VFP_CVT_SCALE |
VI_VFP_NCVT_FP_TO_FP( |
||||
({ |
{;}, // BODY16
|
||||
; |
{ vd = f32_to_f16(vs2); }, // BODY32
|
||||
}, |
{ vd = f64_to_f32(vs2); }, // BODY64
|
||||
{ |
{;}, // CHECK16
|
||||
auto vs2 = P.VU.elt<float32_t>(rs2_num, i); |
{ require_extension(EXT_ZFH); }, // CHECK32
|
||||
P.VU.elt<float16_t>(rd_num, i, true) = f32_to_f16(vs2); |
{ require_extension('D'); } // CHECK64
|
||||
}, |
) |
||||
{ |
|
||||
auto vs2 = P.VU.elt<float64_t>(rs2_num, i); |
|
||||
P.VU.elt<float32_t>(rd_num, i, true) = f64_to_f32(vs2); |
|
||||
}, |
|
||||
{ |
|
||||
; |
|
||||
}, |
|
||||
{ |
|
||||
require(p->extension_enabled(EXT_ZFH)); |
|
||||
}, |
|
||||
{ |
|
||||
require(p->extension_enabled('D')); |
|
||||
}, |
|
||||
false, (P.VU.vsew >= 16)) |
|
||||
|
|||||
@ -1,23 +1,10 @@ |
|||||
// vfncvt.f.x.v vd, vs2, vm
|
// vfncvt.f.x.v vd, vs2, vm
|
||||
VI_VFP_CVT_SCALE |
VI_VFP_NCVT_INT_TO_FP( |
||||
({ |
{;}, // BODY16
|
||||
; |
{ vd = i32_to_f16(vs2); }, // BODY32
|
||||
}, |
{ vd = i64_to_f32(vs2); }, // BODY64
|
||||
{ |
{;}, // CHECK16
|
||||
auto vs2 = P.VU.elt<int32_t>(rs2_num, i); |
{ require_extension(EXT_ZFH); }, // CHECK32
|
||||
P.VU.elt<float16_t>(rd_num, i, true) = i32_to_f16(vs2); |
{ require_extension('F'); }, // CHECK64
|
||||
}, |
int // sign
|
||||
{ |
) |
||||
auto vs2 = P.VU.elt<int64_t>(rs2_num, i); |
|
||||
P.VU.elt<float32_t>(rd_num, i, true) = i64_to_f32(vs2); |
|
||||
}, |
|
||||
{ |
|
||||
; |
|
||||
}, |
|
||||
{ |
|
||||
require(p->extension_enabled(EXT_ZFH)); |
|
||||
}, |
|
||||
{ |
|
||||
require(p->extension_enabled('F')); |
|
||||
}, |
|
||||
false, (P.VU.vsew >= 16)) |
|
||||
|
|||||
@ -1,23 +1,10 @@ |
|||||
// vfncvt.f.xu.v vd, vs2, vm
|
// vfncvt.f.xu.v vd, vs2, vm
|
||||
VI_VFP_CVT_SCALE |
VI_VFP_NCVT_INT_TO_FP( |
||||
({ |
{;}, // BODY16
|
||||
; |
{ vd = ui32_to_f16(vs2); }, // BODY32
|
||||
}, |
{ vd = ui64_to_f32(vs2); }, // BODY64
|
||||
{ |
{;}, // CHECK16
|
||||
auto vs2 = P.VU.elt<uint32_t>(rs2_num, i); |
{ require_extension(EXT_ZFH); }, // CHECK32
|
||||
P.VU.elt<float16_t>(rd_num, i, true) = ui32_to_f16(vs2); |
{ require_extension('F'); }, // CHECK64
|
||||
}, |
uint // sign
|
||||
{ |
) |
||||
auto vs2 = P.VU.elt<uint64_t>(rs2_num, i); |
|
||||
P.VU.elt<float32_t>(rd_num, i, true) = ui64_to_f32(vs2); |
|
||||
}, |
|
||||
{ |
|
||||
; |
|
||||
}, |
|
||||
{ |
|
||||
require(p->extension_enabled(EXT_ZFH)); |
|
||||
}, |
|
||||
{ |
|
||||
require(p->extension_enabled('F')); |
|
||||
}, |
|
||||
false, (P.VU.vsew >= 16)) |
|
||||
|
|||||
@ -1,25 +1,15 @@ |
|||||
// vfncvt.rod.f.f.v vd, vs2, vm
|
// vfncvt.rod.f.f.v vd, vs2, vm
|
||||
VI_VFP_CVT_SCALE |
VI_VFP_NCVT_FP_TO_FP( |
||||
({ |
{;}, // BODY16
|
||||
; |
{ // BODY32
|
||||
}, |
softfloat_roundingMode = softfloat_round_odd; |
||||
{ |
vd = f32_to_f16(vs2); |
||||
softfloat_roundingMode = softfloat_round_odd; |
}, |
||||
auto vs2 = P.VU.elt<float32_t>(rs2_num, i); |
{ // BODY64
|
||||
P.VU.elt<float16_t>(rd_num, i, true) = f32_to_f16(vs2); |
softfloat_roundingMode = softfloat_round_odd; |
||||
}, |
vd = f64_to_f32(vs2); |
||||
{ |
}, |
||||
softfloat_roundingMode = softfloat_round_odd; |
{;}, // CHECK16
|
||||
auto vs2 = P.VU.elt<float64_t>(rs2_num, i); |
{ require_extension(EXT_ZFH); }, // CHECK32
|
||||
P.VU.elt<float32_t>(rd_num, i, true) = f64_to_f32(vs2); |
{ require_extension('F'); } // CHECK64
|
||||
}, |
) |
||||
{ |
|
||||
; |
|
||||
}, |
|
||||
{ |
|
||||
require(p->extension_enabled(EXT_ZFH)); |
|
||||
}, |
|
||||
{ |
|
||||
require(p->extension_enabled('F')); |
|
||||
}, |
|
||||
false, (P.VU.vsew >= 16)) |
|
||||
|
|||||
@ -1,24 +1,10 @@ |
|||||
// vfncvt.rtz.x.f.w vd, vs2, vm
|
// vfncvt.rtz.x.f.w vd, vs2, vm
|
||||
VI_VFP_CVT_SCALE |
VI_VFP_NCVT_FP_TO_INT( |
||||
({ |
{ vd = f16_to_i8(vs2, softfloat_round_minMag, true); }, // BODY16
|
||||
auto vs2 = P.VU.elt<float16_t>(rs2_num, i); |
{ vd = f32_to_i16(vs2, softfloat_round_minMag, true); }, // BODY32
|
||||
P.VU.elt<int8_t>(rd_num, i, true) = f16_to_i8(vs2, softfloat_round_minMag, true); |
{ vd = f64_to_i32(vs2, softfloat_round_minMag, true); }, // BODY64
|
||||
}, |
{ require_extension(EXT_ZFH); }, // CHECK16
|
||||
{ |
{ require(p->extension_enabled('F')); }, // CHECK32
|
||||
auto vs2 = P.VU.elt<float32_t>(rs2_num, i); |
{ require(p->extension_enabled('D')); }, // CHECK64
|
||||
P.VU.elt<int16_t>(rd_num, i, true) = f32_to_i16(vs2, softfloat_round_minMag, true); |
int // sign
|
||||
}, |
) |
||||
{ |
|
||||
auto vs2 = P.VU.elt<float64_t>(rs2_num, i); |
|
||||
P.VU.elt<int32_t>(rd_num, i, true) = f64_to_i32(vs2, softfloat_round_minMag, true); |
|
||||
}, |
|
||||
{ |
|
||||
require(p->extension_enabled(EXT_ZFH)); |
|
||||
}, |
|
||||
{ |
|
||||
require(p->extension_enabled('F')); |
|
||||
}, |
|
||||
{ |
|
||||
require(p->extension_enabled('D')); |
|
||||
}, |
|
||||
false, (P.VU.vsew <= 32)) |
|
||||
|
|||||
@ -1,24 +1,10 @@ |
|||||
// vfncvt.rtz.xu.f.w vd, vs2, vm
|
// vfncvt.rtz.xu.f.w vd, vs2, vm
|
||||
VI_VFP_CVT_SCALE |
VI_VFP_NCVT_FP_TO_INT( |
||||
({ |
{ vd = f16_to_ui8(vs2, softfloat_round_minMag, true); }, // BODY16
|
||||
auto vs2 = P.VU.elt<float16_t>(rs2_num, i); |
{ vd = f32_to_ui16(vs2, softfloat_round_minMag, true); }, // BODY32
|
||||
P.VU.elt<uint8_t>(rd_num, i, true) = f16_to_ui8(vs2, softfloat_round_minMag, true); |
{ vd = f64_to_ui32(vs2, softfloat_round_minMag, true); }, // BODY64
|
||||
}, |
{ require_extension(EXT_ZFH); }, // CHECK16
|
||||
{ |
{ require(p->extension_enabled('F')); }, // CHECK32
|
||||
auto vs2 = P.VU.elt<float32_t>(rs2_num, i); |
{ require(p->extension_enabled('D')); }, // CHECK64
|
||||
P.VU.elt<uint16_t>(rd_num, i, true) = f32_to_ui16(vs2, softfloat_round_minMag, true); |
uint // sign
|
||||
}, |
) |
||||
{ |
|
||||
auto vs2 = P.VU.elt<float64_t>(rs2_num, i); |
|
||||
P.VU.elt<uint32_t>(rd_num, i, true) = f64_to_ui32(vs2, softfloat_round_minMag, true); |
|
||||
}, |
|
||||
{ |
|
||||
require(p->extension_enabled(EXT_ZFH)); |
|
||||
}, |
|
||||
{ |
|
||||
require(p->extension_enabled('F')); |
|
||||
}, |
|
||||
{ |
|
||||
require(p->extension_enabled('D')); |
|
||||
}, |
|
||||
false, (P.VU.vsew <= 32)) |
|
||||
|
|||||
@ -1,24 +1,10 @@ |
|||||
// vfncvt.x.f.w vd, vs2, vm
|
// vfncvt.x.f.w vd, vs2, vm
|
||||
VI_VFP_CVT_SCALE |
VI_VFP_NCVT_FP_TO_INT( |
||||
({ |
{ vd = f16_to_i8(vs2, softfloat_roundingMode, true); }, // BODY16
|
||||
auto vs2 = P.VU.elt<float16_t>(rs2_num, i); |
{ vd = f32_to_i16(vs2, softfloat_roundingMode, true); }, // BODY32
|
||||
P.VU.elt<int8_t>(rd_num, i, true) = f16_to_i8(vs2, STATE.frm->read(), true); |
{ vd = f64_to_i32(vs2, softfloat_roundingMode, true); }, // BODY64
|
||||
}, |
{ require_extension(EXT_ZFH); }, // CHECK16
|
||||
{ |
{ require(p->extension_enabled('F')); }, // CHECK32
|
||||
auto vs2 = P.VU.elt<float32_t>(rs2_num, i); |
{ require(p->extension_enabled('D')); }, // CHECK64
|
||||
P.VU.elt<int16_t>(rd_num, i, true) = f32_to_i16(vs2, STATE.frm->read(), true); |
int // sign
|
||||
}, |
) |
||||
{ |
|
||||
auto vs2 = P.VU.elt<float64_t>(rs2_num, i); |
|
||||
P.VU.elt<int32_t>(rd_num, i, true) = f64_to_i32(vs2, STATE.frm->read(), true); |
|
||||
}, |
|
||||
{ |
|
||||
require(p->extension_enabled(EXT_ZFH)); |
|
||||
}, |
|
||||
{ |
|
||||
require(p->extension_enabled('F')); |
|
||||
}, |
|
||||
{ |
|
||||
require(p->extension_enabled('D')); |
|
||||
}, |
|
||||
false, (P.VU.vsew <= 32)) |
|
||||
|
|||||
@ -1,24 +1,10 @@ |
|||||
// vfncvt.xu.f.w vd, vs2, vm
|
// vfncvt.xu.f.w vd, vs2, vm
|
||||
VI_VFP_CVT_SCALE |
VI_VFP_NCVT_FP_TO_INT( |
||||
({ |
{ vd = f16_to_ui8(vs2, softfloat_roundingMode, true); }, // BODY16
|
||||
auto vs2 = P.VU.elt<float16_t>(rs2_num, i); |
{ vd = f32_to_ui16(vs2, softfloat_roundingMode, true); }, // BODY32
|
||||
P.VU.elt<uint8_t>(rd_num, i, true) = f16_to_ui8(vs2, STATE.frm->read(), true); |
{ vd = f64_to_ui32(vs2, softfloat_roundingMode, true); }, // BODY64
|
||||
}, |
{ require_extension(EXT_ZFH); }, // CHECK16
|
||||
{ |
{ require(p->extension_enabled('F')); }, // CHECK32
|
||||
auto vs2 = P.VU.elt<float32_t>(rs2_num, i); |
{ require(p->extension_enabled('D')); }, // CHECK64
|
||||
P.VU.elt<uint16_t>(rd_num, i, true) = f32_to_ui16(vs2, STATE.frm->read(), true); |
uint // sign
|
||||
}, |
) |
||||
{ |
|
||||
auto vs2 = P.VU.elt<float64_t>(rs2_num, i); |
|
||||
P.VU.elt<uint32_t>(rd_num, i, true) = f64_to_ui32(vs2, STATE.frm->read(), true); |
|
||||
}, |
|
||||
{ |
|
||||
require(p->extension_enabled(EXT_ZFH)); |
|
||||
}, |
|
||||
{ |
|
||||
require(p->extension_enabled('F')); |
|
||||
}, |
|
||||
{ |
|
||||
require(p->extension_enabled('D')); |
|
||||
}, |
|
||||
false, (P.VU.vsew <= 32)) |
|
||||
|
|||||
@ -1,23 +1,9 @@ |
|||||
// vfwcvt.f.f.v vd, vs2, vm
|
// vfwcvt.f.f.v vd, vs2, vm
|
||||
VI_VFP_CVT_SCALE |
VI_VFP_WCVT_FP_TO_FP( |
||||
({ |
{;}, // BODY8
|
||||
; |
{ vd = f16_to_f32(vs2); }, // BODY16
|
||||
}, |
{ vd = f32_to_f64(vs2); }, // BODY32
|
||||
{ |
{;}, // CHECK8
|
||||
auto vs2 = P.VU.elt<float16_t>(rs2_num, i); |
{ require_extension(EXT_ZFH); }, // CHECK16
|
||||
P.VU.elt<float32_t>(rd_num, i, true) = f16_to_f32(vs2); |
{ require_extension('D'); } // CHECK32
|
||||
}, |
) |
||||
{ |
|
||||
auto vs2 = P.VU.elt<float32_t>(rs2_num, i); |
|
||||
P.VU.elt<float64_t>(rd_num, i, true) = f32_to_f64(vs2); |
|
||||
}, |
|
||||
{ |
|
||||
; |
|
||||
}, |
|
||||
{ |
|
||||
require(p->extension_enabled(EXT_ZFH)); |
|
||||
}, |
|
||||
{ |
|
||||
require(p->extension_enabled('D')); |
|
||||
}, |
|
||||
true, (P.VU.vsew >= 16)) |
|
||||
|
|||||
@ -1,24 +1,10 @@ |
|||||
// vfwcvt.f.x.v vd, vs2, vm
|
// vfwcvt.f.x.v vd, vs2, vm
|
||||
VI_VFP_CVT_SCALE |
VI_VFP_WCVT_INT_TO_FP( |
||||
({ |
{ vd = i32_to_f16(vs2); }, // BODY8
|
||||
auto vs2 = P.VU.elt<int8_t>(rs2_num, i); |
{ vd = i32_to_f32(vs2); }, // BODY16
|
||||
P.VU.elt<float16_t>(rd_num, i, true) = i32_to_f16(vs2); |
{ vd = i32_to_f64(vs2); }, // BODY32
|
||||
}, |
{ require(p->extension_enabled(EXT_ZFH)); }, // CHECK8
|
||||
{ |
{ require_extension('F'); }, // CHECK16
|
||||
auto vs2 = P.VU.elt<int16_t>(rs2_num, i); |
{ require_extension('D'); }, // CHECK32
|
||||
P.VU.elt<float32_t>(rd_num, i, true) = i32_to_f32(vs2); |
int // sign
|
||||
}, |
) |
||||
{ |
|
||||
auto vs2 = P.VU.elt<int32_t>(rs2_num, i); |
|
||||
P.VU.elt<float64_t>(rd_num, i, true) = i32_to_f64(vs2); |
|
||||
}, |
|
||||
{ |
|
||||
require(p->extension_enabled(EXT_ZFH)); |
|
||||
}, |
|
||||
{ |
|
||||
require(p->extension_enabled('F')); |
|
||||
}, |
|
||||
{ |
|
||||
require(p->extension_enabled('D')); |
|
||||
}, |
|
||||
true, (P.VU.vsew >= 8)) |
|
||||
|
|||||
@ -1,24 +1,10 @@ |
|||||
// vfwcvt.f.xu.v vd, vs2, vm
|
// vfwcvt.f.xu.v vd, vs2, vm
|
||||
VI_VFP_CVT_SCALE |
VI_VFP_WCVT_INT_TO_FP( |
||||
({ |
{ vd = ui32_to_f16(vs2); }, // BODY8
|
||||
auto vs2 = P.VU.elt<uint8_t>(rs2_num, i); |
{ vd = ui32_to_f32(vs2); }, // BODY16
|
||||
P.VU.elt<float16_t>(rd_num, i, true) = ui32_to_f16(vs2); |
{ vd = ui32_to_f64(vs2); }, // BODY32
|
||||
}, |
{ require(p->extension_enabled(EXT_ZFH)); }, // CHECK8
|
||||
{ |
{ require_extension('F'); }, // CHECK16
|
||||
auto vs2 = P.VU.elt<uint16_t>(rs2_num, i); |
{ require_extension('D'); }, // CHECK32
|
||||
P.VU.elt<float32_t>(rd_num, i, true) = ui32_to_f32(vs2); |
uint // sign
|
||||
}, |
) |
||||
{ |
|
||||
auto vs2 = P.VU.elt<uint32_t>(rs2_num, i); |
|
||||
P.VU.elt<float64_t>(rd_num, i, true) = ui32_to_f64(vs2); |
|
||||
}, |
|
||||
{ |
|
||||
require(p->extension_enabled(EXT_ZFH)); |
|
||||
}, |
|
||||
{ |
|
||||
require(p->extension_enabled('F')); |
|
||||
}, |
|
||||
{ |
|
||||
require(p->extension_enabled('D')); |
|
||||
}, |
|
||||
true, (P.VU.vsew >= 8)) |
|
||||
|
|||||
@ -1,23 +1,10 @@ |
|||||
// vfwcvt.rtz.x.f.v vd, vs2, vm
|
// vfwcvt.rtz.x.f.v vd, vs2, vm
|
||||
VI_VFP_CVT_SCALE |
VI_VFP_WCVT_FP_TO_INT( |
||||
({ |
{;}, // BODY8
|
||||
; |
{ vd = f16_to_i32(vs2, softfloat_round_minMag, true); }, // BODY16
|
||||
}, |
{ vd = f32_to_i64(vs2, softfloat_round_minMag, true); }, // BODY32
|
||||
{ |
{;}, // CHECK8
|
||||
auto vs2 = P.VU.elt<float16_t>(rs2_num, i); |
{ require_extension(EXT_ZFH); }, // CHECK16
|
||||
P.VU.elt<int32_t>(rd_num, i, true) = f16_to_i32(vs2, softfloat_round_minMag, true); |
{ require_extension('F'); }, // CHECK32
|
||||
}, |
int // sign
|
||||
{ |
) |
||||
auto vs2 = P.VU.elt<float32_t>(rs2_num, i); |
|
||||
P.VU.elt<int64_t>(rd_num, i, true) = f32_to_i64(vs2, softfloat_round_minMag, true); |
|
||||
}, |
|
||||
{ |
|
||||
; |
|
||||
}, |
|
||||
{ |
|
||||
require(p->extension_enabled(EXT_ZFH)); |
|
||||
}, |
|
||||
{ |
|
||||
require(p->extension_enabled('F')); |
|
||||
}, |
|
||||
true, (P.VU.vsew >= 16)) |
|
||||
|
|||||
@ -1,23 +1,10 @@ |
|||||
// vfwcvt.rtz,xu.f.v vd, vs2, vm
|
// vfwcvt.rtz,xu.f.v vd, vs2, vm
|
||||
VI_VFP_CVT_SCALE |
VI_VFP_WCVT_FP_TO_INT( |
||||
({ |
{;}, // BODY8
|
||||
; |
{ vd = f16_to_ui32(vs2, softfloat_round_minMag, true); }, // BODY16
|
||||
}, |
{ vd = f32_to_ui64(vs2, softfloat_round_minMag, true); }, // BODY32
|
||||
{ |
{;}, // CHECK8
|
||||
auto vs2 = P.VU.elt<float16_t>(rs2_num, i); |
{ require_extension(EXT_ZFH); }, // CHECK16
|
||||
P.VU.elt<uint32_t>(rd_num, i, true) = f16_to_ui32(vs2, softfloat_round_minMag, true); |
{ require_extension('F'); }, // CHECK32
|
||||
}, |
uint // sign
|
||||
{ |
) |
||||
auto vs2 = P.VU.elt<float32_t>(rs2_num, i); |
|
||||
P.VU.elt<uint64_t>(rd_num, i, true) = f32_to_ui64(vs2, softfloat_round_minMag, true); |
|
||||
}, |
|
||||
{ |
|
||||
; |
|
||||
}, |
|
||||
{ |
|
||||
require(p->extension_enabled(EXT_ZFH)); |
|
||||
}, |
|
||||
{ |
|
||||
require(p->extension_enabled('F')); |
|
||||
}, |
|
||||
true, (P.VU.vsew >= 16)) |
|
||||
|
|||||
@ -1,23 +1,10 @@ |
|||||
// vfwcvt.x.f.v vd, vs2, vm
|
// vfwcvt.x.f.v vd, vs2, vm
|
||||
VI_VFP_CVT_SCALE |
VI_VFP_WCVT_FP_TO_INT( |
||||
({ |
{;}, // BODY8
|
||||
; |
{ vd = f16_to_i32(vs2, softfloat_roundingMode, true); }, // BODY16
|
||||
}, |
{ vd = f32_to_i64(vs2, softfloat_roundingMode, true); }, // BODY32
|
||||
{ |
{;}, // CHECK8
|
||||
auto vs2 = P.VU.elt<float16_t>(rs2_num, i); |
{ require_extension(EXT_ZFH); }, // CHECK16
|
||||
P.VU.elt<int32_t>(rd_num, i, true) = f16_to_i32(vs2, STATE.frm->read(), true); |
{ require_extension('F'); }, // CHECK32
|
||||
}, |
int // sign
|
||||
{ |
) |
||||
auto vs2 = P.VU.elt<float32_t>(rs2_num, i); |
|
||||
P.VU.elt<int64_t>(rd_num, i, true) = f32_to_i64(vs2, STATE.frm->read(), true); |
|
||||
}, |
|
||||
{ |
|
||||
; |
|
||||
}, |
|
||||
{ |
|
||||
require(p->extension_enabled(EXT_ZFH)); |
|
||||
}, |
|
||||
{ |
|
||||
require(p->extension_enabled('F')); |
|
||||
}, |
|
||||
true, (P.VU.vsew >= 16)) |
|
||||
|
|||||
@ -1,23 +1,10 @@ |
|||||
// vfwcvt.xu.f.v vd, vs2, vm
|
// vfwcvt.xu.f.v vd, vs2, vm
|
||||
VI_VFP_CVT_SCALE |
VI_VFP_WCVT_FP_TO_INT( |
||||
({ |
{;}, // BODY8
|
||||
; |
{ vd = f16_to_ui32(vs2, softfloat_roundingMode, true); }, // BODY16
|
||||
}, |
{ vd = f32_to_ui64(vs2, softfloat_roundingMode, true); }, // BODY32
|
||||
{ |
{;}, // CHECK8
|
||||
auto vs2 = P.VU.elt<float16_t>(rs2_num, i); |
{ require_extension(EXT_ZFH); }, // CHECK16
|
||||
P.VU.elt<uint32_t>(rd_num, i, true) = f16_to_ui32(vs2, STATE.frm->read(), true); |
{ require_extension('F'); }, // CHECK32
|
||||
}, |
uint // sign
|
||||
{ |
) |
||||
auto vs2 = P.VU.elt<float32_t>(rs2_num, i); |
|
||||
P.VU.elt<uint64_t>(rd_num, i, true) = f32_to_ui64(vs2, STATE.frm->read(), true); |
|
||||
}, |
|
||||
{ |
|
||||
; |
|
||||
}, |
|
||||
{ |
|
||||
require(p->extension_enabled(EXT_ZFH)); |
|
||||
}, |
|
||||
{ |
|
||||
require(p->extension_enabled('F')); |
|
||||
}, |
|
||||
true, (P.VU.vsew >= 16)) |
|
||||
|
|||||
Loading…
Reference in new issue