aboutsummaryrefslogtreecommitdiffstats
path: root/test/mppa/instr/i64.c
blob: 00eb159d891fcfb096d2bad1d44364dfe3f821f6 (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
102
103
104
105
106
107
#include "framework.h"

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

long long diff(long long a, long long b){
  return a-b;
}

long long mul(long long a, long long b){
  return a*b;
}

long long make(long long a){
  return a;
}

long long random_op(long long a, long long b){
  long long d = 3;
  long long (*op)(long long, long long);

  if (a % d == 0)
    op = sum;
  else if (a % d == 1)
    op = diff;
  else
    op = mul;

  return op(a, b);
}

double long2double(long v){
  return v;
}

BEGIN_TEST(long long)
    c = a&b;
    c += a*b;
    c += -a;
    c += a | b;
    c += a-b;
    c += a >> (b & 0x8LL);
    c += a >> (b & 0x8ULL);
    c += a % b;

  long long d = 3;
  long long (*op)(long long, long long);

  if (a % d == 0)
    op = sum;
  else if (a % d == 1)
    op = diff;
  else
    op = mul;

  c += op(make(a), make(b));
  c += random_op(a, b);
    c += a/b;
    c += a^b;
    c += (unsigned int) a;

    if (0 != (a & 0x1LL))
        c += 1;
    else
        c += 2;

    if (0 > (a & 0x1LL))
        c += 4;
    else
        c += 8;

    if (0 >= (a & 0x1LL) - 1)
        c += 16;
    else
        c += 32;

    if (a & 0x1LL > 0)
        c += 64;
    else
        c += 128;

    if ((a & 0x1LL) - 1 >= 0)
        c += 256;
    else
        c += 512;

    if (0 == (a & 0x1LL))
        c += 1024;
    else
        c += 2048;

    c += ((a & 0x1LL) == (b & 0x1LL));
    c += (a >= b);
    c += (a > b);
    c += (a <= b);
    c += (a < b);
    c += (long) long2double(a) + (long) long2double(b) + (long) long2double(42.3);

    int j;

    for (j = 0 ; j < (b & 0x8LL) ; j++)
        c += a;

    c += ((a & 0x1LL) == (b & 0x1LL));

END_TEST64()