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 258fe612a1SPeter Maydell%imm4_16_p1 16:4 !function=plus_1 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 13550d102bdSStephen Long@rda_rn_rm_e0 ........ ... rm:5 ... ... rn:5 rd:5 \ 13650d102bdSStephen Long &rrrr_esz esz=0 ra=%reg_movprfx 137911cdc6dSRichard Henderson@rdn_ra_rm_e0 ........ ... rm:5 ... ... ra:5 rd:5 \ 138911cdc6dSRichard Henderson &rrrr_esz esz=0 rn=%reg_movprfx 139911cdc6dSRichard Henderson 1404b242d9cSRichard Henderson# Three operand with "memory" size, aka immediate left shift 1414b242d9cSRichard Henderson@rd_rn_msz_rm ........ ... rm:5 .... imm:2 rn:5 rd:5 &rrri 1424b242d9cSRichard Henderson 143f97cfd59SRichard Henderson# Two register operand, with governing predicate, vector element size 144f97cfd59SRichard Henderson@rdn_pg_rm ........ esz:2 ... ... ... pg:3 rm:5 rd:5 \ 145f97cfd59SRichard Henderson &rprr_esz rn=%reg_movprfx 146f97cfd59SRichard Henderson@rdm_pg_rn ........ esz:2 ... ... ... pg:3 rn:5 rd:5 \ 147f97cfd59SRichard Henderson &rprr_esz rm=%reg_movprfx 148d3fe4a29SRichard Henderson@rd_pg4_rn_rm ........ esz:2 . rm:5 .. pg:4 rn:5 rd:5 &rprr_esz 149757f9cffSRichard Henderson@pd_pg_rn_rm ........ esz:2 . rm:5 ... pg:3 rn:5 . rd:4 &rprr_esz 150f97cfd59SRichard Henderson 15196a36e4aSRichard Henderson# Three register operand, with governing predicate, vector element size 15296a36e4aSRichard Henderson@rda_pg_rn_rm ........ esz:2 . rm:5 ... pg:3 rn:5 rd:5 \ 15396a36e4aSRichard Henderson &rprrr_esz ra=%reg_movprfx 15496a36e4aSRichard Henderson@rdn_pg_ra_rm ........ esz:2 . rm:5 ... pg:3 ra:5 rd:5 \ 15596a36e4aSRichard Henderson &rprrr_esz rn=%reg_movprfx 1566ceabaadSRichard Henderson@rdn_pg_rm_ra ........ esz:2 . ra:5 ... pg:3 rm:5 rd:5 \ 1576ceabaadSRichard Henderson &rprrr_esz rn=%reg_movprfx 1587d47ac94SStephen Long@rd_pg_rn_rm ........ esz:2 . rm:5 ... pg:3 rn:5 rd:5 &rprr_esz 15996a36e4aSRichard Henderson 160047cec97SRichard Henderson# One register operand, with governing predicate, vector element size 161047cec97SRichard Henderson@rd_pg_rn ........ esz:2 ... ... ... pg:3 rn:5 rd:5 &rpr_esz 1629ee3a611SRichard Henderson@rd_pg4_pn ........ esz:2 ... ... .. pg:4 . rn:4 rd:5 &rpr_esz 1634d2e2a03SRichard Henderson@pd_pg_rn ........ esz:2 ... ... ... pg:3 rn:5 . rd:4 &rpr_esz 164047cec97SRichard Henderson 1658092c6a3SRichard Henderson# One register operand, with governing predicate, no vector element size 1668092c6a3SRichard Henderson@rd_pg_rn_e0 ........ .. ... ... ... pg:3 rn:5 rd:5 &rpr_esz esz=0 1678092c6a3SRichard Henderson 16896f922ccSRichard Henderson# Two register operands with a 6-bit signed immediate. 16996f922ccSRichard Henderson@rd_rn_i6 ........ ... rn:5 ..... imm:s6 rd:5 &rri 17096f922ccSRichard Henderson 171ccd841c3SRichard Henderson# Two register operand, one immediate operand, with predicate, 172830d1a5aSRichard Henderson# element size encoded as TSZHL. 173830d1a5aSRichard Henderson@rdn_pg_tszimm_shl ........ .. ... ... ... pg:3 ..... rd:5 \ 174830d1a5aSRichard Henderson &rpri_esz rn=%reg_movprfx esz=%tszimm_esz imm=%tszimm_shl 175830d1a5aSRichard Henderson@rdn_pg_tszimm_shr ........ .. ... ... ... pg:3 ..... rd:5 \ 176830d1a5aSRichard Henderson &rpri_esz rn=%reg_movprfx esz=%tszimm_esz imm=%tszimm_shr 177ccd841c3SRichard Henderson 178d9d78dccSRichard Henderson# Similarly without predicate. 179830d1a5aSRichard Henderson@rd_rn_tszimm_shl ........ .. ... ... ...... rn:5 rd:5 \ 180830d1a5aSRichard Henderson &rri_esz esz=%tszimm16_esz imm=%tszimm16_shl 181830d1a5aSRichard Henderson@rd_rn_tszimm_shr ........ .. ... ... ...... rn:5 rd:5 \ 182830d1a5aSRichard Henderson &rri_esz esz=%tszimm16_esz imm=%tszimm16_shr 183d9d78dccSRichard Henderson 184f25a2361SRichard Henderson# Two register operand, one immediate operand, with 4-bit predicate. 185f25a2361SRichard Henderson# User must fill in imm. 186f25a2361SRichard Henderson@rdn_pg4 ........ esz:2 .. pg:4 ... ........ rd:5 \ 187f25a2361SRichard Henderson &rpri_esz rn=%reg_movprfx 188f25a2361SRichard Henderson 189cc48affeSRichard Henderson# Two register operand, one one-bit floating-point operand. 190cc48affeSRichard Henderson@rdn_i1 ........ esz:2 ......... pg:3 .... imm:1 rd:5 \ 191cc48affeSRichard Henderson &rpri_esz rn=%reg_movprfx 192cc48affeSRichard Henderson 193e1fa1164SRichard Henderson# Two register operand, one encoded bitmask. 194e1fa1164SRichard Henderson@rdn_dbm ........ .. .... dbm:13 rd:5 \ 195e1fa1164SRichard Henderson &rr_dbm rn=%reg_movprfx 196e1fa1164SRichard Henderson 19738cadebaSRichard Henderson# Predicate output, vector and immediate input, 19838cadebaSRichard Henderson# controlling predicate, element size. 19938cadebaSRichard Henderson@pd_pg_rn_i7 ........ esz:2 . imm:7 . pg:3 rn:5 . rd:4 &rpri_esz 20038cadebaSRichard Henderson@pd_pg_rn_i5 ........ esz:2 . imm:s5 ... pg:3 rn:5 . rd:4 &rpri_esz 20138cadebaSRichard Henderson 202d1822297SRichard Henderson# Basic Load/Store with 9-bit immediate offset 203d1822297SRichard Henderson@pd_rn_i9 ........ ........ ...... rn:5 . rd:4 \ 204d1822297SRichard Henderson &rri imm=%imm9_16_10 205d1822297SRichard Henderson@rd_rn_i9 ........ ........ ...... rn:5 rd:5 \ 206d1822297SRichard Henderson &rri imm=%imm9_16_10 207d1822297SRichard Henderson 20824e82e68SRichard Henderson# One register, pattern, and uint4+1. 20924e82e68SRichard Henderson# User must fill in U and D. 21024e82e68SRichard Henderson@incdec_cnt ........ esz:2 .. .... ...... pat:5 rd:5 \ 21124e82e68SRichard Henderson &incdec_cnt imm=%imm4_16_p1 21224e82e68SRichard Henderson@incdec2_cnt ........ esz:2 .. .... ...... pat:5 rd:5 \ 21324e82e68SRichard Henderson &incdec2_cnt imm=%imm4_16_p1 rn=%reg_movprfx 21424e82e68SRichard Henderson 2159ee3a611SRichard Henderson# One register, predicate. 2169ee3a611SRichard Henderson# User must fill in U and D. 2179ee3a611SRichard Henderson@incdec_pred ........ esz:2 .... .. ..... .. pg:4 rd:5 &incdec_pred 2189ee3a611SRichard Henderson@incdec2_pred ........ esz:2 .... .. ..... .. pg:4 rd:5 \ 2199ee3a611SRichard Henderson &incdec2_pred rn=%reg_movprfx 2209ee3a611SRichard Henderson 221c4e7c493SRichard Henderson# Loads; user must fill in NREG. 222c4e7c493SRichard Henderson@rprr_load_dt ....... dtype:4 rm:5 ... pg:3 rn:5 rd:5 &rprr_load 223c4e7c493SRichard Henderson@rpri_load_dt ....... dtype:4 . imm:s4 ... pg:3 rn:5 rd:5 &rpri_load 224c4e7c493SRichard Henderson 225c4e7c493SRichard Henderson@rprr_load_msz ....... .... rm:5 ... pg:3 rn:5 rd:5 \ 226c4e7c493SRichard Henderson &rprr_load dtype=%msz_dtype 227c4e7c493SRichard Henderson@rpri_load_msz ....... .... . imm:s4 ... pg:3 rn:5 rd:5 \ 228c4e7c493SRichard Henderson &rpri_load dtype=%msz_dtype 229c4e7c493SRichard Henderson 230673e9fa6SRichard Henderson# Gather Loads. 231673e9fa6SRichard Henderson@rprr_g_load_u ....... .. . . rm:5 . u:1 ff:1 pg:3 rn:5 rd:5 \ 232673e9fa6SRichard Henderson &rprr_gather_load xs=2 233673e9fa6SRichard Henderson@rprr_g_load_xs_u ....... .. xs:1 . rm:5 . u:1 ff:1 pg:3 rn:5 rd:5 \ 234673e9fa6SRichard Henderson &rprr_gather_load 235673e9fa6SRichard Henderson@rprr_g_load_xs_u_sc ....... .. xs:1 scale:1 rm:5 . u:1 ff:1 pg:3 rn:5 rd:5 \ 236673e9fa6SRichard Henderson &rprr_gather_load 237673e9fa6SRichard Henderson@rprr_g_load_xs_sc ....... .. xs:1 scale:1 rm:5 . . ff:1 pg:3 rn:5 rd:5 \ 238673e9fa6SRichard Henderson &rprr_gather_load 239673e9fa6SRichard Henderson@rprr_g_load_u_sc ....... .. . scale:1 rm:5 . u:1 ff:1 pg:3 rn:5 rd:5 \ 240673e9fa6SRichard Henderson &rprr_gather_load xs=2 241673e9fa6SRichard Henderson@rprr_g_load_sc ....... .. . scale:1 rm:5 . . ff:1 pg:3 rn:5 rd:5 \ 242673e9fa6SRichard Henderson &rprr_gather_load xs=2 243673e9fa6SRichard Henderson@rpri_g_load ....... msz:2 .. imm:5 . u:1 ff:1 pg:3 rn:5 rd:5 \ 244673e9fa6SRichard Henderson &rpri_gather_load 245673e9fa6SRichard Henderson 2461a039c7eSRichard Henderson# Stores; user must fill in ESZ, MSZ, NREG as needed. 2471a039c7eSRichard Henderson@rprr_store ....... .. .. rm:5 ... pg:3 rn:5 rd:5 &rprr_store 2481a039c7eSRichard Henderson@rpri_store_msz ....... msz:2 .. . imm:s4 ... pg:3 rn:5 rd:5 &rpri_store 2491a039c7eSRichard Henderson@rprr_store_esz_n0 ....... .. esz:2 rm:5 ... pg:3 rn:5 rd:5 \ 2501a039c7eSRichard Henderson &rprr_store nreg=0 251f6dbf62aSRichard Henderson@rprr_scatter_store ....... msz:2 .. rm:5 ... pg:3 rn:5 rd:5 \ 252f6dbf62aSRichard Henderson &rprr_scatter_store 253408ecde9SRichard Henderson@rpri_scatter_store ....... msz:2 .. imm:5 ... pg:3 rn:5 rd:5 \ 254408ecde9SRichard Henderson &rpri_scatter_store 2551a039c7eSRichard Henderson 2561c737d9cSRichard Henderson# Two registers and a scalar by N-bit index 2571c737d9cSRichard Henderson@rrx_3 ........ .. . .. rm:3 ...... rn:5 rd:5 \ 2581c737d9cSRichard Henderson &rrx_esz index=%index3_22_19 2591c737d9cSRichard Henderson@rrx_2 ........ .. . index:2 rm:3 ...... rn:5 rd:5 &rrx_esz 2601c737d9cSRichard Henderson@rrx_1 ........ .. . index:1 rm:4 ...... rn:5 rd:5 &rrx_esz 2611c737d9cSRichard Henderson 262b95f5eebSRichard Henderson# Two registers and a scalar by N-bit index, alternate 263b95f5eebSRichard Henderson@rrx_3a ........ .. . .. rm:3 ...... rn:5 rd:5 \ 264b95f5eebSRichard Henderson &rrx_esz index=%index3_19_11 265b95f5eebSRichard Henderson@rrx_2a ........ .. . . rm:4 ...... rn:5 rd:5 \ 266b95f5eebSRichard Henderson &rrx_esz index=%index2_20_11 267b95f5eebSRichard Henderson 2680a82d963SRichard Henderson# Three registers and a scalar by N-bit index 2690a82d963SRichard Henderson@rrxr_3 ........ .. . .. rm:3 ...... rn:5 rd:5 \ 2700a82d963SRichard Henderson &rrxr_esz ra=%reg_movprfx index=%index3_22_19 2710a82d963SRichard Henderson@rrxr_2 ........ .. . index:2 rm:3 ...... rn:5 rd:5 \ 2720a82d963SRichard Henderson &rrxr_esz ra=%reg_movprfx 2730a82d963SRichard Henderson@rrxr_1 ........ .. . index:1 rm:4 ...... rn:5 rd:5 \ 2740a82d963SRichard Henderson &rrxr_esz ra=%reg_movprfx 2750a82d963SRichard Henderson 276c5c455d7SRichard Henderson# Three registers and a scalar by N-bit index, alternate 277c5c455d7SRichard Henderson@rrxr_3a ........ .. ... rm:3 ...... rn:5 rd:5 \ 278c5c455d7SRichard Henderson &rrxr_esz ra=%reg_movprfx index=%index3_19_11 279c5c455d7SRichard Henderson@rrxr_2a ........ .. .. rm:4 ...... rn:5 rd:5 \ 280c5c455d7SRichard Henderson &rrxr_esz ra=%reg_movprfx index=%index2_20_11 281c5c455d7SRichard Henderson 28238388f7eSRichard Henderson########################################################################### 28338388f7eSRichard Henderson# Instruction patterns. Grouped according to the SVE encodingindex.xhtml. 28438388f7eSRichard Henderson 285f97cfd59SRichard Henderson### SVE Integer Arithmetic - Binary Predicated Group 286f97cfd59SRichard Henderson 287f97cfd59SRichard Henderson# SVE bitwise logical vector operations (predicated) 288f97cfd59SRichard HendersonORR_zpzz 00000100 .. 011 000 000 ... ..... ..... @rdn_pg_rm 289f97cfd59SRichard HendersonEOR_zpzz 00000100 .. 011 001 000 ... ..... ..... @rdn_pg_rm 290f97cfd59SRichard HendersonAND_zpzz 00000100 .. 011 010 000 ... ..... ..... @rdn_pg_rm 291f97cfd59SRichard HendersonBIC_zpzz 00000100 .. 011 011 000 ... ..... ..... @rdn_pg_rm 292f97cfd59SRichard Henderson 293f97cfd59SRichard Henderson# SVE integer add/subtract vectors (predicated) 294f97cfd59SRichard HendersonADD_zpzz 00000100 .. 000 000 000 ... ..... ..... @rdn_pg_rm 295f97cfd59SRichard HendersonSUB_zpzz 00000100 .. 000 001 000 ... ..... ..... @rdn_pg_rm 296f97cfd59SRichard HendersonSUB_zpzz 00000100 .. 000 011 000 ... ..... ..... @rdm_pg_rn # SUBR 297f97cfd59SRichard Henderson 298f97cfd59SRichard Henderson# SVE integer min/max/difference (predicated) 299f97cfd59SRichard HendersonSMAX_zpzz 00000100 .. 001 000 000 ... ..... ..... @rdn_pg_rm 300f97cfd59SRichard HendersonUMAX_zpzz 00000100 .. 001 001 000 ... ..... ..... @rdn_pg_rm 301f97cfd59SRichard HendersonSMIN_zpzz 00000100 .. 001 010 000 ... ..... ..... @rdn_pg_rm 302f97cfd59SRichard HendersonUMIN_zpzz 00000100 .. 001 011 000 ... ..... ..... @rdn_pg_rm 303f97cfd59SRichard HendersonSABD_zpzz 00000100 .. 001 100 000 ... ..... ..... @rdn_pg_rm 304f97cfd59SRichard HendersonUABD_zpzz 00000100 .. 001 101 000 ... ..... ..... @rdn_pg_rm 305f97cfd59SRichard Henderson 306f97cfd59SRichard Henderson# SVE integer multiply/divide (predicated) 307f97cfd59SRichard HendersonMUL_zpzz 00000100 .. 010 000 000 ... ..... ..... @rdn_pg_rm 308f97cfd59SRichard HendersonSMULH_zpzz 00000100 .. 010 010 000 ... ..... ..... @rdn_pg_rm 309f97cfd59SRichard HendersonUMULH_zpzz 00000100 .. 010 011 000 ... ..... ..... @rdn_pg_rm 310f97cfd59SRichard Henderson# Note that divide requires size >= 2; below 2 is unallocated. 311f97cfd59SRichard HendersonSDIV_zpzz 00000100 .. 010 100 000 ... ..... ..... @rdn_pg_rm 312f97cfd59SRichard HendersonUDIV_zpzz 00000100 .. 010 101 000 ... ..... ..... @rdn_pg_rm 313f97cfd59SRichard HendersonSDIV_zpzz 00000100 .. 010 110 000 ... ..... ..... @rdm_pg_rn # SDIVR 314f97cfd59SRichard HendersonUDIV_zpzz 00000100 .. 010 111 000 ... ..... ..... @rdm_pg_rn # UDIVR 315f97cfd59SRichard Henderson 316047cec97SRichard Henderson### SVE Integer Reduction Group 317047cec97SRichard Henderson 318047cec97SRichard Henderson# SVE bitwise logical reduction (predicated) 319047cec97SRichard HendersonORV 00000100 .. 011 000 001 ... ..... ..... @rd_pg_rn 320047cec97SRichard HendersonEORV 00000100 .. 011 001 001 ... ..... ..... @rd_pg_rn 321047cec97SRichard HendersonANDV 00000100 .. 011 010 001 ... ..... ..... @rd_pg_rn 322047cec97SRichard Henderson 323a2103582SRichard Henderson# SVE constructive prefix (predicated) 324a2103582SRichard HendersonMOVPRFX_z 00000100 .. 010 000 001 ... ..... ..... @rd_pg_rn 325a2103582SRichard HendersonMOVPRFX_m 00000100 .. 010 001 001 ... ..... ..... @rd_pg_rn 326a2103582SRichard Henderson 327047cec97SRichard Henderson# SVE integer add reduction (predicated) 328047cec97SRichard Henderson# Note that saddv requires size != 3. 329047cec97SRichard HendersonUADDV 00000100 .. 000 001 001 ... ..... ..... @rd_pg_rn 330047cec97SRichard HendersonSADDV 00000100 .. 000 000 001 ... ..... ..... @rd_pg_rn 331047cec97SRichard Henderson 332047cec97SRichard Henderson# SVE integer min/max reduction (predicated) 333047cec97SRichard HendersonSMAXV 00000100 .. 001 000 001 ... ..... ..... @rd_pg_rn 334047cec97SRichard HendersonUMAXV 00000100 .. 001 001 001 ... ..... ..... @rd_pg_rn 335047cec97SRichard HendersonSMINV 00000100 .. 001 010 001 ... ..... ..... @rd_pg_rn 336047cec97SRichard HendersonUMINV 00000100 .. 001 011 001 ... ..... ..... @rd_pg_rn 337047cec97SRichard Henderson 338ccd841c3SRichard Henderson### SVE Shift by Immediate - Predicated Group 339ccd841c3SRichard Henderson 340ccd841c3SRichard Henderson# SVE bitwise shift by immediate (predicated) 341830d1a5aSRichard HendersonASR_zpzi 00000100 .. 000 000 100 ... .. ... ..... @rdn_pg_tszimm_shr 342830d1a5aSRichard HendersonLSR_zpzi 00000100 .. 000 001 100 ... .. ... ..... @rdn_pg_tszimm_shr 343830d1a5aSRichard HendersonLSL_zpzi 00000100 .. 000 011 100 ... .. ... ..... @rdn_pg_tszimm_shl 344830d1a5aSRichard HendersonASRD 00000100 .. 000 100 100 ... .. ... ..... @rdn_pg_tszimm_shr 345a5421b54SStephen LongSQSHL_zpzi 00000100 .. 000 110 100 ... .. ... ..... @rdn_pg_tszimm_shl 346a5421b54SStephen LongUQSHL_zpzi 00000100 .. 000 111 100 ... .. ... ..... @rdn_pg_tszimm_shl 347a5421b54SStephen LongSRSHR 00000100 .. 001 100 100 ... .. ... ..... @rdn_pg_tszimm_shr 348a5421b54SStephen LongURSHR 00000100 .. 001 101 100 ... .. ... ..... @rdn_pg_tszimm_shr 349a5421b54SStephen LongSQSHLU 00000100 .. 001 111 100 ... .. ... ..... @rdn_pg_tszimm_shl 350ccd841c3SRichard Henderson 35127721dbbSRichard Henderson# SVE bitwise shift by vector (predicated) 35227721dbbSRichard HendersonASR_zpzz 00000100 .. 010 000 100 ... ..... ..... @rdn_pg_rm 35327721dbbSRichard HendersonLSR_zpzz 00000100 .. 010 001 100 ... ..... ..... @rdn_pg_rm 35427721dbbSRichard HendersonLSL_zpzz 00000100 .. 010 011 100 ... ..... ..... @rdn_pg_rm 35527721dbbSRichard HendersonASR_zpzz 00000100 .. 010 100 100 ... ..... ..... @rdm_pg_rn # ASRR 35627721dbbSRichard HendersonLSR_zpzz 00000100 .. 010 101 100 ... ..... ..... @rdm_pg_rn # LSRR 35727721dbbSRichard HendersonLSL_zpzz 00000100 .. 010 111 100 ... ..... ..... @rdm_pg_rn # LSLR 35827721dbbSRichard Henderson 359fe7f8dfbSRichard Henderson# SVE bitwise shift by wide elements (predicated) 360fe7f8dfbSRichard Henderson# Note these require size != 3. 361fe7f8dfbSRichard HendersonASR_zpzw 00000100 .. 011 000 100 ... ..... ..... @rdn_pg_rm 362fe7f8dfbSRichard HendersonLSR_zpzw 00000100 .. 011 001 100 ... ..... ..... @rdn_pg_rm 363fe7f8dfbSRichard HendersonLSL_zpzw 00000100 .. 011 011 100 ... ..... ..... @rdn_pg_rm 364fe7f8dfbSRichard Henderson 365afac6d04SRichard Henderson### SVE Integer Arithmetic - Unary Predicated Group 366afac6d04SRichard Henderson 367afac6d04SRichard Henderson# SVE unary bit operations (predicated) 368afac6d04SRichard Henderson# Note esz != 0 for FABS and FNEG. 369afac6d04SRichard HendersonCLS 00000100 .. 011 000 101 ... ..... ..... @rd_pg_rn 370afac6d04SRichard HendersonCLZ 00000100 .. 011 001 101 ... ..... ..... @rd_pg_rn 371afac6d04SRichard HendersonCNT_zpz 00000100 .. 011 010 101 ... ..... ..... @rd_pg_rn 372afac6d04SRichard HendersonCNOT 00000100 .. 011 011 101 ... ..... ..... @rd_pg_rn 373afac6d04SRichard HendersonNOT_zpz 00000100 .. 011 110 101 ... ..... ..... @rd_pg_rn 374afac6d04SRichard HendersonFABS 00000100 .. 011 100 101 ... ..... ..... @rd_pg_rn 375afac6d04SRichard HendersonFNEG 00000100 .. 011 101 101 ... ..... ..... @rd_pg_rn 376afac6d04SRichard Henderson 377afac6d04SRichard Henderson# SVE integer unary operations (predicated) 378afac6d04SRichard Henderson# Note esz > original size for extensions. 379afac6d04SRichard HendersonABS 00000100 .. 010 110 101 ... ..... ..... @rd_pg_rn 380afac6d04SRichard HendersonNEG 00000100 .. 010 111 101 ... ..... ..... @rd_pg_rn 381afac6d04SRichard HendersonSXTB 00000100 .. 010 000 101 ... ..... ..... @rd_pg_rn 382afac6d04SRichard HendersonUXTB 00000100 .. 010 001 101 ... ..... ..... @rd_pg_rn 383afac6d04SRichard HendersonSXTH 00000100 .. 010 010 101 ... ..... ..... @rd_pg_rn 384afac6d04SRichard HendersonUXTH 00000100 .. 010 011 101 ... ..... ..... @rd_pg_rn 385afac6d04SRichard HendersonSXTW 00000100 .. 010 100 101 ... ..... ..... @rd_pg_rn 386afac6d04SRichard HendersonUXTW 00000100 .. 010 101 101 ... ..... ..... @rd_pg_rn 387afac6d04SRichard Henderson 388abfdefd5SRichard Henderson### SVE Floating Point Compare - Vectors Group 389abfdefd5SRichard Henderson 390abfdefd5SRichard Henderson# SVE floating-point compare vectors 391abfdefd5SRichard HendersonFCMGE_ppzz 01100101 .. 0 ..... 010 ... ..... 0 .... @pd_pg_rn_rm 392abfdefd5SRichard HendersonFCMGT_ppzz 01100101 .. 0 ..... 010 ... ..... 1 .... @pd_pg_rn_rm 393abfdefd5SRichard HendersonFCMEQ_ppzz 01100101 .. 0 ..... 011 ... ..... 0 .... @pd_pg_rn_rm 394abfdefd5SRichard HendersonFCMNE_ppzz 01100101 .. 0 ..... 011 ... ..... 1 .... @pd_pg_rn_rm 395abfdefd5SRichard HendersonFCMUO_ppzz 01100101 .. 0 ..... 110 ... ..... 0 .... @pd_pg_rn_rm 396abfdefd5SRichard HendersonFACGE_ppzz 01100101 .. 0 ..... 110 ... ..... 1 .... @pd_pg_rn_rm 397abfdefd5SRichard HendersonFACGT_ppzz 01100101 .. 0 ..... 111 ... ..... 1 .... @pd_pg_rn_rm 398abfdefd5SRichard Henderson 39996a36e4aSRichard Henderson### SVE Integer Multiply-Add Group 40096a36e4aSRichard Henderson 40196a36e4aSRichard Henderson# SVE integer multiply-add writing addend (predicated) 40296a36e4aSRichard HendersonMLA 00000100 .. 0 ..... 010 ... ..... ..... @rda_pg_rn_rm 40396a36e4aSRichard HendersonMLS 00000100 .. 0 ..... 011 ... ..... ..... @rda_pg_rn_rm 40496a36e4aSRichard Henderson 40596a36e4aSRichard Henderson# SVE integer multiply-add writing multiplicand (predicated) 40696a36e4aSRichard HendersonMLA 00000100 .. 0 ..... 110 ... ..... ..... @rdn_pg_ra_rm # MAD 40796a36e4aSRichard HendersonMLS 00000100 .. 0 ..... 111 ... ..... ..... @rdn_pg_ra_rm # MSB 40896a36e4aSRichard Henderson 409fea98f9cSRichard Henderson### SVE Integer Arithmetic - Unpredicated Group 410fea98f9cSRichard Henderson 411fea98f9cSRichard Henderson# SVE integer add/subtract vectors (unpredicated) 412fea98f9cSRichard HendersonADD_zzz 00000100 .. 1 ..... 000 000 ..... ..... @rd_rn_rm 413fea98f9cSRichard HendersonSUB_zzz 00000100 .. 1 ..... 000 001 ..... ..... @rd_rn_rm 414fea98f9cSRichard HendersonSQADD_zzz 00000100 .. 1 ..... 000 100 ..... ..... @rd_rn_rm 415fea98f9cSRichard HendersonUQADD_zzz 00000100 .. 1 ..... 000 101 ..... ..... @rd_rn_rm 416fea98f9cSRichard HendersonSQSUB_zzz 00000100 .. 1 ..... 000 110 ..... ..... @rd_rn_rm 417fea98f9cSRichard HendersonUQSUB_zzz 00000100 .. 1 ..... 000 111 ..... ..... @rd_rn_rm 418fea98f9cSRichard Henderson 41938388f7eSRichard Henderson### SVE Logical - Unpredicated Group 42038388f7eSRichard Henderson 42138388f7eSRichard Henderson# SVE bitwise logical operations (unpredicated) 42238388f7eSRichard HendersonAND_zzz 00000100 00 1 ..... 001 100 ..... ..... @rd_rn_rm_e0 42338388f7eSRichard HendersonORR_zzz 00000100 01 1 ..... 001 100 ..... ..... @rd_rn_rm_e0 42438388f7eSRichard HendersonEOR_zzz 00000100 10 1 ..... 001 100 ..... ..... @rd_rn_rm_e0 42538388f7eSRichard HendersonBIC_zzz 00000100 11 1 ..... 001 100 ..... ..... @rd_rn_rm_e0 426d1822297SRichard Henderson 427e6eba6e5SRichard HendersonXAR 00000100 .. 1 ..... 001 101 rm:5 rd:5 &rrri_esz \ 428e6eba6e5SRichard Henderson rn=%reg_movprfx esz=%tszimm16_esz imm=%tszimm16_shr 429e6eba6e5SRichard Henderson 430911cdc6dSRichard Henderson# SVE2 bitwise ternary operations 431911cdc6dSRichard HendersonEOR3 00000100 00 1 ..... 001 110 ..... ..... @rdn_ra_rm_e0 432911cdc6dSRichard HendersonBSL 00000100 00 1 ..... 001 111 ..... ..... @rdn_ra_rm_e0 433911cdc6dSRichard HendersonBCAX 00000100 01 1 ..... 001 110 ..... ..... @rdn_ra_rm_e0 434911cdc6dSRichard HendersonBSL1N 00000100 01 1 ..... 001 111 ..... ..... @rdn_ra_rm_e0 435911cdc6dSRichard HendersonBSL2N 00000100 10 1 ..... 001 111 ..... ..... @rdn_ra_rm_e0 436911cdc6dSRichard HendersonNBSL 00000100 11 1 ..... 001 111 ..... ..... @rdn_ra_rm_e0 437911cdc6dSRichard Henderson 4389a56c9c3SRichard Henderson### SVE Index Generation Group 4399a56c9c3SRichard Henderson 4409a56c9c3SRichard Henderson# SVE index generation (immediate start, immediate increment) 4419a56c9c3SRichard HendersonINDEX_ii 00000100 esz:2 1 imm2:s5 010000 imm1:s5 rd:5 4429a56c9c3SRichard Henderson 4439a56c9c3SRichard Henderson# SVE index generation (immediate start, register increment) 4449a56c9c3SRichard HendersonINDEX_ir 00000100 esz:2 1 rm:5 010010 imm:s5 rd:5 4459a56c9c3SRichard Henderson 4469a56c9c3SRichard Henderson# SVE index generation (register start, immediate increment) 4479a56c9c3SRichard HendersonINDEX_ri 00000100 esz:2 1 imm:s5 010001 rn:5 rd:5 4489a56c9c3SRichard Henderson 4499a56c9c3SRichard Henderson# SVE index generation (register start, register increment) 4509a56c9c3SRichard HendersonINDEX_rr 00000100 .. 1 ..... 010011 ..... ..... @rd_rn_rm 4519a56c9c3SRichard Henderson 4520d935760SRichard Henderson### SVE / Streaming SVE Stack Allocation Group 45396f922ccSRichard Henderson 45496f922ccSRichard Henderson# SVE stack frame adjustment 45596f922ccSRichard HendersonADDVL 00000100 001 ..... 01010 ...... ..... @rd_rn_i6 4560d935760SRichard HendersonADDSVL 00000100 001 ..... 01011 ...... ..... @rd_rn_i6 45796f922ccSRichard HendersonADDPL 00000100 011 ..... 01010 ...... ..... @rd_rn_i6 4580d935760SRichard HendersonADDSPL 00000100 011 ..... 01011 ...... ..... @rd_rn_i6 45996f922ccSRichard Henderson 46096f922ccSRichard Henderson# SVE stack frame size 46196f922ccSRichard HendersonRDVL 00000100 101 11111 01010 imm:s6 rd:5 4620d935760SRichard HendersonRDSVL 00000100 101 11111 01011 imm:s6 rd:5 46396f922ccSRichard Henderson 464d9d78dccSRichard Henderson### SVE Bitwise Shift - Unpredicated Group 465d9d78dccSRichard Henderson 466d9d78dccSRichard Henderson# SVE bitwise shift by immediate (unpredicated) 467830d1a5aSRichard HendersonASR_zzi 00000100 .. 1 ..... 1001 00 ..... ..... @rd_rn_tszimm_shr 468830d1a5aSRichard HendersonLSR_zzi 00000100 .. 1 ..... 1001 01 ..... ..... @rd_rn_tszimm_shr 469830d1a5aSRichard HendersonLSL_zzi 00000100 .. 1 ..... 1001 11 ..... ..... @rd_rn_tszimm_shl 470d9d78dccSRichard Henderson 471d9d78dccSRichard Henderson# SVE bitwise shift by wide elements (unpredicated) 472d9d78dccSRichard Henderson# Note esz != 3 473d9d78dccSRichard HendersonASR_zzw 00000100 .. 1 ..... 1000 00 ..... ..... @rd_rn_rm 474d9d78dccSRichard HendersonLSR_zzw 00000100 .. 1 ..... 1000 01 ..... ..... @rd_rn_rm 475d9d78dccSRichard HendersonLSL_zzw 00000100 .. 1 ..... 1000 11 ..... ..... @rd_rn_rm 476d9d78dccSRichard Henderson 4774b242d9cSRichard Henderson### SVE Compute Vector Address Group 4784b242d9cSRichard Henderson 4794b242d9cSRichard Henderson# SVE vector address generation 4804b242d9cSRichard HendersonADR_s32 00000100 00 1 ..... 1010 .. ..... ..... @rd_rn_msz_rm 4814b242d9cSRichard HendersonADR_u32 00000100 01 1 ..... 1010 .. ..... ..... @rd_rn_msz_rm 4824b242d9cSRichard HendersonADR_p32 00000100 10 1 ..... 1010 .. ..... ..... @rd_rn_msz_rm 4834b242d9cSRichard HendersonADR_p64 00000100 11 1 ..... 1010 .. ..... ..... @rd_rn_msz_rm 4844b242d9cSRichard Henderson 4850762cd42SRichard Henderson### SVE Integer Misc - Unpredicated Group 4860762cd42SRichard Henderson 487a2103582SRichard Henderson# SVE constructive prefix (unpredicated) 488a2103582SRichard HendersonMOVPRFX 00000100 00 1 00000 101111 rn:5 rd:5 489a2103582SRichard Henderson 4900762cd42SRichard Henderson# SVE floating-point exponential accelerator 4910762cd42SRichard Henderson# Note esz != 0 4920762cd42SRichard HendersonFEXPA 00000100 .. 1 00000 101110 ..... ..... @rd_rn 4930762cd42SRichard Henderson 494a1f233f2SRichard Henderson# SVE floating-point trig select coefficient 495a1f233f2SRichard Henderson# Note esz != 0 496a1f233f2SRichard HendersonFTSSEL 00000100 .. 1 ..... 101100 ..... ..... @rd_rn_rm 497a1f233f2SRichard Henderson 49824e82e68SRichard Henderson### SVE Element Count Group 49924e82e68SRichard Henderson 50024e82e68SRichard Henderson# SVE element count 50124e82e68SRichard HendersonCNT_r 00000100 .. 10 .... 1110 0 0 ..... ..... @incdec_cnt d=0 u=1 50224e82e68SRichard Henderson 50324e82e68SRichard Henderson# SVE inc/dec register by element count 50424e82e68SRichard HendersonINCDEC_r 00000100 .. 11 .... 1110 0 d:1 ..... ..... @incdec_cnt u=1 50524e82e68SRichard Henderson 50624e82e68SRichard Henderson# SVE saturating inc/dec register by element count 50724e82e68SRichard HendersonSINCDEC_r_32 00000100 .. 10 .... 1111 d:1 u:1 ..... ..... @incdec_cnt 50824e82e68SRichard HendersonSINCDEC_r_64 00000100 .. 11 .... 1111 d:1 u:1 ..... ..... @incdec_cnt 50924e82e68SRichard Henderson 51024e82e68SRichard Henderson# SVE inc/dec vector by element count 51124e82e68SRichard Henderson# Note this requires esz != 0. 51224e82e68SRichard HendersonINCDEC_v 00000100 .. 1 1 .... 1100 0 d:1 ..... ..... @incdec2_cnt u=1 51324e82e68SRichard Henderson 51424e82e68SRichard Henderson# SVE saturating inc/dec vector by element count 51524e82e68SRichard Henderson# Note these require esz != 0. 51624e82e68SRichard HendersonSINCDEC_v 00000100 .. 1 0 .... 1100 d:1 u:1 ..... ..... @incdec2_cnt 517516e246aSRichard Henderson 518e1fa1164SRichard Henderson### SVE Bitwise Immediate Group 519e1fa1164SRichard Henderson 520e1fa1164SRichard Henderson# SVE bitwise logical with immediate (unpredicated) 521e1fa1164SRichard HendersonORR_zzi 00000101 00 0000 ............. ..... @rdn_dbm 522e1fa1164SRichard HendersonEOR_zzi 00000101 01 0000 ............. ..... @rdn_dbm 523e1fa1164SRichard HendersonAND_zzi 00000101 10 0000 ............. ..... @rdn_dbm 524e1fa1164SRichard Henderson 525e1fa1164SRichard Henderson# SVE broadcast bitmask immediate 526e1fa1164SRichard HendersonDUPM 00000101 11 0000 dbm:13 rd:5 527e1fa1164SRichard Henderson 528f25a2361SRichard Henderson### SVE Integer Wide Immediate - Predicated Group 529f25a2361SRichard Henderson 530f25a2361SRichard Henderson# SVE copy floating-point immediate (predicated) 531f25a2361SRichard HendersonFCPY 00000101 .. 01 .... 110 imm:8 ..... @rdn_pg4 532f25a2361SRichard Henderson 533f25a2361SRichard Henderson# SVE copy integer immediate (predicated) 5347836c941SRichard Henderson{ 5357836c941SRichard Henderson INVALID 00000101 00 01 ---- 01 1 -------- ----- 536f25a2361SRichard Henderson CPY_m_i 00000101 .. 01 .... 01 . ........ ..... @rdn_pg4 imm=%sh8_i8s 5377836c941SRichard Henderson} 5387836c941SRichard Henderson{ 5397836c941SRichard Henderson INVALID 00000101 00 01 ---- 00 1 -------- ----- 540f25a2361SRichard Henderson CPY_z_i 00000101 .. 01 .... 00 . ........ ..... @rdn_pg4 imm=%sh8_i8s 5417836c941SRichard Henderson} 542f25a2361SRichard Henderson 543b94f8f60SRichard Henderson### SVE Permute - Extract Group 544b94f8f60SRichard Henderson 54575114792SStephen Long# SVE extract vector (destructive) 546b94f8f60SRichard HendersonEXT 00000101 001 ..... 000 ... rm:5 rd:5 \ 547b94f8f60SRichard Henderson &rrri rn=%reg_movprfx imm=%imm8_16_10 548b94f8f60SRichard Henderson 54975114792SStephen Long# SVE2 extract vector (constructive) 55075114792SStephen LongEXT_sve2 00000101 011 ..... 000 ... rn:5 rd:5 \ 55175114792SStephen Long &rri imm=%imm8_16_10 55275114792SStephen Long 55330562ab7SRichard Henderson### SVE Permute - Unpredicated Group 55430562ab7SRichard Henderson 55530562ab7SRichard Henderson# SVE broadcast general register 55630562ab7SRichard HendersonDUP_s 00000101 .. 1 00000 001110 ..... ..... @rd_rn 55730562ab7SRichard Henderson 55830562ab7SRichard Henderson# SVE broadcast indexed element 55930562ab7SRichard HendersonDUP_x 00000101 .. 1 ..... 001000 rn:5 rd:5 \ 56030562ab7SRichard Henderson &rri imm=%imm7_22_16 56130562ab7SRichard Henderson 56230562ab7SRichard Henderson# SVE insert SIMD&FP scalar register 56330562ab7SRichard HendersonINSR_f 00000101 .. 1 10100 001110 ..... ..... @rdn_rm 56430562ab7SRichard Henderson 56530562ab7SRichard Henderson# SVE insert general register 56630562ab7SRichard HendersonINSR_r 00000101 .. 1 00100 001110 ..... ..... @rdn_rm 56730562ab7SRichard Henderson 56830562ab7SRichard Henderson# SVE reverse vector elements 56930562ab7SRichard HendersonREV_v 00000101 .. 1 11000 001110 ..... ..... @rd_rn 57030562ab7SRichard Henderson 57130562ab7SRichard Henderson# SVE vector table lookup 57230562ab7SRichard HendersonTBL 00000101 .. 1 ..... 001100 ..... ..... @rd_rn_rm 57330562ab7SRichard Henderson 57430562ab7SRichard Henderson# SVE unpack vector elements 57530562ab7SRichard HendersonUNPK 00000101 esz:2 1100 u:1 h:1 001110 rn:5 rd:5 57630562ab7SRichard Henderson 57780a712a2SStephen Long# SVE2 Table Lookup (three sources) 57880a712a2SStephen Long 57980a712a2SStephen LongTBL_sve2 00000101 .. 1 ..... 001010 ..... ..... @rd_rn_rm 58080a712a2SStephen LongTBX 00000101 .. 1 ..... 001011 ..... ..... @rd_rn_rm 58180a712a2SStephen Long 582d731d8cbSRichard Henderson### SVE Permute - Predicates Group 583d731d8cbSRichard Henderson 584d731d8cbSRichard Henderson# SVE permute predicate elements 585d731d8cbSRichard HendersonZIP1_p 00000101 .. 10 .... 010 000 0 .... 0 .... @pd_pn_pm 586d731d8cbSRichard HendersonZIP2_p 00000101 .. 10 .... 010 001 0 .... 0 .... @pd_pn_pm 587d731d8cbSRichard HendersonUZP1_p 00000101 .. 10 .... 010 010 0 .... 0 .... @pd_pn_pm 588d731d8cbSRichard HendersonUZP2_p 00000101 .. 10 .... 010 011 0 .... 0 .... @pd_pn_pm 589d731d8cbSRichard HendersonTRN1_p 00000101 .. 10 .... 010 100 0 .... 0 .... @pd_pn_pm 590d731d8cbSRichard HendersonTRN2_p 00000101 .. 10 .... 010 101 0 .... 0 .... @pd_pn_pm 591d731d8cbSRichard Henderson 592d731d8cbSRichard Henderson# SVE reverse predicate elements 593d731d8cbSRichard HendersonREV_p 00000101 .. 11 0100 010 000 0 .... 0 .... @pd_pn 594d731d8cbSRichard Henderson 595d731d8cbSRichard Henderson# SVE unpack predicate elements 596d731d8cbSRichard HendersonPUNPKLO 00000101 00 11 0000 010 000 0 .... 0 .... @pd_pn_e0 597d731d8cbSRichard HendersonPUNPKHI 00000101 00 11 0001 010 000 0 .... 0 .... @pd_pn_e0 598d731d8cbSRichard Henderson 599234b48e9SRichard Henderson### SVE Permute - Interleaving Group 600234b48e9SRichard Henderson 601234b48e9SRichard Henderson# SVE permute vector elements 602234b48e9SRichard HendersonZIP1_z 00000101 .. 1 ..... 011 000 ..... ..... @rd_rn_rm 603234b48e9SRichard HendersonZIP2_z 00000101 .. 1 ..... 011 001 ..... ..... @rd_rn_rm 604234b48e9SRichard HendersonUZP1_z 00000101 .. 1 ..... 011 010 ..... ..... @rd_rn_rm 605234b48e9SRichard HendersonUZP2_z 00000101 .. 1 ..... 011 011 ..... ..... @rd_rn_rm 606234b48e9SRichard HendersonTRN1_z 00000101 .. 1 ..... 011 100 ..... ..... @rd_rn_rm 607234b48e9SRichard HendersonTRN2_z 00000101 .. 1 ..... 011 101 ..... ..... @rd_rn_rm 608234b48e9SRichard Henderson 60974b64b25SRichard Henderson# SVE2 permute vector segments 61074b64b25SRichard HendersonZIP1_q 00000101 10 1 ..... 000 000 ..... ..... @rd_rn_rm_e0 61174b64b25SRichard HendersonZIP2_q 00000101 10 1 ..... 000 001 ..... ..... @rd_rn_rm_e0 61274b64b25SRichard HendersonUZP1_q 00000101 10 1 ..... 000 010 ..... ..... @rd_rn_rm_e0 61374b64b25SRichard HendersonUZP2_q 00000101 10 1 ..... 000 011 ..... ..... @rd_rn_rm_e0 61474b64b25SRichard HendersonTRN1_q 00000101 10 1 ..... 000 110 ..... ..... @rd_rn_rm_e0 61574b64b25SRichard HendersonTRN2_q 00000101 10 1 ..... 000 111 ..... ..... @rd_rn_rm_e0 61674b64b25SRichard Henderson 6173ca879aeSRichard Henderson### SVE Permute - Predicated Group 6183ca879aeSRichard Henderson 6193ca879aeSRichard Henderson# SVE compress active elements 6203ca879aeSRichard Henderson# Note esz >= 2 6213ca879aeSRichard HendersonCOMPACT 00000101 .. 100001 100 ... ..... ..... @rd_pg_rn 6223ca879aeSRichard Henderson 623ef23cb72SRichard Henderson# SVE conditionally broadcast element to vector 624ef23cb72SRichard HendersonCLASTA_z 00000101 .. 10100 0 100 ... ..... ..... @rdn_pg_rm 625ef23cb72SRichard HendersonCLASTB_z 00000101 .. 10100 1 100 ... ..... ..... @rdn_pg_rm 626ef23cb72SRichard Henderson 627ef23cb72SRichard Henderson# SVE conditionally copy element to SIMD&FP scalar 628ef23cb72SRichard HendersonCLASTA_v 00000101 .. 10101 0 100 ... ..... ..... @rd_pg_rn 629ef23cb72SRichard HendersonCLASTB_v 00000101 .. 10101 1 100 ... ..... ..... @rd_pg_rn 630ef23cb72SRichard Henderson 631ef23cb72SRichard Henderson# SVE conditionally copy element to general register 632ef23cb72SRichard HendersonCLASTA_r 00000101 .. 11000 0 101 ... ..... ..... @rd_pg_rn 633ef23cb72SRichard HendersonCLASTB_r 00000101 .. 11000 1 101 ... ..... ..... @rd_pg_rn 634ef23cb72SRichard Henderson 635ef23cb72SRichard Henderson# SVE copy element to SIMD&FP scalar register 636ef23cb72SRichard HendersonLASTA_v 00000101 .. 10001 0 100 ... ..... ..... @rd_pg_rn 637ef23cb72SRichard HendersonLASTB_v 00000101 .. 10001 1 100 ... ..... ..... @rd_pg_rn 638ef23cb72SRichard Henderson 639ef23cb72SRichard Henderson# SVE copy element to general register 640ef23cb72SRichard HendersonLASTA_r 00000101 .. 10000 0 101 ... ..... ..... @rd_pg_rn 641ef23cb72SRichard HendersonLASTB_r 00000101 .. 10000 1 101 ... ..... ..... @rd_pg_rn 642ef23cb72SRichard Henderson 643792a5578SRichard Henderson# SVE copy element from SIMD&FP scalar register 644792a5578SRichard HendersonCPY_m_v 00000101 .. 100000 100 ... ..... ..... @rd_pg_rn 645792a5578SRichard Henderson 646792a5578SRichard Henderson# SVE copy element from general register to vector (predicated) 647792a5578SRichard HendersonCPY_m_r 00000101 .. 101000 101 ... ..... ..... @rd_pg_rn 648792a5578SRichard Henderson 649dae8fb90SRichard Henderson# SVE reverse within elements 650dae8fb90SRichard Henderson# Note esz >= operation size 651dae8fb90SRichard HendersonREVB 00000101 .. 1001 00 100 ... ..... ..... @rd_pg_rn 652dae8fb90SRichard HendersonREVH 00000101 .. 1001 01 100 ... ..... ..... @rd_pg_rn 653dae8fb90SRichard HendersonREVW 00000101 .. 1001 10 100 ... ..... ..... @rd_pg_rn 654dae8fb90SRichard HendersonRBIT 00000101 .. 1001 11 100 ... ..... ..... @rd_pg_rn 6557dbfafc1SRichard HendersonREVD 00000101 00 1011 10 100 ... ..... ..... @rd_pg_rn_e0 656dae8fb90SRichard Henderson 65775114792SStephen Long# SVE vector splice (predicated, destructive) 658b48ff240SRichard HendersonSPLICE 00000101 .. 101 100 100 ... ..... ..... @rdn_pg_rm 659b48ff240SRichard Henderson 66075114792SStephen Long# SVE2 vector splice (predicated, constructive) 66175114792SStephen LongSPLICE_sve2 00000101 .. 101 101 100 ... ..... ..... @rd_pg_rn 66275114792SStephen Long 663d3fe4a29SRichard Henderson### SVE Select Vectors Group 664d3fe4a29SRichard Henderson 665d3fe4a29SRichard Henderson# SVE select vector elements (predicated) 666d3fe4a29SRichard HendersonSEL_zpzz 00000101 .. 1 ..... 11 .... ..... ..... @rd_pg4_rn_rm 667d3fe4a29SRichard Henderson 668757f9cffSRichard Henderson### SVE Integer Compare - Vectors Group 669757f9cffSRichard Henderson 670757f9cffSRichard Henderson# SVE integer compare_vectors 671757f9cffSRichard HendersonCMPHS_ppzz 00100100 .. 0 ..... 000 ... ..... 0 .... @pd_pg_rn_rm 672757f9cffSRichard HendersonCMPHI_ppzz 00100100 .. 0 ..... 000 ... ..... 1 .... @pd_pg_rn_rm 673757f9cffSRichard HendersonCMPGE_ppzz 00100100 .. 0 ..... 100 ... ..... 0 .... @pd_pg_rn_rm 674757f9cffSRichard HendersonCMPGT_ppzz 00100100 .. 0 ..... 100 ... ..... 1 .... @pd_pg_rn_rm 675757f9cffSRichard HendersonCMPEQ_ppzz 00100100 .. 0 ..... 101 ... ..... 0 .... @pd_pg_rn_rm 676757f9cffSRichard HendersonCMPNE_ppzz 00100100 .. 0 ..... 101 ... ..... 1 .... @pd_pg_rn_rm 677757f9cffSRichard Henderson 678757f9cffSRichard Henderson# SVE integer compare with wide elements 679757f9cffSRichard Henderson# Note these require esz != 3. 680757f9cffSRichard HendersonCMPEQ_ppzw 00100100 .. 0 ..... 001 ... ..... 0 .... @pd_pg_rn_rm 681757f9cffSRichard HendersonCMPNE_ppzw 00100100 .. 0 ..... 001 ... ..... 1 .... @pd_pg_rn_rm 682757f9cffSRichard HendersonCMPGE_ppzw 00100100 .. 0 ..... 010 ... ..... 0 .... @pd_pg_rn_rm 683757f9cffSRichard HendersonCMPGT_ppzw 00100100 .. 0 ..... 010 ... ..... 1 .... @pd_pg_rn_rm 684757f9cffSRichard HendersonCMPLT_ppzw 00100100 .. 0 ..... 011 ... ..... 0 .... @pd_pg_rn_rm 685757f9cffSRichard HendersonCMPLE_ppzw 00100100 .. 0 ..... 011 ... ..... 1 .... @pd_pg_rn_rm 686757f9cffSRichard HendersonCMPHS_ppzw 00100100 .. 0 ..... 110 ... ..... 0 .... @pd_pg_rn_rm 687757f9cffSRichard HendersonCMPHI_ppzw 00100100 .. 0 ..... 110 ... ..... 1 .... @pd_pg_rn_rm 688757f9cffSRichard HendersonCMPLO_ppzw 00100100 .. 0 ..... 111 ... ..... 0 .... @pd_pg_rn_rm 689757f9cffSRichard HendersonCMPLS_ppzw 00100100 .. 0 ..... 111 ... ..... 1 .... @pd_pg_rn_rm 690757f9cffSRichard Henderson 69138cadebaSRichard Henderson### SVE Integer Compare - Unsigned Immediate Group 69238cadebaSRichard Henderson 69338cadebaSRichard Henderson# SVE integer compare with unsigned immediate 69438cadebaSRichard HendersonCMPHS_ppzi 00100100 .. 1 ....... 0 ... ..... 0 .... @pd_pg_rn_i7 69538cadebaSRichard HendersonCMPHI_ppzi 00100100 .. 1 ....... 0 ... ..... 1 .... @pd_pg_rn_i7 69638cadebaSRichard HendersonCMPLO_ppzi 00100100 .. 1 ....... 1 ... ..... 0 .... @pd_pg_rn_i7 69738cadebaSRichard HendersonCMPLS_ppzi 00100100 .. 1 ....... 1 ... ..... 1 .... @pd_pg_rn_i7 69838cadebaSRichard Henderson 69938cadebaSRichard Henderson### SVE Integer Compare - Signed Immediate Group 70038cadebaSRichard Henderson 70138cadebaSRichard Henderson# SVE integer compare with signed immediate 70238cadebaSRichard HendersonCMPGE_ppzi 00100101 .. 0 ..... 000 ... ..... 0 .... @pd_pg_rn_i5 70338cadebaSRichard HendersonCMPGT_ppzi 00100101 .. 0 ..... 000 ... ..... 1 .... @pd_pg_rn_i5 70438cadebaSRichard HendersonCMPLT_ppzi 00100101 .. 0 ..... 001 ... ..... 0 .... @pd_pg_rn_i5 70538cadebaSRichard HendersonCMPLE_ppzi 00100101 .. 0 ..... 001 ... ..... 1 .... @pd_pg_rn_i5 70638cadebaSRichard HendersonCMPEQ_ppzi 00100101 .. 0 ..... 100 ... ..... 0 .... @pd_pg_rn_i5 70738cadebaSRichard HendersonCMPNE_ppzi 00100101 .. 0 ..... 100 ... ..... 1 .... @pd_pg_rn_i5 70838cadebaSRichard Henderson 709e1fa1164SRichard Henderson### SVE Predicate Logical Operations Group 710e1fa1164SRichard Henderson 711516e246aSRichard Henderson# SVE predicate logical operations 712516e246aSRichard HendersonAND_pppp 00100101 0. 00 .... 01 .... 0 .... 0 .... @pd_pg_pn_pm_s 713516e246aSRichard HendersonBIC_pppp 00100101 0. 00 .... 01 .... 0 .... 1 .... @pd_pg_pn_pm_s 714516e246aSRichard HendersonEOR_pppp 00100101 0. 00 .... 01 .... 1 .... 0 .... @pd_pg_pn_pm_s 715516e246aSRichard HendersonSEL_pppp 00100101 0. 00 .... 01 .... 1 .... 1 .... @pd_pg_pn_pm_s 716516e246aSRichard HendersonORR_pppp 00100101 1. 00 .... 01 .... 0 .... 0 .... @pd_pg_pn_pm_s 717516e246aSRichard HendersonORN_pppp 00100101 1. 00 .... 01 .... 0 .... 1 .... @pd_pg_pn_pm_s 718516e246aSRichard HendersonNOR_pppp 00100101 1. 00 .... 01 .... 1 .... 0 .... @pd_pg_pn_pm_s 719516e246aSRichard HendersonNAND_pppp 00100101 1. 00 .... 01 .... 1 .... 1 .... @pd_pg_pn_pm_s 720516e246aSRichard Henderson 7219e18d7a6SRichard Henderson### SVE Predicate Misc Group 7229e18d7a6SRichard Henderson 7239e18d7a6SRichard Henderson# SVE predicate test 7249e18d7a6SRichard HendersonPTEST 00100101 01 010000 11 pg:4 0 rn:4 0 0000 7259e18d7a6SRichard Henderson 726028e2a7bSRichard Henderson# SVE predicate initialize 727028e2a7bSRichard HendersonPTRUE 00100101 esz:2 01100 s:1 111000 pat:5 0 rd:4 728028e2a7bSRichard Henderson 729028e2a7bSRichard Henderson# SVE initialize FFR 730028e2a7bSRichard HendersonSETFFR 00100101 0010 1100 1001 0000 0000 0000 731028e2a7bSRichard Henderson 732028e2a7bSRichard Henderson# SVE zero predicate register 733028e2a7bSRichard HendersonPFALSE 00100101 0001 1000 1110 0100 0000 rd:4 734028e2a7bSRichard Henderson 735028e2a7bSRichard Henderson# SVE predicate read from FFR (predicated) 736028e2a7bSRichard HendersonRDFFR_p 00100101 0 s:1 0110001111000 pg:4 0 rd:4 737028e2a7bSRichard Henderson 738028e2a7bSRichard Henderson# SVE predicate read from FFR (unpredicated) 739028e2a7bSRichard HendersonRDFFR 00100101 0001 1001 1111 0000 0000 rd:4 740028e2a7bSRichard Henderson 741028e2a7bSRichard Henderson# SVE FFR write from predicate (WRFFR) 742028e2a7bSRichard HendersonWRFFR 00100101 0010 1000 1001 000 rn:4 00000 743028e2a7bSRichard Henderson 744028e2a7bSRichard Henderson# SVE predicate first active 745028e2a7bSRichard HendersonPFIRST 00100101 01 011 000 11000 00 .... 0 .... @pd_pn_e0 746028e2a7bSRichard Henderson 747028e2a7bSRichard Henderson# SVE predicate next active 748028e2a7bSRichard HendersonPNEXT 00100101 .. 011 001 11000 10 .... 0 .... @pd_pn 749028e2a7bSRichard Henderson 75035da316fSRichard Henderson### SVE Partition Break Group 75135da316fSRichard Henderson 75235da316fSRichard Henderson# SVE propagate break from previous partition 75335da316fSRichard HendersonBRKPA 00100101 0. 00 .... 11 .... 0 .... 0 .... @pd_pg_pn_pm_s 75435da316fSRichard HendersonBRKPB 00100101 0. 00 .... 11 .... 0 .... 1 .... @pd_pg_pn_pm_s 75535da316fSRichard Henderson 75635da316fSRichard Henderson# SVE partition break condition 75735da316fSRichard HendersonBRKA_z 00100101 0. 01000001 .... 0 .... 0 .... @pd_pg_pn_s 75835da316fSRichard HendersonBRKB_z 00100101 1. 01000001 .... 0 .... 0 .... @pd_pg_pn_s 759407e6ce7SRichard HendersonBRKA_m 00100101 00 01000001 .... 0 .... 1 .... @pd_pg_pn_s0 760407e6ce7SRichard HendersonBRKB_m 00100101 10 01000001 .... 0 .... 1 .... @pd_pg_pn_s0 76135da316fSRichard Henderson 76235da316fSRichard Henderson# SVE propagate break to next partition 76335da316fSRichard HendersonBRKN 00100101 0. 01100001 .... 0 .... 0 .... @pd_pg_pn_s 76435da316fSRichard Henderson 7659ee3a611SRichard Henderson### SVE Predicate Count Group 7669ee3a611SRichard Henderson 7679ee3a611SRichard Henderson# SVE predicate count 7689ee3a611SRichard HendersonCNTP 00100101 .. 100 000 10 .... 0 .... ..... @rd_pg4_pn 7699ee3a611SRichard Henderson 7709ee3a611SRichard Henderson# SVE inc/dec register by predicate count 7719ee3a611SRichard HendersonINCDECP_r 00100101 .. 10110 d:1 10001 00 .... ..... @incdec_pred u=1 7729ee3a611SRichard Henderson 7739ee3a611SRichard Henderson# SVE inc/dec vector by predicate count 7749ee3a611SRichard HendersonINCDECP_z 00100101 .. 10110 d:1 10000 00 .... ..... @incdec2_pred u=1 7759ee3a611SRichard Henderson 7769ee3a611SRichard Henderson# SVE saturating inc/dec register by predicate count 7779ee3a611SRichard HendersonSINCDECP_r_32 00100101 .. 1010 d:1 u:1 10001 00 .... ..... @incdec_pred 7789ee3a611SRichard HendersonSINCDECP_r_64 00100101 .. 1010 d:1 u:1 10001 10 .... ..... @incdec_pred 7799ee3a611SRichard Henderson 7809ee3a611SRichard Henderson# SVE saturating inc/dec vector by predicate count 7819ee3a611SRichard HendersonSINCDECP_z 00100101 .. 1010 d:1 u:1 10000 00 .... ..... @incdec2_pred 7829ee3a611SRichard Henderson 783caf1cefcSRichard Henderson### SVE Integer Compare - Scalars Group 784caf1cefcSRichard Henderson 785caf1cefcSRichard Henderson# SVE conditionally terminate scalars 786caf1cefcSRichard HendersonCTERM 00100101 1 sf:1 1 rm:5 001000 rn:5 ne:1 0000 787caf1cefcSRichard Henderson 788caf1cefcSRichard Henderson# SVE integer compare scalar count and limit 78934688dbcSRichard HendersonWHILE 00100101 esz:2 1 rm:5 000 sf:1 u:1 lt:1 rn:5 eq:1 rd:4 790caf1cefcSRichard Henderson 79114f6dad1SRichard Henderson# SVE2 pointer conflict compare 79214f6dad1SRichard HendersonWHILE_ptr 00100101 esz:2 1 rm:5 001 100 rn:5 rw:1 rd:4 79314f6dad1SRichard Henderson 794ed491961SRichard Henderson### SVE Integer Wide Immediate - Unpredicated Group 795ed491961SRichard Henderson 796ed491961SRichard Henderson# SVE broadcast floating-point immediate (unpredicated) 797ed491961SRichard HendersonFDUP 00100101 esz:2 111 00 1110 imm:8 rd:5 798ed491961SRichard Henderson 799ed491961SRichard Henderson# SVE broadcast integer immediate (unpredicated) 800c437c59bSRichard Henderson{ 801c437c59bSRichard Henderson INVALID 00100101 00 111 00 011 1 -------- ----- 802ed491961SRichard Henderson DUP_i 00100101 esz:2 111 00 011 . ........ rd:5 imm=%sh8_i8s 803c437c59bSRichard Henderson} 804ed491961SRichard Henderson 8056e6a157dSRichard Henderson# SVE integer add/subtract immediate (unpredicated) 8063a405180SRichard Henderson{ 8073a405180SRichard Henderson INVALID 00100101 00 100 000 11 1 -------- ----- 8086e6a157dSRichard Henderson ADD_zzi 00100101 .. 100 000 11 . ........ ..... @rdn_sh_i8u 8093a405180SRichard Henderson} 8103a405180SRichard Henderson{ 8113a405180SRichard Henderson INVALID 00100101 00 100 001 11 1 -------- ----- 8126e6a157dSRichard Henderson SUB_zzi 00100101 .. 100 001 11 . ........ ..... @rdn_sh_i8u 8133a405180SRichard Henderson} 8143a405180SRichard Henderson{ 8153a405180SRichard Henderson INVALID 00100101 00 100 011 11 1 -------- ----- 8166e6a157dSRichard Henderson SUBR_zzi 00100101 .. 100 011 11 . ........ ..... @rdn_sh_i8u 8173a405180SRichard Henderson} 8183a405180SRichard Henderson{ 8193a405180SRichard Henderson INVALID 00100101 00 100 100 11 1 -------- ----- 8206e6a157dSRichard Henderson SQADD_zzi 00100101 .. 100 100 11 . ........ ..... @rdn_sh_i8u 8213a405180SRichard Henderson} 8223a405180SRichard Henderson{ 8233a405180SRichard Henderson INVALID 00100101 00 100 101 11 1 -------- ----- 8246e6a157dSRichard Henderson UQADD_zzi 00100101 .. 100 101 11 . ........ ..... @rdn_sh_i8u 8253a405180SRichard Henderson} 8263a405180SRichard Henderson{ 8273a405180SRichard Henderson INVALID 00100101 00 100 110 11 1 -------- ----- 8286e6a157dSRichard Henderson SQSUB_zzi 00100101 .. 100 110 11 . ........ ..... @rdn_sh_i8u 8293a405180SRichard Henderson} 8303a405180SRichard Henderson{ 8313a405180SRichard Henderson INVALID 00100101 00 100 111 11 1 -------- ----- 8326e6a157dSRichard Henderson UQSUB_zzi 00100101 .. 100 111 11 . ........ ..... @rdn_sh_i8u 8333a405180SRichard Henderson} 8346e6a157dSRichard Henderson 8356e6a157dSRichard Henderson# SVE integer min/max immediate (unpredicated) 8366e6a157dSRichard HendersonSMAX_zzi 00100101 .. 101 000 110 ........ ..... @rdn_i8s 8376e6a157dSRichard HendersonUMAX_zzi 00100101 .. 101 001 110 ........ ..... @rdn_i8u 8386e6a157dSRichard HendersonSMIN_zzi 00100101 .. 101 010 110 ........ ..... @rdn_i8s 8396e6a157dSRichard HendersonUMIN_zzi 00100101 .. 101 011 110 ........ ..... @rdn_i8u 8406e6a157dSRichard Henderson 8416e6a157dSRichard Henderson# SVE integer multiply immediate (unpredicated) 8426e6a157dSRichard HendersonMUL_zzi 00100101 .. 110 000 110 ........ ..... @rdn_i8s 8436e6a157dSRichard Henderson 844d730ecaaSRichard Henderson# SVE integer dot product (unpredicated) 845bc2bd697SRichard HendersonDOT_zzzz 01000100 1 sz:1 0 rm:5 00000 u:1 rn:5 rd:5 \ 846bc2bd697SRichard Henderson ra=%reg_movprfx 847d730ecaaSRichard Henderson 84821068f39SRichard Henderson# SVE2 complex dot product (vectors) 84921068f39SRichard HendersonCDOT_zzzz 01000100 esz:2 0 rm:5 0001 rot:2 rn:5 rd:5 ra=%reg_movprfx 85021068f39SRichard Henderson 851814d4c52SRichard Henderson#### SVE Multiply - Indexed 852814d4c52SRichard Henderson 85316fcfdc7SRichard Henderson# SVE integer dot product (indexed) 8540a82d963SRichard HendersonSDOT_zzxw_s 01000100 10 1 ..... 000000 ..... ..... @rrxr_2 esz=2 8550a82d963SRichard HendersonSDOT_zzxw_d 01000100 11 1 ..... 000000 ..... ..... @rrxr_1 esz=3 8560a82d963SRichard HendersonUDOT_zzxw_s 01000100 10 1 ..... 000001 ..... ..... @rrxr_2 esz=2 8570a82d963SRichard HendersonUDOT_zzxw_d 01000100 11 1 ..... 000001 ..... ..... @rrxr_1 esz=3 85816fcfdc7SRichard Henderson 8598a02aac7SRichard Henderson# SVE2 integer multiply-add (indexed) 8608a02aac7SRichard HendersonMLA_zzxz_h 01000100 0. 1 ..... 000010 ..... ..... @rrxr_3 esz=1 8618a02aac7SRichard HendersonMLA_zzxz_s 01000100 10 1 ..... 000010 ..... ..... @rrxr_2 esz=2 8628a02aac7SRichard HendersonMLA_zzxz_d 01000100 11 1 ..... 000010 ..... ..... @rrxr_1 esz=3 8638a02aac7SRichard HendersonMLS_zzxz_h 01000100 0. 1 ..... 000011 ..... ..... @rrxr_3 esz=1 8648a02aac7SRichard HendersonMLS_zzxz_s 01000100 10 1 ..... 000011 ..... ..... @rrxr_2 esz=2 8658a02aac7SRichard HendersonMLS_zzxz_d 01000100 11 1 ..... 000011 ..... ..... @rrxr_1 esz=3 8668a02aac7SRichard Henderson 86775d6d5fcSRichard Henderson# SVE2 saturating multiply-add high (indexed) 86875d6d5fcSRichard HendersonSQRDMLAH_zzxz_h 01000100 0. 1 ..... 000100 ..... ..... @rrxr_3 esz=1 86975d6d5fcSRichard HendersonSQRDMLAH_zzxz_s 01000100 10 1 ..... 000100 ..... ..... @rrxr_2 esz=2 87075d6d5fcSRichard HendersonSQRDMLAH_zzxz_d 01000100 11 1 ..... 000100 ..... ..... @rrxr_1 esz=3 87175d6d5fcSRichard HendersonSQRDMLSH_zzxz_h 01000100 0. 1 ..... 000101 ..... ..... @rrxr_3 esz=1 87275d6d5fcSRichard HendersonSQRDMLSH_zzxz_s 01000100 10 1 ..... 000101 ..... ..... @rrxr_2 esz=2 87375d6d5fcSRichard HendersonSQRDMLSH_zzxz_d 01000100 11 1 ..... 000101 ..... ..... @rrxr_1 esz=3 87475d6d5fcSRichard Henderson 8752867039aSRichard Henderson# SVE mixed sign dot product (indexed) 8762867039aSRichard HendersonUSDOT_zzxw_s 01000100 10 1 ..... 000110 ..... ..... @rrxr_2 esz=2 8772867039aSRichard HendersonSUDOT_zzxw_s 01000100 10 1 ..... 000111 ..... ..... @rrxr_2 esz=2 8782867039aSRichard Henderson 879c5c455d7SRichard Henderson# SVE2 saturating multiply-add (indexed) 880c5c455d7SRichard HendersonSQDMLALB_zzxw_s 01000100 10 1 ..... 0010.0 ..... ..... @rrxr_3a esz=2 881c5c455d7SRichard HendersonSQDMLALB_zzxw_d 01000100 11 1 ..... 0010.0 ..... ..... @rrxr_2a esz=3 882c5c455d7SRichard HendersonSQDMLALT_zzxw_s 01000100 10 1 ..... 0010.1 ..... ..... @rrxr_3a esz=2 883c5c455d7SRichard HendersonSQDMLALT_zzxw_d 01000100 11 1 ..... 0010.1 ..... ..... @rrxr_2a esz=3 884c5c455d7SRichard HendersonSQDMLSLB_zzxw_s 01000100 10 1 ..... 0011.0 ..... ..... @rrxr_3a esz=2 885c5c455d7SRichard HendersonSQDMLSLB_zzxw_d 01000100 11 1 ..... 0011.0 ..... ..... @rrxr_2a esz=3 886c5c455d7SRichard HendersonSQDMLSLT_zzxw_s 01000100 10 1 ..... 0011.1 ..... ..... @rrxr_3a esz=2 887c5c455d7SRichard HendersonSQDMLSLT_zzxw_d 01000100 11 1 ..... 0011.1 ..... ..... @rrxr_2a esz=3 888c5c455d7SRichard Henderson 88921068f39SRichard Henderson# SVE2 complex integer dot product (indexed) 89021068f39SRichard HendersonCDOT_zzxw_s 01000100 10 1 index:2 rm:3 0100 rot:2 rn:5 rd:5 \ 89121068f39SRichard Henderson ra=%reg_movprfx 89221068f39SRichard HendersonCDOT_zzxw_d 01000100 11 1 index:1 rm:4 0100 rot:2 rn:5 rd:5 \ 89321068f39SRichard Henderson ra=%reg_movprfx 89421068f39SRichard Henderson 8953b787ed8SRichard Henderson# SVE2 complex integer multiply-add (indexed) 8963b787ed8SRichard HendersonCMLA_zzxz_h 01000100 10 1 index:2 rm:3 0110 rot:2 rn:5 rd:5 \ 8973b787ed8SRichard Henderson ra=%reg_movprfx 8983b787ed8SRichard HendersonCMLA_zzxz_s 01000100 11 1 index:1 rm:4 0110 rot:2 rn:5 rd:5 \ 8993b787ed8SRichard Henderson ra=%reg_movprfx 9003b787ed8SRichard Henderson 9013b787ed8SRichard Henderson# SVE2 complex saturating integer multiply-add (indexed) 9023b787ed8SRichard HendersonSQRDCMLAH_zzxz_h 01000100 10 1 index:2 rm:3 0111 rot:2 rn:5 rd:5 \ 9033b787ed8SRichard Henderson ra=%reg_movprfx 9043b787ed8SRichard HendersonSQRDCMLAH_zzxz_s 01000100 11 1 index:1 rm:4 0111 rot:2 rn:5 rd:5 \ 9053b787ed8SRichard Henderson ra=%reg_movprfx 9063b787ed8SRichard Henderson 907d462469fSRichard Henderson# SVE2 multiply-add long (indexed) 908d462469fSRichard HendersonSMLALB_zzxw_s 01000100 10 1 ..... 1000.0 ..... ..... @rrxr_3a esz=2 909d462469fSRichard HendersonSMLALB_zzxw_d 01000100 11 1 ..... 1000.0 ..... ..... @rrxr_2a esz=3 910d462469fSRichard HendersonSMLALT_zzxw_s 01000100 10 1 ..... 1000.1 ..... ..... @rrxr_3a esz=2 911d462469fSRichard HendersonSMLALT_zzxw_d 01000100 11 1 ..... 1000.1 ..... ..... @rrxr_2a esz=3 912d462469fSRichard HendersonUMLALB_zzxw_s 01000100 10 1 ..... 1001.0 ..... ..... @rrxr_3a esz=2 913d462469fSRichard HendersonUMLALB_zzxw_d 01000100 11 1 ..... 1001.0 ..... ..... @rrxr_2a esz=3 914d462469fSRichard HendersonUMLALT_zzxw_s 01000100 10 1 ..... 1001.1 ..... ..... @rrxr_3a esz=2 915d462469fSRichard HendersonUMLALT_zzxw_d 01000100 11 1 ..... 1001.1 ..... ..... @rrxr_2a esz=3 916d462469fSRichard HendersonSMLSLB_zzxw_s 01000100 10 1 ..... 1010.0 ..... ..... @rrxr_3a esz=2 917d462469fSRichard HendersonSMLSLB_zzxw_d 01000100 11 1 ..... 1010.0 ..... ..... @rrxr_2a esz=3 918d462469fSRichard HendersonSMLSLT_zzxw_s 01000100 10 1 ..... 1010.1 ..... ..... @rrxr_3a esz=2 919d462469fSRichard HendersonSMLSLT_zzxw_d 01000100 11 1 ..... 1010.1 ..... ..... @rrxr_2a esz=3 920d462469fSRichard HendersonUMLSLB_zzxw_s 01000100 10 1 ..... 1011.0 ..... ..... @rrxr_3a esz=2 921d462469fSRichard HendersonUMLSLB_zzxw_d 01000100 11 1 ..... 1011.0 ..... ..... @rrxr_2a esz=3 922d462469fSRichard HendersonUMLSLT_zzxw_s 01000100 10 1 ..... 1011.1 ..... ..... @rrxr_3a esz=2 923d462469fSRichard HendersonUMLSLT_zzxw_d 01000100 11 1 ..... 1011.1 ..... ..... @rrxr_2a esz=3 924d462469fSRichard Henderson 925d3949c4cSRichard Henderson# SVE2 integer multiply long (indexed) 926d3949c4cSRichard HendersonSMULLB_zzx_s 01000100 10 1 ..... 1100.0 ..... ..... @rrx_3a esz=2 927d3949c4cSRichard HendersonSMULLB_zzx_d 01000100 11 1 ..... 1100.0 ..... ..... @rrx_2a esz=3 928d3949c4cSRichard HendersonSMULLT_zzx_s 01000100 10 1 ..... 1100.1 ..... ..... @rrx_3a esz=2 929d3949c4cSRichard HendersonSMULLT_zzx_d 01000100 11 1 ..... 1100.1 ..... ..... @rrx_2a esz=3 930d3949c4cSRichard HendersonUMULLB_zzx_s 01000100 10 1 ..... 1101.0 ..... ..... @rrx_3a esz=2 931d3949c4cSRichard HendersonUMULLB_zzx_d 01000100 11 1 ..... 1101.0 ..... ..... @rrx_2a esz=3 932d3949c4cSRichard HendersonUMULLT_zzx_s 01000100 10 1 ..... 1101.1 ..... ..... @rrx_3a esz=2 933d3949c4cSRichard HendersonUMULLT_zzx_d 01000100 11 1 ..... 1101.1 ..... ..... @rrx_2a esz=3 934d3949c4cSRichard Henderson 935b95f5eebSRichard Henderson# SVE2 saturating multiply (indexed) 936b95f5eebSRichard HendersonSQDMULLB_zzx_s 01000100 10 1 ..... 1110.0 ..... ..... @rrx_3a esz=2 937b95f5eebSRichard HendersonSQDMULLB_zzx_d 01000100 11 1 ..... 1110.0 ..... ..... @rrx_2a esz=3 938b95f5eebSRichard HendersonSQDMULLT_zzx_s 01000100 10 1 ..... 1110.1 ..... ..... @rrx_3a esz=2 939b95f5eebSRichard HendersonSQDMULLT_zzx_d 01000100 11 1 ..... 1110.1 ..... ..... @rrx_2a esz=3 940b95f5eebSRichard Henderson 9411aee2d70SRichard Henderson# SVE2 saturating multiply high (indexed) 9421aee2d70SRichard HendersonSQDMULH_zzx_h 01000100 0. 1 ..... 111100 ..... ..... @rrx_3 esz=1 9431aee2d70SRichard HendersonSQDMULH_zzx_s 01000100 10 1 ..... 111100 ..... ..... @rrx_2 esz=2 9441aee2d70SRichard HendersonSQDMULH_zzx_d 01000100 11 1 ..... 111100 ..... ..... @rrx_1 esz=3 9451aee2d70SRichard HendersonSQRDMULH_zzx_h 01000100 0. 1 ..... 111101 ..... ..... @rrx_3 esz=1 9461aee2d70SRichard HendersonSQRDMULH_zzx_s 01000100 10 1 ..... 111101 ..... ..... @rrx_2 esz=2 9471aee2d70SRichard HendersonSQRDMULH_zzx_d 01000100 11 1 ..... 111101 ..... ..... @rrx_1 esz=3 9481aee2d70SRichard Henderson 949814d4c52SRichard Henderson# SVE2 integer multiply (indexed) 950814d4c52SRichard HendersonMUL_zzx_h 01000100 0. 1 ..... 111110 ..... ..... @rrx_3 esz=1 951814d4c52SRichard HendersonMUL_zzx_s 01000100 10 1 ..... 111110 ..... ..... @rrx_2 esz=2 952814d4c52SRichard HendersonMUL_zzx_d 01000100 11 1 ..... 111110 ..... ..... @rrx_1 esz=3 953814d4c52SRichard Henderson 95476a9d9cdSRichard Henderson# SVE floating-point complex add (predicated) 95576a9d9cdSRichard HendersonFCADD 01100100 esz:2 00000 rot:1 100 pg:3 rm:5 rd:5 \ 95676a9d9cdSRichard Henderson rn=%reg_movprfx 95776a9d9cdSRichard Henderson 95805f48babSRichard Henderson# SVE floating-point complex multiply-add (predicated) 95905f48babSRichard HendersonFCMLA_zpzzz 01100100 esz:2 0 rm:5 0 rot:2 pg:3 rn:5 rd:5 \ 96005f48babSRichard Henderson ra=%reg_movprfx 96105f48babSRichard Henderson 96218fc2405SRichard Henderson# SVE floating-point complex multiply-add (indexed) 96318fc2405SRichard HendersonFCMLA_zzxz 01100100 10 1 index:2 rm:3 0001 rot:2 rn:5 rd:5 \ 96418fc2405SRichard Henderson ra=%reg_movprfx esz=1 96518fc2405SRichard HendersonFCMLA_zzxz 01100100 11 1 index:1 rm:4 0001 rot:2 rn:5 rd:5 \ 96618fc2405SRichard Henderson ra=%reg_movprfx esz=2 96718fc2405SRichard Henderson 968ca40a6e6SRichard Henderson### SVE FP Multiply-Add Indexed Group 969ca40a6e6SRichard Henderson 970ca40a6e6SRichard Henderson# SVE floating-point multiply-add (indexed) 9710a82d963SRichard HendersonFMLA_zzxz 01100100 0. 1 ..... 000000 ..... ..... @rrxr_3 esz=1 9720a82d963SRichard HendersonFMLA_zzxz 01100100 10 1 ..... 000000 ..... ..... @rrxr_2 esz=2 9730a82d963SRichard HendersonFMLA_zzxz 01100100 11 1 ..... 000000 ..... ..... @rrxr_1 esz=3 9740a82d963SRichard HendersonFMLS_zzxz 01100100 0. 1 ..... 000001 ..... ..... @rrxr_3 esz=1 9750a82d963SRichard HendersonFMLS_zzxz 01100100 10 1 ..... 000001 ..... ..... @rrxr_2 esz=2 9760a82d963SRichard HendersonFMLS_zzxz 01100100 11 1 ..... 000001 ..... ..... @rrxr_1 esz=3 977ca40a6e6SRichard Henderson 978ca40a6e6SRichard Henderson### SVE FP Multiply Indexed Group 979ca40a6e6SRichard Henderson 980ca40a6e6SRichard Henderson# SVE floating-point multiply (indexed) 9811c737d9cSRichard HendersonFMUL_zzx 01100100 0. 1 ..... 001000 ..... ..... @rrx_3 esz=1 9821c737d9cSRichard HendersonFMUL_zzx 01100100 10 1 ..... 001000 ..... ..... @rrx_2 esz=2 9831c737d9cSRichard HendersonFMUL_zzx 01100100 11 1 ..... 001000 ..... ..... @rrx_1 esz=3 984ca40a6e6SRichard Henderson 98523fbe79fSRichard Henderson### SVE FP Fast Reduction Group 98623fbe79fSRichard Henderson 98723fbe79fSRichard HendersonFADDV 01100101 .. 000 000 001 ... ..... ..... @rd_pg_rn 98823fbe79fSRichard HendersonFMAXNMV 01100101 .. 000 100 001 ... ..... ..... @rd_pg_rn 98923fbe79fSRichard HendersonFMINNMV 01100101 .. 000 101 001 ... ..... ..... @rd_pg_rn 99023fbe79fSRichard HendersonFMAXV 01100101 .. 000 110 001 ... ..... ..... @rd_pg_rn 99123fbe79fSRichard HendersonFMINV 01100101 .. 000 111 001 ... ..... ..... @rd_pg_rn 99223fbe79fSRichard Henderson 9933887c038SRichard Henderson## SVE Floating Point Unary Operations - Unpredicated Group 9943887c038SRichard Henderson 9953887c038SRichard HendersonFRECPE 01100101 .. 001 110 001100 ..... ..... @rd_rn 9963887c038SRichard HendersonFRSQRTE 01100101 .. 001 111 001100 ..... ..... @rd_rn 9973887c038SRichard Henderson 9984d2e2a03SRichard Henderson### SVE FP Compare with Zero Group 9994d2e2a03SRichard Henderson 10004d2e2a03SRichard HendersonFCMGE_ppz0 01100101 .. 0100 00 001 ... ..... 0 .... @pd_pg_rn 10014d2e2a03SRichard HendersonFCMGT_ppz0 01100101 .. 0100 00 001 ... ..... 1 .... @pd_pg_rn 10024d2e2a03SRichard HendersonFCMLT_ppz0 01100101 .. 0100 01 001 ... ..... 0 .... @pd_pg_rn 10034d2e2a03SRichard HendersonFCMLE_ppz0 01100101 .. 0100 01 001 ... ..... 1 .... @pd_pg_rn 10044d2e2a03SRichard HendersonFCMEQ_ppz0 01100101 .. 0100 10 001 ... ..... 0 .... @pd_pg_rn 10054d2e2a03SRichard HendersonFCMNE_ppz0 01100101 .. 0100 11 001 ... ..... 0 .... @pd_pg_rn 10064d2e2a03SRichard Henderson 10077f9ddf64SRichard Henderson### SVE FP Accumulating Reduction Group 10087f9ddf64SRichard Henderson 10097f9ddf64SRichard Henderson# SVE floating-point serial reduction (predicated) 10107f9ddf64SRichard HendersonFADDA 01100101 .. 011 000 001 ... ..... ..... @rdn_pg_rm 10117f9ddf64SRichard Henderson 101229b80469SRichard Henderson### SVE Floating Point Arithmetic - Unpredicated Group 101329b80469SRichard Henderson 101429b80469SRichard Henderson# SVE floating-point arithmetic (unpredicated) 101529b80469SRichard HendersonFADD_zzz 01100101 .. 0 ..... 000 000 ..... ..... @rd_rn_rm 101629b80469SRichard HendersonFSUB_zzz 01100101 .. 0 ..... 000 001 ..... ..... @rd_rn_rm 101729b80469SRichard HendersonFMUL_zzz 01100101 .. 0 ..... 000 010 ..... ..... @rd_rn_rm 101829b80469SRichard HendersonFTSMUL 01100101 .. 0 ..... 000 011 ..... ..... @rd_rn_rm 101929b80469SRichard HendersonFRECPS 01100101 .. 0 ..... 000 110 ..... ..... @rd_rn_rm 102029b80469SRichard HendersonFRSQRTS 01100101 .. 0 ..... 000 111 ..... ..... @rd_rn_rm 102129b80469SRichard Henderson 1022ec3b87c2SRichard Henderson### SVE FP Arithmetic Predicated Group 1023ec3b87c2SRichard Henderson 1024ec3b87c2SRichard Henderson# SVE floating-point arithmetic (predicated) 1025ec3b87c2SRichard HendersonFADD_zpzz 01100101 .. 00 0000 100 ... ..... ..... @rdn_pg_rm 1026ec3b87c2SRichard HendersonFSUB_zpzz 01100101 .. 00 0001 100 ... ..... ..... @rdn_pg_rm 1027ec3b87c2SRichard HendersonFMUL_zpzz 01100101 .. 00 0010 100 ... ..... ..... @rdn_pg_rm 1028ec3b87c2SRichard HendersonFSUB_zpzz 01100101 .. 00 0011 100 ... ..... ..... @rdm_pg_rn # FSUBR 1029ec3b87c2SRichard HendersonFMAXNM_zpzz 01100101 .. 00 0100 100 ... ..... ..... @rdn_pg_rm 1030ec3b87c2SRichard HendersonFMINNM_zpzz 01100101 .. 00 0101 100 ... ..... ..... @rdn_pg_rm 1031ec3b87c2SRichard HendersonFMAX_zpzz 01100101 .. 00 0110 100 ... ..... ..... @rdn_pg_rm 1032ec3b87c2SRichard HendersonFMIN_zpzz 01100101 .. 00 0111 100 ... ..... ..... @rdn_pg_rm 1033ec3b87c2SRichard HendersonFABD 01100101 .. 00 1000 100 ... ..... ..... @rdn_pg_rm 1034ec3b87c2SRichard HendersonFSCALE 01100101 .. 00 1001 100 ... ..... ..... @rdn_pg_rm 1035ec3b87c2SRichard HendersonFMULX 01100101 .. 00 1010 100 ... ..... ..... @rdn_pg_rm 1036ec3b87c2SRichard HendersonFDIV 01100101 .. 00 1100 100 ... ..... ..... @rdm_pg_rn # FDIVR 1037ec3b87c2SRichard HendersonFDIV 01100101 .. 00 1101 100 ... ..... ..... @rdn_pg_rm 1038ec3b87c2SRichard Henderson 1039cc48affeSRichard Henderson# SVE floating-point arithmetic with immediate (predicated) 1040cc48affeSRichard HendersonFADD_zpzi 01100101 .. 011 000 100 ... 0000 . ..... @rdn_i1 1041cc48affeSRichard HendersonFSUB_zpzi 01100101 .. 011 001 100 ... 0000 . ..... @rdn_i1 1042cc48affeSRichard HendersonFMUL_zpzi 01100101 .. 011 010 100 ... 0000 . ..... @rdn_i1 1043cc48affeSRichard HendersonFSUBR_zpzi 01100101 .. 011 011 100 ... 0000 . ..... @rdn_i1 1044cc48affeSRichard HendersonFMAXNM_zpzi 01100101 .. 011 100 100 ... 0000 . ..... @rdn_i1 1045cc48affeSRichard HendersonFMINNM_zpzi 01100101 .. 011 101 100 ... 0000 . ..... @rdn_i1 1046cc48affeSRichard HendersonFMAX_zpzi 01100101 .. 011 110 100 ... 0000 . ..... @rdn_i1 1047cc48affeSRichard HendersonFMIN_zpzi 01100101 .. 011 111 100 ... 0000 . ..... @rdn_i1 1048cc48affeSRichard Henderson 104967fcd9adSRichard Henderson# SVE floating-point trig multiply-add coefficient 105067fcd9adSRichard HendersonFTMAD 01100101 esz:2 010 imm:3 100000 rm:5 rd:5 rn=%reg_movprfx 105167fcd9adSRichard Henderson 10526ceabaadSRichard Henderson### SVE FP Multiply-Add Group 10536ceabaadSRichard Henderson 10546ceabaadSRichard Henderson# SVE floating-point multiply-accumulate writing addend 10556ceabaadSRichard HendersonFMLA_zpzzz 01100101 .. 1 ..... 000 ... ..... ..... @rda_pg_rn_rm 10566ceabaadSRichard HendersonFMLS_zpzzz 01100101 .. 1 ..... 001 ... ..... ..... @rda_pg_rn_rm 10576ceabaadSRichard HendersonFNMLA_zpzzz 01100101 .. 1 ..... 010 ... ..... ..... @rda_pg_rn_rm 10586ceabaadSRichard HendersonFNMLS_zpzzz 01100101 .. 1 ..... 011 ... ..... ..... @rda_pg_rn_rm 10596ceabaadSRichard Henderson 10606ceabaadSRichard Henderson# SVE floating-point multiply-accumulate writing multiplicand 10616ceabaadSRichard Henderson# Alter the operand extraction order and reuse the helpers from above. 10626ceabaadSRichard Henderson# FMAD, FMSB, FNMAD, FNMS 10636ceabaadSRichard HendersonFMLA_zpzzz 01100101 .. 1 ..... 100 ... ..... ..... @rdn_pg_rm_ra 10646ceabaadSRichard HendersonFMLS_zpzzz 01100101 .. 1 ..... 101 ... ..... ..... @rdn_pg_rm_ra 10656ceabaadSRichard HendersonFNMLA_zpzzz 01100101 .. 1 ..... 110 ... ..... ..... @rdn_pg_rm_ra 10666ceabaadSRichard HendersonFNMLS_zpzzz 01100101 .. 1 ..... 111 ... ..... ..... @rdn_pg_rm_ra 10676ceabaadSRichard Henderson 10688092c6a3SRichard Henderson### SVE FP Unary Operations Predicated Group 10698092c6a3SRichard Henderson 107046d33d1eSRichard Henderson# SVE floating-point convert precision 107146d33d1eSRichard HendersonFCVT_sh 01100101 10 0010 00 101 ... ..... ..... @rd_pg_rn_e0 107246d33d1eSRichard HendersonFCVT_hs 01100101 10 0010 01 101 ... ..... ..... @rd_pg_rn_e0 1073d29b17caSRichard HendersonBFCVT 01100101 10 0010 10 101 ... ..... ..... @rd_pg_rn_e0 107446d33d1eSRichard HendersonFCVT_dh 01100101 11 0010 00 101 ... ..... ..... @rd_pg_rn_e0 107546d33d1eSRichard HendersonFCVT_hd 01100101 11 0010 01 101 ... ..... ..... @rd_pg_rn_e0 107646d33d1eSRichard HendersonFCVT_ds 01100101 11 0010 10 101 ... ..... ..... @rd_pg_rn_e0 107746d33d1eSRichard HendersonFCVT_sd 01100101 11 0010 11 101 ... ..... ..... @rd_pg_rn_e0 107846d33d1eSRichard Henderson 1079df4de1afSRichard Henderson# SVE floating-point convert to integer 1080df4de1afSRichard HendersonFCVTZS_hh 01100101 01 011 01 0 101 ... ..... ..... @rd_pg_rn_e0 1081df4de1afSRichard HendersonFCVTZU_hh 01100101 01 011 01 1 101 ... ..... ..... @rd_pg_rn_e0 1082df4de1afSRichard HendersonFCVTZS_hs 01100101 01 011 10 0 101 ... ..... ..... @rd_pg_rn_e0 1083df4de1afSRichard HendersonFCVTZU_hs 01100101 01 011 10 1 101 ... ..... ..... @rd_pg_rn_e0 1084df4de1afSRichard HendersonFCVTZS_hd 01100101 01 011 11 0 101 ... ..... ..... @rd_pg_rn_e0 1085df4de1afSRichard HendersonFCVTZU_hd 01100101 01 011 11 1 101 ... ..... ..... @rd_pg_rn_e0 1086df4de1afSRichard HendersonFCVTZS_ss 01100101 10 011 10 0 101 ... ..... ..... @rd_pg_rn_e0 1087df4de1afSRichard HendersonFCVTZU_ss 01100101 10 011 10 1 101 ... ..... ..... @rd_pg_rn_e0 1088df4de1afSRichard HendersonFCVTZS_ds 01100101 11 011 00 0 101 ... ..... ..... @rd_pg_rn_e0 1089df4de1afSRichard HendersonFCVTZU_ds 01100101 11 011 00 1 101 ... ..... ..... @rd_pg_rn_e0 1090df4de1afSRichard HendersonFCVTZS_sd 01100101 11 011 10 0 101 ... ..... ..... @rd_pg_rn_e0 1091df4de1afSRichard HendersonFCVTZU_sd 01100101 11 011 10 1 101 ... ..... ..... @rd_pg_rn_e0 1092df4de1afSRichard HendersonFCVTZS_dd 01100101 11 011 11 0 101 ... ..... ..... @rd_pg_rn_e0 1093df4de1afSRichard HendersonFCVTZU_dd 01100101 11 011 11 1 101 ... ..... ..... @rd_pg_rn_e0 1094df4de1afSRichard Henderson 1095cda3c753SRichard Henderson# SVE floating-point round to integral value 1096cda3c753SRichard HendersonFRINTN 01100101 .. 000 000 101 ... ..... ..... @rd_pg_rn 1097cda3c753SRichard HendersonFRINTP 01100101 .. 000 001 101 ... ..... ..... @rd_pg_rn 1098cda3c753SRichard HendersonFRINTM 01100101 .. 000 010 101 ... ..... ..... @rd_pg_rn 1099cda3c753SRichard HendersonFRINTZ 01100101 .. 000 011 101 ... ..... ..... @rd_pg_rn 1100cda3c753SRichard HendersonFRINTA 01100101 .. 000 100 101 ... ..... ..... @rd_pg_rn 1101cda3c753SRichard HendersonFRINTX 01100101 .. 000 110 101 ... ..... ..... @rd_pg_rn 1102cda3c753SRichard HendersonFRINTI 01100101 .. 000 111 101 ... ..... ..... @rd_pg_rn 1103cda3c753SRichard Henderson 1104ec5b375bSRichard Henderson# SVE floating-point unary operations 1105ec5b375bSRichard HendersonFRECPX 01100101 .. 001 100 101 ... ..... ..... @rd_pg_rn 1106ec5b375bSRichard HendersonFSQRT 01100101 .. 001 101 101 ... ..... ..... @rd_pg_rn 1107ec5b375bSRichard Henderson 11088092c6a3SRichard Henderson# SVE integer convert to floating-point 11098092c6a3SRichard HendersonSCVTF_hh 01100101 01 010 01 0 101 ... ..... ..... @rd_pg_rn_e0 11108092c6a3SRichard HendersonSCVTF_sh 01100101 01 010 10 0 101 ... ..... ..... @rd_pg_rn_e0 11118092c6a3SRichard HendersonSCVTF_dh 01100101 01 010 11 0 101 ... ..... ..... @rd_pg_rn_e0 11128092c6a3SRichard HendersonSCVTF_ss 01100101 10 010 10 0 101 ... ..... ..... @rd_pg_rn_e0 11138092c6a3SRichard HendersonSCVTF_sd 01100101 11 010 00 0 101 ... ..... ..... @rd_pg_rn_e0 11148092c6a3SRichard HendersonSCVTF_ds 01100101 11 010 10 0 101 ... ..... ..... @rd_pg_rn_e0 11158092c6a3SRichard HendersonSCVTF_dd 01100101 11 010 11 0 101 ... ..... ..... @rd_pg_rn_e0 11168092c6a3SRichard Henderson 11178092c6a3SRichard HendersonUCVTF_hh 01100101 01 010 01 1 101 ... ..... ..... @rd_pg_rn_e0 11188092c6a3SRichard HendersonUCVTF_sh 01100101 01 010 10 1 101 ... ..... ..... @rd_pg_rn_e0 11198092c6a3SRichard HendersonUCVTF_dh 01100101 01 010 11 1 101 ... ..... ..... @rd_pg_rn_e0 11208092c6a3SRichard HendersonUCVTF_ss 01100101 10 010 10 1 101 ... ..... ..... @rd_pg_rn_e0 11218092c6a3SRichard HendersonUCVTF_sd 01100101 11 010 00 1 101 ... ..... ..... @rd_pg_rn_e0 11228092c6a3SRichard HendersonUCVTF_ds 01100101 11 010 10 1 101 ... ..... ..... @rd_pg_rn_e0 11238092c6a3SRichard HendersonUCVTF_dd 01100101 11 010 11 1 101 ... ..... ..... @rd_pg_rn_e0 11248092c6a3SRichard Henderson 1125d1822297SRichard Henderson### SVE Memory - 32-bit Gather and Unsized Contiguous Group 1126d1822297SRichard Henderson 1127d1822297SRichard Henderson# SVE load predicate register 1128d1822297SRichard HendersonLDR_pri 10000101 10 ...... 000 ... ..... 0 .... @pd_rn_i9 1129d1822297SRichard Henderson 1130d1822297SRichard Henderson# SVE load vector register 1131d1822297SRichard HendersonLDR_zri 10000101 10 ...... 010 ... ..... ..... @rd_rn_i9 1132c4e7c493SRichard Henderson 113368459864SRichard Henderson# SVE load and broadcast element 113468459864SRichard HendersonLD1R_zpri 1000010 .. 1 imm:6 1.. pg:3 rn:5 rd:5 \ 113568459864SRichard Henderson &rpri_load dtype=%dtype_23_13 nreg=0 113668459864SRichard Henderson 1137673e9fa6SRichard Henderson# SVE 32-bit gather load (scalar plus 32-bit unscaled offsets) 1138673e9fa6SRichard Henderson# SVE 32-bit gather load (scalar plus 32-bit scaled offsets) 1139673e9fa6SRichard HendersonLD1_zprz 1000010 00 .0 ..... 0.. ... ..... ..... \ 1140673e9fa6SRichard Henderson @rprr_g_load_xs_u esz=2 msz=0 scale=0 1141673e9fa6SRichard HendersonLD1_zprz 1000010 01 .. ..... 0.. ... ..... ..... \ 1142673e9fa6SRichard Henderson @rprr_g_load_xs_u_sc esz=2 msz=1 1143673e9fa6SRichard HendersonLD1_zprz 1000010 10 .. ..... 01. ... ..... ..... \ 1144673e9fa6SRichard Henderson @rprr_g_load_xs_sc esz=2 msz=2 u=1 1145673e9fa6SRichard Henderson 1146673e9fa6SRichard Henderson# SVE 32-bit gather load (vector plus immediate) 1147673e9fa6SRichard HendersonLD1_zpiz 1000010 .. 01 ..... 1.. ... ..... ..... \ 1148673e9fa6SRichard Henderson @rpri_g_load esz=2 1149673e9fa6SRichard Henderson 1150c4e7c493SRichard Henderson### SVE Memory Contiguous Load Group 1151c4e7c493SRichard Henderson 1152c4e7c493SRichard Henderson# SVE contiguous load (scalar plus scalar) 1153c4e7c493SRichard HendersonLD_zprr 1010010 .... ..... 010 ... ..... ..... @rprr_load_dt nreg=0 1154c4e7c493SRichard Henderson 1155e2654d75SRichard Henderson# SVE contiguous first-fault load (scalar plus scalar) 1156e2654d75SRichard HendersonLDFF1_zprr 1010010 .... ..... 011 ... ..... ..... @rprr_load_dt nreg=0 1157e2654d75SRichard Henderson 1158c4e7c493SRichard Henderson# SVE contiguous load (scalar plus immediate) 1159c4e7c493SRichard HendersonLD_zpri 1010010 .... 0.... 101 ... ..... ..... @rpri_load_dt nreg=0 1160c4e7c493SRichard Henderson 1161e2654d75SRichard Henderson# SVE contiguous non-fault load (scalar plus immediate) 1162e2654d75SRichard HendersonLDNF1_zpri 1010010 .... 1.... 101 ... ..... ..... @rpri_load_dt nreg=0 1163e2654d75SRichard Henderson 1164c4e7c493SRichard Henderson# SVE contiguous non-temporal load (scalar plus scalar) 1165c4e7c493SRichard Henderson# LDNT1B, LDNT1H, LDNT1W, LDNT1D 1166c4e7c493SRichard Henderson# SVE load multiple structures (scalar plus scalar) 1167c4e7c493SRichard Henderson# LD2B, LD2H, LD2W, LD2D; etc. 1168c4e7c493SRichard HendersonLD_zprr 1010010 .. nreg:2 ..... 110 ... ..... ..... @rprr_load_msz 1169c4e7c493SRichard Henderson 1170c4e7c493SRichard Henderson# SVE contiguous non-temporal load (scalar plus immediate) 1171c4e7c493SRichard Henderson# LDNT1B, LDNT1H, LDNT1W, LDNT1D 1172c4e7c493SRichard Henderson# SVE load multiple structures (scalar plus immediate) 1173c4e7c493SRichard Henderson# LD2B, LD2H, LD2W, LD2D; etc. 1174c4e7c493SRichard HendersonLD_zpri 1010010 .. nreg:2 0.... 111 ... ..... ..... @rpri_load_msz 11751a039c7eSRichard Henderson 117605abe304SRichard Henderson# SVE load and broadcast quadword (scalar plus scalar) 117705abe304SRichard HendersonLD1RQ_zprr 1010010 .. 00 ..... 000 ... ..... ..... \ 117805abe304SRichard Henderson @rprr_load_msz nreg=0 117912c563f6SRichard HendersonLD1RO_zprr 1010010 .. 01 ..... 000 ... ..... ..... \ 118012c563f6SRichard Henderson @rprr_load_msz nreg=0 118105abe304SRichard Henderson 118205abe304SRichard Henderson# SVE load and broadcast quadword (scalar plus immediate) 118305abe304SRichard Henderson# LD1RQB, LD1RQH, LD1RQS, LD1RQD 118405abe304SRichard HendersonLD1RQ_zpri 1010010 .. 00 0.... 001 ... ..... ..... \ 118505abe304SRichard Henderson @rpri_load_msz nreg=0 118612c563f6SRichard HendersonLD1RO_zpri 1010010 .. 01 0.... 001 ... ..... ..... \ 118712c563f6SRichard Henderson @rpri_load_msz nreg=0 118805abe304SRichard Henderson 1189dec6cf6bSRichard Henderson# SVE 32-bit gather prefetch (scalar plus 32-bit scaled offsets) 1190e1d1a643SRichard HendersonPRF_ns 1000010 00 -1 ----- 0-- --- ----- 0 ---- 1191dec6cf6bSRichard Henderson 1192dec6cf6bSRichard Henderson# SVE 32-bit gather prefetch (vector plus immediate) 1193e1d1a643SRichard HendersonPRF_ns 1000010 -- 00 ----- 111 --- ----- 0 ---- 1194dec6cf6bSRichard Henderson 1195dec6cf6bSRichard Henderson# SVE contiguous prefetch (scalar plus immediate) 1196dec6cf6bSRichard HendersonPRF 1000010 11 1- ----- 0-- --- ----- 0 ---- 1197dec6cf6bSRichard Henderson 1198dec6cf6bSRichard Henderson# SVE contiguous prefetch (scalar plus scalar) 1199dec6cf6bSRichard HendersonPRF_rr 1000010 -- 00 rm:5 110 --- ----- 0 ---- 1200dec6cf6bSRichard Henderson 1201dec6cf6bSRichard Henderson### SVE Memory 64-bit Gather Group 1202dec6cf6bSRichard Henderson 1203673e9fa6SRichard Henderson# SVE 64-bit gather load (scalar plus 32-bit unpacked unscaled offsets) 1204673e9fa6SRichard Henderson# SVE 64-bit gather load (scalar plus 32-bit unpacked scaled offsets) 1205673e9fa6SRichard HendersonLD1_zprz 1100010 00 .0 ..... 0.. ... ..... ..... \ 1206673e9fa6SRichard Henderson @rprr_g_load_xs_u esz=3 msz=0 scale=0 1207673e9fa6SRichard HendersonLD1_zprz 1100010 01 .. ..... 0.. ... ..... ..... \ 1208673e9fa6SRichard Henderson @rprr_g_load_xs_u_sc esz=3 msz=1 1209673e9fa6SRichard HendersonLD1_zprz 1100010 10 .. ..... 0.. ... ..... ..... \ 1210673e9fa6SRichard Henderson @rprr_g_load_xs_u_sc esz=3 msz=2 1211673e9fa6SRichard HendersonLD1_zprz 1100010 11 .. ..... 01. ... ..... ..... \ 1212673e9fa6SRichard Henderson @rprr_g_load_xs_sc esz=3 msz=3 u=1 1213673e9fa6SRichard Henderson 1214673e9fa6SRichard Henderson# SVE 64-bit gather load (scalar plus 64-bit unscaled offsets) 1215673e9fa6SRichard Henderson# SVE 64-bit gather load (scalar plus 64-bit scaled offsets) 1216673e9fa6SRichard HendersonLD1_zprz 1100010 00 10 ..... 1.. ... ..... ..... \ 1217673e9fa6SRichard Henderson @rprr_g_load_u esz=3 msz=0 scale=0 1218673e9fa6SRichard HendersonLD1_zprz 1100010 01 1. ..... 1.. ... ..... ..... \ 1219673e9fa6SRichard Henderson @rprr_g_load_u_sc esz=3 msz=1 1220673e9fa6SRichard HendersonLD1_zprz 1100010 10 1. ..... 1.. ... ..... ..... \ 1221673e9fa6SRichard Henderson @rprr_g_load_u_sc esz=3 msz=2 1222673e9fa6SRichard HendersonLD1_zprz 1100010 11 1. ..... 11. ... ..... ..... \ 1223673e9fa6SRichard Henderson @rprr_g_load_sc esz=3 msz=3 u=1 1224673e9fa6SRichard Henderson 1225673e9fa6SRichard Henderson# SVE 64-bit gather load (vector plus immediate) 1226673e9fa6SRichard HendersonLD1_zpiz 1100010 .. 01 ..... 1.. ... ..... ..... \ 1227673e9fa6SRichard Henderson @rpri_g_load esz=3 1228673e9fa6SRichard Henderson 1229dec6cf6bSRichard Henderson# SVE 64-bit gather prefetch (scalar plus 64-bit scaled offsets) 1230e1d1a643SRichard HendersonPRF_ns 1100010 00 11 ----- 1-- --- ----- 0 ---- 1231dec6cf6bSRichard Henderson 1232dec6cf6bSRichard Henderson# SVE 64-bit gather prefetch (scalar plus unpacked 32-bit scaled offsets) 1233e1d1a643SRichard HendersonPRF_ns 1100010 00 -1 ----- 0-- --- ----- 0 ---- 1234dec6cf6bSRichard Henderson 1235dec6cf6bSRichard Henderson# SVE 64-bit gather prefetch (vector plus immediate) 1236e1d1a643SRichard HendersonPRF_ns 1100010 -- 00 ----- 111 --- ----- 0 ---- 1237dec6cf6bSRichard Henderson 12381a039c7eSRichard Henderson### SVE Memory Store Group 12391a039c7eSRichard Henderson 12405047c204SRichard Henderson# SVE store predicate register 12415047c204SRichard HendersonSTR_pri 1110010 11 0. ..... 000 ... ..... 0 .... @pd_rn_i9 12425047c204SRichard Henderson 12435047c204SRichard Henderson# SVE store vector register 12445047c204SRichard HendersonSTR_zri 1110010 11 0. ..... 010 ... ..... ..... @rd_rn_i9 12455047c204SRichard Henderson 12461a039c7eSRichard Henderson# SVE contiguous store (scalar plus immediate) 12471a039c7eSRichard Henderson# ST1B, ST1H, ST1W, ST1D; require msz <= esz 12481a039c7eSRichard HendersonST_zpri 1110010 .. esz:2 0.... 111 ... ..... ..... \ 12491a039c7eSRichard Henderson @rpri_store_msz nreg=0 12501a039c7eSRichard Henderson 12511a039c7eSRichard Henderson# SVE contiguous store (scalar plus scalar) 12521a039c7eSRichard Henderson# ST1B, ST1H, ST1W, ST1D; require msz <= esz 12531a039c7eSRichard Henderson# Enumerate msz lest we conflict with STR_zri. 12541a039c7eSRichard HendersonST_zprr 1110010 00 .. ..... 010 ... ..... ..... \ 12551a039c7eSRichard Henderson @rprr_store_esz_n0 msz=0 12561a039c7eSRichard HendersonST_zprr 1110010 01 .. ..... 010 ... ..... ..... \ 12571a039c7eSRichard Henderson @rprr_store_esz_n0 msz=1 12581a039c7eSRichard HendersonST_zprr 1110010 10 .. ..... 010 ... ..... ..... \ 12591a039c7eSRichard Henderson @rprr_store_esz_n0 msz=2 12601a039c7eSRichard HendersonST_zprr 1110010 11 11 ..... 010 ... ..... ..... \ 12611a039c7eSRichard Henderson @rprr_store msz=3 esz=3 nreg=0 12621a039c7eSRichard Henderson 12631a039c7eSRichard Henderson# SVE contiguous non-temporal store (scalar plus immediate) (nreg == 0) 12641a039c7eSRichard Henderson# SVE store multiple structures (scalar plus immediate) (nreg != 0) 12651a039c7eSRichard HendersonST_zpri 1110010 .. nreg:2 1.... 111 ... ..... ..... \ 12661a039c7eSRichard Henderson @rpri_store_msz esz=%size_23 12671a039c7eSRichard Henderson 12681a039c7eSRichard Henderson# SVE contiguous non-temporal store (scalar plus scalar) (nreg == 0) 12691a039c7eSRichard Henderson# SVE store multiple structures (scalar plus scalar) (nreg != 0) 12701a039c7eSRichard HendersonST_zprr 1110010 msz:2 nreg:2 ..... 011 ... ..... ..... \ 12711a039c7eSRichard Henderson @rprr_store esz=%size_23 1272f6dbf62aSRichard Henderson 1273f6dbf62aSRichard Henderson# SVE 32-bit scatter store (scalar plus 32-bit scaled offsets) 1274f6dbf62aSRichard Henderson# Require msz > 0 && msz <= esz. 1275f6dbf62aSRichard HendersonST1_zprz 1110010 .. 11 ..... 100 ... ..... ..... \ 1276f6dbf62aSRichard Henderson @rprr_scatter_store xs=0 esz=2 scale=1 1277f6dbf62aSRichard HendersonST1_zprz 1110010 .. 11 ..... 110 ... ..... ..... \ 1278f6dbf62aSRichard Henderson @rprr_scatter_store xs=1 esz=2 scale=1 1279f6dbf62aSRichard Henderson 1280f6dbf62aSRichard Henderson# SVE 32-bit scatter store (scalar plus 32-bit unscaled offsets) 1281f6dbf62aSRichard Henderson# Require msz <= esz. 1282f6dbf62aSRichard HendersonST1_zprz 1110010 .. 10 ..... 100 ... ..... ..... \ 1283f6dbf62aSRichard Henderson @rprr_scatter_store xs=0 esz=2 scale=0 1284f6dbf62aSRichard HendersonST1_zprz 1110010 .. 10 ..... 110 ... ..... ..... \ 1285f6dbf62aSRichard Henderson @rprr_scatter_store xs=1 esz=2 scale=0 1286f6dbf62aSRichard Henderson 1287f6dbf62aSRichard Henderson# SVE 64-bit scatter store (scalar plus 64-bit scaled offset) 1288f6dbf62aSRichard Henderson# Require msz > 0 1289f6dbf62aSRichard HendersonST1_zprz 1110010 .. 01 ..... 101 ... ..... ..... \ 1290f6dbf62aSRichard Henderson @rprr_scatter_store xs=2 esz=3 scale=1 1291f6dbf62aSRichard Henderson 1292f6dbf62aSRichard Henderson# SVE 64-bit scatter store (scalar plus 64-bit unscaled offset) 1293f6dbf62aSRichard HendersonST1_zprz 1110010 .. 00 ..... 101 ... ..... ..... \ 1294f6dbf62aSRichard Henderson @rprr_scatter_store xs=2 esz=3 scale=0 1295f6dbf62aSRichard Henderson 1296408ecde9SRichard Henderson# SVE 64-bit scatter store (vector plus immediate) 1297408ecde9SRichard HendersonST1_zpiz 1110010 .. 10 ..... 101 ... ..... ..... \ 1298408ecde9SRichard Henderson @rpri_scatter_store esz=3 1299408ecde9SRichard Henderson 1300408ecde9SRichard Henderson# SVE 32-bit scatter store (vector plus immediate) 1301408ecde9SRichard HendersonST1_zpiz 1110010 .. 11 ..... 101 ... ..... ..... \ 1302408ecde9SRichard Henderson @rpri_scatter_store esz=2 1303408ecde9SRichard Henderson 1304f6dbf62aSRichard Henderson# SVE 64-bit scatter store (scalar plus unpacked 32-bit scaled offset) 1305f6dbf62aSRichard Henderson# Require msz > 0 1306f6dbf62aSRichard HendersonST1_zprz 1110010 .. 01 ..... 100 ... ..... ..... \ 1307f6dbf62aSRichard Henderson @rprr_scatter_store xs=0 esz=3 scale=1 1308f6dbf62aSRichard HendersonST1_zprz 1110010 .. 01 ..... 110 ... ..... ..... \ 1309f6dbf62aSRichard Henderson @rprr_scatter_store xs=1 esz=3 scale=1 1310f6dbf62aSRichard Henderson 1311f6dbf62aSRichard Henderson# SVE 64-bit scatter store (scalar plus unpacked 32-bit unscaled offset) 1312f6dbf62aSRichard HendersonST1_zprz 1110010 .. 00 ..... 100 ... ..... ..... \ 1313f6dbf62aSRichard Henderson @rprr_scatter_store xs=0 esz=3 scale=0 1314f6dbf62aSRichard HendersonST1_zprz 1110010 .. 00 ..... 110 ... ..... ..... \ 1315f6dbf62aSRichard Henderson @rprr_scatter_store xs=1 esz=3 scale=0 13165dad1ba5SRichard Henderson 13175dad1ba5SRichard Henderson#### SVE2 Support 13185dad1ba5SRichard Henderson 13195dad1ba5SRichard Henderson### SVE2 Integer Multiply - Unpredicated 13205dad1ba5SRichard Henderson 13215dad1ba5SRichard Henderson# SVE2 integer multiply vectors (unpredicated) 13225dad1ba5SRichard HendersonMUL_zzz 00000100 .. 1 ..... 0110 00 ..... ..... @rd_rn_rm 13235dad1ba5SRichard HendersonSMULH_zzz 00000100 .. 1 ..... 0110 10 ..... ..... @rd_rn_rm 13245dad1ba5SRichard HendersonUMULH_zzz 00000100 .. 1 ..... 0110 11 ..... ..... @rd_rn_rm 13255dad1ba5SRichard HendersonPMUL_zzz 00000100 00 1 ..... 0110 01 ..... ..... @rd_rn_rm_e0 1326d4b1e59dSRichard Henderson 1327169d7c58SRichard Henderson# SVE2 signed saturating doubling multiply high (unpredicated) 1328169d7c58SRichard HendersonSQDMULH_zzz 00000100 .. 1 ..... 0111 00 ..... ..... @rd_rn_rm 1329169d7c58SRichard HendersonSQRDMULH_zzz 00000100 .. 1 ..... 0111 01 ..... ..... @rd_rn_rm 1330169d7c58SRichard Henderson 1331d4b1e59dSRichard Henderson### SVE2 Integer - Predicated 1332d4b1e59dSRichard Henderson 1333d4b1e59dSRichard HendersonSADALP_zpzz 01000100 .. 000 100 101 ... ..... ..... @rdm_pg_rn 1334d4b1e59dSRichard HendersonUADALP_zpzz 01000100 .. 000 101 101 ... ..... ..... @rdm_pg_rn 1335db366da8SRichard Henderson 1336db366da8SRichard Henderson### SVE2 integer unary operations (predicated) 1337db366da8SRichard Henderson 1338db366da8SRichard HendersonURECPE 01000100 .. 000 000 101 ... ..... ..... @rd_pg_rn 1339db366da8SRichard HendersonURSQRTE 01000100 .. 000 001 101 ... ..... ..... @rd_pg_rn 1340db366da8SRichard HendersonSQABS 01000100 .. 001 000 101 ... ..... ..... @rd_pg_rn 1341db366da8SRichard HendersonSQNEG 01000100 .. 001 001 101 ... ..... ..... @rd_pg_rn 134245d9503dSRichard Henderson 134345d9503dSRichard Henderson### SVE2 saturating/rounding bitwise shift left (predicated) 134445d9503dSRichard Henderson 134545d9503dSRichard HendersonSRSHL 01000100 .. 000 010 100 ... ..... ..... @rdn_pg_rm 134645d9503dSRichard HendersonURSHL 01000100 .. 000 011 100 ... ..... ..... @rdn_pg_rm 134745d9503dSRichard HendersonSRSHL 01000100 .. 000 110 100 ... ..... ..... @rdm_pg_rn # SRSHLR 134845d9503dSRichard HendersonURSHL 01000100 .. 000 111 100 ... ..... ..... @rdm_pg_rn # URSHLR 134945d9503dSRichard Henderson 135045d9503dSRichard HendersonSQSHL 01000100 .. 001 000 100 ... ..... ..... @rdn_pg_rm 135145d9503dSRichard HendersonUQSHL 01000100 .. 001 001 100 ... ..... ..... @rdn_pg_rm 135245d9503dSRichard HendersonSQSHL 01000100 .. 001 100 100 ... ..... ..... @rdm_pg_rn # SQSHLR 135345d9503dSRichard HendersonUQSHL 01000100 .. 001 101 100 ... ..... ..... @rdm_pg_rn # UQSHLR 135445d9503dSRichard Henderson 135545d9503dSRichard HendersonSQRSHL 01000100 .. 001 010 100 ... ..... ..... @rdn_pg_rm 135645d9503dSRichard HendersonUQRSHL 01000100 .. 001 011 100 ... ..... ..... @rdn_pg_rm 135745d9503dSRichard HendersonSQRSHL 01000100 .. 001 110 100 ... ..... ..... @rdm_pg_rn # SQRSHLR 135845d9503dSRichard HendersonUQRSHL 01000100 .. 001 111 100 ... ..... ..... @rdm_pg_rn # UQRSHLR 1359a47dc220SRichard Henderson 1360a47dc220SRichard Henderson### SVE2 integer halving add/subtract (predicated) 1361a47dc220SRichard Henderson 1362a47dc220SRichard HendersonSHADD 01000100 .. 010 000 100 ... ..... ..... @rdn_pg_rm 1363a47dc220SRichard HendersonUHADD 01000100 .. 010 001 100 ... ..... ..... @rdn_pg_rm 1364a47dc220SRichard HendersonSHSUB 01000100 .. 010 010 100 ... ..... ..... @rdn_pg_rm 1365a47dc220SRichard HendersonUHSUB 01000100 .. 010 011 100 ... ..... ..... @rdn_pg_rm 1366a47dc220SRichard HendersonSRHADD 01000100 .. 010 100 100 ... ..... ..... @rdn_pg_rm 1367a47dc220SRichard HendersonURHADD 01000100 .. 010 101 100 ... ..... ..... @rdn_pg_rm 1368a47dc220SRichard HendersonSHSUB 01000100 .. 010 110 100 ... ..... ..... @rdm_pg_rn # SHSUBR 1369a47dc220SRichard HendersonUHSUB 01000100 .. 010 111 100 ... ..... ..... @rdm_pg_rn # UHSUBR 13708597dc8bSRichard Henderson 13718597dc8bSRichard Henderson### SVE2 integer pairwise arithmetic 13728597dc8bSRichard Henderson 13738597dc8bSRichard HendersonADDP 01000100 .. 010 001 101 ... ..... ..... @rdn_pg_rm 13748597dc8bSRichard HendersonSMAXP 01000100 .. 010 100 101 ... ..... ..... @rdn_pg_rm 13758597dc8bSRichard HendersonUMAXP 01000100 .. 010 101 101 ... ..... ..... @rdn_pg_rm 13768597dc8bSRichard HendersonSMINP 01000100 .. 010 110 101 ... ..... ..... @rdn_pg_rm 13778597dc8bSRichard HendersonUMINP 01000100 .. 010 111 101 ... ..... ..... @rdn_pg_rm 13784f07fbebSRichard Henderson 13794f07fbebSRichard Henderson### SVE2 saturating add/subtract (predicated) 13804f07fbebSRichard Henderson 13814f07fbebSRichard HendersonSQADD_zpzz 01000100 .. 011 000 100 ... ..... ..... @rdn_pg_rm 13824f07fbebSRichard HendersonUQADD_zpzz 01000100 .. 011 001 100 ... ..... ..... @rdn_pg_rm 13834f07fbebSRichard HendersonSQSUB_zpzz 01000100 .. 011 010 100 ... ..... ..... @rdn_pg_rm 13844f07fbebSRichard HendersonUQSUB_zpzz 01000100 .. 011 011 100 ... ..... ..... @rdn_pg_rm 13854f07fbebSRichard HendersonSUQADD 01000100 .. 011 100 100 ... ..... ..... @rdn_pg_rm 13864f07fbebSRichard HendersonUSQADD 01000100 .. 011 101 100 ... ..... ..... @rdn_pg_rm 13874f07fbebSRichard HendersonSQSUB_zpzz 01000100 .. 011 110 100 ... ..... ..... @rdm_pg_rn # SQSUBR 13884f07fbebSRichard HendersonUQSUB_zpzz 01000100 .. 011 111 100 ... ..... ..... @rdm_pg_rn # UQSUBR 13890ce1dda8SRichard Henderson 13900ce1dda8SRichard Henderson#### SVE2 Widening Integer Arithmetic 13910ce1dda8SRichard Henderson 13920ce1dda8SRichard Henderson## SVE2 integer add/subtract long 13930ce1dda8SRichard Henderson 13940ce1dda8SRichard HendersonSADDLB 01000101 .. 0 ..... 00 0000 ..... ..... @rd_rn_rm 13950ce1dda8SRichard HendersonSADDLT 01000101 .. 0 ..... 00 0001 ..... ..... @rd_rn_rm 13960ce1dda8SRichard HendersonUADDLB 01000101 .. 0 ..... 00 0010 ..... ..... @rd_rn_rm 13970ce1dda8SRichard HendersonUADDLT 01000101 .. 0 ..... 00 0011 ..... ..... @rd_rn_rm 13980ce1dda8SRichard Henderson 13990ce1dda8SRichard HendersonSSUBLB 01000101 .. 0 ..... 00 0100 ..... ..... @rd_rn_rm 14000ce1dda8SRichard HendersonSSUBLT 01000101 .. 0 ..... 00 0101 ..... ..... @rd_rn_rm 14010ce1dda8SRichard HendersonUSUBLB 01000101 .. 0 ..... 00 0110 ..... ..... @rd_rn_rm 14020ce1dda8SRichard HendersonUSUBLT 01000101 .. 0 ..... 00 0111 ..... ..... @rd_rn_rm 14030ce1dda8SRichard Henderson 14040ce1dda8SRichard HendersonSABDLB 01000101 .. 0 ..... 00 1100 ..... ..... @rd_rn_rm 14050ce1dda8SRichard HendersonSABDLT 01000101 .. 0 ..... 00 1101 ..... ..... @rd_rn_rm 14060ce1dda8SRichard HendersonUABDLB 01000101 .. 0 ..... 00 1110 ..... ..... @rd_rn_rm 14070ce1dda8SRichard HendersonUABDLT 01000101 .. 0 ..... 00 1111 ..... ..... @rd_rn_rm 1408daec426bSRichard Henderson 1409daec426bSRichard Henderson## SVE2 integer add/subtract interleaved long 1410daec426bSRichard Henderson 1411daec426bSRichard HendersonSADDLBT 01000101 .. 0 ..... 1000 00 ..... ..... @rd_rn_rm 1412daec426bSRichard HendersonSSUBLBT 01000101 .. 0 ..... 1000 10 ..... ..... @rd_rn_rm 1413daec426bSRichard HendersonSSUBLTB 01000101 .. 0 ..... 1000 11 ..... ..... @rd_rn_rm 141481fccf09SRichard Henderson 141581fccf09SRichard Henderson## SVE2 integer add/subtract wide 141681fccf09SRichard Henderson 141781fccf09SRichard HendersonSADDWB 01000101 .. 0 ..... 010 000 ..... ..... @rd_rn_rm 141881fccf09SRichard HendersonSADDWT 01000101 .. 0 ..... 010 001 ..... ..... @rd_rn_rm 141981fccf09SRichard HendersonUADDWB 01000101 .. 0 ..... 010 010 ..... ..... @rd_rn_rm 142081fccf09SRichard HendersonUADDWT 01000101 .. 0 ..... 010 011 ..... ..... @rd_rn_rm 142181fccf09SRichard Henderson 142281fccf09SRichard HendersonSSUBWB 01000101 .. 0 ..... 010 100 ..... ..... @rd_rn_rm 142381fccf09SRichard HendersonSSUBWT 01000101 .. 0 ..... 010 101 ..... ..... @rd_rn_rm 142481fccf09SRichard HendersonUSUBWB 01000101 .. 0 ..... 010 110 ..... ..... @rd_rn_rm 142581fccf09SRichard HendersonUSUBWT 01000101 .. 0 ..... 010 111 ..... ..... @rd_rn_rm 142669ccc099SRichard Henderson 142769ccc099SRichard Henderson## SVE2 integer multiply long 142869ccc099SRichard Henderson 142969ccc099SRichard HendersonSQDMULLB_zzz 01000101 .. 0 ..... 011 000 ..... ..... @rd_rn_rm 143069ccc099SRichard HendersonSQDMULLT_zzz 01000101 .. 0 ..... 011 001 ..... ..... @rd_rn_rm 1431e3a56131SRichard HendersonPMULLB 01000101 .. 0 ..... 011 010 ..... ..... @rd_rn_rm 1432e3a56131SRichard HendersonPMULLT 01000101 .. 0 ..... 011 011 ..... ..... @rd_rn_rm 143369ccc099SRichard HendersonSMULLB_zzz 01000101 .. 0 ..... 011 100 ..... ..... @rd_rn_rm 143469ccc099SRichard HendersonSMULLT_zzz 01000101 .. 0 ..... 011 101 ..... ..... @rd_rn_rm 143569ccc099SRichard HendersonUMULLB_zzz 01000101 .. 0 ..... 011 110 ..... ..... @rd_rn_rm 143669ccc099SRichard HendersonUMULLT_zzz 01000101 .. 0 ..... 011 111 ..... ..... @rd_rn_rm 14374269fef1SRichard Henderson 14384269fef1SRichard Henderson## SVE2 bitwise shift left long 14394269fef1SRichard Henderson 14404269fef1SRichard Henderson# Note bit23 == 0 is handled by esz > 0 in do_sve2_shll_tb. 14414269fef1SRichard HendersonSSHLLB 01000101 .. 0 ..... 1010 00 ..... ..... @rd_rn_tszimm_shl 14424269fef1SRichard HendersonSSHLLT 01000101 .. 0 ..... 1010 01 ..... ..... @rd_rn_tszimm_shl 14434269fef1SRichard HendersonUSHLLB 01000101 .. 0 ..... 1010 10 ..... ..... @rd_rn_tszimm_shl 14444269fef1SRichard HendersonUSHLLT 01000101 .. 0 ..... 1010 11 ..... ..... @rd_rn_tszimm_shl 14452df3ca55SRichard Henderson 14462df3ca55SRichard Henderson## SVE2 bitwise exclusive-or interleaved 14472df3ca55SRichard Henderson 14482df3ca55SRichard HendersonEORBT 01000101 .. 0 ..... 10010 0 ..... ..... @rd_rn_rm 14492df3ca55SRichard HendersonEORTB 01000101 .. 0 ..... 10010 1 ..... ..... @rd_rn_rm 1450cb9c33b8SRichard Henderson 14512323c5ffSRichard Henderson## SVE integer matrix multiply accumulate 14522323c5ffSRichard Henderson 14532323c5ffSRichard HendersonSMMLA 01000101 00 0 ..... 10011 0 ..... ..... @rda_rn_rm_e0 14542323c5ffSRichard HendersonUSMMLA 01000101 10 0 ..... 10011 0 ..... ..... @rda_rn_rm_e0 14552323c5ffSRichard HendersonUMMLA 01000101 11 0 ..... 10011 0 ..... ..... @rda_rn_rm_e0 14562323c5ffSRichard Henderson 1457cb9c33b8SRichard Henderson## SVE2 bitwise permute 1458cb9c33b8SRichard Henderson 1459cb9c33b8SRichard HendersonBEXT 01000101 .. 0 ..... 1011 00 ..... ..... @rd_rn_rm 1460cb9c33b8SRichard HendersonBDEP 01000101 .. 0 ..... 1011 01 ..... ..... @rd_rn_rm 1461cb9c33b8SRichard HendersonBGRP 01000101 .. 0 ..... 1011 10 ..... ..... @rd_rn_rm 1462ed4a6387SRichard Henderson 1463ed4a6387SRichard Henderson#### SVE2 Accumulate 1464ed4a6387SRichard Henderson 1465ed4a6387SRichard Henderson## SVE2 complex integer add 1466ed4a6387SRichard Henderson 1467ed4a6387SRichard HendersonCADD_rot90 01000101 .. 00000 0 11011 0 ..... ..... @rdn_rm 1468ed4a6387SRichard HendersonCADD_rot270 01000101 .. 00000 0 11011 1 ..... ..... @rdn_rm 1469ed4a6387SRichard HendersonSQCADD_rot90 01000101 .. 00000 1 11011 0 ..... ..... @rdn_rm 1470ed4a6387SRichard HendersonSQCADD_rot270 01000101 .. 00000 1 11011 1 ..... ..... @rdn_rm 147138650638SRichard Henderson 147238650638SRichard Henderson## SVE2 integer absolute difference and accumulate long 147338650638SRichard Henderson 147438650638SRichard HendersonSABALB 01000101 .. 0 ..... 1100 00 ..... ..... @rda_rn_rm 147538650638SRichard HendersonSABALT 01000101 .. 0 ..... 1100 01 ..... ..... @rda_rn_rm 147638650638SRichard HendersonUABALB 01000101 .. 0 ..... 1100 10 ..... ..... @rda_rn_rm 147738650638SRichard HendersonUABALT 01000101 .. 0 ..... 1100 11 ..... ..... @rda_rn_rm 1478b8295dfbSRichard Henderson 1479b8295dfbSRichard Henderson## SVE2 integer add/subtract long with carry 1480b8295dfbSRichard Henderson 1481b8295dfbSRichard Henderson# ADC and SBC decoded via size in helper dispatch. 1482b8295dfbSRichard HendersonADCLB 01000101 .. 0 ..... 11010 0 ..... ..... @rda_rn_rm 1483b8295dfbSRichard HendersonADCLT 01000101 .. 0 ..... 11010 1 ..... ..... @rda_rn_rm 1484a7e3a90eSRichard Henderson 1485a7e3a90eSRichard Henderson## SVE2 bitwise shift right and accumulate 1486a7e3a90eSRichard Henderson 1487a7e3a90eSRichard Henderson# TODO: Use @rda and %reg_movprfx here. 1488a7e3a90eSRichard HendersonSSRA 01000101 .. 0 ..... 1110 00 ..... ..... @rd_rn_tszimm_shr 1489a7e3a90eSRichard HendersonUSRA 01000101 .. 0 ..... 1110 01 ..... ..... @rd_rn_tszimm_shr 1490a7e3a90eSRichard HendersonSRSRA 01000101 .. 0 ..... 1110 10 ..... ..... @rd_rn_tszimm_shr 1491a7e3a90eSRichard HendersonURSRA 01000101 .. 0 ..... 1110 11 ..... ..... @rd_rn_tszimm_shr 1492fc12b46aSRichard Henderson 1493fc12b46aSRichard Henderson## SVE2 bitwise shift and insert 1494fc12b46aSRichard Henderson 1495fc12b46aSRichard HendersonSRI 01000101 .. 0 ..... 11110 0 ..... ..... @rd_rn_tszimm_shr 1496fc12b46aSRichard HendersonSLI 01000101 .. 0 ..... 11110 1 ..... ..... @rd_rn_tszimm_shl 1497289a1797SRichard Henderson 1498289a1797SRichard Henderson## SVE2 integer absolute difference and accumulate 1499289a1797SRichard Henderson 1500289a1797SRichard Henderson# TODO: Use @rda and %reg_movprfx here. 1501289a1797SRichard HendersonSABA 01000101 .. 0 ..... 11111 0 ..... ..... @rd_rn_rm 1502289a1797SRichard HendersonUABA 01000101 .. 0 ..... 11111 1 ..... ..... @rd_rn_rm 15035ff2838dSRichard Henderson 15045ff2838dSRichard Henderson#### SVE2 Narrowing 15055ff2838dSRichard Henderson 15065ff2838dSRichard Henderson## SVE2 saturating extract narrow 15075ff2838dSRichard Henderson 15085ff2838dSRichard Henderson# Bits 23, 18-16 are zero, limited in the translator via esz < 3 & imm == 0. 15095ff2838dSRichard HendersonSQXTNB 01000101 .. 1 ..... 010 000 ..... ..... @rd_rn_tszimm_shl 15105ff2838dSRichard HendersonSQXTNT 01000101 .. 1 ..... 010 001 ..... ..... @rd_rn_tszimm_shl 15115ff2838dSRichard HendersonUQXTNB 01000101 .. 1 ..... 010 010 ..... ..... @rd_rn_tszimm_shl 15125ff2838dSRichard HendersonUQXTNT 01000101 .. 1 ..... 010 011 ..... ..... @rd_rn_tszimm_shl 15135ff2838dSRichard HendersonSQXTUNB 01000101 .. 1 ..... 010 100 ..... ..... @rd_rn_tszimm_shl 15145ff2838dSRichard HendersonSQXTUNT 01000101 .. 1 ..... 010 101 ..... ..... @rd_rn_tszimm_shl 1515b87dbeebSStephen Long 151646d111b2SRichard Henderson## SVE2 bitwise shift right narrow 151746d111b2SRichard Henderson 151846d111b2SRichard Henderson# Bit 23 == 0 is handled by esz > 0 in the translator. 151981fd3e6eSRichard HendersonSQSHRUNB 01000101 .. 1 ..... 00 0000 ..... ..... @rd_rn_tszimm_shr 152081fd3e6eSRichard HendersonSQSHRUNT 01000101 .. 1 ..... 00 0001 ..... ..... @rd_rn_tszimm_shr 152181fd3e6eSRichard HendersonSQRSHRUNB 01000101 .. 1 ..... 00 0010 ..... ..... @rd_rn_tszimm_shr 152281fd3e6eSRichard HendersonSQRSHRUNT 01000101 .. 1 ..... 00 0011 ..... ..... @rd_rn_tszimm_shr 152346d111b2SRichard HendersonSHRNB 01000101 .. 1 ..... 00 0100 ..... ..... @rd_rn_tszimm_shr 152446d111b2SRichard HendersonSHRNT 01000101 .. 1 ..... 00 0101 ..... ..... @rd_rn_tszimm_shr 152546d111b2SRichard HendersonRSHRNB 01000101 .. 1 ..... 00 0110 ..... ..... @rd_rn_tszimm_shr 152646d111b2SRichard HendersonRSHRNT 01000101 .. 1 ..... 00 0111 ..... ..... @rd_rn_tszimm_shr 1527743bb147SRichard HendersonSQSHRNB 01000101 .. 1 ..... 00 1000 ..... ..... @rd_rn_tszimm_shr 1528743bb147SRichard HendersonSQSHRNT 01000101 .. 1 ..... 00 1001 ..... ..... @rd_rn_tszimm_shr 1529743bb147SRichard HendersonSQRSHRNB 01000101 .. 1 ..... 00 1010 ..... ..... @rd_rn_tszimm_shr 1530743bb147SRichard HendersonSQRSHRNT 01000101 .. 1 ..... 00 1011 ..... ..... @rd_rn_tszimm_shr 1531c13418daSRichard HendersonUQSHRNB 01000101 .. 1 ..... 00 1100 ..... ..... @rd_rn_tszimm_shr 1532c13418daSRichard HendersonUQSHRNT 01000101 .. 1 ..... 00 1101 ..... ..... @rd_rn_tszimm_shr 1533c13418daSRichard HendersonUQRSHRNB 01000101 .. 1 ..... 00 1110 ..... ..... @rd_rn_tszimm_shr 1534c13418daSRichard HendersonUQRSHRNT 01000101 .. 1 ..... 00 1111 ..... ..... @rd_rn_tszimm_shr 153546d111b2SRichard Henderson 153640d5ea50SStephen Long## SVE2 integer add/subtract narrow high part 153740d5ea50SStephen Long 153840d5ea50SStephen LongADDHNB 01000101 .. 1 ..... 011 000 ..... ..... @rd_rn_rm 153940d5ea50SStephen LongADDHNT 01000101 .. 1 ..... 011 001 ..... ..... @rd_rn_rm 15400ea3ff02SStephen LongRADDHNB 01000101 .. 1 ..... 011 010 ..... ..... @rd_rn_rm 15410ea3ff02SStephen LongRADDHNT 01000101 .. 1 ..... 011 011 ..... ..... @rd_rn_rm 1542c3cd6766SStephen LongSUBHNB 01000101 .. 1 ..... 011 100 ..... ..... @rd_rn_rm 1543c3cd6766SStephen LongSUBHNT 01000101 .. 1 ..... 011 101 ..... ..... @rd_rn_rm 1544e9443d10SStephen LongRSUBHNB 01000101 .. 1 ..... 011 110 ..... ..... @rd_rn_rm 1545e9443d10SStephen LongRSUBHNT 01000101 .. 1 ..... 011 111 ..... ..... @rd_rn_rm 154640d5ea50SStephen Long 1547e0ae6ec3SStephen Long### SVE2 Character Match 1548e0ae6ec3SStephen Long 1549e0ae6ec3SStephen LongMATCH 01000101 .. 1 ..... 100 ... ..... 0 .... @pd_pg_rn_rm 1550e0ae6ec3SStephen LongNMATCH 01000101 .. 1 ..... 100 ... ..... 1 .... @pd_pg_rn_rm 1551e0ae6ec3SStephen Long 15527d47ac94SStephen Long### SVE2 Histogram Computation 15537d47ac94SStephen Long 15547d47ac94SStephen LongHISTCNT 01000101 .. 1 ..... 110 ... ..... ..... @rd_pg_rn_rm 15557d47ac94SStephen LongHISTSEG 01000101 .. 1 ..... 101 000 ..... ..... @rd_rn_rm 15567d47ac94SStephen Long 1557b87dbeebSStephen Long## SVE2 floating-point pairwise operations 1558b87dbeebSStephen Long 1559b87dbeebSStephen LongFADDP 01100100 .. 010 00 0 100 ... ..... ..... @rdn_pg_rm 1560b87dbeebSStephen LongFMAXNMP 01100100 .. 010 10 0 100 ... ..... ..... @rdn_pg_rm 1561b87dbeebSStephen LongFMINNMP 01100100 .. 010 10 1 100 ... ..... ..... @rdn_pg_rm 1562b87dbeebSStephen LongFMAXP 01100100 .. 010 11 0 100 ... ..... ..... @rdn_pg_rm 1563b87dbeebSStephen LongFMINP 01100100 .. 010 11 1 100 ... ..... ..... @rdn_pg_rm 1564bfc9307eSRichard Henderson 1565bfc9307eSRichard Henderson#### SVE Integer Multiply-Add (unpredicated) 1566bfc9307eSRichard Henderson 1567bfc9307eSRichard Henderson## SVE2 saturating multiply-add long 1568bfc9307eSRichard Henderson 1569bfc9307eSRichard HendersonSQDMLALB_zzzw 01000100 .. 0 ..... 0110 00 ..... ..... @rda_rn_rm 1570bfc9307eSRichard HendersonSQDMLALT_zzzw 01000100 .. 0 ..... 0110 01 ..... ..... @rda_rn_rm 1571bfc9307eSRichard HendersonSQDMLSLB_zzzw 01000100 .. 0 ..... 0110 10 ..... ..... @rda_rn_rm 1572bfc9307eSRichard HendersonSQDMLSLT_zzzw 01000100 .. 0 ..... 0110 11 ..... ..... @rda_rn_rm 1573bfc9307eSRichard Henderson 1574bfc9307eSRichard Henderson## SVE2 saturating multiply-add interleaved long 1575bfc9307eSRichard Henderson 1576bfc9307eSRichard HendersonSQDMLALBT 01000100 .. 0 ..... 00001 0 ..... ..... @rda_rn_rm 1577bfc9307eSRichard HendersonSQDMLSLBT 01000100 .. 0 ..... 00001 1 ..... ..... @rda_rn_rm 1578ab3ddf31SRichard Henderson 1579ab3ddf31SRichard Henderson## SVE2 saturating multiply-add high 1580ab3ddf31SRichard Henderson 1581ab3ddf31SRichard HendersonSQRDMLAH_zzzz 01000100 .. 0 ..... 01110 0 ..... ..... @rda_rn_rm 1582ab3ddf31SRichard HendersonSQRDMLSH_zzzz 01000100 .. 0 ..... 01110 1 ..... ..... @rda_rn_rm 158345a32e80SRichard Henderson 158445a32e80SRichard Henderson## SVE2 integer multiply-add long 158545a32e80SRichard Henderson 158645a32e80SRichard HendersonSMLALB_zzzw 01000100 .. 0 ..... 010 000 ..... ..... @rda_rn_rm 158745a32e80SRichard HendersonSMLALT_zzzw 01000100 .. 0 ..... 010 001 ..... ..... @rda_rn_rm 158845a32e80SRichard HendersonUMLALB_zzzw 01000100 .. 0 ..... 010 010 ..... ..... @rda_rn_rm 158945a32e80SRichard HendersonUMLALT_zzzw 01000100 .. 0 ..... 010 011 ..... ..... @rda_rn_rm 159045a32e80SRichard HendersonSMLSLB_zzzw 01000100 .. 0 ..... 010 100 ..... ..... @rda_rn_rm 159145a32e80SRichard HendersonSMLSLT_zzzw 01000100 .. 0 ..... 010 101 ..... ..... @rda_rn_rm 159245a32e80SRichard HendersonUMLSLB_zzzw 01000100 .. 0 ..... 010 110 ..... ..... @rda_rn_rm 159345a32e80SRichard HendersonUMLSLT_zzzw 01000100 .. 0 ..... 010 111 ..... ..... @rda_rn_rm 1594d782d3caSRichard Henderson 1595d782d3caSRichard Henderson## SVE2 complex integer multiply-add 1596d782d3caSRichard Henderson 1597d782d3caSRichard HendersonCMLA_zzzz 01000100 esz:2 0 rm:5 0010 rot:2 rn:5 rd:5 ra=%reg_movprfx 1598d782d3caSRichard HendersonSQRDCMLAH_zzzz 01000100 esz:2 0 rm:5 0011 rot:2 rn:5 rd:5 ra=%reg_movprfx 15996ebca45fSStephen Long 16006a98cb2aSRichard Henderson## SVE mixed sign dot product 16016a98cb2aSRichard Henderson 16026a98cb2aSRichard HendersonUSDOT_zzzz 01000100 .. 0 ..... 011 110 ..... ..... @rda_rn_rm 16036a98cb2aSRichard Henderson 16044f26756bSStephen Long### SVE2 floating point matrix multiply accumulate 160581266a1fSRichard HendersonBFMMLA 01100100 01 1 ..... 111 001 ..... ..... @rda_rn_rm_e0 160625aee7ccSRichard HendersonFMMLA_s 01100100 10 1 ..... 111 001 ..... ..... @rda_rn_rm_e0 160725aee7ccSRichard HendersonFMMLA_d 01100100 11 1 ..... 111 001 ..... ..... @rda_rn_rm_e0 16084f26756bSStephen Long 1609cf327449SStephen Long### SVE2 Memory Gather Load Group 1610cf327449SStephen Long 1611b17ab470SRichard Henderson# SVE2 64-bit gather non-temporal load (scalar plus 64-bit unscaled offsets) 1612cf327449SStephen LongLDNT1_zprz 1100010 msz:2 00 rm:5 1 u:1 0 pg:3 rn:5 rd:5 \ 1613b17ab470SRichard Henderson &rprr_gather_load xs=2 esz=3 scale=0 ff=0 1614cf327449SStephen Long 1615cf327449SStephen Long# SVE2 32-bit gather non-temporal load (scalar plus 32-bit unscaled offsets) 1616cf327449SStephen LongLDNT1_zprz 1000010 msz:2 00 rm:5 10 u:1 pg:3 rn:5 rd:5 \ 1617cf327449SStephen Long &rprr_gather_load xs=0 esz=2 scale=0 ff=0 1618cf327449SStephen Long 16196ebca45fSStephen Long### SVE2 Memory Store Group 16206ebca45fSStephen Long 16216ebca45fSStephen Long# SVE2 64-bit scatter non-temporal store (vector plus scalar) 16226ebca45fSStephen LongSTNT1_zprz 1110010 .. 00 ..... 001 ... ..... ..... \ 16236ebca45fSStephen Long @rprr_scatter_store xs=2 esz=3 scale=0 16246ebca45fSStephen Long 16256ebca45fSStephen Long# SVE2 32-bit scatter non-temporal store (vector plus scalar) 16266ebca45fSStephen LongSTNT1_zprz 1110010 .. 10 ..... 001 ... ..... ..... \ 16276ebca45fSStephen Long @rprr_scatter_store xs=0 esz=2 scale=0 1628b2bcd1beSRichard Henderson 1629b2bcd1beSRichard Henderson### SVE2 Crypto Extensions 1630b2bcd1beSRichard Henderson 1631b2bcd1beSRichard Henderson# SVE2 crypto unary operations 1632*0f23908cSRichard HendersonAESMC 01000101 00 10000011100 0 00000 rd:5 1633*0f23908cSRichard HendersonAESIMC 01000101 00 10000011100 1 00000 rd:5 16343cc7a88eSRichard Henderson 16353cc7a88eSRichard Henderson# SVE2 crypto destructive binary operations 16363cc7a88eSRichard HendersonAESE 01000101 00 10001 0 11100 0 ..... ..... @rdn_rm_e0 16373cc7a88eSRichard HendersonAESD 01000101 00 10001 0 11100 1 ..... ..... @rdn_rm_e0 16383cc7a88eSRichard HendersonSM4E 01000101 00 10001 1 11100 0 ..... ..... @rdn_rm_e0 16393358eb3fSRichard Henderson 16403358eb3fSRichard Henderson# SVE2 crypto constructive binary operations 16413358eb3fSRichard HendersonSM4EKEY 01000101 00 1 ..... 11110 0 ..... ..... @rd_rn_rm_e0 16423358eb3fSRichard HendersonRAX1 01000101 00 1 ..... 11110 1 ..... ..... @rd_rn_rm_e0 16435c1b7226SRichard Henderson 16445c1b7226SRichard Henderson### SVE2 floating-point convert precision odd elements 164595365277SStephen LongFCVTXNT_ds 01100100 00 0010 10 101 ... ..... ..... @rd_pg_rn_e0 164695365277SStephen LongFCVTX_ds 01100101 00 0010 10 101 ... ..... ..... @rd_pg_rn_e0 16475c1b7226SRichard HendersonFCVTNT_sh 01100100 10 0010 00 101 ... ..... ..... @rd_pg_rn_e0 1648d29b17caSRichard HendersonBFCVTNT 01100100 10 0010 10 101 ... ..... ..... @rd_pg_rn_e0 164983c2523fSStephen LongFCVTLT_hs 01100100 10 0010 01 101 ... ..... ..... @rd_pg_rn_e0 16505c1b7226SRichard HendersonFCVTNT_ds 01100100 11 0010 10 101 ... ..... ..... @rd_pg_rn_e0 165183c2523fSStephen LongFCVTLT_sd 01100100 11 0010 11 101 ... ..... ..... @rd_pg_rn_e0 1652631be02eSStephen Long 1653631be02eSStephen Long### SVE2 floating-point convert to integer 1654631be02eSStephen LongFLOGB 01100101 00 011 esz:2 0101 pg:3 rn:5 rd:5 &rpr_esz 165550d102bdSStephen Long 165650d102bdSStephen Long### SVE2 floating-point multiply-add long (vectors) 165750d102bdSStephen LongFMLALB_zzzw 01100100 10 1 ..... 10 0 00 0 ..... ..... @rda_rn_rm_e0 165850d102bdSStephen LongFMLALT_zzzw 01100100 10 1 ..... 10 0 00 1 ..... ..... @rda_rn_rm_e0 165950d102bdSStephen LongFMLSLB_zzzw 01100100 10 1 ..... 10 1 00 0 ..... ..... @rda_rn_rm_e0 166050d102bdSStephen LongFMLSLT_zzzw 01100100 10 1 ..... 10 1 00 1 ..... ..... @rda_rn_rm_e0 166150d102bdSStephen Long 16625693887fSRichard HendersonBFMLALB_zzzw 01100100 11 1 ..... 10 0 00 0 ..... ..... @rda_rn_rm_e0 16635693887fSRichard HendersonBFMLALT_zzzw 01100100 11 1 ..... 10 0 00 1 ..... ..... @rda_rn_rm_e0 16645693887fSRichard Henderson 1665cb8657f7SRichard Henderson### SVE2 floating-point bfloat16 dot-product 1666cb8657f7SRichard HendersonBFDOT_zzzz 01100100 01 1 ..... 10 0 00 0 ..... ..... @rda_rn_rm_e0 1667cb8657f7SRichard Henderson 166850d102bdSStephen Long### SVE2 floating-point multiply-add long (indexed) 166950d102bdSStephen LongFMLALB_zzxw 01100100 10 1 ..... 0100.0 ..... ..... @rrxr_3a esz=2 167050d102bdSStephen LongFMLALT_zzxw 01100100 10 1 ..... 0100.1 ..... ..... @rrxr_3a esz=2 167150d102bdSStephen LongFMLSLB_zzxw 01100100 10 1 ..... 0110.0 ..... ..... @rrxr_3a esz=2 167250d102bdSStephen LongFMLSLT_zzxw 01100100 10 1 ..... 0110.1 ..... ..... @rrxr_3a esz=2 1673458d0ab6SRichard HendersonBFMLALB_zzxw 01100100 11 1 ..... 0100.0 ..... ..... @rrxr_3a esz=2 1674458d0ab6SRichard HendersonBFMLALT_zzxw 01100100 11 1 ..... 0100.1 ..... ..... @rrxr_3a esz=2 167583914478SRichard Henderson 167683914478SRichard Henderson### SVE2 floating-point bfloat16 dot-product (indexed) 167783914478SRichard HendersonBFDOT_zzxz 01100100 01 1 ..... 010000 ..... ..... @rrxr_2 esz=2 1678598ab0b2SRichard Henderson 1679598ab0b2SRichard Henderson### SVE broadcast predicate element 1680598ab0b2SRichard Henderson 1681598ab0b2SRichard Henderson&psel esz pd pn pm rv imm 1682598ab0b2SRichard Henderson%psel_rv 16:2 !function=plus_12 1683598ab0b2SRichard Henderson%psel_imm_b 22:2 19:2 1684598ab0b2SRichard Henderson%psel_imm_h 22:2 20:1 1685598ab0b2SRichard Henderson%psel_imm_s 22:2 1686598ab0b2SRichard Henderson%psel_imm_d 23:1 1687598ab0b2SRichard Henderson@psel ........ .. . ... .. .. pn:4 . pm:4 . pd:4 \ 1688598ab0b2SRichard Henderson &psel rv=%psel_rv 1689598ab0b2SRichard Henderson 1690598ab0b2SRichard HendersonPSEL 00100101 .. 1 ..1 .. 01 .... 0 .... 0 .... \ 1691598ab0b2SRichard Henderson @psel esz=0 imm=%psel_imm_b 1692598ab0b2SRichard HendersonPSEL 00100101 .. 1 .10 .. 01 .... 0 .... 0 .... \ 1693598ab0b2SRichard Henderson @psel esz=1 imm=%psel_imm_h 1694598ab0b2SRichard HendersonPSEL 00100101 .. 1 100 .. 01 .... 0 .... 0 .... \ 1695598ab0b2SRichard Henderson @psel esz=2 imm=%psel_imm_s 1696598ab0b2SRichard HendersonPSEL 00100101 .1 1 000 .. 01 .... 0 .... 0 .... \ 1697598ab0b2SRichard Henderson @psel esz=3 imm=%psel_imm_d 16986b5a3bdfSRichard Henderson 16996b5a3bdfSRichard Henderson### SVE clamp 17006b5a3bdfSRichard Henderson 17016b5a3bdfSRichard HendersonSCLAMP 01000100 .. 0 ..... 110000 ..... ..... @rda_rn_rm 17026b5a3bdfSRichard HendersonUCLAMP 01000100 .. 0 ..... 110001 ..... ..... @rda_rn_rm 1703