23 changed files with 153 additions and 128 deletions
@ -1,10 +1,11 @@ |
|||
// vfncvt.f.f.v vd, vs2, vm
|
|||
VI_CHECK_SDS(false); |
|||
if (P.VU.vsew == e32) |
|||
require(p->supports_extension('D')); |
|||
|
|||
VI_VFP_LOOP_BASE |
|||
VI_VFP_CVT_SCALE |
|||
({ |
|||
auto vs2 = P.VU.elt<float32_t>(rs2_num, i); |
|||
P.VU.elt<float16_t>(rd_num, i, true) = f32_to_f16(vs2); |
|||
}, |
|||
{ |
|||
auto vs2 = P.VU.elt<float64_t>(rs2_num, i); |
|||
P.VU.elt<float32_t>(rd_num, i, true) = f64_to_f32(vs2); |
|||
set_fp_exceptions; |
|||
VI_VFP_LOOP_END |
|||
}, false) |
|||
|
|||
|
|||
@ -1,10 +1,10 @@ |
|||
// vfncvt.f.x.v vd, vs2, vm
|
|||
VI_CHECK_SDS(false); |
|||
if (P.VU.vsew == e32) |
|||
require(p->supports_extension('D')); |
|||
|
|||
VI_VFP_LOOP_BASE |
|||
VI_VFP_CVT_SCALE |
|||
({ |
|||
auto vs2 = P.VU.elt<int32_t>(rs2_num, i); |
|||
P.VU.elt<float16_t>(rd_num, i, true) = i32_to_f16(vs2); |
|||
}, |
|||
{ |
|||
auto vs2 = P.VU.elt<int64_t>(rs2_num, i); |
|||
P.VU.elt<float32_t>(rd_num, i, true) = i64_to_f32(vs2); |
|||
set_fp_exceptions; |
|||
VI_VFP_LOOP_END |
|||
}, false) |
|||
|
|||
@ -1,10 +1,10 @@ |
|||
// vfncvt.f.xu.v vd, vs2, vm
|
|||
VI_CHECK_SDS(false); |
|||
if (P.VU.vsew == e32) |
|||
require(p->supports_extension('D')); |
|||
|
|||
VI_VFP_LOOP_BASE |
|||
VI_VFP_CVT_SCALE |
|||
({ |
|||
auto vs2 = P.VU.elt<uint32_t>(rs2_num, i); |
|||
P.VU.elt<float16_t>(rd_num, i, true) = ui32_to_f16(vs2); |
|||
}, |
|||
{ |
|||
auto vs2 = P.VU.elt<uint64_t>(rs2_num, i); |
|||
P.VU.elt<float32_t>(rd_num, i, true) = ui64_to_f32(vs2); |
|||
set_fp_exceptions; |
|||
VI_VFP_LOOP_END |
|||
}, false) |
|||
|
|||
@ -1,11 +1,12 @@ |
|||
// vfncvt.f.f.v vd, vs2, vm
|
|||
VI_CHECK_SDS(false); |
|||
if (P.VU.vsew == e32) |
|||
require(p->supports_extension('D')); |
|||
|
|||
VI_VFP_LOOP_BASE |
|||
// vfncvt.rod.f.f.v vd, vs2, vm
|
|||
VI_VFP_CVT_SCALE |
|||
({ |
|||
softfloat_roundingMode = softfloat_round_odd; |
|||
auto vs2 = P.VU.elt<float32_t>(rs2_num, i); |
|||
P.VU.elt<float16_t>(rd_num, i, true) = f32_to_f16(vs2); |
|||
}, |
|||
{ |
|||
softfloat_roundingMode = softfloat_round_odd; |
|||
auto vs2 = P.VU.elt<float64_t>(rs2_num, i); |
|||
P.VU.elt<float32_t>(rd_num, i, true) = f64_to_f32(vs2); |
|||
set_fp_exceptions; |
|||
VI_VFP_LOOP_END |
|||
}, false) |
|||
|
|||
@ -1,10 +1,10 @@ |
|||
// vfncvt.x.f.v vd, vs2, vm
|
|||
VI_CHECK_SDS(false); |
|||
if (P.VU.vsew == e32) |
|||
require(p->supports_extension('D')); |
|||
|
|||
VI_VFP_LOOP_BASE |
|||
// vfncvt.rtz.x.f.w vd, vs2, vm
|
|||
VI_VFP_CVT_SCALE |
|||
({ |
|||
auto vs2 = P.VU.elt<float32_t>(rs2_num, i); |
|||
P.VU.elt<int16_t>(rd_num, i, true) = f32_to_i16(vs2, softfloat_round_minMag, true); |
|||
}, |
|||
{ |
|||
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); |
|||
set_fp_exceptions; |
|||
VI_VFP_LOOP_END |
|||
}, false) |
|||
|
|||
@ -1,10 +1,10 @@ |
|||
// vfncvt.xu.f.v vd, vs2, vm
|
|||
VI_CHECK_SDS(false); |
|||
if (P.VU.vsew == e32) |
|||
require(p->supports_extension('D')); |
|||
|
|||
VI_VFP_LOOP_BASE |
|||
// vfncvt.rtz.xu.f.w vd, vs2, vm
|
|||
VI_VFP_CVT_SCALE |
|||
({ |
|||
auto vs2 = P.VU.elt<float32_t>(rs2_num, i); |
|||
P.VU.elt<uint16_t>(rd_num, i, true) = f32_to_ui16(vs2, softfloat_round_minMag, true); |
|||
}, |
|||
{ |
|||
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); |
|||
set_fp_exceptions; |
|||
VI_VFP_LOOP_END |
|||
}, false) |
|||
|
|||
@ -1,10 +1,10 @@ |
|||
// vfncvt.x.f.v vd, vs2, vm
|
|||
VI_CHECK_SDS(false); |
|||
if (P.VU.vsew == e32) |
|||
require(p->supports_extension('D')); |
|||
|
|||
VI_VFP_LOOP_BASE |
|||
// vfncvt.x.f.w vd, vs2, vm
|
|||
VI_VFP_CVT_SCALE |
|||
({ |
|||
auto vs2 = P.VU.elt<float32_t>(rs2_num, i); |
|||
P.VU.elt<int16_t>(rd_num, i, true) = f32_to_i16(vs2, STATE.frm, true); |
|||
}, |
|||
{ |
|||
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, true); |
|||
set_fp_exceptions; |
|||
VI_VFP_LOOP_END |
|||
}, false) |
|||
|
|||
@ -1,10 +1,10 @@ |
|||
// vfncvt.xu.f.v vd, vs2, vm
|
|||
VI_CHECK_SDS(false); |
|||
if (P.VU.vsew == e32) |
|||
require(p->supports_extension('D')); |
|||
|
|||
VI_VFP_LOOP_BASE |
|||
// vfncvt.xu.f.w vd, vs2, vm
|
|||
VI_VFP_CVT_SCALE |
|||
({ |
|||
auto vs2 = P.VU.elt<float32_t>(rs2_num, i); |
|||
P.VU.elt<uint16_t>(rd_num, i, true) = f32_to_ui16(vs2, STATE.frm, true); |
|||
}, |
|||
{ |
|||
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, true); |
|||
set_fp_exceptions; |
|||
VI_VFP_LOOP_END |
|||
}, false) |
|||
|
|||
@ -1,10 +1,10 @@ |
|||
// vfwcvt.f.f.v vd, vs2, vm
|
|||
VI_CHECK_DSS(false); |
|||
if (P.VU.vsew == e32) |
|||
require(p->supports_extension('D')); |
|||
|
|||
VI_VFP_LOOP_BASE |
|||
VI_VFP_CVT_SCALE |
|||
({ |
|||
auto vs2 = P.VU.elt<float16_t>(rs2_num, i); |
|||
P.VU.elt<float32_t>(rd_num, i, true) = f16_to_f32(vs2); |
|||
}, |
|||
{ |
|||
auto vs2 = P.VU.elt<float32_t>(rs2_num, i); |
|||
P.VU.elt<float64_t>(rd_num, i, true) = f32_to_f64(vs2); |
|||
set_fp_exceptions; |
|||
VI_VFP_LOOP_END |
|||
}, true) |
|||
|
|||
@ -1,10 +1,10 @@ |
|||
// vfwcvt.f.x.v vd, vs2, vm
|
|||
VI_CHECK_DSS(false); |
|||
if (P.VU.vsew == e32) |
|||
require(p->supports_extension('D')); |
|||
|
|||
VI_VFP_LOOP_BASE |
|||
VI_VFP_CVT_SCALE |
|||
({ |
|||
auto vs2 = P.VU.elt<int16_t>(rs2_num, i); |
|||
P.VU.elt<float32_t>(rd_num, i, true) = i32_to_f32(vs2); |
|||
}, |
|||
{ |
|||
auto vs2 = P.VU.elt<int32_t>(rs2_num, i); |
|||
P.VU.elt<float64_t>(rd_num, i, true) = i32_to_f64(vs2); |
|||
set_fp_exceptions; |
|||
VI_VFP_LOOP_END |
|||
}, true) |
|||
|
|||
@ -1,10 +1,10 @@ |
|||
// vfwcvt.f.xu.v vd, vs2, vm
|
|||
VI_CHECK_DSS(false); |
|||
if (P.VU.vsew == e32) |
|||
require(p->supports_extension('D')); |
|||
|
|||
VI_VFP_LOOP_BASE |
|||
VI_VFP_CVT_SCALE |
|||
({ |
|||
auto vs2 = P.VU.elt<uint16_t>(rs2_num, i); |
|||
P.VU.elt<float32_t>(rd_num, i, true) = ui32_to_f32(vs2); |
|||
}, |
|||
{ |
|||
auto vs2 = P.VU.elt<uint32_t>(rs2_num, i); |
|||
P.VU.elt<float64_t>(rd_num, i, true) = ui32_to_f64(vs2); |
|||
set_fp_exceptions; |
|||
VI_VFP_LOOP_END |
|||
}, true) |
|||
|
|||
@ -1,10 +1,10 @@ |
|||
// vfwcvt.x.f.v vd, vs2, vm
|
|||
VI_CHECK_DSS(false); |
|||
if (P.VU.vsew == e32) |
|||
require(p->supports_extension('D')); |
|||
|
|||
VI_VFP_LOOP_BASE |
|||
// vfwcvt.rtz.x.f.v vd, vs2, vm
|
|||
VI_VFP_CVT_SCALE |
|||
({ |
|||
auto vs2 = P.VU.elt<float16_t>(rs2_num, i); |
|||
P.VU.elt<int32_t>(rd_num, i, true) = f16_to_i32(vs2, softfloat_round_minMag, true); |
|||
}, |
|||
{ |
|||
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); |
|||
set_fp_exceptions; |
|||
VI_VFP_LOOP_END |
|||
}, true) |
|||
|
|||
@ -1,10 +1,10 @@ |
|||
// vfwcvt.xu.f.v vd, vs2, vm
|
|||
VI_CHECK_DSS(false); |
|||
if (P.VU.vsew == e32) |
|||
require(p->supports_extension('D')); |
|||
|
|||
VI_VFP_LOOP_BASE |
|||
// vfwcvt.rtz,xu.f.v vd, vs2, vm
|
|||
VI_VFP_CVT_SCALE |
|||
({ |
|||
auto vs2 = P.VU.elt<float16_t>(rs2_num, i); |
|||
P.VU.elt<uint32_t>(rd_num, i, true) = f16_to_ui32(vs2, softfloat_round_minMag, true); |
|||
}, |
|||
{ |
|||
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); |
|||
set_fp_exceptions; |
|||
VI_VFP_LOOP_END |
|||
}, true) |
|||
|
|||
@ -1,10 +1,10 @@ |
|||
// vfwcvt.x.f.v vd, vs2, vm
|
|||
VI_CHECK_DSS(false); |
|||
if (P.VU.vsew == e32) |
|||
require(p->supports_extension('D')); |
|||
|
|||
VI_VFP_LOOP_BASE |
|||
VI_VFP_CVT_SCALE |
|||
({ |
|||
auto vs2 = P.VU.elt<float16_t>(rs2_num, i); |
|||
P.VU.elt<int32_t>(rd_num, i, true) = f16_to_i32(vs2, STATE.frm, true); |
|||
}, |
|||
{ |
|||
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, true); |
|||
set_fp_exceptions; |
|||
VI_VFP_LOOP_END |
|||
}, true) |
|||
|
|||
@ -1,10 +1,10 @@ |
|||
// vfwcvt.xu.f.v vd, vs2, vm
|
|||
VI_CHECK_DSS(false); |
|||
if (P.VU.vsew == e32) |
|||
require(p->supports_extension('D')); |
|||
|
|||
VI_VFP_LOOP_BASE |
|||
VI_VFP_CVT_SCALE |
|||
({ |
|||
auto vs2 = P.VU.elt<float16_t>(rs2_num, i); |
|||
P.VU.elt<uint32_t>(rd_num, i, true) = f16_to_ui32(vs2, STATE.frm, true); |
|||
}, |
|||
{ |
|||
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, true); |
|||
set_fp_exceptions; |
|||
VI_VFP_LOOP_END |
|||
}, true) |
|||
|
|||
Loading…
Reference in new issue