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 561d731d8cbSRichard Henderson### SVE Permute - Predicates Group 562d731d8cbSRichard Henderson 563d731d8cbSRichard Henderson# SVE permute predicate elements 564d731d8cbSRichard HendersonZIP1_p 00000101 .. 10 .... 010 000 0 .... 0 .... @pd_pn_pm 565d731d8cbSRichard HendersonZIP2_p 00000101 .. 10 .... 010 001 0 .... 0 .... @pd_pn_pm 566d731d8cbSRichard HendersonUZP1_p 00000101 .. 10 .... 010 010 0 .... 0 .... @pd_pn_pm 567d731d8cbSRichard HendersonUZP2_p 00000101 .. 10 .... 010 011 0 .... 0 .... @pd_pn_pm 568d731d8cbSRichard HendersonTRN1_p 00000101 .. 10 .... 010 100 0 .... 0 .... @pd_pn_pm 569d731d8cbSRichard HendersonTRN2_p 00000101 .. 10 .... 010 101 0 .... 0 .... @pd_pn_pm 570d731d8cbSRichard Henderson 571d731d8cbSRichard Henderson# SVE reverse predicate elements 572d731d8cbSRichard HendersonREV_p 00000101 .. 11 0100 010 000 0 .... 0 .... @pd_pn 573d731d8cbSRichard Henderson 574d731d8cbSRichard Henderson# SVE unpack predicate elements 575d731d8cbSRichard HendersonPUNPKLO 00000101 00 11 0000 010 000 0 .... 0 .... @pd_pn_e0 576d731d8cbSRichard HendersonPUNPKHI 00000101 00 11 0001 010 000 0 .... 0 .... @pd_pn_e0 577d731d8cbSRichard Henderson 578234b48e9SRichard Henderson### SVE Permute - Interleaving Group 579234b48e9SRichard Henderson 580234b48e9SRichard Henderson# SVE permute vector elements 581234b48e9SRichard HendersonZIP1_z 00000101 .. 1 ..... 011 000 ..... ..... @rd_rn_rm 582234b48e9SRichard HendersonZIP2_z 00000101 .. 1 ..... 011 001 ..... ..... @rd_rn_rm 583234b48e9SRichard HendersonUZP1_z 00000101 .. 1 ..... 011 010 ..... ..... @rd_rn_rm 584234b48e9SRichard HendersonUZP2_z 00000101 .. 1 ..... 011 011 ..... ..... @rd_rn_rm 585234b48e9SRichard HendersonTRN1_z 00000101 .. 1 ..... 011 100 ..... ..... @rd_rn_rm 586234b48e9SRichard HendersonTRN2_z 00000101 .. 1 ..... 011 101 ..... ..... @rd_rn_rm 587234b48e9SRichard Henderson 5883ca879aeSRichard Henderson### SVE Permute - Predicated Group 5893ca879aeSRichard Henderson 5903ca879aeSRichard Henderson# SVE compress active elements 5913ca879aeSRichard Henderson# Note esz >= 2 5923ca879aeSRichard HendersonCOMPACT 00000101 .. 100001 100 ... ..... ..... @rd_pg_rn 5933ca879aeSRichard Henderson 594ef23cb72SRichard Henderson# SVE conditionally broadcast element to vector 595ef23cb72SRichard HendersonCLASTA_z 00000101 .. 10100 0 100 ... ..... ..... @rdn_pg_rm 596ef23cb72SRichard HendersonCLASTB_z 00000101 .. 10100 1 100 ... ..... ..... @rdn_pg_rm 597ef23cb72SRichard Henderson 598ef23cb72SRichard Henderson# SVE conditionally copy element to SIMD&FP scalar 599ef23cb72SRichard HendersonCLASTA_v 00000101 .. 10101 0 100 ... ..... ..... @rd_pg_rn 600ef23cb72SRichard HendersonCLASTB_v 00000101 .. 10101 1 100 ... ..... ..... @rd_pg_rn 601ef23cb72SRichard Henderson 602ef23cb72SRichard Henderson# SVE conditionally copy element to general register 603ef23cb72SRichard HendersonCLASTA_r 00000101 .. 11000 0 101 ... ..... ..... @rd_pg_rn 604ef23cb72SRichard HendersonCLASTB_r 00000101 .. 11000 1 101 ... ..... ..... @rd_pg_rn 605ef23cb72SRichard Henderson 606ef23cb72SRichard Henderson# SVE copy element to SIMD&FP scalar register 607ef23cb72SRichard HendersonLASTA_v 00000101 .. 10001 0 100 ... ..... ..... @rd_pg_rn 608ef23cb72SRichard HendersonLASTB_v 00000101 .. 10001 1 100 ... ..... ..... @rd_pg_rn 609ef23cb72SRichard Henderson 610ef23cb72SRichard Henderson# SVE copy element to general register 611ef23cb72SRichard HendersonLASTA_r 00000101 .. 10000 0 101 ... ..... ..... @rd_pg_rn 612ef23cb72SRichard HendersonLASTB_r 00000101 .. 10000 1 101 ... ..... ..... @rd_pg_rn 613ef23cb72SRichard Henderson 614792a5578SRichard Henderson# SVE copy element from SIMD&FP scalar register 615792a5578SRichard HendersonCPY_m_v 00000101 .. 100000 100 ... ..... ..... @rd_pg_rn 616792a5578SRichard Henderson 617792a5578SRichard Henderson# SVE copy element from general register to vector (predicated) 618792a5578SRichard HendersonCPY_m_r 00000101 .. 101000 101 ... ..... ..... @rd_pg_rn 619792a5578SRichard Henderson 620dae8fb90SRichard Henderson# SVE reverse within elements 621dae8fb90SRichard Henderson# Note esz >= operation size 622dae8fb90SRichard HendersonREVB 00000101 .. 1001 00 100 ... ..... ..... @rd_pg_rn 623dae8fb90SRichard HendersonREVH 00000101 .. 1001 01 100 ... ..... ..... @rd_pg_rn 624dae8fb90SRichard HendersonREVW 00000101 .. 1001 10 100 ... ..... ..... @rd_pg_rn 625dae8fb90SRichard HendersonRBIT 00000101 .. 1001 11 100 ... ..... ..... @rd_pg_rn 626dae8fb90SRichard Henderson 62775114792SStephen Long# SVE vector splice (predicated, destructive) 628b48ff240SRichard HendersonSPLICE 00000101 .. 101 100 100 ... ..... ..... @rdn_pg_rm 629b48ff240SRichard Henderson 63075114792SStephen Long# SVE2 vector splice (predicated, constructive) 63175114792SStephen LongSPLICE_sve2 00000101 .. 101 101 100 ... ..... ..... @rd_pg_rn 63275114792SStephen Long 633d3fe4a29SRichard Henderson### SVE Select Vectors Group 634d3fe4a29SRichard Henderson 635d3fe4a29SRichard Henderson# SVE select vector elements (predicated) 636d3fe4a29SRichard HendersonSEL_zpzz 00000101 .. 1 ..... 11 .... ..... ..... @rd_pg4_rn_rm 637d3fe4a29SRichard Henderson 638757f9cffSRichard Henderson### SVE Integer Compare - Vectors Group 639757f9cffSRichard Henderson 640757f9cffSRichard Henderson# SVE integer compare_vectors 641757f9cffSRichard HendersonCMPHS_ppzz 00100100 .. 0 ..... 000 ... ..... 0 .... @pd_pg_rn_rm 642757f9cffSRichard HendersonCMPHI_ppzz 00100100 .. 0 ..... 000 ... ..... 1 .... @pd_pg_rn_rm 643757f9cffSRichard HendersonCMPGE_ppzz 00100100 .. 0 ..... 100 ... ..... 0 .... @pd_pg_rn_rm 644757f9cffSRichard HendersonCMPGT_ppzz 00100100 .. 0 ..... 100 ... ..... 1 .... @pd_pg_rn_rm 645757f9cffSRichard HendersonCMPEQ_ppzz 00100100 .. 0 ..... 101 ... ..... 0 .... @pd_pg_rn_rm 646757f9cffSRichard HendersonCMPNE_ppzz 00100100 .. 0 ..... 101 ... ..... 1 .... @pd_pg_rn_rm 647757f9cffSRichard Henderson 648757f9cffSRichard Henderson# SVE integer compare with wide elements 649757f9cffSRichard Henderson# Note these require esz != 3. 650757f9cffSRichard HendersonCMPEQ_ppzw 00100100 .. 0 ..... 001 ... ..... 0 .... @pd_pg_rn_rm 651757f9cffSRichard HendersonCMPNE_ppzw 00100100 .. 0 ..... 001 ... ..... 1 .... @pd_pg_rn_rm 652757f9cffSRichard HendersonCMPGE_ppzw 00100100 .. 0 ..... 010 ... ..... 0 .... @pd_pg_rn_rm 653757f9cffSRichard HendersonCMPGT_ppzw 00100100 .. 0 ..... 010 ... ..... 1 .... @pd_pg_rn_rm 654757f9cffSRichard HendersonCMPLT_ppzw 00100100 .. 0 ..... 011 ... ..... 0 .... @pd_pg_rn_rm 655757f9cffSRichard HendersonCMPLE_ppzw 00100100 .. 0 ..... 011 ... ..... 1 .... @pd_pg_rn_rm 656757f9cffSRichard HendersonCMPHS_ppzw 00100100 .. 0 ..... 110 ... ..... 0 .... @pd_pg_rn_rm 657757f9cffSRichard HendersonCMPHI_ppzw 00100100 .. 0 ..... 110 ... ..... 1 .... @pd_pg_rn_rm 658757f9cffSRichard HendersonCMPLO_ppzw 00100100 .. 0 ..... 111 ... ..... 0 .... @pd_pg_rn_rm 659757f9cffSRichard HendersonCMPLS_ppzw 00100100 .. 0 ..... 111 ... ..... 1 .... @pd_pg_rn_rm 660757f9cffSRichard Henderson 66138cadebaSRichard Henderson### SVE Integer Compare - Unsigned Immediate Group 66238cadebaSRichard Henderson 66338cadebaSRichard Henderson# SVE integer compare with unsigned immediate 66438cadebaSRichard HendersonCMPHS_ppzi 00100100 .. 1 ....... 0 ... ..... 0 .... @pd_pg_rn_i7 66538cadebaSRichard HendersonCMPHI_ppzi 00100100 .. 1 ....... 0 ... ..... 1 .... @pd_pg_rn_i7 66638cadebaSRichard HendersonCMPLO_ppzi 00100100 .. 1 ....... 1 ... ..... 0 .... @pd_pg_rn_i7 66738cadebaSRichard HendersonCMPLS_ppzi 00100100 .. 1 ....... 1 ... ..... 1 .... @pd_pg_rn_i7 66838cadebaSRichard Henderson 66938cadebaSRichard Henderson### SVE Integer Compare - Signed Immediate Group 67038cadebaSRichard Henderson 67138cadebaSRichard Henderson# SVE integer compare with signed immediate 67238cadebaSRichard HendersonCMPGE_ppzi 00100101 .. 0 ..... 000 ... ..... 0 .... @pd_pg_rn_i5 67338cadebaSRichard HendersonCMPGT_ppzi 00100101 .. 0 ..... 000 ... ..... 1 .... @pd_pg_rn_i5 67438cadebaSRichard HendersonCMPLT_ppzi 00100101 .. 0 ..... 001 ... ..... 0 .... @pd_pg_rn_i5 67538cadebaSRichard HendersonCMPLE_ppzi 00100101 .. 0 ..... 001 ... ..... 1 .... @pd_pg_rn_i5 67638cadebaSRichard HendersonCMPEQ_ppzi 00100101 .. 0 ..... 100 ... ..... 0 .... @pd_pg_rn_i5 67738cadebaSRichard HendersonCMPNE_ppzi 00100101 .. 0 ..... 100 ... ..... 1 .... @pd_pg_rn_i5 67838cadebaSRichard Henderson 679e1fa1164SRichard Henderson### SVE Predicate Logical Operations Group 680e1fa1164SRichard Henderson 681516e246aSRichard Henderson# SVE predicate logical operations 682516e246aSRichard HendersonAND_pppp 00100101 0. 00 .... 01 .... 0 .... 0 .... @pd_pg_pn_pm_s 683516e246aSRichard HendersonBIC_pppp 00100101 0. 00 .... 01 .... 0 .... 1 .... @pd_pg_pn_pm_s 684516e246aSRichard HendersonEOR_pppp 00100101 0. 00 .... 01 .... 1 .... 0 .... @pd_pg_pn_pm_s 685516e246aSRichard HendersonSEL_pppp 00100101 0. 00 .... 01 .... 1 .... 1 .... @pd_pg_pn_pm_s 686516e246aSRichard HendersonORR_pppp 00100101 1. 00 .... 01 .... 0 .... 0 .... @pd_pg_pn_pm_s 687516e246aSRichard HendersonORN_pppp 00100101 1. 00 .... 01 .... 0 .... 1 .... @pd_pg_pn_pm_s 688516e246aSRichard HendersonNOR_pppp 00100101 1. 00 .... 01 .... 1 .... 0 .... @pd_pg_pn_pm_s 689516e246aSRichard HendersonNAND_pppp 00100101 1. 00 .... 01 .... 1 .... 1 .... @pd_pg_pn_pm_s 690516e246aSRichard Henderson 6919e18d7a6SRichard Henderson### SVE Predicate Misc Group 6929e18d7a6SRichard Henderson 6939e18d7a6SRichard Henderson# SVE predicate test 6949e18d7a6SRichard HendersonPTEST 00100101 01 010000 11 pg:4 0 rn:4 0 0000 6959e18d7a6SRichard Henderson 696028e2a7bSRichard Henderson# SVE predicate initialize 697028e2a7bSRichard HendersonPTRUE 00100101 esz:2 01100 s:1 111000 pat:5 0 rd:4 698028e2a7bSRichard Henderson 699028e2a7bSRichard Henderson# SVE initialize FFR 700028e2a7bSRichard HendersonSETFFR 00100101 0010 1100 1001 0000 0000 0000 701028e2a7bSRichard Henderson 702028e2a7bSRichard Henderson# SVE zero predicate register 703028e2a7bSRichard HendersonPFALSE 00100101 0001 1000 1110 0100 0000 rd:4 704028e2a7bSRichard Henderson 705028e2a7bSRichard Henderson# SVE predicate read from FFR (predicated) 706028e2a7bSRichard HendersonRDFFR_p 00100101 0 s:1 0110001111000 pg:4 0 rd:4 707028e2a7bSRichard Henderson 708028e2a7bSRichard Henderson# SVE predicate read from FFR (unpredicated) 709028e2a7bSRichard HendersonRDFFR 00100101 0001 1001 1111 0000 0000 rd:4 710028e2a7bSRichard Henderson 711028e2a7bSRichard Henderson# SVE FFR write from predicate (WRFFR) 712028e2a7bSRichard HendersonWRFFR 00100101 0010 1000 1001 000 rn:4 00000 713028e2a7bSRichard Henderson 714028e2a7bSRichard Henderson# SVE predicate first active 715028e2a7bSRichard HendersonPFIRST 00100101 01 011 000 11000 00 .... 0 .... @pd_pn_e0 716028e2a7bSRichard Henderson 717028e2a7bSRichard Henderson# SVE predicate next active 718028e2a7bSRichard HendersonPNEXT 00100101 .. 011 001 11000 10 .... 0 .... @pd_pn 719028e2a7bSRichard Henderson 72035da316fSRichard Henderson### SVE Partition Break Group 72135da316fSRichard Henderson 72235da316fSRichard Henderson# SVE propagate break from previous partition 72335da316fSRichard HendersonBRKPA 00100101 0. 00 .... 11 .... 0 .... 0 .... @pd_pg_pn_pm_s 72435da316fSRichard HendersonBRKPB 00100101 0. 00 .... 11 .... 0 .... 1 .... @pd_pg_pn_pm_s 72535da316fSRichard Henderson 72635da316fSRichard Henderson# SVE partition break condition 72735da316fSRichard HendersonBRKA_z 00100101 0. 01000001 .... 0 .... 0 .... @pd_pg_pn_s 72835da316fSRichard HendersonBRKB_z 00100101 1. 01000001 .... 0 .... 0 .... @pd_pg_pn_s 729407e6ce7SRichard HendersonBRKA_m 00100101 00 01000001 .... 0 .... 1 .... @pd_pg_pn_s0 730407e6ce7SRichard HendersonBRKB_m 00100101 10 01000001 .... 0 .... 1 .... @pd_pg_pn_s0 73135da316fSRichard Henderson 73235da316fSRichard Henderson# SVE propagate break to next partition 73335da316fSRichard HendersonBRKN 00100101 0. 01100001 .... 0 .... 0 .... @pd_pg_pn_s 73435da316fSRichard Henderson 7359ee3a611SRichard Henderson### SVE Predicate Count Group 7369ee3a611SRichard Henderson 7379ee3a611SRichard Henderson# SVE predicate count 7389ee3a611SRichard HendersonCNTP 00100101 .. 100 000 10 .... 0 .... ..... @rd_pg4_pn 7399ee3a611SRichard Henderson 7409ee3a611SRichard Henderson# SVE inc/dec register by predicate count 7419ee3a611SRichard HendersonINCDECP_r 00100101 .. 10110 d:1 10001 00 .... ..... @incdec_pred u=1 7429ee3a611SRichard Henderson 7439ee3a611SRichard Henderson# SVE inc/dec vector by predicate count 7449ee3a611SRichard HendersonINCDECP_z 00100101 .. 10110 d:1 10000 00 .... ..... @incdec2_pred u=1 7459ee3a611SRichard Henderson 7469ee3a611SRichard Henderson# SVE saturating inc/dec register by predicate count 7479ee3a611SRichard HendersonSINCDECP_r_32 00100101 .. 1010 d:1 u:1 10001 00 .... ..... @incdec_pred 7489ee3a611SRichard HendersonSINCDECP_r_64 00100101 .. 1010 d:1 u:1 10001 10 .... ..... @incdec_pred 7499ee3a611SRichard Henderson 7509ee3a611SRichard Henderson# SVE saturating inc/dec vector by predicate count 7519ee3a611SRichard HendersonSINCDECP_z 00100101 .. 1010 d:1 u:1 10000 00 .... ..... @incdec2_pred 7529ee3a611SRichard Henderson 753caf1cefcSRichard Henderson### SVE Integer Compare - Scalars Group 754caf1cefcSRichard Henderson 755caf1cefcSRichard Henderson# SVE conditionally terminate scalars 756caf1cefcSRichard HendersonCTERM 00100101 1 sf:1 1 rm:5 001000 rn:5 ne:1 0000 757caf1cefcSRichard Henderson 758caf1cefcSRichard Henderson# SVE integer compare scalar count and limit 75934688dbcSRichard HendersonWHILE 00100101 esz:2 1 rm:5 000 sf:1 u:1 lt:1 rn:5 eq:1 rd:4 760caf1cefcSRichard Henderson 76114f6dad1SRichard Henderson# SVE2 pointer conflict compare 76214f6dad1SRichard HendersonWHILE_ptr 00100101 esz:2 1 rm:5 001 100 rn:5 rw:1 rd:4 76314f6dad1SRichard Henderson 764ed491961SRichard Henderson### SVE Integer Wide Immediate - Unpredicated Group 765ed491961SRichard Henderson 766ed491961SRichard Henderson# SVE broadcast floating-point immediate (unpredicated) 767ed491961SRichard HendersonFDUP 00100101 esz:2 111 00 1110 imm:8 rd:5 768ed491961SRichard Henderson 769ed491961SRichard Henderson# SVE broadcast integer immediate (unpredicated) 770ed491961SRichard HendersonDUP_i 00100101 esz:2 111 00 011 . ........ rd:5 imm=%sh8_i8s 771ed491961SRichard Henderson 7726e6a157dSRichard Henderson# SVE integer add/subtract immediate (unpredicated) 7736e6a157dSRichard HendersonADD_zzi 00100101 .. 100 000 11 . ........ ..... @rdn_sh_i8u 7746e6a157dSRichard HendersonSUB_zzi 00100101 .. 100 001 11 . ........ ..... @rdn_sh_i8u 7756e6a157dSRichard HendersonSUBR_zzi 00100101 .. 100 011 11 . ........ ..... @rdn_sh_i8u 7766e6a157dSRichard HendersonSQADD_zzi 00100101 .. 100 100 11 . ........ ..... @rdn_sh_i8u 7776e6a157dSRichard HendersonUQADD_zzi 00100101 .. 100 101 11 . ........ ..... @rdn_sh_i8u 7786e6a157dSRichard HendersonSQSUB_zzi 00100101 .. 100 110 11 . ........ ..... @rdn_sh_i8u 7796e6a157dSRichard HendersonUQSUB_zzi 00100101 .. 100 111 11 . ........ ..... @rdn_sh_i8u 7806e6a157dSRichard Henderson 7816e6a157dSRichard Henderson# SVE integer min/max immediate (unpredicated) 7826e6a157dSRichard HendersonSMAX_zzi 00100101 .. 101 000 110 ........ ..... @rdn_i8s 7836e6a157dSRichard HendersonUMAX_zzi 00100101 .. 101 001 110 ........ ..... @rdn_i8u 7846e6a157dSRichard HendersonSMIN_zzi 00100101 .. 101 010 110 ........ ..... @rdn_i8s 7856e6a157dSRichard HendersonUMIN_zzi 00100101 .. 101 011 110 ........ ..... @rdn_i8u 7866e6a157dSRichard Henderson 7876e6a157dSRichard Henderson# SVE integer multiply immediate (unpredicated) 7886e6a157dSRichard HendersonMUL_zzi 00100101 .. 110 000 110 ........ ..... @rdn_i8s 7896e6a157dSRichard Henderson 790d730ecaaSRichard Henderson# SVE integer dot product (unpredicated) 791bc2bd697SRichard HendersonDOT_zzzz 01000100 1 sz:1 0 rm:5 00000 u:1 rn:5 rd:5 \ 792bc2bd697SRichard Henderson ra=%reg_movprfx 793d730ecaaSRichard Henderson 79421068f39SRichard Henderson# SVE2 complex dot product (vectors) 79521068f39SRichard HendersonCDOT_zzzz 01000100 esz:2 0 rm:5 0001 rot:2 rn:5 rd:5 ra=%reg_movprfx 79621068f39SRichard Henderson 797814d4c52SRichard Henderson#### SVE Multiply - Indexed 798814d4c52SRichard Henderson 79916fcfdc7SRichard Henderson# SVE integer dot product (indexed) 8000a82d963SRichard HendersonSDOT_zzxw_s 01000100 10 1 ..... 000000 ..... ..... @rrxr_2 esz=2 8010a82d963SRichard HendersonSDOT_zzxw_d 01000100 11 1 ..... 000000 ..... ..... @rrxr_1 esz=3 8020a82d963SRichard HendersonUDOT_zzxw_s 01000100 10 1 ..... 000001 ..... ..... @rrxr_2 esz=2 8030a82d963SRichard HendersonUDOT_zzxw_d 01000100 11 1 ..... 000001 ..... ..... @rrxr_1 esz=3 80416fcfdc7SRichard Henderson 8058a02aac7SRichard Henderson# SVE2 integer multiply-add (indexed) 8068a02aac7SRichard HendersonMLA_zzxz_h 01000100 0. 1 ..... 000010 ..... ..... @rrxr_3 esz=1 8078a02aac7SRichard HendersonMLA_zzxz_s 01000100 10 1 ..... 000010 ..... ..... @rrxr_2 esz=2 8088a02aac7SRichard HendersonMLA_zzxz_d 01000100 11 1 ..... 000010 ..... ..... @rrxr_1 esz=3 8098a02aac7SRichard HendersonMLS_zzxz_h 01000100 0. 1 ..... 000011 ..... ..... @rrxr_3 esz=1 8108a02aac7SRichard HendersonMLS_zzxz_s 01000100 10 1 ..... 000011 ..... ..... @rrxr_2 esz=2 8118a02aac7SRichard HendersonMLS_zzxz_d 01000100 11 1 ..... 000011 ..... ..... @rrxr_1 esz=3 8128a02aac7SRichard Henderson 81375d6d5fcSRichard Henderson# SVE2 saturating multiply-add high (indexed) 81475d6d5fcSRichard HendersonSQRDMLAH_zzxz_h 01000100 0. 1 ..... 000100 ..... ..... @rrxr_3 esz=1 81575d6d5fcSRichard HendersonSQRDMLAH_zzxz_s 01000100 10 1 ..... 000100 ..... ..... @rrxr_2 esz=2 81675d6d5fcSRichard HendersonSQRDMLAH_zzxz_d 01000100 11 1 ..... 000100 ..... ..... @rrxr_1 esz=3 81775d6d5fcSRichard HendersonSQRDMLSH_zzxz_h 01000100 0. 1 ..... 000101 ..... ..... @rrxr_3 esz=1 81875d6d5fcSRichard HendersonSQRDMLSH_zzxz_s 01000100 10 1 ..... 000101 ..... ..... @rrxr_2 esz=2 81975d6d5fcSRichard HendersonSQRDMLSH_zzxz_d 01000100 11 1 ..... 000101 ..... ..... @rrxr_1 esz=3 82075d6d5fcSRichard Henderson 8212867039aSRichard Henderson# SVE mixed sign dot product (indexed) 8222867039aSRichard HendersonUSDOT_zzxw_s 01000100 10 1 ..... 000110 ..... ..... @rrxr_2 esz=2 8232867039aSRichard HendersonSUDOT_zzxw_s 01000100 10 1 ..... 000111 ..... ..... @rrxr_2 esz=2 8242867039aSRichard Henderson 825c5c455d7SRichard Henderson# SVE2 saturating multiply-add (indexed) 826c5c455d7SRichard HendersonSQDMLALB_zzxw_s 01000100 10 1 ..... 0010.0 ..... ..... @rrxr_3a esz=2 827c5c455d7SRichard HendersonSQDMLALB_zzxw_d 01000100 11 1 ..... 0010.0 ..... ..... @rrxr_2a esz=3 828c5c455d7SRichard HendersonSQDMLALT_zzxw_s 01000100 10 1 ..... 0010.1 ..... ..... @rrxr_3a esz=2 829c5c455d7SRichard HendersonSQDMLALT_zzxw_d 01000100 11 1 ..... 0010.1 ..... ..... @rrxr_2a esz=3 830c5c455d7SRichard HendersonSQDMLSLB_zzxw_s 01000100 10 1 ..... 0011.0 ..... ..... @rrxr_3a esz=2 831c5c455d7SRichard HendersonSQDMLSLB_zzxw_d 01000100 11 1 ..... 0011.0 ..... ..... @rrxr_2a esz=3 832c5c455d7SRichard HendersonSQDMLSLT_zzxw_s 01000100 10 1 ..... 0011.1 ..... ..... @rrxr_3a esz=2 833c5c455d7SRichard HendersonSQDMLSLT_zzxw_d 01000100 11 1 ..... 0011.1 ..... ..... @rrxr_2a esz=3 834c5c455d7SRichard Henderson 83521068f39SRichard Henderson# SVE2 complex integer dot product (indexed) 83621068f39SRichard HendersonCDOT_zzxw_s 01000100 10 1 index:2 rm:3 0100 rot:2 rn:5 rd:5 \ 83721068f39SRichard Henderson ra=%reg_movprfx 83821068f39SRichard HendersonCDOT_zzxw_d 01000100 11 1 index:1 rm:4 0100 rot:2 rn:5 rd:5 \ 83921068f39SRichard Henderson ra=%reg_movprfx 84021068f39SRichard Henderson 8413b787ed8SRichard Henderson# SVE2 complex integer multiply-add (indexed) 8423b787ed8SRichard HendersonCMLA_zzxz_h 01000100 10 1 index:2 rm:3 0110 rot:2 rn:5 rd:5 \ 8433b787ed8SRichard Henderson ra=%reg_movprfx 8443b787ed8SRichard HendersonCMLA_zzxz_s 01000100 11 1 index:1 rm:4 0110 rot:2 rn:5 rd:5 \ 8453b787ed8SRichard Henderson ra=%reg_movprfx 8463b787ed8SRichard Henderson 8473b787ed8SRichard Henderson# SVE2 complex saturating integer multiply-add (indexed) 8483b787ed8SRichard HendersonSQRDCMLAH_zzxz_h 01000100 10 1 index:2 rm:3 0111 rot:2 rn:5 rd:5 \ 8493b787ed8SRichard Henderson ra=%reg_movprfx 8503b787ed8SRichard HendersonSQRDCMLAH_zzxz_s 01000100 11 1 index:1 rm:4 0111 rot:2 rn:5 rd:5 \ 8513b787ed8SRichard Henderson ra=%reg_movprfx 8523b787ed8SRichard Henderson 853d462469fSRichard Henderson# SVE2 multiply-add long (indexed) 854d462469fSRichard HendersonSMLALB_zzxw_s 01000100 10 1 ..... 1000.0 ..... ..... @rrxr_3a esz=2 855d462469fSRichard HendersonSMLALB_zzxw_d 01000100 11 1 ..... 1000.0 ..... ..... @rrxr_2a esz=3 856d462469fSRichard HendersonSMLALT_zzxw_s 01000100 10 1 ..... 1000.1 ..... ..... @rrxr_3a esz=2 857d462469fSRichard HendersonSMLALT_zzxw_d 01000100 11 1 ..... 1000.1 ..... ..... @rrxr_2a esz=3 858d462469fSRichard HendersonUMLALB_zzxw_s 01000100 10 1 ..... 1001.0 ..... ..... @rrxr_3a esz=2 859d462469fSRichard HendersonUMLALB_zzxw_d 01000100 11 1 ..... 1001.0 ..... ..... @rrxr_2a esz=3 860d462469fSRichard HendersonUMLALT_zzxw_s 01000100 10 1 ..... 1001.1 ..... ..... @rrxr_3a esz=2 861d462469fSRichard HendersonUMLALT_zzxw_d 01000100 11 1 ..... 1001.1 ..... ..... @rrxr_2a esz=3 862d462469fSRichard HendersonSMLSLB_zzxw_s 01000100 10 1 ..... 1010.0 ..... ..... @rrxr_3a esz=2 863d462469fSRichard HendersonSMLSLB_zzxw_d 01000100 11 1 ..... 1010.0 ..... ..... @rrxr_2a esz=3 864d462469fSRichard HendersonSMLSLT_zzxw_s 01000100 10 1 ..... 1010.1 ..... ..... @rrxr_3a esz=2 865d462469fSRichard HendersonSMLSLT_zzxw_d 01000100 11 1 ..... 1010.1 ..... ..... @rrxr_2a esz=3 866d462469fSRichard HendersonUMLSLB_zzxw_s 01000100 10 1 ..... 1011.0 ..... ..... @rrxr_3a esz=2 867d462469fSRichard HendersonUMLSLB_zzxw_d 01000100 11 1 ..... 1011.0 ..... ..... @rrxr_2a esz=3 868d462469fSRichard HendersonUMLSLT_zzxw_s 01000100 10 1 ..... 1011.1 ..... ..... @rrxr_3a esz=2 869d462469fSRichard HendersonUMLSLT_zzxw_d 01000100 11 1 ..... 1011.1 ..... ..... @rrxr_2a esz=3 870d462469fSRichard Henderson 871d3949c4cSRichard Henderson# SVE2 integer multiply long (indexed) 872d3949c4cSRichard HendersonSMULLB_zzx_s 01000100 10 1 ..... 1100.0 ..... ..... @rrx_3a esz=2 873d3949c4cSRichard HendersonSMULLB_zzx_d 01000100 11 1 ..... 1100.0 ..... ..... @rrx_2a esz=3 874d3949c4cSRichard HendersonSMULLT_zzx_s 01000100 10 1 ..... 1100.1 ..... ..... @rrx_3a esz=2 875d3949c4cSRichard HendersonSMULLT_zzx_d 01000100 11 1 ..... 1100.1 ..... ..... @rrx_2a esz=3 876d3949c4cSRichard HendersonUMULLB_zzx_s 01000100 10 1 ..... 1101.0 ..... ..... @rrx_3a esz=2 877d3949c4cSRichard HendersonUMULLB_zzx_d 01000100 11 1 ..... 1101.0 ..... ..... @rrx_2a esz=3 878d3949c4cSRichard HendersonUMULLT_zzx_s 01000100 10 1 ..... 1101.1 ..... ..... @rrx_3a esz=2 879d3949c4cSRichard HendersonUMULLT_zzx_d 01000100 11 1 ..... 1101.1 ..... ..... @rrx_2a esz=3 880d3949c4cSRichard Henderson 881b95f5eebSRichard Henderson# SVE2 saturating multiply (indexed) 882b95f5eebSRichard HendersonSQDMULLB_zzx_s 01000100 10 1 ..... 1110.0 ..... ..... @rrx_3a esz=2 883b95f5eebSRichard HendersonSQDMULLB_zzx_d 01000100 11 1 ..... 1110.0 ..... ..... @rrx_2a esz=3 884b95f5eebSRichard HendersonSQDMULLT_zzx_s 01000100 10 1 ..... 1110.1 ..... ..... @rrx_3a esz=2 885b95f5eebSRichard HendersonSQDMULLT_zzx_d 01000100 11 1 ..... 1110.1 ..... ..... @rrx_2a esz=3 886b95f5eebSRichard Henderson 8871aee2d70SRichard Henderson# SVE2 saturating multiply high (indexed) 8881aee2d70SRichard HendersonSQDMULH_zzx_h 01000100 0. 1 ..... 111100 ..... ..... @rrx_3 esz=1 8891aee2d70SRichard HendersonSQDMULH_zzx_s 01000100 10 1 ..... 111100 ..... ..... @rrx_2 esz=2 8901aee2d70SRichard HendersonSQDMULH_zzx_d 01000100 11 1 ..... 111100 ..... ..... @rrx_1 esz=3 8911aee2d70SRichard HendersonSQRDMULH_zzx_h 01000100 0. 1 ..... 111101 ..... ..... @rrx_3 esz=1 8921aee2d70SRichard HendersonSQRDMULH_zzx_s 01000100 10 1 ..... 111101 ..... ..... @rrx_2 esz=2 8931aee2d70SRichard HendersonSQRDMULH_zzx_d 01000100 11 1 ..... 111101 ..... ..... @rrx_1 esz=3 8941aee2d70SRichard Henderson 895814d4c52SRichard Henderson# SVE2 integer multiply (indexed) 896814d4c52SRichard HendersonMUL_zzx_h 01000100 0. 1 ..... 111110 ..... ..... @rrx_3 esz=1 897814d4c52SRichard HendersonMUL_zzx_s 01000100 10 1 ..... 111110 ..... ..... @rrx_2 esz=2 898814d4c52SRichard HendersonMUL_zzx_d 01000100 11 1 ..... 111110 ..... ..... @rrx_1 esz=3 899814d4c52SRichard Henderson 90076a9d9cdSRichard Henderson# SVE floating-point complex add (predicated) 90176a9d9cdSRichard HendersonFCADD 01100100 esz:2 00000 rot:1 100 pg:3 rm:5 rd:5 \ 90276a9d9cdSRichard Henderson rn=%reg_movprfx 90376a9d9cdSRichard Henderson 90405f48babSRichard Henderson# SVE floating-point complex multiply-add (predicated) 90505f48babSRichard HendersonFCMLA_zpzzz 01100100 esz:2 0 rm:5 0 rot:2 pg:3 rn:5 rd:5 \ 90605f48babSRichard Henderson ra=%reg_movprfx 90705f48babSRichard Henderson 90818fc2405SRichard Henderson# SVE floating-point complex multiply-add (indexed) 90918fc2405SRichard HendersonFCMLA_zzxz 01100100 10 1 index:2 rm:3 0001 rot:2 rn:5 rd:5 \ 91018fc2405SRichard Henderson ra=%reg_movprfx esz=1 91118fc2405SRichard HendersonFCMLA_zzxz 01100100 11 1 index:1 rm:4 0001 rot:2 rn:5 rd:5 \ 91218fc2405SRichard Henderson ra=%reg_movprfx esz=2 91318fc2405SRichard Henderson 914ca40a6e6SRichard Henderson### SVE FP Multiply-Add Indexed Group 915ca40a6e6SRichard Henderson 916ca40a6e6SRichard Henderson# SVE floating-point multiply-add (indexed) 9170a82d963SRichard HendersonFMLA_zzxz 01100100 0. 1 ..... 000000 ..... ..... @rrxr_3 esz=1 9180a82d963SRichard HendersonFMLA_zzxz 01100100 10 1 ..... 000000 ..... ..... @rrxr_2 esz=2 9190a82d963SRichard HendersonFMLA_zzxz 01100100 11 1 ..... 000000 ..... ..... @rrxr_1 esz=3 9200a82d963SRichard HendersonFMLS_zzxz 01100100 0. 1 ..... 000001 ..... ..... @rrxr_3 esz=1 9210a82d963SRichard HendersonFMLS_zzxz 01100100 10 1 ..... 000001 ..... ..... @rrxr_2 esz=2 9220a82d963SRichard HendersonFMLS_zzxz 01100100 11 1 ..... 000001 ..... ..... @rrxr_1 esz=3 923ca40a6e6SRichard Henderson 924ca40a6e6SRichard Henderson### SVE FP Multiply Indexed Group 925ca40a6e6SRichard Henderson 926ca40a6e6SRichard Henderson# SVE floating-point multiply (indexed) 9271c737d9cSRichard HendersonFMUL_zzx 01100100 0. 1 ..... 001000 ..... ..... @rrx_3 esz=1 9281c737d9cSRichard HendersonFMUL_zzx 01100100 10 1 ..... 001000 ..... ..... @rrx_2 esz=2 9291c737d9cSRichard HendersonFMUL_zzx 01100100 11 1 ..... 001000 ..... ..... @rrx_1 esz=3 930ca40a6e6SRichard Henderson 93123fbe79fSRichard Henderson### SVE FP Fast Reduction Group 93223fbe79fSRichard Henderson 93323fbe79fSRichard HendersonFADDV 01100101 .. 000 000 001 ... ..... ..... @rd_pg_rn 93423fbe79fSRichard HendersonFMAXNMV 01100101 .. 000 100 001 ... ..... ..... @rd_pg_rn 93523fbe79fSRichard HendersonFMINNMV 01100101 .. 000 101 001 ... ..... ..... @rd_pg_rn 93623fbe79fSRichard HendersonFMAXV 01100101 .. 000 110 001 ... ..... ..... @rd_pg_rn 93723fbe79fSRichard HendersonFMINV 01100101 .. 000 111 001 ... ..... ..... @rd_pg_rn 93823fbe79fSRichard Henderson 9393887c038SRichard Henderson## SVE Floating Point Unary Operations - Unpredicated Group 9403887c038SRichard Henderson 9413887c038SRichard HendersonFRECPE 01100101 .. 001 110 001100 ..... ..... @rd_rn 9423887c038SRichard HendersonFRSQRTE 01100101 .. 001 111 001100 ..... ..... @rd_rn 9433887c038SRichard Henderson 9444d2e2a03SRichard Henderson### SVE FP Compare with Zero Group 9454d2e2a03SRichard Henderson 9464d2e2a03SRichard HendersonFCMGE_ppz0 01100101 .. 0100 00 001 ... ..... 0 .... @pd_pg_rn 9474d2e2a03SRichard HendersonFCMGT_ppz0 01100101 .. 0100 00 001 ... ..... 1 .... @pd_pg_rn 9484d2e2a03SRichard HendersonFCMLT_ppz0 01100101 .. 0100 01 001 ... ..... 0 .... @pd_pg_rn 9494d2e2a03SRichard HendersonFCMLE_ppz0 01100101 .. 0100 01 001 ... ..... 1 .... @pd_pg_rn 9504d2e2a03SRichard HendersonFCMEQ_ppz0 01100101 .. 0100 10 001 ... ..... 0 .... @pd_pg_rn 9514d2e2a03SRichard HendersonFCMNE_ppz0 01100101 .. 0100 11 001 ... ..... 0 .... @pd_pg_rn 9524d2e2a03SRichard Henderson 9537f9ddf64SRichard Henderson### SVE FP Accumulating Reduction Group 9547f9ddf64SRichard Henderson 9557f9ddf64SRichard Henderson# SVE floating-point serial reduction (predicated) 9567f9ddf64SRichard HendersonFADDA 01100101 .. 011 000 001 ... ..... ..... @rdn_pg_rm 9577f9ddf64SRichard Henderson 95829b80469SRichard Henderson### SVE Floating Point Arithmetic - Unpredicated Group 95929b80469SRichard Henderson 96029b80469SRichard Henderson# SVE floating-point arithmetic (unpredicated) 96129b80469SRichard HendersonFADD_zzz 01100101 .. 0 ..... 000 000 ..... ..... @rd_rn_rm 96229b80469SRichard HendersonFSUB_zzz 01100101 .. 0 ..... 000 001 ..... ..... @rd_rn_rm 96329b80469SRichard HendersonFMUL_zzz 01100101 .. 0 ..... 000 010 ..... ..... @rd_rn_rm 96429b80469SRichard HendersonFTSMUL 01100101 .. 0 ..... 000 011 ..... ..... @rd_rn_rm 96529b80469SRichard HendersonFRECPS 01100101 .. 0 ..... 000 110 ..... ..... @rd_rn_rm 96629b80469SRichard HendersonFRSQRTS 01100101 .. 0 ..... 000 111 ..... ..... @rd_rn_rm 96729b80469SRichard Henderson 968ec3b87c2SRichard Henderson### SVE FP Arithmetic Predicated Group 969ec3b87c2SRichard Henderson 970ec3b87c2SRichard Henderson# SVE floating-point arithmetic (predicated) 971ec3b87c2SRichard HendersonFADD_zpzz 01100101 .. 00 0000 100 ... ..... ..... @rdn_pg_rm 972ec3b87c2SRichard HendersonFSUB_zpzz 01100101 .. 00 0001 100 ... ..... ..... @rdn_pg_rm 973ec3b87c2SRichard HendersonFMUL_zpzz 01100101 .. 00 0010 100 ... ..... ..... @rdn_pg_rm 974ec3b87c2SRichard HendersonFSUB_zpzz 01100101 .. 00 0011 100 ... ..... ..... @rdm_pg_rn # FSUBR 975ec3b87c2SRichard HendersonFMAXNM_zpzz 01100101 .. 00 0100 100 ... ..... ..... @rdn_pg_rm 976ec3b87c2SRichard HendersonFMINNM_zpzz 01100101 .. 00 0101 100 ... ..... ..... @rdn_pg_rm 977ec3b87c2SRichard HendersonFMAX_zpzz 01100101 .. 00 0110 100 ... ..... ..... @rdn_pg_rm 978ec3b87c2SRichard HendersonFMIN_zpzz 01100101 .. 00 0111 100 ... ..... ..... @rdn_pg_rm 979ec3b87c2SRichard HendersonFABD 01100101 .. 00 1000 100 ... ..... ..... @rdn_pg_rm 980ec3b87c2SRichard HendersonFSCALE 01100101 .. 00 1001 100 ... ..... ..... @rdn_pg_rm 981ec3b87c2SRichard HendersonFMULX 01100101 .. 00 1010 100 ... ..... ..... @rdn_pg_rm 982ec3b87c2SRichard HendersonFDIV 01100101 .. 00 1100 100 ... ..... ..... @rdm_pg_rn # FDIVR 983ec3b87c2SRichard HendersonFDIV 01100101 .. 00 1101 100 ... ..... ..... @rdn_pg_rm 984ec3b87c2SRichard Henderson 985cc48affeSRichard Henderson# SVE floating-point arithmetic with immediate (predicated) 986cc48affeSRichard HendersonFADD_zpzi 01100101 .. 011 000 100 ... 0000 . ..... @rdn_i1 987cc48affeSRichard HendersonFSUB_zpzi 01100101 .. 011 001 100 ... 0000 . ..... @rdn_i1 988cc48affeSRichard HendersonFMUL_zpzi 01100101 .. 011 010 100 ... 0000 . ..... @rdn_i1 989cc48affeSRichard HendersonFSUBR_zpzi 01100101 .. 011 011 100 ... 0000 . ..... @rdn_i1 990cc48affeSRichard HendersonFMAXNM_zpzi 01100101 .. 011 100 100 ... 0000 . ..... @rdn_i1 991cc48affeSRichard HendersonFMINNM_zpzi 01100101 .. 011 101 100 ... 0000 . ..... @rdn_i1 992cc48affeSRichard HendersonFMAX_zpzi 01100101 .. 011 110 100 ... 0000 . ..... @rdn_i1 993cc48affeSRichard HendersonFMIN_zpzi 01100101 .. 011 111 100 ... 0000 . ..... @rdn_i1 994cc48affeSRichard Henderson 99567fcd9adSRichard Henderson# SVE floating-point trig multiply-add coefficient 99667fcd9adSRichard HendersonFTMAD 01100101 esz:2 010 imm:3 100000 rm:5 rd:5 rn=%reg_movprfx 99767fcd9adSRichard Henderson 9986ceabaadSRichard Henderson### SVE FP Multiply-Add Group 9996ceabaadSRichard Henderson 10006ceabaadSRichard Henderson# SVE floating-point multiply-accumulate writing addend 10016ceabaadSRichard HendersonFMLA_zpzzz 01100101 .. 1 ..... 000 ... ..... ..... @rda_pg_rn_rm 10026ceabaadSRichard HendersonFMLS_zpzzz 01100101 .. 1 ..... 001 ... ..... ..... @rda_pg_rn_rm 10036ceabaadSRichard HendersonFNMLA_zpzzz 01100101 .. 1 ..... 010 ... ..... ..... @rda_pg_rn_rm 10046ceabaadSRichard HendersonFNMLS_zpzzz 01100101 .. 1 ..... 011 ... ..... ..... @rda_pg_rn_rm 10056ceabaadSRichard Henderson 10066ceabaadSRichard Henderson# SVE floating-point multiply-accumulate writing multiplicand 10076ceabaadSRichard Henderson# Alter the operand extraction order and reuse the helpers from above. 10086ceabaadSRichard Henderson# FMAD, FMSB, FNMAD, FNMS 10096ceabaadSRichard HendersonFMLA_zpzzz 01100101 .. 1 ..... 100 ... ..... ..... @rdn_pg_rm_ra 10106ceabaadSRichard HendersonFMLS_zpzzz 01100101 .. 1 ..... 101 ... ..... ..... @rdn_pg_rm_ra 10116ceabaadSRichard HendersonFNMLA_zpzzz 01100101 .. 1 ..... 110 ... ..... ..... @rdn_pg_rm_ra 10126ceabaadSRichard HendersonFNMLS_zpzzz 01100101 .. 1 ..... 111 ... ..... ..... @rdn_pg_rm_ra 10136ceabaadSRichard Henderson 10148092c6a3SRichard Henderson### SVE FP Unary Operations Predicated Group 10158092c6a3SRichard Henderson 101646d33d1eSRichard Henderson# SVE floating-point convert precision 101746d33d1eSRichard HendersonFCVT_sh 01100101 10 0010 00 101 ... ..... ..... @rd_pg_rn_e0 101846d33d1eSRichard HendersonFCVT_hs 01100101 10 0010 01 101 ... ..... ..... @rd_pg_rn_e0 101946d33d1eSRichard HendersonFCVT_dh 01100101 11 0010 00 101 ... ..... ..... @rd_pg_rn_e0 102046d33d1eSRichard HendersonFCVT_hd 01100101 11 0010 01 101 ... ..... ..... @rd_pg_rn_e0 102146d33d1eSRichard HendersonFCVT_ds 01100101 11 0010 10 101 ... ..... ..... @rd_pg_rn_e0 102246d33d1eSRichard HendersonFCVT_sd 01100101 11 0010 11 101 ... ..... ..... @rd_pg_rn_e0 102346d33d1eSRichard Henderson 1024df4de1afSRichard Henderson# SVE floating-point convert to integer 1025df4de1afSRichard HendersonFCVTZS_hh 01100101 01 011 01 0 101 ... ..... ..... @rd_pg_rn_e0 1026df4de1afSRichard HendersonFCVTZU_hh 01100101 01 011 01 1 101 ... ..... ..... @rd_pg_rn_e0 1027df4de1afSRichard HendersonFCVTZS_hs 01100101 01 011 10 0 101 ... ..... ..... @rd_pg_rn_e0 1028df4de1afSRichard HendersonFCVTZU_hs 01100101 01 011 10 1 101 ... ..... ..... @rd_pg_rn_e0 1029df4de1afSRichard HendersonFCVTZS_hd 01100101 01 011 11 0 101 ... ..... ..... @rd_pg_rn_e0 1030df4de1afSRichard HendersonFCVTZU_hd 01100101 01 011 11 1 101 ... ..... ..... @rd_pg_rn_e0 1031df4de1afSRichard HendersonFCVTZS_ss 01100101 10 011 10 0 101 ... ..... ..... @rd_pg_rn_e0 1032df4de1afSRichard HendersonFCVTZU_ss 01100101 10 011 10 1 101 ... ..... ..... @rd_pg_rn_e0 1033df4de1afSRichard HendersonFCVTZS_ds 01100101 11 011 00 0 101 ... ..... ..... @rd_pg_rn_e0 1034df4de1afSRichard HendersonFCVTZU_ds 01100101 11 011 00 1 101 ... ..... ..... @rd_pg_rn_e0 1035df4de1afSRichard HendersonFCVTZS_sd 01100101 11 011 10 0 101 ... ..... ..... @rd_pg_rn_e0 1036df4de1afSRichard HendersonFCVTZU_sd 01100101 11 011 10 1 101 ... ..... ..... @rd_pg_rn_e0 1037df4de1afSRichard HendersonFCVTZS_dd 01100101 11 011 11 0 101 ... ..... ..... @rd_pg_rn_e0 1038df4de1afSRichard HendersonFCVTZU_dd 01100101 11 011 11 1 101 ... ..... ..... @rd_pg_rn_e0 1039df4de1afSRichard Henderson 1040cda3c753SRichard Henderson# SVE floating-point round to integral value 1041cda3c753SRichard HendersonFRINTN 01100101 .. 000 000 101 ... ..... ..... @rd_pg_rn 1042cda3c753SRichard HendersonFRINTP 01100101 .. 000 001 101 ... ..... ..... @rd_pg_rn 1043cda3c753SRichard HendersonFRINTM 01100101 .. 000 010 101 ... ..... ..... @rd_pg_rn 1044cda3c753SRichard HendersonFRINTZ 01100101 .. 000 011 101 ... ..... ..... @rd_pg_rn 1045cda3c753SRichard HendersonFRINTA 01100101 .. 000 100 101 ... ..... ..... @rd_pg_rn 1046cda3c753SRichard HendersonFRINTX 01100101 .. 000 110 101 ... ..... ..... @rd_pg_rn 1047cda3c753SRichard HendersonFRINTI 01100101 .. 000 111 101 ... ..... ..... @rd_pg_rn 1048cda3c753SRichard Henderson 1049ec5b375bSRichard Henderson# SVE floating-point unary operations 1050ec5b375bSRichard HendersonFRECPX 01100101 .. 001 100 101 ... ..... ..... @rd_pg_rn 1051ec5b375bSRichard HendersonFSQRT 01100101 .. 001 101 101 ... ..... ..... @rd_pg_rn 1052ec5b375bSRichard Henderson 10538092c6a3SRichard Henderson# SVE integer convert to floating-point 10548092c6a3SRichard HendersonSCVTF_hh 01100101 01 010 01 0 101 ... ..... ..... @rd_pg_rn_e0 10558092c6a3SRichard HendersonSCVTF_sh 01100101 01 010 10 0 101 ... ..... ..... @rd_pg_rn_e0 10568092c6a3SRichard HendersonSCVTF_dh 01100101 01 010 11 0 101 ... ..... ..... @rd_pg_rn_e0 10578092c6a3SRichard HendersonSCVTF_ss 01100101 10 010 10 0 101 ... ..... ..... @rd_pg_rn_e0 10588092c6a3SRichard HendersonSCVTF_sd 01100101 11 010 00 0 101 ... ..... ..... @rd_pg_rn_e0 10598092c6a3SRichard HendersonSCVTF_ds 01100101 11 010 10 0 101 ... ..... ..... @rd_pg_rn_e0 10608092c6a3SRichard HendersonSCVTF_dd 01100101 11 010 11 0 101 ... ..... ..... @rd_pg_rn_e0 10618092c6a3SRichard Henderson 10628092c6a3SRichard HendersonUCVTF_hh 01100101 01 010 01 1 101 ... ..... ..... @rd_pg_rn_e0 10638092c6a3SRichard HendersonUCVTF_sh 01100101 01 010 10 1 101 ... ..... ..... @rd_pg_rn_e0 10648092c6a3SRichard HendersonUCVTF_dh 01100101 01 010 11 1 101 ... ..... ..... @rd_pg_rn_e0 10658092c6a3SRichard HendersonUCVTF_ss 01100101 10 010 10 1 101 ... ..... ..... @rd_pg_rn_e0 10668092c6a3SRichard HendersonUCVTF_sd 01100101 11 010 00 1 101 ... ..... ..... @rd_pg_rn_e0 10678092c6a3SRichard HendersonUCVTF_ds 01100101 11 010 10 1 101 ... ..... ..... @rd_pg_rn_e0 10688092c6a3SRichard HendersonUCVTF_dd 01100101 11 010 11 1 101 ... ..... ..... @rd_pg_rn_e0 10698092c6a3SRichard Henderson 1070d1822297SRichard Henderson### SVE Memory - 32-bit Gather and Unsized Contiguous Group 1071d1822297SRichard Henderson 1072d1822297SRichard Henderson# SVE load predicate register 1073d1822297SRichard HendersonLDR_pri 10000101 10 ...... 000 ... ..... 0 .... @pd_rn_i9 1074d1822297SRichard Henderson 1075d1822297SRichard Henderson# SVE load vector register 1076d1822297SRichard HendersonLDR_zri 10000101 10 ...... 010 ... ..... ..... @rd_rn_i9 1077c4e7c493SRichard Henderson 107868459864SRichard Henderson# SVE load and broadcast element 107968459864SRichard HendersonLD1R_zpri 1000010 .. 1 imm:6 1.. pg:3 rn:5 rd:5 \ 108068459864SRichard Henderson &rpri_load dtype=%dtype_23_13 nreg=0 108168459864SRichard Henderson 1082673e9fa6SRichard Henderson# SVE 32-bit gather load (scalar plus 32-bit unscaled offsets) 1083673e9fa6SRichard Henderson# SVE 32-bit gather load (scalar plus 32-bit scaled offsets) 1084673e9fa6SRichard HendersonLD1_zprz 1000010 00 .0 ..... 0.. ... ..... ..... \ 1085673e9fa6SRichard Henderson @rprr_g_load_xs_u esz=2 msz=0 scale=0 1086673e9fa6SRichard HendersonLD1_zprz 1000010 01 .. ..... 0.. ... ..... ..... \ 1087673e9fa6SRichard Henderson @rprr_g_load_xs_u_sc esz=2 msz=1 1088673e9fa6SRichard HendersonLD1_zprz 1000010 10 .. ..... 01. ... ..... ..... \ 1089673e9fa6SRichard Henderson @rprr_g_load_xs_sc esz=2 msz=2 u=1 1090673e9fa6SRichard Henderson 1091673e9fa6SRichard Henderson# SVE 32-bit gather load (vector plus immediate) 1092673e9fa6SRichard HendersonLD1_zpiz 1000010 .. 01 ..... 1.. ... ..... ..... \ 1093673e9fa6SRichard Henderson @rpri_g_load esz=2 1094673e9fa6SRichard Henderson 1095c4e7c493SRichard Henderson### SVE Memory Contiguous Load Group 1096c4e7c493SRichard Henderson 1097c4e7c493SRichard Henderson# SVE contiguous load (scalar plus scalar) 1098c4e7c493SRichard HendersonLD_zprr 1010010 .... ..... 010 ... ..... ..... @rprr_load_dt nreg=0 1099c4e7c493SRichard Henderson 1100e2654d75SRichard Henderson# SVE contiguous first-fault load (scalar plus scalar) 1101e2654d75SRichard HendersonLDFF1_zprr 1010010 .... ..... 011 ... ..... ..... @rprr_load_dt nreg=0 1102e2654d75SRichard Henderson 1103c4e7c493SRichard Henderson# SVE contiguous load (scalar plus immediate) 1104c4e7c493SRichard HendersonLD_zpri 1010010 .... 0.... 101 ... ..... ..... @rpri_load_dt nreg=0 1105c4e7c493SRichard Henderson 1106e2654d75SRichard Henderson# SVE contiguous non-fault load (scalar plus immediate) 1107e2654d75SRichard HendersonLDNF1_zpri 1010010 .... 1.... 101 ... ..... ..... @rpri_load_dt nreg=0 1108e2654d75SRichard Henderson 1109c4e7c493SRichard Henderson# SVE contiguous non-temporal load (scalar plus scalar) 1110c4e7c493SRichard Henderson# LDNT1B, LDNT1H, LDNT1W, LDNT1D 1111c4e7c493SRichard Henderson# SVE load multiple structures (scalar plus scalar) 1112c4e7c493SRichard Henderson# LD2B, LD2H, LD2W, LD2D; etc. 1113c4e7c493SRichard HendersonLD_zprr 1010010 .. nreg:2 ..... 110 ... ..... ..... @rprr_load_msz 1114c4e7c493SRichard Henderson 1115c4e7c493SRichard Henderson# SVE contiguous non-temporal load (scalar plus immediate) 1116c4e7c493SRichard Henderson# LDNT1B, LDNT1H, LDNT1W, LDNT1D 1117c4e7c493SRichard Henderson# SVE load multiple structures (scalar plus immediate) 1118c4e7c493SRichard Henderson# LD2B, LD2H, LD2W, LD2D; etc. 1119c4e7c493SRichard HendersonLD_zpri 1010010 .. nreg:2 0.... 111 ... ..... ..... @rpri_load_msz 11201a039c7eSRichard Henderson 112105abe304SRichard Henderson# SVE load and broadcast quadword (scalar plus scalar) 112205abe304SRichard HendersonLD1RQ_zprr 1010010 .. 00 ..... 000 ... ..... ..... \ 112305abe304SRichard Henderson @rprr_load_msz nreg=0 112405abe304SRichard Henderson 112505abe304SRichard Henderson# SVE load and broadcast quadword (scalar plus immediate) 112605abe304SRichard Henderson# LD1RQB, LD1RQH, LD1RQS, LD1RQD 112705abe304SRichard HendersonLD1RQ_zpri 1010010 .. 00 0.... 001 ... ..... ..... \ 112805abe304SRichard Henderson @rpri_load_msz nreg=0 112905abe304SRichard Henderson 1130dec6cf6bSRichard Henderson# SVE 32-bit gather prefetch (scalar plus 32-bit scaled offsets) 1131dec6cf6bSRichard HendersonPRF 1000010 00 -1 ----- 0-- --- ----- 0 ---- 1132dec6cf6bSRichard Henderson 1133dec6cf6bSRichard Henderson# SVE 32-bit gather prefetch (vector plus immediate) 1134dec6cf6bSRichard HendersonPRF 1000010 -- 00 ----- 111 --- ----- 0 ---- 1135dec6cf6bSRichard Henderson 1136dec6cf6bSRichard Henderson# SVE contiguous prefetch (scalar plus immediate) 1137dec6cf6bSRichard HendersonPRF 1000010 11 1- ----- 0-- --- ----- 0 ---- 1138dec6cf6bSRichard Henderson 1139dec6cf6bSRichard Henderson# SVE contiguous prefetch (scalar plus scalar) 1140dec6cf6bSRichard HendersonPRF_rr 1000010 -- 00 rm:5 110 --- ----- 0 ---- 1141dec6cf6bSRichard Henderson 1142dec6cf6bSRichard Henderson### SVE Memory 64-bit Gather Group 1143dec6cf6bSRichard Henderson 1144673e9fa6SRichard Henderson# SVE 64-bit gather load (scalar plus 32-bit unpacked unscaled offsets) 1145673e9fa6SRichard Henderson# SVE 64-bit gather load (scalar plus 32-bit unpacked scaled offsets) 1146673e9fa6SRichard HendersonLD1_zprz 1100010 00 .0 ..... 0.. ... ..... ..... \ 1147673e9fa6SRichard Henderson @rprr_g_load_xs_u esz=3 msz=0 scale=0 1148673e9fa6SRichard HendersonLD1_zprz 1100010 01 .. ..... 0.. ... ..... ..... \ 1149673e9fa6SRichard Henderson @rprr_g_load_xs_u_sc esz=3 msz=1 1150673e9fa6SRichard HendersonLD1_zprz 1100010 10 .. ..... 0.. ... ..... ..... \ 1151673e9fa6SRichard Henderson @rprr_g_load_xs_u_sc esz=3 msz=2 1152673e9fa6SRichard HendersonLD1_zprz 1100010 11 .. ..... 01. ... ..... ..... \ 1153673e9fa6SRichard Henderson @rprr_g_load_xs_sc esz=3 msz=3 u=1 1154673e9fa6SRichard Henderson 1155673e9fa6SRichard Henderson# SVE 64-bit gather load (scalar plus 64-bit unscaled offsets) 1156673e9fa6SRichard Henderson# SVE 64-bit gather load (scalar plus 64-bit scaled offsets) 1157673e9fa6SRichard HendersonLD1_zprz 1100010 00 10 ..... 1.. ... ..... ..... \ 1158673e9fa6SRichard Henderson @rprr_g_load_u esz=3 msz=0 scale=0 1159673e9fa6SRichard HendersonLD1_zprz 1100010 01 1. ..... 1.. ... ..... ..... \ 1160673e9fa6SRichard Henderson @rprr_g_load_u_sc esz=3 msz=1 1161673e9fa6SRichard HendersonLD1_zprz 1100010 10 1. ..... 1.. ... ..... ..... \ 1162673e9fa6SRichard Henderson @rprr_g_load_u_sc esz=3 msz=2 1163673e9fa6SRichard HendersonLD1_zprz 1100010 11 1. ..... 11. ... ..... ..... \ 1164673e9fa6SRichard Henderson @rprr_g_load_sc esz=3 msz=3 u=1 1165673e9fa6SRichard Henderson 1166673e9fa6SRichard Henderson# SVE 64-bit gather load (vector plus immediate) 1167673e9fa6SRichard HendersonLD1_zpiz 1100010 .. 01 ..... 1.. ... ..... ..... \ 1168673e9fa6SRichard Henderson @rpri_g_load esz=3 1169673e9fa6SRichard Henderson 1170dec6cf6bSRichard Henderson# SVE 64-bit gather prefetch (scalar plus 64-bit scaled offsets) 1171dec6cf6bSRichard HendersonPRF 1100010 00 11 ----- 1-- --- ----- 0 ---- 1172dec6cf6bSRichard Henderson 1173dec6cf6bSRichard Henderson# SVE 64-bit gather prefetch (scalar plus unpacked 32-bit scaled offsets) 1174dec6cf6bSRichard HendersonPRF 1100010 00 -1 ----- 0-- --- ----- 0 ---- 1175dec6cf6bSRichard Henderson 1176dec6cf6bSRichard Henderson# SVE 64-bit gather prefetch (vector plus immediate) 1177dec6cf6bSRichard HendersonPRF 1100010 -- 00 ----- 111 --- ----- 0 ---- 1178dec6cf6bSRichard Henderson 11791a039c7eSRichard Henderson### SVE Memory Store Group 11801a039c7eSRichard Henderson 11815047c204SRichard Henderson# SVE store predicate register 11825047c204SRichard HendersonSTR_pri 1110010 11 0. ..... 000 ... ..... 0 .... @pd_rn_i9 11835047c204SRichard Henderson 11845047c204SRichard Henderson# SVE store vector register 11855047c204SRichard HendersonSTR_zri 1110010 11 0. ..... 010 ... ..... ..... @rd_rn_i9 11865047c204SRichard Henderson 11871a039c7eSRichard Henderson# SVE contiguous store (scalar plus immediate) 11881a039c7eSRichard Henderson# ST1B, ST1H, ST1W, ST1D; require msz <= esz 11891a039c7eSRichard HendersonST_zpri 1110010 .. esz:2 0.... 111 ... ..... ..... \ 11901a039c7eSRichard Henderson @rpri_store_msz nreg=0 11911a039c7eSRichard Henderson 11921a039c7eSRichard Henderson# SVE contiguous store (scalar plus scalar) 11931a039c7eSRichard Henderson# ST1B, ST1H, ST1W, ST1D; require msz <= esz 11941a039c7eSRichard Henderson# Enumerate msz lest we conflict with STR_zri. 11951a039c7eSRichard HendersonST_zprr 1110010 00 .. ..... 010 ... ..... ..... \ 11961a039c7eSRichard Henderson @rprr_store_esz_n0 msz=0 11971a039c7eSRichard HendersonST_zprr 1110010 01 .. ..... 010 ... ..... ..... \ 11981a039c7eSRichard Henderson @rprr_store_esz_n0 msz=1 11991a039c7eSRichard HendersonST_zprr 1110010 10 .. ..... 010 ... ..... ..... \ 12001a039c7eSRichard Henderson @rprr_store_esz_n0 msz=2 12011a039c7eSRichard HendersonST_zprr 1110010 11 11 ..... 010 ... ..... ..... \ 12021a039c7eSRichard Henderson @rprr_store msz=3 esz=3 nreg=0 12031a039c7eSRichard Henderson 12041a039c7eSRichard Henderson# SVE contiguous non-temporal store (scalar plus immediate) (nreg == 0) 12051a039c7eSRichard Henderson# SVE store multiple structures (scalar plus immediate) (nreg != 0) 12061a039c7eSRichard HendersonST_zpri 1110010 .. nreg:2 1.... 111 ... ..... ..... \ 12071a039c7eSRichard Henderson @rpri_store_msz esz=%size_23 12081a039c7eSRichard Henderson 12091a039c7eSRichard Henderson# SVE contiguous non-temporal store (scalar plus scalar) (nreg == 0) 12101a039c7eSRichard Henderson# SVE store multiple structures (scalar plus scalar) (nreg != 0) 12111a039c7eSRichard HendersonST_zprr 1110010 msz:2 nreg:2 ..... 011 ... ..... ..... \ 12121a039c7eSRichard Henderson @rprr_store esz=%size_23 1213f6dbf62aSRichard Henderson 1214f6dbf62aSRichard Henderson# SVE 32-bit scatter store (scalar plus 32-bit scaled offsets) 1215f6dbf62aSRichard Henderson# Require msz > 0 && msz <= esz. 1216f6dbf62aSRichard HendersonST1_zprz 1110010 .. 11 ..... 100 ... ..... ..... \ 1217f6dbf62aSRichard Henderson @rprr_scatter_store xs=0 esz=2 scale=1 1218f6dbf62aSRichard HendersonST1_zprz 1110010 .. 11 ..... 110 ... ..... ..... \ 1219f6dbf62aSRichard Henderson @rprr_scatter_store xs=1 esz=2 scale=1 1220f6dbf62aSRichard Henderson 1221f6dbf62aSRichard Henderson# SVE 32-bit scatter store (scalar plus 32-bit unscaled offsets) 1222f6dbf62aSRichard Henderson# Require msz <= esz. 1223f6dbf62aSRichard HendersonST1_zprz 1110010 .. 10 ..... 100 ... ..... ..... \ 1224f6dbf62aSRichard Henderson @rprr_scatter_store xs=0 esz=2 scale=0 1225f6dbf62aSRichard HendersonST1_zprz 1110010 .. 10 ..... 110 ... ..... ..... \ 1226f6dbf62aSRichard Henderson @rprr_scatter_store xs=1 esz=2 scale=0 1227f6dbf62aSRichard Henderson 1228f6dbf62aSRichard Henderson# SVE 64-bit scatter store (scalar plus 64-bit scaled offset) 1229f6dbf62aSRichard Henderson# Require msz > 0 1230f6dbf62aSRichard HendersonST1_zprz 1110010 .. 01 ..... 101 ... ..... ..... \ 1231f6dbf62aSRichard Henderson @rprr_scatter_store xs=2 esz=3 scale=1 1232f6dbf62aSRichard Henderson 1233f6dbf62aSRichard Henderson# SVE 64-bit scatter store (scalar plus 64-bit unscaled offset) 1234f6dbf62aSRichard HendersonST1_zprz 1110010 .. 00 ..... 101 ... ..... ..... \ 1235f6dbf62aSRichard Henderson @rprr_scatter_store xs=2 esz=3 scale=0 1236f6dbf62aSRichard Henderson 1237408ecde9SRichard Henderson# SVE 64-bit scatter store (vector plus immediate) 1238408ecde9SRichard HendersonST1_zpiz 1110010 .. 10 ..... 101 ... ..... ..... \ 1239408ecde9SRichard Henderson @rpri_scatter_store esz=3 1240408ecde9SRichard Henderson 1241408ecde9SRichard Henderson# SVE 32-bit scatter store (vector plus immediate) 1242408ecde9SRichard HendersonST1_zpiz 1110010 .. 11 ..... 101 ... ..... ..... \ 1243408ecde9SRichard Henderson @rpri_scatter_store esz=2 1244408ecde9SRichard Henderson 1245f6dbf62aSRichard Henderson# SVE 64-bit scatter store (scalar plus unpacked 32-bit scaled offset) 1246f6dbf62aSRichard Henderson# Require msz > 0 1247f6dbf62aSRichard HendersonST1_zprz 1110010 .. 01 ..... 100 ... ..... ..... \ 1248f6dbf62aSRichard Henderson @rprr_scatter_store xs=0 esz=3 scale=1 1249f6dbf62aSRichard HendersonST1_zprz 1110010 .. 01 ..... 110 ... ..... ..... \ 1250f6dbf62aSRichard Henderson @rprr_scatter_store xs=1 esz=3 scale=1 1251f6dbf62aSRichard Henderson 1252f6dbf62aSRichard Henderson# SVE 64-bit scatter store (scalar plus unpacked 32-bit unscaled offset) 1253f6dbf62aSRichard HendersonST1_zprz 1110010 .. 00 ..... 100 ... ..... ..... \ 1254f6dbf62aSRichard Henderson @rprr_scatter_store xs=0 esz=3 scale=0 1255f6dbf62aSRichard HendersonST1_zprz 1110010 .. 00 ..... 110 ... ..... ..... \ 1256f6dbf62aSRichard Henderson @rprr_scatter_store xs=1 esz=3 scale=0 12575dad1ba5SRichard Henderson 12585dad1ba5SRichard Henderson#### SVE2 Support 12595dad1ba5SRichard Henderson 12605dad1ba5SRichard Henderson### SVE2 Integer Multiply - Unpredicated 12615dad1ba5SRichard Henderson 12625dad1ba5SRichard Henderson# SVE2 integer multiply vectors (unpredicated) 12635dad1ba5SRichard HendersonMUL_zzz 00000100 .. 1 ..... 0110 00 ..... ..... @rd_rn_rm 12645dad1ba5SRichard HendersonSMULH_zzz 00000100 .. 1 ..... 0110 10 ..... ..... @rd_rn_rm 12655dad1ba5SRichard HendersonUMULH_zzz 00000100 .. 1 ..... 0110 11 ..... ..... @rd_rn_rm 12665dad1ba5SRichard HendersonPMUL_zzz 00000100 00 1 ..... 0110 01 ..... ..... @rd_rn_rm_e0 1267d4b1e59dSRichard Henderson 1268169d7c58SRichard Henderson# SVE2 signed saturating doubling multiply high (unpredicated) 1269169d7c58SRichard HendersonSQDMULH_zzz 00000100 .. 1 ..... 0111 00 ..... ..... @rd_rn_rm 1270169d7c58SRichard HendersonSQRDMULH_zzz 00000100 .. 1 ..... 0111 01 ..... ..... @rd_rn_rm 1271169d7c58SRichard Henderson 1272d4b1e59dSRichard Henderson### SVE2 Integer - Predicated 1273d4b1e59dSRichard Henderson 1274d4b1e59dSRichard HendersonSADALP_zpzz 01000100 .. 000 100 101 ... ..... ..... @rdm_pg_rn 1275d4b1e59dSRichard HendersonUADALP_zpzz 01000100 .. 000 101 101 ... ..... ..... @rdm_pg_rn 1276db366da8SRichard Henderson 1277db366da8SRichard Henderson### SVE2 integer unary operations (predicated) 1278db366da8SRichard Henderson 1279db366da8SRichard HendersonURECPE 01000100 .. 000 000 101 ... ..... ..... @rd_pg_rn 1280db366da8SRichard HendersonURSQRTE 01000100 .. 000 001 101 ... ..... ..... @rd_pg_rn 1281db366da8SRichard HendersonSQABS 01000100 .. 001 000 101 ... ..... ..... @rd_pg_rn 1282db366da8SRichard HendersonSQNEG 01000100 .. 001 001 101 ... ..... ..... @rd_pg_rn 128345d9503dSRichard Henderson 128445d9503dSRichard Henderson### SVE2 saturating/rounding bitwise shift left (predicated) 128545d9503dSRichard Henderson 128645d9503dSRichard HendersonSRSHL 01000100 .. 000 010 100 ... ..... ..... @rdn_pg_rm 128745d9503dSRichard HendersonURSHL 01000100 .. 000 011 100 ... ..... ..... @rdn_pg_rm 128845d9503dSRichard HendersonSRSHL 01000100 .. 000 110 100 ... ..... ..... @rdm_pg_rn # SRSHLR 128945d9503dSRichard HendersonURSHL 01000100 .. 000 111 100 ... ..... ..... @rdm_pg_rn # URSHLR 129045d9503dSRichard Henderson 129145d9503dSRichard HendersonSQSHL 01000100 .. 001 000 100 ... ..... ..... @rdn_pg_rm 129245d9503dSRichard HendersonUQSHL 01000100 .. 001 001 100 ... ..... ..... @rdn_pg_rm 129345d9503dSRichard HendersonSQSHL 01000100 .. 001 100 100 ... ..... ..... @rdm_pg_rn # SQSHLR 129445d9503dSRichard HendersonUQSHL 01000100 .. 001 101 100 ... ..... ..... @rdm_pg_rn # UQSHLR 129545d9503dSRichard Henderson 129645d9503dSRichard HendersonSQRSHL 01000100 .. 001 010 100 ... ..... ..... @rdn_pg_rm 129745d9503dSRichard HendersonUQRSHL 01000100 .. 001 011 100 ... ..... ..... @rdn_pg_rm 129845d9503dSRichard HendersonSQRSHL 01000100 .. 001 110 100 ... ..... ..... @rdm_pg_rn # SQRSHLR 129945d9503dSRichard HendersonUQRSHL 01000100 .. 001 111 100 ... ..... ..... @rdm_pg_rn # UQRSHLR 1300a47dc220SRichard Henderson 1301a47dc220SRichard Henderson### SVE2 integer halving add/subtract (predicated) 1302a47dc220SRichard Henderson 1303a47dc220SRichard HendersonSHADD 01000100 .. 010 000 100 ... ..... ..... @rdn_pg_rm 1304a47dc220SRichard HendersonUHADD 01000100 .. 010 001 100 ... ..... ..... @rdn_pg_rm 1305a47dc220SRichard HendersonSHSUB 01000100 .. 010 010 100 ... ..... ..... @rdn_pg_rm 1306a47dc220SRichard HendersonUHSUB 01000100 .. 010 011 100 ... ..... ..... @rdn_pg_rm 1307a47dc220SRichard HendersonSRHADD 01000100 .. 010 100 100 ... ..... ..... @rdn_pg_rm 1308a47dc220SRichard HendersonURHADD 01000100 .. 010 101 100 ... ..... ..... @rdn_pg_rm 1309a47dc220SRichard HendersonSHSUB 01000100 .. 010 110 100 ... ..... ..... @rdm_pg_rn # SHSUBR 1310a47dc220SRichard HendersonUHSUB 01000100 .. 010 111 100 ... ..... ..... @rdm_pg_rn # UHSUBR 13118597dc8bSRichard Henderson 13128597dc8bSRichard Henderson### SVE2 integer pairwise arithmetic 13138597dc8bSRichard Henderson 13148597dc8bSRichard HendersonADDP 01000100 .. 010 001 101 ... ..... ..... @rdn_pg_rm 13158597dc8bSRichard HendersonSMAXP 01000100 .. 010 100 101 ... ..... ..... @rdn_pg_rm 13168597dc8bSRichard HendersonUMAXP 01000100 .. 010 101 101 ... ..... ..... @rdn_pg_rm 13178597dc8bSRichard HendersonSMINP 01000100 .. 010 110 101 ... ..... ..... @rdn_pg_rm 13188597dc8bSRichard HendersonUMINP 01000100 .. 010 111 101 ... ..... ..... @rdn_pg_rm 13194f07fbebSRichard Henderson 13204f07fbebSRichard Henderson### SVE2 saturating add/subtract (predicated) 13214f07fbebSRichard Henderson 13224f07fbebSRichard HendersonSQADD_zpzz 01000100 .. 011 000 100 ... ..... ..... @rdn_pg_rm 13234f07fbebSRichard HendersonUQADD_zpzz 01000100 .. 011 001 100 ... ..... ..... @rdn_pg_rm 13244f07fbebSRichard HendersonSQSUB_zpzz 01000100 .. 011 010 100 ... ..... ..... @rdn_pg_rm 13254f07fbebSRichard HendersonUQSUB_zpzz 01000100 .. 011 011 100 ... ..... ..... @rdn_pg_rm 13264f07fbebSRichard HendersonSUQADD 01000100 .. 011 100 100 ... ..... ..... @rdn_pg_rm 13274f07fbebSRichard HendersonUSQADD 01000100 .. 011 101 100 ... ..... ..... @rdn_pg_rm 13284f07fbebSRichard HendersonSQSUB_zpzz 01000100 .. 011 110 100 ... ..... ..... @rdm_pg_rn # SQSUBR 13294f07fbebSRichard HendersonUQSUB_zpzz 01000100 .. 011 111 100 ... ..... ..... @rdm_pg_rn # UQSUBR 13300ce1dda8SRichard Henderson 13310ce1dda8SRichard Henderson#### SVE2 Widening Integer Arithmetic 13320ce1dda8SRichard Henderson 13330ce1dda8SRichard Henderson## SVE2 integer add/subtract long 13340ce1dda8SRichard Henderson 13350ce1dda8SRichard HendersonSADDLB 01000101 .. 0 ..... 00 0000 ..... ..... @rd_rn_rm 13360ce1dda8SRichard HendersonSADDLT 01000101 .. 0 ..... 00 0001 ..... ..... @rd_rn_rm 13370ce1dda8SRichard HendersonUADDLB 01000101 .. 0 ..... 00 0010 ..... ..... @rd_rn_rm 13380ce1dda8SRichard HendersonUADDLT 01000101 .. 0 ..... 00 0011 ..... ..... @rd_rn_rm 13390ce1dda8SRichard Henderson 13400ce1dda8SRichard HendersonSSUBLB 01000101 .. 0 ..... 00 0100 ..... ..... @rd_rn_rm 13410ce1dda8SRichard HendersonSSUBLT 01000101 .. 0 ..... 00 0101 ..... ..... @rd_rn_rm 13420ce1dda8SRichard HendersonUSUBLB 01000101 .. 0 ..... 00 0110 ..... ..... @rd_rn_rm 13430ce1dda8SRichard HendersonUSUBLT 01000101 .. 0 ..... 00 0111 ..... ..... @rd_rn_rm 13440ce1dda8SRichard Henderson 13450ce1dda8SRichard HendersonSABDLB 01000101 .. 0 ..... 00 1100 ..... ..... @rd_rn_rm 13460ce1dda8SRichard HendersonSABDLT 01000101 .. 0 ..... 00 1101 ..... ..... @rd_rn_rm 13470ce1dda8SRichard HendersonUABDLB 01000101 .. 0 ..... 00 1110 ..... ..... @rd_rn_rm 13480ce1dda8SRichard HendersonUABDLT 01000101 .. 0 ..... 00 1111 ..... ..... @rd_rn_rm 1349daec426bSRichard Henderson 1350daec426bSRichard Henderson## SVE2 integer add/subtract interleaved long 1351daec426bSRichard Henderson 1352daec426bSRichard HendersonSADDLBT 01000101 .. 0 ..... 1000 00 ..... ..... @rd_rn_rm 1353daec426bSRichard HendersonSSUBLBT 01000101 .. 0 ..... 1000 10 ..... ..... @rd_rn_rm 1354daec426bSRichard HendersonSSUBLTB 01000101 .. 0 ..... 1000 11 ..... ..... @rd_rn_rm 135581fccf09SRichard Henderson 135681fccf09SRichard Henderson## SVE2 integer add/subtract wide 135781fccf09SRichard Henderson 135881fccf09SRichard HendersonSADDWB 01000101 .. 0 ..... 010 000 ..... ..... @rd_rn_rm 135981fccf09SRichard HendersonSADDWT 01000101 .. 0 ..... 010 001 ..... ..... @rd_rn_rm 136081fccf09SRichard HendersonUADDWB 01000101 .. 0 ..... 010 010 ..... ..... @rd_rn_rm 136181fccf09SRichard HendersonUADDWT 01000101 .. 0 ..... 010 011 ..... ..... @rd_rn_rm 136281fccf09SRichard Henderson 136381fccf09SRichard HendersonSSUBWB 01000101 .. 0 ..... 010 100 ..... ..... @rd_rn_rm 136481fccf09SRichard HendersonSSUBWT 01000101 .. 0 ..... 010 101 ..... ..... @rd_rn_rm 136581fccf09SRichard HendersonUSUBWB 01000101 .. 0 ..... 010 110 ..... ..... @rd_rn_rm 136681fccf09SRichard HendersonUSUBWT 01000101 .. 0 ..... 010 111 ..... ..... @rd_rn_rm 136769ccc099SRichard Henderson 136869ccc099SRichard Henderson## SVE2 integer multiply long 136969ccc099SRichard Henderson 137069ccc099SRichard HendersonSQDMULLB_zzz 01000101 .. 0 ..... 011 000 ..... ..... @rd_rn_rm 137169ccc099SRichard HendersonSQDMULLT_zzz 01000101 .. 0 ..... 011 001 ..... ..... @rd_rn_rm 1372e3a56131SRichard HendersonPMULLB 01000101 .. 0 ..... 011 010 ..... ..... @rd_rn_rm 1373e3a56131SRichard HendersonPMULLT 01000101 .. 0 ..... 011 011 ..... ..... @rd_rn_rm 137469ccc099SRichard HendersonSMULLB_zzz 01000101 .. 0 ..... 011 100 ..... ..... @rd_rn_rm 137569ccc099SRichard HendersonSMULLT_zzz 01000101 .. 0 ..... 011 101 ..... ..... @rd_rn_rm 137669ccc099SRichard HendersonUMULLB_zzz 01000101 .. 0 ..... 011 110 ..... ..... @rd_rn_rm 137769ccc099SRichard HendersonUMULLT_zzz 01000101 .. 0 ..... 011 111 ..... ..... @rd_rn_rm 13784269fef1SRichard Henderson 13794269fef1SRichard Henderson## SVE2 bitwise shift left long 13804269fef1SRichard Henderson 13814269fef1SRichard Henderson# Note bit23 == 0 is handled by esz > 0 in do_sve2_shll_tb. 13824269fef1SRichard HendersonSSHLLB 01000101 .. 0 ..... 1010 00 ..... ..... @rd_rn_tszimm_shl 13834269fef1SRichard HendersonSSHLLT 01000101 .. 0 ..... 1010 01 ..... ..... @rd_rn_tszimm_shl 13844269fef1SRichard HendersonUSHLLB 01000101 .. 0 ..... 1010 10 ..... ..... @rd_rn_tszimm_shl 13854269fef1SRichard HendersonUSHLLT 01000101 .. 0 ..... 1010 11 ..... ..... @rd_rn_tszimm_shl 13862df3ca55SRichard Henderson 13872df3ca55SRichard Henderson## SVE2 bitwise exclusive-or interleaved 13882df3ca55SRichard Henderson 13892df3ca55SRichard HendersonEORBT 01000101 .. 0 ..... 10010 0 ..... ..... @rd_rn_rm 13902df3ca55SRichard HendersonEORTB 01000101 .. 0 ..... 10010 1 ..... ..... @rd_rn_rm 1391cb9c33b8SRichard Henderson 1392cb9c33b8SRichard Henderson## SVE2 bitwise permute 1393cb9c33b8SRichard Henderson 1394cb9c33b8SRichard HendersonBEXT 01000101 .. 0 ..... 1011 00 ..... ..... @rd_rn_rm 1395cb9c33b8SRichard HendersonBDEP 01000101 .. 0 ..... 1011 01 ..... ..... @rd_rn_rm 1396cb9c33b8SRichard HendersonBGRP 01000101 .. 0 ..... 1011 10 ..... ..... @rd_rn_rm 1397ed4a6387SRichard Henderson 1398ed4a6387SRichard Henderson#### SVE2 Accumulate 1399ed4a6387SRichard Henderson 1400ed4a6387SRichard Henderson## SVE2 complex integer add 1401ed4a6387SRichard Henderson 1402ed4a6387SRichard HendersonCADD_rot90 01000101 .. 00000 0 11011 0 ..... ..... @rdn_rm 1403ed4a6387SRichard HendersonCADD_rot270 01000101 .. 00000 0 11011 1 ..... ..... @rdn_rm 1404ed4a6387SRichard HendersonSQCADD_rot90 01000101 .. 00000 1 11011 0 ..... ..... @rdn_rm 1405ed4a6387SRichard HendersonSQCADD_rot270 01000101 .. 00000 1 11011 1 ..... ..... @rdn_rm 140638650638SRichard Henderson 140738650638SRichard Henderson## SVE2 integer absolute difference and accumulate long 140838650638SRichard Henderson 140938650638SRichard HendersonSABALB 01000101 .. 0 ..... 1100 00 ..... ..... @rda_rn_rm 141038650638SRichard HendersonSABALT 01000101 .. 0 ..... 1100 01 ..... ..... @rda_rn_rm 141138650638SRichard HendersonUABALB 01000101 .. 0 ..... 1100 10 ..... ..... @rda_rn_rm 141238650638SRichard HendersonUABALT 01000101 .. 0 ..... 1100 11 ..... ..... @rda_rn_rm 1413b8295dfbSRichard Henderson 1414b8295dfbSRichard Henderson## SVE2 integer add/subtract long with carry 1415b8295dfbSRichard Henderson 1416b8295dfbSRichard Henderson# ADC and SBC decoded via size in helper dispatch. 1417b8295dfbSRichard HendersonADCLB 01000101 .. 0 ..... 11010 0 ..... ..... @rda_rn_rm 1418b8295dfbSRichard HendersonADCLT 01000101 .. 0 ..... 11010 1 ..... ..... @rda_rn_rm 1419a7e3a90eSRichard Henderson 1420a7e3a90eSRichard Henderson## SVE2 bitwise shift right and accumulate 1421a7e3a90eSRichard Henderson 1422a7e3a90eSRichard Henderson# TODO: Use @rda and %reg_movprfx here. 1423a7e3a90eSRichard HendersonSSRA 01000101 .. 0 ..... 1110 00 ..... ..... @rd_rn_tszimm_shr 1424a7e3a90eSRichard HendersonUSRA 01000101 .. 0 ..... 1110 01 ..... ..... @rd_rn_tszimm_shr 1425a7e3a90eSRichard HendersonSRSRA 01000101 .. 0 ..... 1110 10 ..... ..... @rd_rn_tszimm_shr 1426a7e3a90eSRichard HendersonURSRA 01000101 .. 0 ..... 1110 11 ..... ..... @rd_rn_tszimm_shr 1427fc12b46aSRichard Henderson 1428fc12b46aSRichard Henderson## SVE2 bitwise shift and insert 1429fc12b46aSRichard Henderson 1430fc12b46aSRichard HendersonSRI 01000101 .. 0 ..... 11110 0 ..... ..... @rd_rn_tszimm_shr 1431fc12b46aSRichard HendersonSLI 01000101 .. 0 ..... 11110 1 ..... ..... @rd_rn_tszimm_shl 1432289a1797SRichard Henderson 1433289a1797SRichard Henderson## SVE2 integer absolute difference and accumulate 1434289a1797SRichard Henderson 1435289a1797SRichard Henderson# TODO: Use @rda and %reg_movprfx here. 1436289a1797SRichard HendersonSABA 01000101 .. 0 ..... 11111 0 ..... ..... @rd_rn_rm 1437289a1797SRichard HendersonUABA 01000101 .. 0 ..... 11111 1 ..... ..... @rd_rn_rm 14385ff2838dSRichard Henderson 14395ff2838dSRichard Henderson#### SVE2 Narrowing 14405ff2838dSRichard Henderson 14415ff2838dSRichard Henderson## SVE2 saturating extract narrow 14425ff2838dSRichard Henderson 14435ff2838dSRichard Henderson# Bits 23, 18-16 are zero, limited in the translator via esz < 3 & imm == 0. 14445ff2838dSRichard HendersonSQXTNB 01000101 .. 1 ..... 010 000 ..... ..... @rd_rn_tszimm_shl 14455ff2838dSRichard HendersonSQXTNT 01000101 .. 1 ..... 010 001 ..... ..... @rd_rn_tszimm_shl 14465ff2838dSRichard HendersonUQXTNB 01000101 .. 1 ..... 010 010 ..... ..... @rd_rn_tszimm_shl 14475ff2838dSRichard HendersonUQXTNT 01000101 .. 1 ..... 010 011 ..... ..... @rd_rn_tszimm_shl 14485ff2838dSRichard HendersonSQXTUNB 01000101 .. 1 ..... 010 100 ..... ..... @rd_rn_tszimm_shl 14495ff2838dSRichard HendersonSQXTUNT 01000101 .. 1 ..... 010 101 ..... ..... @rd_rn_tszimm_shl 1450b87dbeebSStephen Long 145146d111b2SRichard Henderson## SVE2 bitwise shift right narrow 145246d111b2SRichard Henderson 145346d111b2SRichard Henderson# Bit 23 == 0 is handled by esz > 0 in the translator. 145481fd3e6eSRichard HendersonSQSHRUNB 01000101 .. 1 ..... 00 0000 ..... ..... @rd_rn_tszimm_shr 145581fd3e6eSRichard HendersonSQSHRUNT 01000101 .. 1 ..... 00 0001 ..... ..... @rd_rn_tszimm_shr 145681fd3e6eSRichard HendersonSQRSHRUNB 01000101 .. 1 ..... 00 0010 ..... ..... @rd_rn_tszimm_shr 145781fd3e6eSRichard HendersonSQRSHRUNT 01000101 .. 1 ..... 00 0011 ..... ..... @rd_rn_tszimm_shr 145846d111b2SRichard HendersonSHRNB 01000101 .. 1 ..... 00 0100 ..... ..... @rd_rn_tszimm_shr 145946d111b2SRichard HendersonSHRNT 01000101 .. 1 ..... 00 0101 ..... ..... @rd_rn_tszimm_shr 146046d111b2SRichard HendersonRSHRNB 01000101 .. 1 ..... 00 0110 ..... ..... @rd_rn_tszimm_shr 146146d111b2SRichard HendersonRSHRNT 01000101 .. 1 ..... 00 0111 ..... ..... @rd_rn_tszimm_shr 1462743bb147SRichard HendersonSQSHRNB 01000101 .. 1 ..... 00 1000 ..... ..... @rd_rn_tszimm_shr 1463743bb147SRichard HendersonSQSHRNT 01000101 .. 1 ..... 00 1001 ..... ..... @rd_rn_tszimm_shr 1464743bb147SRichard HendersonSQRSHRNB 01000101 .. 1 ..... 00 1010 ..... ..... @rd_rn_tszimm_shr 1465743bb147SRichard HendersonSQRSHRNT 01000101 .. 1 ..... 00 1011 ..... ..... @rd_rn_tszimm_shr 1466c13418daSRichard HendersonUQSHRNB 01000101 .. 1 ..... 00 1100 ..... ..... @rd_rn_tszimm_shr 1467c13418daSRichard HendersonUQSHRNT 01000101 .. 1 ..... 00 1101 ..... ..... @rd_rn_tszimm_shr 1468c13418daSRichard HendersonUQRSHRNB 01000101 .. 1 ..... 00 1110 ..... ..... @rd_rn_tszimm_shr 1469c13418daSRichard HendersonUQRSHRNT 01000101 .. 1 ..... 00 1111 ..... ..... @rd_rn_tszimm_shr 147046d111b2SRichard Henderson 147140d5ea50SStephen Long## SVE2 integer add/subtract narrow high part 147240d5ea50SStephen Long 147340d5ea50SStephen LongADDHNB 01000101 .. 1 ..... 011 000 ..... ..... @rd_rn_rm 147440d5ea50SStephen LongADDHNT 01000101 .. 1 ..... 011 001 ..... ..... @rd_rn_rm 14750ea3ff02SStephen LongRADDHNB 01000101 .. 1 ..... 011 010 ..... ..... @rd_rn_rm 14760ea3ff02SStephen LongRADDHNT 01000101 .. 1 ..... 011 011 ..... ..... @rd_rn_rm 1477c3cd6766SStephen LongSUBHNB 01000101 .. 1 ..... 011 100 ..... ..... @rd_rn_rm 1478c3cd6766SStephen LongSUBHNT 01000101 .. 1 ..... 011 101 ..... ..... @rd_rn_rm 1479e9443d10SStephen LongRSUBHNB 01000101 .. 1 ..... 011 110 ..... ..... @rd_rn_rm 1480e9443d10SStephen LongRSUBHNT 01000101 .. 1 ..... 011 111 ..... ..... @rd_rn_rm 148140d5ea50SStephen Long 1482e0ae6ec3SStephen Long### SVE2 Character Match 1483e0ae6ec3SStephen Long 1484e0ae6ec3SStephen LongMATCH 01000101 .. 1 ..... 100 ... ..... 0 .... @pd_pg_rn_rm 1485e0ae6ec3SStephen LongNMATCH 01000101 .. 1 ..... 100 ... ..... 1 .... @pd_pg_rn_rm 1486e0ae6ec3SStephen Long 14877d47ac94SStephen Long### SVE2 Histogram Computation 14887d47ac94SStephen Long 14897d47ac94SStephen LongHISTCNT 01000101 .. 1 ..... 110 ... ..... ..... @rd_pg_rn_rm 14907d47ac94SStephen LongHISTSEG 01000101 .. 1 ..... 101 000 ..... ..... @rd_rn_rm 14917d47ac94SStephen Long 1492b87dbeebSStephen Long## SVE2 floating-point pairwise operations 1493b87dbeebSStephen Long 1494b87dbeebSStephen LongFADDP 01100100 .. 010 00 0 100 ... ..... ..... @rdn_pg_rm 1495b87dbeebSStephen LongFMAXNMP 01100100 .. 010 10 0 100 ... ..... ..... @rdn_pg_rm 1496b87dbeebSStephen LongFMINNMP 01100100 .. 010 10 1 100 ... ..... ..... @rdn_pg_rm 1497b87dbeebSStephen LongFMAXP 01100100 .. 010 11 0 100 ... ..... ..... @rdn_pg_rm 1498b87dbeebSStephen LongFMINP 01100100 .. 010 11 1 100 ... ..... ..... @rdn_pg_rm 1499bfc9307eSRichard Henderson 1500bfc9307eSRichard Henderson#### SVE Integer Multiply-Add (unpredicated) 1501bfc9307eSRichard Henderson 1502bfc9307eSRichard Henderson## SVE2 saturating multiply-add long 1503bfc9307eSRichard Henderson 1504bfc9307eSRichard HendersonSQDMLALB_zzzw 01000100 .. 0 ..... 0110 00 ..... ..... @rda_rn_rm 1505bfc9307eSRichard HendersonSQDMLALT_zzzw 01000100 .. 0 ..... 0110 01 ..... ..... @rda_rn_rm 1506bfc9307eSRichard HendersonSQDMLSLB_zzzw 01000100 .. 0 ..... 0110 10 ..... ..... @rda_rn_rm 1507bfc9307eSRichard HendersonSQDMLSLT_zzzw 01000100 .. 0 ..... 0110 11 ..... ..... @rda_rn_rm 1508bfc9307eSRichard Henderson 1509bfc9307eSRichard Henderson## SVE2 saturating multiply-add interleaved long 1510bfc9307eSRichard Henderson 1511bfc9307eSRichard HendersonSQDMLALBT 01000100 .. 0 ..... 00001 0 ..... ..... @rda_rn_rm 1512bfc9307eSRichard HendersonSQDMLSLBT 01000100 .. 0 ..... 00001 1 ..... ..... @rda_rn_rm 1513ab3ddf31SRichard Henderson 1514ab3ddf31SRichard Henderson## SVE2 saturating multiply-add high 1515ab3ddf31SRichard Henderson 1516ab3ddf31SRichard HendersonSQRDMLAH_zzzz 01000100 .. 0 ..... 01110 0 ..... ..... @rda_rn_rm 1517ab3ddf31SRichard HendersonSQRDMLSH_zzzz 01000100 .. 0 ..... 01110 1 ..... ..... @rda_rn_rm 151845a32e80SRichard Henderson 151945a32e80SRichard Henderson## SVE2 integer multiply-add long 152045a32e80SRichard Henderson 152145a32e80SRichard HendersonSMLALB_zzzw 01000100 .. 0 ..... 010 000 ..... ..... @rda_rn_rm 152245a32e80SRichard HendersonSMLALT_zzzw 01000100 .. 0 ..... 010 001 ..... ..... @rda_rn_rm 152345a32e80SRichard HendersonUMLALB_zzzw 01000100 .. 0 ..... 010 010 ..... ..... @rda_rn_rm 152445a32e80SRichard HendersonUMLALT_zzzw 01000100 .. 0 ..... 010 011 ..... ..... @rda_rn_rm 152545a32e80SRichard HendersonSMLSLB_zzzw 01000100 .. 0 ..... 010 100 ..... ..... @rda_rn_rm 152645a32e80SRichard HendersonSMLSLT_zzzw 01000100 .. 0 ..... 010 101 ..... ..... @rda_rn_rm 152745a32e80SRichard HendersonUMLSLB_zzzw 01000100 .. 0 ..... 010 110 ..... ..... @rda_rn_rm 152845a32e80SRichard HendersonUMLSLT_zzzw 01000100 .. 0 ..... 010 111 ..... ..... @rda_rn_rm 1529d782d3caSRichard Henderson 1530d782d3caSRichard Henderson## SVE2 complex integer multiply-add 1531d782d3caSRichard Henderson 1532d782d3caSRichard HendersonCMLA_zzzz 01000100 esz:2 0 rm:5 0010 rot:2 rn:5 rd:5 ra=%reg_movprfx 1533d782d3caSRichard HendersonSQRDCMLAH_zzzz 01000100 esz:2 0 rm:5 0011 rot:2 rn:5 rd:5 ra=%reg_movprfx 15346ebca45fSStephen Long 15356a98cb2aSRichard Henderson## SVE mixed sign dot product 15366a98cb2aSRichard Henderson 15376a98cb2aSRichard HendersonUSDOT_zzzz 01000100 .. 0 ..... 011 110 ..... ..... @rda_rn_rm 15386a98cb2aSRichard Henderson 15394f26756bSStephen Long### SVE2 floating point matrix multiply accumulate 15404f26756bSStephen Long 15414f26756bSStephen LongFMMLA 01100100 .. 1 ..... 111001 ..... ..... @rda_rn_rm 15424f26756bSStephen Long 1543cf327449SStephen Long### SVE2 Memory Gather Load Group 1544cf327449SStephen Long 1545cf327449SStephen Long# SVE2 64-bit gather non-temporal load 1546cf327449SStephen Long# (scalar plus unpacked 32-bit unscaled offsets) 1547cf327449SStephen LongLDNT1_zprz 1100010 msz:2 00 rm:5 1 u:1 0 pg:3 rn:5 rd:5 \ 1548cf327449SStephen Long &rprr_gather_load xs=0 esz=3 scale=0 ff=0 1549cf327449SStephen Long 1550cf327449SStephen Long# SVE2 32-bit gather non-temporal load (scalar plus 32-bit unscaled offsets) 1551cf327449SStephen LongLDNT1_zprz 1000010 msz:2 00 rm:5 10 u:1 pg:3 rn:5 rd:5 \ 1552cf327449SStephen Long &rprr_gather_load xs=0 esz=2 scale=0 ff=0 1553cf327449SStephen Long 15546ebca45fSStephen Long### SVE2 Memory Store Group 15556ebca45fSStephen Long 15566ebca45fSStephen Long# SVE2 64-bit scatter non-temporal store (vector plus scalar) 15576ebca45fSStephen LongSTNT1_zprz 1110010 .. 00 ..... 001 ... ..... ..... \ 15586ebca45fSStephen Long @rprr_scatter_store xs=2 esz=3 scale=0 15596ebca45fSStephen Long 15606ebca45fSStephen Long# SVE2 32-bit scatter non-temporal store (vector plus scalar) 15616ebca45fSStephen LongSTNT1_zprz 1110010 .. 10 ..... 001 ... ..... ..... \ 15626ebca45fSStephen Long @rprr_scatter_store xs=0 esz=2 scale=0 1563b2bcd1beSRichard Henderson 1564b2bcd1beSRichard Henderson### SVE2 Crypto Extensions 1565b2bcd1beSRichard Henderson 1566b2bcd1beSRichard Henderson# SVE2 crypto unary operations 1567b2bcd1beSRichard Henderson# AESMC and AESIMC 1568b2bcd1beSRichard HendersonAESMC 01000101 00 10000011100 decrypt:1 00000 rd:5 15693cc7a88eSRichard Henderson 15703cc7a88eSRichard Henderson# SVE2 crypto destructive binary operations 15713cc7a88eSRichard HendersonAESE 01000101 00 10001 0 11100 0 ..... ..... @rdn_rm_e0 15723cc7a88eSRichard HendersonAESD 01000101 00 10001 0 11100 1 ..... ..... @rdn_rm_e0 15733cc7a88eSRichard HendersonSM4E 01000101 00 10001 1 11100 0 ..... ..... @rdn_rm_e0 1574*3358eb3fSRichard Henderson 1575*3358eb3fSRichard Henderson# SVE2 crypto constructive binary operations 1576*3358eb3fSRichard HendersonSM4EKEY 01000101 00 1 ..... 11110 0 ..... ..... @rd_rn_rm_e0 1577*3358eb3fSRichard HendersonRAX1 01000101 00 1 ..... 11110 1 ..... ..... @rd_rn_rm_e0 1578