aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authorDavid S. Miller <davem@redhat.com>2012-04-27 18:02:35 +0000
committerDavid S. Miller <davem@redhat.com>2012-04-27 18:02:35 +0000
commit6cda13266f4d767456ccd5ee9f4c8539b463fc0e (patch)
tree69e6d6b48d1d5b2a1f7b214b1ef7362ca973c5d9 /gas
parentec668d69b9517c6344f8c659f2014197b780f2da (diff)
downloadgdb-6cda13266f4d767456ccd5ee9f4c8539b463fc0e.zip
gdb-6cda13266f4d767456ccd5ee9f4c8539b463fc0e.tar.gz
gdb-6cda13266f4d767456ccd5ee9f4c8539b463fc0e.tar.bz2
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.
Diffstat (limited to 'gas')
-rw-r--r--gas/ChangeLog5
-rw-r--r--gas/config/tc-sparc.c50
-rw-r--r--gas/testsuite/ChangeLog6
-rw-r--r--gas/testsuite/gas/sparc/crypto.d132
-rw-r--r--gas/testsuite/gas/sparc/crypto.s125
-rw-r--r--gas/testsuite/gas/sparc/sparc.exp1
6 files changed, 316 insertions, 3 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 0ca917e..ff8b2ff 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -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
diff --git a/gas/config/tc-sparc.c b/gas/config/tc-sparc.c
index 37bbbdd..f2f0ae8 100644
--- a/gas/config/tc-sparc.c
+++ b/gas/config/tc-sparc.c
@@ -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))
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog
index 79af626..a3b3a32 100644
--- a/gas/testsuite/ChangeLog
+++ b/gas/testsuite/ChangeLog
@@ -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.
diff --git a/gas/testsuite/gas/sparc/crypto.d b/gas/testsuite/gas/sparc/crypto.d
new file mode 100644
index 0000000..734317d
--- /dev/null
+++ b/gas/testsuite/gas/sparc/crypto.d
@@ -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
diff --git a/gas/testsuite/gas/sparc/crypto.s b/gas/testsuite/gas/sparc/crypto.s
new file mode 100644
index 0000000..217a742
--- /dev/null
+++ b/gas/testsuite/gas/sparc/crypto.s
@@ -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
diff --git a/gas/testsuite/gas/sparc/sparc.exp b/gas/testsuite/gas/sparc/sparc.exp
index 65e84ce..f2ad181 100644
--- a/gas/testsuite/gas/sparc/sparc.exp
+++ b/gas/testsuite/gas/sparc/sparc.exp
@@ -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" ""
}