def test_demote_promote(self): # type: () -> None r = Rtl( self.v1 << fpromote(self.v0), self.v2 << fdemote(self.v1), self.v3 << fpromote(self.v2), ) x = XForm(r, r) tv0_exp = 'Some({})'.format(self.v0.get_typevar().name) tv1_exp = 'Some({})'.format(self.v1.get_typevar().name) tv2_exp = 'Some({})'.format(self.v2.get_typevar().name) tv3_exp = 'Some({})'.format(self.v3.get_typevar().name) self.check_yo_check( x, sequence(wider_check(tv1_exp, tv0_exp), wider_check(tv1_exp, tv2_exp), wider_check(tv3_exp, tv2_exp)))
def test_demote_promote(self): # type: () -> None r = Rtl( self.v1 << fpromote(self.v0), self.v2 << fdemote(self.v1), self.v3 << fpromote(self.v2), ) x = XForm(r, r) tv0_exp = 'Some({})'.format(self.v0.get_typevar().name) tv1_exp = 'Some({})'.format(self.v1.get_typevar().name) tv2_exp = 'Some({})'.format(self.v2.get_typevar().name) tv3_exp = 'Some({})'.format(self.v3.get_typevar().name) self.check_yo_check( x, sequence(wider_check(tv1_exp, tv0_exp), wider_check(tv1_exp, tv2_exp), wider_check(tv3_exp, tv2_exp)))
def test_fpromote_fdemote(self): # type: () -> None r = Rtl( self.v1 << fpromote(self.v0), self.v2 << fdemote(self.v1), ) ti = TypeEnv() typing = ti_rtl(r, ti) typing = typing.extract() ftype0 = TypeVar("t", "", floats=True, simd=(1, 256)) ftype1 = TypeVar("t1", "", floats=True, simd=(1, 256)) ftype2 = TypeVar("t2", "", floats=True, simd=(1, 256)) check_typing(typing, ({ self.v0: ftype0, self.v1: ftype1, self.v2: ftype2, }, [WiderOrEq(ftype1, ftype0), WiderOrEq(ftype1, ftype2)]))
def test_fpromote_fdemote(self): # type: () -> None r = Rtl( self.v1 << fpromote(self.v0), self.v2 << fdemote(self.v1), ) ti = TypeEnv() typing = ti_rtl(r, ti) typing = typing.extract() ftype0 = TypeVar("t", "", floats=True, simd=(1, 256)) ftype1 = TypeVar("t1", "", floats=True, simd=(1, 256)) ftype2 = TypeVar("t2", "", floats=True, simd=(1, 256)) check_typing(typing, ({ self.v0: ftype0, self.v1: ftype1, self.v2: ftype2, }, [WiderOrEq(ftype1, ftype0), WiderOrEq(ftype1, ftype2)]))