71 test_addv(a0, a1, (long)VALUE); |
71 test_addv(a0, a1, (long)VALUE); |
72 test_adda(a0, a1, a2); |
72 test_adda(a0, a1, a2); |
73 test_subc(a0, a1); |
73 test_subc(a0, a1); |
74 test_subv(a0, a1, (long)VALUE); |
74 test_subv(a0, a1, (long)VALUE); |
75 test_suba(a0, a1, a2); |
75 test_suba(a0, a1, a2); |
|
76 |
76 test_mulc(a0, a1); |
77 test_mulc(a0, a1); |
77 test_mulv(a0, a1, (long)VALUE); |
78 test_mulv(a0, a1, (long)VALUE); |
78 test_mula(a0, a1, a2); |
79 test_mula(a0, a1, a2); |
79 test_divc(a0, a1); |
80 test_divc(a0, a1); |
80 test_divv(a0, a1, (long)VALUE); |
81 test_divv(a0, a1, (long)VALUE); |
83 test_mulv(a0, a1, (long)-VALUE); |
84 test_mulv(a0, a1, (long)-VALUE); |
84 test_mula(a0, a1, a3); |
85 test_mula(a0, a1, a3); |
85 test_divc_n(a0, a1); |
86 test_divc_n(a0, a1); |
86 test_divv(a0, a1, (long)-VALUE); |
87 test_divv(a0, a1, (long)-VALUE); |
87 test_diva(a0, a1, a3); |
88 test_diva(a0, a1, a3); |
|
89 |
88 test_andc(a0, a1); |
90 test_andc(a0, a1); |
89 test_andv(a0, a1, (long)BIT_MASK); |
91 test_andv(a0, a1, (long)BIT_MASK); |
90 test_anda(a0, a1, a4); |
92 test_anda(a0, a1, a4); |
91 test_orc(a0, a1); |
93 test_orc(a0, a1); |
92 test_orv(a0, a1, (long)BIT_MASK); |
94 test_orv(a0, a1, (long)BIT_MASK); |
93 test_ora(a0, a1, a4); |
95 test_ora(a0, a1, a4); |
94 test_xorc(a0, a1); |
96 test_xorc(a0, a1); |
95 test_xorv(a0, a1, (long)BIT_MASK); |
97 test_xorv(a0, a1, (long)BIT_MASK); |
96 test_xora(a0, a1, a4); |
98 test_xora(a0, a1, a4); |
|
99 |
97 test_sllc(a0, a1); |
100 test_sllc(a0, a1); |
98 test_sllv(a0, a1, VALUE); |
101 test_sllv(a0, a1, VALUE); |
99 test_srlc(a0, a1); |
102 test_srlc(a0, a1); |
100 test_srlv(a0, a1, VALUE); |
103 test_srlv(a0, a1, VALUE); |
101 test_srac(a0, a1); |
104 test_srac(a0, a1); |
102 test_srav(a0, a1, VALUE); |
105 test_srav(a0, a1, VALUE); |
|
106 |
103 test_sllc_n(a0, a1); |
107 test_sllc_n(a0, a1); |
104 test_sllv(a0, a1, -VALUE); |
108 test_sllv(a0, a1, -VALUE); |
105 test_srlc_n(a0, a1); |
109 test_srlc_n(a0, a1); |
106 test_srlv(a0, a1, -VALUE); |
110 test_srlv(a0, a1, -VALUE); |
107 test_srac_n(a0, a1); |
111 test_srac_n(a0, a1); |
108 test_srav(a0, a1, -VALUE); |
112 test_srav(a0, a1, -VALUE); |
|
113 |
109 test_sllc_o(a0, a1); |
114 test_sllc_o(a0, a1); |
110 test_sllv(a0, a1, SHIFT); |
115 test_sllv(a0, a1, SHIFT); |
111 test_srlc_o(a0, a1); |
116 test_srlc_o(a0, a1); |
112 test_srlv(a0, a1, SHIFT); |
117 test_srlv(a0, a1, SHIFT); |
113 test_srac_o(a0, a1); |
118 test_srac_o(a0, a1); |
114 test_srav(a0, a1, SHIFT); |
119 test_srav(a0, a1, SHIFT); |
|
120 |
115 test_sllc_on(a0, a1); |
121 test_sllc_on(a0, a1); |
116 test_sllv(a0, a1, -SHIFT); |
122 test_sllv(a0, a1, -SHIFT); |
117 test_srlc_on(a0, a1); |
123 test_srlc_on(a0, a1); |
118 test_srlv(a0, a1, -SHIFT); |
124 test_srlv(a0, a1, -SHIFT); |
119 test_srac_on(a0, a1); |
125 test_srac_on(a0, a1); |
120 test_srav(a0, a1, -SHIFT); |
126 test_srav(a0, a1, -SHIFT); |
|
127 |
|
128 test_sllc_add(a0, a1); |
|
129 test_sllv_add(a0, a1, ADD_INIT); |
|
130 test_srlc_add(a0, a1); |
|
131 test_srlv_add(a0, a1, ADD_INIT); |
|
132 test_srac_add(a0, a1); |
|
133 test_srav_add(a0, a1, ADD_INIT); |
|
134 |
|
135 test_sllc_and(a0, a1); |
|
136 test_sllv_and(a0, a1, BIT_MASK); |
|
137 test_srlc_and(a0, a1); |
|
138 test_srlv_and(a0, a1, BIT_MASK); |
|
139 test_srac_and(a0, a1); |
|
140 test_srav_and(a0, a1, BIT_MASK); |
121 } |
141 } |
122 // Test and verify results |
142 // Test and verify results |
123 System.out.println("Verification"); |
143 System.out.println("Verification"); |
124 int errn = 0; |
144 int errn = 0; |
125 { |
145 { |
352 test_srav(a0, a1, -SHIFT); |
372 test_srav(a0, a1, -SHIFT); |
353 for (int i=0; i<ARRLEN; i++) { |
373 for (int i=0; i<ARRLEN; i++) { |
354 errn += verify("test_srav_on: ", i, a0[i], (long)((long)(ADD_INIT+i)>>(-SHIFT))); |
374 errn += verify("test_srav_on: ", i, a0[i], (long)((long)(ADD_INIT+i)>>(-SHIFT))); |
355 } |
375 } |
356 |
376 |
|
377 test_sllc_add(a0, a1); |
|
378 for (int i=0; i<ARRLEN; i++) { |
|
379 errn += verify("test_sllc_add: ", i, a0[i], (long)(((long)(ADD_INIT+i) + ADD_INIT)<<VALUE)); |
|
380 } |
|
381 test_sllv_add(a0, a1, ADD_INIT); |
|
382 for (int i=0; i<ARRLEN; i++) { |
|
383 errn += verify("test_sllv_add: ", i, a0[i], (long)(((long)(ADD_INIT+i) + ADD_INIT)<<VALUE)); |
|
384 } |
|
385 |
|
386 test_srlc_add(a0, a1); |
|
387 for (int i=0; i<ARRLEN; i++) { |
|
388 errn += verify("test_srlc_add: ", i, a0[i], (long)(((long)(ADD_INIT+i) + ADD_INIT)>>>VALUE)); |
|
389 } |
|
390 test_srlv_add(a0, a1, ADD_INIT); |
|
391 for (int i=0; i<ARRLEN; i++) { |
|
392 errn += verify("test_srlv_add: ", i, a0[i], (long)(((long)(ADD_INIT+i) + ADD_INIT)>>>VALUE)); |
|
393 } |
|
394 |
|
395 test_srac_add(a0, a1); |
|
396 for (int i=0; i<ARRLEN; i++) { |
|
397 errn += verify("test_srac_add: ", i, a0[i], (long)(((long)(ADD_INIT+i) + ADD_INIT)>>VALUE)); |
|
398 } |
|
399 test_srav_add(a0, a1, ADD_INIT); |
|
400 for (int i=0; i<ARRLEN; i++) { |
|
401 errn += verify("test_srav_add: ", i, a0[i], (long)(((long)(ADD_INIT+i) + ADD_INIT)>>VALUE)); |
|
402 } |
|
403 |
|
404 test_sllc_and(a0, a1); |
|
405 for (int i=0; i<ARRLEN; i++) { |
|
406 errn += verify("test_sllc_and: ", i, a0[i], (long)(((long)(ADD_INIT+i) & BIT_MASK)<<VALUE)); |
|
407 } |
|
408 test_sllv_and(a0, a1, BIT_MASK); |
|
409 for (int i=0; i<ARRLEN; i++) { |
|
410 errn += verify("test_sllv_and: ", i, a0[i], (long)(((long)(ADD_INIT+i) & BIT_MASK)<<VALUE)); |
|
411 } |
|
412 |
|
413 test_srlc_and(a0, a1); |
|
414 for (int i=0; i<ARRLEN; i++) { |
|
415 errn += verify("test_srlc_and: ", i, a0[i], (long)(((long)(ADD_INIT+i) & BIT_MASK)>>>VALUE)); |
|
416 } |
|
417 test_srlv_and(a0, a1, BIT_MASK); |
|
418 for (int i=0; i<ARRLEN; i++) { |
|
419 errn += verify("test_srlv_and: ", i, a0[i], (long)(((long)(ADD_INIT+i) & BIT_MASK)>>>VALUE)); |
|
420 } |
|
421 |
|
422 test_srac_and(a0, a1); |
|
423 for (int i=0; i<ARRLEN; i++) { |
|
424 errn += verify("test_srac_and: ", i, a0[i], (long)(((long)(ADD_INIT+i) & BIT_MASK)>>VALUE)); |
|
425 } |
|
426 test_srav_and(a0, a1, BIT_MASK); |
|
427 for (int i=0; i<ARRLEN; i++) { |
|
428 errn += verify("test_srav_and: ", i, a0[i], (long)(((long)(ADD_INIT+i) & BIT_MASK)>>VALUE)); |
|
429 } |
|
430 |
357 } |
431 } |
358 |
432 |
359 if (errn > 0) |
433 if (errn > 0) |
360 return errn; |
434 return errn; |
361 |
435 |
693 for (int i=0; i<ITERS; i++) { |
767 for (int i=0; i<ITERS; i++) { |
694 test_srav(a0, a1, -SHIFT); |
768 test_srav(a0, a1, -SHIFT); |
695 } |
769 } |
696 end = System.currentTimeMillis(); |
770 end = System.currentTimeMillis(); |
697 System.out.println("test_srav_on: " + (end - start)); |
771 System.out.println("test_srav_on: " + (end - start)); |
|
772 |
|
773 start = System.currentTimeMillis(); |
|
774 for (int i=0; i<ITERS; i++) { |
|
775 test_sllc_add(a0, a1); |
|
776 } |
|
777 end = System.currentTimeMillis(); |
|
778 System.out.println("test_sllc_add: " + (end - start)); |
|
779 start = System.currentTimeMillis(); |
|
780 for (int i=0; i<ITERS; i++) { |
|
781 test_sllv_add(a0, a1, ADD_INIT); |
|
782 } |
|
783 end = System.currentTimeMillis(); |
|
784 System.out.println("test_sllv_add: " + (end - start)); |
|
785 |
|
786 start = System.currentTimeMillis(); |
|
787 for (int i=0; i<ITERS; i++) { |
|
788 test_srlc_add(a0, a1); |
|
789 } |
|
790 end = System.currentTimeMillis(); |
|
791 System.out.println("test_srlc_add: " + (end - start)); |
|
792 start = System.currentTimeMillis(); |
|
793 for (int i=0; i<ITERS; i++) { |
|
794 test_srlv_add(a0, a1, ADD_INIT); |
|
795 } |
|
796 end = System.currentTimeMillis(); |
|
797 System.out.println("test_srlv_add: " + (end - start)); |
|
798 |
|
799 start = System.currentTimeMillis(); |
|
800 for (int i=0; i<ITERS; i++) { |
|
801 test_srac_add(a0, a1); |
|
802 } |
|
803 end = System.currentTimeMillis(); |
|
804 System.out.println("test_srac_add: " + (end - start)); |
|
805 start = System.currentTimeMillis(); |
|
806 for (int i=0; i<ITERS; i++) { |
|
807 test_srav_add(a0, a1, ADD_INIT); |
|
808 } |
|
809 end = System.currentTimeMillis(); |
|
810 System.out.println("test_srav_add: " + (end - start)); |
|
811 |
|
812 start = System.currentTimeMillis(); |
|
813 for (int i=0; i<ITERS; i++) { |
|
814 test_sllc_and(a0, a1); |
|
815 } |
|
816 end = System.currentTimeMillis(); |
|
817 System.out.println("test_sllc_and: " + (end - start)); |
|
818 start = System.currentTimeMillis(); |
|
819 for (int i=0; i<ITERS; i++) { |
|
820 test_sllv_and(a0, a1, BIT_MASK); |
|
821 } |
|
822 end = System.currentTimeMillis(); |
|
823 System.out.println("test_sllv_and: " + (end - start)); |
|
824 |
|
825 start = System.currentTimeMillis(); |
|
826 for (int i=0; i<ITERS; i++) { |
|
827 test_srlc_and(a0, a1); |
|
828 } |
|
829 end = System.currentTimeMillis(); |
|
830 System.out.println("test_srlc_and: " + (end - start)); |
|
831 start = System.currentTimeMillis(); |
|
832 for (int i=0; i<ITERS; i++) { |
|
833 test_srlv_and(a0, a1, BIT_MASK); |
|
834 } |
|
835 end = System.currentTimeMillis(); |
|
836 System.out.println("test_srlv_and: " + (end - start)); |
|
837 |
|
838 start = System.currentTimeMillis(); |
|
839 for (int i=0; i<ITERS; i++) { |
|
840 test_srac_and(a0, a1); |
|
841 } |
|
842 end = System.currentTimeMillis(); |
|
843 System.out.println("test_srac_and: " + (end - start)); |
|
844 start = System.currentTimeMillis(); |
|
845 for (int i=0; i<ITERS; i++) { |
|
846 test_srav_and(a0, a1, BIT_MASK); |
|
847 } |
|
848 end = System.currentTimeMillis(); |
|
849 System.out.println("test_srav_and: " + (end - start)); |
698 |
850 |
699 return errn; |
851 return errn; |
700 } |
852 } |
701 |
853 |
702 static long test_sum(long[] a1) { |
854 static long test_sum(long[] a1) { |
852 static void test_sllv(long[] a0, long[] a1, int b) { |
1004 static void test_sllv(long[] a0, long[] a1, int b) { |
853 for (int i = 0; i < a0.length; i+=1) { |
1005 for (int i = 0; i < a0.length; i+=1) { |
854 a0[i] = (long)(a1[i]<<b); |
1006 a0[i] = (long)(a1[i]<<b); |
855 } |
1007 } |
856 } |
1008 } |
|
1009 static void test_sllc_add(long[] a0, long[] a1) { |
|
1010 for (int i = 0; i < a0.length; i+=1) { |
|
1011 a0[i] = (long)((a1[i] + ADD_INIT)<<VALUE); |
|
1012 } |
|
1013 } |
|
1014 static void test_sllv_add(long[] a0, long[] a1, long b) { |
|
1015 for (int i = 0; i < a0.length; i+=1) { |
|
1016 a0[i] = (long)((a1[i] + b)<<VALUE); |
|
1017 } |
|
1018 } |
|
1019 static void test_sllc_and(long[] a0, long[] a1) { |
|
1020 for (int i = 0; i < a0.length; i+=1) { |
|
1021 a0[i] = (long)((a1[i] & BIT_MASK)<<VALUE); |
|
1022 } |
|
1023 } |
|
1024 static void test_sllv_and(long[] a0, long[] a1, long b) { |
|
1025 for (int i = 0; i < a0.length; i+=1) { |
|
1026 a0[i] = (long)((a1[i] & b)<<VALUE); |
|
1027 } |
|
1028 } |
857 |
1029 |
858 static void test_srlc(long[] a0, long[] a1) { |
1030 static void test_srlc(long[] a0, long[] a1) { |
859 for (int i = 0; i < a0.length; i+=1) { |
1031 for (int i = 0; i < a0.length; i+=1) { |
860 a0[i] = (long)(a1[i]>>>VALUE); |
1032 a0[i] = (long)(a1[i]>>>VALUE); |
861 } |
1033 } |
878 static void test_srlv(long[] a0, long[] a1, int b) { |
1050 static void test_srlv(long[] a0, long[] a1, int b) { |
879 for (int i = 0; i < a0.length; i+=1) { |
1051 for (int i = 0; i < a0.length; i+=1) { |
880 a0[i] = (long)(a1[i]>>>b); |
1052 a0[i] = (long)(a1[i]>>>b); |
881 } |
1053 } |
882 } |
1054 } |
|
1055 static void test_srlc_add(long[] a0, long[] a1) { |
|
1056 for (int i = 0; i < a0.length; i+=1) { |
|
1057 a0[i] = (long)((a1[i] + ADD_INIT)>>>VALUE); |
|
1058 } |
|
1059 } |
|
1060 static void test_srlv_add(long[] a0, long[] a1, long b) { |
|
1061 for (int i = 0; i < a0.length; i+=1) { |
|
1062 a0[i] = (long)((a1[i] + b)>>>VALUE); |
|
1063 } |
|
1064 } |
|
1065 static void test_srlc_and(long[] a0, long[] a1) { |
|
1066 for (int i = 0; i < a0.length; i+=1) { |
|
1067 a0[i] = (long)((a1[i] & BIT_MASK)>>>VALUE); |
|
1068 } |
|
1069 } |
|
1070 static void test_srlv_and(long[] a0, long[] a1, long b) { |
|
1071 for (int i = 0; i < a0.length; i+=1) { |
|
1072 a0[i] = (long)((a1[i] & b)>>>VALUE); |
|
1073 } |
|
1074 } |
883 |
1075 |
884 static void test_srac(long[] a0, long[] a1) { |
1076 static void test_srac(long[] a0, long[] a1) { |
885 for (int i = 0; i < a0.length; i+=1) { |
1077 for (int i = 0; i < a0.length; i+=1) { |
886 a0[i] = (long)(a1[i]>>VALUE); |
1078 a0[i] = (long)(a1[i]>>VALUE); |
887 } |
1079 } |
902 } |
1094 } |
903 } |
1095 } |
904 static void test_srav(long[] a0, long[] a1, int b) { |
1096 static void test_srav(long[] a0, long[] a1, int b) { |
905 for (int i = 0; i < a0.length; i+=1) { |
1097 for (int i = 0; i < a0.length; i+=1) { |
906 a0[i] = (long)(a1[i]>>b); |
1098 a0[i] = (long)(a1[i]>>b); |
|
1099 } |
|
1100 } |
|
1101 static void test_srac_add(long[] a0, long[] a1) { |
|
1102 for (int i = 0; i < a0.length; i+=1) { |
|
1103 a0[i] = (long)((a1[i] + ADD_INIT)>>VALUE); |
|
1104 } |
|
1105 } |
|
1106 static void test_srav_add(long[] a0, long[] a1, long b) { |
|
1107 for (int i = 0; i < a0.length; i+=1) { |
|
1108 a0[i] = (long)((a1[i] + b)>>VALUE); |
|
1109 } |
|
1110 } |
|
1111 static void test_srac_and(long[] a0, long[] a1) { |
|
1112 for (int i = 0; i < a0.length; i+=1) { |
|
1113 a0[i] = (long)((a1[i] & BIT_MASK)>>VALUE); |
|
1114 } |
|
1115 } |
|
1116 static void test_srav_and(long[] a0, long[] a1, long b) { |
|
1117 for (int i = 0; i < a0.length; i+=1) { |
|
1118 a0[i] = (long)((a1[i] & b)>>VALUE); |
907 } |
1119 } |
908 } |
1120 } |
909 |
1121 |
910 static int verify(String text, int i, long elem, long val) { |
1122 static int verify(String text, int i, long elem, long val) { |
911 if (elem != val) { |
1123 if (elem != val) { |