OpenCores
URL https://opencores.org/ocsvn/mips_enhanced/mips_enhanced/trunk

Subversion Repositories mips_enhanced

[/] [mips_enhanced/] [trunk/] [grlib-gpl-1.0.19-b3188/] [software/] [leon3/] [divtest.c] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 dimamali
#include "testmod.h"
2
#ifdef LEON2
3
#include "leon2.h"
4
#endif
5
 
6
struct divcase {
7
        int     num;
8
        int     denom;
9
        int     res;
10
};
11
 
12
volatile struct divcase diva[] = {
13
        {  2,  3, 0}, { 3, -2, -1}, {  2, -3, 0}, {  0,  1, 0}, {  0, -1, 0}, {  1, -1, -1},
14
        { -1,  1, -1}, { -2,  3, 0}, { -2, -3, 0}, {9, 7, 1},
15
        { -9, 2, -4}, {-8, 2, -4}, {-8, -4, 2}, {8, -4, -2}, {-8, -8 , 1},
16
        {-8, -9, 0}, {11, 2, 5}, {47, 2, 23},
17
        { 12345,  679, 12345/679}, { -63636,  77, -63636/77},
18
        { 12345,  -679, -12345/679}, { -63636,  -77, 63636/77},
19
        { 145,  -6079, 0}, { -636,  -77777, 0}, { 63226,  7227777, 0},
20
        {  0,  0, 0}
21
 };
22
 
23
struct udivcase {
24
        unsigned int    num;
25
        unsigned int    denom;
26
        unsigned int    res;
27
};
28
 
29
volatile struct udivcase udiva[] = {
30
        {  2,  3, 0}, {  0,  1, 0}, { 0xfffffffe,  3, 0xfffffffe/3},
31
        { 0xfffffffe,  3, 0xfffffffe/3}, { 0x700ffffe,  7, 0x700ffffe/7},
32
        {  0,  0, 0}
33
 };
34
 
35
divtest()
36
{
37
#ifdef LEON2
38
        struct l2regs *lr = (struct l2regs *) 0x80000000;
39
#endif
40
        int i = 0;
41
 
42
        /* skip test if divider disabled */
43
#ifdef LEON2
44
        if (!((lr->leonconf >> DIV_CONF_BIT) & 1)) return(0);
45
#else
46
        if (!((get_asr17() >> 8) & 1)) return(0);
47
#endif
48
 
49
        report_subtest(DIV_TEST+(get_pid()<<4));
50
        while (diva[i].denom != 0) {
51
            if ((diva[i].num / diva[i].denom) != diva[i].res) fail(1);
52
            i++;
53
        }
54
        i = 0;
55
        while (udiva[i].denom != 0) {
56
            if ((udiva[i].num / udiva[i].denom) != udiva[i].res) fail(2);
57
            i++;
58
        }
59
        return(0);
60
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.