138388f7eSRichard Henderson# AArch64 SVE instruction descriptions 238388f7eSRichard Henderson# 338388f7eSRichard Henderson# Copyright (c) 2017 Linaro, Ltd 438388f7eSRichard Henderson# 538388f7eSRichard Henderson# This library is free software; you can redistribute it and/or 638388f7eSRichard Henderson# modify it under the terms of the GNU Lesser General Public 738388f7eSRichard Henderson# License as published by the Free Software Foundation; either 850f57e09SChetan Pant# version 2.1 of the License, or (at your option) any later version. 938388f7eSRichard Henderson# 1038388f7eSRichard Henderson# This library is distributed in the hope that it will be useful, 1138388f7eSRichard Henderson# but WITHOUT ANY WARRANTY; without even the implied warranty of 1238388f7eSRichard Henderson# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1338388f7eSRichard Henderson# Lesser General Public License for more details. 1438388f7eSRichard Henderson# 1538388f7eSRichard Henderson# You should have received a copy of the GNU Lesser General Public 1638388f7eSRichard Henderson# License along with this library; if not, see <http://www.gnu.org/licenses/>. 1738388f7eSRichard Henderson 1838388f7eSRichard Henderson# 1938388f7eSRichard Henderson# This file is processed by scripts/decodetree.py 2038388f7eSRichard Henderson# 2138388f7eSRichard Henderson 2238388f7eSRichard Henderson########################################################################### 23d1822297SRichard Henderson# Named fields. These are primarily for disjoint fields. 24d1822297SRichard Henderson 2524e82e68SRichard Henderson%imm4_16_p1 16:4 !function=plus1 26ccd841c3SRichard Henderson%imm6_22_5 22:1 5:5 2730562ab7SRichard Henderson%imm7_22_16 22:2 16:5 28b94f8f60SRichard Henderson%imm8_16_10 16:5 10:3 29d1822297SRichard Henderson%imm9_16_10 16:s6 10:3 301a039c7eSRichard Henderson%size_23 23:2 3168459864SRichard Henderson%dtype_23_13 23:2 13:2 32ca40a6e6SRichard Henderson%index3_22_19 22:1 19:2 33c5c455d7SRichard Henderson%index3_19_11 19:2 11:1 34c5c455d7SRichard Henderson%index2_20_11 20:1 11:1 35d1822297SRichard Henderson 36ccd841c3SRichard Henderson# A combination of tsz:imm3 -- extract esize. 37ccd841c3SRichard Henderson%tszimm_esz 22:2 5:5 !function=tszimm_esz 38ccd841c3SRichard Henderson# A combination of tsz:imm3 -- extract (2 * esize) - (tsz:imm3) 39ccd841c3SRichard Henderson%tszimm_shr 22:2 5:5 !function=tszimm_shr 40ccd841c3SRichard Henderson# A combination of tsz:imm3 -- extract (tsz:imm3) - esize 41ccd841c3SRichard Henderson%tszimm_shl 22:2 5:5 !function=tszimm_shl 42ccd841c3SRichard Henderson 43d9d78dccSRichard Henderson# Similarly for the tszh/tszl pair at 22/16 for zzi 44d9d78dccSRichard Henderson%tszimm16_esz 22:2 16:5 !function=tszimm_esz 45d9d78dccSRichard Henderson%tszimm16_shr 22:2 16:5 !function=tszimm_shr 46d9d78dccSRichard Henderson%tszimm16_shl 22:2 16:5 !function=tszimm_shl 47d9d78dccSRichard Henderson 48f25a2361SRichard Henderson# Signed 8-bit immediate, optionally shifted left by 8. 49f25a2361SRichard Henderson%sh8_i8s 5:9 !function=expand_imm_sh8s 506e6a157dSRichard Henderson# Unsigned 8-bit immediate, optionally shifted left by 8. 516e6a157dSRichard Henderson%sh8_i8u 5:9 !function=expand_imm_sh8u 52f25a2361SRichard Henderson 53c4e7c493SRichard Henderson# Unsigned load of msz into esz=2, represented as a dtype. 54c4e7c493SRichard Henderson%msz_dtype 23:2 !function=msz_dtype 55c4e7c493SRichard Henderson 56f97cfd59SRichard Henderson# Either a copy of rd (at bit 0), or a different source 57f97cfd59SRichard Henderson# as propagated via the MOVPRFX instruction. 58f97cfd59SRichard Henderson%reg_movprfx 0:5 59f97cfd59SRichard Henderson 60d1822297SRichard Henderson########################################################################### 6138388f7eSRichard Henderson# Named attribute sets. These are used to make nice(er) names 6238388f7eSRichard Henderson# when creating helpers common to those for the individual 6338388f7eSRichard Henderson# instruction patterns. 6438388f7eSRichard Henderson 65028e2a7bSRichard Henderson&rr_esz rd rn esz 66d1822297SRichard Henderson&rri rd rn imm 67e1fa1164SRichard Henderson&rr_dbm rd rn dbm 684b242d9cSRichard Henderson&rrri rd rn rm imm 69d9d78dccSRichard Henderson&rri_esz rd rn imm esz 70e6eba6e5SRichard Henderson&rrri_esz rd rn rm imm esz 7138388f7eSRichard Henderson&rrr_esz rd rn rm esz 721c737d9cSRichard Henderson&rrx_esz rd rn rm index esz 73047cec97SRichard Henderson&rpr_esz rd pg rn esz 7435da316fSRichard Henderson&rpr_s rd pg rn s 75516e246aSRichard Henderson&rprr_s rd pg rn rm s 76f97cfd59SRichard Henderson&rprr_esz rd pg rn rm esz 7738650638SRichard Henderson&rrrr_esz rd ra rn rm esz 780a82d963SRichard Henderson&rrxr_esz rd rn rm ra index esz 7996a36e4aSRichard Henderson&rprrr_esz rd pg rn rm ra esz 80ccd841c3SRichard Henderson&rpri_esz rd pg rn imm esz 8124e82e68SRichard Henderson&ptrue rd esz pat s 8224e82e68SRichard Henderson&incdec_cnt rd pat esz imm d u 8324e82e68SRichard Henderson&incdec2_cnt rd rn pat esz imm d u 849ee3a611SRichard Henderson&incdec_pred rd pg esz d u 859ee3a611SRichard Henderson&incdec2_pred rd rn pg esz d u 86c4e7c493SRichard Henderson&rprr_load rd pg rn rm dtype nreg 87c4e7c493SRichard Henderson&rpri_load rd pg rn imm dtype nreg 881a039c7eSRichard Henderson&rprr_store rd pg rn rm msz esz nreg 891a039c7eSRichard Henderson&rpri_store rd pg rn imm msz esz nreg 90673e9fa6SRichard Henderson&rprr_gather_load rd pg rn rm esz msz u ff xs scale 91673e9fa6SRichard Henderson&rpri_gather_load rd pg rn imm esz msz u ff 92f6dbf62aSRichard Henderson&rprr_scatter_store rd pg rn rm esz msz xs scale 93408ecde9SRichard Henderson&rpri_scatter_store rd pg rn imm esz msz 9438388f7eSRichard Henderson 9538388f7eSRichard Henderson########################################################################### 9638388f7eSRichard Henderson# Named instruction formats. These are generally used to 9738388f7eSRichard Henderson# reduce the amount of duplication between instruction patterns. 9838388f7eSRichard Henderson 99028e2a7bSRichard Henderson# Two operand with unused vector element size 100028e2a7bSRichard Henderson@pd_pn_e0 ........ ........ ....... rn:4 . rd:4 &rr_esz esz=0 101028e2a7bSRichard Henderson 102028e2a7bSRichard Henderson# Two operand 103028e2a7bSRichard Henderson@pd_pn ........ esz:2 .. .... ....... rn:4 . rd:4 &rr_esz 1040762cd42SRichard Henderson@rd_rn ........ esz:2 ...... ...... rn:5 rd:5 &rr_esz 105028e2a7bSRichard Henderson 10635da316fSRichard Henderson# Two operand with governing predicate, flags setting 10735da316fSRichard Henderson@pd_pg_pn_s ........ . s:1 ...... .. pg:4 . rn:4 . rd:4 &rpr_s 108407e6ce7SRichard Henderson@pd_pg_pn_s0 ........ . . ...... .. pg:4 . rn:4 . rd:4 &rpr_s s=0 10935da316fSRichard Henderson 11038388f7eSRichard Henderson# Three operand with unused vector element size 11138388f7eSRichard Henderson@rd_rn_rm_e0 ........ ... rm:5 ... ... rn:5 rd:5 &rrr_esz esz=0 11238388f7eSRichard Henderson 113516e246aSRichard Henderson# Three predicate operand, with governing predicate, flag setting 114516e246aSRichard Henderson@pd_pg_pn_pm_s ........ . s:1 .. rm:4 .. pg:4 . rn:4 . rd:4 &rprr_s 115516e246aSRichard Henderson 116fea98f9cSRichard Henderson# Three operand, vector element size 117fea98f9cSRichard Henderson@rd_rn_rm ........ esz:2 . rm:5 ... ... rn:5 rd:5 &rrr_esz 118d731d8cbSRichard Henderson@pd_pn_pm ........ esz:2 .. rm:4 ....... rn:4 . rd:4 &rrr_esz 11930562ab7SRichard Henderson@rdn_rm ........ esz:2 ...... ...... rm:5 rd:5 \ 12030562ab7SRichard Henderson &rrr_esz rn=%reg_movprfx 1213cc7a88eSRichard Henderson@rdn_rm_e0 ........ .. ...... ...... rm:5 rd:5 \ 1223cc7a88eSRichard Henderson &rrr_esz rn=%reg_movprfx esz=0 1236e6a157dSRichard Henderson@rdn_sh_i8u ........ esz:2 ...... ...... ..... rd:5 \ 1246e6a157dSRichard Henderson &rri_esz rn=%reg_movprfx imm=%sh8_i8u 1256e6a157dSRichard Henderson@rdn_i8u ........ esz:2 ...... ... imm:8 rd:5 \ 1266e6a157dSRichard Henderson &rri_esz rn=%reg_movprfx 1276e6a157dSRichard Henderson@rdn_i8s ........ esz:2 ...... ... imm:s8 rd:5 \ 1286e6a157dSRichard Henderson &rri_esz rn=%reg_movprfx 129fea98f9cSRichard Henderson 13038650638SRichard Henderson# Four operand, vector element size 13138650638SRichard Henderson@rda_rn_rm ........ esz:2 . rm:5 ... ... rn:5 rd:5 \ 13238650638SRichard Henderson &rrrr_esz ra=%reg_movprfx 13338650638SRichard Henderson 134911cdc6dSRichard Henderson# Four operand with unused vector element size 135911cdc6dSRichard Henderson@rdn_ra_rm_e0 ........ ... rm:5 ... ... ra:5 rd:5 \ 136911cdc6dSRichard Henderson &rrrr_esz esz=0 rn=%reg_movprfx 137911cdc6dSRichard Henderson 1384b242d9cSRichard Henderson# Three operand with "memory" size, aka immediate left shift 1394b242d9cSRichard Henderson@rd_rn_msz_rm ........ ... rm:5 .... imm:2 rn:5 rd:5 &rrri 1404b242d9cSRichard Henderson 141f97cfd59SRichard Henderson# Two register operand, with governing predicate, vector element size 142f97cfd59SRichard Henderson@rdn_pg_rm ........ esz:2 ... ... ... pg:3 rm:5 rd:5 \ 143f97cfd59SRichard Henderson &rprr_esz rn=%reg_movprfx 144f97cfd59SRichard Henderson@rdm_pg_rn ........ esz:2 ... ... ... pg:3 rn:5 rd:5 \ 145f97cfd59SRichard Henderson &rprr_esz rm=%reg_movprfx 146d3fe4a29SRichard Henderson@rd_pg4_rn_rm ........ esz:2 . rm:5 .. pg:4 rn:5 rd:5 &rprr_esz 147757f9cffSRichard Henderson@pd_pg_rn_rm ........ esz:2 . rm:5 ... pg:3 rn:5 . rd:4 &rprr_esz 148f97cfd59SRichard Henderson 14996a36e4aSRichard Henderson# Three register operand, with governing predicate, vector element size 15096a36e4aSRichard Henderson@rda_pg_rn_rm ........ esz:2 . rm:5 ... pg:3 rn:5 rd:5 \ 15196a36e4aSRichard Henderson &rprrr_esz ra=%reg_movprfx 15296a36e4aSRichard Henderson@rdn_pg_ra_rm ........ esz:2 . rm:5 ... pg:3 ra:5 rd:5 \ 15396a36e4aSRichard Henderson &rprrr_esz rn=%reg_movprfx 1546ceabaadSRichard Henderson@rdn_pg_rm_ra ........ esz:2 . ra:5 ... pg:3 rm:5 rd:5 \ 1556ceabaadSRichard Henderson &rprrr_esz rn=%reg_movprfx 1567d47ac94SStephen Long@rd_pg_rn_rm ........ esz:2 . rm:5 ... pg:3 rn:5 rd:5 &rprr_esz 15796a36e4aSRichard Henderson 158047cec97SRichard Henderson# One register operand, with governing predicate, vector element size 159047cec97SRichard Henderson@rd_pg_rn ........ esz:2 ... ... ... pg:3 rn:5 rd:5 &rpr_esz 1609ee3a611SRichard Henderson@rd_pg4_pn ........ esz:2 ... ... .. pg:4 . rn:4 rd:5 &rpr_esz 1614d2e2a03SRichard Henderson@pd_pg_rn ........ esz:2 ... ... ... pg:3 rn:5 . rd:4 &rpr_esz 162047cec97SRichard Henderson 1638092c6a3SRichard Henderson# One register operand, with governing predicate, no vector element size 1648092c6a3SRichard Henderson@rd_pg_rn_e0 ........ .. ... ... ... pg:3 rn:5 rd:5 &rpr_esz esz=0 1658092c6a3SRichard Henderson 16696f922ccSRichard Henderson# Two register operands with a 6-bit signed immediate. 16796f922ccSRichard Henderson@rd_rn_i6 ........ ... rn:5 ..... imm:s6 rd:5 &rri 16896f922ccSRichard Henderson 169ccd841c3SRichard Henderson# Two register operand, one immediate operand, with predicate, 170830d1a5aSRichard Henderson# element size encoded as TSZHL. 171830d1a5aSRichard Henderson@rdn_pg_tszimm_shl ........ .. ... ... ... pg:3 ..... rd:5 \ 172830d1a5aSRichard Henderson &rpri_esz rn=%reg_movprfx esz=%tszimm_esz imm=%tszimm_shl 173830d1a5aSRichard Henderson@rdn_pg_tszimm_shr ........ .. ... ... ... pg:3 ..... rd:5 \ 174830d1a5aSRichard Henderson &rpri_esz rn=%reg_movprfx esz=%tszimm_esz imm=%tszimm_shr 175ccd841c3SRichard Henderson 176d9d78dccSRichard Henderson# Similarly without predicate. 177830d1a5aSRichard Henderson@rd_rn_tszimm_shl ........ .. ... ... ...... rn:5 rd:5 \ 178830d1a5aSRichard Henderson &rri_esz esz=%tszimm16_esz imm=%tszimm16_shl 179830d1a5aSRichard Henderson@rd_rn_tszimm_shr ........ .. ... ... ...... rn:5 rd:5 \ 180830d1a5aSRichard Henderson &rri_esz esz=%tszimm16_esz imm=%tszimm16_shr 181d9d78dccSRichard Henderson 182f25a2361SRichard Henderson# Two register operand, one immediate operand, with 4-bit predicate. 183f25a2361SRichard Henderson# User must fill in imm. 184f25a2361SRichard Henderson@rdn_pg4 ........ esz:2 .. pg:4 ... ........ rd:5 \ 185f25a2361SRichard Henderson &rpri_esz rn=%reg_movprfx 186f25a2361SRichard Henderson 187cc48affeSRichard Henderson# Two register operand, one one-bit floating-point operand. 188cc48affeSRichard Henderson@rdn_i1 ........ esz:2 ......... pg:3 .... imm:1 rd:5 \ 189cc48affeSRichard Henderson &rpri_esz rn=%reg_movprfx 190cc48affeSRichard Henderson 191e1fa1164SRichard Henderson# Two register operand, one encoded bitmask. 192e1fa1164SRichard Henderson@rdn_dbm ........ .. .... dbm:13 rd:5 \ 193e1fa1164SRichard Henderson &rr_dbm rn=%reg_movprfx 194e1fa1164SRichard Henderson 19538cadebaSRichard Henderson# Predicate output, vector and immediate input, 19638cadebaSRichard Henderson# controlling predicate, element size. 19738cadebaSRichard Henderson@pd_pg_rn_i7 ........ esz:2 . imm:7 . pg:3 rn:5 . rd:4 &rpri_esz 19838cadebaSRichard Henderson@pd_pg_rn_i5 ........ esz:2 . imm:s5 ... pg:3 rn:5 . rd:4 &rpri_esz 19938cadebaSRichard Henderson 200d1822297SRichard Henderson# Basic Load/Store with 9-bit immediate offset 201d1822297SRichard Henderson@pd_rn_i9 ........ ........ ...... rn:5 . rd:4 \ 202d1822297SRichard Henderson &rri imm=%imm9_16_10 203d1822297SRichard Henderson@rd_rn_i9 ........ ........ ...... rn:5 rd:5 \ 204d1822297SRichard Henderson &rri imm=%imm9_16_10 205d1822297SRichard Henderson 20624e82e68SRichard Henderson# One register, pattern, and uint4+1. 20724e82e68SRichard Henderson# User must fill in U and D. 20824e82e68SRichard Henderson@incdec_cnt ........ esz:2 .. .... ...... pat:5 rd:5 \ 20924e82e68SRichard Henderson &incdec_cnt imm=%imm4_16_p1 21024e82e68SRichard Henderson@incdec2_cnt ........ esz:2 .. .... ...... pat:5 rd:5 \ 21124e82e68SRichard Henderson &incdec2_cnt imm=%imm4_16_p1 rn=%reg_movprfx 21224e82e68SRichard Henderson 2139ee3a611SRichard Henderson# One register, predicate. 2149ee3a611SRichard Henderson# User must fill in U and D. 2159ee3a611SRichard Henderson@incdec_pred ........ esz:2 .... .. ..... .. pg:4 rd:5 &incdec_pred 2169ee3a611SRichard Henderson@incdec2_pred ........ esz:2 .... .. ..... .. pg:4 rd:5 \ 2179ee3a611SRichard Henderson &incdec2_pred rn=%reg_movprfx 2189ee3a611SRichard Henderson 219c4e7c493SRichard Henderson# Loads; user must fill in NREG. 220c4e7c493SRichard Henderson@rprr_load_dt ....... dtype:4 rm:5 ... pg:3 rn:5 rd:5 &rprr_load 221c4e7c493SRichard Henderson@rpri_load_dt ....... dtype:4 . imm:s4 ... pg:3 rn:5 rd:5 &rpri_load 222c4e7c493SRichard Henderson 223c4e7c493SRichard Henderson@rprr_load_msz ....... .... rm:5 ... pg:3 rn:5 rd:5 \ 224c4e7c493SRichard Henderson &rprr_load dtype=%msz_dtype 225c4e7c493SRichard Henderson@rpri_load_msz ....... .... . imm:s4 ... pg:3 rn:5 rd:5 \ 226c4e7c493SRichard Henderson &rpri_load dtype=%msz_dtype 227c4e7c493SRichard Henderson 228673e9fa6SRichard Henderson# Gather Loads. 229673e9fa6SRichard Henderson@rprr_g_load_u ....... .. . . rm:5 . u:1 ff:1 pg:3 rn:5 rd:5 \ 230673e9fa6SRichard Henderson &rprr_gather_load xs=2 231673e9fa6SRichard Henderson@rprr_g_load_xs_u ....... .. xs:1 . rm:5 . u:1 ff:1 pg:3 rn:5 rd:5 \ 232673e9fa6SRichard Henderson &rprr_gather_load 233673e9fa6SRichard Henderson@rprr_g_load_xs_u_sc ....... .. xs:1 scale:1 rm:5 . u:1 ff:1 pg:3 rn:5 rd:5 \ 234673e9fa6SRichard Henderson &rprr_gather_load 235673e9fa6SRichard Henderson@rprr_g_load_xs_sc ....... .. xs:1 scale:1 rm:5 . . ff:1 pg:3 rn:5 rd:5 \ 236673e9fa6SRichard Henderson &rprr_gather_load 237673e9fa6SRichard Henderson@rprr_g_load_u_sc ....... .. . scale:1 rm:5 . u:1 ff:1 pg:3 rn:5 rd:5 \ 238673e9fa6SRichard Henderson &rprr_gather_load xs=2 239673e9fa6SRichard Henderson@rprr_g_load_sc ....... .. . scale:1 rm:5 . . ff:1 pg:3 rn:5 rd:5 \ 240673e9fa6SRichard Henderson &rprr_gather_load xs=2 241673e9fa6SRichard Henderson@rpri_g_load ....... msz:2 .. imm:5 . u:1 ff:1 pg:3 rn:5 rd:5 \ 242673e9fa6SRichard Henderson &rpri_gather_load 243673e9fa6SRichard Henderson 2441a039c7eSRichard Henderson# Stores; user must fill in ESZ, MSZ, NREG as needed. 2451a039c7eSRichard Henderson@rprr_store ....... .. .. rm:5 ... pg:3 rn:5 rd:5 &rprr_store 2461a039c7eSRichard Henderson@rpri_store_msz ....... msz:2 .. . imm:s4 ... pg:3 rn:5 rd:5 &rpri_store 2471a039c7eSRichard Henderson@rprr_store_esz_n0 ....... .. esz:2 rm:5 ... pg:3 rn:5 rd:5 \ 2481a039c7eSRichard Henderson &rprr_store nreg=0 249f6dbf62aSRichard Henderson@rprr_scatter_store ....... msz:2 .. rm:5 ... pg:3 rn:5 rd:5 \ 250f6dbf62aSRichard Henderson &rprr_scatter_store 251408ecde9SRichard Henderson@rpri_scatter_store ....... msz:2 .. imm:5 ... pg:3 rn:5 rd:5 \ 252408ecde9SRichard Henderson &rpri_scatter_store 2531a039c7eSRichard Henderson 2541c737d9cSRichard Henderson# Two registers and a scalar by N-bit index 2551c737d9cSRichard Henderson@rrx_3 ........ .. . .. rm:3 ...... rn:5 rd:5 \ 2561c737d9cSRichard Henderson &rrx_esz index=%index3_22_19 2571c737d9cSRichard Henderson@rrx_2 ........ .. . index:2 rm:3 ...... rn:5 rd:5 &rrx_esz 2581c737d9cSRichard Henderson@rrx_1 ........ .. . index:1 rm:4 ...... rn:5 rd:5 &rrx_esz 2591c737d9cSRichard Henderson 260b95f5eebSRichard Henderson# Two registers and a scalar by N-bit index, alternate 261b95f5eebSRichard Henderson@rrx_3a ........ .. . .. rm:3 ...... rn:5 rd:5 \ 262b95f5eebSRichard Henderson &rrx_esz index=%index3_19_11 263b95f5eebSRichard Henderson@rrx_2a ........ .. . . rm:4 ...... rn:5 rd:5 \ 264b95f5eebSRichard Henderson &rrx_esz index=%index2_20_11 265b95f5eebSRichard Henderson 2660a82d963SRichard Henderson# Three registers and a scalar by N-bit index 2670a82d963SRichard Henderson@rrxr_3 ........ .. . .. rm:3 ...... rn:5 rd:5 \ 2680a82d963SRichard Henderson &rrxr_esz ra=%reg_movprfx index=%index3_22_19 2690a82d963SRichard Henderson@rrxr_2 ........ .. . index:2 rm:3 ...... rn:5 rd:5 \ 2700a82d963SRichard Henderson &rrxr_esz ra=%reg_movprfx 2710a82d963SRichard Henderson@rrxr_1 ........ .. . index:1 rm:4 ...... rn:5 rd:5 \ 2720a82d963SRichard Henderson &rrxr_esz ra=%reg_movprfx 2730a82d963SRichard Henderson 274c5c455d7SRichard Henderson# Three registers and a scalar by N-bit index, alternate 275c5c455d7SRichard Henderson@rrxr_3a ........ .. ... rm:3 ...... rn:5 rd:5 \ 276c5c455d7SRichard Henderson &rrxr_esz ra=%reg_movprfx index=%index3_19_11 277c5c455d7SRichard Henderson@rrxr_2a ........ .. .. rm:4 ...... rn:5 rd:5 \ 278c5c455d7SRichard Henderson &rrxr_esz ra=%reg_movprfx index=%index2_20_11 279c5c455d7SRichard Henderson 28038388f7eSRichard Henderson########################################################################### 28138388f7eSRichard Henderson# Instruction patterns. Grouped according to the SVE encodingindex.xhtml. 28238388f7eSRichard Henderson 283f97cfd59SRichard Henderson### SVE Integer Arithmetic - Binary Predicated Group 284f97cfd59SRichard Henderson 285f97cfd59SRichard Henderson# SVE bitwise logical vector operations (predicated) 286f97cfd59SRichard HendersonORR_zpzz 00000100 .. 011 000 000 ... ..... ..... @rdn_pg_rm 287f97cfd59SRichard HendersonEOR_zpzz 00000100 .. 011 001 000 ... ..... ..... @rdn_pg_rm 288f97cfd59SRichard HendersonAND_zpzz 00000100 .. 011 010 000 ... ..... ..... @rdn_pg_rm 289f97cfd59SRichard HendersonBIC_zpzz 00000100 .. 011 011 000 ... ..... ..... @rdn_pg_rm 290f97cfd59SRichard Henderson 291f97cfd59SRichard Henderson# SVE integer add/subtract vectors (predicated) 292f97cfd59SRichard HendersonADD_zpzz 00000100 .. 000 000 000 ... ..... ..... @rdn_pg_rm 293f97cfd59SRichard HendersonSUB_zpzz 00000100 .. 000 001 000 ... ..... ..... @rdn_pg_rm 294f97cfd59SRichard HendersonSUB_zpzz 00000100 .. 000 011 000 ... ..... ..... @rdm_pg_rn # SUBR 295f97cfd59SRichard Henderson 296f97cfd59SRichard Henderson# SVE integer min/max/difference (predicated) 297f97cfd59SRichard HendersonSMAX_zpzz 00000100 .. 001 000 000 ... ..... ..... @rdn_pg_rm 298f97cfd59SRichard HendersonUMAX_zpzz 00000100 .. 001 001 000 ... ..... ..... @rdn_pg_rm 299f97cfd59SRichard HendersonSMIN_zpzz 00000100 .. 001 010 000 ... ..... ..... @rdn_pg_rm 300f97cfd59SRichard HendersonUMIN_zpzz 00000100 .. 001 011 000 ... ..... ..... @rdn_pg_rm 301f97cfd59SRichard HendersonSABD_zpzz 00000100 .. 001 100 000 ... ..... ..... @rdn_pg_rm 302f97cfd59SRichard HendersonUABD_zpzz 00000100 .. 001 101 000 ... ..... ..... @rdn_pg_rm 303f97cfd59SRichard Henderson 304f97cfd59SRichard Henderson# SVE integer multiply/divide (predicated) 305f97cfd59SRichard HendersonMUL_zpzz 00000100 .. 010 000 000 ... ..... ..... @rdn_pg_rm 306f97cfd59SRichard HendersonSMULH_zpzz 00000100 .. 010 010 000 ... ..... ..... @rdn_pg_rm 307f97cfd59SRichard HendersonUMULH_zpzz 00000100 .. 010 011 000 ... ..... ..... @rdn_pg_rm 308f97cfd59SRichard Henderson# Note that divide requires size >= 2; below 2 is unallocated. 309f97cfd59SRichard HendersonSDIV_zpzz 00000100 .. 010 100 000 ... ..... ..... @rdn_pg_rm 310f97cfd59SRichard HendersonUDIV_zpzz 00000100 .. 010 101 000 ... ..... ..... @rdn_pg_rm 311f97cfd59SRichard HendersonSDIV_zpzz 00000100 .. 010 110 000 ... ..... ..... @rdm_pg_rn # SDIVR 312f97cfd59SRichard HendersonUDIV_zpzz 00000100 .. 010 111 000 ... ..... ..... @rdm_pg_rn # UDIVR 313f97cfd59SRichard Henderson 314047cec97SRichard Henderson### SVE Integer Reduction Group 315047cec97SRichard Henderson 316047cec97SRichard Henderson# SVE bitwise logical reduction (predicated) 317047cec97SRichard HendersonORV 00000100 .. 011 000 001 ... ..... ..... @rd_pg_rn 318047cec97SRichard HendersonEORV 00000100 .. 011 001 001 ... ..... ..... @rd_pg_rn 319047cec97SRichard HendersonANDV 00000100 .. 011 010 001 ... ..... ..... @rd_pg_rn 320047cec97SRichard Henderson 321a2103582SRichard Henderson# SVE constructive prefix (predicated) 322a2103582SRichard HendersonMOVPRFX_z 00000100 .. 010 000 001 ... ..... ..... @rd_pg_rn 323a2103582SRichard HendersonMOVPRFX_m 00000100 .. 010 001 001 ... ..... ..... @rd_pg_rn 324a2103582SRichard Henderson 325047cec97SRichard Henderson# SVE integer add reduction (predicated) 326047cec97SRichard Henderson# Note that saddv requires size != 3. 327047cec97SRichard HendersonUADDV 00000100 .. 000 001 001 ... ..... ..... @rd_pg_rn 328047cec97SRichard HendersonSADDV 00000100 .. 000 000 001 ... ..... ..... @rd_pg_rn 329047cec97SRichard Henderson 330047cec97SRichard Henderson# SVE integer min/max reduction (predicated) 331047cec97SRichard HendersonSMAXV 00000100 .. 001 000 001 ... ..... ..... @rd_pg_rn 332047cec97SRichard HendersonUMAXV 00000100 .. 001 001 001 ... ..... ..... @rd_pg_rn 333047cec97SRichard HendersonSMINV 00000100 .. 001 010 001 ... ..... ..... @rd_pg_rn 334047cec97SRichard HendersonUMINV 00000100 .. 001 011 001 ... ..... ..... @rd_pg_rn 335047cec97SRichard Henderson 336ccd841c3SRichard Henderson### SVE Shift by Immediate - Predicated Group 337ccd841c3SRichard Henderson 338ccd841c3SRichard Henderson# SVE bitwise shift by immediate (predicated) 339830d1a5aSRichard HendersonASR_zpzi 00000100 .. 000 000 100 ... .. ... ..... @rdn_pg_tszimm_shr 340830d1a5aSRichard HendersonLSR_zpzi 00000100 .. 000 001 100 ... .. ... ..... @rdn_pg_tszimm_shr 341830d1a5aSRichard HendersonLSL_zpzi 00000100 .. 000 011 100 ... .. ... ..... @rdn_pg_tszimm_shl 342830d1a5aSRichard HendersonASRD 00000100 .. 000 100 100 ... .. ... ..... @rdn_pg_tszimm_shr 343ccd841c3SRichard Henderson 34427721dbbSRichard Henderson# SVE bitwise shift by vector (predicated) 34527721dbbSRichard HendersonASR_zpzz 00000100 .. 010 000 100 ... ..... ..... @rdn_pg_rm 34627721dbbSRichard HendersonLSR_zpzz 00000100 .. 010 001 100 ... ..... ..... @rdn_pg_rm 34727721dbbSRichard HendersonLSL_zpzz 00000100 .. 010 011 100 ... ..... ..... @rdn_pg_rm 34827721dbbSRichard HendersonASR_zpzz 00000100 .. 010 100 100 ... ..... ..... @rdm_pg_rn # ASRR 34927721dbbSRichard HendersonLSR_zpzz 00000100 .. 010 101 100 ... ..... ..... @rdm_pg_rn # LSRR 35027721dbbSRichard HendersonLSL_zpzz 00000100 .. 010 111 100 ... ..... ..... @rdm_pg_rn # LSLR 35127721dbbSRichard Henderson 352fe7f8dfbSRichard Henderson# SVE bitwise shift by wide elements (predicated) 353fe7f8dfbSRichard Henderson# Note these require size != 3. 354fe7f8dfbSRichard HendersonASR_zpzw 00000100 .. 011 000 100 ... ..... ..... @rdn_pg_rm 355fe7f8dfbSRichard HendersonLSR_zpzw 00000100 .. 011 001 100 ... ..... ..... @rdn_pg_rm 356fe7f8dfbSRichard HendersonLSL_zpzw 00000100 .. 011 011 100 ... ..... ..... @rdn_pg_rm 357fe7f8dfbSRichard Henderson 358afac6d04SRichard Henderson### SVE Integer Arithmetic - Unary Predicated Group 359afac6d04SRichard Henderson 360afac6d04SRichard Henderson# SVE unary bit operations (predicated) 361afac6d04SRichard Henderson# Note esz != 0 for FABS and FNEG. 362afac6d04SRichard HendersonCLS 00000100 .. 011 000 101 ... ..... ..... @rd_pg_rn 363afac6d04SRichard HendersonCLZ 00000100 .. 011 001 101 ... ..... ..... @rd_pg_rn 364afac6d04SRichard HendersonCNT_zpz 00000100 .. 011 010 101 ... ..... ..... @rd_pg_rn 365afac6d04SRichard HendersonCNOT 00000100 .. 011 011 101 ... ..... ..... @rd_pg_rn 366afac6d04SRichard HendersonNOT_zpz 00000100 .. 011 110 101 ... ..... ..... @rd_pg_rn 367afac6d04SRichard HendersonFABS 00000100 .. 011 100 101 ... ..... ..... @rd_pg_rn 368afac6d04SRichard HendersonFNEG 00000100 .. 011 101 101 ... ..... ..... @rd_pg_rn 369afac6d04SRichard Henderson 370afac6d04SRichard Henderson# SVE integer unary operations (predicated) 371afac6d04SRichard Henderson# Note esz > original size for extensions. 372afac6d04SRichard HendersonABS 00000100 .. 010 110 101 ... ..... ..... @rd_pg_rn 373afac6d04SRichard HendersonNEG 00000100 .. 010 111 101 ... ..... ..... @rd_pg_rn 374afac6d04SRichard HendersonSXTB 00000100 .. 010 000 101 ... ..... ..... @rd_pg_rn 375afac6d04SRichard HendersonUXTB 00000100 .. 010 001 101 ... ..... ..... @rd_pg_rn 376afac6d04SRichard HendersonSXTH 00000100 .. 010 010 101 ... ..... ..... @rd_pg_rn 377afac6d04SRichard HendersonUXTH 00000100 .. 010 011 101 ... ..... ..... @rd_pg_rn 378afac6d04SRichard HendersonSXTW 00000100 .. 010 100 101 ... ..... ..... @rd_pg_rn 379afac6d04SRichard HendersonUXTW 00000100 .. 010 101 101 ... ..... ..... @rd_pg_rn 380afac6d04SRichard Henderson 381abfdefd5SRichard Henderson### SVE Floating Point Compare - Vectors Group 382abfdefd5SRichard Henderson 383abfdefd5SRichard Henderson# SVE floating-point compare vectors 384abfdefd5SRichard HendersonFCMGE_ppzz 01100101 .. 0 ..... 010 ... ..... 0 .... @pd_pg_rn_rm 385abfdefd5SRichard HendersonFCMGT_ppzz 01100101 .. 0 ..... 010 ... ..... 1 .... @pd_pg_rn_rm 386abfdefd5SRichard HendersonFCMEQ_ppzz 01100101 .. 0 ..... 011 ... ..... 0 .... @pd_pg_rn_rm 387abfdefd5SRichard HendersonFCMNE_ppzz 01100101 .. 0 ..... 011 ... ..... 1 .... @pd_pg_rn_rm 388abfdefd5SRichard HendersonFCMUO_ppzz 01100101 .. 0 ..... 110 ... ..... 0 .... @pd_pg_rn_rm 389abfdefd5SRichard HendersonFACGE_ppzz 01100101 .. 0 ..... 110 ... ..... 1 .... @pd_pg_rn_rm 390abfdefd5SRichard HendersonFACGT_ppzz 01100101 .. 0 ..... 111 ... ..... 1 .... @pd_pg_rn_rm 391abfdefd5SRichard Henderson 39296a36e4aSRichard Henderson### SVE Integer Multiply-Add Group 39396a36e4aSRichard Henderson 39496a36e4aSRichard Henderson# SVE integer multiply-add writing addend (predicated) 39596a36e4aSRichard HendersonMLA 00000100 .. 0 ..... 010 ... ..... ..... @rda_pg_rn_rm 39696a36e4aSRichard HendersonMLS 00000100 .. 0 ..... 011 ... ..... ..... @rda_pg_rn_rm 39796a36e4aSRichard Henderson 39896a36e4aSRichard Henderson# SVE integer multiply-add writing multiplicand (predicated) 39996a36e4aSRichard HendersonMLA 00000100 .. 0 ..... 110 ... ..... ..... @rdn_pg_ra_rm # MAD 40096a36e4aSRichard HendersonMLS 00000100 .. 0 ..... 111 ... ..... ..... @rdn_pg_ra_rm # MSB 40196a36e4aSRichard Henderson 402fea98f9cSRichard Henderson### SVE Integer Arithmetic - Unpredicated Group 403fea98f9cSRichard Henderson 404fea98f9cSRichard Henderson# SVE integer add/subtract vectors (unpredicated) 405fea98f9cSRichard HendersonADD_zzz 00000100 .. 1 ..... 000 000 ..... ..... @rd_rn_rm 406fea98f9cSRichard HendersonSUB_zzz 00000100 .. 1 ..... 000 001 ..... ..... @rd_rn_rm 407fea98f9cSRichard HendersonSQADD_zzz 00000100 .. 1 ..... 000 100 ..... ..... @rd_rn_rm 408fea98f9cSRichard HendersonUQADD_zzz 00000100 .. 1 ..... 000 101 ..... ..... @rd_rn_rm 409fea98f9cSRichard HendersonSQSUB_zzz 00000100 .. 1 ..... 000 110 ..... ..... @rd_rn_rm 410fea98f9cSRichard HendersonUQSUB_zzz 00000100 .. 1 ..... 000 111 ..... ..... @rd_rn_rm 411fea98f9cSRichard Henderson 41238388f7eSRichard Henderson### SVE Logical - Unpredicated Group 41338388f7eSRichard Henderson 41438388f7eSRichard Henderson# SVE bitwise logical operations (unpredicated) 41538388f7eSRichard HendersonAND_zzz 00000100 00 1 ..... 001 100 ..... ..... @rd_rn_rm_e0 41638388f7eSRichard HendersonORR_zzz 00000100 01 1 ..... 001 100 ..... ..... @rd_rn_rm_e0 41738388f7eSRichard HendersonEOR_zzz 00000100 10 1 ..... 001 100 ..... ..... @rd_rn_rm_e0 41838388f7eSRichard HendersonBIC_zzz 00000100 11 1 ..... 001 100 ..... ..... @rd_rn_rm_e0 419d1822297SRichard Henderson 420e6eba6e5SRichard HendersonXAR 00000100 .. 1 ..... 001 101 rm:5 rd:5 &rrri_esz \ 421e6eba6e5SRichard Henderson rn=%reg_movprfx esz=%tszimm16_esz imm=%tszimm16_shr 422e6eba6e5SRichard Henderson 423911cdc6dSRichard Henderson# SVE2 bitwise ternary operations 424911cdc6dSRichard HendersonEOR3 00000100 00 1 ..... 001 110 ..... ..... @rdn_ra_rm_e0 425911cdc6dSRichard HendersonBSL 00000100 00 1 ..... 001 111 ..... ..... @rdn_ra_rm_e0 426911cdc6dSRichard HendersonBCAX 00000100 01 1 ..... 001 110 ..... ..... @rdn_ra_rm_e0 427911cdc6dSRichard HendersonBSL1N 00000100 01 1 ..... 001 111 ..... ..... @rdn_ra_rm_e0 428911cdc6dSRichard HendersonBSL2N 00000100 10 1 ..... 001 111 ..... ..... @rdn_ra_rm_e0 429911cdc6dSRichard HendersonNBSL 00000100 11 1 ..... 001 111 ..... ..... @rdn_ra_rm_e0 430911cdc6dSRichard Henderson 4319a56c9c3SRichard Henderson### SVE Index Generation Group 4329a56c9c3SRichard Henderson 4339a56c9c3SRichard Henderson# SVE index generation (immediate start, immediate increment) 4349a56c9c3SRichard HendersonINDEX_ii 00000100 esz:2 1 imm2:s5 010000 imm1:s5 rd:5 4359a56c9c3SRichard Henderson 4369a56c9c3SRichard Henderson# SVE index generation (immediate start, register increment) 4379a56c9c3SRichard HendersonINDEX_ir 00000100 esz:2 1 rm:5 010010 imm:s5 rd:5 4389a56c9c3SRichard Henderson 4399a56c9c3SRichard Henderson# SVE index generation (register start, immediate increment) 4409a56c9c3SRichard HendersonINDEX_ri 00000100 esz:2 1 imm:s5 010001 rn:5 rd:5 4419a56c9c3SRichard Henderson 4429a56c9c3SRichard Henderson# SVE index generation (register start, register increment) 4439a56c9c3SRichard HendersonINDEX_rr 00000100 .. 1 ..... 010011 ..... ..... @rd_rn_rm 4449a56c9c3SRichard Henderson 44596f922ccSRichard Henderson### SVE Stack Allocation Group 44696f922ccSRichard Henderson 44796f922ccSRichard Henderson# SVE stack frame adjustment 44896f922ccSRichard HendersonADDVL 00000100 001 ..... 01010 ...... ..... @rd_rn_i6 44996f922ccSRichard HendersonADDPL 00000100 011 ..... 01010 ...... ..... @rd_rn_i6 45096f922ccSRichard Henderson 45196f922ccSRichard Henderson# SVE stack frame size 45296f922ccSRichard HendersonRDVL 00000100 101 11111 01010 imm:s6 rd:5 45396f922ccSRichard Henderson 454d9d78dccSRichard Henderson### SVE Bitwise Shift - Unpredicated Group 455d9d78dccSRichard Henderson 456d9d78dccSRichard Henderson# SVE bitwise shift by immediate (unpredicated) 457830d1a5aSRichard HendersonASR_zzi 00000100 .. 1 ..... 1001 00 ..... ..... @rd_rn_tszimm_shr 458830d1a5aSRichard HendersonLSR_zzi 00000100 .. 1 ..... 1001 01 ..... ..... @rd_rn_tszimm_shr 459830d1a5aSRichard HendersonLSL_zzi 00000100 .. 1 ..... 1001 11 ..... ..... @rd_rn_tszimm_shl 460d9d78dccSRichard Henderson 461d9d78dccSRichard Henderson# SVE bitwise shift by wide elements (unpredicated) 462d9d78dccSRichard Henderson# Note esz != 3 463d9d78dccSRichard HendersonASR_zzw 00000100 .. 1 ..... 1000 00 ..... ..... @rd_rn_rm 464d9d78dccSRichard HendersonLSR_zzw 00000100 .. 1 ..... 1000 01 ..... ..... @rd_rn_rm 465d9d78dccSRichard HendersonLSL_zzw 00000100 .. 1 ..... 1000 11 ..... ..... @rd_rn_rm 466d9d78dccSRichard Henderson 4674b242d9cSRichard Henderson### SVE Compute Vector Address Group 4684b242d9cSRichard Henderson 4694b242d9cSRichard Henderson# SVE vector address generation 4704b242d9cSRichard HendersonADR_s32 00000100 00 1 ..... 1010 .. ..... ..... @rd_rn_msz_rm 4714b242d9cSRichard HendersonADR_u32 00000100 01 1 ..... 1010 .. ..... ..... @rd_rn_msz_rm 4724b242d9cSRichard HendersonADR_p32 00000100 10 1 ..... 1010 .. ..... ..... @rd_rn_msz_rm 4734b242d9cSRichard HendersonADR_p64 00000100 11 1 ..... 1010 .. ..... ..... @rd_rn_msz_rm 4744b242d9cSRichard Henderson 4750762cd42SRichard Henderson### SVE Integer Misc - Unpredicated Group 4760762cd42SRichard Henderson 477a2103582SRichard Henderson# SVE constructive prefix (unpredicated) 478a2103582SRichard HendersonMOVPRFX 00000100 00 1 00000 101111 rn:5 rd:5 479a2103582SRichard Henderson 4800762cd42SRichard Henderson# SVE floating-point exponential accelerator 4810762cd42SRichard Henderson# Note esz != 0 4820762cd42SRichard HendersonFEXPA 00000100 .. 1 00000 101110 ..... ..... @rd_rn 4830762cd42SRichard Henderson 484a1f233f2SRichard Henderson# SVE floating-point trig select coefficient 485a1f233f2SRichard Henderson# Note esz != 0 486a1f233f2SRichard HendersonFTSSEL 00000100 .. 1 ..... 101100 ..... ..... @rd_rn_rm 487a1f233f2SRichard Henderson 48824e82e68SRichard Henderson### SVE Element Count Group 48924e82e68SRichard Henderson 49024e82e68SRichard Henderson# SVE element count 49124e82e68SRichard HendersonCNT_r 00000100 .. 10 .... 1110 0 0 ..... ..... @incdec_cnt d=0 u=1 49224e82e68SRichard Henderson 49324e82e68SRichard Henderson# SVE inc/dec register by element count 49424e82e68SRichard HendersonINCDEC_r 00000100 .. 11 .... 1110 0 d:1 ..... ..... @incdec_cnt u=1 49524e82e68SRichard Henderson 49624e82e68SRichard Henderson# SVE saturating inc/dec register by element count 49724e82e68SRichard HendersonSINCDEC_r_32 00000100 .. 10 .... 1111 d:1 u:1 ..... ..... @incdec_cnt 49824e82e68SRichard HendersonSINCDEC_r_64 00000100 .. 11 .... 1111 d:1 u:1 ..... ..... @incdec_cnt 49924e82e68SRichard Henderson 50024e82e68SRichard Henderson# SVE inc/dec vector by element count 50124e82e68SRichard Henderson# Note this requires esz != 0. 50224e82e68SRichard HendersonINCDEC_v 00000100 .. 1 1 .... 1100 0 d:1 ..... ..... @incdec2_cnt u=1 50324e82e68SRichard Henderson 50424e82e68SRichard Henderson# SVE saturating inc/dec vector by element count 50524e82e68SRichard Henderson# Note these require esz != 0. 50624e82e68SRichard HendersonSINCDEC_v 00000100 .. 1 0 .... 1100 d:1 u:1 ..... ..... @incdec2_cnt 507516e246aSRichard Henderson 508e1fa1164SRichard Henderson### SVE Bitwise Immediate Group 509e1fa1164SRichard Henderson 510e1fa1164SRichard Henderson# SVE bitwise logical with immediate (unpredicated) 511e1fa1164SRichard HendersonORR_zzi 00000101 00 0000 ............. ..... @rdn_dbm 512e1fa1164SRichard HendersonEOR_zzi 00000101 01 0000 ............. ..... @rdn_dbm 513e1fa1164SRichard HendersonAND_zzi 00000101 10 0000 ............. ..... @rdn_dbm 514e1fa1164SRichard Henderson 515e1fa1164SRichard Henderson# SVE broadcast bitmask immediate 516e1fa1164SRichard HendersonDUPM 00000101 11 0000 dbm:13 rd:5 517e1fa1164SRichard Henderson 518f25a2361SRichard Henderson### SVE Integer Wide Immediate - Predicated Group 519f25a2361SRichard Henderson 520f25a2361SRichard Henderson# SVE copy floating-point immediate (predicated) 521f25a2361SRichard HendersonFCPY 00000101 .. 01 .... 110 imm:8 ..... @rdn_pg4 522f25a2361SRichard Henderson 523f25a2361SRichard Henderson# SVE copy integer immediate (predicated) 524f25a2361SRichard HendersonCPY_m_i 00000101 .. 01 .... 01 . ........ ..... @rdn_pg4 imm=%sh8_i8s 525f25a2361SRichard HendersonCPY_z_i 00000101 .. 01 .... 00 . ........ ..... @rdn_pg4 imm=%sh8_i8s 526f25a2361SRichard Henderson 527b94f8f60SRichard Henderson### SVE Permute - Extract Group 528b94f8f60SRichard Henderson 52975114792SStephen Long# SVE extract vector (destructive) 530b94f8f60SRichard HendersonEXT 00000101 001 ..... 000 ... rm:5 rd:5 \ 531b94f8f60SRichard Henderson &rrri rn=%reg_movprfx imm=%imm8_16_10 532b94f8f60SRichard Henderson 53375114792SStephen Long# SVE2 extract vector (constructive) 53475114792SStephen LongEXT_sve2 00000101 011 ..... 000 ... rn:5 rd:5 \ 53575114792SStephen Long &rri imm=%imm8_16_10 53675114792SStephen Long 53730562ab7SRichard Henderson### SVE Permute - Unpredicated Group 53830562ab7SRichard Henderson 53930562ab7SRichard Henderson# SVE broadcast general register 54030562ab7SRichard HendersonDUP_s 00000101 .. 1 00000 001110 ..... ..... @rd_rn 54130562ab7SRichard Henderson 54230562ab7SRichard Henderson# SVE broadcast indexed element 54330562ab7SRichard HendersonDUP_x 00000101 .. 1 ..... 001000 rn:5 rd:5 \ 54430562ab7SRichard Henderson &rri imm=%imm7_22_16 54530562ab7SRichard Henderson 54630562ab7SRichard Henderson# SVE insert SIMD&FP scalar register 54730562ab7SRichard HendersonINSR_f 00000101 .. 1 10100 001110 ..... ..... @rdn_rm 54830562ab7SRichard Henderson 54930562ab7SRichard Henderson# SVE insert general register 55030562ab7SRichard HendersonINSR_r 00000101 .. 1 00100 001110 ..... ..... @rdn_rm 55130562ab7SRichard Henderson 55230562ab7SRichard Henderson# SVE reverse vector elements 55330562ab7SRichard HendersonREV_v 00000101 .. 1 11000 001110 ..... ..... @rd_rn 55430562ab7SRichard Henderson 55530562ab7SRichard Henderson# SVE vector table lookup 55630562ab7SRichard HendersonTBL 00000101 .. 1 ..... 001100 ..... ..... @rd_rn_rm 55730562ab7SRichard Henderson 55830562ab7SRichard Henderson# SVE unpack vector elements 55930562ab7SRichard HendersonUNPK 00000101 esz:2 1100 u:1 h:1 001110 rn:5 rd:5 56030562ab7SRichard Henderson 56180a712a2SStephen Long# SVE2 Table Lookup (three sources) 56280a712a2SStephen Long 56380a712a2SStephen LongTBL_sve2 00000101 .. 1 ..... 001010 ..... ..... @rd_rn_rm 56480a712a2SStephen LongTBX 00000101 .. 1 ..... 001011 ..... ..... @rd_rn_rm 56580a712a2SStephen Long 566d731d8cbSRichard Henderson### SVE Permute - Predicates Group 567d731d8cbSRichard Henderson 568d731d8cbSRichard Henderson# SVE permute predicate elements 569d731d8cbSRichard HendersonZIP1_p 00000101 .. 10 .... 010 000 0 .... 0 .... @pd_pn_pm 570d731d8cbSRichard HendersonZIP2_p 00000101 .. 10 .... 010 001 0 .... 0 .... @pd_pn_pm 571d731d8cbSRichard HendersonUZP1_p 00000101 .. 10 .... 010 010 0 .... 0 .... @pd_pn_pm 572d731d8cbSRichard HendersonUZP2_p 00000101 .. 10 .... 010 011 0 .... 0 .... @pd_pn_pm 573d731d8cbSRichard HendersonTRN1_p 00000101 .. 10 .... 010 100 0 .... 0 .... @pd_pn_pm 574d731d8cbSRichard HendersonTRN2_p 00000101 .. 10 .... 010 101 0 .... 0 .... @pd_pn_pm 575d731d8cbSRichard Henderson 576d731d8cbSRichard Henderson# SVE reverse predicate elements 577d731d8cbSRichard HendersonREV_p 00000101 .. 11 0100 010 000 0 .... 0 .... @pd_pn 578d731d8cbSRichard Henderson 579d731d8cbSRichard Henderson# SVE unpack predicate elements 580d731d8cbSRichard HendersonPUNPKLO 00000101 00 11 0000 010 000 0 .... 0 .... @pd_pn_e0 581d731d8cbSRichard HendersonPUNPKHI 00000101 00 11 0001 010 000 0 .... 0 .... @pd_pn_e0 582d731d8cbSRichard Henderson 583234b48e9SRichard Henderson### SVE Permute - Interleaving Group 584234b48e9SRichard Henderson 585234b48e9SRichard Henderson# SVE permute vector elements 586234b48e9SRichard HendersonZIP1_z 00000101 .. 1 ..... 011 000 ..... ..... @rd_rn_rm 587234b48e9SRichard HendersonZIP2_z 00000101 .. 1 ..... 011 001 ..... ..... @rd_rn_rm 588234b48e9SRichard HendersonUZP1_z 00000101 .. 1 ..... 011 010 ..... ..... @rd_rn_rm 589234b48e9SRichard HendersonUZP2_z 00000101 .. 1 ..... 011 011 ..... ..... @rd_rn_rm 590234b48e9SRichard HendersonTRN1_z 00000101 .. 1 ..... 011 100 ..... ..... @rd_rn_rm 591234b48e9SRichard HendersonTRN2_z 00000101 .. 1 ..... 011 101 ..... ..... @rd_rn_rm 592234b48e9SRichard Henderson 5933ca879aeSRichard Henderson### SVE Permute - Predicated Group 5943ca879aeSRichard Henderson 5953ca879aeSRichard Henderson# SVE compress active elements 5963ca879aeSRichard Henderson# Note esz >= 2 5973ca879aeSRichard HendersonCOMPACT 00000101 .. 100001 100 ... ..... ..... @rd_pg_rn 5983ca879aeSRichard Henderson 599ef23cb72SRichard Henderson# SVE conditionally broadcast element to vector 600ef23cb72SRichard HendersonCLASTA_z 00000101 .. 10100 0 100 ... ..... ..... @rdn_pg_rm 601ef23cb72SRichard HendersonCLASTB_z 00000101 .. 10100 1 100 ... ..... ..... @rdn_pg_rm 602ef23cb72SRichard Henderson 603ef23cb72SRichard Henderson# SVE conditionally copy element to SIMD&FP scalar 604ef23cb72SRichard HendersonCLASTA_v 00000101 .. 10101 0 100 ... ..... ..... @rd_pg_rn 605ef23cb72SRichard HendersonCLASTB_v 00000101 .. 10101 1 100 ... ..... ..... @rd_pg_rn 606ef23cb72SRichard Henderson 607ef23cb72SRichard Henderson# SVE conditionally copy element to general register 608ef23cb72SRichard HendersonCLASTA_r 00000101 .. 11000 0 101 ... ..... ..... @rd_pg_rn 609ef23cb72SRichard HendersonCLASTB_r 00000101 .. 11000 1 101 ... ..... ..... @rd_pg_rn 610ef23cb72SRichard Henderson 611ef23cb72SRichard Henderson# SVE copy element to SIMD&FP scalar register 612ef23cb72SRichard HendersonLASTA_v 00000101 .. 10001 0 100 ... ..... ..... @rd_pg_rn 613ef23cb72SRichard HendersonLASTB_v 00000101 .. 10001 1 100 ... ..... ..... @rd_pg_rn 614ef23cb72SRichard Henderson 615ef23cb72SRichard Henderson# SVE copy element to general register 616ef23cb72SRichard HendersonLASTA_r 00000101 .. 10000 0 101 ... ..... ..... @rd_pg_rn 617ef23cb72SRichard HendersonLASTB_r 00000101 .. 10000 1 101 ... ..... ..... @rd_pg_rn 618ef23cb72SRichard Henderson 619792a5578SRichard Henderson# SVE copy element from SIMD&FP scalar register 620792a5578SRichard HendersonCPY_m_v 00000101 .. 100000 100 ... ..... ..... @rd_pg_rn 621792a5578SRichard Henderson 622792a5578SRichard Henderson# SVE copy element from general register to vector (predicated) 623792a5578SRichard HendersonCPY_m_r 00000101 .. 101000 101 ... ..... ..... @rd_pg_rn 624792a5578SRichard Henderson 625dae8fb90SRichard Henderson# SVE reverse within elements 626dae8fb90SRichard Henderson# Note esz >= operation size 627dae8fb90SRichard HendersonREVB 00000101 .. 1001 00 100 ... ..... ..... @rd_pg_rn 628dae8fb90SRichard HendersonREVH 00000101 .. 1001 01 100 ... ..... ..... @rd_pg_rn 629dae8fb90SRichard HendersonREVW 00000101 .. 1001 10 100 ... ..... ..... @rd_pg_rn 630dae8fb90SRichard HendersonRBIT 00000101 .. 1001 11 100 ... ..... ..... @rd_pg_rn 631dae8fb90SRichard Henderson 63275114792SStephen Long# SVE vector splice (predicated, destructive) 633b48ff240SRichard HendersonSPLICE 00000101 .. 101 100 100 ... ..... ..... @rdn_pg_rm 634b48ff240SRichard Henderson 63575114792SStephen Long# SVE2 vector splice (predicated, constructive) 63675114792SStephen LongSPLICE_sve2 00000101 .. 101 101 100 ... ..... ..... @rd_pg_rn 63775114792SStephen Long 638d3fe4a29SRichard Henderson### SVE Select Vectors Group 639d3fe4a29SRichard Henderson 640d3fe4a29SRichard Henderson# SVE select vector elements (predicated) 641d3fe4a29SRichard HendersonSEL_zpzz 00000101 .. 1 ..... 11 .... ..... ..... @rd_pg4_rn_rm 642d3fe4a29SRichard Henderson 643757f9cffSRichard Henderson### SVE Integer Compare - Vectors Group 644757f9cffSRichard Henderson 645757f9cffSRichard Henderson# SVE integer compare_vectors 646757f9cffSRichard HendersonCMPHS_ppzz 00100100 .. 0 ..... 000 ... ..... 0 .... @pd_pg_rn_rm 647757f9cffSRichard HendersonCMPHI_ppzz 00100100 .. 0 ..... 000 ... ..... 1 .... @pd_pg_rn_rm 648757f9cffSRichard HendersonCMPGE_ppzz 00100100 .. 0 ..... 100 ... ..... 0 .... @pd_pg_rn_rm 649757f9cffSRichard HendersonCMPGT_ppzz 00100100 .. 0 ..... 100 ... ..... 1 .... @pd_pg_rn_rm 650757f9cffSRichard HendersonCMPEQ_ppzz 00100100 .. 0 ..... 101 ... ..... 0 .... @pd_pg_rn_rm 651757f9cffSRichard HendersonCMPNE_ppzz 00100100 .. 0 ..... 101 ... ..... 1 .... @pd_pg_rn_rm 652757f9cffSRichard Henderson 653757f9cffSRichard Henderson# SVE integer compare with wide elements 654757f9cffSRichard Henderson# Note these require esz != 3. 655757f9cffSRichard HendersonCMPEQ_ppzw 00100100 .. 0 ..... 001 ... ..... 0 .... @pd_pg_rn_rm 656757f9cffSRichard HendersonCMPNE_ppzw 00100100 .. 0 ..... 001 ... ..... 1 .... @pd_pg_rn_rm 657757f9cffSRichard HendersonCMPGE_ppzw 00100100 .. 0 ..... 010 ... ..... 0 .... @pd_pg_rn_rm 658757f9cffSRichard HendersonCMPGT_ppzw 00100100 .. 0 ..... 010 ... ..... 1 .... @pd_pg_rn_rm 659757f9cffSRichard HendersonCMPLT_ppzw 00100100 .. 0 ..... 011 ... ..... 0 .... @pd_pg_rn_rm 660757f9cffSRichard HendersonCMPLE_ppzw 00100100 .. 0 ..... 011 ... ..... 1 .... @pd_pg_rn_rm 661757f9cffSRichard HendersonCMPHS_ppzw 00100100 .. 0 ..... 110 ... ..... 0 .... @pd_pg_rn_rm 662757f9cffSRichard HendersonCMPHI_ppzw 00100100 .. 0 ..... 110 ... ..... 1 .... @pd_pg_rn_rm 663757f9cffSRichard HendersonCMPLO_ppzw 00100100 .. 0 ..... 111 ... ..... 0 .... @pd_pg_rn_rm 664757f9cffSRichard HendersonCMPLS_ppzw 00100100 .. 0 ..... 111 ... ..... 1 .... @pd_pg_rn_rm 665757f9cffSRichard Henderson 66638cadebaSRichard Henderson### SVE Integer Compare - Unsigned Immediate Group 66738cadebaSRichard Henderson 66838cadebaSRichard Henderson# SVE integer compare with unsigned immediate 66938cadebaSRichard HendersonCMPHS_ppzi 00100100 .. 1 ....... 0 ... ..... 0 .... @pd_pg_rn_i7 67038cadebaSRichard HendersonCMPHI_ppzi 00100100 .. 1 ....... 0 ... ..... 1 .... @pd_pg_rn_i7 67138cadebaSRichard HendersonCMPLO_ppzi 00100100 .. 1 ....... 1 ... ..... 0 .... @pd_pg_rn_i7 67238cadebaSRichard HendersonCMPLS_ppzi 00100100 .. 1 ....... 1 ... ..... 1 .... @pd_pg_rn_i7 67338cadebaSRichard Henderson 67438cadebaSRichard Henderson### SVE Integer Compare - Signed Immediate Group 67538cadebaSRichard Henderson 67638cadebaSRichard Henderson# SVE integer compare with signed immediate 67738cadebaSRichard HendersonCMPGE_ppzi 00100101 .. 0 ..... 000 ... ..... 0 .... @pd_pg_rn_i5 67838cadebaSRichard HendersonCMPGT_ppzi 00100101 .. 0 ..... 000 ... ..... 1 .... @pd_pg_rn_i5 67938cadebaSRichard HendersonCMPLT_ppzi 00100101 .. 0 ..... 001 ... ..... 0 .... @pd_pg_rn_i5 68038cadebaSRichard HendersonCMPLE_ppzi 00100101 .. 0 ..... 001 ... ..... 1 .... @pd_pg_rn_i5 68138cadebaSRichard HendersonCMPEQ_ppzi 00100101 .. 0 ..... 100 ... ..... 0 .... @pd_pg_rn_i5 68238cadebaSRichard HendersonCMPNE_ppzi 00100101 .. 0 ..... 100 ... ..... 1 .... @pd_pg_rn_i5 68338cadebaSRichard Henderson 684e1fa1164SRichard Henderson### SVE Predicate Logical Operations Group 685e1fa1164SRichard Henderson 686516e246aSRichard Henderson# SVE predicate logical operations 687516e246aSRichard HendersonAND_pppp 00100101 0. 00 .... 01 .... 0 .... 0 .... @pd_pg_pn_pm_s 688516e246aSRichard HendersonBIC_pppp 00100101 0. 00 .... 01 .... 0 .... 1 .... @pd_pg_pn_pm_s 689516e246aSRichard HendersonEOR_pppp 00100101 0. 00 .... 01 .... 1 .... 0 .... @pd_pg_pn_pm_s 690516e246aSRichard HendersonSEL_pppp 00100101 0. 00 .... 01 .... 1 .... 1 .... @pd_pg_pn_pm_s 691516e246aSRichard HendersonORR_pppp 00100101 1. 00 .... 01 .... 0 .... 0 .... @pd_pg_pn_pm_s 692516e246aSRichard HendersonORN_pppp 00100101 1. 00 .... 01 .... 0 .... 1 .... @pd_pg_pn_pm_s 693516e246aSRichard HendersonNOR_pppp 00100101 1. 00 .... 01 .... 1 .... 0 .... @pd_pg_pn_pm_s 694516e246aSRichard HendersonNAND_pppp 00100101 1. 00 .... 01 .... 1 .... 1 .... @pd_pg_pn_pm_s 695516e246aSRichard Henderson 6969e18d7a6SRichard Henderson### SVE Predicate Misc Group 6979e18d7a6SRichard Henderson 6989e18d7a6SRichard Henderson# SVE predicate test 6999e18d7a6SRichard HendersonPTEST 00100101 01 010000 11 pg:4 0 rn:4 0 0000 7009e18d7a6SRichard Henderson 701028e2a7bSRichard Henderson# SVE predicate initialize 702028e2a7bSRichard HendersonPTRUE 00100101 esz:2 01100 s:1 111000 pat:5 0 rd:4 703028e2a7bSRichard Henderson 704028e2a7bSRichard Henderson# SVE initialize FFR 705028e2a7bSRichard HendersonSETFFR 00100101 0010 1100 1001 0000 0000 0000 706028e2a7bSRichard Henderson 707028e2a7bSRichard Henderson# SVE zero predicate register 708028e2a7bSRichard HendersonPFALSE 00100101 0001 1000 1110 0100 0000 rd:4 709028e2a7bSRichard Henderson 710028e2a7bSRichard Henderson# SVE predicate read from FFR (predicated) 711028e2a7bSRichard HendersonRDFFR_p 00100101 0 s:1 0110001111000 pg:4 0 rd:4 712028e2a7bSRichard Henderson 713028e2a7bSRichard Henderson# SVE predicate read from FFR (unpredicated) 714028e2a7bSRichard HendersonRDFFR 00100101 0001 1001 1111 0000 0000 rd:4 715028e2a7bSRichard Henderson 716028e2a7bSRichard Henderson# SVE FFR write from predicate (WRFFR) 717028e2a7bSRichard HendersonWRFFR 00100101 0010 1000 1001 000 rn:4 00000 718028e2a7bSRichard Henderson 719028e2a7bSRichard Henderson# SVE predicate first active 720028e2a7bSRichard HendersonPFIRST 00100101 01 011 000 11000 00 .... 0 .... @pd_pn_e0 721028e2a7bSRichard Henderson 722028e2a7bSRichard Henderson# SVE predicate next active 723028e2a7bSRichard HendersonPNEXT 00100101 .. 011 001 11000 10 .... 0 .... @pd_pn 724028e2a7bSRichard Henderson 72535da316fSRichard Henderson### SVE Partition Break Group 72635da316fSRichard Henderson 72735da316fSRichard Henderson# SVE propagate break from previous partition 72835da316fSRichard HendersonBRKPA 00100101 0. 00 .... 11 .... 0 .... 0 .... @pd_pg_pn_pm_s 72935da316fSRichard HendersonBRKPB 00100101 0. 00 .... 11 .... 0 .... 1 .... @pd_pg_pn_pm_s 73035da316fSRichard Henderson 73135da316fSRichard Henderson# SVE partition break condition 73235da316fSRichard HendersonBRKA_z 00100101 0. 01000001 .... 0 .... 0 .... @pd_pg_pn_s 73335da316fSRichard HendersonBRKB_z 00100101 1. 01000001 .... 0 .... 0 .... @pd_pg_pn_s 734407e6ce7SRichard HendersonBRKA_m 00100101 00 01000001 .... 0 .... 1 .... @pd_pg_pn_s0 735407e6ce7SRichard HendersonBRKB_m 00100101 10 01000001 .... 0 .... 1 .... @pd_pg_pn_s0 73635da316fSRichard Henderson 73735da316fSRichard Henderson# SVE propagate break to next partition 73835da316fSRichard HendersonBRKN 00100101 0. 01100001 .... 0 .... 0 .... @pd_pg_pn_s 73935da316fSRichard Henderson 7409ee3a611SRichard Henderson### SVE Predicate Count Group 7419ee3a611SRichard Henderson 7429ee3a611SRichard Henderson# SVE predicate count 7439ee3a611SRichard HendersonCNTP 00100101 .. 100 000 10 .... 0 .... ..... @rd_pg4_pn 7449ee3a611SRichard Henderson 7459ee3a611SRichard Henderson# SVE inc/dec register by predicate count 7469ee3a611SRichard HendersonINCDECP_r 00100101 .. 10110 d:1 10001 00 .... ..... @incdec_pred u=1 7479ee3a611SRichard Henderson 7489ee3a611SRichard Henderson# SVE inc/dec vector by predicate count 7499ee3a611SRichard HendersonINCDECP_z 00100101 .. 10110 d:1 10000 00 .... ..... @incdec2_pred u=1 7509ee3a611SRichard Henderson 7519ee3a611SRichard Henderson# SVE saturating inc/dec register by predicate count 7529ee3a611SRichard HendersonSINCDECP_r_32 00100101 .. 1010 d:1 u:1 10001 00 .... ..... @incdec_pred 7539ee3a611SRichard HendersonSINCDECP_r_64 00100101 .. 1010 d:1 u:1 10001 10 .... ..... @incdec_pred 7549ee3a611SRichard Henderson 7559ee3a611SRichard Henderson# SVE saturating inc/dec vector by predicate count 7569ee3a611SRichard HendersonSINCDECP_z 00100101 .. 1010 d:1 u:1 10000 00 .... ..... @incdec2_pred 7579ee3a611SRichard Henderson 758caf1cefcSRichard Henderson### SVE Integer Compare - Scalars Group 759caf1cefcSRichard Henderson 760caf1cefcSRichard Henderson# SVE conditionally terminate scalars 761caf1cefcSRichard HendersonCTERM 00100101 1 sf:1 1 rm:5 001000 rn:5 ne:1 0000 762caf1cefcSRichard Henderson 763caf1cefcSRichard Henderson# SVE integer compare scalar count and limit 76434688dbcSRichard HendersonWHILE 00100101 esz:2 1 rm:5 000 sf:1 u:1 lt:1 rn:5 eq:1 rd:4 765caf1cefcSRichard Henderson 76614f6dad1SRichard Henderson# SVE2 pointer conflict compare 76714f6dad1SRichard HendersonWHILE_ptr 00100101 esz:2 1 rm:5 001 100 rn:5 rw:1 rd:4 76814f6dad1SRichard Henderson 769ed491961SRichard Henderson### SVE Integer Wide Immediate - Unpredicated Group 770ed491961SRichard Henderson 771ed491961SRichard Henderson# SVE broadcast floating-point immediate (unpredicated) 772ed491961SRichard HendersonFDUP 00100101 esz:2 111 00 1110 imm:8 rd:5 773ed491961SRichard Henderson 774ed491961SRichard Henderson# SVE broadcast integer immediate (unpredicated) 775ed491961SRichard HendersonDUP_i 00100101 esz:2 111 00 011 . ........ rd:5 imm=%sh8_i8s 776ed491961SRichard Henderson 7776e6a157dSRichard Henderson# SVE integer add/subtract immediate (unpredicated) 7786e6a157dSRichard HendersonADD_zzi 00100101 .. 100 000 11 . ........ ..... @rdn_sh_i8u 7796e6a157dSRichard HendersonSUB_zzi 00100101 .. 100 001 11 . ........ ..... @rdn_sh_i8u 7806e6a157dSRichard HendersonSUBR_zzi 00100101 .. 100 011 11 . ........ ..... @rdn_sh_i8u 7816e6a157dSRichard HendersonSQADD_zzi 00100101 .. 100 100 11 . ........ ..... @rdn_sh_i8u 7826e6a157dSRichard HendersonUQADD_zzi 00100101 .. 100 101 11 . ........ ..... @rdn_sh_i8u 7836e6a157dSRichard HendersonSQSUB_zzi 00100101 .. 100 110 11 . ........ ..... @rdn_sh_i8u 7846e6a157dSRichard HendersonUQSUB_zzi 00100101 .. 100 111 11 . ........ ..... @rdn_sh_i8u 7856e6a157dSRichard Henderson 7866e6a157dSRichard Henderson# SVE integer min/max immediate (unpredicated) 7876e6a157dSRichard HendersonSMAX_zzi 00100101 .. 101 000 110 ........ ..... @rdn_i8s 7886e6a157dSRichard HendersonUMAX_zzi 00100101 .. 101 001 110 ........ ..... @rdn_i8u 7896e6a157dSRichard HendersonSMIN_zzi 00100101 .. 101 010 110 ........ ..... @rdn_i8s 7906e6a157dSRichard HendersonUMIN_zzi 00100101 .. 101 011 110 ........ ..... @rdn_i8u 7916e6a157dSRichard Henderson 7926e6a157dSRichard Henderson# SVE integer multiply immediate (unpredicated) 7936e6a157dSRichard HendersonMUL_zzi 00100101 .. 110 000 110 ........ ..... @rdn_i8s 7946e6a157dSRichard Henderson 795d730ecaaSRichard Henderson# SVE integer dot product (unpredicated) 796bc2bd697SRichard HendersonDOT_zzzz 01000100 1 sz:1 0 rm:5 00000 u:1 rn:5 rd:5 \ 797bc2bd697SRichard Henderson ra=%reg_movprfx 798d730ecaaSRichard Henderson 79921068f39SRichard Henderson# SVE2 complex dot product (vectors) 80021068f39SRichard HendersonCDOT_zzzz 01000100 esz:2 0 rm:5 0001 rot:2 rn:5 rd:5 ra=%reg_movprfx 80121068f39SRichard Henderson 802814d4c52SRichard Henderson#### SVE Multiply - Indexed 803814d4c52SRichard Henderson 80416fcfdc7SRichard Henderson# SVE integer dot product (indexed) 8050a82d963SRichard HendersonSDOT_zzxw_s 01000100 10 1 ..... 000000 ..... ..... @rrxr_2 esz=2 8060a82d963SRichard HendersonSDOT_zzxw_d 01000100 11 1 ..... 000000 ..... ..... @rrxr_1 esz=3 8070a82d963SRichard HendersonUDOT_zzxw_s 01000100 10 1 ..... 000001 ..... ..... @rrxr_2 esz=2 8080a82d963SRichard HendersonUDOT_zzxw_d 01000100 11 1 ..... 000001 ..... ..... @rrxr_1 esz=3 80916fcfdc7SRichard Henderson 8108a02aac7SRichard Henderson# SVE2 integer multiply-add (indexed) 8118a02aac7SRichard HendersonMLA_zzxz_h 01000100 0. 1 ..... 000010 ..... ..... @rrxr_3 esz=1 8128a02aac7SRichard HendersonMLA_zzxz_s 01000100 10 1 ..... 000010 ..... ..... @rrxr_2 esz=2 8138a02aac7SRichard HendersonMLA_zzxz_d 01000100 11 1 ..... 000010 ..... ..... @rrxr_1 esz=3 8148a02aac7SRichard HendersonMLS_zzxz_h 01000100 0. 1 ..... 000011 ..... ..... @rrxr_3 esz=1 8158a02aac7SRichard HendersonMLS_zzxz_s 01000100 10 1 ..... 000011 ..... ..... @rrxr_2 esz=2 8168a02aac7SRichard HendersonMLS_zzxz_d 01000100 11 1 ..... 000011 ..... ..... @rrxr_1 esz=3 8178a02aac7SRichard Henderson 81875d6d5fcSRichard Henderson# SVE2 saturating multiply-add high (indexed) 81975d6d5fcSRichard HendersonSQRDMLAH_zzxz_h 01000100 0. 1 ..... 000100 ..... ..... @rrxr_3 esz=1 82075d6d5fcSRichard HendersonSQRDMLAH_zzxz_s 01000100 10 1 ..... 000100 ..... ..... @rrxr_2 esz=2 82175d6d5fcSRichard HendersonSQRDMLAH_zzxz_d 01000100 11 1 ..... 000100 ..... ..... @rrxr_1 esz=3 82275d6d5fcSRichard HendersonSQRDMLSH_zzxz_h 01000100 0. 1 ..... 000101 ..... ..... @rrxr_3 esz=1 82375d6d5fcSRichard HendersonSQRDMLSH_zzxz_s 01000100 10 1 ..... 000101 ..... ..... @rrxr_2 esz=2 82475d6d5fcSRichard HendersonSQRDMLSH_zzxz_d 01000100 11 1 ..... 000101 ..... ..... @rrxr_1 esz=3 82575d6d5fcSRichard Henderson 8262867039aSRichard Henderson# SVE mixed sign dot product (indexed) 8272867039aSRichard HendersonUSDOT_zzxw_s 01000100 10 1 ..... 000110 ..... ..... @rrxr_2 esz=2 8282867039aSRichard HendersonSUDOT_zzxw_s 01000100 10 1 ..... 000111 ..... ..... @rrxr_2 esz=2 8292867039aSRichard Henderson 830c5c455d7SRichard Henderson# SVE2 saturating multiply-add (indexed) 831c5c455d7SRichard HendersonSQDMLALB_zzxw_s 01000100 10 1 ..... 0010.0 ..... ..... @rrxr_3a esz=2 832c5c455d7SRichard HendersonSQDMLALB_zzxw_d 01000100 11 1 ..... 0010.0 ..... ..... @rrxr_2a esz=3 833c5c455d7SRichard HendersonSQDMLALT_zzxw_s 01000100 10 1 ..... 0010.1 ..... ..... @rrxr_3a esz=2 834c5c455d7SRichard HendersonSQDMLALT_zzxw_d 01000100 11 1 ..... 0010.1 ..... ..... @rrxr_2a esz=3 835c5c455d7SRichard HendersonSQDMLSLB_zzxw_s 01000100 10 1 ..... 0011.0 ..... ..... @rrxr_3a esz=2 836c5c455d7SRichard HendersonSQDMLSLB_zzxw_d 01000100 11 1 ..... 0011.0 ..... ..... @rrxr_2a esz=3 837c5c455d7SRichard HendersonSQDMLSLT_zzxw_s 01000100 10 1 ..... 0011.1 ..... ..... @rrxr_3a esz=2 838c5c455d7SRichard HendersonSQDMLSLT_zzxw_d 01000100 11 1 ..... 0011.1 ..... ..... @rrxr_2a esz=3 839c5c455d7SRichard Henderson 84021068f39SRichard Henderson# SVE2 complex integer dot product (indexed) 84121068f39SRichard HendersonCDOT_zzxw_s 01000100 10 1 index:2 rm:3 0100 rot:2 rn:5 rd:5 \ 84221068f39SRichard Henderson ra=%reg_movprfx 84321068f39SRichard HendersonCDOT_zzxw_d 01000100 11 1 index:1 rm:4 0100 rot:2 rn:5 rd:5 \ 84421068f39SRichard Henderson ra=%reg_movprfx 84521068f39SRichard Henderson 8463b787ed8SRichard Henderson# SVE2 complex integer multiply-add (indexed) 8473b787ed8SRichard HendersonCMLA_zzxz_h 01000100 10 1 index:2 rm:3 0110 rot:2 rn:5 rd:5 \ 8483b787ed8SRichard Henderson ra=%reg_movprfx 8493b787ed8SRichard HendersonCMLA_zzxz_s 01000100 11 1 index:1 rm:4 0110 rot:2 rn:5 rd:5 \ 8503b787ed8SRichard Henderson ra=%reg_movprfx 8513b787ed8SRichard Henderson 8523b787ed8SRichard Henderson# SVE2 complex saturating integer multiply-add (indexed) 8533b787ed8SRichard HendersonSQRDCMLAH_zzxz_h 01000100 10 1 index:2 rm:3 0111 rot:2 rn:5 rd:5 \ 8543b787ed8SRichard Henderson ra=%reg_movprfx 8553b787ed8SRichard HendersonSQRDCMLAH_zzxz_s 01000100 11 1 index:1 rm:4 0111 rot:2 rn:5 rd:5 \ 8563b787ed8SRichard Henderson ra=%reg_movprfx 8573b787ed8SRichard Henderson 858d462469fSRichard Henderson# SVE2 multiply-add long (indexed) 859d462469fSRichard HendersonSMLALB_zzxw_s 01000100 10 1 ..... 1000.0 ..... ..... @rrxr_3a esz=2 860d462469fSRichard HendersonSMLALB_zzxw_d 01000100 11 1 ..... 1000.0 ..... ..... @rrxr_2a esz=3 861d462469fSRichard HendersonSMLALT_zzxw_s 01000100 10 1 ..... 1000.1 ..... ..... @rrxr_3a esz=2 862d462469fSRichard HendersonSMLALT_zzxw_d 01000100 11 1 ..... 1000.1 ..... ..... @rrxr_2a esz=3 863d462469fSRichard HendersonUMLALB_zzxw_s 01000100 10 1 ..... 1001.0 ..... ..... @rrxr_3a esz=2 864d462469fSRichard HendersonUMLALB_zzxw_d 01000100 11 1 ..... 1001.0 ..... ..... @rrxr_2a esz=3 865d462469fSRichard HendersonUMLALT_zzxw_s 01000100 10 1 ..... 1001.1 ..... ..... @rrxr_3a esz=2 866d462469fSRichard HendersonUMLALT_zzxw_d 01000100 11 1 ..... 1001.1 ..... ..... @rrxr_2a esz=3 867d462469fSRichard HendersonSMLSLB_zzxw_s 01000100 10 1 ..... 1010.0 ..... ..... @rrxr_3a esz=2 868d462469fSRichard HendersonSMLSLB_zzxw_d 01000100 11 1 ..... 1010.0 ..... ..... @rrxr_2a esz=3 869d462469fSRichard HendersonSMLSLT_zzxw_s 01000100 10 1 ..... 1010.1 ..... ..... @rrxr_3a esz=2 870d462469fSRichard HendersonSMLSLT_zzxw_d 01000100 11 1 ..... 1010.1 ..... ..... @rrxr_2a esz=3 871d462469fSRichard HendersonUMLSLB_zzxw_s 01000100 10 1 ..... 1011.0 ..... ..... @rrxr_3a esz=2 872d462469fSRichard HendersonUMLSLB_zzxw_d 01000100 11 1 ..... 1011.0 ..... ..... @rrxr_2a esz=3 873d462469fSRichard HendersonUMLSLT_zzxw_s 01000100 10 1 ..... 1011.1 ..... ..... @rrxr_3a esz=2 874d462469fSRichard HendersonUMLSLT_zzxw_d 01000100 11 1 ..... 1011.1 ..... ..... @rrxr_2a esz=3 875d462469fSRichard Henderson 876d3949c4cSRichard Henderson# SVE2 integer multiply long (indexed) 877d3949c4cSRichard HendersonSMULLB_zzx_s 01000100 10 1 ..... 1100.0 ..... ..... @rrx_3a esz=2 878d3949c4cSRichard HendersonSMULLB_zzx_d 01000100 11 1 ..... 1100.0 ..... ..... @rrx_2a esz=3 879d3949c4cSRichard HendersonSMULLT_zzx_s 01000100 10 1 ..... 1100.1 ..... ..... @rrx_3a esz=2 880d3949c4cSRichard HendersonSMULLT_zzx_d 01000100 11 1 ..... 1100.1 ..... ..... @rrx_2a esz=3 881d3949c4cSRichard HendersonUMULLB_zzx_s 01000100 10 1 ..... 1101.0 ..... ..... @rrx_3a esz=2 882d3949c4cSRichard HendersonUMULLB_zzx_d 01000100 11 1 ..... 1101.0 ..... ..... @rrx_2a esz=3 883d3949c4cSRichard HendersonUMULLT_zzx_s 01000100 10 1 ..... 1101.1 ..... ..... @rrx_3a esz=2 884d3949c4cSRichard HendersonUMULLT_zzx_d 01000100 11 1 ..... 1101.1 ..... ..... @rrx_2a esz=3 885d3949c4cSRichard Henderson 886b95f5eebSRichard Henderson# SVE2 saturating multiply (indexed) 887b95f5eebSRichard HendersonSQDMULLB_zzx_s 01000100 10 1 ..... 1110.0 ..... ..... @rrx_3a esz=2 888b95f5eebSRichard HendersonSQDMULLB_zzx_d 01000100 11 1 ..... 1110.0 ..... ..... @rrx_2a esz=3 889b95f5eebSRichard HendersonSQDMULLT_zzx_s 01000100 10 1 ..... 1110.1 ..... ..... @rrx_3a esz=2 890b95f5eebSRichard HendersonSQDMULLT_zzx_d 01000100 11 1 ..... 1110.1 ..... ..... @rrx_2a esz=3 891b95f5eebSRichard Henderson 8921aee2d70SRichard Henderson# SVE2 saturating multiply high (indexed) 8931aee2d70SRichard HendersonSQDMULH_zzx_h 01000100 0. 1 ..... 111100 ..... ..... @rrx_3 esz=1 8941aee2d70SRichard HendersonSQDMULH_zzx_s 01000100 10 1 ..... 111100 ..... ..... @rrx_2 esz=2 8951aee2d70SRichard HendersonSQDMULH_zzx_d 01000100 11 1 ..... 111100 ..... ..... @rrx_1 esz=3 8961aee2d70SRichard HendersonSQRDMULH_zzx_h 01000100 0. 1 ..... 111101 ..... ..... @rrx_3 esz=1 8971aee2d70SRichard HendersonSQRDMULH_zzx_s 01000100 10 1 ..... 111101 ..... ..... @rrx_2 esz=2 8981aee2d70SRichard HendersonSQRDMULH_zzx_d 01000100 11 1 ..... 111101 ..... ..... @rrx_1 esz=3 8991aee2d70SRichard Henderson 900814d4c52SRichard Henderson# SVE2 integer multiply (indexed) 901814d4c52SRichard HendersonMUL_zzx_h 01000100 0. 1 ..... 111110 ..... ..... @rrx_3 esz=1 902814d4c52SRichard HendersonMUL_zzx_s 01000100 10 1 ..... 111110 ..... ..... @rrx_2 esz=2 903814d4c52SRichard HendersonMUL_zzx_d 01000100 11 1 ..... 111110 ..... ..... @rrx_1 esz=3 904814d4c52SRichard Henderson 90576a9d9cdSRichard Henderson# SVE floating-point complex add (predicated) 90676a9d9cdSRichard HendersonFCADD 01100100 esz:2 00000 rot:1 100 pg:3 rm:5 rd:5 \ 90776a9d9cdSRichard Henderson rn=%reg_movprfx 90876a9d9cdSRichard Henderson 90905f48babSRichard Henderson# SVE floating-point complex multiply-add (predicated) 91005f48babSRichard HendersonFCMLA_zpzzz 01100100 esz:2 0 rm:5 0 rot:2 pg:3 rn:5 rd:5 \ 91105f48babSRichard Henderson ra=%reg_movprfx 91205f48babSRichard Henderson 91318fc2405SRichard Henderson# SVE floating-point complex multiply-add (indexed) 91418fc2405SRichard HendersonFCMLA_zzxz 01100100 10 1 index:2 rm:3 0001 rot:2 rn:5 rd:5 \ 91518fc2405SRichard Henderson ra=%reg_movprfx esz=1 91618fc2405SRichard HendersonFCMLA_zzxz 01100100 11 1 index:1 rm:4 0001 rot:2 rn:5 rd:5 \ 91718fc2405SRichard Henderson ra=%reg_movprfx esz=2 91818fc2405SRichard Henderson 919ca40a6e6SRichard Henderson### SVE FP Multiply-Add Indexed Group 920ca40a6e6SRichard Henderson 921ca40a6e6SRichard Henderson# SVE floating-point multiply-add (indexed) 9220a82d963SRichard HendersonFMLA_zzxz 01100100 0. 1 ..... 000000 ..... ..... @rrxr_3 esz=1 9230a82d963SRichard HendersonFMLA_zzxz 01100100 10 1 ..... 000000 ..... ..... @rrxr_2 esz=2 9240a82d963SRichard HendersonFMLA_zzxz 01100100 11 1 ..... 000000 ..... ..... @rrxr_1 esz=3 9250a82d963SRichard HendersonFMLS_zzxz 01100100 0. 1 ..... 000001 ..... ..... @rrxr_3 esz=1 9260a82d963SRichard HendersonFMLS_zzxz 01100100 10 1 ..... 000001 ..... ..... @rrxr_2 esz=2 9270a82d963SRichard HendersonFMLS_zzxz 01100100 11 1 ..... 000001 ..... ..... @rrxr_1 esz=3 928ca40a6e6SRichard Henderson 929ca40a6e6SRichard Henderson### SVE FP Multiply Indexed Group 930ca40a6e6SRichard Henderson 931ca40a6e6SRichard Henderson# SVE floating-point multiply (indexed) 9321c737d9cSRichard HendersonFMUL_zzx 01100100 0. 1 ..... 001000 ..... ..... @rrx_3 esz=1 9331c737d9cSRichard HendersonFMUL_zzx 01100100 10 1 ..... 001000 ..... ..... @rrx_2 esz=2 9341c737d9cSRichard HendersonFMUL_zzx 01100100 11 1 ..... 001000 ..... ..... @rrx_1 esz=3 935ca40a6e6SRichard Henderson 93623fbe79fSRichard Henderson### SVE FP Fast Reduction Group 93723fbe79fSRichard Henderson 93823fbe79fSRichard HendersonFADDV 01100101 .. 000 000 001 ... ..... ..... @rd_pg_rn 93923fbe79fSRichard HendersonFMAXNMV 01100101 .. 000 100 001 ... ..... ..... @rd_pg_rn 94023fbe79fSRichard HendersonFMINNMV 01100101 .. 000 101 001 ... ..... ..... @rd_pg_rn 94123fbe79fSRichard HendersonFMAXV 01100101 .. 000 110 001 ... ..... ..... @rd_pg_rn 94223fbe79fSRichard HendersonFMINV 01100101 .. 000 111 001 ... ..... ..... @rd_pg_rn 94323fbe79fSRichard Henderson 9443887c038SRichard Henderson## SVE Floating Point Unary Operations - Unpredicated Group 9453887c038SRichard Henderson 9463887c038SRichard HendersonFRECPE 01100101 .. 001 110 001100 ..... ..... @rd_rn 9473887c038SRichard HendersonFRSQRTE 01100101 .. 001 111 001100 ..... ..... @rd_rn 9483887c038SRichard Henderson 9494d2e2a03SRichard Henderson### SVE FP Compare with Zero Group 9504d2e2a03SRichard Henderson 9514d2e2a03SRichard HendersonFCMGE_ppz0 01100101 .. 0100 00 001 ... ..... 0 .... @pd_pg_rn 9524d2e2a03SRichard HendersonFCMGT_ppz0 01100101 .. 0100 00 001 ... ..... 1 .... @pd_pg_rn 9534d2e2a03SRichard HendersonFCMLT_ppz0 01100101 .. 0100 01 001 ... ..... 0 .... @pd_pg_rn 9544d2e2a03SRichard HendersonFCMLE_ppz0 01100101 .. 0100 01 001 ... ..... 1 .... @pd_pg_rn 9554d2e2a03SRichard HendersonFCMEQ_ppz0 01100101 .. 0100 10 001 ... ..... 0 .... @pd_pg_rn 9564d2e2a03SRichard HendersonFCMNE_ppz0 01100101 .. 0100 11 001 ... ..... 0 .... @pd_pg_rn 9574d2e2a03SRichard Henderson 9587f9ddf64SRichard Henderson### SVE FP Accumulating Reduction Group 9597f9ddf64SRichard Henderson 9607f9ddf64SRichard Henderson# SVE floating-point serial reduction (predicated) 9617f9ddf64SRichard HendersonFADDA 01100101 .. 011 000 001 ... ..... ..... @rdn_pg_rm 9627f9ddf64SRichard Henderson 96329b80469SRichard Henderson### SVE Floating Point Arithmetic - Unpredicated Group 96429b80469SRichard Henderson 96529b80469SRichard Henderson# SVE floating-point arithmetic (unpredicated) 96629b80469SRichard HendersonFADD_zzz 01100101 .. 0 ..... 000 000 ..... ..... @rd_rn_rm 96729b80469SRichard HendersonFSUB_zzz 01100101 .. 0 ..... 000 001 ..... ..... @rd_rn_rm 96829b80469SRichard HendersonFMUL_zzz 01100101 .. 0 ..... 000 010 ..... ..... @rd_rn_rm 96929b80469SRichard HendersonFTSMUL 01100101 .. 0 ..... 000 011 ..... ..... @rd_rn_rm 97029b80469SRichard HendersonFRECPS 01100101 .. 0 ..... 000 110 ..... ..... @rd_rn_rm 97129b80469SRichard HendersonFRSQRTS 01100101 .. 0 ..... 000 111 ..... ..... @rd_rn_rm 97229b80469SRichard Henderson 973ec3b87c2SRichard Henderson### SVE FP Arithmetic Predicated Group 974ec3b87c2SRichard Henderson 975ec3b87c2SRichard Henderson# SVE floating-point arithmetic (predicated) 976ec3b87c2SRichard HendersonFADD_zpzz 01100101 .. 00 0000 100 ... ..... ..... @rdn_pg_rm 977ec3b87c2SRichard HendersonFSUB_zpzz 01100101 .. 00 0001 100 ... ..... ..... @rdn_pg_rm 978ec3b87c2SRichard HendersonFMUL_zpzz 01100101 .. 00 0010 100 ... ..... ..... @rdn_pg_rm 979ec3b87c2SRichard HendersonFSUB_zpzz 01100101 .. 00 0011 100 ... ..... ..... @rdm_pg_rn # FSUBR 980ec3b87c2SRichard HendersonFMAXNM_zpzz 01100101 .. 00 0100 100 ... ..... ..... @rdn_pg_rm 981ec3b87c2SRichard HendersonFMINNM_zpzz 01100101 .. 00 0101 100 ... ..... ..... @rdn_pg_rm 982ec3b87c2SRichard HendersonFMAX_zpzz 01100101 .. 00 0110 100 ... ..... ..... @rdn_pg_rm 983ec3b87c2SRichard HendersonFMIN_zpzz 01100101 .. 00 0111 100 ... ..... ..... @rdn_pg_rm 984ec3b87c2SRichard HendersonFABD 01100101 .. 00 1000 100 ... ..... ..... @rdn_pg_rm 985ec3b87c2SRichard HendersonFSCALE 01100101 .. 00 1001 100 ... ..... ..... @rdn_pg_rm 986ec3b87c2SRichard HendersonFMULX 01100101 .. 00 1010 100 ... ..... ..... @rdn_pg_rm 987ec3b87c2SRichard HendersonFDIV 01100101 .. 00 1100 100 ... ..... ..... @rdm_pg_rn # FDIVR 988ec3b87c2SRichard HendersonFDIV 01100101 .. 00 1101 100 ... ..... ..... @rdn_pg_rm 989ec3b87c2SRichard Henderson 990cc48affeSRichard Henderson# SVE floating-point arithmetic with immediate (predicated) 991cc48affeSRichard HendersonFADD_zpzi 01100101 .. 011 000 100 ... 0000 . ..... @rdn_i1 992cc48affeSRichard HendersonFSUB_zpzi 01100101 .. 011 001 100 ... 0000 . ..... @rdn_i1 993cc48affeSRichard HendersonFMUL_zpzi 01100101 .. 011 010 100 ... 0000 . ..... @rdn_i1 994cc48affeSRichard HendersonFSUBR_zpzi 01100101 .. 011 011 100 ... 0000 . ..... @rdn_i1 995cc48affeSRichard HendersonFMAXNM_zpzi 01100101 .. 011 100 100 ... 0000 . ..... @rdn_i1 996cc48affeSRichard HendersonFMINNM_zpzi 01100101 .. 011 101 100 ... 0000 . ..... @rdn_i1 997cc48affeSRichard HendersonFMAX_zpzi 01100101 .. 011 110 100 ... 0000 . ..... @rdn_i1 998cc48affeSRichard HendersonFMIN_zpzi 01100101 .. 011 111 100 ... 0000 . ..... @rdn_i1 999cc48affeSRichard Henderson 100067fcd9adSRichard Henderson# SVE floating-point trig multiply-add coefficient 100167fcd9adSRichard HendersonFTMAD 01100101 esz:2 010 imm:3 100000 rm:5 rd:5 rn=%reg_movprfx 100267fcd9adSRichard Henderson 10036ceabaadSRichard Henderson### SVE FP Multiply-Add Group 10046ceabaadSRichard Henderson 10056ceabaadSRichard Henderson# SVE floating-point multiply-accumulate writing addend 10066ceabaadSRichard HendersonFMLA_zpzzz 01100101 .. 1 ..... 000 ... ..... ..... @rda_pg_rn_rm 10076ceabaadSRichard HendersonFMLS_zpzzz 01100101 .. 1 ..... 001 ... ..... ..... @rda_pg_rn_rm 10086ceabaadSRichard HendersonFNMLA_zpzzz 01100101 .. 1 ..... 010 ... ..... ..... @rda_pg_rn_rm 10096ceabaadSRichard HendersonFNMLS_zpzzz 01100101 .. 1 ..... 011 ... ..... ..... @rda_pg_rn_rm 10106ceabaadSRichard Henderson 10116ceabaadSRichard Henderson# SVE floating-point multiply-accumulate writing multiplicand 10126ceabaadSRichard Henderson# Alter the operand extraction order and reuse the helpers from above. 10136ceabaadSRichard Henderson# FMAD, FMSB, FNMAD, FNMS 10146ceabaadSRichard HendersonFMLA_zpzzz 01100101 .. 1 ..... 100 ... ..... ..... @rdn_pg_rm_ra 10156ceabaadSRichard HendersonFMLS_zpzzz 01100101 .. 1 ..... 101 ... ..... ..... @rdn_pg_rm_ra 10166ceabaadSRichard HendersonFNMLA_zpzzz 01100101 .. 1 ..... 110 ... ..... ..... @rdn_pg_rm_ra 10176ceabaadSRichard HendersonFNMLS_zpzzz 01100101 .. 1 ..... 111 ... ..... ..... @rdn_pg_rm_ra 10186ceabaadSRichard Henderson 10198092c6a3SRichard Henderson### SVE FP Unary Operations Predicated Group 10208092c6a3SRichard Henderson 102146d33d1eSRichard Henderson# SVE floating-point convert precision 102246d33d1eSRichard HendersonFCVT_sh 01100101 10 0010 00 101 ... ..... ..... @rd_pg_rn_e0 102346d33d1eSRichard HendersonFCVT_hs 01100101 10 0010 01 101 ... ..... ..... @rd_pg_rn_e0 102446d33d1eSRichard HendersonFCVT_dh 01100101 11 0010 00 101 ... ..... ..... @rd_pg_rn_e0 102546d33d1eSRichard HendersonFCVT_hd 01100101 11 0010 01 101 ... ..... ..... @rd_pg_rn_e0 102646d33d1eSRichard HendersonFCVT_ds 01100101 11 0010 10 101 ... ..... ..... @rd_pg_rn_e0 102746d33d1eSRichard HendersonFCVT_sd 01100101 11 0010 11 101 ... ..... ..... @rd_pg_rn_e0 102846d33d1eSRichard Henderson 1029df4de1afSRichard Henderson# SVE floating-point convert to integer 1030df4de1afSRichard HendersonFCVTZS_hh 01100101 01 011 01 0 101 ... ..... ..... @rd_pg_rn_e0 1031df4de1afSRichard HendersonFCVTZU_hh 01100101 01 011 01 1 101 ... ..... ..... @rd_pg_rn_e0 1032df4de1afSRichard HendersonFCVTZS_hs 01100101 01 011 10 0 101 ... ..... ..... @rd_pg_rn_e0 1033df4de1afSRichard HendersonFCVTZU_hs 01100101 01 011 10 1 101 ... ..... ..... @rd_pg_rn_e0 1034df4de1afSRichard HendersonFCVTZS_hd 01100101 01 011 11 0 101 ... ..... ..... @rd_pg_rn_e0 1035df4de1afSRichard HendersonFCVTZU_hd 01100101 01 011 11 1 101 ... ..... ..... @rd_pg_rn_e0 1036df4de1afSRichard HendersonFCVTZS_ss 01100101 10 011 10 0 101 ... ..... ..... @rd_pg_rn_e0 1037df4de1afSRichard HendersonFCVTZU_ss 01100101 10 011 10 1 101 ... ..... ..... @rd_pg_rn_e0 1038df4de1afSRichard HendersonFCVTZS_ds 01100101 11 011 00 0 101 ... ..... ..... @rd_pg_rn_e0 1039df4de1afSRichard HendersonFCVTZU_ds 01100101 11 011 00 1 101 ... ..... ..... @rd_pg_rn_e0 1040df4de1afSRichard HendersonFCVTZS_sd 01100101 11 011 10 0 101 ... ..... ..... @rd_pg_rn_e0 1041df4de1afSRichard HendersonFCVTZU_sd 01100101 11 011 10 1 101 ... ..... ..... @rd_pg_rn_e0 1042df4de1afSRichard HendersonFCVTZS_dd 01100101 11 011 11 0 101 ... ..... ..... @rd_pg_rn_e0 1043df4de1afSRichard HendersonFCVTZU_dd 01100101 11 011 11 1 101 ... ..... ..... @rd_pg_rn_e0 1044df4de1afSRichard Henderson 1045cda3c753SRichard Henderson# SVE floating-point round to integral value 1046cda3c753SRichard HendersonFRINTN 01100101 .. 000 000 101 ... ..... ..... @rd_pg_rn 1047cda3c753SRichard HendersonFRINTP 01100101 .. 000 001 101 ... ..... ..... @rd_pg_rn 1048cda3c753SRichard HendersonFRINTM 01100101 .. 000 010 101 ... ..... ..... @rd_pg_rn 1049cda3c753SRichard HendersonFRINTZ 01100101 .. 000 011 101 ... ..... ..... @rd_pg_rn 1050cda3c753SRichard HendersonFRINTA 01100101 .. 000 100 101 ... ..... ..... @rd_pg_rn 1051cda3c753SRichard HendersonFRINTX 01100101 .. 000 110 101 ... ..... ..... @rd_pg_rn 1052cda3c753SRichard HendersonFRINTI 01100101 .. 000 111 101 ... ..... ..... @rd_pg_rn 1053cda3c753SRichard Henderson 1054ec5b375bSRichard Henderson# SVE floating-point unary operations 1055ec5b375bSRichard HendersonFRECPX 01100101 .. 001 100 101 ... ..... ..... @rd_pg_rn 1056ec5b375bSRichard HendersonFSQRT 01100101 .. 001 101 101 ... ..... ..... @rd_pg_rn 1057ec5b375bSRichard Henderson 10588092c6a3SRichard Henderson# SVE integer convert to floating-point 10598092c6a3SRichard HendersonSCVTF_hh 01100101 01 010 01 0 101 ... ..... ..... @rd_pg_rn_e0 10608092c6a3SRichard HendersonSCVTF_sh 01100101 01 010 10 0 101 ... ..... ..... @rd_pg_rn_e0 10618092c6a3SRichard HendersonSCVTF_dh 01100101 01 010 11 0 101 ... ..... ..... @rd_pg_rn_e0 10628092c6a3SRichard HendersonSCVTF_ss 01100101 10 010 10 0 101 ... ..... ..... @rd_pg_rn_e0 10638092c6a3SRichard HendersonSCVTF_sd 01100101 11 010 00 0 101 ... ..... ..... @rd_pg_rn_e0 10648092c6a3SRichard HendersonSCVTF_ds 01100101 11 010 10 0 101 ... ..... ..... @rd_pg_rn_e0 10658092c6a3SRichard HendersonSCVTF_dd 01100101 11 010 11 0 101 ... ..... ..... @rd_pg_rn_e0 10668092c6a3SRichard Henderson 10678092c6a3SRichard HendersonUCVTF_hh 01100101 01 010 01 1 101 ... ..... ..... @rd_pg_rn_e0 10688092c6a3SRichard HendersonUCVTF_sh 01100101 01 010 10 1 101 ... ..... ..... @rd_pg_rn_e0 10698092c6a3SRichard HendersonUCVTF_dh 01100101 01 010 11 1 101 ... ..... ..... @rd_pg_rn_e0 10708092c6a3SRichard HendersonUCVTF_ss 01100101 10 010 10 1 101 ... ..... ..... @rd_pg_rn_e0 10718092c6a3SRichard HendersonUCVTF_sd 01100101 11 010 00 1 101 ... ..... ..... @rd_pg_rn_e0 10728092c6a3SRichard HendersonUCVTF_ds 01100101 11 010 10 1 101 ... ..... ..... @rd_pg_rn_e0 10738092c6a3SRichard HendersonUCVTF_dd 01100101 11 010 11 1 101 ... ..... ..... @rd_pg_rn_e0 10748092c6a3SRichard Henderson 1075d1822297SRichard Henderson### SVE Memory - 32-bit Gather and Unsized Contiguous Group 1076d1822297SRichard Henderson 1077d1822297SRichard Henderson# SVE load predicate register 1078d1822297SRichard HendersonLDR_pri 10000101 10 ...... 000 ... ..... 0 .... @pd_rn_i9 1079d1822297SRichard Henderson 1080d1822297SRichard Henderson# SVE load vector register 1081d1822297SRichard HendersonLDR_zri 10000101 10 ...... 010 ... ..... ..... @rd_rn_i9 1082c4e7c493SRichard Henderson 108368459864SRichard Henderson# SVE load and broadcast element 108468459864SRichard HendersonLD1R_zpri 1000010 .. 1 imm:6 1.. pg:3 rn:5 rd:5 \ 108568459864SRichard Henderson &rpri_load dtype=%dtype_23_13 nreg=0 108668459864SRichard Henderson 1087673e9fa6SRichard Henderson# SVE 32-bit gather load (scalar plus 32-bit unscaled offsets) 1088673e9fa6SRichard Henderson# SVE 32-bit gather load (scalar plus 32-bit scaled offsets) 1089673e9fa6SRichard HendersonLD1_zprz 1000010 00 .0 ..... 0.. ... ..... ..... \ 1090673e9fa6SRichard Henderson @rprr_g_load_xs_u esz=2 msz=0 scale=0 1091673e9fa6SRichard HendersonLD1_zprz 1000010 01 .. ..... 0.. ... ..... ..... \ 1092673e9fa6SRichard Henderson @rprr_g_load_xs_u_sc esz=2 msz=1 1093673e9fa6SRichard HendersonLD1_zprz 1000010 10 .. ..... 01. ... ..... ..... \ 1094673e9fa6SRichard Henderson @rprr_g_load_xs_sc esz=2 msz=2 u=1 1095673e9fa6SRichard Henderson 1096673e9fa6SRichard Henderson# SVE 32-bit gather load (vector plus immediate) 1097673e9fa6SRichard HendersonLD1_zpiz 1000010 .. 01 ..... 1.. ... ..... ..... \ 1098673e9fa6SRichard Henderson @rpri_g_load esz=2 1099673e9fa6SRichard Henderson 1100c4e7c493SRichard Henderson### SVE Memory Contiguous Load Group 1101c4e7c493SRichard Henderson 1102c4e7c493SRichard Henderson# SVE contiguous load (scalar plus scalar) 1103c4e7c493SRichard HendersonLD_zprr 1010010 .... ..... 010 ... ..... ..... @rprr_load_dt nreg=0 1104c4e7c493SRichard Henderson 1105e2654d75SRichard Henderson# SVE contiguous first-fault load (scalar plus scalar) 1106e2654d75SRichard HendersonLDFF1_zprr 1010010 .... ..... 011 ... ..... ..... @rprr_load_dt nreg=0 1107e2654d75SRichard Henderson 1108c4e7c493SRichard Henderson# SVE contiguous load (scalar plus immediate) 1109c4e7c493SRichard HendersonLD_zpri 1010010 .... 0.... 101 ... ..... ..... @rpri_load_dt nreg=0 1110c4e7c493SRichard Henderson 1111e2654d75SRichard Henderson# SVE contiguous non-fault load (scalar plus immediate) 1112e2654d75SRichard HendersonLDNF1_zpri 1010010 .... 1.... 101 ... ..... ..... @rpri_load_dt nreg=0 1113e2654d75SRichard Henderson 1114c4e7c493SRichard Henderson# SVE contiguous non-temporal load (scalar plus scalar) 1115c4e7c493SRichard Henderson# LDNT1B, LDNT1H, LDNT1W, LDNT1D 1116c4e7c493SRichard Henderson# SVE load multiple structures (scalar plus scalar) 1117c4e7c493SRichard Henderson# LD2B, LD2H, LD2W, LD2D; etc. 1118c4e7c493SRichard HendersonLD_zprr 1010010 .. nreg:2 ..... 110 ... ..... ..... @rprr_load_msz 1119c4e7c493SRichard Henderson 1120c4e7c493SRichard Henderson# SVE contiguous non-temporal load (scalar plus immediate) 1121c4e7c493SRichard Henderson# LDNT1B, LDNT1H, LDNT1W, LDNT1D 1122c4e7c493SRichard Henderson# SVE load multiple structures (scalar plus immediate) 1123c4e7c493SRichard Henderson# LD2B, LD2H, LD2W, LD2D; etc. 1124c4e7c493SRichard HendersonLD_zpri 1010010 .. nreg:2 0.... 111 ... ..... ..... @rpri_load_msz 11251a039c7eSRichard Henderson 112605abe304SRichard Henderson# SVE load and broadcast quadword (scalar plus scalar) 112705abe304SRichard HendersonLD1RQ_zprr 1010010 .. 00 ..... 000 ... ..... ..... \ 112805abe304SRichard Henderson @rprr_load_msz nreg=0 112905abe304SRichard Henderson 113005abe304SRichard Henderson# SVE load and broadcast quadword (scalar plus immediate) 113105abe304SRichard Henderson# LD1RQB, LD1RQH, LD1RQS, LD1RQD 113205abe304SRichard HendersonLD1RQ_zpri 1010010 .. 00 0.... 001 ... ..... ..... \ 113305abe304SRichard Henderson @rpri_load_msz nreg=0 113405abe304SRichard Henderson 1135dec6cf6bSRichard Henderson# SVE 32-bit gather prefetch (scalar plus 32-bit scaled offsets) 1136dec6cf6bSRichard HendersonPRF 1000010 00 -1 ----- 0-- --- ----- 0 ---- 1137dec6cf6bSRichard Henderson 1138dec6cf6bSRichard Henderson# SVE 32-bit gather prefetch (vector plus immediate) 1139dec6cf6bSRichard HendersonPRF 1000010 -- 00 ----- 111 --- ----- 0 ---- 1140dec6cf6bSRichard Henderson 1141dec6cf6bSRichard Henderson# SVE contiguous prefetch (scalar plus immediate) 1142dec6cf6bSRichard HendersonPRF 1000010 11 1- ----- 0-- --- ----- 0 ---- 1143dec6cf6bSRichard Henderson 1144dec6cf6bSRichard Henderson# SVE contiguous prefetch (scalar plus scalar) 1145dec6cf6bSRichard HendersonPRF_rr 1000010 -- 00 rm:5 110 --- ----- 0 ---- 1146dec6cf6bSRichard Henderson 1147dec6cf6bSRichard Henderson### SVE Memory 64-bit Gather Group 1148dec6cf6bSRichard Henderson 1149673e9fa6SRichard Henderson# SVE 64-bit gather load (scalar plus 32-bit unpacked unscaled offsets) 1150673e9fa6SRichard Henderson# SVE 64-bit gather load (scalar plus 32-bit unpacked scaled offsets) 1151673e9fa6SRichard HendersonLD1_zprz 1100010 00 .0 ..... 0.. ... ..... ..... \ 1152673e9fa6SRichard Henderson @rprr_g_load_xs_u esz=3 msz=0 scale=0 1153673e9fa6SRichard HendersonLD1_zprz 1100010 01 .. ..... 0.. ... ..... ..... \ 1154673e9fa6SRichard Henderson @rprr_g_load_xs_u_sc esz=3 msz=1 1155673e9fa6SRichard HendersonLD1_zprz 1100010 10 .. ..... 0.. ... ..... ..... \ 1156673e9fa6SRichard Henderson @rprr_g_load_xs_u_sc esz=3 msz=2 1157673e9fa6SRichard HendersonLD1_zprz 1100010 11 .. ..... 01. ... ..... ..... \ 1158673e9fa6SRichard Henderson @rprr_g_load_xs_sc esz=3 msz=3 u=1 1159673e9fa6SRichard Henderson 1160673e9fa6SRichard Henderson# SVE 64-bit gather load (scalar plus 64-bit unscaled offsets) 1161673e9fa6SRichard Henderson# SVE 64-bit gather load (scalar plus 64-bit scaled offsets) 1162673e9fa6SRichard HendersonLD1_zprz 1100010 00 10 ..... 1.. ... ..... ..... \ 1163673e9fa6SRichard Henderson @rprr_g_load_u esz=3 msz=0 scale=0 1164673e9fa6SRichard HendersonLD1_zprz 1100010 01 1. ..... 1.. ... ..... ..... \ 1165673e9fa6SRichard Henderson @rprr_g_load_u_sc esz=3 msz=1 1166673e9fa6SRichard HendersonLD1_zprz 1100010 10 1. ..... 1.. ... ..... ..... \ 1167673e9fa6SRichard Henderson @rprr_g_load_u_sc esz=3 msz=2 1168673e9fa6SRichard HendersonLD1_zprz 1100010 11 1. ..... 11. ... ..... ..... \ 1169673e9fa6SRichard Henderson @rprr_g_load_sc esz=3 msz=3 u=1 1170673e9fa6SRichard Henderson 1171673e9fa6SRichard Henderson# SVE 64-bit gather load (vector plus immediate) 1172673e9fa6SRichard HendersonLD1_zpiz 1100010 .. 01 ..... 1.. ... ..... ..... \ 1173673e9fa6SRichard Henderson @rpri_g_load esz=3 1174673e9fa6SRichard Henderson 1175dec6cf6bSRichard Henderson# SVE 64-bit gather prefetch (scalar plus 64-bit scaled offsets) 1176dec6cf6bSRichard HendersonPRF 1100010 00 11 ----- 1-- --- ----- 0 ---- 1177dec6cf6bSRichard Henderson 1178dec6cf6bSRichard Henderson# SVE 64-bit gather prefetch (scalar plus unpacked 32-bit scaled offsets) 1179dec6cf6bSRichard HendersonPRF 1100010 00 -1 ----- 0-- --- ----- 0 ---- 1180dec6cf6bSRichard Henderson 1181dec6cf6bSRichard Henderson# SVE 64-bit gather prefetch (vector plus immediate) 1182dec6cf6bSRichard HendersonPRF 1100010 -- 00 ----- 111 --- ----- 0 ---- 1183dec6cf6bSRichard Henderson 11841a039c7eSRichard Henderson### SVE Memory Store Group 11851a039c7eSRichard Henderson 11865047c204SRichard Henderson# SVE store predicate register 11875047c204SRichard HendersonSTR_pri 1110010 11 0. ..... 000 ... ..... 0 .... @pd_rn_i9 11885047c204SRichard Henderson 11895047c204SRichard Henderson# SVE store vector register 11905047c204SRichard HendersonSTR_zri 1110010 11 0. ..... 010 ... ..... ..... @rd_rn_i9 11915047c204SRichard Henderson 11921a039c7eSRichard Henderson# SVE contiguous store (scalar plus immediate) 11931a039c7eSRichard Henderson# ST1B, ST1H, ST1W, ST1D; require msz <= esz 11941a039c7eSRichard HendersonST_zpri 1110010 .. esz:2 0.... 111 ... ..... ..... \ 11951a039c7eSRichard Henderson @rpri_store_msz nreg=0 11961a039c7eSRichard Henderson 11971a039c7eSRichard Henderson# SVE contiguous store (scalar plus scalar) 11981a039c7eSRichard Henderson# ST1B, ST1H, ST1W, ST1D; require msz <= esz 11991a039c7eSRichard Henderson# Enumerate msz lest we conflict with STR_zri. 12001a039c7eSRichard HendersonST_zprr 1110010 00 .. ..... 010 ... ..... ..... \ 12011a039c7eSRichard Henderson @rprr_store_esz_n0 msz=0 12021a039c7eSRichard HendersonST_zprr 1110010 01 .. ..... 010 ... ..... ..... \ 12031a039c7eSRichard Henderson @rprr_store_esz_n0 msz=1 12041a039c7eSRichard HendersonST_zprr 1110010 10 .. ..... 010 ... ..... ..... \ 12051a039c7eSRichard Henderson @rprr_store_esz_n0 msz=2 12061a039c7eSRichard HendersonST_zprr 1110010 11 11 ..... 010 ... ..... ..... \ 12071a039c7eSRichard Henderson @rprr_store msz=3 esz=3 nreg=0 12081a039c7eSRichard Henderson 12091a039c7eSRichard Henderson# SVE contiguous non-temporal store (scalar plus immediate) (nreg == 0) 12101a039c7eSRichard Henderson# SVE store multiple structures (scalar plus immediate) (nreg != 0) 12111a039c7eSRichard HendersonST_zpri 1110010 .. nreg:2 1.... 111 ... ..... ..... \ 12121a039c7eSRichard Henderson @rpri_store_msz esz=%size_23 12131a039c7eSRichard Henderson 12141a039c7eSRichard Henderson# SVE contiguous non-temporal store (scalar plus scalar) (nreg == 0) 12151a039c7eSRichard Henderson# SVE store multiple structures (scalar plus scalar) (nreg != 0) 12161a039c7eSRichard HendersonST_zprr 1110010 msz:2 nreg:2 ..... 011 ... ..... ..... \ 12171a039c7eSRichard Henderson @rprr_store esz=%size_23 1218f6dbf62aSRichard Henderson 1219f6dbf62aSRichard Henderson# SVE 32-bit scatter store (scalar plus 32-bit scaled offsets) 1220f6dbf62aSRichard Henderson# Require msz > 0 && msz <= esz. 1221f6dbf62aSRichard HendersonST1_zprz 1110010 .. 11 ..... 100 ... ..... ..... \ 1222f6dbf62aSRichard Henderson @rprr_scatter_store xs=0 esz=2 scale=1 1223f6dbf62aSRichard HendersonST1_zprz 1110010 .. 11 ..... 110 ... ..... ..... \ 1224f6dbf62aSRichard Henderson @rprr_scatter_store xs=1 esz=2 scale=1 1225f6dbf62aSRichard Henderson 1226f6dbf62aSRichard Henderson# SVE 32-bit scatter store (scalar plus 32-bit unscaled offsets) 1227f6dbf62aSRichard Henderson# Require msz <= esz. 1228f6dbf62aSRichard HendersonST1_zprz 1110010 .. 10 ..... 100 ... ..... ..... \ 1229f6dbf62aSRichard Henderson @rprr_scatter_store xs=0 esz=2 scale=0 1230f6dbf62aSRichard HendersonST1_zprz 1110010 .. 10 ..... 110 ... ..... ..... \ 1231f6dbf62aSRichard Henderson @rprr_scatter_store xs=1 esz=2 scale=0 1232f6dbf62aSRichard Henderson 1233f6dbf62aSRichard Henderson# SVE 64-bit scatter store (scalar plus 64-bit scaled offset) 1234f6dbf62aSRichard Henderson# Require msz > 0 1235f6dbf62aSRichard HendersonST1_zprz 1110010 .. 01 ..... 101 ... ..... ..... \ 1236f6dbf62aSRichard Henderson @rprr_scatter_store xs=2 esz=3 scale=1 1237f6dbf62aSRichard Henderson 1238f6dbf62aSRichard Henderson# SVE 64-bit scatter store (scalar plus 64-bit unscaled offset) 1239f6dbf62aSRichard HendersonST1_zprz 1110010 .. 00 ..... 101 ... ..... ..... \ 1240f6dbf62aSRichard Henderson @rprr_scatter_store xs=2 esz=3 scale=0 1241f6dbf62aSRichard Henderson 1242408ecde9SRichard Henderson# SVE 64-bit scatter store (vector plus immediate) 1243408ecde9SRichard HendersonST1_zpiz 1110010 .. 10 ..... 101 ... ..... ..... \ 1244408ecde9SRichard Henderson @rpri_scatter_store esz=3 1245408ecde9SRichard Henderson 1246408ecde9SRichard Henderson# SVE 32-bit scatter store (vector plus immediate) 1247408ecde9SRichard HendersonST1_zpiz 1110010 .. 11 ..... 101 ... ..... ..... \ 1248408ecde9SRichard Henderson @rpri_scatter_store esz=2 1249408ecde9SRichard Henderson 1250f6dbf62aSRichard Henderson# SVE 64-bit scatter store (scalar plus unpacked 32-bit scaled offset) 1251f6dbf62aSRichard Henderson# Require msz > 0 1252f6dbf62aSRichard HendersonST1_zprz 1110010 .. 01 ..... 100 ... ..... ..... \ 1253f6dbf62aSRichard Henderson @rprr_scatter_store xs=0 esz=3 scale=1 1254f6dbf62aSRichard HendersonST1_zprz 1110010 .. 01 ..... 110 ... ..... ..... \ 1255f6dbf62aSRichard Henderson @rprr_scatter_store xs=1 esz=3 scale=1 1256f6dbf62aSRichard Henderson 1257f6dbf62aSRichard Henderson# SVE 64-bit scatter store (scalar plus unpacked 32-bit unscaled offset) 1258f6dbf62aSRichard HendersonST1_zprz 1110010 .. 00 ..... 100 ... ..... ..... \ 1259f6dbf62aSRichard Henderson @rprr_scatter_store xs=0 esz=3 scale=0 1260f6dbf62aSRichard HendersonST1_zprz 1110010 .. 00 ..... 110 ... ..... ..... \ 1261f6dbf62aSRichard Henderson @rprr_scatter_store xs=1 esz=3 scale=0 12625dad1ba5SRichard Henderson 12635dad1ba5SRichard Henderson#### SVE2 Support 12645dad1ba5SRichard Henderson 12655dad1ba5SRichard Henderson### SVE2 Integer Multiply - Unpredicated 12665dad1ba5SRichard Henderson 12675dad1ba5SRichard Henderson# SVE2 integer multiply vectors (unpredicated) 12685dad1ba5SRichard HendersonMUL_zzz 00000100 .. 1 ..... 0110 00 ..... ..... @rd_rn_rm 12695dad1ba5SRichard HendersonSMULH_zzz 00000100 .. 1 ..... 0110 10 ..... ..... @rd_rn_rm 12705dad1ba5SRichard HendersonUMULH_zzz 00000100 .. 1 ..... 0110 11 ..... ..... @rd_rn_rm 12715dad1ba5SRichard HendersonPMUL_zzz 00000100 00 1 ..... 0110 01 ..... ..... @rd_rn_rm_e0 1272d4b1e59dSRichard Henderson 1273169d7c58SRichard Henderson# SVE2 signed saturating doubling multiply high (unpredicated) 1274169d7c58SRichard HendersonSQDMULH_zzz 00000100 .. 1 ..... 0111 00 ..... ..... @rd_rn_rm 1275169d7c58SRichard HendersonSQRDMULH_zzz 00000100 .. 1 ..... 0111 01 ..... ..... @rd_rn_rm 1276169d7c58SRichard Henderson 1277d4b1e59dSRichard Henderson### SVE2 Integer - Predicated 1278d4b1e59dSRichard Henderson 1279d4b1e59dSRichard HendersonSADALP_zpzz 01000100 .. 000 100 101 ... ..... ..... @rdm_pg_rn 1280d4b1e59dSRichard HendersonUADALP_zpzz 01000100 .. 000 101 101 ... ..... ..... @rdm_pg_rn 1281db366da8SRichard Henderson 1282db366da8SRichard Henderson### SVE2 integer unary operations (predicated) 1283db366da8SRichard Henderson 1284db366da8SRichard HendersonURECPE 01000100 .. 000 000 101 ... ..... ..... @rd_pg_rn 1285db366da8SRichard HendersonURSQRTE 01000100 .. 000 001 101 ... ..... ..... @rd_pg_rn 1286db366da8SRichard HendersonSQABS 01000100 .. 001 000 101 ... ..... ..... @rd_pg_rn 1287db366da8SRichard HendersonSQNEG 01000100 .. 001 001 101 ... ..... ..... @rd_pg_rn 128845d9503dSRichard Henderson 128945d9503dSRichard Henderson### SVE2 saturating/rounding bitwise shift left (predicated) 129045d9503dSRichard Henderson 129145d9503dSRichard HendersonSRSHL 01000100 .. 000 010 100 ... ..... ..... @rdn_pg_rm 129245d9503dSRichard HendersonURSHL 01000100 .. 000 011 100 ... ..... ..... @rdn_pg_rm 129345d9503dSRichard HendersonSRSHL 01000100 .. 000 110 100 ... ..... ..... @rdm_pg_rn # SRSHLR 129445d9503dSRichard HendersonURSHL 01000100 .. 000 111 100 ... ..... ..... @rdm_pg_rn # URSHLR 129545d9503dSRichard Henderson 129645d9503dSRichard HendersonSQSHL 01000100 .. 001 000 100 ... ..... ..... @rdn_pg_rm 129745d9503dSRichard HendersonUQSHL 01000100 .. 001 001 100 ... ..... ..... @rdn_pg_rm 129845d9503dSRichard HendersonSQSHL 01000100 .. 001 100 100 ... ..... ..... @rdm_pg_rn # SQSHLR 129945d9503dSRichard HendersonUQSHL 01000100 .. 001 101 100 ... ..... ..... @rdm_pg_rn # UQSHLR 130045d9503dSRichard Henderson 130145d9503dSRichard HendersonSQRSHL 01000100 .. 001 010 100 ... ..... ..... @rdn_pg_rm 130245d9503dSRichard HendersonUQRSHL 01000100 .. 001 011 100 ... ..... ..... @rdn_pg_rm 130345d9503dSRichard HendersonSQRSHL 01000100 .. 001 110 100 ... ..... ..... @rdm_pg_rn # SQRSHLR 130445d9503dSRichard HendersonUQRSHL 01000100 .. 001 111 100 ... ..... ..... @rdm_pg_rn # UQRSHLR 1305a47dc220SRichard Henderson 1306a47dc220SRichard Henderson### SVE2 integer halving add/subtract (predicated) 1307a47dc220SRichard Henderson 1308a47dc220SRichard HendersonSHADD 01000100 .. 010 000 100 ... ..... ..... @rdn_pg_rm 1309a47dc220SRichard HendersonUHADD 01000100 .. 010 001 100 ... ..... ..... @rdn_pg_rm 1310a47dc220SRichard HendersonSHSUB 01000100 .. 010 010 100 ... ..... ..... @rdn_pg_rm 1311a47dc220SRichard HendersonUHSUB 01000100 .. 010 011 100 ... ..... ..... @rdn_pg_rm 1312a47dc220SRichard HendersonSRHADD 01000100 .. 010 100 100 ... ..... ..... @rdn_pg_rm 1313a47dc220SRichard HendersonURHADD 01000100 .. 010 101 100 ... ..... ..... @rdn_pg_rm 1314a47dc220SRichard HendersonSHSUB 01000100 .. 010 110 100 ... ..... ..... @rdm_pg_rn # SHSUBR 1315a47dc220SRichard HendersonUHSUB 01000100 .. 010 111 100 ... ..... ..... @rdm_pg_rn # UHSUBR 13168597dc8bSRichard Henderson 13178597dc8bSRichard Henderson### SVE2 integer pairwise arithmetic 13188597dc8bSRichard Henderson 13198597dc8bSRichard HendersonADDP 01000100 .. 010 001 101 ... ..... ..... @rdn_pg_rm 13208597dc8bSRichard HendersonSMAXP 01000100 .. 010 100 101 ... ..... ..... @rdn_pg_rm 13218597dc8bSRichard HendersonUMAXP 01000100 .. 010 101 101 ... ..... ..... @rdn_pg_rm 13228597dc8bSRichard HendersonSMINP 01000100 .. 010 110 101 ... ..... ..... @rdn_pg_rm 13238597dc8bSRichard HendersonUMINP 01000100 .. 010 111 101 ... ..... ..... @rdn_pg_rm 13244f07fbebSRichard Henderson 13254f07fbebSRichard Henderson### SVE2 saturating add/subtract (predicated) 13264f07fbebSRichard Henderson 13274f07fbebSRichard HendersonSQADD_zpzz 01000100 .. 011 000 100 ... ..... ..... @rdn_pg_rm 13284f07fbebSRichard HendersonUQADD_zpzz 01000100 .. 011 001 100 ... ..... ..... @rdn_pg_rm 13294f07fbebSRichard HendersonSQSUB_zpzz 01000100 .. 011 010 100 ... ..... ..... @rdn_pg_rm 13304f07fbebSRichard HendersonUQSUB_zpzz 01000100 .. 011 011 100 ... ..... ..... @rdn_pg_rm 13314f07fbebSRichard HendersonSUQADD 01000100 .. 011 100 100 ... ..... ..... @rdn_pg_rm 13324f07fbebSRichard HendersonUSQADD 01000100 .. 011 101 100 ... ..... ..... @rdn_pg_rm 13334f07fbebSRichard HendersonSQSUB_zpzz 01000100 .. 011 110 100 ... ..... ..... @rdm_pg_rn # SQSUBR 13344f07fbebSRichard HendersonUQSUB_zpzz 01000100 .. 011 111 100 ... ..... ..... @rdm_pg_rn # UQSUBR 13350ce1dda8SRichard Henderson 13360ce1dda8SRichard Henderson#### SVE2 Widening Integer Arithmetic 13370ce1dda8SRichard Henderson 13380ce1dda8SRichard Henderson## SVE2 integer add/subtract long 13390ce1dda8SRichard Henderson 13400ce1dda8SRichard HendersonSADDLB 01000101 .. 0 ..... 00 0000 ..... ..... @rd_rn_rm 13410ce1dda8SRichard HendersonSADDLT 01000101 .. 0 ..... 00 0001 ..... ..... @rd_rn_rm 13420ce1dda8SRichard HendersonUADDLB 01000101 .. 0 ..... 00 0010 ..... ..... @rd_rn_rm 13430ce1dda8SRichard HendersonUADDLT 01000101 .. 0 ..... 00 0011 ..... ..... @rd_rn_rm 13440ce1dda8SRichard Henderson 13450ce1dda8SRichard HendersonSSUBLB 01000101 .. 0 ..... 00 0100 ..... ..... @rd_rn_rm 13460ce1dda8SRichard HendersonSSUBLT 01000101 .. 0 ..... 00 0101 ..... ..... @rd_rn_rm 13470ce1dda8SRichard HendersonUSUBLB 01000101 .. 0 ..... 00 0110 ..... ..... @rd_rn_rm 13480ce1dda8SRichard HendersonUSUBLT 01000101 .. 0 ..... 00 0111 ..... ..... @rd_rn_rm 13490ce1dda8SRichard Henderson 13500ce1dda8SRichard HendersonSABDLB 01000101 .. 0 ..... 00 1100 ..... ..... @rd_rn_rm 13510ce1dda8SRichard HendersonSABDLT 01000101 .. 0 ..... 00 1101 ..... ..... @rd_rn_rm 13520ce1dda8SRichard HendersonUABDLB 01000101 .. 0 ..... 00 1110 ..... ..... @rd_rn_rm 13530ce1dda8SRichard HendersonUABDLT 01000101 .. 0 ..... 00 1111 ..... ..... @rd_rn_rm 1354daec426bSRichard Henderson 1355daec426bSRichard Henderson## SVE2 integer add/subtract interleaved long 1356daec426bSRichard Henderson 1357daec426bSRichard HendersonSADDLBT 01000101 .. 0 ..... 1000 00 ..... ..... @rd_rn_rm 1358daec426bSRichard HendersonSSUBLBT 01000101 .. 0 ..... 1000 10 ..... ..... @rd_rn_rm 1359daec426bSRichard HendersonSSUBLTB 01000101 .. 0 ..... 1000 11 ..... ..... @rd_rn_rm 136081fccf09SRichard Henderson 136181fccf09SRichard Henderson## SVE2 integer add/subtract wide 136281fccf09SRichard Henderson 136381fccf09SRichard HendersonSADDWB 01000101 .. 0 ..... 010 000 ..... ..... @rd_rn_rm 136481fccf09SRichard HendersonSADDWT 01000101 .. 0 ..... 010 001 ..... ..... @rd_rn_rm 136581fccf09SRichard HendersonUADDWB 01000101 .. 0 ..... 010 010 ..... ..... @rd_rn_rm 136681fccf09SRichard HendersonUADDWT 01000101 .. 0 ..... 010 011 ..... ..... @rd_rn_rm 136781fccf09SRichard Henderson 136881fccf09SRichard HendersonSSUBWB 01000101 .. 0 ..... 010 100 ..... ..... @rd_rn_rm 136981fccf09SRichard HendersonSSUBWT 01000101 .. 0 ..... 010 101 ..... ..... @rd_rn_rm 137081fccf09SRichard HendersonUSUBWB 01000101 .. 0 ..... 010 110 ..... ..... @rd_rn_rm 137181fccf09SRichard HendersonUSUBWT 01000101 .. 0 ..... 010 111 ..... ..... @rd_rn_rm 137269ccc099SRichard Henderson 137369ccc099SRichard Henderson## SVE2 integer multiply long 137469ccc099SRichard Henderson 137569ccc099SRichard HendersonSQDMULLB_zzz 01000101 .. 0 ..... 011 000 ..... ..... @rd_rn_rm 137669ccc099SRichard HendersonSQDMULLT_zzz 01000101 .. 0 ..... 011 001 ..... ..... @rd_rn_rm 1377e3a56131SRichard HendersonPMULLB 01000101 .. 0 ..... 011 010 ..... ..... @rd_rn_rm 1378e3a56131SRichard HendersonPMULLT 01000101 .. 0 ..... 011 011 ..... ..... @rd_rn_rm 137969ccc099SRichard HendersonSMULLB_zzz 01000101 .. 0 ..... 011 100 ..... ..... @rd_rn_rm 138069ccc099SRichard HendersonSMULLT_zzz 01000101 .. 0 ..... 011 101 ..... ..... @rd_rn_rm 138169ccc099SRichard HendersonUMULLB_zzz 01000101 .. 0 ..... 011 110 ..... ..... @rd_rn_rm 138269ccc099SRichard HendersonUMULLT_zzz 01000101 .. 0 ..... 011 111 ..... ..... @rd_rn_rm 13834269fef1SRichard Henderson 13844269fef1SRichard Henderson## SVE2 bitwise shift left long 13854269fef1SRichard Henderson 13864269fef1SRichard Henderson# Note bit23 == 0 is handled by esz > 0 in do_sve2_shll_tb. 13874269fef1SRichard HendersonSSHLLB 01000101 .. 0 ..... 1010 00 ..... ..... @rd_rn_tszimm_shl 13884269fef1SRichard HendersonSSHLLT 01000101 .. 0 ..... 1010 01 ..... ..... @rd_rn_tszimm_shl 13894269fef1SRichard HendersonUSHLLB 01000101 .. 0 ..... 1010 10 ..... ..... @rd_rn_tszimm_shl 13904269fef1SRichard HendersonUSHLLT 01000101 .. 0 ..... 1010 11 ..... ..... @rd_rn_tszimm_shl 13912df3ca55SRichard Henderson 13922df3ca55SRichard Henderson## SVE2 bitwise exclusive-or interleaved 13932df3ca55SRichard Henderson 13942df3ca55SRichard HendersonEORBT 01000101 .. 0 ..... 10010 0 ..... ..... @rd_rn_rm 13952df3ca55SRichard HendersonEORTB 01000101 .. 0 ..... 10010 1 ..... ..... @rd_rn_rm 1396cb9c33b8SRichard Henderson 1397cb9c33b8SRichard Henderson## SVE2 bitwise permute 1398cb9c33b8SRichard Henderson 1399cb9c33b8SRichard HendersonBEXT 01000101 .. 0 ..... 1011 00 ..... ..... @rd_rn_rm 1400cb9c33b8SRichard HendersonBDEP 01000101 .. 0 ..... 1011 01 ..... ..... @rd_rn_rm 1401cb9c33b8SRichard HendersonBGRP 01000101 .. 0 ..... 1011 10 ..... ..... @rd_rn_rm 1402ed4a6387SRichard Henderson 1403ed4a6387SRichard Henderson#### SVE2 Accumulate 1404ed4a6387SRichard Henderson 1405ed4a6387SRichard Henderson## SVE2 complex integer add 1406ed4a6387SRichard Henderson 1407ed4a6387SRichard HendersonCADD_rot90 01000101 .. 00000 0 11011 0 ..... ..... @rdn_rm 1408ed4a6387SRichard HendersonCADD_rot270 01000101 .. 00000 0 11011 1 ..... ..... @rdn_rm 1409ed4a6387SRichard HendersonSQCADD_rot90 01000101 .. 00000 1 11011 0 ..... ..... @rdn_rm 1410ed4a6387SRichard HendersonSQCADD_rot270 01000101 .. 00000 1 11011 1 ..... ..... @rdn_rm 141138650638SRichard Henderson 141238650638SRichard Henderson## SVE2 integer absolute difference and accumulate long 141338650638SRichard Henderson 141438650638SRichard HendersonSABALB 01000101 .. 0 ..... 1100 00 ..... ..... @rda_rn_rm 141538650638SRichard HendersonSABALT 01000101 .. 0 ..... 1100 01 ..... ..... @rda_rn_rm 141638650638SRichard HendersonUABALB 01000101 .. 0 ..... 1100 10 ..... ..... @rda_rn_rm 141738650638SRichard HendersonUABALT 01000101 .. 0 ..... 1100 11 ..... ..... @rda_rn_rm 1418b8295dfbSRichard Henderson 1419b8295dfbSRichard Henderson## SVE2 integer add/subtract long with carry 1420b8295dfbSRichard Henderson 1421b8295dfbSRichard Henderson# ADC and SBC decoded via size in helper dispatch. 1422b8295dfbSRichard HendersonADCLB 01000101 .. 0 ..... 11010 0 ..... ..... @rda_rn_rm 1423b8295dfbSRichard HendersonADCLT 01000101 .. 0 ..... 11010 1 ..... ..... @rda_rn_rm 1424a7e3a90eSRichard Henderson 1425a7e3a90eSRichard Henderson## SVE2 bitwise shift right and accumulate 1426a7e3a90eSRichard Henderson 1427a7e3a90eSRichard Henderson# TODO: Use @rda and %reg_movprfx here. 1428a7e3a90eSRichard HendersonSSRA 01000101 .. 0 ..... 1110 00 ..... ..... @rd_rn_tszimm_shr 1429a7e3a90eSRichard HendersonUSRA 01000101 .. 0 ..... 1110 01 ..... ..... @rd_rn_tszimm_shr 1430a7e3a90eSRichard HendersonSRSRA 01000101 .. 0 ..... 1110 10 ..... ..... @rd_rn_tszimm_shr 1431a7e3a90eSRichard HendersonURSRA 01000101 .. 0 ..... 1110 11 ..... ..... @rd_rn_tszimm_shr 1432fc12b46aSRichard Henderson 1433fc12b46aSRichard Henderson## SVE2 bitwise shift and insert 1434fc12b46aSRichard Henderson 1435fc12b46aSRichard HendersonSRI 01000101 .. 0 ..... 11110 0 ..... ..... @rd_rn_tszimm_shr 1436fc12b46aSRichard HendersonSLI 01000101 .. 0 ..... 11110 1 ..... ..... @rd_rn_tszimm_shl 1437289a1797SRichard Henderson 1438289a1797SRichard Henderson## SVE2 integer absolute difference and accumulate 1439289a1797SRichard Henderson 1440289a1797SRichard Henderson# TODO: Use @rda and %reg_movprfx here. 1441289a1797SRichard HendersonSABA 01000101 .. 0 ..... 11111 0 ..... ..... @rd_rn_rm 1442289a1797SRichard HendersonUABA 01000101 .. 0 ..... 11111 1 ..... ..... @rd_rn_rm 14435ff2838dSRichard Henderson 14445ff2838dSRichard Henderson#### SVE2 Narrowing 14455ff2838dSRichard Henderson 14465ff2838dSRichard Henderson## SVE2 saturating extract narrow 14475ff2838dSRichard Henderson 14485ff2838dSRichard Henderson# Bits 23, 18-16 are zero, limited in the translator via esz < 3 & imm == 0. 14495ff2838dSRichard HendersonSQXTNB 01000101 .. 1 ..... 010 000 ..... ..... @rd_rn_tszimm_shl 14505ff2838dSRichard HendersonSQXTNT 01000101 .. 1 ..... 010 001 ..... ..... @rd_rn_tszimm_shl 14515ff2838dSRichard HendersonUQXTNB 01000101 .. 1 ..... 010 010 ..... ..... @rd_rn_tszimm_shl 14525ff2838dSRichard HendersonUQXTNT 01000101 .. 1 ..... 010 011 ..... ..... @rd_rn_tszimm_shl 14535ff2838dSRichard HendersonSQXTUNB 01000101 .. 1 ..... 010 100 ..... ..... @rd_rn_tszimm_shl 14545ff2838dSRichard HendersonSQXTUNT 01000101 .. 1 ..... 010 101 ..... ..... @rd_rn_tszimm_shl 1455b87dbeebSStephen Long 145646d111b2SRichard Henderson## SVE2 bitwise shift right narrow 145746d111b2SRichard Henderson 145846d111b2SRichard Henderson# Bit 23 == 0 is handled by esz > 0 in the translator. 145981fd3e6eSRichard HendersonSQSHRUNB 01000101 .. 1 ..... 00 0000 ..... ..... @rd_rn_tszimm_shr 146081fd3e6eSRichard HendersonSQSHRUNT 01000101 .. 1 ..... 00 0001 ..... ..... @rd_rn_tszimm_shr 146181fd3e6eSRichard HendersonSQRSHRUNB 01000101 .. 1 ..... 00 0010 ..... ..... @rd_rn_tszimm_shr 146281fd3e6eSRichard HendersonSQRSHRUNT 01000101 .. 1 ..... 00 0011 ..... ..... @rd_rn_tszimm_shr 146346d111b2SRichard HendersonSHRNB 01000101 .. 1 ..... 00 0100 ..... ..... @rd_rn_tszimm_shr 146446d111b2SRichard HendersonSHRNT 01000101 .. 1 ..... 00 0101 ..... ..... @rd_rn_tszimm_shr 146546d111b2SRichard HendersonRSHRNB 01000101 .. 1 ..... 00 0110 ..... ..... @rd_rn_tszimm_shr 146646d111b2SRichard HendersonRSHRNT 01000101 .. 1 ..... 00 0111 ..... ..... @rd_rn_tszimm_shr 1467743bb147SRichard HendersonSQSHRNB 01000101 .. 1 ..... 00 1000 ..... ..... @rd_rn_tszimm_shr 1468743bb147SRichard HendersonSQSHRNT 01000101 .. 1 ..... 00 1001 ..... ..... @rd_rn_tszimm_shr 1469743bb147SRichard HendersonSQRSHRNB 01000101 .. 1 ..... 00 1010 ..... ..... @rd_rn_tszimm_shr 1470743bb147SRichard HendersonSQRSHRNT 01000101 .. 1 ..... 00 1011 ..... ..... @rd_rn_tszimm_shr 1471c13418daSRichard HendersonUQSHRNB 01000101 .. 1 ..... 00 1100 ..... ..... @rd_rn_tszimm_shr 1472c13418daSRichard HendersonUQSHRNT 01000101 .. 1 ..... 00 1101 ..... ..... @rd_rn_tszimm_shr 1473c13418daSRichard HendersonUQRSHRNB 01000101 .. 1 ..... 00 1110 ..... ..... @rd_rn_tszimm_shr 1474c13418daSRichard HendersonUQRSHRNT 01000101 .. 1 ..... 00 1111 ..... ..... @rd_rn_tszimm_shr 147546d111b2SRichard Henderson 147640d5ea50SStephen Long## SVE2 integer add/subtract narrow high part 147740d5ea50SStephen Long 147840d5ea50SStephen LongADDHNB 01000101 .. 1 ..... 011 000 ..... ..... @rd_rn_rm 147940d5ea50SStephen LongADDHNT 01000101 .. 1 ..... 011 001 ..... ..... @rd_rn_rm 14800ea3ff02SStephen LongRADDHNB 01000101 .. 1 ..... 011 010 ..... ..... @rd_rn_rm 14810ea3ff02SStephen LongRADDHNT 01000101 .. 1 ..... 011 011 ..... ..... @rd_rn_rm 1482c3cd6766SStephen LongSUBHNB 01000101 .. 1 ..... 011 100 ..... ..... @rd_rn_rm 1483c3cd6766SStephen LongSUBHNT 01000101 .. 1 ..... 011 101 ..... ..... @rd_rn_rm 1484e9443d10SStephen LongRSUBHNB 01000101 .. 1 ..... 011 110 ..... ..... @rd_rn_rm 1485e9443d10SStephen LongRSUBHNT 01000101 .. 1 ..... 011 111 ..... ..... @rd_rn_rm 148640d5ea50SStephen Long 1487e0ae6ec3SStephen Long### SVE2 Character Match 1488e0ae6ec3SStephen Long 1489e0ae6ec3SStephen LongMATCH 01000101 .. 1 ..... 100 ... ..... 0 .... @pd_pg_rn_rm 1490e0ae6ec3SStephen LongNMATCH 01000101 .. 1 ..... 100 ... ..... 1 .... @pd_pg_rn_rm 1491e0ae6ec3SStephen Long 14927d47ac94SStephen Long### SVE2 Histogram Computation 14937d47ac94SStephen Long 14947d47ac94SStephen LongHISTCNT 01000101 .. 1 ..... 110 ... ..... ..... @rd_pg_rn_rm 14957d47ac94SStephen LongHISTSEG 01000101 .. 1 ..... 101 000 ..... ..... @rd_rn_rm 14967d47ac94SStephen Long 1497b87dbeebSStephen Long## SVE2 floating-point pairwise operations 1498b87dbeebSStephen Long 1499b87dbeebSStephen LongFADDP 01100100 .. 010 00 0 100 ... ..... ..... @rdn_pg_rm 1500b87dbeebSStephen LongFMAXNMP 01100100 .. 010 10 0 100 ... ..... ..... @rdn_pg_rm 1501b87dbeebSStephen LongFMINNMP 01100100 .. 010 10 1 100 ... ..... ..... @rdn_pg_rm 1502b87dbeebSStephen LongFMAXP 01100100 .. 010 11 0 100 ... ..... ..... @rdn_pg_rm 1503b87dbeebSStephen LongFMINP 01100100 .. 010 11 1 100 ... ..... ..... @rdn_pg_rm 1504bfc9307eSRichard Henderson 1505bfc9307eSRichard Henderson#### SVE Integer Multiply-Add (unpredicated) 1506bfc9307eSRichard Henderson 1507bfc9307eSRichard Henderson## SVE2 saturating multiply-add long 1508bfc9307eSRichard Henderson 1509bfc9307eSRichard HendersonSQDMLALB_zzzw 01000100 .. 0 ..... 0110 00 ..... ..... @rda_rn_rm 1510bfc9307eSRichard HendersonSQDMLALT_zzzw 01000100 .. 0 ..... 0110 01 ..... ..... @rda_rn_rm 1511bfc9307eSRichard HendersonSQDMLSLB_zzzw 01000100 .. 0 ..... 0110 10 ..... ..... @rda_rn_rm 1512bfc9307eSRichard HendersonSQDMLSLT_zzzw 01000100 .. 0 ..... 0110 11 ..... ..... @rda_rn_rm 1513bfc9307eSRichard Henderson 1514bfc9307eSRichard Henderson## SVE2 saturating multiply-add interleaved long 1515bfc9307eSRichard Henderson 1516bfc9307eSRichard HendersonSQDMLALBT 01000100 .. 0 ..... 00001 0 ..... ..... @rda_rn_rm 1517bfc9307eSRichard HendersonSQDMLSLBT 01000100 .. 0 ..... 00001 1 ..... ..... @rda_rn_rm 1518ab3ddf31SRichard Henderson 1519ab3ddf31SRichard Henderson## SVE2 saturating multiply-add high 1520ab3ddf31SRichard Henderson 1521ab3ddf31SRichard HendersonSQRDMLAH_zzzz 01000100 .. 0 ..... 01110 0 ..... ..... @rda_rn_rm 1522ab3ddf31SRichard HendersonSQRDMLSH_zzzz 01000100 .. 0 ..... 01110 1 ..... ..... @rda_rn_rm 152345a32e80SRichard Henderson 152445a32e80SRichard Henderson## SVE2 integer multiply-add long 152545a32e80SRichard Henderson 152645a32e80SRichard HendersonSMLALB_zzzw 01000100 .. 0 ..... 010 000 ..... ..... @rda_rn_rm 152745a32e80SRichard HendersonSMLALT_zzzw 01000100 .. 0 ..... 010 001 ..... ..... @rda_rn_rm 152845a32e80SRichard HendersonUMLALB_zzzw 01000100 .. 0 ..... 010 010 ..... ..... @rda_rn_rm 152945a32e80SRichard HendersonUMLALT_zzzw 01000100 .. 0 ..... 010 011 ..... ..... @rda_rn_rm 153045a32e80SRichard HendersonSMLSLB_zzzw 01000100 .. 0 ..... 010 100 ..... ..... @rda_rn_rm 153145a32e80SRichard HendersonSMLSLT_zzzw 01000100 .. 0 ..... 010 101 ..... ..... @rda_rn_rm 153245a32e80SRichard HendersonUMLSLB_zzzw 01000100 .. 0 ..... 010 110 ..... ..... @rda_rn_rm 153345a32e80SRichard HendersonUMLSLT_zzzw 01000100 .. 0 ..... 010 111 ..... ..... @rda_rn_rm 1534d782d3caSRichard Henderson 1535d782d3caSRichard Henderson## SVE2 complex integer multiply-add 1536d782d3caSRichard Henderson 1537d782d3caSRichard HendersonCMLA_zzzz 01000100 esz:2 0 rm:5 0010 rot:2 rn:5 rd:5 ra=%reg_movprfx 1538d782d3caSRichard HendersonSQRDCMLAH_zzzz 01000100 esz:2 0 rm:5 0011 rot:2 rn:5 rd:5 ra=%reg_movprfx 15396ebca45fSStephen Long 15406a98cb2aSRichard Henderson## SVE mixed sign dot product 15416a98cb2aSRichard Henderson 15426a98cb2aSRichard HendersonUSDOT_zzzz 01000100 .. 0 ..... 011 110 ..... ..... @rda_rn_rm 15436a98cb2aSRichard Henderson 15444f26756bSStephen Long### SVE2 floating point matrix multiply accumulate 15454f26756bSStephen Long 15464f26756bSStephen LongFMMLA 01100100 .. 1 ..... 111001 ..... ..... @rda_rn_rm 15474f26756bSStephen Long 1548cf327449SStephen Long### SVE2 Memory Gather Load Group 1549cf327449SStephen Long 1550cf327449SStephen Long# SVE2 64-bit gather non-temporal load 1551cf327449SStephen Long# (scalar plus unpacked 32-bit unscaled offsets) 1552cf327449SStephen LongLDNT1_zprz 1100010 msz:2 00 rm:5 1 u:1 0 pg:3 rn:5 rd:5 \ 1553cf327449SStephen Long &rprr_gather_load xs=0 esz=3 scale=0 ff=0 1554cf327449SStephen Long 1555cf327449SStephen Long# SVE2 32-bit gather non-temporal load (scalar plus 32-bit unscaled offsets) 1556cf327449SStephen LongLDNT1_zprz 1000010 msz:2 00 rm:5 10 u:1 pg:3 rn:5 rd:5 \ 1557cf327449SStephen Long &rprr_gather_load xs=0 esz=2 scale=0 ff=0 1558cf327449SStephen Long 15596ebca45fSStephen Long### SVE2 Memory Store Group 15606ebca45fSStephen Long 15616ebca45fSStephen Long# SVE2 64-bit scatter non-temporal store (vector plus scalar) 15626ebca45fSStephen LongSTNT1_zprz 1110010 .. 00 ..... 001 ... ..... ..... \ 15636ebca45fSStephen Long @rprr_scatter_store xs=2 esz=3 scale=0 15646ebca45fSStephen Long 15656ebca45fSStephen Long# SVE2 32-bit scatter non-temporal store (vector plus scalar) 15666ebca45fSStephen LongSTNT1_zprz 1110010 .. 10 ..... 001 ... ..... ..... \ 15676ebca45fSStephen Long @rprr_scatter_store xs=0 esz=2 scale=0 1568b2bcd1beSRichard Henderson 1569b2bcd1beSRichard Henderson### SVE2 Crypto Extensions 1570b2bcd1beSRichard Henderson 1571b2bcd1beSRichard Henderson# SVE2 crypto unary operations 1572b2bcd1beSRichard Henderson# AESMC and AESIMC 1573b2bcd1beSRichard HendersonAESMC 01000101 00 10000011100 decrypt:1 00000 rd:5 15743cc7a88eSRichard Henderson 15753cc7a88eSRichard Henderson# SVE2 crypto destructive binary operations 15763cc7a88eSRichard HendersonAESE 01000101 00 10001 0 11100 0 ..... ..... @rdn_rm_e0 15773cc7a88eSRichard HendersonAESD 01000101 00 10001 0 11100 1 ..... ..... @rdn_rm_e0 15783cc7a88eSRichard HendersonSM4E 01000101 00 10001 1 11100 0 ..... ..... @rdn_rm_e0 15793358eb3fSRichard Henderson 15803358eb3fSRichard Henderson# SVE2 crypto constructive binary operations 15813358eb3fSRichard HendersonSM4EKEY 01000101 00 1 ..... 11110 0 ..... ..... @rd_rn_rm_e0 15823358eb3fSRichard HendersonRAX1 01000101 00 1 ..... 11110 1 ..... ..... @rd_rn_rm_e0 15835c1b7226SRichard Henderson 15845c1b7226SRichard Henderson### SVE2 floating-point convert precision odd elements 15855c1b7226SRichard HendersonFCVTNT_sh 01100100 10 0010 00 101 ... ..... ..... @rd_pg_rn_e0 1586*83c2523fSStephen LongFCVTLT_hs 01100100 10 0010 01 101 ... ..... ..... @rd_pg_rn_e0 15875c1b7226SRichard HendersonFCVTNT_ds 01100100 11 0010 10 101 ... ..... ..... @rd_pg_rn_e0 1588*83c2523fSStephen LongFCVTLT_sd 01100100 11 0010 11 101 ... ..... ..... @rd_pg_rn_e0 1589