m.d.comb += signed.eq(self.i.ctx.op[0])
# special cases
- with m.If(a1.exp_n127):
+ with m.If(a1.is_nan):
+ m.d.comb += self.o.z.eq((1<<mz)-1) # NaN overflow
+
+ with m.Elif(a1.exp_n127):
m.d.comb += self.o.z.eq(0)
# unsigned, -ve, return 0
def fcvt_f16_ui32(x):
return sfpy.float.f16_to_ui32(x)
+def fcvt_f16_ui16(x):
+ return sfpy.float.f16_to_ui32(x) & 0xffff
+
######################
# signed int to fp
######################
# XXX softfloat-3 doesn't have ui16_to_xxx so use ui32 instead.
# should be fine.
dut = FPCVTF2IntMuxInOut(16, 16, 4, op_wid=1)
- runfp(dut, 16, "test_fcvt_f2int_pipe_f16_ui16", Float16, fcvt_f16_ui32,
+ runfp(dut, 16, "test_fcvt_f2int_pipe_f16_ui16", Float16, fcvt_f16_ui16,
True, n_vals=100)
def test_int_pipe_ui16_f64():