xref: /llvm-project/flang/test/Evaluate/fold-bitwise-compare.f90 (revision 7709f12ed08d2d80afa8b3a95b8abe99a112dcd4)
1! RUN: %python %S/test_folding.py %s %flang_fc1
2! Tests folding of BGE, BGT, BLE, BLT
3
4module testbge
5  logical, parameter :: test_u = all((/&
6       bge(0, 0), &
7       bge(1, 1), &
8       bge(2, 1), &
9       bge(2147483647, 2147483647), &
10       bge(2147483647, 2147483646), &
11       bge(-1, -1), &
12       bge(-1, -2), &
13       bge(-2147483646, -2147483646), &
14       bge(-2147483646, -2147483647), &
15       bge(-1, 0), &
16       bge(1, 0), &
17       bge(-2147483647, 2147483647), &
18       bge(Z'80000000', 2147483647)/))
19
20  logical, parameter :: test_m = all((/&
21       bge(1_4, 1_8), &
22       bge(1_8, 1_4), &
23       bge(-1_8, -1_4), &
24       bge(-1_8, Z'FFFFFFFF'), &
25       bge(Z'FFFFFFFFFFFFFFFF', -1_4)/))
26
27  logical,parameter :: test_nm = all((/&
28       .not. bge(-1_4, -1_8), &
29       .not. bge(Z'FFFFFFFF', -1_8), &
30       .not. bge(-1_4, Z'FFFFFFFFFFFFFFFF')/))
31end module testbge
32
33module testbgt
34  logical, parameter :: test_u = all((/&
35       bgt(2, 1), &
36       bgt(2147483647, 2147483646), &
37       bgt(-1, -2), &
38       bgt(-2147483646, -2147483647), &
39       bgt(-1, 0), &
40       bgt(1, 0), &
41       bgt(-2147483647, 2147483647), &
42       bgt(Z'80000000', 2147483647) /))
43
44  logical, parameter :: test_nu = all((/&
45       .not. bgt(0, 0), &
46       .not. bgt(1, 1), &
47       .not. bgt(2147483647, 2147483647), &
48       .not. bgt(-1, -1), &
49       .not. bgt(-2147483646, -2147483646) /))
50
51  logical, parameter :: test_m = all((/&
52       bgt(-1_8, -1_4), &
53       bgt(Z'FFFFFFFFFFFFFFFF', -1_4), &
54       bgt(-1_8, Z'FFFFFFFF') /))
55
56  logical, parameter :: test_nm = all((/&
57       .not. bgt(1_4, 1_8), &
58       .not. bgt(1_8, 1_4), &
59       .not. bgt(-1_4, -1_8), &
60       .not. bgt(Z'FFFFFFFF', -1_8), &
61       .not. bgt(-1_4, Z'FFFFFFFFFFFFFFFF') /))
62end module testbgt
63
64module testble
65  logical, parameter :: test_u = all((/&
66       ble(0, 0), &
67       ble(1, 1), &
68       ble(1, 2), &
69       ble(2147483647, 2147483647), &
70       ble(2147483646, 2147483647), &
71       ble(-1, -1), &
72       ble(-2, -1), &
73       ble(-2147483646, -2147483646), &
74       ble(-2147483647, -2147483646), &
75       ble(0, -1), &
76       ble(0, 1), &
77       ble(2147483647, -2147483647), &
78       ble(2147483647, Z'80000000') /))
79
80  logical, parameter :: test_m = all((/&
81       ble(1_4, 1_8), &
82       ble(1_8, 1_4), &
83       ble(-1_4, -1_8), &
84       ble(Z'FFFFFFFF', -1_8), &
85       ble(-1_4, Z'FFFFFFFFFFFFFFFF') /))
86
87  logical, parameter :: test_nm = all((/ &
88       .not. ble(-1_8, -1_4), &
89       .not. ble(Z'FFFFFFFFFFFFFFFF', -1_4), &
90       .not. ble(-1_8, Z'FFFFFFFF') /))
91end module testble
92
93module testblt
94  logical, parameter :: test_u = all((/&
95       blt(1, 2), &
96       blt(2147483646, 2147483647), &
97       blt(-2, -1), &
98       blt(-2147483647, -2147483646), &
99       blt(0, -1), &
100       blt(0, 1) /))
101
102  logical, parameter :: test_nu = all((/&
103       .not. blt(0, 0), &
104       .not. blt(1, 1), &
105       .not. blt(2147483647, 2147483647), &
106       .not. blt(-1, -1), &
107       .not. blt(-2147483646, -2147483646), &
108       .not. blt(-2147483647, 2147483647), &
109       .not. blt(Z'80000000', 2147483647)/))
110
111  logical, parameter :: test_m = all((/&
112       blt(-1_4, -1_8), &
113       blt(Z'FFFFFFFF', -1_8), &
114       blt(-1_4, Z'FFFFFFFFFFFFFFFF') /))
115
116  logical, parameter :: test_nm = all ((/&
117       .not. blt(1_4, 1_8), &
118       .not. blt(1_8, 1_4), &
119       .not. blt(-1_8, -1_4), &
120       .not. blt(Z'FFFFFFFFFFFFFFFF', -1_4), &
121       .not. blt(-1_8, Z'FFFFFFFF') /))
122end module testblt
123