Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/hotspot/jtreg/compiler/codegen/TestCharVect2.java
41149 views
1
/*
2
* Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
3
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4
*
5
* This code is free software; you can redistribute it and/or modify it
6
* under the terms of the GNU General Public License version 2 only, as
7
* published by the Free Software Foundation.
8
*
9
* This code is distributed in the hope that it will be useful, but WITHOUT
10
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12
* version 2 for more details (a copy is included in the LICENSE file that
13
* accompanied this code).
14
*
15
* You should have received a copy of the GNU General Public License version
16
* 2 along with this work; if not, write to the Free Software Foundation,
17
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18
*
19
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20
* or visit www.oracle.com if you need additional information or have any
21
* questions.
22
*/
23
24
/**
25
* @test
26
* @bug 8001183
27
* @summary incorrect results of char vectors right shift operation
28
*
29
* @run main/othervm -Xbatch -XX:CompileCommand=exclude,*::test() -Xmx128m compiler.codegen.TestCharVect2
30
* @run main/othervm -Xbatch -XX:CompileCommand=exclude,*::test() -Xmx128m -XX:MaxVectorSize=8 compiler.codegen.TestCharVect2
31
* @run main/othervm -Xbatch -XX:CompileCommand=exclude,*::test() -Xmx128m -XX:MaxVectorSize=16 compiler.codegen.TestCharVect2
32
* @run main/othervm -Xbatch -XX:CompileCommand=exclude,*::test() -Xmx128m -XX:MaxVectorSize=32 compiler.codegen.TestCharVect2
33
*/
34
35
package compiler.codegen;
36
37
public class TestCharVect2 {
38
private static final int ARRLEN = 997;
39
private static final int ITERS = 11000;
40
private static final int ADD_INIT = Character.MAX_VALUE-500;
41
private static final int BIT_MASK = 0xB731;
42
private static final int VALUE = 7;
43
private static final int SHIFT = 16;
44
45
public static void main(String args[]) {
46
System.out.println("Testing Char vectors");
47
int errn = test();
48
if (errn > 0) {
49
System.err.println("FAILED: " + errn + " errors");
50
System.exit(97);
51
}
52
System.out.println("PASSED");
53
}
54
55
static int test() {
56
char[] a0 = new char[ARRLEN];
57
char[] a1 = new char[ARRLEN];
58
short[] a2 = new short[ARRLEN];
59
short[] a3 = new short[ARRLEN];
60
short[] a4 = new short[ARRLEN];
61
int[] p2 = new int[ARRLEN/2];
62
long[] p4 = new long[ARRLEN/4];
63
// Initialize
64
int gold_sum = 0;
65
for (int i=0; i<ARRLEN; i++) {
66
char val = (char)(ADD_INIT+i);
67
gold_sum += val;
68
a1[i] = val;
69
a2[i] = VALUE;
70
a3[i] = -VALUE;
71
a4[i] = (short)BIT_MASK;
72
}
73
System.out.println("Warmup");
74
for (int i=0; i<ITERS; i++) {
75
test_sum(a1);
76
test_addc(a0, a1);
77
test_addv(a0, a1, (char)VALUE);
78
test_adda(a0, a1, a2);
79
test_subc(a0, a1);
80
test_subv(a0, a1, (char)VALUE);
81
test_suba(a0, a1, a2);
82
83
test_mulc(a0, a1);
84
test_mulv(a0, a1, (char)VALUE);
85
test_mula(a0, a1, a2);
86
test_divc(a0, a1);
87
test_divv(a0, a1, VALUE);
88
test_diva(a0, a1, a2);
89
test_mulc_n(a0, a1);
90
test_mulv(a0, a1, (char)-VALUE);
91
test_mula(a0, a1, a3);
92
test_divc_n(a0, a1);
93
test_divv(a0, a1, -VALUE);
94
test_diva(a0, a1, a3);
95
96
test_andc(a0, a1);
97
test_andv(a0, a1, (short)BIT_MASK);
98
test_anda(a0, a1, a4);
99
test_orc(a0, a1);
100
test_orv(a0, a1, (short)BIT_MASK);
101
test_ora(a0, a1, a4);
102
test_xorc(a0, a1);
103
test_xorv(a0, a1, (short)BIT_MASK);
104
test_xora(a0, a1, a4);
105
106
test_sllc(a0, a1);
107
test_sllv(a0, a1, VALUE);
108
test_srlc(a0, a1);
109
test_srlv(a0, a1, VALUE);
110
test_srac(a0, a1);
111
test_srav(a0, a1, VALUE);
112
113
test_sllc_n(a0, a1);
114
test_sllv(a0, a1, -VALUE);
115
test_srlc_n(a0, a1);
116
test_srlv(a0, a1, -VALUE);
117
test_srac_n(a0, a1);
118
test_srav(a0, a1, -VALUE);
119
120
test_sllc_o(a0, a1);
121
test_sllv(a0, a1, SHIFT);
122
test_srlc_o(a0, a1);
123
test_srlv(a0, a1, SHIFT);
124
test_srac_o(a0, a1);
125
test_srav(a0, a1, SHIFT);
126
127
test_sllc_on(a0, a1);
128
test_sllv(a0, a1, -SHIFT);
129
test_srlc_on(a0, a1);
130
test_srlv(a0, a1, -SHIFT);
131
test_srac_on(a0, a1);
132
test_srav(a0, a1, -SHIFT);
133
134
test_sllc_add(a0, a1);
135
test_sllv_add(a0, a1, ADD_INIT);
136
test_srlc_add(a0, a1);
137
test_srlv_add(a0, a1, ADD_INIT);
138
test_srac_add(a0, a1);
139
test_srav_add(a0, a1, ADD_INIT);
140
141
test_sllc_and(a0, a1);
142
test_sllv_and(a0, a1, BIT_MASK);
143
test_srlc_and(a0, a1);
144
test_srlv_and(a0, a1, BIT_MASK);
145
test_srac_and(a0, a1);
146
test_srav_and(a0, a1, BIT_MASK);
147
148
test_pack2(p2, a1);
149
test_unpack2(a0, p2);
150
test_pack2_swap(p2, a1);
151
test_unpack2_swap(a0, p2);
152
test_pack4(p4, a1);
153
test_unpack4(a0, p4);
154
test_pack4_swap(p4, a1);
155
test_unpack4_swap(a0, p4);
156
}
157
// Test and verify results
158
System.out.println("Verification");
159
int errn = 0;
160
{
161
int sum = test_sum(a1);
162
if (sum != gold_sum) {
163
System.err.println("test_sum: " + sum + " != " + gold_sum);
164
errn++;
165
}
166
167
test_addc(a0, a1);
168
for (int i=0; i<ARRLEN; i++) {
169
errn += verify("test_addc: ", i, a0[i], (char)((char)(ADD_INIT+i)+VALUE));
170
}
171
test_addv(a0, a1, (char)VALUE);
172
for (int i=0; i<ARRLEN; i++) {
173
errn += verify("test_addv: ", i, a0[i], (char)((char)(ADD_INIT+i)+VALUE));
174
}
175
test_adda(a0, a1, a2);
176
for (int i=0; i<ARRLEN; i++) {
177
errn += verify("test_adda: ", i, a0[i], (char)((char)(ADD_INIT+i)+VALUE));
178
}
179
180
test_subc(a0, a1);
181
for (int i=0; i<ARRLEN; i++) {
182
errn += verify("test_subc: ", i, a0[i], (char)((char)(ADD_INIT+i)-VALUE));
183
}
184
test_subv(a0, a1, (char)VALUE);
185
for (int i=0; i<ARRLEN; i++) {
186
errn += verify("test_subv: ", i, a0[i], (char)((char)(ADD_INIT+i)-VALUE));
187
}
188
test_suba(a0, a1, a2);
189
for (int i=0; i<ARRLEN; i++) {
190
errn += verify("test_suba: ", i, a0[i], (char)((char)(ADD_INIT+i)-VALUE));
191
}
192
193
test_mulc(a0, a1);
194
for (int i=0; i<ARRLEN; i++) {
195
errn += verify("test_mulc: ", i, a0[i], (char)((char)(ADD_INIT+i)*VALUE));
196
}
197
test_mulv(a0, a1, (char)VALUE);
198
for (int i=0; i<ARRLEN; i++) {
199
errn += verify("test_mulv: ", i, a0[i], (char)((char)(ADD_INIT+i)*VALUE));
200
}
201
test_mula(a0, a1, a2);
202
for (int i=0; i<ARRLEN; i++) {
203
errn += verify("test_mula: ", i, a0[i], (char)((char)(ADD_INIT+i)*VALUE));
204
}
205
206
test_divc(a0, a1);
207
for (int i=0; i<ARRLEN; i++) {
208
errn += verify("test_divc: ", i, a0[i], (char)((char)(ADD_INIT+i)/VALUE));
209
}
210
test_divv(a0, a1, VALUE);
211
for (int i=0; i<ARRLEN; i++) {
212
errn += verify("test_divv: ", i, a0[i], (char)((char)(ADD_INIT+i)/VALUE));
213
}
214
test_diva(a0, a1, a2);
215
for (int i=0; i<ARRLEN; i++) {
216
errn += verify("test_diva: ", i, a0[i], (char)((char)(ADD_INIT+i)/VALUE));
217
}
218
219
test_mulc_n(a0, a1);
220
for (int i=0; i<ARRLEN; i++) {
221
errn += verify("test_mulc_n: ", i, a0[i], (char)((char)(ADD_INIT+i)*(-VALUE)));
222
}
223
test_mulv(a0, a1, (char)-VALUE);
224
for (int i=0; i<ARRLEN; i++) {
225
errn += verify("test_mulv_n: ", i, a0[i], (char)((char)(ADD_INIT+i)*(-VALUE)));
226
}
227
test_mula(a0, a1, a3);
228
for (int i=0; i<ARRLEN; i++) {
229
errn += verify("test_mula_n: ", i, a0[i], (char)((char)(ADD_INIT+i)*(-VALUE)));
230
}
231
232
test_divc_n(a0, a1);
233
for (int i=0; i<ARRLEN; i++) {
234
errn += verify("test_divc_n: ", i, a0[i], (char)((char)(ADD_INIT+i)/(-VALUE)));
235
}
236
test_divv(a0, a1, -VALUE);
237
for (int i=0; i<ARRLEN; i++) {
238
errn += verify("test_divv_n: ", i, a0[i], (char)((char)(ADD_INIT+i)/(-VALUE)));
239
}
240
test_diva(a0, a1, a3);
241
for (int i=0; i<ARRLEN; i++) {
242
errn += verify("test_diva_n: ", i, a0[i], (char)((char)(ADD_INIT+i)/(-VALUE)));
243
}
244
245
test_andc(a0, a1);
246
for (int i=0; i<ARRLEN; i++) {
247
errn += verify("test_andc: ", i, a0[i], (char)((char)(ADD_INIT+i)&BIT_MASK));
248
}
249
test_andv(a0, a1, (short)BIT_MASK);
250
for (int i=0; i<ARRLEN; i++) {
251
errn += verify("test_andv: ", i, a0[i], (char)((char)(ADD_INIT+i)&BIT_MASK));
252
}
253
test_anda(a0, a1, a4);
254
for (int i=0; i<ARRLEN; i++) {
255
errn += verify("test_anda: ", i, a0[i], (char)((char)(ADD_INIT+i)&BIT_MASK));
256
}
257
258
test_orc(a0, a1);
259
for (int i=0; i<ARRLEN; i++) {
260
errn += verify("test_orc: ", i, a0[i], (char)((char)(ADD_INIT+i)|BIT_MASK));
261
}
262
test_orv(a0, a1, (short)BIT_MASK);
263
for (int i=0; i<ARRLEN; i++) {
264
errn += verify("test_orv: ", i, a0[i], (char)((char)(ADD_INIT+i)|BIT_MASK));
265
}
266
test_ora(a0, a1, a4);
267
for (int i=0; i<ARRLEN; i++) {
268
errn += verify("test_ora: ", i, a0[i], (char)((char)(ADD_INIT+i)|BIT_MASK));
269
}
270
271
test_xorc(a0, a1);
272
for (int i=0; i<ARRLEN; i++) {
273
errn += verify("test_xorc: ", i, a0[i], (char)((char)(ADD_INIT+i)^BIT_MASK));
274
}
275
test_xorv(a0, a1, (short)BIT_MASK);
276
for (int i=0; i<ARRLEN; i++) {
277
errn += verify("test_xorv: ", i, a0[i], (char)((char)(ADD_INIT+i)^BIT_MASK));
278
}
279
test_xora(a0, a1, a4);
280
for (int i=0; i<ARRLEN; i++) {
281
errn += verify("test_xora: ", i, a0[i], (char)((char)(ADD_INIT+i)^BIT_MASK));
282
}
283
284
test_sllc(a0, a1);
285
for (int i=0; i<ARRLEN; i++) {
286
errn += verify("test_sllc: ", i, a0[i], (char)((char)(ADD_INIT+i)<<VALUE));
287
}
288
test_sllv(a0, a1, VALUE);
289
for (int i=0; i<ARRLEN; i++) {
290
errn += verify("test_sllv: ", i, a0[i], (char)((char)(ADD_INIT+i)<<VALUE));
291
}
292
293
test_srlc(a0, a1);
294
for (int i=0; i<ARRLEN; i++) {
295
errn += verify("test_srlc: ", i, a0[i], (char)((char)(ADD_INIT+i)>>>VALUE));
296
}
297
test_srlv(a0, a1, VALUE);
298
for (int i=0; i<ARRLEN; i++) {
299
errn += verify("test_srlv: ", i, a0[i], (char)((char)(ADD_INIT+i)>>>VALUE));
300
}
301
302
test_srac(a0, a1);
303
for (int i=0; i<ARRLEN; i++) {
304
errn += verify("test_srac: ", i, a0[i], (char)((char)(ADD_INIT+i)>>VALUE));
305
}
306
test_srav(a0, a1, VALUE);
307
for (int i=0; i<ARRLEN; i++) {
308
errn += verify("test_srav: ", i, a0[i], (char)((char)(ADD_INIT+i)>>VALUE));
309
}
310
311
test_sllc_n(a0, a1);
312
for (int i=0; i<ARRLEN; i++) {
313
errn += verify("test_sllc_n: ", i, a0[i], (char)((char)(ADD_INIT+i)<<(-VALUE)));
314
}
315
test_sllv(a0, a1, -VALUE);
316
for (int i=0; i<ARRLEN; i++) {
317
errn += verify("test_sllv_n: ", i, a0[i], (char)((char)(ADD_INIT+i)<<(-VALUE)));
318
}
319
320
test_srlc_n(a0, a1);
321
for (int i=0; i<ARRLEN; i++) {
322
errn += verify("test_srlc_n: ", i, a0[i], (char)((char)(ADD_INIT+i)>>>(-VALUE)));
323
}
324
test_srlv(a0, a1, -VALUE);
325
for (int i=0; i<ARRLEN; i++) {
326
errn += verify("test_srlv_n: ", i, a0[i], (char)((char)(ADD_INIT+i)>>>(-VALUE)));
327
}
328
329
test_srac_n(a0, a1);
330
for (int i=0; i<ARRLEN; i++) {
331
errn += verify("test_srac_n: ", i, a0[i], (char)((char)(ADD_INIT+i)>>(-VALUE)));
332
}
333
test_srav(a0, a1, -VALUE);
334
for (int i=0; i<ARRLEN; i++) {
335
errn += verify("test_srav_n: ", i, a0[i], (char)((char)(ADD_INIT+i)>>(-VALUE)));
336
}
337
338
test_sllc_o(a0, a1);
339
for (int i=0; i<ARRLEN; i++) {
340
errn += verify("test_sllc_o: ", i, a0[i], (char)((char)(ADD_INIT+i)<<SHIFT));
341
}
342
test_sllv(a0, a1, SHIFT);
343
for (int i=0; i<ARRLEN; i++) {
344
errn += verify("test_sllv_o: ", i, a0[i], (char)((char)(ADD_INIT+i)<<SHIFT));
345
}
346
347
test_srlc_o(a0, a1);
348
for (int i=0; i<ARRLEN; i++) {
349
errn += verify("test_srlc_o: ", i, a0[i], (char)((char)(ADD_INIT+i)>>>SHIFT));
350
}
351
test_srlv(a0, a1, SHIFT);
352
for (int i=0; i<ARRLEN; i++) {
353
errn += verify("test_srlv_o: ", i, a0[i], (char)((char)(ADD_INIT+i)>>>SHIFT));
354
}
355
356
test_srac_o(a0, a1);
357
for (int i=0; i<ARRLEN; i++) {
358
errn += verify("test_srac_o: ", i, a0[i], (char)((char)(ADD_INIT+i)>>SHIFT));
359
}
360
test_srav(a0, a1, SHIFT);
361
for (int i=0; i<ARRLEN; i++) {
362
errn += verify("test_srav_o: ", i, a0[i], (char)((char)(ADD_INIT+i)>>SHIFT));
363
}
364
365
test_sllc_on(a0, a1);
366
for (int i=0; i<ARRLEN; i++) {
367
errn += verify("test_sllc_on: ", i, a0[i], (char)((char)(ADD_INIT+i)<<(-SHIFT)));
368
}
369
test_sllv(a0, a1, -SHIFT);
370
for (int i=0; i<ARRLEN; i++) {
371
errn += verify("test_sllv_on: ", i, a0[i], (char)((char)(ADD_INIT+i)<<(-SHIFT)));
372
}
373
374
test_srlc_on(a0, a1);
375
for (int i=0; i<ARRLEN; i++) {
376
errn += verify("test_srlc_on: ", i, a0[i], (char)((char)(ADD_INIT+i)>>>(-SHIFT)));
377
}
378
test_srlv(a0, a1, -SHIFT);
379
for (int i=0; i<ARRLEN; i++) {
380
errn += verify("test_srlv_on: ", i, a0[i], (char)((char)(ADD_INIT+i)>>>(-SHIFT)));
381
}
382
383
test_srac_on(a0, a1);
384
for (int i=0; i<ARRLEN; i++) {
385
errn += verify("test_srac_on: ", i, a0[i], (char)((char)(ADD_INIT+i)>>(-SHIFT)));
386
}
387
test_srav(a0, a1, -SHIFT);
388
for (int i=0; i<ARRLEN; i++) {
389
errn += verify("test_srav_on: ", i, a0[i], (char)((char)(ADD_INIT+i)>>(-SHIFT)));
390
}
391
392
test_sllc_add(a0, a1);
393
for (int i=0; i<ARRLEN; i++) {
394
errn += verify("test_sllc_add: ", i, a0[i], (char)(((char)(ADD_INIT+i) + ADD_INIT)<<VALUE));
395
}
396
test_sllv_add(a0, a1, ADD_INIT);
397
for (int i=0; i<ARRLEN; i++) {
398
errn += verify("test_sllv_add: ", i, a0[i], (char)(((char)(ADD_INIT+i) + ADD_INIT)<<VALUE));
399
}
400
401
test_srlc_add(a0, a1);
402
for (int i=0; i<ARRLEN; i++) {
403
errn += verify("test_srlc_add: ", i, a0[i], (char)(((char)(ADD_INIT+i) + ADD_INIT)>>>VALUE));
404
}
405
test_srlv_add(a0, a1, ADD_INIT);
406
for (int i=0; i<ARRLEN; i++) {
407
errn += verify("test_srlv_add: ", i, a0[i], (char)(((char)(ADD_INIT+i) + ADD_INIT)>>>VALUE));
408
}
409
410
test_srac_add(a0, a1);
411
for (int i=0; i<ARRLEN; i++) {
412
errn += verify("test_srac_add: ", i, a0[i], (char)(((char)(ADD_INIT+i) + ADD_INIT)>>VALUE));
413
}
414
test_srav_add(a0, a1, ADD_INIT);
415
for (int i=0; i<ARRLEN; i++) {
416
errn += verify("test_srav_add: ", i, a0[i], (char)(((char)(ADD_INIT+i) + ADD_INIT)>>VALUE));
417
}
418
419
test_sllc_and(a0, a1);
420
for (int i=0; i<ARRLEN; i++) {
421
errn += verify("test_sllc_and: ", i, a0[i], (char)(((char)(ADD_INIT+i) & BIT_MASK)<<VALUE));
422
}
423
test_sllv_and(a0, a1, BIT_MASK);
424
for (int i=0; i<ARRLEN; i++) {
425
errn += verify("test_sllv_and: ", i, a0[i], (char)(((char)(ADD_INIT+i) & BIT_MASK)<<VALUE));
426
}
427
428
test_srlc_and(a0, a1);
429
for (int i=0; i<ARRLEN; i++) {
430
errn += verify("test_srlc_and: ", i, a0[i], (char)(((char)(ADD_INIT+i) & BIT_MASK)>>>VALUE));
431
}
432
test_srlv_and(a0, a1, BIT_MASK);
433
for (int i=0; i<ARRLEN; i++) {
434
errn += verify("test_srlv_and: ", i, a0[i], (char)(((char)(ADD_INIT+i) & BIT_MASK)>>>VALUE));
435
}
436
437
test_srac_and(a0, a1);
438
for (int i=0; i<ARRLEN; i++) {
439
errn += verify("test_srac_and: ", i, a0[i], (char)(((char)(ADD_INIT+i) & BIT_MASK)>>VALUE));
440
}
441
test_srav_and(a0, a1, BIT_MASK);
442
for (int i=0; i<ARRLEN; i++) {
443
errn += verify("test_srav_and: ", i, a0[i], (char)(((char)(ADD_INIT+i) & BIT_MASK)>>VALUE));
444
}
445
446
test_pack2(p2, a1);
447
for (int i=0; i<ARRLEN/2; i++) {
448
errn += verify("test_pack2: ", i, p2[i], ((int)(ADD_INIT+2*i) & 0xFFFF) | ((int)(ADD_INIT+2*i+1) << 16));
449
}
450
for (int i=0; i<ARRLEN; i++) {
451
a0[i] = (char)-1;
452
}
453
test_unpack2(a0, p2);
454
for (int i=0; i<(ARRLEN&(-2)); i++) {
455
errn += verify("test_unpack2: ", i, a0[i], (char)(ADD_INIT+i));
456
}
457
458
test_pack2_swap(p2, a1);
459
for (int i=0; i<ARRLEN/2; i++) {
460
errn += verify("test_pack2_swap: ", i, p2[i], ((int)(ADD_INIT+2*i+1) & 0xFFFF) | ((int)(ADD_INIT+2*i) << 16));
461
}
462
for (int i=0; i<ARRLEN; i++) {
463
a0[i] = (char)-1;
464
}
465
test_unpack2_swap(a0, p2);
466
for (int i=0; i<(ARRLEN&(-2)); i++) {
467
errn += verify("test_unpack2_swap: ", i, a0[i], (char)(ADD_INIT+i));
468
}
469
470
test_pack4(p4, a1);
471
for (int i=0; i<ARRLEN/4; i++) {
472
errn += verify("test_pack4: ", i, p4[i], ((long)(ADD_INIT+4*i+0) & 0xFFFFl) |
473
(((long)(ADD_INIT+4*i+1) & 0xFFFFl) << 16) |
474
(((long)(ADD_INIT+4*i+2) & 0xFFFFl) << 32) |
475
(((long)(ADD_INIT+4*i+3) & 0xFFFFl) << 48));
476
}
477
for (int i=0; i<ARRLEN; i++) {
478
a0[i] = (char)-1;
479
}
480
test_unpack4(a0, p4);
481
for (int i=0; i<(ARRLEN&(-4)); i++) {
482
errn += verify("test_unpack4: ", i, a0[i], (char)(ADD_INIT+i));
483
}
484
485
test_pack4_swap(p4, a1);
486
for (int i=0; i<ARRLEN/4; i++) {
487
errn += verify("test_pack4_swap: ", i, p4[i], ((long)(ADD_INIT+4*i+3) & 0xFFFFl) |
488
(((long)(ADD_INIT+4*i+2) & 0xFFFFl) << 16) |
489
(((long)(ADD_INIT+4*i+1) & 0xFFFFl) << 32) |
490
(((long)(ADD_INIT+4*i+0) & 0xFFFFl) << 48));
491
}
492
for (int i=0; i<ARRLEN; i++) {
493
a0[i] = (char)-1;
494
}
495
test_unpack4_swap(a0, p4);
496
for (int i=0; i<(ARRLEN&(-4)); i++) {
497
errn += verify("test_unpack4_swap: ", i, a0[i], (char)(ADD_INIT+i));
498
}
499
500
}
501
502
if (errn > 0)
503
return errn;
504
505
System.out.println("Time");
506
long start, end;
507
508
start = System.currentTimeMillis();
509
for (int i=0; i<ITERS; i++) {
510
test_sum(a1);
511
}
512
end = System.currentTimeMillis();
513
System.out.println("test_sum: " + (end - start));
514
515
start = System.currentTimeMillis();
516
for (int i=0; i<ITERS; i++) {
517
test_addc(a0, a1);
518
}
519
end = System.currentTimeMillis();
520
System.out.println("test_addc: " + (end - start));
521
start = System.currentTimeMillis();
522
for (int i=0; i<ITERS; i++) {
523
test_addv(a0, a1, (char)VALUE);
524
}
525
end = System.currentTimeMillis();
526
System.out.println("test_addv: " + (end - start));
527
start = System.currentTimeMillis();
528
for (int i=0; i<ITERS; i++) {
529
test_adda(a0, a1, a2);
530
}
531
end = System.currentTimeMillis();
532
System.out.println("test_adda: " + (end - start));
533
534
start = System.currentTimeMillis();
535
for (int i=0; i<ITERS; i++) {
536
test_subc(a0, a1);
537
}
538
end = System.currentTimeMillis();
539
System.out.println("test_subc: " + (end - start));
540
start = System.currentTimeMillis();
541
for (int i=0; i<ITERS; i++) {
542
test_subv(a0, a1, (char)VALUE);
543
}
544
end = System.currentTimeMillis();
545
System.out.println("test_subv: " + (end - start));
546
start = System.currentTimeMillis();
547
for (int i=0; i<ITERS; i++) {
548
test_suba(a0, a1, a2);
549
}
550
end = System.currentTimeMillis();
551
System.out.println("test_suba: " + (end - start));
552
553
start = System.currentTimeMillis();
554
for (int i=0; i<ITERS; i++) {
555
test_mulc(a0, a1);
556
}
557
end = System.currentTimeMillis();
558
System.out.println("test_mulc: " + (end - start));
559
start = System.currentTimeMillis();
560
for (int i=0; i<ITERS; i++) {
561
test_mulv(a0, a1, (char)VALUE);
562
}
563
end = System.currentTimeMillis();
564
System.out.println("test_mulv: " + (end - start));
565
start = System.currentTimeMillis();
566
for (int i=0; i<ITERS; i++) {
567
test_mula(a0, a1, a2);
568
}
569
end = System.currentTimeMillis();
570
System.out.println("test_mula: " + (end - start));
571
572
start = System.currentTimeMillis();
573
for (int i=0; i<ITERS; i++) {
574
test_divc(a0, a1);
575
}
576
end = System.currentTimeMillis();
577
System.out.println("test_divc: " + (end - start));
578
start = System.currentTimeMillis();
579
for (int i=0; i<ITERS; i++) {
580
test_divv(a0, a1, VALUE);
581
}
582
end = System.currentTimeMillis();
583
System.out.println("test_divv: " + (end - start));
584
start = System.currentTimeMillis();
585
for (int i=0; i<ITERS; i++) {
586
test_diva(a0, a1, a2);
587
}
588
end = System.currentTimeMillis();
589
System.out.println("test_diva: " + (end - start));
590
591
start = System.currentTimeMillis();
592
for (int i=0; i<ITERS; i++) {
593
test_mulc_n(a0, a1);
594
}
595
end = System.currentTimeMillis();
596
System.out.println("test_mulc_n: " + (end - start));
597
start = System.currentTimeMillis();
598
for (int i=0; i<ITERS; i++) {
599
test_mulv(a0, a1, (char)-VALUE);
600
}
601
end = System.currentTimeMillis();
602
System.out.println("test_mulv_n: " + (end - start));
603
start = System.currentTimeMillis();
604
for (int i=0; i<ITERS; i++) {
605
test_mula(a0, a1, a3);
606
}
607
end = System.currentTimeMillis();
608
System.out.println("test_mula_n: " + (end - start));
609
610
start = System.currentTimeMillis();
611
for (int i=0; i<ITERS; i++) {
612
test_divc_n(a0, a1);
613
}
614
end = System.currentTimeMillis();
615
System.out.println("test_divc_n: " + (end - start));
616
start = System.currentTimeMillis();
617
for (int i=0; i<ITERS; i++) {
618
test_divv(a0, a1, -VALUE);
619
}
620
end = System.currentTimeMillis();
621
System.out.println("test_divv_n: " + (end - start));
622
start = System.currentTimeMillis();
623
for (int i=0; i<ITERS; i++) {
624
test_diva(a0, a1, a3);
625
}
626
end = System.currentTimeMillis();
627
System.out.println("test_diva_n: " + (end - start));
628
629
start = System.currentTimeMillis();
630
for (int i=0; i<ITERS; i++) {
631
test_andc(a0, a1);
632
}
633
end = System.currentTimeMillis();
634
System.out.println("test_andc: " + (end - start));
635
start = System.currentTimeMillis();
636
for (int i=0; i<ITERS; i++) {
637
test_andv(a0, a1, (short)BIT_MASK);
638
}
639
end = System.currentTimeMillis();
640
System.out.println("test_andv: " + (end - start));
641
start = System.currentTimeMillis();
642
for (int i=0; i<ITERS; i++) {
643
test_anda(a0, a1, a4);
644
}
645
end = System.currentTimeMillis();
646
System.out.println("test_anda: " + (end - start));
647
648
start = System.currentTimeMillis();
649
for (int i=0; i<ITERS; i++) {
650
test_orc(a0, a1);
651
}
652
end = System.currentTimeMillis();
653
System.out.println("test_orc: " + (end - start));
654
start = System.currentTimeMillis();
655
for (int i=0; i<ITERS; i++) {
656
test_orv(a0, a1, (short)BIT_MASK);
657
}
658
end = System.currentTimeMillis();
659
System.out.println("test_orv: " + (end - start));
660
start = System.currentTimeMillis();
661
for (int i=0; i<ITERS; i++) {
662
test_ora(a0, a1, a4);
663
}
664
end = System.currentTimeMillis();
665
System.out.println("test_ora: " + (end - start));
666
667
start = System.currentTimeMillis();
668
for (int i=0; i<ITERS; i++) {
669
test_xorc(a0, a1);
670
}
671
end = System.currentTimeMillis();
672
System.out.println("test_xorc: " + (end - start));
673
start = System.currentTimeMillis();
674
for (int i=0; i<ITERS; i++) {
675
test_xorv(a0, a1, (short)BIT_MASK);
676
}
677
end = System.currentTimeMillis();
678
System.out.println("test_xorv: " + (end - start));
679
start = System.currentTimeMillis();
680
for (int i=0; i<ITERS; i++) {
681
test_xora(a0, a1, a4);
682
}
683
end = System.currentTimeMillis();
684
System.out.println("test_xora: " + (end - start));
685
686
start = System.currentTimeMillis();
687
for (int i=0; i<ITERS; i++) {
688
test_sllc(a0, a1);
689
}
690
end = System.currentTimeMillis();
691
System.out.println("test_sllc: " + (end - start));
692
start = System.currentTimeMillis();
693
for (int i=0; i<ITERS; i++) {
694
test_sllv(a0, a1, VALUE);
695
}
696
end = System.currentTimeMillis();
697
System.out.println("test_sllv: " + (end - start));
698
699
start = System.currentTimeMillis();
700
for (int i=0; i<ITERS; i++) {
701
test_srlc(a0, a1);
702
}
703
end = System.currentTimeMillis();
704
System.out.println("test_srlc: " + (end - start));
705
start = System.currentTimeMillis();
706
for (int i=0; i<ITERS; i++) {
707
test_srlv(a0, a1, VALUE);
708
}
709
end = System.currentTimeMillis();
710
System.out.println("test_srlv: " + (end - start));
711
712
start = System.currentTimeMillis();
713
for (int i=0; i<ITERS; i++) {
714
test_srac(a0, a1);
715
}
716
end = System.currentTimeMillis();
717
System.out.println("test_srac: " + (end - start));
718
start = System.currentTimeMillis();
719
for (int i=0; i<ITERS; i++) {
720
test_srav(a0, a1, VALUE);
721
}
722
end = System.currentTimeMillis();
723
System.out.println("test_srav: " + (end - start));
724
725
start = System.currentTimeMillis();
726
for (int i=0; i<ITERS; i++) {
727
test_sllc_n(a0, a1);
728
}
729
end = System.currentTimeMillis();
730
System.out.println("test_sllc_n: " + (end - start));
731
start = System.currentTimeMillis();
732
for (int i=0; i<ITERS; i++) {
733
test_sllv(a0, a1, -VALUE);
734
}
735
end = System.currentTimeMillis();
736
System.out.println("test_sllv_n: " + (end - start));
737
738
start = System.currentTimeMillis();
739
for (int i=0; i<ITERS; i++) {
740
test_srlc_n(a0, a1);
741
}
742
end = System.currentTimeMillis();
743
System.out.println("test_srlc_n: " + (end - start));
744
start = System.currentTimeMillis();
745
for (int i=0; i<ITERS; i++) {
746
test_srlv(a0, a1, -VALUE);
747
}
748
end = System.currentTimeMillis();
749
System.out.println("test_srlv_n: " + (end - start));
750
751
start = System.currentTimeMillis();
752
for (int i=0; i<ITERS; i++) {
753
test_srac_n(a0, a1);
754
}
755
end = System.currentTimeMillis();
756
System.out.println("test_srac_n: " + (end - start));
757
start = System.currentTimeMillis();
758
for (int i=0; i<ITERS; i++) {
759
test_srav(a0, a1, -VALUE);
760
}
761
end = System.currentTimeMillis();
762
System.out.println("test_srav_n: " + (end - start));
763
764
start = System.currentTimeMillis();
765
for (int i=0; i<ITERS; i++) {
766
test_sllc_o(a0, a1);
767
}
768
end = System.currentTimeMillis();
769
System.out.println("test_sllc_o: " + (end - start));
770
start = System.currentTimeMillis();
771
for (int i=0; i<ITERS; i++) {
772
test_sllv(a0, a1, SHIFT);
773
}
774
end = System.currentTimeMillis();
775
System.out.println("test_sllv_o: " + (end - start));
776
777
start = System.currentTimeMillis();
778
for (int i=0; i<ITERS; i++) {
779
test_srlc_o(a0, a1);
780
}
781
end = System.currentTimeMillis();
782
System.out.println("test_srlc_o: " + (end - start));
783
start = System.currentTimeMillis();
784
for (int i=0; i<ITERS; i++) {
785
test_srlv(a0, a1, SHIFT);
786
}
787
end = System.currentTimeMillis();
788
System.out.println("test_srlv_o: " + (end - start));
789
790
start = System.currentTimeMillis();
791
for (int i=0; i<ITERS; i++) {
792
test_srac_o(a0, a1);
793
}
794
end = System.currentTimeMillis();
795
System.out.println("test_srac_o: " + (end - start));
796
start = System.currentTimeMillis();
797
for (int i=0; i<ITERS; i++) {
798
test_srav(a0, a1, SHIFT);
799
}
800
end = System.currentTimeMillis();
801
System.out.println("test_srav_o: " + (end - start));
802
803
start = System.currentTimeMillis();
804
for (int i=0; i<ITERS; i++) {
805
test_sllc_on(a0, a1);
806
}
807
end = System.currentTimeMillis();
808
System.out.println("test_sllc_on: " + (end - start));
809
start = System.currentTimeMillis();
810
for (int i=0; i<ITERS; i++) {
811
test_sllv(a0, a1, -SHIFT);
812
}
813
end = System.currentTimeMillis();
814
System.out.println("test_sllv_on: " + (end - start));
815
816
start = System.currentTimeMillis();
817
for (int i=0; i<ITERS; i++) {
818
test_srlc_on(a0, a1);
819
}
820
end = System.currentTimeMillis();
821
System.out.println("test_srlc_on: " + (end - start));
822
start = System.currentTimeMillis();
823
for (int i=0; i<ITERS; i++) {
824
test_srlv(a0, a1, -SHIFT);
825
}
826
end = System.currentTimeMillis();
827
System.out.println("test_srlv_on: " + (end - start));
828
829
start = System.currentTimeMillis();
830
for (int i=0; i<ITERS; i++) {
831
test_srac_on(a0, a1);
832
}
833
end = System.currentTimeMillis();
834
System.out.println("test_srac_on: " + (end - start));
835
start = System.currentTimeMillis();
836
for (int i=0; i<ITERS; i++) {
837
test_srav(a0, a1, -SHIFT);
838
}
839
end = System.currentTimeMillis();
840
System.out.println("test_srav_on: " + (end - start));
841
842
start = System.currentTimeMillis();
843
for (int i=0; i<ITERS; i++) {
844
test_sllc_add(a0, a1);
845
}
846
end = System.currentTimeMillis();
847
System.out.println("test_sllc_add: " + (end - start));
848
start = System.currentTimeMillis();
849
for (int i=0; i<ITERS; i++) {
850
test_sllv_add(a0, a1, ADD_INIT);
851
}
852
end = System.currentTimeMillis();
853
System.out.println("test_sllv_add: " + (end - start));
854
855
start = System.currentTimeMillis();
856
for (int i=0; i<ITERS; i++) {
857
test_srlc_add(a0, a1);
858
}
859
end = System.currentTimeMillis();
860
System.out.println("test_srlc_add: " + (end - start));
861
start = System.currentTimeMillis();
862
for (int i=0; i<ITERS; i++) {
863
test_srlv_add(a0, a1, ADD_INIT);
864
}
865
end = System.currentTimeMillis();
866
System.out.println("test_srlv_add: " + (end - start));
867
868
start = System.currentTimeMillis();
869
for (int i=0; i<ITERS; i++) {
870
test_srac_add(a0, a1);
871
}
872
end = System.currentTimeMillis();
873
System.out.println("test_srac_add: " + (end - start));
874
start = System.currentTimeMillis();
875
for (int i=0; i<ITERS; i++) {
876
test_srav_add(a0, a1, ADD_INIT);
877
}
878
end = System.currentTimeMillis();
879
System.out.println("test_srav_add: " + (end - start));
880
881
start = System.currentTimeMillis();
882
for (int i=0; i<ITERS; i++) {
883
test_sllc_and(a0, a1);
884
}
885
end = System.currentTimeMillis();
886
System.out.println("test_sllc_and: " + (end - start));
887
start = System.currentTimeMillis();
888
for (int i=0; i<ITERS; i++) {
889
test_sllv_and(a0, a1, BIT_MASK);
890
}
891
end = System.currentTimeMillis();
892
System.out.println("test_sllv_and: " + (end - start));
893
894
start = System.currentTimeMillis();
895
for (int i=0; i<ITERS; i++) {
896
test_srlc_and(a0, a1);
897
}
898
end = System.currentTimeMillis();
899
System.out.println("test_srlc_and: " + (end - start));
900
start = System.currentTimeMillis();
901
for (int i=0; i<ITERS; i++) {
902
test_srlv_and(a0, a1, BIT_MASK);
903
}
904
end = System.currentTimeMillis();
905
System.out.println("test_srlv_and: " + (end - start));
906
907
start = System.currentTimeMillis();
908
for (int i=0; i<ITERS; i++) {
909
test_srac_and(a0, a1);
910
}
911
end = System.currentTimeMillis();
912
System.out.println("test_srac_and: " + (end - start));
913
start = System.currentTimeMillis();
914
for (int i=0; i<ITERS; i++) {
915
test_srav_and(a0, a1, BIT_MASK);
916
}
917
end = System.currentTimeMillis();
918
System.out.println("test_srav_and: " + (end - start));
919
920
start = System.currentTimeMillis();
921
for (int i=0; i<ITERS; i++) {
922
test_pack2(p2, a1);
923
}
924
end = System.currentTimeMillis();
925
System.out.println("test_pack2: " + (end - start));
926
start = System.currentTimeMillis();
927
for (int i=0; i<ITERS; i++) {
928
test_unpack2(a0, p2);
929
}
930
end = System.currentTimeMillis();
931
System.out.println("test_unpack2: " + (end - start));
932
start = System.currentTimeMillis();
933
for (int i=0; i<ITERS; i++) {
934
test_pack2_swap(p2, a1);
935
}
936
end = System.currentTimeMillis();
937
System.out.println("test_pack2_swap: " + (end - start));
938
start = System.currentTimeMillis();
939
for (int i=0; i<ITERS; i++) {
940
test_unpack2_swap(a0, p2);
941
}
942
end = System.currentTimeMillis();
943
System.out.println("test_unpack2_swap: " + (end - start));
944
945
start = System.currentTimeMillis();
946
for (int i=0; i<ITERS; i++) {
947
test_pack4(p4, a1);
948
}
949
end = System.currentTimeMillis();
950
System.out.println("test_pack4: " + (end - start));
951
start = System.currentTimeMillis();
952
for (int i=0; i<ITERS; i++) {
953
test_unpack4(a0, p4);
954
}
955
end = System.currentTimeMillis();
956
System.out.println("test_unpack4: " + (end - start));
957
start = System.currentTimeMillis();
958
for (int i=0; i<ITERS; i++) {
959
test_pack4_swap(p4, a1);
960
}
961
end = System.currentTimeMillis();
962
System.out.println("test_pack4_swap: " + (end - start));
963
start = System.currentTimeMillis();
964
for (int i=0; i<ITERS; i++) {
965
test_unpack4_swap(a0, p4);
966
}
967
end = System.currentTimeMillis();
968
System.out.println("test_unpack4_swap: " + (end - start));
969
970
return errn;
971
}
972
973
static int test_sum(char[] a1) {
974
int sum = 0;
975
for (int i = 0; i < a1.length; i+=1) {
976
sum += a1[i];
977
}
978
return sum;
979
}
980
981
static void test_addc(char[] a0, char[] a1) {
982
for (int i = 0; i < a0.length; i+=1) {
983
a0[i] = (char)(a1[i]+VALUE);
984
}
985
}
986
static void test_addv(char[] a0, char[] a1, char b) {
987
for (int i = 0; i < a0.length; i+=1) {
988
a0[i] = (char)(a1[i]+b);
989
}
990
}
991
static void test_adda(char[] a0, char[] a1, short[] a2) {
992
for (int i = 0; i < a0.length; i+=1) {
993
a0[i] = (char)(a1[i]+a2[i]);
994
}
995
}
996
997
static void test_subc(char[] a0, char[] a1) {
998
for (int i = 0; i < a0.length; i+=1) {
999
a0[i] = (char)(a1[i]-VALUE);
1000
}
1001
}
1002
static void test_subv(char[] a0, char[] a1, char b) {
1003
for (int i = 0; i < a0.length; i+=1) {
1004
a0[i] = (char)(a1[i]-b);
1005
}
1006
}
1007
static void test_suba(char[] a0, char[] a1, short[] a2) {
1008
for (int i = 0; i < a0.length; i+=1) {
1009
a0[i] = (char)(a1[i]-a2[i]);
1010
}
1011
}
1012
1013
static void test_mulc(char[] a0, char[] a1) {
1014
for (int i = 0; i < a0.length; i+=1) {
1015
a0[i] = (char)(a1[i]*VALUE);
1016
}
1017
}
1018
static void test_mulc_n(char[] a0, char[] a1) {
1019
for (int i = 0; i < a0.length; i+=1) {
1020
a0[i] = (char)(a1[i]*(-VALUE));
1021
}
1022
}
1023
static void test_mulv(char[] a0, char[] a1, char b) {
1024
for (int i = 0; i < a0.length; i+=1) {
1025
a0[i] = (char)(a1[i]*b);
1026
}
1027
}
1028
static void test_mula(char[] a0, char[] a1, short[] a2) {
1029
for (int i = 0; i < a0.length; i+=1) {
1030
a0[i] = (char)(a1[i]*a2[i]);
1031
}
1032
}
1033
1034
static void test_divc(char[] a0, char[] a1) {
1035
for (int i = 0; i < a0.length; i+=1) {
1036
a0[i] = (char)(a1[i]/VALUE);
1037
}
1038
}
1039
static void test_divc_n(char[] a0, char[] a1) {
1040
for (int i = 0; i < a0.length; i+=1) {
1041
a0[i] = (char)(a1[i]/(-VALUE));
1042
}
1043
}
1044
static void test_divv(char[] a0, char[] a1, int b) {
1045
for (int i = 0; i < a0.length; i+=1) {
1046
a0[i] = (char)(a1[i]/b);
1047
}
1048
}
1049
static void test_diva(char[] a0, char[] a1, short[] a2) {
1050
for (int i = 0; i < a0.length; i+=1) {
1051
a0[i] = (char)(a1[i]/a2[i]);
1052
}
1053
}
1054
1055
static void test_andc(char[] a0, char[] a1) {
1056
for (int i = 0; i < a0.length; i+=1) {
1057
a0[i] = (char)(a1[i]&BIT_MASK);
1058
}
1059
}
1060
static void test_andv(char[] a0, char[] a1, short b) {
1061
for (int i = 0; i < a0.length; i+=1) {
1062
a0[i] = (char)(a1[i]&b);
1063
}
1064
}
1065
static void test_anda(char[] a0, char[] a1, short[] a2) {
1066
for (int i = 0; i < a0.length; i+=1) {
1067
a0[i] = (char)(a1[i]&a2[i]);
1068
}
1069
}
1070
1071
static void test_orc(char[] a0, char[] a1) {
1072
for (int i = 0; i < a0.length; i+=1) {
1073
a0[i] = (char)(a1[i]|BIT_MASK);
1074
}
1075
}
1076
static void test_orv(char[] a0, char[] a1, short b) {
1077
for (int i = 0; i < a0.length; i+=1) {
1078
a0[i] = (char)(a1[i]|b);
1079
}
1080
}
1081
static void test_ora(char[] a0, char[] a1, short[] a2) {
1082
for (int i = 0; i < a0.length; i+=1) {
1083
a0[i] = (char)(a1[i]|a2[i]);
1084
}
1085
}
1086
1087
static void test_xorc(char[] a0, char[] a1) {
1088
for (int i = 0; i < a0.length; i+=1) {
1089
a0[i] = (char)(a1[i]^BIT_MASK);
1090
}
1091
}
1092
static void test_xorv(char[] a0, char[] a1, short b) {
1093
for (int i = 0; i < a0.length; i+=1) {
1094
a0[i] = (char)(a1[i]^b);
1095
}
1096
}
1097
static void test_xora(char[] a0, char[] a1, short[] a2) {
1098
for (int i = 0; i < a0.length; i+=1) {
1099
a0[i] = (char)(a1[i]^a2[i]);
1100
}
1101
}
1102
1103
static void test_sllc(char[] a0, char[] a1) {
1104
for (int i = 0; i < a0.length; i+=1) {
1105
a0[i] = (char)(a1[i]<<VALUE);
1106
}
1107
}
1108
static void test_sllc_n(char[] a0, char[] a1) {
1109
for (int i = 0; i < a0.length; i+=1) {
1110
a0[i] = (char)(a1[i]<<(-VALUE));
1111
}
1112
}
1113
static void test_sllc_o(char[] a0, char[] a1) {
1114
for (int i = 0; i < a0.length; i+=1) {
1115
a0[i] = (char)(a1[i]<<SHIFT);
1116
}
1117
}
1118
static void test_sllc_on(char[] a0, char[] a1) {
1119
for (int i = 0; i < a0.length; i+=1) {
1120
a0[i] = (char)(a1[i]<<(-SHIFT));
1121
}
1122
}
1123
static void test_sllv(char[] a0, char[] a1, int b) {
1124
for (int i = 0; i < a0.length; i+=1) {
1125
a0[i] = (char)(a1[i]<<b);
1126
}
1127
}
1128
static void test_sllc_add(char[] a0, char[] a1) {
1129
for (int i = 0; i < a0.length; i+=1) {
1130
a0[i] = (char)((a1[i] + ADD_INIT)<<VALUE);
1131
}
1132
}
1133
static void test_sllv_add(char[] a0, char[] a1, int b) {
1134
for (int i = 0; i < a0.length; i+=1) {
1135
a0[i] = (char)((a1[i] + b)<<VALUE);
1136
}
1137
}
1138
static void test_sllc_and(char[] a0, char[] a1) {
1139
for (int i = 0; i < a0.length; i+=1) {
1140
a0[i] = (char)((a1[i] & BIT_MASK)<<VALUE);
1141
}
1142
}
1143
static void test_sllv_and(char[] a0, char[] a1, int b) {
1144
for (int i = 0; i < a0.length; i+=1) {
1145
a0[i] = (char)((a1[i] & b)<<VALUE);
1146
}
1147
}
1148
1149
static void test_srlc(char[] a0, char[] a1) {
1150
for (int i = 0; i < a0.length; i+=1) {
1151
a0[i] = (char)(a1[i]>>>VALUE);
1152
}
1153
}
1154
static void test_srlc_n(char[] a0, char[] a1) {
1155
for (int i = 0; i < a0.length; i+=1) {
1156
a0[i] = (char)(a1[i]>>>(-VALUE));
1157
}
1158
}
1159
static void test_srlc_o(char[] a0, char[] a1) {
1160
for (int i = 0; i < a0.length; i+=1) {
1161
a0[i] = (char)(a1[i]>>>SHIFT);
1162
}
1163
}
1164
static void test_srlc_on(char[] a0, char[] a1) {
1165
for (int i = 0; i < a0.length; i+=1) {
1166
a0[i] = (char)(a1[i]>>>(-SHIFT));
1167
}
1168
}
1169
static void test_srlv(char[] a0, char[] a1, int b) {
1170
for (int i = 0; i < a0.length; i+=1) {
1171
a0[i] = (char)(a1[i]>>>b);
1172
}
1173
}
1174
static void test_srlc_add(char[] a0, char[] a1) {
1175
for (int i = 0; i < a0.length; i+=1) {
1176
a0[i] = (char)((a1[i] + ADD_INIT)>>>VALUE);
1177
}
1178
}
1179
static void test_srlv_add(char[] a0, char[] a1, int b) {
1180
for (int i = 0; i < a0.length; i+=1) {
1181
a0[i] = (char)((a1[i] + b)>>>VALUE);
1182
}
1183
}
1184
static void test_srlc_and(char[] a0, char[] a1) {
1185
for (int i = 0; i < a0.length; i+=1) {
1186
a0[i] = (char)((a1[i] & BIT_MASK)>>>VALUE);
1187
}
1188
}
1189
static void test_srlv_and(char[] a0, char[] a1, int b) {
1190
for (int i = 0; i < a0.length; i+=1) {
1191
a0[i] = (char)((a1[i] & b)>>>VALUE);
1192
}
1193
}
1194
1195
static void test_srac(char[] a0, char[] a1) {
1196
for (int i = 0; i < a0.length; i+=1) {
1197
a0[i] = (char)(a1[i]>>VALUE);
1198
}
1199
}
1200
static void test_srac_n(char[] a0, char[] a1) {
1201
for (int i = 0; i < a0.length; i+=1) {
1202
a0[i] = (char)(a1[i]>>(-VALUE));
1203
}
1204
}
1205
static void test_srac_o(char[] a0, char[] a1) {
1206
for (int i = 0; i < a0.length; i+=1) {
1207
a0[i] = (char)(a1[i]>>SHIFT);
1208
}
1209
}
1210
static void test_srac_on(char[] a0, char[] a1) {
1211
for (int i = 0; i < a0.length; i+=1) {
1212
a0[i] = (char)(a1[i]>>(-SHIFT));
1213
}
1214
}
1215
static void test_srav(char[] a0, char[] a1, int b) {
1216
for (int i = 0; i < a0.length; i+=1) {
1217
a0[i] = (char)(a1[i]>>b);
1218
}
1219
}
1220
static void test_srac_add(char[] a0, char[] a1) {
1221
for (int i = 0; i < a0.length; i+=1) {
1222
a0[i] = (char)((a1[i] + ADD_INIT)>>VALUE);
1223
}
1224
}
1225
static void test_srav_add(char[] a0, char[] a1, int b) {
1226
for (int i = 0; i < a0.length; i+=1) {
1227
a0[i] = (char)((a1[i] + b)>>VALUE);
1228
}
1229
}
1230
static void test_srac_and(char[] a0, char[] a1) {
1231
for (int i = 0; i < a0.length; i+=1) {
1232
a0[i] = (char)((a1[i] & BIT_MASK)>>VALUE);
1233
}
1234
}
1235
static void test_srav_and(char[] a0, char[] a1, int b) {
1236
for (int i = 0; i < a0.length; i+=1) {
1237
a0[i] = (char)((a1[i] & b)>>VALUE);
1238
}
1239
}
1240
1241
static void test_pack2(int[] p2, char[] a1) {
1242
if (p2.length*2 > a1.length) return;
1243
for (int i = 0; i < p2.length; i+=1) {
1244
int l0 = (int)a1[i*2+0];
1245
int l1 = (int)a1[i*2+1];
1246
p2[i] = (l1 << 16) | (l0 & 0xFFFF);
1247
}
1248
}
1249
static void test_unpack2(char[] a0, int[] p2) {
1250
if (p2.length*2 > a0.length) return;
1251
for (int i = 0; i < p2.length; i+=1) {
1252
int l = p2[i];
1253
a0[i*2+0] = (char)(l & 0xFFFF);
1254
a0[i*2+1] = (char)(l >> 16);
1255
}
1256
}
1257
static void test_pack2_swap(int[] p2, char[] a1) {
1258
if (p2.length*2 > a1.length) return;
1259
for (int i = 0; i < p2.length; i+=1) {
1260
int l0 = (int)a1[i*2+0];
1261
int l1 = (int)a1[i*2+1];
1262
p2[i] = (l0 << 16) | (l1 & 0xFFFF);
1263
}
1264
}
1265
static void test_unpack2_swap(char[] a0, int[] p2) {
1266
if (p2.length*2 > a0.length) return;
1267
for (int i = 0; i < p2.length; i+=1) {
1268
int l = p2[i];
1269
a0[i*2+0] = (char)(l >> 16);
1270
a0[i*2+1] = (char)(l & 0xFFFF);
1271
}
1272
}
1273
1274
static void test_pack4(long[] p4, char[] a1) {
1275
if (p4.length*4 > a1.length) return;
1276
for (int i = 0; i < p4.length; i+=1) {
1277
long l0 = (long)a1[i*4+0];
1278
long l1 = (long)a1[i*4+1];
1279
long l2 = (long)a1[i*4+2];
1280
long l3 = (long)a1[i*4+3];
1281
p4[i] = (l0 & 0xFFFFl) |
1282
((l1 & 0xFFFFl) << 16) |
1283
((l2 & 0xFFFFl) << 32) |
1284
((l3 & 0xFFFFl) << 48);
1285
}
1286
}
1287
static void test_unpack4(char[] a0, long[] p4) {
1288
if (p4.length*4 > a0.length) return;
1289
for (int i = 0; i < p4.length; i+=1) {
1290
long l = p4[i];
1291
a0[i*4+0] = (char)(l & 0xFFFFl);
1292
a0[i*4+1] = (char)(l >> 16);
1293
a0[i*4+2] = (char)(l >> 32);
1294
a0[i*4+3] = (char)(l >> 48);
1295
}
1296
}
1297
static void test_pack4_swap(long[] p4, char[] a1) {
1298
if (p4.length*4 > a1.length) return;
1299
for (int i = 0; i < p4.length; i+=1) {
1300
long l0 = (long)a1[i*4+0];
1301
long l1 = (long)a1[i*4+1];
1302
long l2 = (long)a1[i*4+2];
1303
long l3 = (long)a1[i*4+3];
1304
p4[i] = (l3 & 0xFFFFl) |
1305
((l2 & 0xFFFFl) << 16) |
1306
((l1 & 0xFFFFl) << 32) |
1307
((l0 & 0xFFFFl) << 48);
1308
}
1309
}
1310
static void test_unpack4_swap(char[] a0, long[] p4) {
1311
if (p4.length*4 > a0.length) return;
1312
for (int i = 0; i < p4.length; i+=1) {
1313
long l = p4[i];
1314
a0[i*4+0] = (char)(l >> 48);
1315
a0[i*4+1] = (char)(l >> 32);
1316
a0[i*4+2] = (char)(l >> 16);
1317
a0[i*4+3] = (char)(l & 0xFFFFl);
1318
}
1319
}
1320
1321
static int verify(String text, int i, int elem, int val) {
1322
if (elem != val) {
1323
System.err.println(text + "[" + i + "] = " + elem + " != " + val);
1324
return 1;
1325
}
1326
return 0;
1327
}
1328
1329
static int verify(String text, int i, long elem, long val) {
1330
if (elem != val) {
1331
System.err.println(text + "[" + i + "] = " + Long.toHexString(elem) + " != " + Long.toHexString(val));
1332
return 1;
1333
}
1334
return 0;
1335
}
1336
}
1337
1338