blob: 84828bfb447078982ebab7c872dfabca0369bcb2 (
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
108
109
110
111
|
#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;
c += (a << 4); // addx16d
c += (a << 3); // addx8d
c += (a << 2); // addx4d
c += (a << 1); // addx2d
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()
|