xref: /aosp_15_r20/art/test/552-checker-x86-avx2-bit-manipulation/src/Main.java (revision 795d594fd825385562da6b089ea9b2033f3abf5a)
1*795d594fSAndroid Build Coastguard Worker /*
2*795d594fSAndroid Build Coastguard Worker  * Copyright (C) 2018 The Android Open Source Project
3*795d594fSAndroid Build Coastguard Worker  *
4*795d594fSAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
5*795d594fSAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
6*795d594fSAndroid Build Coastguard Worker  * You may obtain a copy of the License at
7*795d594fSAndroid Build Coastguard Worker  *
8*795d594fSAndroid Build Coastguard Worker  *      http://www.apache.org/licenses/LICENSE-2.0
9*795d594fSAndroid Build Coastguard Worker  *
10*795d594fSAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
11*795d594fSAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
12*795d594fSAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*795d594fSAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
14*795d594fSAndroid Build Coastguard Worker  * limitations under the License.
15*795d594fSAndroid Build Coastguard Worker  */
16*795d594fSAndroid Build Coastguard Worker 
17*795d594fSAndroid Build Coastguard Worker public class Main {
18*795d594fSAndroid Build Coastguard Worker 
assertIntEquals(int expected, int result)19*795d594fSAndroid Build Coastguard Worker   public static void assertIntEquals(int expected, int result) {
20*795d594fSAndroid Build Coastguard Worker     if (expected != result) {
21*795d594fSAndroid Build Coastguard Worker       throw new Error("Expected: " + expected + ", found: " + result);
22*795d594fSAndroid Build Coastguard Worker     }
23*795d594fSAndroid Build Coastguard Worker   }
24*795d594fSAndroid Build Coastguard Worker 
assertLongEquals(long expected, long result)25*795d594fSAndroid Build Coastguard Worker   public static void assertLongEquals(long expected, long result) {
26*795d594fSAndroid Build Coastguard Worker     if (expected != result) {
27*795d594fSAndroid Build Coastguard Worker       throw new Error("Expected: " + expected + ", found: " + result);
28*795d594fSAndroid Build Coastguard Worker     }
29*795d594fSAndroid Build Coastguard Worker   }
30*795d594fSAndroid Build Coastguard Worker 
31*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-X86_64: long Main.and_not_64(long, long) instruction_simplifier_x86_64 (before)
32*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:    Phi     loop:<<Loop:B\d+>> outer_loop:none
33*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:    Not     loop:<<Loop>>      outer_loop:none
34*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:    And     loop:<<Loop>>      outer_loop:none
35*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:    Not     loop:none
36*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:    And     loop:none
37*795d594fSAndroid Build Coastguard Worker 
38*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-X86_64: long Main.and_not_64(long, long) instruction_simplifier_x86_64 (after)
39*795d594fSAndroid Build Coastguard Worker   /// CHECK-IF: hasIsaFeature('avx') or hasIsaFeature('avx2')
40*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:      X86AndNot loop:<<Loop:B\d+>> outer_loop:none
41*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:      X86AndNot loop:none
42*795d594fSAndroid Build Coastguard Worker   /// CHECK-FI:
43*795d594fSAndroid Build Coastguard Worker 
44*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-X86_64: long Main.and_not_64(long, long) instruction_simplifier_x86_64 (after)
45*795d594fSAndroid Build Coastguard Worker   /// CHECK-IF: hasIsaFeature('avx') or hasIsaFeature('avx2')
46*795d594fSAndroid Build Coastguard Worker   /// CHECK-NOT:      Not       loop:<<Loop>>      outer_loop:none
47*795d594fSAndroid Build Coastguard Worker   /// CHECK-NOT:      And       loop:<<Loop>>      outer_loop:none
48*795d594fSAndroid Build Coastguard Worker   /// CHECK-NOT:      Not       loop:none
49*795d594fSAndroid Build Coastguard Worker   /// CHECK-NOT:      And       loop:none
50*795d594fSAndroid Build Coastguard Worker   /// CHECK-FI:
and_not_64( long x, long y)51*795d594fSAndroid Build Coastguard Worker   public static long and_not_64( long x, long y) {
52*795d594fSAndroid Build Coastguard Worker     long j = 1;
53*795d594fSAndroid Build Coastguard Worker     long k = 2;
54*795d594fSAndroid Build Coastguard Worker     for (long i = -64 ; i < 64; i++ ) {
55*795d594fSAndroid Build Coastguard Worker       x = x & ~i;
56*795d594fSAndroid Build Coastguard Worker       y = y | i;
57*795d594fSAndroid Build Coastguard Worker     }
58*795d594fSAndroid Build Coastguard Worker     return x & ~y;
59*795d594fSAndroid Build Coastguard Worker   }
60*795d594fSAndroid Build Coastguard Worker 
61*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-X86_64: int Main.and_not_32(int, int) instruction_simplifier_x86_64 (before)
62*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:    Phi     loop:<<Loop:B\d+>> outer_loop:none
63*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:    Not     loop:<<Loop>>      outer_loop:none
64*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:    And     loop:<<Loop>>      outer_loop:none
65*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:    Not     loop:<<Loop>>      outer_loop:none
66*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:    And     loop:<<Loop>>      outer_loop:none
67*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:    Not     loop:none
68*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:    And     loop:none
69*795d594fSAndroid Build Coastguard Worker 
70*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-X86_64: int Main.and_not_32(int, int) instruction_simplifier_x86_64 (after)
71*795d594fSAndroid Build Coastguard Worker   /// CHECK-IF: hasIsaFeature('avx') or hasIsaFeature('avx2')
72*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:      X86AndNot loop:<<Loop:B\d+>> outer_loop:none
73*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:      X86AndNot loop:<<Loop>>      outer_loop:none
74*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:      X86AndNot loop:none
75*795d594fSAndroid Build Coastguard Worker   /// CHECK-FI:
76*795d594fSAndroid Build Coastguard Worker 
77*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-X86_64: int Main.and_not_32(int, int) instruction_simplifier_x86_64 (after)
78*795d594fSAndroid Build Coastguard Worker   /// CHECK-IF: hasIsaFeature('avx') or hasIsaFeature('avx2')
79*795d594fSAndroid Build Coastguard Worker   /// CHECK-NOT:      Not       loop:<<Loop>>      outer_loop:none
80*795d594fSAndroid Build Coastguard Worker   /// CHECK-NOT:      And       loop:<<Loop>>      outer_loop:none
81*795d594fSAndroid Build Coastguard Worker   /// CHECK-NOT:      Not       loop:none
82*795d594fSAndroid Build Coastguard Worker   /// CHECK-NOT:      And       loop:none
83*795d594fSAndroid Build Coastguard Worker   /// CHECK-FI:
and_not_32( int x, int y)84*795d594fSAndroid Build Coastguard Worker   public static int and_not_32( int x, int y) {
85*795d594fSAndroid Build Coastguard Worker     int j = 1;
86*795d594fSAndroid Build Coastguard Worker     int k = 2;
87*795d594fSAndroid Build Coastguard Worker     for (int i = -64 ; i < 64; i++ ) {
88*795d594fSAndroid Build Coastguard Worker       x = x & ~i;
89*795d594fSAndroid Build Coastguard Worker       y = y | i;
90*795d594fSAndroid Build Coastguard Worker     }
91*795d594fSAndroid Build Coastguard Worker     return x & ~y;
92*795d594fSAndroid Build Coastguard Worker   }
93*795d594fSAndroid Build Coastguard Worker 
94*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-X86_64: int Main.reset_lowest_set_bit_32(int) instruction_simplifier_x86_64 (before)
95*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:    Phi     loop:<<Loop:B\d+>> outer_loop:none
96*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:    Add     loop:<<Loop>>      outer_loop:none
97*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:    And     loop:<<Loop>>      outer_loop:none
98*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:    Add     loop:<<Loop>>      outer_loop:none
99*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:    And     loop:<<Loop>>      outer_loop:none
100*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:    Add     loop:<<Loop>>      outer_loop:none
101*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:    And     loop:<<Loop>>      outer_loop:none
102*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:    Add     loop:<<Loop>>      outer_loop:none
103*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:    And     loop:<<Loop>>      outer_loop:none
104*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:    Add     loop:<<Loop>>      outer_loop:none
105*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:    And     loop:<<Loop>>      outer_loop:none
106*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:    Add     loop:<<Loop>>      outer_loop:none
107*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:    And     loop:<<Loop>>      outer_loop:none
108*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:    Add     loop:<<Loop>>      outer_loop:none
109*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:    And     loop:<<Loop>>      outer_loop:none
110*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:    Add     loop:<<Loop>>      outer_loop:none
111*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:    And     loop:<<Loop>>      outer_loop:none
112*795d594fSAndroid Build Coastguard Worker 
113*795d594fSAndroid Build Coastguard Worker 
114*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-X86_64: int Main.reset_lowest_set_bit_32(int) instruction_simplifier_x86_64 (after)
115*795d594fSAndroid Build Coastguard Worker   /// CHECK-IF: hasIsaFeature('avx') or hasIsaFeature('avx2')
116*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:      X86MaskOrResetLeastSetBit  loop:<<Loop:B\d+>> outer_loop:none
117*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:      X86MaskOrResetLeastSetBit  loop:<<Loop>> outer_loop:none
118*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:      X86MaskOrResetLeastSetBit  loop:<<Loop>> outer_loop:none
119*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:      X86MaskOrResetLeastSetBit  loop:<<Loop>> outer_loop:none
120*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:      X86MaskOrResetLeastSetBit  loop:<<Loop>> outer_loop:none
121*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:      X86MaskOrResetLeastSetBit  loop:<<Loop>> outer_loop:none
122*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:      X86MaskOrResetLeastSetBit  loop:<<Loop>> outer_loop:none
123*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:      X86MaskOrResetLeastSetBit  loop:<<Loop>> outer_loop:none
124*795d594fSAndroid Build Coastguard Worker   /// CHECK-FI:
125*795d594fSAndroid Build Coastguard Worker 
126*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-X86_64: int Main.reset_lowest_set_bit_32(int) instruction_simplifier_x86_64 (after)
127*795d594fSAndroid Build Coastguard Worker   /// CHECK-IF: hasIsaFeature('avx') or hasIsaFeature('avx2')
128*795d594fSAndroid Build Coastguard Worker   /// CHECK-NOT:      And                        loop:<<Loop>> outer_loop:none
129*795d594fSAndroid Build Coastguard Worker   /// CHECK-FI:
reset_lowest_set_bit_32(int x)130*795d594fSAndroid Build Coastguard Worker   public static int reset_lowest_set_bit_32(int x) {
131*795d594fSAndroid Build Coastguard Worker     int y = x;
132*795d594fSAndroid Build Coastguard Worker     int j = 5;
133*795d594fSAndroid Build Coastguard Worker     int k = 10;
134*795d594fSAndroid Build Coastguard Worker     int l = 20;
135*795d594fSAndroid Build Coastguard Worker     for (int i = -64 ; i < 64; i++) {
136*795d594fSAndroid Build Coastguard Worker       y = i & i-1;
137*795d594fSAndroid Build Coastguard Worker       j += y;
138*795d594fSAndroid Build Coastguard Worker       j = j & j-1;
139*795d594fSAndroid Build Coastguard Worker       k +=j;
140*795d594fSAndroid Build Coastguard Worker       k = k & k-1;
141*795d594fSAndroid Build Coastguard Worker       l +=k;
142*795d594fSAndroid Build Coastguard Worker       l = l & l-1;
143*795d594fSAndroid Build Coastguard Worker     }
144*795d594fSAndroid Build Coastguard Worker     return y + j + k + l;
145*795d594fSAndroid Build Coastguard Worker   }
146*795d594fSAndroid Build Coastguard Worker 
147*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-X86_64: long Main.reset_lowest_set_bit_64(long) instruction_simplifier_x86_64 (before)
148*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:    Phi     loop:<<Loop:B\d+>> outer_loop:none
149*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:    Sub     loop:<<Loop>>      outer_loop:none
150*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:    And     loop:<<Loop>>      outer_loop:none
151*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:    Sub     loop:<<Loop>>      outer_loop:none
152*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:    And     loop:<<Loop>>      outer_loop:none
153*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:    Sub     loop:<<Loop>>      outer_loop:none
154*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:    And     loop:<<Loop>>      outer_loop:none
155*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:    Sub     loop:<<Loop>>      outer_loop:none
156*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:    And     loop:<<Loop>>      outer_loop:none
157*795d594fSAndroid Build Coastguard Worker 
158*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-X86_64: long Main.reset_lowest_set_bit_64(long) instruction_simplifier_x86_64 (after)
159*795d594fSAndroid Build Coastguard Worker   /// CHECK-IF: hasIsaFeature('avx') or hasIsaFeature('avx2')
160*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:      X86MaskOrResetLeastSetBit  loop:<<Loop:B\d+>> outer_loop:none
161*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:      X86MaskOrResetLeastSetBit  loop:<<Loop>> outer_loop:none
162*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:      X86MaskOrResetLeastSetBit  loop:<<Loop>> outer_loop:none
163*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:      X86MaskOrResetLeastSetBit  loop:<<Loop>> outer_loop:none
164*795d594fSAndroid Build Coastguard Worker   /// CHECK-FI:
165*795d594fSAndroid Build Coastguard Worker 
166*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-X86_64: long Main.reset_lowest_set_bit_64(long) instruction_simplifier_x86_64 (after)
167*795d594fSAndroid Build Coastguard Worker   /// CHECK-IF: hasIsaFeature('avx') or hasIsaFeature('avx2')
168*795d594fSAndroid Build Coastguard Worker   /// CHECK-NOT:      And                        loop:<<Loop>> outer_loop:none
169*795d594fSAndroid Build Coastguard Worker   /// CHECK-NOT:      Sub                        loop:<<Loop>> outer_loop:none
170*795d594fSAndroid Build Coastguard Worker   /// CHECK-FI:
reset_lowest_set_bit_64(long x)171*795d594fSAndroid Build Coastguard Worker   public static long reset_lowest_set_bit_64(long x) {
172*795d594fSAndroid Build Coastguard Worker     long y = x;
173*795d594fSAndroid Build Coastguard Worker     long j = 5;
174*795d594fSAndroid Build Coastguard Worker     long k = 10;
175*795d594fSAndroid Build Coastguard Worker     long l = 20;
176*795d594fSAndroid Build Coastguard Worker     for (long i = -64 ; i < 64; i++) {
177*795d594fSAndroid Build Coastguard Worker       y = i & i-1;
178*795d594fSAndroid Build Coastguard Worker       j += y;
179*795d594fSAndroid Build Coastguard Worker       j = j & j-1;
180*795d594fSAndroid Build Coastguard Worker       k +=j;
181*795d594fSAndroid Build Coastguard Worker       k = k & k-1;
182*795d594fSAndroid Build Coastguard Worker       l +=k;
183*795d594fSAndroid Build Coastguard Worker       l = l & l-1;
184*795d594fSAndroid Build Coastguard Worker     }
185*795d594fSAndroid Build Coastguard Worker     return y + j + k + l;
186*795d594fSAndroid Build Coastguard Worker   }
187*795d594fSAndroid Build Coastguard Worker 
188*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-X86_64: int Main.get_mask_lowest_set_bit_32(int) instruction_simplifier_x86_64 (before)
189*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:    Add     loop:none
190*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:    Xor     loop:none
191*795d594fSAndroid Build Coastguard Worker 
192*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-X86_64: int Main.get_mask_lowest_set_bit_32(int) instruction_simplifier_x86_64 (after)
193*795d594fSAndroid Build Coastguard Worker   /// CHECK-IF: hasIsaFeature('avx') or hasIsaFeature('avx2')
194*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:      X86MaskOrResetLeastSetBit  loop:none
195*795d594fSAndroid Build Coastguard Worker   /// CHECK-FI:
196*795d594fSAndroid Build Coastguard Worker 
197*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-X86_64: int Main.get_mask_lowest_set_bit_32(int) instruction_simplifier_x86_64 (after)
198*795d594fSAndroid Build Coastguard Worker   /// CHECK-IF: hasIsaFeature('avx') or hasIsaFeature('avx2')
199*795d594fSAndroid Build Coastguard Worker   /// CHECK-NOT:      Add    loop:none
200*795d594fSAndroid Build Coastguard Worker   /// CHECK-NOT:      Xor    loop:none
201*795d594fSAndroid Build Coastguard Worker   /// CHECK-FI:
get_mask_lowest_set_bit_32(int x)202*795d594fSAndroid Build Coastguard Worker   public static int get_mask_lowest_set_bit_32(int x) {
203*795d594fSAndroid Build Coastguard Worker     return (x-1) ^ x;
204*795d594fSAndroid Build Coastguard Worker   }
205*795d594fSAndroid Build Coastguard Worker 
206*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-X86_64: long Main.get_mask_lowest_set_bit_64(long) instruction_simplifier_x86_64 (before)
207*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:    Sub     loop:none
208*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:    Xor     loop:none
209*795d594fSAndroid Build Coastguard Worker 
210*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-X86_64: long Main.get_mask_lowest_set_bit_64(long) instruction_simplifier_x86_64 (after)
211*795d594fSAndroid Build Coastguard Worker   /// CHECK-IF: hasIsaFeature('avx') or hasIsaFeature('avx2')
212*795d594fSAndroid Build Coastguard Worker   /// CHECK-DAG:      X86MaskOrResetLeastSetBit  loop:none
213*795d594fSAndroid Build Coastguard Worker   /// CHECK-FI:
214*795d594fSAndroid Build Coastguard Worker 
215*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-X86_64: long Main.get_mask_lowest_set_bit_64(long) instruction_simplifier_x86_64 (after)
216*795d594fSAndroid Build Coastguard Worker   /// CHECK-IF: hasIsaFeature('avx') or hasIsaFeature('avx2')
217*795d594fSAndroid Build Coastguard Worker   /// CHECK-NOT:      Sub    loop:none
218*795d594fSAndroid Build Coastguard Worker   /// CHECK-NOT:      Xor    loop:none
219*795d594fSAndroid Build Coastguard Worker   /// CHECK-FI:
get_mask_lowest_set_bit_64(long x)220*795d594fSAndroid Build Coastguard Worker   public static long get_mask_lowest_set_bit_64(long x) {
221*795d594fSAndroid Build Coastguard Worker     return (x-1) ^ x;
222*795d594fSAndroid Build Coastguard Worker   }
223*795d594fSAndroid Build Coastguard Worker 
main(String[] args)224*795d594fSAndroid Build Coastguard Worker   public static void main(String[] args) {
225*795d594fSAndroid Build Coastguard Worker     int x = 50;
226*795d594fSAndroid Build Coastguard Worker     int y = x/2;
227*795d594fSAndroid Build Coastguard Worker     long a = Long.MAX_VALUE;
228*795d594fSAndroid Build Coastguard Worker     long b = Long.MAX_VALUE/2;
229*795d594fSAndroid Build Coastguard Worker     assertIntEquals(0,and_not_32(x,y));
230*795d594fSAndroid Build Coastguard Worker     assertLongEquals(0L, and_not_64(a,b));
231*795d594fSAndroid Build Coastguard Worker     assertIntEquals(-20502606, reset_lowest_set_bit_32(x));
232*795d594fSAndroid Build Coastguard Worker     assertLongEquals(-20502606L, reset_lowest_set_bit_64(a));
233*795d594fSAndroid Build Coastguard Worker     assertLongEquals(-20502606L, reset_lowest_set_bit_64(b));
234*795d594fSAndroid Build Coastguard Worker     assertIntEquals(1, get_mask_lowest_set_bit_32(y));
235*795d594fSAndroid Build Coastguard Worker     assertLongEquals(1L, get_mask_lowest_set_bit_64(b));
236*795d594fSAndroid Build Coastguard Worker   }
237*795d594fSAndroid Build Coastguard Worker }
238