Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/openjdk-multiarch-jdk8u
Path: blob/aarch64-shenandoah-jdk8u272-b10/hotspot/test/compiler/6340864/TestByteVect.java
32285 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
/**
26
* @test
27
* @bug 6340864
28
* @summary Implement vectorization optimizations in hotspot-server
29
*
30
* @run main/othervm/timeout=400 -Xbatch -Xmx64m TestByteVect
31
*/
32
33
public class TestByteVect {
34
private static final int ARRLEN = 997;
35
private static final int ITERS = 11000;
36
private static final int ADD_INIT = 63;
37
private static final int BIT_MASK = 0xB7;
38
private static final int VALUE = 3;
39
private static final int SHIFT = 8;
40
41
public static void main(String args[]) {
42
System.out.println("Testing Byte vectors");
43
int errn = test();
44
if (errn > 0) {
45
System.err.println("FAILED: " + errn + " errors");
46
System.exit(97);
47
}
48
System.out.println("PASSED");
49
}
50
51
static int test() {
52
byte[] a0 = new byte[ARRLEN];
53
byte[] a1 = new byte[ARRLEN];
54
byte[] a2 = new byte[ARRLEN];
55
byte[] a3 = new byte[ARRLEN];
56
byte[] a4 = new byte[ARRLEN];
57
short[] p2 = new short[ARRLEN/2];
58
int[] p4 = new int[ARRLEN/4];
59
long[] p8 = new long[ARRLEN/8];
60
// Initialize
61
int gold_sum = 0;
62
for (int i=0; i<ARRLEN; i++) {
63
byte val = (byte)(ADD_INIT+i);
64
gold_sum += val;
65
a1[i] = val;
66
a2[i] = (byte)VALUE;
67
a3[i] = (byte)-VALUE;
68
a4[i] = (byte)BIT_MASK;
69
}
70
System.out.println("Warmup");
71
for (int i=0; i<ITERS; i++) {
72
test_sum(a1);
73
test_addc(a0, a1);
74
test_addv(a0, a1, (byte)VALUE);
75
test_adda(a0, a1, a2);
76
test_subc(a0, a1);
77
test_subv(a0, a1, (byte)VALUE);
78
test_suba(a0, a1, a2);
79
80
test_mulc(a0, a1);
81
test_mulv(a0, a1, (byte)VALUE);
82
test_mula(a0, a1, a2);
83
test_divc(a0, a1);
84
test_divv(a0, a1, (byte)VALUE);
85
test_diva(a0, a1, a2);
86
test_mulc_n(a0, a1);
87
test_mulv(a0, a1, (byte)-VALUE);
88
test_mula(a0, a1, a3);
89
test_divc_n(a0, a1);
90
test_divv(a0, a1, (byte)-VALUE);
91
test_diva(a0, a1, a3);
92
93
test_andc(a0, a1);
94
test_andv(a0, a1, (byte)BIT_MASK);
95
test_anda(a0, a1, a4);
96
test_orc(a0, a1);
97
test_orv(a0, a1, (byte)BIT_MASK);
98
test_ora(a0, a1, a4);
99
test_xorc(a0, a1);
100
test_xorv(a0, a1, (byte)BIT_MASK);
101
test_xora(a0, a1, a4);
102
103
test_sllc(a0, a1);
104
test_sllv(a0, a1, VALUE);
105
test_srlc(a0, a1);
106
test_srlv(a0, a1, VALUE);
107
test_srac(a0, a1);
108
test_srav(a0, a1, VALUE);
109
110
test_sllc_n(a0, a1);
111
test_sllv(a0, a1, -VALUE);
112
test_srlc_n(a0, a1);
113
test_srlv(a0, a1, -VALUE);
114
test_srac_n(a0, a1);
115
test_srav(a0, a1, -VALUE);
116
117
test_sllc_o(a0, a1);
118
test_sllv(a0, a1, SHIFT);
119
test_srlc_o(a0, a1);
120
test_srlv(a0, a1, SHIFT);
121
test_srac_o(a0, a1);
122
test_srav(a0, a1, SHIFT);
123
124
test_sllc_on(a0, a1);
125
test_sllv(a0, a1, -SHIFT);
126
test_srlc_on(a0, a1);
127
test_srlv(a0, a1, -SHIFT);
128
test_srac_on(a0, a1);
129
test_srav(a0, a1, -SHIFT);
130
131
test_sllc_add(a0, a1);
132
test_sllv_add(a0, a1, ADD_INIT);
133
test_srlc_add(a0, a1);
134
test_srlv_add(a0, a1, ADD_INIT);
135
test_srac_add(a0, a1);
136
test_srav_add(a0, a1, ADD_INIT);
137
138
test_sllc_and(a0, a1);
139
test_sllv_and(a0, a1, BIT_MASK);
140
test_srlc_and(a0, a1);
141
test_srlv_and(a0, a1, BIT_MASK);
142
test_srac_and(a0, a1);
143
test_srav_and(a0, a1, BIT_MASK);
144
145
test_pack2(p2, a1);
146
test_unpack2(a0, p2);
147
test_pack2_swap(p2, a1);
148
test_unpack2_swap(a0, p2);
149
test_pack4(p4, a1);
150
test_unpack4(a0, p4);
151
test_pack4_swap(p4, a1);
152
test_unpack4_swap(a0, p4);
153
test_pack8(p8, a1);
154
test_unpack8(a0, p8);
155
test_pack8_swap(p8, a1);
156
test_unpack8_swap(a0, p8);
157
}
158
// Test and verify results
159
System.out.println("Verification");
160
int errn = 0;
161
{
162
int sum = test_sum(a1);
163
if (sum != gold_sum) {
164
System.err.println("test_sum: " + sum + " != " + gold_sum);
165
errn++;
166
}
167
168
test_addc(a0, a1);
169
for (int i=0; i<ARRLEN; i++) {
170
errn += verify("test_addc: ", i, a0[i], (byte)((byte)(ADD_INIT+i)+VALUE));
171
}
172
test_addv(a0, a1, (byte)VALUE);
173
for (int i=0; i<ARRLEN; i++) {
174
errn += verify("test_addv: ", i, a0[i], (byte)((byte)(ADD_INIT+i)+VALUE));
175
}
176
test_adda(a0, a1, a2);
177
for (int i=0; i<ARRLEN; i++) {
178
errn += verify("test_adda: ", i, a0[i], (byte)((byte)(ADD_INIT+i)+VALUE));
179
}
180
181
test_subc(a0, a1);
182
for (int i=0; i<ARRLEN; i++) {
183
errn += verify("test_subc: ", i, a0[i], (byte)((byte)(ADD_INIT+i)-VALUE));
184
}
185
test_subv(a0, a1, (byte)VALUE);
186
for (int i=0; i<ARRLEN; i++) {
187
errn += verify("test_subv: ", i, a0[i], (byte)((byte)(ADD_INIT+i)-VALUE));
188
}
189
test_suba(a0, a1, a2);
190
for (int i=0; i<ARRLEN; i++) {
191
errn += verify("test_suba: ", i, a0[i], (byte)((byte)(ADD_INIT+i)-VALUE));
192
}
193
194
test_mulc(a0, a1);
195
for (int i=0; i<ARRLEN; i++) {
196
errn += verify("test_mulc: ", i, a0[i], (byte)((byte)(ADD_INIT+i)*VALUE));
197
}
198
test_mulv(a0, a1, (byte)VALUE);
199
for (int i=0; i<ARRLEN; i++) {
200
errn += verify("test_mulv: ", i, a0[i], (byte)((byte)(ADD_INIT+i)*VALUE));
201
}
202
test_mula(a0, a1, a2);
203
for (int i=0; i<ARRLEN; i++) {
204
errn += verify("test_mula: ", i, a0[i], (byte)((byte)(ADD_INIT+i)*VALUE));
205
}
206
207
test_divc(a0, a1);
208
for (int i=0; i<ARRLEN; i++) {
209
errn += verify("test_divc: ", i, a0[i], (byte)((byte)(ADD_INIT+i)/VALUE));
210
}
211
test_divv(a0, a1, (byte)VALUE);
212
for (int i=0; i<ARRLEN; i++) {
213
errn += verify("test_divv: ", i, a0[i], (byte)((byte)(ADD_INIT+i)/VALUE));
214
}
215
test_diva(a0, a1, a2);
216
for (int i=0; i<ARRLEN; i++) {
217
errn += verify("test_diva: ", i, a0[i], (byte)((byte)(ADD_INIT+i)/VALUE));
218
}
219
220
test_mulc_n(a0, a1);
221
for (int i=0; i<ARRLEN; i++) {
222
errn += verify("test_mulc_n: ", i, a0[i], (byte)((byte)(ADD_INIT+i)*(-VALUE)));
223
}
224
test_mulv(a0, a1, (byte)-VALUE);
225
for (int i=0; i<ARRLEN; i++) {
226
errn += verify("test_mulv_n: ", i, a0[i], (byte)((byte)(ADD_INIT+i)*(-VALUE)));
227
}
228
test_mula(a0, a1, a3);
229
for (int i=0; i<ARRLEN; i++) {
230
errn += verify("test_mula_n: ", i, a0[i], (byte)((byte)(ADD_INIT+i)*(-VALUE)));
231
}
232
233
test_divc_n(a0, a1);
234
for (int i=0; i<ARRLEN; i++) {
235
errn += verify("test_divc_n: ", i, a0[i], (byte)((byte)(ADD_INIT+i)/(-VALUE)));
236
}
237
test_divv(a0, a1, (byte)-VALUE);
238
for (int i=0; i<ARRLEN; i++) {
239
errn += verify("test_divv_n: ", i, a0[i], (byte)((byte)(ADD_INIT+i)/(-VALUE)));
240
}
241
test_diva(a0, a1, a3);
242
for (int i=0; i<ARRLEN; i++) {
243
errn += verify("test_diva_n: ", i, a0[i], (byte)((byte)(ADD_INIT+i)/(-VALUE)));
244
}
245
246
test_andc(a0, a1);
247
for (int i=0; i<ARRLEN; i++) {
248
errn += verify("test_andc: ", i, a0[i], (byte)((byte)(ADD_INIT+i)&BIT_MASK));
249
}
250
test_andv(a0, a1, (byte)BIT_MASK);
251
for (int i=0; i<ARRLEN; i++) {
252
errn += verify("test_andv: ", i, a0[i], (byte)((byte)(ADD_INIT+i)&BIT_MASK));
253
}
254
test_anda(a0, a1, a4);
255
for (int i=0; i<ARRLEN; i++) {
256
errn += verify("test_anda: ", i, a0[i], (byte)((byte)(ADD_INIT+i)&BIT_MASK));
257
}
258
259
test_orc(a0, a1);
260
for (int i=0; i<ARRLEN; i++) {
261
errn += verify("test_orc: ", i, a0[i], (byte)((byte)(ADD_INIT+i)|BIT_MASK));
262
}
263
test_orv(a0, a1, (byte)BIT_MASK);
264
for (int i=0; i<ARRLEN; i++) {
265
errn += verify("test_orv: ", i, a0[i], (byte)((byte)(ADD_INIT+i)|BIT_MASK));
266
}
267
test_ora(a0, a1, a4);
268
for (int i=0; i<ARRLEN; i++) {
269
errn += verify("test_ora: ", i, a0[i], (byte)((byte)(ADD_INIT+i)|BIT_MASK));
270
}
271
272
test_xorc(a0, a1);
273
for (int i=0; i<ARRLEN; i++) {
274
errn += verify("test_xorc: ", i, a0[i], (byte)((byte)(ADD_INIT+i)^BIT_MASK));
275
}
276
test_xorv(a0, a1, (byte)BIT_MASK);
277
for (int i=0; i<ARRLEN; i++) {
278
errn += verify("test_xorv: ", i, a0[i], (byte)((byte)(ADD_INIT+i)^BIT_MASK));
279
}
280
test_xora(a0, a1, a4);
281
for (int i=0; i<ARRLEN; i++) {
282
errn += verify("test_xora: ", i, a0[i], (byte)((byte)(ADD_INIT+i)^BIT_MASK));
283
}
284
285
test_sllc(a0, a1);
286
for (int i=0; i<ARRLEN; i++) {
287
errn += verify("test_sllc: ", i, a0[i], (byte)((byte)(ADD_INIT+i)<<VALUE));
288
}
289
test_sllv(a0, a1, VALUE);
290
for (int i=0; i<ARRLEN; i++) {
291
errn += verify("test_sllv: ", i, a0[i], (byte)((byte)(ADD_INIT+i)<<VALUE));
292
}
293
294
test_srlc(a0, a1);
295
for (int i=0; i<ARRLEN; i++) {
296
errn += verify("test_srlc: ", i, a0[i], (byte)((byte)(ADD_INIT+i)>>>VALUE));
297
}
298
test_srlv(a0, a1, VALUE);
299
for (int i=0; i<ARRLEN; i++) {
300
errn += verify("test_srlv: ", i, a0[i], (byte)((byte)(ADD_INIT+i)>>>VALUE));
301
}
302
303
test_srac(a0, a1);
304
for (int i=0; i<ARRLEN; i++) {
305
errn += verify("test_srac: ", i, a0[i], (byte)((byte)(ADD_INIT+i)>>VALUE));
306
}
307
test_srav(a0, a1, VALUE);
308
for (int i=0; i<ARRLEN; i++) {
309
errn += verify("test_srav: ", i, a0[i], (byte)((byte)(ADD_INIT+i)>>VALUE));
310
}
311
312
test_sllc_n(a0, a1);
313
for (int i=0; i<ARRLEN; i++) {
314
errn += verify("test_sllc_n: ", i, a0[i], (byte)((byte)(ADD_INIT+i)<<(-VALUE)));
315
}
316
test_sllv(a0, a1, -VALUE);
317
for (int i=0; i<ARRLEN; i++) {
318
errn += verify("test_sllv_n: ", i, a0[i], (byte)((byte)(ADD_INIT+i)<<(-VALUE)));
319
}
320
321
test_srlc_n(a0, a1);
322
for (int i=0; i<ARRLEN; i++) {
323
errn += verify("test_srlc_n: ", i, a0[i], (byte)((byte)(ADD_INIT+i)>>>(-VALUE)));
324
}
325
test_srlv(a0, a1, -VALUE);
326
for (int i=0; i<ARRLEN; i++) {
327
errn += verify("test_srlv_n: ", i, a0[i], (byte)((byte)(ADD_INIT+i)>>>(-VALUE)));
328
}
329
330
test_srac_n(a0, a1);
331
for (int i=0; i<ARRLEN; i++) {
332
errn += verify("test_srac_n: ", i, a0[i], (byte)((byte)(ADD_INIT+i)>>(-VALUE)));
333
}
334
test_srav(a0, a1, -VALUE);
335
for (int i=0; i<ARRLEN; i++) {
336
errn += verify("test_srav_n: ", i, a0[i], (byte)((byte)(ADD_INIT+i)>>(-VALUE)));
337
}
338
339
test_sllc_o(a0, a1);
340
for (int i=0; i<ARRLEN; i++) {
341
errn += verify("test_sllc_o: ", i, a0[i], (byte)((byte)(ADD_INIT+i)<<SHIFT));
342
}
343
test_sllv(a0, a1, SHIFT);
344
for (int i=0; i<ARRLEN; i++) {
345
errn += verify("test_sllv_o: ", i, a0[i], (byte)((byte)(ADD_INIT+i)<<SHIFT));
346
}
347
348
test_srlc_o(a0, a1);
349
for (int i=0; i<ARRLEN; i++) {
350
errn += verify("test_srlc_o: ", i, a0[i], (byte)((byte)(ADD_INIT+i)>>>SHIFT));
351
}
352
test_srlv(a0, a1, SHIFT);
353
for (int i=0; i<ARRLEN; i++) {
354
errn += verify("test_srlv_o: ", i, a0[i], (byte)((byte)(ADD_INIT+i)>>>SHIFT));
355
}
356
357
test_srac_o(a0, a1);
358
for (int i=0; i<ARRLEN; i++) {
359
errn += verify("test_srac_o: ", i, a0[i], (byte)((byte)(ADD_INIT+i)>>SHIFT));
360
}
361
test_srav(a0, a1, SHIFT);
362
for (int i=0; i<ARRLEN; i++) {
363
errn += verify("test_srav_o: ", i, a0[i], (byte)((byte)(ADD_INIT+i)>>SHIFT));
364
}
365
366
test_sllc_on(a0, a1);
367
for (int i=0; i<ARRLEN; i++) {
368
errn += verify("test_sllc_on: ", i, a0[i], (byte)((byte)(ADD_INIT+i)<<(-SHIFT)));
369
}
370
test_sllv(a0, a1, -SHIFT);
371
for (int i=0; i<ARRLEN; i++) {
372
errn += verify("test_sllv_on: ", i, a0[i], (byte)((byte)(ADD_INIT+i)<<(-SHIFT)));
373
}
374
375
test_srlc_on(a0, a1);
376
for (int i=0; i<ARRLEN; i++) {
377
errn += verify("test_srlc_on: ", i, a0[i], (byte)((byte)(ADD_INIT+i)>>>(-SHIFT)));
378
}
379
test_srlv(a0, a1, -SHIFT);
380
for (int i=0; i<ARRLEN; i++) {
381
errn += verify("test_srlv_on: ", i, a0[i], (byte)((byte)(ADD_INIT+i)>>>(-SHIFT)));
382
}
383
384
test_srac_on(a0, a1);
385
for (int i=0; i<ARRLEN; i++) {
386
errn += verify("test_srac_on: ", i, a0[i], (byte)((byte)(ADD_INIT+i)>>(-SHIFT)));
387
}
388
test_srav(a0, a1, -SHIFT);
389
for (int i=0; i<ARRLEN; i++) {
390
errn += verify("test_srav_on: ", i, a0[i], (byte)((byte)(ADD_INIT+i)>>(-SHIFT)));
391
}
392
393
test_sllc_add(a0, a1);
394
for (int i=0; i<ARRLEN; i++) {
395
errn += verify("test_sllc_add: ", i, a0[i], (byte)(((byte)(ADD_INIT+i) + ADD_INIT)<<VALUE));
396
}
397
test_sllv_add(a0, a1, ADD_INIT);
398
for (int i=0; i<ARRLEN; i++) {
399
errn += verify("test_sllv_add: ", i, a0[i], (byte)(((byte)(ADD_INIT+i) + ADD_INIT)<<VALUE));
400
}
401
402
test_srlc_add(a0, a1);
403
for (int i=0; i<ARRLEN; i++) {
404
errn += verify("test_srlc_add: ", i, a0[i], (byte)(((byte)(ADD_INIT+i) + ADD_INIT)>>>VALUE));
405
}
406
test_srlv_add(a0, a1, ADD_INIT);
407
for (int i=0; i<ARRLEN; i++) {
408
errn += verify("test_srlv_add: ", i, a0[i], (byte)(((byte)(ADD_INIT+i) + ADD_INIT)>>>VALUE));
409
}
410
411
test_srac_add(a0, a1);
412
for (int i=0; i<ARRLEN; i++) {
413
errn += verify("test_srac_add: ", i, a0[i], (byte)(((byte)(ADD_INIT+i) + ADD_INIT)>>VALUE));
414
}
415
test_srav_add(a0, a1, ADD_INIT);
416
for (int i=0; i<ARRLEN; i++) {
417
errn += verify("test_srav_add: ", i, a0[i], (byte)(((byte)(ADD_INIT+i) + ADD_INIT)>>VALUE));
418
}
419
420
test_sllc_and(a0, a1);
421
for (int i=0; i<ARRLEN; i++) {
422
errn += verify("test_sllc_and: ", i, a0[i], (byte)(((byte)(ADD_INIT+i) & BIT_MASK)<<VALUE));
423
}
424
test_sllv_and(a0, a1, BIT_MASK);
425
for (int i=0; i<ARRLEN; i++) {
426
errn += verify("test_sllv_and: ", i, a0[i], (byte)(((byte)(ADD_INIT+i) & BIT_MASK)<<VALUE));
427
}
428
429
test_srlc_and(a0, a1);
430
for (int i=0; i<ARRLEN; i++) {
431
errn += verify("test_srlc_and: ", i, a0[i], (byte)(((byte)(ADD_INIT+i) & BIT_MASK)>>>VALUE));
432
}
433
test_srlv_and(a0, a1, BIT_MASK);
434
for (int i=0; i<ARRLEN; i++) {
435
errn += verify("test_srlv_and: ", i, a0[i], (byte)(((byte)(ADD_INIT+i) & BIT_MASK)>>>VALUE));
436
}
437
438
test_srac_and(a0, a1);
439
for (int i=0; i<ARRLEN; i++) {
440
errn += verify("test_srac_and: ", i, a0[i], (byte)(((byte)(ADD_INIT+i) & BIT_MASK)>>VALUE));
441
}
442
test_srav_and(a0, a1, BIT_MASK);
443
for (int i=0; i<ARRLEN; i++) {
444
errn += verify("test_srav_and: ", i, a0[i], (byte)(((byte)(ADD_INIT+i) & BIT_MASK)>>VALUE));
445
}
446
447
test_pack2(p2, a1);
448
for (int i=0; i<ARRLEN/2; i++) {
449
errn += verify("test_pack2: ", i, p2[i], (short)(((short)(ADD_INIT+2*i) & 0xFF) | ((short)(ADD_INIT+2*i+1) << 8)));
450
}
451
for (int i=0; i<ARRLEN; i++) {
452
a0[i] = -1;
453
}
454
test_unpack2(a0, p2);
455
for (int i=0; i<(ARRLEN&(-2)); i++) {
456
errn += verify("test_unpack2: ", i, a0[i], (byte)(ADD_INIT+i));
457
}
458
459
test_pack2_swap(p2, a1);
460
for (int i=0; i<ARRLEN/2; i++) {
461
errn += verify("test_pack2_swap: ", i, p2[i], (short)(((short)(ADD_INIT+2*i+1) & 0xFF) | ((short)(ADD_INIT+2*i) << 8)));
462
}
463
for (int i=0; i<ARRLEN; i++) {
464
a0[i] = -1;
465
}
466
test_unpack2_swap(a0, p2);
467
for (int i=0; i<(ARRLEN&(-2)); i++) {
468
errn += verify("test_unpack2_swap: ", i, a0[i], (byte)(ADD_INIT+i));
469
}
470
471
test_pack4(p4, a1);
472
for (int i=0; i<ARRLEN/4; i++) {
473
errn += verify("test_pack4: ", i, p4[i], ((int)(ADD_INIT+4*i+0) & 0xFF) |
474
(((int)(ADD_INIT+4*i+1) & 0xFF) << 8) |
475
(((int)(ADD_INIT+4*i+2) & 0xFF) << 16) |
476
(((int)(ADD_INIT+4*i+3) & 0xFF) << 24));
477
}
478
for (int i=0; i<ARRLEN; i++) {
479
a0[i] = -1;
480
}
481
test_unpack4(a0, p4);
482
for (int i=0; i<(ARRLEN&(-4)); i++) {
483
errn += verify("test_unpack4: ", i, a0[i], (byte)(ADD_INIT+i));
484
}
485
486
test_pack4_swap(p4, a1);
487
for (int i=0; i<ARRLEN/4; i++) {
488
errn += verify("test_pack4_swap: ", i, p4[i], ((int)(ADD_INIT+4*i+3) & 0xFF) |
489
(((int)(ADD_INIT+4*i+2) & 0xFF) << 8) |
490
(((int)(ADD_INIT+4*i+1) & 0xFF) << 16) |
491
(((int)(ADD_INIT+4*i+0) & 0xFF) << 24));
492
}
493
for (int i=0; i<ARRLEN; i++) {
494
a0[i] = -1;
495
}
496
test_unpack4_swap(a0, p4);
497
for (int i=0; i<(ARRLEN&(-4)); i++) {
498
errn += verify("test_unpack4_swap: ", i, a0[i], (byte)(ADD_INIT+i));
499
}
500
501
test_pack8(p8, a1);
502
for (int i=0; i<ARRLEN/8; i++) {
503
errn += verify("test_pack8: ", i, p8[i], ((long)(ADD_INIT+8*i+0) & 0xFFl) |
504
(((long)(ADD_INIT+8*i+1) & 0xFFl) << 8) |
505
(((long)(ADD_INIT+8*i+2) & 0xFFl) << 16) |
506
(((long)(ADD_INIT+8*i+3) & 0xFFl) << 24) |
507
(((long)(ADD_INIT+8*i+4) & 0xFFl) << 32) |
508
(((long)(ADD_INIT+8*i+5) & 0xFFl) << 40) |
509
(((long)(ADD_INIT+8*i+6) & 0xFFl) << 48) |
510
(((long)(ADD_INIT+8*i+7) & 0xFFl) << 56));
511
}
512
for (int i=0; i<ARRLEN; i++) {
513
a0[i] = -1;
514
}
515
test_unpack8(a0, p8);
516
for (int i=0; i<(ARRLEN&(-8)); i++) {
517
errn += verify("test_unpack8: ", i, a0[i], (byte)(ADD_INIT+i));
518
}
519
520
test_pack8_swap(p8, a1);
521
for (int i=0; i<ARRLEN/8; i++) {
522
errn += verify("test_pack8_swap: ", i, p8[i], ((long)(ADD_INIT+8*i+7) & 0xFFl) |
523
(((long)(ADD_INIT+8*i+6) & 0xFFl) << 8) |
524
(((long)(ADD_INIT+8*i+5) & 0xFFl) << 16) |
525
(((long)(ADD_INIT+8*i+4) & 0xFFl) << 24) |
526
(((long)(ADD_INIT+8*i+3) & 0xFFl) << 32) |
527
(((long)(ADD_INIT+8*i+2) & 0xFFl) << 40) |
528
(((long)(ADD_INIT+8*i+1) & 0xFFl) << 48) |
529
(((long)(ADD_INIT+8*i+0) & 0xFFl) << 56));
530
}
531
for (int i=0; i<ARRLEN; i++) {
532
a0[i] = -1;
533
}
534
test_unpack8_swap(a0, p8);
535
for (int i=0; i<(ARRLEN&(-8)); i++) {
536
errn += verify("test_unpack8_swap: ", i, a0[i], (byte)(ADD_INIT+i));
537
}
538
539
}
540
541
if (errn > 0)
542
return errn;
543
544
System.out.println("Time");
545
long start, end;
546
547
start = System.currentTimeMillis();
548
for (int i=0; i<ITERS; i++) {
549
test_sum(a1);
550
}
551
end = System.currentTimeMillis();
552
System.out.println("test_sum: " + (end - start));
553
554
start = System.currentTimeMillis();
555
for (int i=0; i<ITERS; i++) {
556
test_addc(a0, a1);
557
}
558
end = System.currentTimeMillis();
559
System.out.println("test_addc: " + (end - start));
560
start = System.currentTimeMillis();
561
for (int i=0; i<ITERS; i++) {
562
test_addv(a0, a1, (byte)VALUE);
563
}
564
end = System.currentTimeMillis();
565
System.out.println("test_addv: " + (end - start));
566
start = System.currentTimeMillis();
567
for (int i=0; i<ITERS; i++) {
568
test_adda(a0, a1, a2);
569
}
570
end = System.currentTimeMillis();
571
System.out.println("test_adda: " + (end - start));
572
573
start = System.currentTimeMillis();
574
for (int i=0; i<ITERS; i++) {
575
test_subc(a0, a1);
576
}
577
end = System.currentTimeMillis();
578
System.out.println("test_subc: " + (end - start));
579
start = System.currentTimeMillis();
580
for (int i=0; i<ITERS; i++) {
581
test_subv(a0, a1, (byte)VALUE);
582
}
583
end = System.currentTimeMillis();
584
System.out.println("test_subv: " + (end - start));
585
start = System.currentTimeMillis();
586
for (int i=0; i<ITERS; i++) {
587
test_suba(a0, a1, a2);
588
}
589
end = System.currentTimeMillis();
590
System.out.println("test_suba: " + (end - start));
591
592
start = System.currentTimeMillis();
593
for (int i=0; i<ITERS; i++) {
594
test_mulc(a0, a1);
595
}
596
end = System.currentTimeMillis();
597
System.out.println("test_mulc: " + (end - start));
598
start = System.currentTimeMillis();
599
for (int i=0; i<ITERS; i++) {
600
test_mulv(a0, a1, (byte)VALUE);
601
}
602
end = System.currentTimeMillis();
603
System.out.println("test_mulv: " + (end - start));
604
start = System.currentTimeMillis();
605
for (int i=0; i<ITERS; i++) {
606
test_mula(a0, a1, a2);
607
}
608
end = System.currentTimeMillis();
609
System.out.println("test_mula: " + (end - start));
610
611
start = System.currentTimeMillis();
612
for (int i=0; i<ITERS; i++) {
613
test_divc(a0, a1);
614
}
615
end = System.currentTimeMillis();
616
System.out.println("test_divc: " + (end - start));
617
start = System.currentTimeMillis();
618
for (int i=0; i<ITERS; i++) {
619
test_divv(a0, a1, (byte)VALUE);
620
}
621
end = System.currentTimeMillis();
622
System.out.println("test_divv: " + (end - start));
623
start = System.currentTimeMillis();
624
for (int i=0; i<ITERS; i++) {
625
test_diva(a0, a1, a2);
626
}
627
end = System.currentTimeMillis();
628
System.out.println("test_diva: " + (end - start));
629
630
start = System.currentTimeMillis();
631
for (int i=0; i<ITERS; i++) {
632
test_mulc_n(a0, a1);
633
}
634
end = System.currentTimeMillis();
635
System.out.println("test_mulc_n: " + (end - start));
636
start = System.currentTimeMillis();
637
for (int i=0; i<ITERS; i++) {
638
test_mulv(a0, a1, (byte)-VALUE);
639
}
640
end = System.currentTimeMillis();
641
System.out.println("test_mulv_n: " + (end - start));
642
start = System.currentTimeMillis();
643
for (int i=0; i<ITERS; i++) {
644
test_mula(a0, a1, a3);
645
}
646
end = System.currentTimeMillis();
647
System.out.println("test_mula_n: " + (end - start));
648
649
start = System.currentTimeMillis();
650
for (int i=0; i<ITERS; i++) {
651
test_divc_n(a0, a1);
652
}
653
end = System.currentTimeMillis();
654
System.out.println("test_divc_n: " + (end - start));
655
start = System.currentTimeMillis();
656
for (int i=0; i<ITERS; i++) {
657
test_divv(a0, a1, (byte)-VALUE);
658
}
659
end = System.currentTimeMillis();
660
System.out.println("test_divv_n: " + (end - start));
661
start = System.currentTimeMillis();
662
for (int i=0; i<ITERS; i++) {
663
test_diva(a0, a1, a3);
664
}
665
end = System.currentTimeMillis();
666
System.out.println("test_diva_n: " + (end - start));
667
668
start = System.currentTimeMillis();
669
for (int i=0; i<ITERS; i++) {
670
test_andc(a0, a1);
671
}
672
end = System.currentTimeMillis();
673
System.out.println("test_andc: " + (end - start));
674
start = System.currentTimeMillis();
675
for (int i=0; i<ITERS; i++) {
676
test_andv(a0, a1, (byte)BIT_MASK);
677
}
678
end = System.currentTimeMillis();
679
System.out.println("test_andv: " + (end - start));
680
start = System.currentTimeMillis();
681
for (int i=0; i<ITERS; i++) {
682
test_anda(a0, a1, a4);
683
}
684
end = System.currentTimeMillis();
685
System.out.println("test_anda: " + (end - start));
686
687
start = System.currentTimeMillis();
688
for (int i=0; i<ITERS; i++) {
689
test_orc(a0, a1);
690
}
691
end = System.currentTimeMillis();
692
System.out.println("test_orc: " + (end - start));
693
start = System.currentTimeMillis();
694
for (int i=0; i<ITERS; i++) {
695
test_orv(a0, a1, (byte)BIT_MASK);
696
}
697
end = System.currentTimeMillis();
698
System.out.println("test_orv: " + (end - start));
699
start = System.currentTimeMillis();
700
for (int i=0; i<ITERS; i++) {
701
test_ora(a0, a1, a4);
702
}
703
end = System.currentTimeMillis();
704
System.out.println("test_ora: " + (end - start));
705
706
start = System.currentTimeMillis();
707
for (int i=0; i<ITERS; i++) {
708
test_xorc(a0, a1);
709
}
710
end = System.currentTimeMillis();
711
System.out.println("test_xorc: " + (end - start));
712
start = System.currentTimeMillis();
713
for (int i=0; i<ITERS; i++) {
714
test_xorv(a0, a1, (byte)BIT_MASK);
715
}
716
end = System.currentTimeMillis();
717
System.out.println("test_xorv: " + (end - start));
718
start = System.currentTimeMillis();
719
for (int i=0; i<ITERS; i++) {
720
test_xora(a0, a1, a4);
721
}
722
end = System.currentTimeMillis();
723
System.out.println("test_xora: " + (end - start));
724
725
start = System.currentTimeMillis();
726
for (int i=0; i<ITERS; i++) {
727
test_sllc(a0, a1);
728
}
729
end = System.currentTimeMillis();
730
System.out.println("test_sllc: " + (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: " + (end - start));
737
738
start = System.currentTimeMillis();
739
for (int i=0; i<ITERS; i++) {
740
test_srlc(a0, a1);
741
}
742
end = System.currentTimeMillis();
743
System.out.println("test_srlc: " + (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: " + (end - start));
750
751
start = System.currentTimeMillis();
752
for (int i=0; i<ITERS; i++) {
753
test_srac(a0, a1);
754
}
755
end = System.currentTimeMillis();
756
System.out.println("test_srac: " + (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: " + (end - start));
763
764
start = System.currentTimeMillis();
765
for (int i=0; i<ITERS; i++) {
766
test_sllc_n(a0, a1);
767
}
768
end = System.currentTimeMillis();
769
System.out.println("test_sllc_n: " + (end - start));
770
start = System.currentTimeMillis();
771
for (int i=0; i<ITERS; i++) {
772
test_sllv(a0, a1, -VALUE);
773
}
774
end = System.currentTimeMillis();
775
System.out.println("test_sllv_n: " + (end - start));
776
777
start = System.currentTimeMillis();
778
for (int i=0; i<ITERS; i++) {
779
test_srlc_n(a0, a1);
780
}
781
end = System.currentTimeMillis();
782
System.out.println("test_srlc_n: " + (end - start));
783
start = System.currentTimeMillis();
784
for (int i=0; i<ITERS; i++) {
785
test_srlv(a0, a1, -VALUE);
786
}
787
end = System.currentTimeMillis();
788
System.out.println("test_srlv_n: " + (end - start));
789
790
start = System.currentTimeMillis();
791
for (int i=0; i<ITERS; i++) {
792
test_srac_n(a0, a1);
793
}
794
end = System.currentTimeMillis();
795
System.out.println("test_srac_n: " + (end - start));
796
start = System.currentTimeMillis();
797
for (int i=0; i<ITERS; i++) {
798
test_srav(a0, a1, -VALUE);
799
}
800
end = System.currentTimeMillis();
801
System.out.println("test_srav_n: " + (end - start));
802
803
start = System.currentTimeMillis();
804
for (int i=0; i<ITERS; i++) {
805
test_sllc_o(a0, a1);
806
}
807
end = System.currentTimeMillis();
808
System.out.println("test_sllc_o: " + (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_o: " + (end - start));
815
816
start = System.currentTimeMillis();
817
for (int i=0; i<ITERS; i++) {
818
test_srlc_o(a0, a1);
819
}
820
end = System.currentTimeMillis();
821
System.out.println("test_srlc_o: " + (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_o: " + (end - start));
828
829
start = System.currentTimeMillis();
830
for (int i=0; i<ITERS; i++) {
831
test_srac_o(a0, a1);
832
}
833
end = System.currentTimeMillis();
834
System.out.println("test_srac_o: " + (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_o: " + (end - start));
841
842
start = System.currentTimeMillis();
843
for (int i=0; i<ITERS; i++) {
844
test_sllc_on(a0, a1);
845
}
846
end = System.currentTimeMillis();
847
System.out.println("test_sllc_on: " + (end - start));
848
start = System.currentTimeMillis();
849
for (int i=0; i<ITERS; i++) {
850
test_sllv(a0, a1, -SHIFT);
851
}
852
end = System.currentTimeMillis();
853
System.out.println("test_sllv_on: " + (end - start));
854
855
start = System.currentTimeMillis();
856
for (int i=0; i<ITERS; i++) {
857
test_srlc_on(a0, a1);
858
}
859
end = System.currentTimeMillis();
860
System.out.println("test_srlc_on: " + (end - start));
861
start = System.currentTimeMillis();
862
for (int i=0; i<ITERS; i++) {
863
test_srlv(a0, a1, -SHIFT);
864
}
865
end = System.currentTimeMillis();
866
System.out.println("test_srlv_on: " + (end - start));
867
868
start = System.currentTimeMillis();
869
for (int i=0; i<ITERS; i++) {
870
test_srac_on(a0, a1);
871
}
872
end = System.currentTimeMillis();
873
System.out.println("test_srac_on: " + (end - start));
874
start = System.currentTimeMillis();
875
for (int i=0; i<ITERS; i++) {
876
test_srav(a0, a1, -SHIFT);
877
}
878
end = System.currentTimeMillis();
879
System.out.println("test_srav_on: " + (end - start));
880
881
start = System.currentTimeMillis();
882
for (int i=0; i<ITERS; i++) {
883
test_sllc_add(a0, a1);
884
}
885
end = System.currentTimeMillis();
886
System.out.println("test_sllc_add: " + (end - start));
887
start = System.currentTimeMillis();
888
for (int i=0; i<ITERS; i++) {
889
test_sllv_add(a0, a1, ADD_INIT);
890
}
891
end = System.currentTimeMillis();
892
System.out.println("test_sllv_add: " + (end - start));
893
894
start = System.currentTimeMillis();
895
for (int i=0; i<ITERS; i++) {
896
test_srlc_add(a0, a1);
897
}
898
end = System.currentTimeMillis();
899
System.out.println("test_srlc_add: " + (end - start));
900
start = System.currentTimeMillis();
901
for (int i=0; i<ITERS; i++) {
902
test_srlv_add(a0, a1, ADD_INIT);
903
}
904
end = System.currentTimeMillis();
905
System.out.println("test_srlv_add: " + (end - start));
906
907
start = System.currentTimeMillis();
908
for (int i=0; i<ITERS; i++) {
909
test_srac_add(a0, a1);
910
}
911
end = System.currentTimeMillis();
912
System.out.println("test_srac_add: " + (end - start));
913
start = System.currentTimeMillis();
914
for (int i=0; i<ITERS; i++) {
915
test_srav_add(a0, a1, ADD_INIT);
916
}
917
end = System.currentTimeMillis();
918
System.out.println("test_srav_add: " + (end - start));
919
920
start = System.currentTimeMillis();
921
for (int i=0; i<ITERS; i++) {
922
test_sllc_and(a0, a1);
923
}
924
end = System.currentTimeMillis();
925
System.out.println("test_sllc_and: " + (end - start));
926
start = System.currentTimeMillis();
927
for (int i=0; i<ITERS; i++) {
928
test_sllv_and(a0, a1, BIT_MASK);
929
}
930
end = System.currentTimeMillis();
931
System.out.println("test_sllv_and: " + (end - start));
932
933
start = System.currentTimeMillis();
934
for (int i=0; i<ITERS; i++) {
935
test_srlc_and(a0, a1);
936
}
937
end = System.currentTimeMillis();
938
System.out.println("test_srlc_and: " + (end - start));
939
start = System.currentTimeMillis();
940
for (int i=0; i<ITERS; i++) {
941
test_srlv_and(a0, a1, BIT_MASK);
942
}
943
end = System.currentTimeMillis();
944
System.out.println("test_srlv_and: " + (end - start));
945
946
start = System.currentTimeMillis();
947
for (int i=0; i<ITERS; i++) {
948
test_srac_and(a0, a1);
949
}
950
end = System.currentTimeMillis();
951
System.out.println("test_srac_and: " + (end - start));
952
start = System.currentTimeMillis();
953
for (int i=0; i<ITERS; i++) {
954
test_srav_and(a0, a1, BIT_MASK);
955
}
956
end = System.currentTimeMillis();
957
System.out.println("test_srav_and: " + (end - start));
958
959
start = System.currentTimeMillis();
960
for (int i=0; i<ITERS; i++) {
961
test_pack2(p2, a1);
962
}
963
end = System.currentTimeMillis();
964
System.out.println("test_pack2: " + (end - start));
965
start = System.currentTimeMillis();
966
for (int i=0; i<ITERS; i++) {
967
test_unpack2(a0, p2);
968
}
969
end = System.currentTimeMillis();
970
System.out.println("test_unpack2: " + (end - start));
971
start = System.currentTimeMillis();
972
for (int i=0; i<ITERS; i++) {
973
test_pack2_swap(p2, a1);
974
}
975
end = System.currentTimeMillis();
976
System.out.println("test_pack2_swap: " + (end - start));
977
start = System.currentTimeMillis();
978
for (int i=0; i<ITERS; i++) {
979
test_unpack2_swap(a0, p2);
980
}
981
end = System.currentTimeMillis();
982
System.out.println("test_unpack2_swap: " + (end - start));
983
984
start = System.currentTimeMillis();
985
for (int i=0; i<ITERS; i++) {
986
test_pack4(p4, a1);
987
}
988
end = System.currentTimeMillis();
989
System.out.println("test_pack4: " + (end - start));
990
start = System.currentTimeMillis();
991
for (int i=0; i<ITERS; i++) {
992
test_unpack4(a0, p4);
993
}
994
end = System.currentTimeMillis();
995
System.out.println("test_unpack4: " + (end - start));
996
start = System.currentTimeMillis();
997
for (int i=0; i<ITERS; i++) {
998
test_pack4_swap(p4, a1);
999
}
1000
end = System.currentTimeMillis();
1001
System.out.println("test_pack4_swap: " + (end - start));
1002
start = System.currentTimeMillis();
1003
for (int i=0; i<ITERS; i++) {
1004
test_unpack4_swap(a0, p4);
1005
}
1006
end = System.currentTimeMillis();
1007
System.out.println("test_unpack4_swap: " + (end - start));
1008
1009
start = System.currentTimeMillis();
1010
for (int i=0; i<ITERS; i++) {
1011
test_pack8(p8, a1);
1012
}
1013
end = System.currentTimeMillis();
1014
System.out.println("test_pack8: " + (end - start));
1015
start = System.currentTimeMillis();
1016
for (int i=0; i<ITERS; i++) {
1017
test_unpack8(a0, p8);
1018
}
1019
end = System.currentTimeMillis();
1020
System.out.println("test_unpack8: " + (end - start));
1021
start = System.currentTimeMillis();
1022
for (int i=0; i<ITERS; i++) {
1023
test_pack8_swap(p8, a1);
1024
}
1025
end = System.currentTimeMillis();
1026
System.out.println("test_pack8_swap: " + (end - start));
1027
start = System.currentTimeMillis();
1028
for (int i=0; i<ITERS; i++) {
1029
test_unpack8_swap(a0, p8);
1030
}
1031
end = System.currentTimeMillis();
1032
System.out.println("test_unpack8_swap: " + (end - start));
1033
1034
return errn;
1035
}
1036
1037
static int test_sum(byte[] a1) {
1038
int sum = 0;
1039
for (int i = 0; i < a1.length; i+=1) {
1040
sum += a1[i];
1041
}
1042
return sum;
1043
}
1044
1045
static void test_addc(byte[] a0, byte[] a1) {
1046
for (int i = 0; i < a0.length; i+=1) {
1047
a0[i] = (byte)(a1[i]+VALUE);
1048
}
1049
}
1050
static void test_addv(byte[] a0, byte[] a1, byte b) {
1051
for (int i = 0; i < a0.length; i+=1) {
1052
a0[i] = (byte)(a1[i]+b);
1053
}
1054
}
1055
static void test_adda(byte[] a0, byte[] a1, byte[] a2) {
1056
for (int i = 0; i < a0.length; i+=1) {
1057
a0[i] = (byte)(a1[i]+a2[i]);
1058
}
1059
}
1060
1061
static void test_subc(byte[] a0, byte[] a1) {
1062
for (int i = 0; i < a0.length; i+=1) {
1063
a0[i] = (byte)(a1[i]-VALUE);
1064
}
1065
}
1066
static void test_subv(byte[] a0, byte[] a1, byte b) {
1067
for (int i = 0; i < a0.length; i+=1) {
1068
a0[i] = (byte)(a1[i]-b);
1069
}
1070
}
1071
static void test_suba(byte[] a0, byte[] a1, byte[] a2) {
1072
for (int i = 0; i < a0.length; i+=1) {
1073
a0[i] = (byte)(a1[i]-a2[i]);
1074
}
1075
}
1076
1077
static void test_mulc(byte[] a0, byte[] a1) {
1078
for (int i = 0; i < a0.length; i+=1) {
1079
a0[i] = (byte)(a1[i]*VALUE);
1080
}
1081
}
1082
static void test_mulc_n(byte[] a0, byte[] a1) {
1083
for (int i = 0; i < a0.length; i+=1) {
1084
a0[i] = (byte)(a1[i]*(-VALUE));
1085
}
1086
}
1087
static void test_mulv(byte[] a0, byte[] a1, byte b) {
1088
for (int i = 0; i < a0.length; i+=1) {
1089
a0[i] = (byte)(a1[i]*b);
1090
}
1091
}
1092
static void test_mula(byte[] a0, byte[] a1, byte[] a2) {
1093
for (int i = 0; i < a0.length; i+=1) {
1094
a0[i] = (byte)(a1[i]*a2[i]);
1095
}
1096
}
1097
1098
static void test_divc(byte[] a0, byte[] a1) {
1099
for (int i = 0; i < a0.length; i+=1) {
1100
a0[i] = (byte)(a1[i]/VALUE);
1101
}
1102
}
1103
static void test_divc_n(byte[] a0, byte[] a1) {
1104
for (int i = 0; i < a0.length; i+=1) {
1105
a0[i] = (byte)(a1[i]/(-VALUE));
1106
}
1107
}
1108
static void test_divv(byte[] a0, byte[] a1, byte b) {
1109
for (int i = 0; i < a0.length; i+=1) {
1110
a0[i] = (byte)(a1[i]/b);
1111
}
1112
}
1113
static void test_diva(byte[] a0, byte[] a1, byte[] a2) {
1114
for (int i = 0; i < a0.length; i+=1) {
1115
a0[i] = (byte)(a1[i]/a2[i]);
1116
}
1117
}
1118
1119
static void test_andc(byte[] a0, byte[] a1) {
1120
for (int i = 0; i < a0.length; i+=1) {
1121
a0[i] = (byte)(a1[i]&BIT_MASK);
1122
}
1123
}
1124
static void test_andv(byte[] a0, byte[] a1, byte b) {
1125
for (int i = 0; i < a0.length; i+=1) {
1126
a0[i] = (byte)(a1[i]&b);
1127
}
1128
}
1129
static void test_anda(byte[] a0, byte[] a1, byte[] a2) {
1130
for (int i = 0; i < a0.length; i+=1) {
1131
a0[i] = (byte)(a1[i]&a2[i]);
1132
}
1133
}
1134
1135
static void test_orc(byte[] a0, byte[] a1) {
1136
for (int i = 0; i < a0.length; i+=1) {
1137
a0[i] = (byte)(a1[i]|BIT_MASK);
1138
}
1139
}
1140
static void test_orv(byte[] a0, byte[] a1, byte b) {
1141
for (int i = 0; i < a0.length; i+=1) {
1142
a0[i] = (byte)(a1[i]|b);
1143
}
1144
}
1145
static void test_ora(byte[] a0, byte[] a1, byte[] a2) {
1146
for (int i = 0; i < a0.length; i+=1) {
1147
a0[i] = (byte)(a1[i]|a2[i]);
1148
}
1149
}
1150
1151
static void test_xorc(byte[] a0, byte[] a1) {
1152
for (int i = 0; i < a0.length; i+=1) {
1153
a0[i] = (byte)(a1[i]^BIT_MASK);
1154
}
1155
}
1156
static void test_xorv(byte[] a0, byte[] a1, byte b) {
1157
for (int i = 0; i < a0.length; i+=1) {
1158
a0[i] = (byte)(a1[i]^b);
1159
}
1160
}
1161
static void test_xora(byte[] a0, byte[] a1, byte[] a2) {
1162
for (int i = 0; i < a0.length; i+=1) {
1163
a0[i] = (byte)(a1[i]^a2[i]);
1164
}
1165
}
1166
1167
static void test_sllc(byte[] a0, byte[] a1) {
1168
for (int i = 0; i < a0.length; i+=1) {
1169
a0[i] = (byte)(a1[i]<<VALUE);
1170
}
1171
}
1172
static void test_sllc_n(byte[] a0, byte[] a1) {
1173
for (int i = 0; i < a0.length; i+=1) {
1174
a0[i] = (byte)(a1[i]<<(-VALUE));
1175
}
1176
}
1177
static void test_sllc_o(byte[] a0, byte[] a1) {
1178
for (int i = 0; i < a0.length; i+=1) {
1179
a0[i] = (byte)(a1[i]<<SHIFT);
1180
}
1181
}
1182
static void test_sllc_on(byte[] a0, byte[] a1) {
1183
for (int i = 0; i < a0.length; i+=1) {
1184
a0[i] = (byte)(a1[i]<<(-SHIFT));
1185
}
1186
}
1187
static void test_sllv(byte[] a0, byte[] a1, int b) {
1188
for (int i = 0; i < a0.length; i+=1) {
1189
a0[i] = (byte)(a1[i]<<b);
1190
}
1191
}
1192
static void test_sllc_add(byte[] a0, byte[] a1) {
1193
for (int i = 0; i < a0.length; i+=1) {
1194
a0[i] = (byte)((a1[i] + ADD_INIT)<<VALUE);
1195
}
1196
}
1197
static void test_sllv_add(byte[] a0, byte[] a1, int b) {
1198
for (int i = 0; i < a0.length; i+=1) {
1199
a0[i] = (byte)((a1[i] + b)<<VALUE);
1200
}
1201
}
1202
static void test_sllc_and(byte[] a0, byte[] a1) {
1203
for (int i = 0; i < a0.length; i+=1) {
1204
a0[i] = (byte)((a1[i] & BIT_MASK)<<VALUE);
1205
}
1206
}
1207
static void test_sllv_and(byte[] a0, byte[] a1, int b) {
1208
for (int i = 0; i < a0.length; i+=1) {
1209
a0[i] = (byte)((a1[i] & b)<<VALUE);
1210
}
1211
}
1212
1213
static void test_srlc(byte[] a0, byte[] a1) {
1214
for (int i = 0; i < a0.length; i+=1) {
1215
a0[i] = (byte)(a1[i]>>>VALUE);
1216
}
1217
}
1218
static void test_srlc_n(byte[] a0, byte[] a1) {
1219
for (int i = 0; i < a0.length; i+=1) {
1220
a0[i] = (byte)(a1[i]>>>(-VALUE));
1221
}
1222
}
1223
static void test_srlc_o(byte[] a0, byte[] a1) {
1224
for (int i = 0; i < a0.length; i+=1) {
1225
a0[i] = (byte)(a1[i]>>>SHIFT);
1226
}
1227
}
1228
static void test_srlc_on(byte[] a0, byte[] a1) {
1229
for (int i = 0; i < a0.length; i+=1) {
1230
a0[i] = (byte)(a1[i]>>>(-SHIFT));
1231
}
1232
}
1233
static void test_srlv(byte[] a0, byte[] a1, int b) {
1234
for (int i = 0; i < a0.length; i+=1) {
1235
a0[i] = (byte)(a1[i]>>>b);
1236
}
1237
}
1238
static void test_srlc_add(byte[] a0, byte[] a1) {
1239
for (int i = 0; i < a0.length; i+=1) {
1240
a0[i] = (byte)((a1[i] + ADD_INIT)>>>VALUE);
1241
}
1242
}
1243
static void test_srlv_add(byte[] a0, byte[] a1, int b) {
1244
for (int i = 0; i < a0.length; i+=1) {
1245
a0[i] = (byte)((a1[i] + b)>>>VALUE);
1246
}
1247
}
1248
static void test_srlc_and(byte[] a0, byte[] a1) {
1249
for (int i = 0; i < a0.length; i+=1) {
1250
a0[i] = (byte)((a1[i] & BIT_MASK)>>>VALUE);
1251
}
1252
}
1253
static void test_srlv_and(byte[] a0, byte[] a1, int b) {
1254
for (int i = 0; i < a0.length; i+=1) {
1255
a0[i] = (byte)((a1[i] & b)>>>VALUE);
1256
}
1257
}
1258
1259
static void test_srac(byte[] a0, byte[] a1) {
1260
for (int i = 0; i < a0.length; i+=1) {
1261
a0[i] = (byte)(a1[i]>>VALUE);
1262
}
1263
}
1264
static void test_srac_n(byte[] a0, byte[] a1) {
1265
for (int i = 0; i < a0.length; i+=1) {
1266
a0[i] = (byte)(a1[i]>>(-VALUE));
1267
}
1268
}
1269
static void test_srac_o(byte[] a0, byte[] a1) {
1270
for (int i = 0; i < a0.length; i+=1) {
1271
a0[i] = (byte)(a1[i]>>SHIFT);
1272
}
1273
}
1274
static void test_srac_on(byte[] a0, byte[] a1) {
1275
for (int i = 0; i < a0.length; i+=1) {
1276
a0[i] = (byte)(a1[i]>>(-SHIFT));
1277
}
1278
}
1279
static void test_srav(byte[] a0, byte[] a1, int b) {
1280
for (int i = 0; i < a0.length; i+=1) {
1281
a0[i] = (byte)(a1[i]>>b);
1282
}
1283
}
1284
static void test_srac_add(byte[] a0, byte[] a1) {
1285
for (int i = 0; i < a0.length; i+=1) {
1286
a0[i] = (byte)((a1[i] + ADD_INIT)>>VALUE);
1287
}
1288
}
1289
static void test_srav_add(byte[] a0, byte[] a1, int b) {
1290
for (int i = 0; i < a0.length; i+=1) {
1291
a0[i] = (byte)((a1[i] + b)>>VALUE);
1292
}
1293
}
1294
static void test_srac_and(byte[] a0, byte[] a1) {
1295
for (int i = 0; i < a0.length; i+=1) {
1296
a0[i] = (byte)((a1[i] & BIT_MASK)>>VALUE);
1297
}
1298
}
1299
static void test_srav_and(byte[] a0, byte[] a1, int b) {
1300
for (int i = 0; i < a0.length; i+=1) {
1301
a0[i] = (byte)((a1[i] & b)>>VALUE);
1302
}
1303
}
1304
1305
static void test_pack2(short[] p2, byte[] a1) {
1306
if (p2.length*2 > a1.length) return;
1307
for (int i = 0; i < p2.length; i+=1) {
1308
short l0 = (short)a1[i*2+0];
1309
short l1 = (short)a1[i*2+1];
1310
p2[i] = (short)((l1 << 8) | (l0 & 0xFF));
1311
}
1312
}
1313
static void test_unpack2(byte[] a0, short[] p2) {
1314
if (p2.length*2 > a0.length) return;
1315
for (int i = 0; i < p2.length; i+=1) {
1316
short l = p2[i];
1317
a0[i*2+0] = (byte)(l & 0xFF);
1318
a0[i*2+1] = (byte)(l >> 8);
1319
}
1320
}
1321
static void test_pack2_swap(short[] p2, byte[] a1) {
1322
if (p2.length*2 > a1.length) return;
1323
for (int i = 0; i < p2.length; i+=1) {
1324
short l0 = (short)a1[i*2+0];
1325
short l1 = (short)a1[i*2+1];
1326
p2[i] = (short)((l0 << 8) | (l1 & 0xFF));
1327
}
1328
}
1329
static void test_unpack2_swap(byte[] a0, short[] p2) {
1330
if (p2.length*2 > a0.length) return;
1331
for (int i = 0; i < p2.length; i+=1) {
1332
short l = p2[i];
1333
a0[i*2+0] = (byte)(l >> 8);
1334
a0[i*2+1] = (byte)(l & 0xFF);
1335
}
1336
}
1337
1338
static void test_pack4(int[] p4, byte[] a1) {
1339
if (p4.length*4 > a1.length) return;
1340
for (int i = 0; i < p4.length; i+=1) {
1341
int l0 = (int)a1[i*4+0];
1342
int l1 = (int)a1[i*4+1];
1343
int l2 = (int)a1[i*4+2];
1344
int l3 = (int)a1[i*4+3];
1345
p4[i] = (l0 & 0xFF) |
1346
((l1 & 0xFF) << 8) |
1347
((l2 & 0xFF) << 16) |
1348
((l3 & 0xFF) << 24);
1349
}
1350
}
1351
static void test_unpack4(byte[] a0, int[] p4) {
1352
if (p4.length*4 > a0.length) return;
1353
for (int i = 0; i < p4.length; i+=1) {
1354
int l = p4[i];
1355
a0[i*4+0] = (byte)(l & 0xFF);
1356
a0[i*4+1] = (byte)(l >> 8);
1357
a0[i*4+2] = (byte)(l >> 16);
1358
a0[i*4+3] = (byte)(l >> 24);
1359
}
1360
}
1361
static void test_pack4_swap(int[] p4, byte[] a1) {
1362
if (p4.length*4 > a1.length) return;
1363
for (int i = 0; i < p4.length; i+=1) {
1364
int l0 = (int)a1[i*4+0];
1365
int l1 = (int)a1[i*4+1];
1366
int l2 = (int)a1[i*4+2];
1367
int l3 = (int)a1[i*4+3];
1368
p4[i] = (l3 & 0xFF) |
1369
((l2 & 0xFF) << 8) |
1370
((l1 & 0xFF) << 16) |
1371
((l0 & 0xFF) << 24);
1372
}
1373
}
1374
static void test_unpack4_swap(byte[] a0, int[] p4) {
1375
if (p4.length*4 > a0.length) return;
1376
for (int i = 0; i < p4.length; i+=1) {
1377
int l = p4[i];
1378
a0[i*4+0] = (byte)(l >> 24);
1379
a0[i*4+1] = (byte)(l >> 16);
1380
a0[i*4+2] = (byte)(l >> 8);
1381
a0[i*4+3] = (byte)(l & 0xFF);
1382
}
1383
}
1384
1385
static void test_pack8(long[] p8, byte[] a1) {
1386
if (p8.length*8 > a1.length) return;
1387
for (int i = 0; i < p8.length; i+=1) {
1388
long l0 = (long)a1[i*8+0];
1389
long l1 = (long)a1[i*8+1];
1390
long l2 = (long)a1[i*8+2];
1391
long l3 = (long)a1[i*8+3];
1392
long l4 = (long)a1[i*8+4];
1393
long l5 = (long)a1[i*8+5];
1394
long l6 = (long)a1[i*8+6];
1395
long l7 = (long)a1[i*8+7];
1396
p8[i] = (l0 & 0xFFl) |
1397
((l1 & 0xFFl) << 8) |
1398
((l2 & 0xFFl) << 16) |
1399
((l3 & 0xFFl) << 24) |
1400
((l4 & 0xFFl) << 32) |
1401
((l5 & 0xFFl) << 40) |
1402
((l6 & 0xFFl) << 48) |
1403
((l7 & 0xFFl) << 56);
1404
}
1405
}
1406
static void test_unpack8(byte[] a0, long[] p8) {
1407
if (p8.length*8 > a0.length) return;
1408
for (int i = 0; i < p8.length; i+=1) {
1409
long l = p8[i];
1410
a0[i*8+0] = (byte)(l & 0xFFl);
1411
a0[i*8+1] = (byte)(l >> 8);
1412
a0[i*8+2] = (byte)(l >> 16);
1413
a0[i*8+3] = (byte)(l >> 24);
1414
a0[i*8+4] = (byte)(l >> 32);
1415
a0[i*8+5] = (byte)(l >> 40);
1416
a0[i*8+6] = (byte)(l >> 48);
1417
a0[i*8+7] = (byte)(l >> 56);
1418
}
1419
}
1420
static void test_pack8_swap(long[] p8, byte[] a1) {
1421
if (p8.length*8 > a1.length) return;
1422
for (int i = 0; i < p8.length; i+=1) {
1423
long l0 = (long)a1[i*8+0];
1424
long l1 = (long)a1[i*8+1];
1425
long l2 = (long)a1[i*8+2];
1426
long l3 = (long)a1[i*8+3];
1427
long l4 = (long)a1[i*8+4];
1428
long l5 = (long)a1[i*8+5];
1429
long l6 = (long)a1[i*8+6];
1430
long l7 = (long)a1[i*8+7];
1431
p8[i] = (l7 & 0xFFl) |
1432
((l6 & 0xFFl) << 8) |
1433
((l5 & 0xFFl) << 16) |
1434
((l4 & 0xFFl) << 24) |
1435
((l3 & 0xFFl) << 32) |
1436
((l2 & 0xFFl) << 40) |
1437
((l1 & 0xFFl) << 48) |
1438
((l0 & 0xFFl) << 56);
1439
}
1440
}
1441
static void test_unpack8_swap(byte[] a0, long[] p8) {
1442
if (p8.length*8 > a0.length) return;
1443
for (int i = 0; i < p8.length; i+=1) {
1444
long l = p8[i];
1445
a0[i*8+0] = (byte)(l >> 56);
1446
a0[i*8+1] = (byte)(l >> 48);
1447
a0[i*8+2] = (byte)(l >> 40);
1448
a0[i*8+3] = (byte)(l >> 32);
1449
a0[i*8+4] = (byte)(l >> 24);
1450
a0[i*8+5] = (byte)(l >> 16);
1451
a0[i*8+6] = (byte)(l >> 8);
1452
a0[i*8+7] = (byte)(l & 0xFFl);
1453
}
1454
}
1455
1456
static int verify(String text, int i, byte elem, byte val) {
1457
if (elem != val) {
1458
System.err.println(text + "[" + i + "] = " + elem + " != " + val);
1459
return 1;
1460
}
1461
return 0;
1462
}
1463
1464
static int verify(String text, int i, short elem, short val) {
1465
if (elem != val) {
1466
System.err.println(text + "[" + i + "] = " + elem + " != " + val);
1467
return 1;
1468
}
1469
return 0;
1470
}
1471
1472
static int verify(String text, int i, int elem, int val) {
1473
if (elem != val) {
1474
System.err.println(text + "[" + i + "] = " + Integer.toHexString(elem) + " != " + Integer.toHexString(val));
1475
return 1;
1476
}
1477
return 0;
1478
}
1479
1480
static int verify(String text, int i, long elem, long val) {
1481
if (elem != val) {
1482
System.err.println(text + "[" + i + "] = " + Long.toHexString(elem) + " != " + Long.toHexString(val));
1483
return 1;
1484
}
1485
return 0;
1486
}
1487
}
1488
1489