Richard Sandiford
c0890d2628
[AArch64][SVE 31/32] Add SVE instructions
This patch adds the SVE instruction definitions and associated OP_*
enum values.
include/
* opcode/aarch64.h (AARCH64_FEATURE_SVE): New macro.
(OP_MOV_P_P, OP_MOV_Z_P_Z, OP_MOV_Z_V, OP_MOV_Z_Z, OP_MOV_Z_Zi)
(OP_MOVM_P_P_P, OP_MOVS_P_P, OP_MOVZS_P_P_P, OP_MOVZ_P_P_P)
(OP_NOTS_P_P_P_Z, OP_NOT_P_P_P_Z): New aarch64_ops.
opcodes/
* aarch64-tbl.h (OP_SVE_B, OP_SVE_BB, OP_SVE_BBBU, OP_SVE_BMB)
(OP_SVE_BPB, OP_SVE_BUB, OP_SVE_BUBB, OP_SVE_BUU, OP_SVE_BZ)
(OP_SVE_BZB, OP_SVE_BZBB, OP_SVE_BZU, OP_SVE_DD, OP_SVE_DDD)
(OP_SVE_DMD, OP_SVE_DMH, OP_SVE_DMS, OP_SVE_DU, OP_SVE_DUD, OP_SVE_DUU)
(OP_SVE_DUV_BHS, OP_SVE_DUV_BHSD, OP_SVE_DZD, OP_SVE_DZU, OP_SVE_HB)
(OP_SVE_HMD, OP_SVE_HMS, OP_SVE_HU, OP_SVE_HUU, OP_SVE_HZU, OP_SVE_RR)
(OP_SVE_RURV_BHSD, OP_SVE_RUV_BHSD, OP_SVE_SMD, OP_SVE_SMH, OP_SVE_SMS)
(OP_SVE_SU, OP_SVE_SUS, OP_SVE_SUU, OP_SVE_SZS, OP_SVE_SZU, OP_SVE_UB)
(OP_SVE_UUD, OP_SVE_UUS, OP_SVE_VMR_BHSD, OP_SVE_VMU_SD)
(OP_SVE_VMVD_BHS, OP_SVE_VMVU_BHSD, OP_SVE_VMVU_SD, OP_SVE_VMVV_BHSD)
(OP_SVE_VMVV_SD, OP_SVE_VMV_BHSD, OP_SVE_VMV_HSD, OP_SVE_VMV_SD)
(OP_SVE_VM_SD, OP_SVE_VPU_BHSD, OP_SVE_VPV_BHSD, OP_SVE_VRR_BHSD)
(OP_SVE_VRU_BHSD, OP_SVE_VR_BHSD, OP_SVE_VUR_BHSD, OP_SVE_VUU_BHSD)
(OP_SVE_VUVV_BHSD, OP_SVE_VUVV_SD, OP_SVE_VUV_BHSD, OP_SVE_VUV_SD)
(OP_SVE_VU_BHSD, OP_SVE_VU_HSD, OP_SVE_VU_SD, OP_SVE_VVD_BHS)
(OP_SVE_VVU_BHSD, OP_SVE_VVVU_SD, OP_SVE_VVV_BHSD, OP_SVE_VVV_SD)
(OP_SVE_VV_BHSD, OP_SVE_VV_HSD_BHS, OP_SVE_VV_SD, OP_SVE_VWW_BHSD)
(OP_SVE_VXX_BHSD, OP_SVE_VZVD_BHS, OP_SVE_VZVU_BHSD, OP_SVE_VZVV_BHSD)
(OP_SVE_VZVV_SD, OP_SVE_VZV_SD, OP_SVE_V_SD, OP_SVE_WU, OP_SVE_WV_BHSD)
(OP_SVE_XU, OP_SVE_XUV_BHSD, OP_SVE_XVW_BHSD, OP_SVE_XV_BHSD)
(OP_SVE_XWU, OP_SVE_XXU): New macros.
(aarch64_feature_sve): New variable.
(SVE): New macro.
(_SVE_INSN): Likewise.
(aarch64_opcode_table): Add SVE instructions.
* aarch64-opc.h (extract_fields): Declare.
* aarch64-opc-2.c: Regenerate.
* aarch64-asm.c (do_misc_encoding): Handle the new SVE aarch64_ops.
* aarch64-asm-2.c: Regenerate.
* aarch64-dis.c (extract_fields): Make global.
(do_misc_decoding): Handle the new SVE aarch64_ops.
* aarch64-dis-2.c: Regenerate.
gas/
* doc/c-aarch64.texi: Document the "sve" feature.
* config/tc-aarch64.c (REG_TYPE_R_Z_BHSDQ_VZP): New register type.
(get_reg_expected_msg): Handle it.
(parse_operands): When parsing operands of an SVE instruction,
disallow immediates that match REG_TYPE_R_Z_BHSDQ_VZP.
(aarch64_features): Add an entry for SVE.
2016-09-21 16:58:48 +01:00
..
2016-01-01 23:00:01 +10:30
2010-12-09 09:03:18 +00:00
2016-09-21 16:58:48 +01:00
2016-09-21 16:58:48 +01:00
2016-09-21 16:57:22 +01:00
2016-09-21 16:58:48 +01:00
2016-09-21 16:58:48 +01:00
2016-09-21 16:57:22 +01:00
2016-09-21 16:48:06 +01:00
2016-09-21 16:58:48 +01:00
2016-09-21 16:58:22 +01:00
2016-09-21 16:58:48 +01:00
2016-09-21 16:58:48 +01:00
2016-04-15 16:20:55 -07:00
2016-04-20 07:04:49 -04:00
2016-01-01 23:00:01 +10:30
2016-09-16 14:49:33 +02:00
2016-08-24 14:23:00 +02:00
2016-03-29 19:05:31 +02:00
2016-07-27 15:57:18 +01:00
2016-06-22 12:59:58 -04:00
2016-01-01 23:00:01 +10:30
2016-07-27 15:57:18 +01:00
2016-07-27 15:57:18 +01:00
2016-04-12 10:21:06 +02:00
2016-05-23 17:41:54 +02:00
2016-08-26 11:53:30 +01:00
2016-06-09 19:00:57 +03:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-02-01 10:41:32 +00:00
2016-01-01 23:00:01 +10:30
2016-02-02 11:09:17 +00:00
2016-03-21 16:31:46 +00:00
2016-01-01 23:00:01 +10:30
2016-09-21 16:58:48 +01:00
2012-12-10 12:48:03 +00:00
2012-12-10 12:48:03 +00:00
2012-12-10 12:48:03 +00:00
2012-12-10 12:48:03 +00:00
2015-08-12 04:45:07 -07:00
2015-08-12 04:45:07 -07:00
2012-12-10 12:48:03 +00:00
2012-12-10 12:48:03 +00:00
2012-12-10 12:48:03 +00:00
2012-12-10 12:48:03 +00:00
2013-01-02 13:13:36 +00:00
2014-01-08 05:32:12 -08:00
2015-01-02 00:53:45 +10:30
2016-01-01 22:59:17 +10:30
2012-12-10 12:48:03 +00:00
2012-12-10 12:48:03 +00:00
2014-07-04 13:40:28 +09:30
2016-07-21 15:22:13 -07:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-04-20 07:04:49 -04:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2009-06-04 06:57:56 +00:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-07-20 17:08:07 +01:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-02-02 11:09:17 +00:00
2016-02-02 11:09:17 +00:00
2016-04-20 07:04:49 -04:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-03-02 13:35:41 +10:30
2016-04-20 07:04:49 -04:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-02-02 11:09:17 +00:00
2016-04-20 07:04:49 -04:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-07-08 11:38:35 -07:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2015-07-22 13:26:21 -07:00
2016-08-24 15:29:39 -07:00
2016-09-07 09:22:19 -07:00
2016-09-07 09:22:19 -07:00
2016-01-01 23:00:01 +10:30
2016-08-24 15:29:39 -07:00
2016-08-24 15:29:39 -07:00
2016-01-01 23:00:01 +10:30
2016-08-24 15:29:39 -07:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2012-09-04 13:52:06 +00:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2013-05-17 12:57:16 +00:00
2013-05-17 12:57:16 +00:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-02-02 11:09:17 +00:00
2016-04-20 07:04:49 -04:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-02-02 11:09:17 +00:00
2016-04-20 07:04:49 -04:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-02-02 11:09:17 +00:00
2016-04-20 07:04:49 -04:00
2016-01-01 23:00:01 +10:30
2016-04-20 07:04:49 -04:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-02-02 11:09:17 +00:00
2016-04-20 07:04:49 -04:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-02-02 11:09:17 +00:00
2016-04-20 07:04:49 -04:00
2016-01-01 23:00:01 +10:30
2016-04-20 07:04:49 -04:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-08 11:42:10 +01:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-04-15 16:20:55 -07:00
2016-01-01 23:00:01 +10:30
2016-06-25 11:54:28 -04:00
2016-06-25 11:54:28 -04:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-02-02 11:09:17 +00:00
2016-04-20 07:04:49 -04:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-03-07 15:16:28 +00:00
2016-01-01 23:00:01 +10:30
2016-07-27 17:38:31 +01:00
2016-01-01 23:00:01 +10:30
2016-05-18 13:07:24 +01:00
2016-01-01 23:00:01 +10:30
2016-07-13 17:42:43 +01:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-05-27 13:49:58 +01:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-02-02 11:09:17 +00:00
2016-04-20 07:04:49 -04:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-06-01 21:26:32 -04:00
2016-06-15 16:25:34 +01:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-03-03 00:23:31 +10:30
2016-01-01 23:00:01 +10:30
2016-02-02 11:09:17 +00:00
2016-04-20 07:04:49 -04:00
2016-01-01 23:00:01 +10:30
2016-04-20 07:04:49 -04:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-08-01 09:42:31 -07:00
2016-09-14 22:10:51 -05:00
2016-03-02 13:38:44 +10:30
2016-01-14 16:23:35 +00:00
2016-03-01 10:52:24 +00:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-06-10 13:41:42 +02:00
2016-09-12 16:32:02 +02:00
2016-01-01 23:00:01 +10:30
2016-09-12 16:32:02 +02:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-06-01 21:26:32 -04:00
2016-06-17 02:15:43 -07:00
2016-08-26 07:31:31 -07:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-03-07 15:16:28 +00:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-05-23 01:17:12 -04:00
2016-05-23 01:17:12 -04:00
2016-01-01 23:00:01 +10:30
2016-04-20 07:04:49 -04:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-04-13 15:09:25 +01:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-02-02 11:09:17 +00:00
2016-04-20 07:04:49 -04:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-02-02 11:09:17 +00:00
2016-04-20 07:04:49 -04:00
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30
2016-01-01 23:00:01 +10:30