Exemple #1
0
int main ()
{
    check_div ((int)1, "INT");
    check_div ((long)1, "LONG");

#if defined (LONG_LONG)
    check_div ((LONG_LONG)1, "LLONG");
#endif   // LONG_LONG

    return 0;
}
	safe_operations<c>& operator/=(safe_operations<c> const& rhs)
	{
		if (!check_div(value, rhs.value, typename container <c>::tag()))
			throw std::overflow_error("In expression is ovwerflow");
		value /= rhs.value;
		return (*this);
	}
bool mul_zdouble(void)
{	bool ok = true;

	ok &= check_div();
	ok &= check_mul();

	return ok;
}
Exemple #4
0
void
proto_callback (uint8_t cmd, uint8_t size, uint8_t *args)
{
    uint8_t ap, bp, as, bs;
    uint16_t i;
    int32_t al, bl, rl[4];
    uint32_t patl[] = { 0xa66a6aa6, 0x5a5affff, 0xffcdffcd, 0xffffffff };
#define patn (sizeof (patl) / sizeof (patl[0]))
#define c(cmd, size) (cmd << 8 | size)
    switch (c (cmd, size))
    {
    case c ('z', 0):
        utils_reset ();
        break;
    case c ('m', 0):
        for (ap = 0; ap < patn; ap++)
            for (bp = 0; bp < patn; bp++)
                for (as = 0; as < 32; as++)
                    for (bs = 0; bs < 32; bs++)
                    {
                        al = patl[ap] >> as;
                        bl = patl[bp] >> bs;
                        proto_send2d ('a', al, bl);
                        rl[0] = fixed_mul_f824 (al, bl);
                        check_mul (al, bl, rl[0]);
                        rl[1] = fixed_mul_f824 (-al, bl);
                        check_mul (-al, bl, rl[1]);
                        rl[2] = fixed_mul_f824 (al, -bl);
                        check_mul (al, -bl, rl[2]);
                        rl[3] = fixed_mul_f824 (-al, -bl);
                        check_mul (-al, -bl, rl[3]);
                        proto_send4d ('r', rl[0], rl[1], rl[2], rl[3]);
                    }
        for (i = 0; i < 64000; i++)
        {
            al = random_u32 ();
            bl = random_u32 ();
            proto_send2d ('a', al, bl);
            rl[0] = fixed_mul_f824 (al, bl);
            check_mul (al, bl, rl[0]);
            rl[1] = fixed_mul_f824 (-al, bl);
            check_mul (-al, bl, rl[1]);
            rl[2] = fixed_mul_f824 (al, -bl);
            check_mul (al, -bl, rl[2]);
            rl[3] = fixed_mul_f824 (-al, -bl);
            check_mul (-al, -bl, rl[3]);
            proto_send4d ('r', rl[0], rl[1], rl[2], rl[3]);
        }
        break;
    case c ('d', 0):
        for (ap = 0; ap < patn; ap++)
            for (bp = 0; bp < patn; bp++)
                for (as = 0; as < 32; as++)
                    for (bs = 0; bs < 31; bs++)
                    {
                        al = patl[ap] >> as;
                        bl = patl[bp] >> bs;
                        proto_send2d ('a', al, bl);
                        rl[0] = fixed_div_f824 (al, bl);
                        check_div (al, bl, rl[0]);
                        rl[1] = fixed_div_f824 (-al, bl);
                        check_div (-al, bl, rl[1]);
                        rl[2] = fixed_div_f824 (al, -bl);
                        check_div (al, -bl, rl[2]);
                        rl[3] = fixed_div_f824 (-al, -bl);
                        check_div (-al, -bl, rl[3]);
                        proto_send4d ('r', rl[0], rl[1], rl[2], rl[3]);
                    }
        for (i = 0; i < 64000; i++)
        {
            al = random_u32 ();
            bl = random_u32 ();
            if (bl != 0)
            {
                proto_send2d ('a', al, bl);
                rl[0] = fixed_div_f824 (al, bl);
                check_div (al, bl, rl[0]);
                rl[1] = fixed_div_f824 (-al, bl);
                check_div (-al, bl, rl[1]);
                rl[2] = fixed_div_f824 (al, -bl);
                check_div (al, -bl, rl[2]);
                rl[3] = fixed_div_f824 (-al, -bl);
                check_div (-al, -bl, rl[3]);
                proto_send4d ('r', rl[0], rl[1], rl[2], rl[3]);
            }
        }
        break;
    case c ('c', 0):
        for (al = 0; al < (1L << 24); al += 257)
        {
            proto_send1d ('a', al);
            rl[0] = fixed_cos_f824 (al);
            rl[1] = fixed_sin_f824 (al);
            check_cos (al, rl[0], rl[1]);
            proto_send2d ('r', rl[0], rl[1]);
        }
        for (i = 0; i < 64000; i++)
        {
            al = random_u32 () & 0xffffff;
            proto_send1d ('a', al);
            rl[0] = fixed_cos_f824 (al);
            rl[1] = fixed_sin_f824 (al);
            check_cos (al, rl[0], rl[1]);
            proto_send2d ('r', rl[0], rl[1]);
        }
        break;
    case c ('s', 0):
        for (ap = 0; ap < patn; ap++)
            for (as = 0; as < 32; as++)
            {
                al = patl[ap] >> as;
                proto_send1d ('a', al);
                rl[0] = fixed_sqrt_uf248 (al);
                rl[1] = fixed_sqrt_ui32 (al);
                check_sqrt (al, rl[0], rl[1]);
                proto_send2d ('r', rl[0], rl[1]);
            }
        for (i = 0; i < 64000; i++)
        {
            al = random_u32 ();
            proto_send1d ('a', al);
            rl[0] = fixed_sqrt_uf248 (al);
            rl[1] = fixed_sqrt_ui32 (al);
            check_sqrt (al, rl[0], rl[1]);
            proto_send2d ('r', rl[0], rl[1]);
        }
        break;
    default:
        proto_send0 ('?');
        return;
    }
    /* When no error acknoledge. */
    proto_send (cmd, size, args);
#undef c
}
Exemple #5
0
static void set_vdac0_div(unsigned div)
{
    check_div();
    aml_set_reg32_bits(P_HHI_VIID_CLK_DIV, div, 28, 4); //???
    aml_set_reg32_bits(P_HHI_VID_CLK_CNTL2, 1, 4, 1);   //enable gate
}
Exemple #6
0
static void set_encl_div(unsigned div)
{
    check_div();
    aml_set_reg32_bits(P_HHI_VIID_CLK_DIV, div, 12, 4);
    aml_set_reg32_bits(P_HHI_VID_CLK_CNTL2, 1, 3, 1);   //enable gate
}
Exemple #7
0
static void set_hdmi_tx_pixel_div(unsigned div)
{
    check_div();
    aml_set_reg32_bits(P_HHI_HDMI_CLK_CNTL, div, 16, 4);
    aml_set_reg32_bits(P_HHI_VID_CLK_CNTL2, 1, 5, 1);   //enable gate
}
Exemple #8
0
static void set_vdac1_div(unsigned div)
{
    check_div();
    WRITE_CBUS_REG_BITS(HHI_VIID_CLK_DIV, div, 24, 4);
}
Exemple #9
0
static void set_encl_div(unsigned div)
{
    check_div();
    WRITE_CBUS_REG_BITS(HHI_VIID_CLK_DIV, div, 12, 4);
}
Exemple #10
0
static void set_hdmi_tx_pixel_div(unsigned div)
{
    check_div();
    WRITE_CBUS_REG_BITS(HHI_HDMI_CLK_CNTL, div, 16, 4);
}
static void set_vdac1_div(unsigned div)
{
    check_div();
    aml_set_reg32_bits_op(P_HHI_VIID_CLK_DIV, div, 24, 4);
}
static void set_encl_div(unsigned div)
{
    check_div();
    aml_set_reg32_bits_op(P_HHI_VIID_CLK_DIV, div, 12, 4);
}
static void set_hdmi_tx_pixel_div(unsigned div)
{
    check_div();
    aml_set_reg32_bits_op(P_HHI_HDMI_CLK_CNTL, div, 16, 4);
}
static void set_vdac1_div(unsigned div)
{
	check_clk_config(div);
	div = check_div(div);
	vout_cbus_set_bits(HHI_VIID_CLK_DIV, div, 24, 4);
}
static void set_hdmi_tx_pixel_div(unsigned div)
{
	check_clk_config(div);
	div = check_div(div);
	vout_cbus_set_bits(HHI_HDMI_CLK_CNTL, div, 16, 4);
}