Add support for SPARC T4 crypto instructions.

include/opcode/

	* sparc.h: Document new arg code' )' for crypto RS3
	immediates.

opcodes/

	* sparc-dis.c (print_insn_sparc): Handle ')'.
	* sparc-opc.c (sparc_opcodes): Add crypto instructions.

gas/

	* config/tc-sparc.c (sparc_ip): Likewise.  Accept instruction
	names containing "_".
	(sparc_arch_table): Add sparc4, v8pluse, and v9e.  Add crypto
	hwcap masks to v8plusv and v9v.

gas/testsuite/

	* gas/sparc/crypto.s: New file.
	* gas/sparc/crypto.d: New file.
	* gas/sparc/sparc.exp: Run crypto test.
This commit is contained in:
David S. Miller 2012-04-27 18:02:35 +00:00
parent ec668d69b9
commit 6cda13266f
11 changed files with 356 additions and 3 deletions

View file

@ -1,5 +1,10 @@
2012-04-27 David S. Miller <davem@davemloft.net>
* config/tc-sparc.c (sparc_ip): Likewise. Accept instruction
names containing "_".
(sparc_arch_table): Add sparc4, v8pluse, and v9e. Add crypto
hwcap masks to v8plusv and v9v.
* config/tc-sparc.c (sparc_arch_table): Rework to use HWCAP_*
masks.
(sparc_md_end): No longer need to translate hwcap_seen values into

View file

@ -245,6 +245,7 @@ static struct sparc_arch {
{ "sparcfmaf", "v9b", v9, 0, 1, HWCAP_MUL32|HWCAP_DIV32|HWCAP_FSMULD|HWCAP_POPC|HWCAP_VIS|HWCAP_VIS2|HWCAP_FMAF },
{ "sparcima", "v9b", v9, 0, 1, HWCAP_MUL32|HWCAP_DIV32|HWCAP_FSMULD|HWCAP_POPC|HWCAP_VIS|HWCAP_VIS2|HWCAP_FMAF|HWCAP_IMA },
{ "sparcvis3", "v9b", v9, 0, 1, HWCAP_MUL32|HWCAP_DIV32|HWCAP_FSMULD|HWCAP_POPC|HWCAP_VIS|HWCAP_VIS2|HWCAP_FMAF|HWCAP_VIS3|HWCAP_HPC },
{ "sparc4", "v9b", v9, 0, 1, HWCAP_MUL32|HWCAP_DIV32|HWCAP_FSMULD|HWCAP_POPC|HWCAP_VIS|HWCAP_VIS2|HWCAP_FMAF|HWCAP_VIS3|HWCAP_HPC|HWCAP_RANDOM|HWCAP_TRANS|HWCAP_FJFMAU|HWCAP_AES|HWCAP_DES|HWCAP_KASUMI|HWCAP_CAMELLIA|HWCAP_MD5|HWCAP_SHA1|HWCAP_SHA256|HWCAP_SHA512|HWCAP_MPMUL|HWCAP_MONT|HWCAP_CRC32C },
{ "sparcvis3r", "v9b", v9, 0, 1, HWCAP_MUL32|HWCAP_DIV32|HWCAP_FSMULD|HWCAP_POPC|HWCAP_VIS|HWCAP_VIS2|HWCAP_FMAF|HWCAP_VIS3|HWCAP_HPC|HWCAP_RANDOM|HWCAP_TRANS|HWCAP_FJFMAU },
{ "sparclet", "sparclet", sparclet, 32, 1, HWCAP_MUL32|HWCAP_DIV32|HWCAP_FSMULD },
{ "sparclite", "sparclite", sparclite, 32, 1, HWCAP_MUL32|HWCAP_DIV32|HWCAP_FSMULD },
@ -254,13 +255,15 @@ static struct sparc_arch {
{ "v8plusb", "v9b", v9, 0, 1, HWCAP_MUL32|HWCAP_DIV32|HWCAP_FSMULD|HWCAP_POPC|HWCAP_V8PLUS|HWCAP_VIS|HWCAP_VIS2 },
{ "v8plusc", "v9b", v9, 0, 1, HWCAP_MUL32|HWCAP_DIV32|HWCAP_FSMULD|HWCAP_POPC|HWCAP_V8PLUS|HWCAP_VIS|HWCAP_VIS2|HWCAP_ASI_BLK_INIT },
{ "v8plusd", "v9b", v9, 0, 1, HWCAP_MUL32|HWCAP_DIV32|HWCAP_FSMULD|HWCAP_POPC|HWCAP_V8PLUS|HWCAP_VIS|HWCAP_VIS2|HWCAP_ASI_BLK_INIT|HWCAP_FMAF|HWCAP_VIS3|HWCAP_HPC },
{ "v8plusv", "v9b", v9, 0, 1, HWCAP_MUL32|HWCAP_DIV32|HWCAP_FSMULD|HWCAP_POPC|HWCAP_V8PLUS|HWCAP_VIS|HWCAP_VIS2|HWCAP_ASI_BLK_INIT|HWCAP_FMAF|HWCAP_VIS3|HWCAP_HPC|HWCAP_RANDOM|HWCAP_TRANS|HWCAP_FJFMAU|HWCAP_IMA|HWCAP_ASI_CACHE_SPARING },
{ "v8pluse", "v9b", v9, 0, 1, HWCAP_MUL32|HWCAP_DIV32|HWCAP_FSMULD|HWCAP_POPC|HWCAP_V8PLUS|HWCAP_VIS|HWCAP_VIS2|HWCAP_ASI_BLK_INIT|HWCAP_FMAF|HWCAP_VIS3|HWCAP_HPC|HWCAP_AES|HWCAP_DES|HWCAP_KASUMI|HWCAP_CAMELLIA|HWCAP_MD5|HWCAP_SHA1|HWCAP_SHA256|HWCAP_SHA512|HWCAP_MPMUL|HWCAP_MONT|HWCAP_CRC32C },
{ "v8plusv", "v9b", v9, 0, 1, HWCAP_MUL32|HWCAP_DIV32|HWCAP_FSMULD|HWCAP_POPC|HWCAP_V8PLUS|HWCAP_VIS|HWCAP_VIS2|HWCAP_ASI_BLK_INIT|HWCAP_FMAF|HWCAP_VIS3|HWCAP_HPC|HWCAP_RANDOM|HWCAP_TRANS|HWCAP_FJFMAU|HWCAP_IMA|HWCAP_ASI_CACHE_SPARING|HWCAP_AES|HWCAP_DES|HWCAP_KASUMI|HWCAP_CAMELLIA|HWCAP_MD5|HWCAP_SHA1|HWCAP_SHA256|HWCAP_SHA512|HWCAP_MPMUL|HWCAP_MONT|HWCAP_CRC32C },
{ "v9", "v9", v9, 0, 1, HWCAP_MUL32|HWCAP_DIV32|HWCAP_FSMULD|HWCAP_POPC },
{ "v9a", "v9a", v9, 0, 1, HWCAP_MUL32|HWCAP_DIV32|HWCAP_FSMULD|HWCAP_POPC|HWCAP_VIS },
{ "v9b", "v9b", v9, 0, 1, HWCAP_MUL32|HWCAP_DIV32|HWCAP_FSMULD|HWCAP_POPC|HWCAP_VIS|HWCAP_VIS2 },
{ "v9c", "v9b", v9, 0, 1, HWCAP_MUL32|HWCAP_DIV32|HWCAP_FSMULD|HWCAP_POPC|HWCAP_VIS|HWCAP_VIS2|HWCAP_ASI_BLK_INIT },
{ "v9d", "v9b", v9, 0, 1, HWCAP_MUL32|HWCAP_DIV32|HWCAP_FSMULD|HWCAP_POPC|HWCAP_VIS|HWCAP_VIS2|HWCAP_ASI_BLK_INIT|HWCAP_FMAF|HWCAP_VIS3|HWCAP_HPC },
{ "v9v", "v9b", v9, 0, 1, HWCAP_MUL32|HWCAP_DIV32|HWCAP_FSMULD|HWCAP_POPC|HWCAP_VIS|HWCAP_VIS2|HWCAP_ASI_BLK_INIT|HWCAP_FMAF|HWCAP_VIS3|HWCAP_HPC|HWCAP_RANDOM|HWCAP_TRANS|HWCAP_FJFMAU|HWCAP_IMA|HWCAP_ASI_CACHE_SPARING },
{ "v9e", "v9b", v9, 0, 1, HWCAP_MUL32|HWCAP_DIV32|HWCAP_FSMULD|HWCAP_POPC|HWCAP_VIS|HWCAP_VIS2|HWCAP_ASI_BLK_INIT|HWCAP_FMAF|HWCAP_VIS3|HWCAP_HPC|HWCAP_AES|HWCAP_DES|HWCAP_KASUMI|HWCAP_CAMELLIA|HWCAP_MD5|HWCAP_SHA1|HWCAP_SHA256|HWCAP_SHA512|HWCAP_MPMUL|HWCAP_MONT|HWCAP_CRC32C },
{ "v9v", "v9b", v9, 0, 1, HWCAP_MUL32|HWCAP_DIV32|HWCAP_FSMULD|HWCAP_POPC|HWCAP_VIS|HWCAP_VIS2|HWCAP_ASI_BLK_INIT|HWCAP_FMAF|HWCAP_VIS3|HWCAP_HPC|HWCAP_RANDOM|HWCAP_TRANS|HWCAP_FJFMAU|HWCAP_IMA|HWCAP_ASI_CACHE_SPARING|HWCAP_AES|HWCAP_DES|HWCAP_KASUMI|HWCAP_CAMELLIA|HWCAP_MD5|HWCAP_SHA1|HWCAP_SHA256|HWCAP_SHA512|HWCAP_MPMUL|HWCAP_MONT|HWCAP_CRC32C },
/* This exists to allow configure.in/Makefile.in to pass one
value to specify both the default machine and default word size. */
{ "v9-64", "v9", v9, 64, 0, HWCAP_MUL32|HWCAP_DIV32|HWCAP_FSMULD|HWCAP_POPC },
@ -1487,7 +1490,7 @@ sparc_ip (char *str, const struct sparc_opcode **pinsn)
{
do
++s;
while (ISLOWER (*s) || ISDIGIT (*s));
while (ISLOWER (*s) || ISDIGIT (*s) || *s == '_');
}
switch (*s)
@ -1799,6 +1802,47 @@ sparc_ip (char *str, const struct sparc_opcode **pinsn)
the_insn.reloc = BFD_RELOC_SPARC_10;
goto immediate;
case ')':
if (*s == ' ')
s++;
if ((s[0] == '0' && s[1] == 'x' && ISXDIGIT (s[2]))
|| ISDIGIT (*s))
{
long num = 0;
if (s[0] == '0' && s[1] == 'x')
{
s += 2;
while (ISXDIGIT (*s))
{
num <<= 4;
num |= hex_value (*s);
++s;
}
}
else
{
while (ISDIGIT (*s))
{
num = num * 10 + *s - '0';
++s;
}
}
if (num < 0 || num > 31)
{
error_message = _(": crypto immediate must be between 0 and 31");
goto error;
}
opcode |= RS3 (num);
continue;
}
else
{
error_message = _(": expecting crypto immediate");
goto error;
}
case 'X':
/* V8 systems don't understand BFD_RELOC_SPARC_5. */
if (SPARC_OPCODE_ARCH_V9_P (max_architecture))

View file

@ -1,3 +1,9 @@
2012-04-27 David S. Miller <davem@davemloft.net>
* gas/sparc/crypto.s: New file.
* gas/sparc/crypto.d: New file.
* gas/sparc/sparc.exp: Run crypto test.
2012-04-12 David S. Miller <davem@davemloft.net>
* gas/sparc/reloc64.s: Add abs34 code model tests.

View file

@ -0,0 +1,132 @@
#as: -Av9v
#objdump: -dr
#name: sparc CRYPTO
.*: +file format .*sparc.*
Disassembly of section .text:
0+ <.text>:
0: 81 b0 28 00 md5
4: 81 b0 28 20 sha1
8: 81 b0 28 40 sha256
c: 81 b0 28 60 sha512
10: 8d b0 a8 e4 crc32c %f2, %f4, %f6
14: 91 b1 26 06 aes_kexpand0 %f4, %f6, %f8
18: 94 41 8f 08 aes_kexpand1 %f6, %f8, 0x7, %f10
1c: 94 41 8d 08 aes_kexpand1 %f6, %f8, 0x6, %f10
20: 99 b2 26 2a aes_kexpand2 %f8, %f10, %f12
24: a0 42 9c 0c aes_eround01 %f10, %f12, %f14, %f16
28: a4 43 20 2e aes_eround23 %f12, %f14, %f16, %f18
2c: a8 43 a4 50 aes_dround01 %f14, %f16, %f18, %f20
30: ac 44 28 72 aes_dround23 %f16, %f18, %f20, %f22
34: b0 44 ac 94 aes_eround01_l %f18, %f20, %f22, %f24
38: b4 45 30 b6 aes_eround23_l %f20, %f22, %f24, %f26
3c: b8 45 b4 d8 aes_dround01_l %f22, %f24, %f26, %f28
40: bc 46 38 fa aes_dround23_l %f24, %f26, %f28, %f30
44: 87 b0 66 80 des_ip %f32, %f34
48: 8b b0 e6 a0 des_iip %f34, %f36
4c: 8f b1 66 c7 des_kexpand %f36, 7, %f38
50: 9a 41 d7 29 des_round %f38, %f40, %f42, %f44
54: 9f b2 e7 0d kasumi_fi_fi %f42, %f44, %f46
58: a6 43 63 4f kasumi_fl_xor %f44, %f46, %f48, %f50
5c: aa 43 e7 71 kasumi_fi_xor %f46, %f48, %f50, %f52
60: af b4 e7 95 camellia_fi %f50, %f52, %f54
64: b3 b5 67 b7 camellia_fli %f52, %f54, %f56
68: ba 45 f7 99 camellia_f %f54, %f56, %f58, %f60
6c: 81 b0 29 00 mpmul 0
70: 81 b0 29 01 mpmul 1
74: 81 b0 29 02 mpmul 2
78: 81 b0 29 03 mpmul 3
7c: 81 b0 29 04 mpmul 4
80: 81 b0 29 05 mpmul 5
84: 81 b0 29 06 mpmul 6
88: 81 b0 29 07 mpmul 7
8c: 81 b0 29 08 mpmul 8
90: 81 b0 29 09 mpmul 9
94: 81 b0 29 0a mpmul 0xa
98: 81 b0 29 0b mpmul 0xb
9c: 81 b0 29 0c mpmul 0xc
a0: 81 b0 29 0d mpmul 0xd
a4: 81 b0 29 0e mpmul 0xe
a8: 81 b0 29 0f mpmul 0xf
ac: 81 b0 29 10 mpmul 0x10
b0: 81 b0 29 11 mpmul 0x11
b4: 81 b0 29 12 mpmul 0x12
b8: 81 b0 29 13 mpmul 0x13
bc: 81 b0 29 14 mpmul 0x14
c0: 81 b0 29 15 mpmul 0x15
c4: 81 b0 29 16 mpmul 0x16
c8: 81 b0 29 17 mpmul 0x17
cc: 81 b0 29 18 mpmul 0x18
d0: 81 b0 29 19 mpmul 0x19
d4: 81 b0 29 1a mpmul 0x1a
d8: 81 b0 29 1b mpmul 0x1b
dc: 81 b0 29 1c mpmul 0x1c
e0: 81 b0 29 1d mpmul 0x1d
e4: 81 b0 29 1e mpmul 0x1e
e8: 81 b0 29 1f mpmul 0x1f
ec: 81 b0 29 20 montmul 0
f0: 81 b0 29 21 montmul 1
f4: 81 b0 29 22 montmul 2
f8: 81 b0 29 23 montmul 3
fc: 81 b0 29 24 montmul 4
100: 81 b0 29 25 montmul 5
104: 81 b0 29 26 montmul 6
108: 81 b0 29 27 montmul 7
10c: 81 b0 29 28 montmul 8
110: 81 b0 29 29 montmul 9
114: 81 b0 29 2a montmul 0xa
118: 81 b0 29 2b montmul 0xb
11c: 81 b0 29 2c montmul 0xc
120: 81 b0 29 2d montmul 0xd
124: 81 b0 29 2e montmul 0xe
128: 81 b0 29 2f montmul 0xf
12c: 81 b0 29 30 montmul 0x10
130: 81 b0 29 31 montmul 0x11
134: 81 b0 29 32 montmul 0x12
138: 81 b0 29 33 montmul 0x13
13c: 81 b0 29 34 montmul 0x14
140: 81 b0 29 35 montmul 0x15
144: 81 b0 29 36 montmul 0x16
148: 81 b0 29 37 montmul 0x17
14c: 81 b0 29 38 montmul 0x18
150: 81 b0 29 39 montmul 0x19
154: 81 b0 29 3a montmul 0x1a
158: 81 b0 29 3b montmul 0x1b
15c: 81 b0 29 3c montmul 0x1c
160: 81 b0 29 3d montmul 0x1d
164: 81 b0 29 3e montmul 0x1e
168: 81 b0 29 3f montmul 0x1f
16c: 81 b0 29 40 montsqr 0
170: 81 b0 29 41 montsqr 1
174: 81 b0 29 42 montsqr 2
178: 81 b0 29 43 montsqr 3
17c: 81 b0 29 44 montsqr 4
180: 81 b0 29 45 montsqr 5
184: 81 b0 29 46 montsqr 6
188: 81 b0 29 47 montsqr 7
18c: 81 b0 29 48 montsqr 8
190: 81 b0 29 49 montsqr 9
194: 81 b0 29 4a montsqr 0xa
198: 81 b0 29 4b montsqr 0xb
19c: 81 b0 29 4c montsqr 0xc
1a0: 81 b0 29 4d montsqr 0xd
1a4: 81 b0 29 4e montsqr 0xe
1a8: 81 b0 29 4f montsqr 0xf
1ac: 81 b0 29 50 montsqr 0x10
1b0: 81 b0 29 51 montsqr 0x11
1b4: 81 b0 29 52 montsqr 0x12
1b8: 81 b0 29 53 montsqr 0x13
1bc: 81 b0 29 54 montsqr 0x14
1c0: 81 b0 29 55 montsqr 0x15
1c4: 81 b0 29 56 montsqr 0x16
1c8: 81 b0 29 57 montsqr 0x17
1cc: 81 b0 29 58 montsqr 0x18
1d0: 81 b0 29 59 montsqr 0x19
1d4: 81 b0 29 5a montsqr 0x1a
1d8: 81 b0 29 5b montsqr 0x1b
1dc: 81 b0 29 5c montsqr 0x1c
1e0: 81 b0 29 5d montsqr 0x1d
1e4: 81 b0 29 5e montsqr 0x1e
1e8: 81 b0 29 5f montsqr 0x1f

View file

@ -0,0 +1,125 @@
# Test CRYPTO instructions
.text
md5
sha1
sha256
sha512
crc32c %f2, %f4, %f6
aes_kexpand0 %f4, %f6, %f8
aes_kexpand1 %f6, %f8, 0x7, %f10
aes_kexpand1 %f6, %f8, 6, %f10
aes_kexpand2 %f8, %f10, %f12
aes_eround01 %f10, %f12, %f14, %f16
aes_eround23 %f12, %f14, %f16, %f18
aes_dround01 %f14, %f16, %f18, %f20
aes_dround23 %f16, %f18, %f20, %f22
aes_eround01_l %f18, %f20, %f22, %f24
aes_eround23_l %f20, %f22, %f24, %f26
aes_dround01_l %f22, %f24, %f26, %f28
aes_dround23_l %f24, %f26, %f28, %f30
des_ip %f32, %f34
des_iip %f34, %f36
des_kexpand %f36, 7, %f38
des_round %f38, %f40, %f42, %f44
kasumi_fi_fi %f42, %f44, %f46
kasumi_fl_xor %f44, %f46, %f48, %f50
kasumi_fi_xor %f46, %f48, %f50, %f52
camellia_fi %f50, %f52, %f54
camellia_fli %f52, %f54, %f56
camellia_f %f54, %f56, %f58, %f60
mpmul 0
mpmul 1
mpmul 2
mpmul 3
mpmul 4
mpmul 5
mpmul 6
mpmul 7
mpmul 8
mpmul 9
mpmul 10
mpmul 11
mpmul 12
mpmul 13
mpmul 14
mpmul 15
mpmul 16
mpmul 17
mpmul 18
mpmul 19
mpmul 20
mpmul 21
mpmul 22
mpmul 23
mpmul 24
mpmul 25
mpmul 26
mpmul 27
mpmul 28
mpmul 29
mpmul 30
mpmul 31
montmul 0
montmul 1
montmul 2
montmul 3
montmul 4
montmul 5
montmul 6
montmul 7
montmul 8
montmul 9
montmul 10
montmul 11
montmul 12
montmul 13
montmul 14
montmul 15
montmul 16
montmul 17
montmul 18
montmul 19
montmul 20
montmul 21
montmul 22
montmul 23
montmul 24
montmul 25
montmul 26
montmul 27
montmul 28
montmul 29
montmul 30
montmul 31
montsqr 0
montsqr 1
montsqr 2
montsqr 3
montsqr 4
montsqr 5
montsqr 6
montsqr 7
montsqr 8
montsqr 9
montsqr 10
montsqr 11
montsqr 12
montsqr 13
montsqr 14
montsqr 15
montsqr 16
montsqr 17
montsqr 18
montsqr 19
montsqr 20
montsqr 21
montsqr 22
montsqr 23
montsqr 24
montsqr 25
montsqr 26
montsqr 27
montsqr 28
montsqr 29
montsqr 30
montsqr 31

View file

@ -62,6 +62,7 @@ if [istarget sparc*-*-*] {
run_dump_test "pc2210"
run_dump_test "hpcvis3"
run_dump_test "ima"
run_dump_test "crypto"
run_list_test "pr4587" ""
}

View file

@ -1,5 +1,8 @@
2012-04-27 David S. Miller <davem@davemloft.net>
* sparc.h: Document new arg code' )' for crypto RS3
immediates.
* sparc.h (struct sparc_opcode): New field 'hwcaps'.
F_MUL32, F_DIV32, F_FDMULD, F_V8PLUS, F_POPC, F_VIS, F_VIS2,
F_ASI_BLK_INIT, F_FMAF, F_VIS3, F_HPC, F_RANDOM, F_TRANS,

View file

@ -224,6 +224,7 @@ typedef struct sparc_opcode
_ Ancillary state register in rd (v9a)
/ Ancillary state register in rs1 (v9a)
( entire floating point state register (%efsr)
) 5 bit immediate placed in RS3 field
= 2+8 bit PC relative immediate. (v9) */
#define OP2(x) (((x) & 0x7) << 22) /* Op2 field of format2 insns. */

View file

@ -1,5 +1,8 @@
2012-04-27 David S. Miller <davem@davemloft.net>
* sparc-dis.c (print_insn_sparc): Handle ')'.
* sparc-opc.c (sparc_opcodes): Add crypto instructions.
* sparc-opc.c (sparc_opcodes): Rework table to put HWCAP values
into new struct sparc_opcode 'hwcaps' field instead of 'flags'.

View file

@ -704,6 +704,10 @@ print_insn_sparc (bfd_vma memaddr, disassemble_info *info)
}
break;
case ')': /* 5 bit unsigned immediate from RS3. */
(info->fprintf_func) (stream, "%#x", X_RS3 (insn));
break;
case 'X': /* 5 bit unsigned immediate. */
case 'Y': /* 6 bit unsigned immediate. */
{

View file

@ -1907,6 +1907,35 @@ SLCBCC("cbnefr", 15),
{ "fucmpne8", F3F(2, 0x36, 0x122), F3F(~2, ~0x36, ~0x122), "v,B,d", 0, HWCAP_VIS3, v9b },
{ "fucmpgt8", F3F(2, 0x36, 0x128), F3F(~2, ~0x36, ~0x128), "v,B,d", 0, HWCAP_VIS3, v9b },
{ "fucmpeq8", F3F(2, 0x36, 0x12a), F3F(~2, ~0x36, ~0x12a), "v,B,d", 0, HWCAP_VIS3, v9b },
{"aes_kexpand0",F3F(2, 0x36, 0x130), F3F(~2, ~0x36, ~0x130), "v,B,H", F_FLOAT, HWCAP_AES, v9b },
{"aes_kexpand2",F3F(2, 0x36, 0x131), F3F(~2, ~0x36, ~0x131), "v,B,H", F_FLOAT, HWCAP_AES, v9b },
{ "des_ip", F3F(2, 0x36, 0x134), F3F(~2, ~0x36, ~0x134), "v,H", F_FLOAT, HWCAP_DES, v9b },
{ "des_iip", F3F(2, 0x36, 0x135), F3F(~2, ~0x36, ~0x135), "v,H", F_FLOAT, HWCAP_DES, v9b },
{ "des_kexpand",F3F(2, 0x36, 0x136), F3F(~2, ~0x36, ~0x136), "v,X,H", F_FLOAT, HWCAP_DES, v9b },
{"kasumi_fi_fi",F3F(2, 0x36, 0x138), F3F(~2, ~0x36, ~0x138), "v,B,H", F_FLOAT, HWCAP_KASUMI, v9b },
{ "camellia_fi",F3F(2, 0x36, 0x13c), F3F(~2, ~0x36, ~0x13c), "v,B,H", F_FLOAT, HWCAP_CAMELLIA, v9b },
{"camellia_fli",F3F(2, 0x36, 0x13d), F3F(~2, ~0x36, ~0x13d), "v,B,H", F_FLOAT, HWCAP_CAMELLIA, v9b },
{ "md5", F3F(2, 0x36, 0x140), F3F(~2, ~0x36, ~0x140), "", F_FLOAT, HWCAP_MD5, v9b },
{ "sha1", F3F(2, 0x36, 0x141), F3F(~2, ~0x36, ~0x141), "", F_FLOAT, HWCAP_SHA1, v9b },
{ "sha256", F3F(2, 0x36, 0x142), F3F(~2, ~0x36, ~0x142), "", F_FLOAT, HWCAP_SHA256, v9b },
{ "sha512", F3F(2, 0x36, 0x143), F3F(~2, ~0x36, ~0x143), "", F_FLOAT, HWCAP_SHA512, v9b },
{ "crc32c", F3F(2, 0x36, 0x147), F3F(~2, ~0x36, ~0x147), "v,B,H", F_FLOAT, HWCAP_CRC32C, v9b },
{ "mpmul", F3F(2, 0x36, 0x148), F3F(~2, ~0x36, ~0x148), "X", F_FLOAT, HWCAP_MPMUL, v9b },
{ "montmul", F3F(2, 0x36, 0x149), F3F(~2, ~0x36, ~0x149), "X", F_FLOAT, HWCAP_MONT, v9b },
{ "montsqr", F3F(2, 0x36, 0x14a), F3F(~2, ~0x36, ~0x14a), "X", F_FLOAT, HWCAP_MONT, v9b },
{"aes_eround01", F2(2, 0x19)|OPF_LOW4(0), F2(~2, ~0x19)|OPF_LOW4(~0), "v,B,5,H", F_FLOAT, HWCAP_AES, v9b },
{"aes_eround23", F2(2, 0x19)|OPF_LOW4(1), F2(~2, ~0x19)|OPF_LOW4(~1), "v,B,5,H", F_FLOAT, HWCAP_AES, v9b },
{"aes_dround01", F2(2, 0x19)|OPF_LOW4(2), F2(~2, ~0x19)|OPF_LOW4(~2), "v,B,5,H", F_FLOAT, HWCAP_AES, v9b },
{"aes_dround23", F2(2, 0x19)|OPF_LOW4(3), F2(~2, ~0x19)|OPF_LOW4(~3), "v,B,5,H", F_FLOAT, HWCAP_AES, v9b },
{"aes_eround01_l",F2(2, 0x19)|OPF_LOW4(4), F2(~2, ~0x19)|OPF_LOW4(~4), "v,B,5,H", F_FLOAT, HWCAP_AES, v9b },
{"aes_eround23_l",F2(2, 0x19)|OPF_LOW4(5), F2(~2, ~0x19)|OPF_LOW4(~5), "v,B,5,H", F_FLOAT, HWCAP_AES, v9b },
{"aes_dround01_l",F2(2, 0x19)|OPF_LOW4(6), F2(~2, ~0x19)|OPF_LOW4(~6), "v,B,5,H", F_FLOAT, HWCAP_AES, v9b },
{"aes_dround23_l",F2(2, 0x19)|OPF_LOW4(7), F2(~2, ~0x19)|OPF_LOW4(~7), "v,B,5,H", F_FLOAT, HWCAP_AES, v9b },
{"aes_kexpand1", F2(2, 0x19)|OPF_LOW4(8), F2(~2, ~0x19)|OPF_LOW4(~8), "v,B,),H", F_FLOAT, HWCAP_AES, v9b },
{"des_round", F2(2, 0x19)|OPF_LOW4(9), F2(~2, ~0x19)|OPF_LOW4(~9), "v,B,5,H", F_FLOAT, HWCAP_DES, v9b },
{"kasumi_fl_xor", F2(2, 0x19)|OPF_LOW4(10), F2(~2, ~0x19)|OPF_LOW4(~10), "v,B,5,H", F_FLOAT, HWCAP_KASUMI, v9b },
{"kasumi_fi_xor", F2(2, 0x19)|OPF_LOW4(11), F2(~2, ~0x19)|OPF_LOW4(~11), "v,B,5,H", F_FLOAT, HWCAP_KASUMI, v9b },
{"camellia_f", F2(2, 0x19)|OPF_LOW4(12), F2(~2, ~0x19)|OPF_LOW4(~12), "v,B,5,H", F_FLOAT, HWCAP_CAMELLIA, v9b },
{ "flcmps", CMPFCC(0)|F3F(2, 0x36, 0x151), CMPFCC(~0)|F3F(~2, ~0x36, ~0x151), "6,e,f", F_FLOAT, HWCAP_HPC, v9b },
{ "flcmps", CMPFCC(1)|F3F(2, 0x36, 0x151), CMPFCC(~1)|F3F(~2, ~0x36, ~0x151), "7,e,f", F_FLOAT, HWCAP_HPC, v9b },
{ "flcmps", CMPFCC(2)|F3F(2, 0x36, 0x151), CMPFCC(~2)|F3F(~2, ~0x36, ~0x151), "8,e,f", F_FLOAT, HWCAP_HPC, v9b },