aboutsummaryrefslogtreecommitdiffstats
path: root/test/mppa/instr/i32.c
blob: 4e389620a974e4ff62be11e6fe29c814d52500e3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#include "framework.h"

int sum(int a, int b){
    return a+b;
}

int make(int a){
    return a;
}

int tailsum(int a, int b){
    return make(a+b);
}

int fact(int a){
  int r = 1;
  int i;
  for (i = 1; i < a; i++)
    r *= i;
  return r;
}

float int2float(int v){
  return v;
}

BEGIN_TEST(int)
    c = a+b;
    c += a&b;

    if ((a & 0x1) == 1)
        c += fact(1);
    else
        c += fact(2);

    if (a & 0x1 == 0)
        c += fact(4);
    else
        c += fact(8);

    b = !(a & 0x01);
    if (!b)
        c += fact(16);
    else
        c += fact(32);

    c += sum(make(a), make(b));
    c += (long long) a;

    if (0 > (a & 0x1) - 1)
        c += fact(64);
    else
        c += fact(128);

    if (0 >= (a & 0x1))
        c += fact(256);
    else
        c += fact(512);

    if ((a & 0x1) > 0)
        c += fact(1024);
    else
        c += fact(2048);

    if ((a & 0x1) - 1 >= 0)
        c += fact(4096);
    else
        c += fact(8192);

    c += ((a & 0x1) == (b & 0x1));
    c += (a > b);
    c += (a <= b);
    c += (a < b);
    c += (a + b) / 2;
    c += (int) int2float(a) + (int) int2float(b) + (int) int2float(42.3);
    c += (a << 4); // addx16w
    c += (a << 3); // addx8w
    c += (a << 2); // addx4w
    c += (a << 1); // addx2w

    c += ~a & b; // andnw

    int j;
    for (j = 0 ; j < 10 ; j++)
        c += a;
    int k;
    for (k = 0 ; k < (b & 0x8) ; k++)
        c += a;

    char s[] = "Tome and Cherry at the playa\n";
    c += s[(a & (sizeof(s)-1))];

    unsigned char s2[] = "Tim is sorry at the playa\n";
    c += s2[a & (sizeof(s) - 1)];

    c += a*b;
    c += a-b;
    c += a << (b & 0x8);

    c += sum(a, b);
END_TEST32()