File: fold-popcnt.f90

package info (click to toggle)
swiftlang 6.0.3-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,519,992 kB
  • sloc: cpp: 9,107,863; ansic: 2,040,022; asm: 1,135,751; python: 296,500; objc: 82,456; f90: 60,502; lisp: 34,951; pascal: 19,946; sh: 18,133; perl: 7,482; ml: 4,937; javascript: 4,117; makefile: 3,840; awk: 3,535; xml: 914; fortran: 619; cs: 573; ruby: 573
file content (174 lines) | stat: -rw-r--r-- 8,308 bytes parent folder | download | duplicates (15)
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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
! RUN: %python %S/test_folding.py %s %flang_fc1
! Test counts of set bits.

module leadz_tests
  logical, parameter :: test_z1 = leadz(0_1) .EQ. 8
  logical, parameter :: test_o1 = leadz(1_1) .EQ. 7
  logical, parameter :: test_t1 = leadz(2_1) .EQ. 6
  logical, parameter :: test_f1 = leadz(15_1) .EQ. 4
  logical, parameter :: test_b1 = leadz(16_1) .EQ. 3
  logical, parameter :: test_m11 = leadz(-1_1) .EQ. 0
  logical, parameter :: test_m12 = leadz(-2_1) .EQ. 0
  logical, parameter :: test_mb1 = leadz(-120_1) .EQ. 0

  logical, parameter :: test_z2 = leadz(0_2) .EQ. 16
  logical, parameter :: test_o2 = leadz(1_2) .EQ. 15
  logical, parameter :: test_t2 = leadz(2_2) .EQ. 14
  logical, parameter :: test_f2 = leadz(15_2) .EQ. 12
  logical, parameter :: test_m21 = leadz(-1_2) .EQ. 0
  logical, parameter :: test_m22 = leadz(-2_2) .EQ. 0
  logical, parameter :: test_mb2 = leadz(-32640_2) .EQ. 0

  logical, parameter :: test_z4 = leadz(0_4) .EQ. 32
  logical, parameter :: test_o4 = leadz(1_4) .EQ. 31
  logical, parameter :: test_t4 = leadz(2_4) .EQ. 30
  logical, parameter :: test_f4 = leadz(15_4) .EQ. 28
  logical, parameter :: test_m41 = leadz(-1_4) .EQ. 0
  logical, parameter :: test_m42 = leadz(-2_4) .EQ. 0
  logical, parameter :: test_mb4 = leadz(-2147450880_4) .EQ. 0

  logical, parameter :: test_z8 = leadz(0_8) .EQ. 64
  logical, parameter :: test_o8 = leadz(1_8) .EQ. 63
  logical, parameter :: test_t8 = leadz(2_8) .EQ. 62
  logical, parameter :: test_f8 = leadz(15_8) .EQ. 60
  logical, parameter :: test_m81 = leadz(-1_8) .EQ. 0
  logical, parameter :: test_m82 = leadz(-2_8) .EQ. 0
  logical, parameter :: test_mb8 = leadz(-9223372034707292160_8) .EQ. 0

  logical, parameter :: test_z16 = leadz(0_16) .EQ. 128
  logical, parameter :: test_o16 = leadz(1_16) .EQ. 127
  logical, parameter :: test_t16 = leadz(2_16) .EQ. 126
  logical, parameter :: test_f16 = leadz(15_16) .EQ. 124
  logical, parameter :: test_m161 = leadz(-1_16) .EQ. 0
  logical, parameter :: test_m162 = leadz(-2_16) .EQ. 0
  logical, parameter :: test_mb16 = leadz(18446744073709551616_16) .EQ. 63
end module leadz_tests

module trailz_tests
  logical, parameter :: test_z1 = trailz(0_1) .EQ. 8
  logical, parameter :: test_o1 = trailz(1_1) .EQ. 0
  logical, parameter :: test_t1 = trailz(2_1) .EQ. 1
  logical, parameter :: test_f1 = trailz(15_1) .EQ. 0
  logical, parameter :: test_b1 = trailz(16_1) .EQ. 4
  logical, parameter :: test_m11 = trailz(-1_1) .EQ. 0
  logical, parameter :: test_m12 = trailz(-2_1) .EQ. 1
  logical, parameter :: test_mb1 = trailz(-120_1) .EQ. 3

  logical, parameter :: test_z2 = trailz(0_2) .EQ. 16
  logical, parameter :: test_o2 = trailz(1_2) .EQ. 0
  logical, parameter :: test_t2 = trailz(2_2) .EQ. 1
  logical, parameter :: test_f2 = trailz(15_2) .EQ. 0
  logical, parameter :: test_m21 = trailz(-1_2) .EQ. 0
  logical, parameter :: test_m22 = trailz(-2_2) .EQ. 1
  logical, parameter :: test_mb2 = trailz(-32640_2) .EQ. 7

  logical, parameter :: test_z4 = trailz(0_4) .EQ. 32
  logical, parameter :: test_o4 = trailz(1_4) .EQ. 0
  logical, parameter :: test_t4 = trailz(2_4) .EQ. 1
  logical, parameter :: test_f4 = trailz(15_4) .EQ. 0
  logical, parameter :: test_m41 = trailz(-1_4) .EQ. 0
  logical, parameter :: test_m42 = trailz(-2_4) .EQ. 1
  logical, parameter :: test_mb4 = trailz(-2147450880_4) .EQ. 15

  logical, parameter :: test_z8 = trailz(0_8) .EQ. 64
  logical, parameter :: test_o8 = trailz(1_8) .EQ. 0
  logical, parameter :: test_t8 = trailz(2_8) .EQ. 1
  logical, parameter :: test_f8 = trailz(15_8) .EQ. 0
  logical, parameter :: test_m81 = trailz(-1_8) .EQ. 0
  logical, parameter :: test_m82 = trailz(-2_8) .EQ. 1
  logical, parameter :: test_mb8 = trailz(-9223372034707292160_8) .EQ. 31

  logical, parameter :: test_z16 = trailz(0_16) .EQ. 128
  logical, parameter :: test_o16 = trailz(1_16) .EQ. 0
  logical, parameter :: test_t16 = trailz(2_16) .EQ. 1
  logical, parameter :: test_f16 = trailz(15_16) .EQ. 0
  logical, parameter :: test_m161 = trailz(-1_16) .EQ. 0
  logical, parameter :: test_m162 = trailz(-2_16) .EQ. 1
  logical, parameter :: test_mb16 = trailz(18446744073709551616_16) .EQ. 64
end module trailz_tests

module popcnt_tests
  logical, parameter :: test_z1 = popcnt(0_1) .EQ. 0
  logical, parameter :: test_o1 = popcnt(1_1) .EQ. 1
  logical, parameter :: test_t1 = popcnt(2_1) .EQ. 1
  logical, parameter :: test_f1 = popcnt(15_1) .EQ. 4
  logical, parameter :: test_b1 = popcnt(16_1) .EQ. 1
  logical, parameter :: test_m11 = popcnt(-1_1) .EQ. 8
  logical, parameter :: test_m12 = popcnt(-2_1) .EQ. 7
  logical, parameter :: test_mb1 = popcnt(-120_1) .EQ. 2

  logical, parameter :: test_z2 = popcnt(0_2) .EQ. 0
  logical, parameter :: test_o2 = popcnt(1_2) .EQ. 1
  logical, parameter :: test_t2 = popcnt(2_2) .EQ. 1
  logical, parameter :: test_f2 = popcnt(15_2) .EQ. 4
  logical, parameter :: test_m21 = popcnt(-1_2) .EQ. 16
  logical, parameter :: test_m22 = popcnt(-2_2) .EQ. 15
  logical, parameter :: test_mb2 = popcnt(-32640_2) .EQ. 2

  logical, parameter :: test_z4 = popcnt(0_4) .EQ. 0
  logical, parameter :: test_o4 = popcnt(1_4) .EQ. 1
  logical, parameter :: test_t4 = popcnt(2_4) .EQ. 1
  logical, parameter :: test_f4 = popcnt(15_4) .EQ. 4
  logical, parameter :: test_m41 = popcnt(-1_4) .EQ. 32
  logical, parameter :: test_m42 = popcnt(-2_4) .EQ. 31
  logical, parameter :: test_mb4 = popcnt(-2147450880_4) .EQ. 2

  logical, parameter :: test_z8 = popcnt(0_8) .EQ. 0
  logical, parameter :: test_o8 = popcnt(1_8) .EQ. 1
  logical, parameter :: test_t8 = popcnt(2_8) .EQ. 1
  logical, parameter :: test_f8 = popcnt(15_8) .EQ. 4
  logical, parameter :: test_m81 = popcnt(-1_8) .EQ. 64
  logical, parameter :: test_m82 = popcnt(-2_8) .EQ. 63
  logical, parameter :: test_mb8 = popcnt(-9223372034707292160_8) .EQ. 2

  logical, parameter :: test_z16 = popcnt(0_16) .EQ. 0
  logical, parameter :: test_o16 = popcnt(1_16) .EQ. 1
  logical, parameter :: test_t16 = popcnt(2_16) .EQ. 1
  logical, parameter :: test_f16 = popcnt(15_16) .EQ. 4
  logical, parameter :: test_m161 = popcnt(-1_16) .EQ. 128
  logical, parameter :: test_m162 = popcnt(-2_16) .EQ. 127
  logical, parameter :: test_mb16 = popcnt(18446744073709551616_16) .EQ. 1
end module popcnt_tests

module poppar_tests
  logical, parameter :: test_z1 = poppar(0_1) .EQ. 0
  logical, parameter :: test_o1 = poppar(1_1) .EQ. 1
  logical, parameter :: test_t1 = poppar(2_1) .EQ. 1
  logical, parameter :: test_f1 = poppar(15_1) .EQ. 0
  logical, parameter :: test_b1 = poppar(16_1) .EQ. 1
  logical, parameter :: test_m11 = poppar(-1_1) .EQ. 0
  logical, parameter :: test_m12 = poppar(-2_1) .EQ. 1
  logical, parameter :: test_mb1 = poppar(-120_1) .EQ. 0

  logical, parameter :: test_z2 = poppar(0_2) .EQ. 0
  logical, parameter :: test_o2 = poppar(1_2) .EQ. 1
  logical, parameter :: test_t2 = poppar(2_2) .EQ. 1
  logical, parameter :: test_f2 = poppar(15_2) .EQ. 0
  logical, parameter :: test_m21 = poppar(-1_2) .EQ. 0
  logical, parameter :: test_m22 = poppar(-2_2) .EQ. 1
  logical, parameter :: test_mb2 = poppar(-32640_2) .EQ. 0

  logical, parameter :: test_z4 = poppar(0_4) .EQ. 0
  logical, parameter :: test_o4 = poppar(1_4) .EQ. 1
  logical, parameter :: test_t4 = poppar(2_4) .EQ. 1
  logical, parameter :: test_f4 = poppar(15_4) .EQ. 0
  logical, parameter :: test_m41 = poppar(-1_4) .EQ. 0
  logical, parameter :: test_m42 = poppar(-2_4) .EQ. 1
  logical, parameter :: test_mb4 = poppar(-2147450880_4) .EQ. 0

  logical, parameter :: test_z8 = poppar(0_8) .EQ. 0
  logical, parameter :: test_o8 = poppar(1_8) .EQ. 1
  logical, parameter :: test_t8 = poppar(2_8) .EQ. 1
  logical, parameter :: test_f8 = poppar(15_8) .EQ. 0
  logical, parameter :: test_m81 = poppar(-1_8) .EQ. 0
  logical, parameter :: test_m82 = poppar(-2_8) .EQ. 1
  logical, parameter :: test_mb8 = poppar(-9223372034707292160_8) .EQ. 0

  logical, parameter :: test_z16 = poppar(0_16) .EQ. 0
  logical, parameter :: test_o16 = poppar(1_16) .EQ. 1
  logical, parameter :: test_t16 = poppar(2_16) .EQ. 1
  logical, parameter :: test_f16 = poppar(15_16) .EQ. 0
  logical, parameter :: test_m161 = poppar(-1_16) .EQ. 0
  logical, parameter :: test_m162 = poppar(-2_16) .EQ. 1
  logical, parameter :: test_mb16 = poppar(18446744073709551616_16) .EQ. 1
end module poppar_tests