You can subscribe to this list here.
| 2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
(122) |
Nov
(152) |
Dec
(69) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2003 |
Jan
(6) |
Feb
(25) |
Mar
(73) |
Apr
(82) |
May
(24) |
Jun
(25) |
Jul
(10) |
Aug
(11) |
Sep
(10) |
Oct
(54) |
Nov
(203) |
Dec
(182) |
| 2004 |
Jan
(307) |
Feb
(305) |
Mar
(430) |
Apr
(312) |
May
(187) |
Jun
(342) |
Jul
(487) |
Aug
(637) |
Sep
(336) |
Oct
(373) |
Nov
(441) |
Dec
(210) |
| 2005 |
Jan
(385) |
Feb
(480) |
Mar
(636) |
Apr
(544) |
May
(679) |
Jun
(625) |
Jul
(810) |
Aug
(838) |
Sep
(634) |
Oct
(521) |
Nov
(965) |
Dec
(543) |
| 2006 |
Jan
(494) |
Feb
(431) |
Mar
(546) |
Apr
(411) |
May
(406) |
Jun
(322) |
Jul
(256) |
Aug
(401) |
Sep
(345) |
Oct
(542) |
Nov
(308) |
Dec
(481) |
| 2007 |
Jan
(427) |
Feb
(326) |
Mar
(367) |
Apr
(255) |
May
(244) |
Jun
(204) |
Jul
(223) |
Aug
(231) |
Sep
(354) |
Oct
(374) |
Nov
(497) |
Dec
(362) |
| 2008 |
Jan
(322) |
Feb
(482) |
Mar
(658) |
Apr
(422) |
May
(476) |
Jun
(396) |
Jul
(455) |
Aug
(267) |
Sep
(280) |
Oct
(253) |
Nov
(232) |
Dec
(304) |
| 2009 |
Jan
(486) |
Feb
(470) |
Mar
(458) |
Apr
(423) |
May
(696) |
Jun
(461) |
Jul
(551) |
Aug
(575) |
Sep
(134) |
Oct
(110) |
Nov
(157) |
Dec
(102) |
| 2010 |
Jan
(226) |
Feb
(86) |
Mar
(147) |
Apr
(117) |
May
(107) |
Jun
(203) |
Jul
(193) |
Aug
(238) |
Sep
(300) |
Oct
(246) |
Nov
(23) |
Dec
(75) |
| 2011 |
Jan
(133) |
Feb
(195) |
Mar
(315) |
Apr
(200) |
May
(267) |
Jun
(293) |
Jul
(353) |
Aug
(237) |
Sep
(278) |
Oct
(611) |
Nov
(274) |
Dec
(260) |
| 2012 |
Jan
(303) |
Feb
(391) |
Mar
(417) |
Apr
(441) |
May
(488) |
Jun
(655) |
Jul
(590) |
Aug
(610) |
Sep
(526) |
Oct
(478) |
Nov
(359) |
Dec
(372) |
| 2013 |
Jan
(467) |
Feb
(226) |
Mar
(391) |
Apr
(281) |
May
(299) |
Jun
(252) |
Jul
(311) |
Aug
(352) |
Sep
(481) |
Oct
(571) |
Nov
(222) |
Dec
(231) |
| 2014 |
Jan
(185) |
Feb
(329) |
Mar
(245) |
Apr
(238) |
May
(281) |
Jun
(399) |
Jul
(382) |
Aug
(500) |
Sep
(579) |
Oct
(435) |
Nov
(487) |
Dec
(256) |
| 2015 |
Jan
(338) |
Feb
(357) |
Mar
(330) |
Apr
(294) |
May
(191) |
Jun
(108) |
Jul
(142) |
Aug
(261) |
Sep
(190) |
Oct
(54) |
Nov
(83) |
Dec
(22) |
| 2016 |
Jan
(49) |
Feb
(89) |
Mar
(33) |
Apr
(50) |
May
(27) |
Jun
(34) |
Jul
(53) |
Aug
(53) |
Sep
(98) |
Oct
(206) |
Nov
(93) |
Dec
(53) |
| 2017 |
Jan
(65) |
Feb
(82) |
Mar
(102) |
Apr
(86) |
May
(187) |
Jun
(67) |
Jul
(23) |
Aug
(93) |
Sep
(65) |
Oct
(45) |
Nov
(35) |
Dec
(17) |
| 2018 |
Jan
(26) |
Feb
(35) |
Mar
(38) |
Apr
(32) |
May
(8) |
Jun
(43) |
Jul
(27) |
Aug
(30) |
Sep
(43) |
Oct
(42) |
Nov
(38) |
Dec
(67) |
| 2019 |
Jan
(32) |
Feb
(37) |
Mar
(53) |
Apr
(64) |
May
(49) |
Jun
(18) |
Jul
(14) |
Aug
(53) |
Sep
(25) |
Oct
(30) |
Nov
(49) |
Dec
(31) |
| 2020 |
Jan
(87) |
Feb
(45) |
Mar
(37) |
Apr
(51) |
May
(99) |
Jun
(36) |
Jul
(11) |
Aug
(14) |
Sep
(20) |
Oct
(24) |
Nov
(40) |
Dec
(23) |
| 2021 |
Jan
(14) |
Feb
(53) |
Mar
(85) |
Apr
(15) |
May
(19) |
Jun
(3) |
Jul
(14) |
Aug
(1) |
Sep
(57) |
Oct
(73) |
Nov
(56) |
Dec
(22) |
| 2022 |
Jan
(3) |
Feb
(22) |
Mar
(6) |
Apr
(55) |
May
(46) |
Jun
(39) |
Jul
(15) |
Aug
(9) |
Sep
(11) |
Oct
(34) |
Nov
(20) |
Dec
(36) |
| 2023 |
Jan
(79) |
Feb
(41) |
Mar
(99) |
Apr
(169) |
May
(48) |
Jun
(16) |
Jul
(16) |
Aug
(57) |
Sep
(19) |
Oct
|
Nov
|
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
|
1
(1) |
2
(1) |
3
(5) |
4
(4) |
5
(7) |
6
(4) |
|
7
(3) |
8
(5) |
9
|
10
(5) |
11
|
12
(4) |
13
|
|
14
|
15
(3) |
16
(1) |
17
(2) |
18
|
19
(1) |
20
|
|
21
(1) |
22
|
23
|
24
|
25
|
26
(3) |
27
|
|
28
(2) |
29
(1) |
30
|
31
|
|
|
|
|
From: <sv...@va...> - 2016-08-04 21:41:06
|
Author: sewardj
Date: Thu Aug 4 22:40:59 2016
New Revision: 15925
Log:
Connect up the new CRC32 tests to the build system.
Added:
trunk/none/tests/arm64/crc32.stderr.exp
trunk/none/tests/arm64/crc32.stdout.exp
trunk/none/tests/arm64/crc32.vgtest
Modified:
trunk/none/tests/arm64/Makefile.am
Modified: trunk/none/tests/arm64/Makefile.am
==============================================================================
--- trunk/none/tests/arm64/Makefile.am (original)
+++ trunk/none/tests/arm64/Makefile.am Thu Aug 4 22:40:59 2016
@@ -4,6 +4,7 @@
dist_noinst_SCRIPTS = filter_stderr
EXTRA_DIST = \
+ crc32.stdout.exp crc32.stderr.exp crc32.vgtest \
cvtf_imm.stdout.exp cvtf_imm.stderr.exp cvtf_imm.vgtest \
fp_and_simd.stdout.exp fp_and_simd.stderr.exp fp_and_simd.vgtest \
integer.stdout.exp integer.stderr.exp integer.vgtest \
@@ -11,6 +12,7 @@
check_PROGRAMS = \
allexec \
+ crc32 \
cvtf_imm \
fp_and_simd \
integer \
@@ -22,6 +24,7 @@
allexec_CFLAGS = $(AM_CFLAGS) @FLAG_W_NO_NONNULL@
+crc32_CFLAGS = $(AM_CFLAGS) -march=armv8-a+crc
fp_and_simd_CFLAGS = $(AM_CFLAGS) -march=armv8-a+crypto
integer_CFLAGS = $(AM_CFLAGS) -g -O0 -DTEST_BFM=0
Added: trunk/none/tests/arm64/crc32.stderr.exp
==============================================================================
(empty)
Added: trunk/none/tests/arm64/crc32.stdout.exp
==============================================================================
--- trunk/none/tests/arm64/crc32.stdout.exp (added)
+++ trunk/none/tests/arm64/crc32.stdout.exp Thu Aug 4 22:40:59 2016
@@ -0,0 +1,57 @@
+CRC32/CRC32C
+crc32b w21,w20,w19 :: rd 00000000f8957d4c rm 4b154113f7d32514, rn cce230caafbf9cc9, cin 0, nzcv 00000000
+crc32b w21,w20,w19 :: rd 00000000f810b326 rm 33d5d595721d4f13, rn f4509311f443a7ce, cin 0, nzcv 00000000
+crc32b w21,w20,w19 :: rd 00000000ef405c96 rm 4a3c6de6954cbc17, rn 111b21e39fbd7254, cin 0, nzcv 00000000
+crc32b w21,w20,w19 :: rd 00000000a0db523c rm fbb5c64ed1b044c6, rn 33ca4c4fb3960326, cin 0, nzcv 00000000
+crc32b w21,w20,w19 :: rd 0000000096de687b rm 2b7c5939d7c0f528, rn b73870a5a6630162, cin 0, nzcv 00000000
+crc32b w21,w20,w19 :: rd 000000005b546bd0 rm 02fe41918ac5cdba, rn 48e0815289728f05, cin 0, nzcv 00000000
+crc32b w21,w20,w19 :: rd 000000008f7a8684 rm b60a8f381f187bae, rn 008c208cc413ff72, cin 0, nzcv 00000000
+crc32h w21,w20,w19 :: rd 00000000862b47a9 rm 4b154113f7d32514, rn cce230caafbf9cc9, cin 0, nzcv 00000000
+crc32h w21,w20,w19 :: rd 000000009a47a305 rm 33d5d595721d4f13, rn f4509311f443a7ce, cin 0, nzcv 00000000
+crc32h w21,w20,w19 :: rd 00000000a788663d rm 4a3c6de6954cbc17, rn 111b21e39fbd7254, cin 0, nzcv 00000000
+crc32h w21,w20,w19 :: rd 00000000b6c6f66f rm fbb5c64ed1b044c6, rn 33ca4c4fb3960326, cin 0, nzcv 00000000
+crc32h w21,w20,w19 :: rd 00000000b046464a rm 2b7c5939d7c0f528, rn b73870a5a6630162, cin 0, nzcv 00000000
+crc32h w21,w20,w19 :: rd 00000000fb8f180e rm 02fe41918ac5cdba, rn 48e0815289728f05, cin 0, nzcv 00000000
+crc32h w21,w20,w19 :: rd 00000000c758d232 rm b60a8f381f187bae, rn 008c208cc413ff72, cin 0, nzcv 00000000
+crc32w w21,w20,w19 :: rd 00000000b24959b6 rm 4b154113f7d32514, rn cce230caafbf9cc9, cin 0, nzcv 00000000
+crc32w w21,w20,w19 :: rd 00000000532cb693 rm 33d5d595721d4f13, rn f4509311f443a7ce, cin 0, nzcv 00000000
+crc32w w21,w20,w19 :: rd 00000000ffe2757b rm 4a3c6de6954cbc17, rn 111b21e39fbd7254, cin 0, nzcv 00000000
+crc32w w21,w20,w19 :: rd 00000000c3c8592d rm fbb5c64ed1b044c6, rn 33ca4c4fb3960326, cin 0, nzcv 00000000
+crc32w w21,w20,w19 :: rd 00000000e44ccdd5 rm 2b7c5939d7c0f528, rn b73870a5a6630162, cin 0, nzcv 00000000
+crc32w w21,w20,w19 :: rd 0000000004826ea7 rm 02fe41918ac5cdba, rn 48e0815289728f05, cin 0, nzcv 00000000
+crc32w w21,w20,w19 :: rd 00000000784b67ea rm b60a8f381f187bae, rn 008c208cc413ff72, cin 0, nzcv 00000000
+crc32x w21,w20,x19 :: rd 000000009ca1d692 rm 4b154113f7d32514, rn cce230caafbf9cc9, cin 0, nzcv 00000000
+crc32x w21,w20,x19 :: rd 00000000b2eefa0a rm 33d5d595721d4f13, rn f4509311f443a7ce, cin 0, nzcv 00000000
+crc32x w21,w20,x19 :: rd 00000000918ddaac rm 4a3c6de6954cbc17, rn 111b21e39fbd7254, cin 0, nzcv 00000000
+crc32x w21,w20,x19 :: rd 000000000449ce8d rm fbb5c64ed1b044c6, rn 33ca4c4fb3960326, cin 0, nzcv 00000000
+crc32x w21,w20,x19 :: rd 000000001f887163 rm 2b7c5939d7c0f528, rn b73870a5a6630162, cin 0, nzcv 00000000
+crc32x w21,w20,x19 :: rd 000000003ba77596 rm 02fe41918ac5cdba, rn 48e0815289728f05, cin 0, nzcv 00000000
+crc32x w21,w20,x19 :: rd 00000000b1fd8b1d rm b60a8f381f187bae, rn 008c208cc413ff72, cin 0, nzcv 00000000
+crc32cb w21,w20,w19 :: rd 000000006c0c7e5d rm 4b154113f7d32514, rn cce230caafbf9cc9, cin 0, nzcv 00000000
+crc32cb w21,w20,w19 :: rd 000000006c89b037 rm 33d5d595721d4f13, rn f4509311f443a7ce, cin 0, nzcv 00000000
+crc32cb w21,w20,w19 :: rd 0000000052bea2f4 rm 4a3c6de6954cbc17, rn 111b21e39fbd7254, cin 0, nzcv 00000000
+crc32cb w21,w20,w19 :: rd 00000000e3e1185e rm fbb5c64ed1b044c6, rn 33ca4c4fb3960326, cin 0, nzcv 00000000
+crc32cb w21,w20,w19 :: rd 000000002a4ef571 rm 2b7c5939d7c0f528, rn b73870a5a6630162, cin 0, nzcv 00000000
+crc32cb w21,w20,w19 :: rd 00000000ec8c8b20 rm 02fe41918ac5cdba, rn 48e0815289728f05, cin 0, nzcv 00000000
+crc32cb w21,w20,w19 :: rd 000000009e8f3600 rm b60a8f381f187bae, rn 008c208cc413ff72, cin 0, nzcv 00000000
+crc32ch w21,w20,w19 :: rd 00000000318aa9b9 rm 4b154113f7d32514, rn cce230caafbf9cc9, cin 0, nzcv 00000000
+crc32ch w21,w20,w19 :: rd 0000000092c475a7 rm 33d5d595721d4f13, rn f4509311f443a7ce, cin 0, nzcv 00000000
+crc32ch w21,w20,w19 :: rd 00000000a4056232 rm 4a3c6de6954cbc17, rn 111b21e39fbd7254, cin 0, nzcv 00000000
+crc32ch w21,w20,w19 :: rd 00000000eeee7718 rm fbb5c64ed1b044c6, rn 33ca4c4fb3960326, cin 0, nzcv 00000000
+crc32ch w21,w20,w19 :: rd 0000000071b21af8 rm 2b7c5939d7c0f528, rn b73870a5a6630162, cin 0, nzcv 00000000
+crc32ch w21,w20,w19 :: rd 00000000fcb40509 rm 02fe41918ac5cdba, rn 48e0815289728f05, cin 0, nzcv 00000000
+crc32ch w21,w20,w19 :: rd 00000000ade3dc67 rm b60a8f381f187bae, rn 008c208cc413ff72, cin 0, nzcv 00000000
+crc32cw w21,w20,w19 :: rd 000000004f6e8750 rm 4b154113f7d32514, rn cce230caafbf9cc9, cin 0, nzcv 00000000
+crc32cw w21,w20,w19 :: rd 000000004548949c rm 33d5d595721d4f13, rn f4509311f443a7ce, cin 0, nzcv 00000000
+crc32cw w21,w20,w19 :: rd 0000000050fc77a7 rm 4a3c6de6954cbc17, rn 111b21e39fbd7254, cin 0, nzcv 00000000
+crc32cw w21,w20,w19 :: rd 000000000b0f3746 rm fbb5c64ed1b044c6, rn 33ca4c4fb3960326, cin 0, nzcv 00000000
+crc32cw w21,w20,w19 :: rd 0000000092a3acf2 rm 2b7c5939d7c0f528, rn b73870a5a6630162, cin 0, nzcv 00000000
+crc32cw w21,w20,w19 :: rd 00000000d91fb7ba rm 02fe41918ac5cdba, rn 48e0815289728f05, cin 0, nzcv 00000000
+crc32cw w21,w20,w19 :: rd 000000006b548718 rm b60a8f381f187bae, rn 008c208cc413ff72, cin 0, nzcv 00000000
+crc32cx w21,w20,x19 :: rd 00000000252d3dc0 rm 4b154113f7d32514, rn cce230caafbf9cc9, cin 0, nzcv 00000000
+crc32cx w21,w20,x19 :: rd 0000000094dc9608 rm 33d5d595721d4f13, rn f4509311f443a7ce, cin 0, nzcv 00000000
+crc32cx w21,w20,x19 :: rd 0000000004d0ed55 rm 4a3c6de6954cbc17, rn 111b21e39fbd7254, cin 0, nzcv 00000000
+crc32cx w21,w20,x19 :: rd 000000004c3be587 rm fbb5c64ed1b044c6, rn 33ca4c4fb3960326, cin 0, nzcv 00000000
+crc32cx w21,w20,x19 :: rd 00000000b914bc44 rm 2b7c5939d7c0f528, rn b73870a5a6630162, cin 0, nzcv 00000000
+crc32cx w21,w20,x19 :: rd 000000005b10caab rm 02fe41918ac5cdba, rn 48e0815289728f05, cin 0, nzcv 00000000
+crc32cx w21,w20,x19 :: rd 00000000803f9752 rm b60a8f381f187bae, rn 008c208cc413ff72, cin 0, nzcv 00000000
Added: trunk/none/tests/arm64/crc32.vgtest
==============================================================================
--- trunk/none/tests/arm64/crc32.vgtest (added)
+++ trunk/none/tests/arm64/crc32.vgtest Thu Aug 4 22:40:59 2016
@@ -0,0 +1,2 @@
+prog: crc32
+vgopts: -q
|
|
From: <sv...@va...> - 2016-08-04 21:14:32
|
Author: sewardj
Date: Thu Aug 4 22:14:24 2016
New Revision: 15924
Log:
Add test cases for the CRC32* instruction group. Is not yet connected to the
build system.
Added:
trunk/none/tests/arm64/crc32.c
Added: trunk/none/tests/arm64/crc32.c
==============================================================================
--- trunk/none/tests/arm64/crc32.c (added)
+++ trunk/none/tests/arm64/crc32.c Thu Aug 4 22:14:24 2016
@@ -0,0 +1,123 @@
+
+/* To compile:
+ gcc -Wall -g -o crc32 none/tests/arm64/crc32.c -march=armv8-a+crc
+ -march=armv8-a+crc+crypto is also OK
+*/
+
+#include <stdio.h>
+#include <malloc.h> // memalign
+#include <string.h> // memset
+#include <assert.h>
+
+typedef unsigned char UChar;
+typedef unsigned short int UShort;
+typedef unsigned int UInt;
+typedef signed int Int;
+typedef unsigned char UChar;
+typedef signed long long int Long;
+typedef unsigned long long int ULong;
+
+typedef unsigned char Bool;
+#define False ((Bool)0)
+#define True ((Bool)1)
+
+
+#define TESTINST3(instruction, RMval, RNval, RD, RM, RN, carryin) \
+{ \
+ ULong out; \
+ ULong nzcv_out; \
+ ULong nzcv_in = (carryin ? (1<<29) : 0); \
+ __asm__ __volatile__( \
+ "msr nzcv,%4;" \
+ "mov " #RM ",%2;" \
+ "mov " #RN ",%3;" \
+ instruction ";" \
+ "mov %0," #RD ";" \
+ "mrs %1,nzcv;" \
+ : "=&r" (out), "=&r" (nzcv_out) \
+ : "r" (RMval), "r" (RNval), "r" (nzcv_in) \
+ : #RD, #RM, #RN, "cc", "memory" \
+ ); \
+ printf("%s :: rd %016llx rm %016llx, rn %016llx, " \
+ "cin %d, nzcv %08llx %c%c%c%c\n", \
+ instruction, out, ((ULong)RMval), ((ULong)RNval), \
+ carryin ? 1 : 0, \
+ nzcv_out & 0xffff0000, \
+ ((1<<31) & nzcv_out) ? 'N' : ' ', \
+ ((1<<30) & nzcv_out) ? 'Z' : ' ', \
+ ((1<<29) & nzcv_out) ? 'C' : ' ', \
+ ((1<<28) & nzcv_out) ? 'V' : ' ' \
+ ); \
+}
+
+int main ( void )
+{
+////////////////////////////////////////////////////////////////
+printf("CRC32/CRC32C\n");
+
+TESTINST3("crc32b w21,w20,w19", 0x4b154113f7d32514, 0xcce230caafbf9cc9, x21,x20,x19, 0);
+TESTINST3("crc32b w21,w20,w19", 0x33d5d595721d4f13, 0xf4509311f443a7ce, x21,x20,x19, 0);
+TESTINST3("crc32b w21,w20,w19", 0x4a3c6de6954cbc17, 0x111b21e39fbd7254, x21,x20,x19, 0);
+TESTINST3("crc32b w21,w20,w19", 0xfbb5c64ed1b044c6, 0x33ca4c4fb3960326, x21,x20,x19, 0);
+TESTINST3("crc32b w21,w20,w19", 0x2b7c5939d7c0f528, 0xb73870a5a6630162, x21,x20,x19, 0);
+TESTINST3("crc32b w21,w20,w19", 0x02fe41918ac5cdba, 0x48e0815289728f05, x21,x20,x19, 0);
+TESTINST3("crc32b w21,w20,w19", 0xb60a8f381f187bae, 0x008c208cc413ff72, x21,x20,x19, 0);
+
+TESTINST3("crc32h w21,w20,w19", 0x4b154113f7d32514, 0xcce230caafbf9cc9, x21,x20,x19, 0);
+TESTINST3("crc32h w21,w20,w19", 0x33d5d595721d4f13, 0xf4509311f443a7ce, x21,x20,x19, 0);
+TESTINST3("crc32h w21,w20,w19", 0x4a3c6de6954cbc17, 0x111b21e39fbd7254, x21,x20,x19, 0);
+TESTINST3("crc32h w21,w20,w19", 0xfbb5c64ed1b044c6, 0x33ca4c4fb3960326, x21,x20,x19, 0);
+TESTINST3("crc32h w21,w20,w19", 0x2b7c5939d7c0f528, 0xb73870a5a6630162, x21,x20,x19, 0);
+TESTINST3("crc32h w21,w20,w19", 0x02fe41918ac5cdba, 0x48e0815289728f05, x21,x20,x19, 0);
+TESTINST3("crc32h w21,w20,w19", 0xb60a8f381f187bae, 0x008c208cc413ff72, x21,x20,x19, 0);
+
+TESTINST3("crc32w w21,w20,w19", 0x4b154113f7d32514, 0xcce230caafbf9cc9, x21,x20,x19, 0);
+TESTINST3("crc32w w21,w20,w19", 0x33d5d595721d4f13, 0xf4509311f443a7ce, x21,x20,x19, 0);
+TESTINST3("crc32w w21,w20,w19", 0x4a3c6de6954cbc17, 0x111b21e39fbd7254, x21,x20,x19, 0);
+TESTINST3("crc32w w21,w20,w19", 0xfbb5c64ed1b044c6, 0x33ca4c4fb3960326, x21,x20,x19, 0);
+TESTINST3("crc32w w21,w20,w19", 0x2b7c5939d7c0f528, 0xb73870a5a6630162, x21,x20,x19, 0);
+TESTINST3("crc32w w21,w20,w19", 0x02fe41918ac5cdba, 0x48e0815289728f05, x21,x20,x19, 0);
+TESTINST3("crc32w w21,w20,w19", 0xb60a8f381f187bae, 0x008c208cc413ff72, x21,x20,x19, 0);
+
+TESTINST3("crc32x w21,w20,x19", 0x4b154113f7d32514, 0xcce230caafbf9cc9, x21,x20,x19, 0);
+TESTINST3("crc32x w21,w20,x19", 0x33d5d595721d4f13, 0xf4509311f443a7ce, x21,x20,x19, 0);
+TESTINST3("crc32x w21,w20,x19", 0x4a3c6de6954cbc17, 0x111b21e39fbd7254, x21,x20,x19, 0);
+TESTINST3("crc32x w21,w20,x19", 0xfbb5c64ed1b044c6, 0x33ca4c4fb3960326, x21,x20,x19, 0);
+TESTINST3("crc32x w21,w20,x19", 0x2b7c5939d7c0f528, 0xb73870a5a6630162, x21,x20,x19, 0);
+TESTINST3("crc32x w21,w20,x19", 0x02fe41918ac5cdba, 0x48e0815289728f05, x21,x20,x19, 0);
+TESTINST3("crc32x w21,w20,x19", 0xb60a8f381f187bae, 0x008c208cc413ff72, x21,x20,x19, 0);
+
+TESTINST3("crc32cb w21,w20,w19", 0x4b154113f7d32514, 0xcce230caafbf9cc9, x21,x20,x19, 0);
+TESTINST3("crc32cb w21,w20,w19", 0x33d5d595721d4f13, 0xf4509311f443a7ce, x21,x20,x19, 0);
+TESTINST3("crc32cb w21,w20,w19", 0x4a3c6de6954cbc17, 0x111b21e39fbd7254, x21,x20,x19, 0);
+TESTINST3("crc32cb w21,w20,w19", 0xfbb5c64ed1b044c6, 0x33ca4c4fb3960326, x21,x20,x19, 0);
+TESTINST3("crc32cb w21,w20,w19", 0x2b7c5939d7c0f528, 0xb73870a5a6630162, x21,x20,x19, 0);
+TESTINST3("crc32cb w21,w20,w19", 0x02fe41918ac5cdba, 0x48e0815289728f05, x21,x20,x19, 0);
+TESTINST3("crc32cb w21,w20,w19", 0xb60a8f381f187bae, 0x008c208cc413ff72, x21,x20,x19, 0);
+
+TESTINST3("crc32ch w21,w20,w19", 0x4b154113f7d32514, 0xcce230caafbf9cc9, x21,x20,x19, 0);
+TESTINST3("crc32ch w21,w20,w19", 0x33d5d595721d4f13, 0xf4509311f443a7ce, x21,x20,x19, 0);
+TESTINST3("crc32ch w21,w20,w19", 0x4a3c6de6954cbc17, 0x111b21e39fbd7254, x21,x20,x19, 0);
+TESTINST3("crc32ch w21,w20,w19", 0xfbb5c64ed1b044c6, 0x33ca4c4fb3960326, x21,x20,x19, 0);
+TESTINST3("crc32ch w21,w20,w19", 0x2b7c5939d7c0f528, 0xb73870a5a6630162, x21,x20,x19, 0);
+TESTINST3("crc32ch w21,w20,w19", 0x02fe41918ac5cdba, 0x48e0815289728f05, x21,x20,x19, 0);
+TESTINST3("crc32ch w21,w20,w19", 0xb60a8f381f187bae, 0x008c208cc413ff72, x21,x20,x19, 0);
+
+TESTINST3("crc32cw w21,w20,w19", 0x4b154113f7d32514, 0xcce230caafbf9cc9, x21,x20,x19, 0);
+TESTINST3("crc32cw w21,w20,w19", 0x33d5d595721d4f13, 0xf4509311f443a7ce, x21,x20,x19, 0);
+TESTINST3("crc32cw w21,w20,w19", 0x4a3c6de6954cbc17, 0x111b21e39fbd7254, x21,x20,x19, 0);
+TESTINST3("crc32cw w21,w20,w19", 0xfbb5c64ed1b044c6, 0x33ca4c4fb3960326, x21,x20,x19, 0);
+TESTINST3("crc32cw w21,w20,w19", 0x2b7c5939d7c0f528, 0xb73870a5a6630162, x21,x20,x19, 0);
+TESTINST3("crc32cw w21,w20,w19", 0x02fe41918ac5cdba, 0x48e0815289728f05, x21,x20,x19, 0);
+TESTINST3("crc32cw w21,w20,w19", 0xb60a8f381f187bae, 0x008c208cc413ff72, x21,x20,x19, 0);
+
+TESTINST3("crc32cx w21,w20,x19", 0x4b154113f7d32514, 0xcce230caafbf9cc9, x21,x20,x19, 0);
+TESTINST3("crc32cx w21,w20,x19", 0x33d5d595721d4f13, 0xf4509311f443a7ce, x21,x20,x19, 0);
+TESTINST3("crc32cx w21,w20,x19", 0x4a3c6de6954cbc17, 0x111b21e39fbd7254, x21,x20,x19, 0);
+TESTINST3("crc32cx w21,w20,x19", 0xfbb5c64ed1b044c6, 0x33ca4c4fb3960326, x21,x20,x19, 0);
+TESTINST3("crc32cx w21,w20,x19", 0x2b7c5939d7c0f528, 0xb73870a5a6630162, x21,x20,x19, 0);
+TESTINST3("crc32cx w21,w20,x19", 0x02fe41918ac5cdba, 0x48e0815289728f05, x21,x20,x19, 0);
+TESTINST3("crc32cx w21,w20,x19", 0xb60a8f381f187bae, 0x008c208cc413ff72, x21,x20,x19, 0);
+
+return 0;
+}
|
|
From: <sv...@va...> - 2016-08-04 21:11:36
|
Author: sewardj
Date: Thu Aug 4 22:11:28 2016
New Revision: 15923
Log:
Make "ashmem" and "binder" ioctls be handled properly on 64-bit ARM Android,
rather than falling through to the generic handler and being mishandled.
Fixes #360574.
Modified:
trunk/coregrind/m_syswrap/syswrap-linux.c
trunk/include/vki/vki-linux.h
Modified: trunk/coregrind/m_syswrap/syswrap-linux.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-linux.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-linux.c Thu Aug 4 22:11:28 2016
@@ -7082,7 +7082,8 @@
break;
# if defined(VGPV_arm_linux_android) || defined(VGPV_x86_linux_android) \
- || defined(VGPV_mips32_linux_android)
+ || defined(VGPV_mips32_linux_android) \
+ || defined(VGPV_arm64_linux_android)
/* ashmem */
case VKI_ASHMEM_GET_SIZE:
case VKI_ASHMEM_SET_SIZE:
@@ -9574,7 +9575,8 @@
break;
# if defined(VGPV_arm_linux_android) || defined(VGPV_x86_linux_android) \
- || defined(VGPV_mips32_linux_android)
+ || defined(VGPV_mips32_linux_android) \
+ || defined(VGPV_arm64_linux_android)
/* ashmem */
case VKI_ASHMEM_GET_SIZE:
case VKI_ASHMEM_SET_SIZE:
Modified: trunk/include/vki/vki-linux.h
==============================================================================
--- trunk/include/vki/vki-linux.h (original)
+++ trunk/include/vki/vki-linux.h Thu Aug 4 22:11:28 2016
@@ -3009,7 +3009,8 @@
//----------------------------------------------------------------------
#if defined(VGPV_arm_linux_android) || defined(VGPV_x86_linux_android) \
- || defined(VGPV_mips32_linux_android)
+ || defined(VGPV_mips32_linux_android) \
+ || defined(VGPV_arm64_linux_android)
#define VKI_ASHMEM_NAME_LEN 256
|
|
From: <sv...@va...> - 2016-08-04 09:13:20
|
Author: sewardj
Date: Thu Aug 4 10:13:11 2016
New Revision: 3237
Log:
Implement CRC32{B,H,W,X} and CRC32C{B,H,W,X}. Fixes #366344.
Modified:
trunk/priv/guest_arm64_defs.h
trunk/priv/guest_arm64_helpers.c
trunk/priv/guest_arm64_toIR.c
Modified: trunk/priv/guest_arm64_defs.h
==============================================================================
--- trunk/priv/guest_arm64_defs.h (original)
+++ trunk/priv/guest_arm64_defs.h Thu Aug 4 10:13:11 2016
@@ -110,6 +110,15 @@
//ZZ UInt armg_calculate_flag_qc ( UInt resL1, UInt resL2,
//ZZ UInt resR1, UInt resR2 );
+extern ULong arm64g_calc_crc32b ( ULong acc, ULong bits );
+extern ULong arm64g_calc_crc32h ( ULong acc, ULong bits );
+extern ULong arm64g_calc_crc32w ( ULong acc, ULong bits );
+extern ULong arm64g_calc_crc32x ( ULong acc, ULong bits );
+
+extern ULong arm64g_calc_crc32cb ( ULong acc, ULong bits );
+extern ULong arm64g_calc_crc32ch ( ULong acc, ULong bits );
+extern ULong arm64g_calc_crc32cw ( ULong acc, ULong bits );
+extern ULong arm64g_calc_crc32cx ( ULong acc, ULong bits );
/* --- DIRTY HELPERS --- */
Modified: trunk/priv/guest_arm64_helpers.c
==============================================================================
--- trunk/priv/guest_arm64_helpers.c (original)
+++ trunk/priv/guest_arm64_helpers.c Thu Aug 4 10:13:11 2016
@@ -677,6 +677,88 @@
}
+/* CALLED FROM GENERATED CODE: CLEAN HELPER */
+ULong arm64g_calc_crc32b ( ULong acc, ULong bits )
+{
+ UInt i;
+ ULong crc = (bits & 0xFFULL) ^ acc;
+ for (i = 0; i < 8; i++)
+ crc = (crc >> 1) ^ ((crc & 1) ? 0xEDB88320ULL : 0);
+ return crc;
+}
+
+/* CALLED FROM GENERATED CODE: CLEAN HELPER */
+ULong arm64g_calc_crc32h ( ULong acc, ULong bits )
+{
+ UInt i;
+ ULong crc = (bits & 0xFFFFULL) ^ acc;
+ for (i = 0; i < 16; i++)
+ crc = (crc >> 1) ^ ((crc & 1) ? 0xEDB88320ULL : 0);
+ return crc;
+}
+
+/* CALLED FROM GENERATED CODE: CLEAN HELPER */
+ULong arm64g_calc_crc32w ( ULong acc, ULong bits )
+{
+ UInt i;
+ ULong crc = (bits & 0xFFFFFFFFULL) ^ acc;
+ for (i = 0; i < 32; i++)
+ crc = (crc >> 1) ^ ((crc & 1) ? 0xEDB88320ULL : 0);
+ return crc;
+}
+
+/* CALLED FROM GENERATED CODE: CLEAN HELPER */
+ULong arm64g_calc_crc32x ( ULong acc, ULong bits )
+{
+ UInt i;
+ ULong crc = bits ^ acc;
+ for (i = 0; i < 64; i++)
+ crc = (crc >> 1) ^ ((crc & 1) ? 0xEDB88320ULL : 0);
+ return crc;
+
+}
+
+/* CALLED FROM GENERATED CODE: CLEAN HELPER */
+ULong arm64g_calc_crc32cb ( ULong acc, ULong bits )
+{
+ UInt i;
+ ULong crc = (bits & 0xFFULL) ^ acc;
+ for (i = 0; i < 8; i++)
+ crc = (crc >> 1) ^ ((crc & 1) ? 0x82F63B78ULL : 0);
+ return crc;
+}
+
+/* CALLED FROM GENERATED CODE: CLEAN HELPER */
+ULong arm64g_calc_crc32ch ( ULong acc, ULong bits )
+{
+ UInt i;
+ ULong crc = (bits & 0xFFFFULL) ^ acc;
+ for (i = 0; i < 16; i++)
+ crc = (crc >> 1) ^ ((crc & 1) ? 0x82F63B78ULL : 0);
+ return crc;
+}
+
+/* CALLED FROM GENERATED CODE: CLEAN HELPER */
+ULong arm64g_calc_crc32cw ( ULong acc, ULong bits )
+{
+ UInt i;
+ ULong crc = (bits & 0xFFFFFFFFULL) ^ acc;
+ for (i = 0; i < 32; i++)
+ crc = (crc >> 1) ^ ((crc & 1) ? 0x82F63B78ULL : 0);
+ return crc;
+}
+
+/* CALLED FROM GENERATED CODE: CLEAN HELPER */
+ULong arm64g_calc_crc32cx ( ULong acc, ULong bits )
+{
+ UInt i;
+ ULong crc = bits ^ acc;
+ for (i = 0; i < 64; i++)
+ crc = (crc >> 1) ^ ((crc & 1) ? 0x82F63B78ULL : 0);
+ return crc;
+}
+
+
/* CALLED FROM GENERATED CODE */
/* DIRTY HELPER (non-referentially-transparent) */
/* Horrible hack. On non-arm64 platforms, return 0. */
Modified: trunk/priv/guest_arm64_toIR.c
==============================================================================
--- trunk/priv/guest_arm64_toIR.c (original)
+++ trunk/priv/guest_arm64_toIR.c Thu Aug 4 10:13:11 2016
@@ -3497,6 +3497,75 @@
nameIReg32orZR(mm), nameIReg64orZR(aa));
return True;
}
+
+ /* -------------------- CRC32/CRC32C -------------------- */
+ /* 31 30 20 15 11 9 4
+ sf 00 1101 0110 m 0100 sz n d CRC32<sz> Wd, Wn, Wm|Xm
+ sf 00 1101 0110 m 0101 sz n d CRC32C<sz> Wd, Wn, Wm|Xm
+ */
+ if (INSN(30,21) == BITS10(0,0,1,1,0,1,0,1,1,0)
+ && INSN(15,13) == BITS3(0,1,0)) {
+ UInt bitSF = INSN(31,31);
+ UInt mm = INSN(20,16);
+ UInt bitC = INSN(12,12);
+ UInt sz = INSN(11,10);
+ UInt nn = INSN(9,5);
+ UInt dd = INSN(4,0);
+ vassert(sz >= 0 && sz <= 3);
+ if ((bitSF == 0 && sz <= BITS2(1,0))
+ || (bitSF == 1 && sz == BITS2(1,1))) {
+ UInt ix = (bitC == 1 ? 4 : 0) | sz;
+ void* helpers[8]
+ = { &arm64g_calc_crc32b, &arm64g_calc_crc32h,
+ &arm64g_calc_crc32w, &arm64g_calc_crc32x,
+ &arm64g_calc_crc32cb, &arm64g_calc_crc32ch,
+ &arm64g_calc_crc32cw, &arm64g_calc_crc32cx };
+ const HChar* hNames[8]
+ = { "arm64g_calc_crc32b", "arm64g_calc_crc32h",
+ "arm64g_calc_crc32w", "arm64g_calc_crc32x",
+ "arm64g_calc_crc32cb", "arm64g_calc_crc32ch",
+ "arm64g_calc_crc32cw", "arm64g_calc_crc32cx" };
+ const HChar* iNames[8]
+ = { "crc32b", "crc32h", "crc32w", "crc32x",
+ "crc32cb", "crc32ch", "crc32cw", "crc32cx" };
+
+ IRTemp srcN = newTemp(Ity_I64);
+ assign(srcN, unop(Iop_32Uto64, unop(Iop_64to32, getIReg64orZR(nn))));
+
+ IRTemp srcM = newTemp(Ity_I64);
+ IRExpr* at64 = getIReg64orZR(mm);
+ switch (sz) {
+ case BITS2(0,0):
+ assign(srcM, binop(Iop_And64, at64, mkU64(0xFF))); break;
+ case BITS2(0,1):
+ assign(srcM, binop(Iop_And64, at64, mkU64(0xFFFF))); break;
+ case BITS2(1,0):
+ assign(srcM, binop(Iop_And64, at64, mkU64(0xFFFFFFFF))); break;
+ case BITS2(1,1):
+ assign(srcM, at64); break;
+ default:
+ vassert(0);
+ }
+
+ vassert(ix >= 0 && ix <= 7);
+
+ putIReg64orZR(
+ dd,
+ unop(Iop_32Uto64,
+ unop(Iop_64to32,
+ mkIRExprCCall(Ity_I64, 0/*regparm*/,
+ hNames[ix], helpers[ix],
+ mkIRExprVec_2(mkexpr(srcN),
+ mkexpr(srcM))))));
+
+ DIP("%s %s, %s, %s\n", iNames[ix],
+ nameIReg32orZR(dd),
+ nameIReg32orZR(nn), nameIRegOrZR(bitSF == 1, mm));
+ return True;
+ }
+ /* fall through */
+ }
+
vex_printf("ARM64 front end: data_processing_register\n");
return False;
# undef INSN
|