138388f7eSRichard Henderson# AArch64 SVE instruction descriptions 238388f7eSRichard Henderson# 338388f7eSRichard Henderson# Copyright (c) 2017 Linaro, Ltd 438388f7eSRichard Henderson# 538388f7eSRichard Henderson# This library is free software; you can redistribute it and/or 638388f7eSRichard Henderson# modify it under the terms of the GNU Lesser General Public 738388f7eSRichard Henderson# License as published by the Free Software Foundation; either 850f57e09SChetan Pant# version 2.1 of the License, or (at your option) any later version. 938388f7eSRichard Henderson# 1038388f7eSRichard Henderson# This library is distributed in the hope that it will be useful, 1138388f7eSRichard Henderson# but WITHOUT ANY WARRANTY; without even the implied warranty of 1238388f7eSRichard Henderson# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1338388f7eSRichard Henderson# Lesser General Public License for more details. 1438388f7eSRichard Henderson# 1538388f7eSRichard Henderson# You should have received a copy of the GNU Lesser General Public 1638388f7eSRichard Henderson# License along with this library; if not, see <http://www.gnu.org/licenses/>. 1738388f7eSRichard Henderson 1838388f7eSRichard Henderson# 1938388f7eSRichard Henderson# This file is processed by scripts/decodetree.py 2038388f7eSRichard Henderson# 2138388f7eSRichard Henderson 2238388f7eSRichard Henderson########################################################################### 23d1822297SRichard Henderson# Named fields. These are primarily for disjoint fields. 24d1822297SRichard Henderson 2524e82e68SRichard Henderson%imm4_16_p1 16:4 !function=plus1 26ccd841c3SRichard Henderson%imm6_22_5 22:1 5:5 2730562ab7SRichard Henderson%imm7_22_16 22:2 16:5 28b94f8f60SRichard Henderson%imm8_16_10 16:5 10:3 29d1822297SRichard Henderson%imm9_16_10 16:s6 10:3 301a039c7eSRichard Henderson%size_23 23:2 3168459864SRichard Henderson%dtype_23_13 23:2 13:2 32ca40a6e6SRichard Henderson%index3_22_19 22:1 19:2 33d1822297SRichard Henderson 34ccd841c3SRichard Henderson# A combination of tsz:imm3 -- extract esize. 35ccd841c3SRichard Henderson%tszimm_esz 22:2 5:5 !function=tszimm_esz 36ccd841c3SRichard Henderson# A combination of tsz:imm3 -- extract (2 * esize) - (tsz:imm3) 37ccd841c3SRichard Henderson%tszimm_shr 22:2 5:5 !function=tszimm_shr 38ccd841c3SRichard Henderson# A combination of tsz:imm3 -- extract (tsz:imm3) - esize 39ccd841c3SRichard Henderson%tszimm_shl 22:2 5:5 !function=tszimm_shl 40ccd841c3SRichard Henderson 41d9d78dccSRichard Henderson# Similarly for the tszh/tszl pair at 22/16 for zzi 42d9d78dccSRichard Henderson%tszimm16_esz 22:2 16:5 !function=tszimm_esz 43d9d78dccSRichard Henderson%tszimm16_shr 22:2 16:5 !function=tszimm_shr 44d9d78dccSRichard Henderson%tszimm16_shl 22:2 16:5 !function=tszimm_shl 45d9d78dccSRichard Henderson 46f25a2361SRichard Henderson# Signed 8-bit immediate, optionally shifted left by 8. 47f25a2361SRichard Henderson%sh8_i8s 5:9 !function=expand_imm_sh8s 486e6a157dSRichard Henderson# Unsigned 8-bit immediate, optionally shifted left by 8. 496e6a157dSRichard Henderson%sh8_i8u 5:9 !function=expand_imm_sh8u 50f25a2361SRichard Henderson 51c4e7c493SRichard Henderson# Unsigned load of msz into esz=2, represented as a dtype. 52c4e7c493SRichard Henderson%msz_dtype 23:2 !function=msz_dtype 53c4e7c493SRichard Henderson 54f97cfd59SRichard Henderson# Either a copy of rd (at bit 0), or a different source 55f97cfd59SRichard Henderson# as propagated via the MOVPRFX instruction. 56f97cfd59SRichard Henderson%reg_movprfx 0:5 57f97cfd59SRichard Henderson 58d1822297SRichard Henderson########################################################################### 5938388f7eSRichard Henderson# Named attribute sets. These are used to make nice(er) names 6038388f7eSRichard Henderson# when creating helpers common to those for the individual 6138388f7eSRichard Henderson# instruction patterns. 6238388f7eSRichard Henderson 63028e2a7bSRichard Henderson&rr_esz rd rn esz 64d1822297SRichard Henderson&rri rd rn imm 65e1fa1164SRichard Henderson&rr_dbm rd rn dbm 664b242d9cSRichard Henderson&rrri rd rn rm imm 67d9d78dccSRichard Henderson&rri_esz rd rn imm esz 68e6eba6e5SRichard Henderson&rrri_esz rd rn rm imm esz 6938388f7eSRichard Henderson&rrr_esz rd rn rm esz 701c737d9cSRichard Henderson&rrx_esz rd rn rm index esz 71047cec97SRichard Henderson&rpr_esz rd pg rn esz 7235da316fSRichard Henderson&rpr_s rd pg rn s 73516e246aSRichard Henderson&rprr_s rd pg rn rm s 74f97cfd59SRichard Henderson&rprr_esz rd pg rn rm esz 7538650638SRichard Henderson&rrrr_esz rd ra rn rm esz 760a82d963SRichard Henderson&rrxr_esz rd rn rm ra index esz 7796a36e4aSRichard Henderson&rprrr_esz rd pg rn rm ra esz 78ccd841c3SRichard Henderson&rpri_esz rd pg rn imm esz 7924e82e68SRichard Henderson&ptrue rd esz pat s 8024e82e68SRichard Henderson&incdec_cnt rd pat esz imm d u 8124e82e68SRichard Henderson&incdec2_cnt rd rn pat esz imm d u 829ee3a611SRichard Henderson&incdec_pred rd pg esz d u 839ee3a611SRichard Henderson&incdec2_pred rd rn pg esz d u 84c4e7c493SRichard Henderson&rprr_load rd pg rn rm dtype nreg 85c4e7c493SRichard Henderson&rpri_load rd pg rn imm dtype nreg 861a039c7eSRichard Henderson&rprr_store rd pg rn rm msz esz nreg 871a039c7eSRichard Henderson&rpri_store rd pg rn imm msz esz nreg 88673e9fa6SRichard Henderson&rprr_gather_load rd pg rn rm esz msz u ff xs scale 89673e9fa6SRichard Henderson&rpri_gather_load rd pg rn imm esz msz u ff 90f6dbf62aSRichard Henderson&rprr_scatter_store rd pg rn rm esz msz xs scale 91408ecde9SRichard Henderson&rpri_scatter_store rd pg rn imm esz msz 9238388f7eSRichard Henderson 9338388f7eSRichard Henderson########################################################################### 9438388f7eSRichard Henderson# Named instruction formats. These are generally used to 9538388f7eSRichard Henderson# reduce the amount of duplication between instruction patterns. 9638388f7eSRichard Henderson 97028e2a7bSRichard Henderson# Two operand with unused vector element size 98028e2a7bSRichard Henderson@pd_pn_e0 ........ ........ ....... rn:4 . rd:4 &rr_esz esz=0 99028e2a7bSRichard Henderson 100028e2a7bSRichard Henderson# Two operand 101028e2a7bSRichard Henderson@pd_pn ........ esz:2 .. .... ....... rn:4 . rd:4 &rr_esz 1020762cd42SRichard Henderson@rd_rn ........ esz:2 ...... ...... rn:5 rd:5 &rr_esz 103028e2a7bSRichard Henderson 10435da316fSRichard Henderson# Two operand with governing predicate, flags setting 10535da316fSRichard Henderson@pd_pg_pn_s ........ . s:1 ...... .. pg:4 . rn:4 . rd:4 &rpr_s 106407e6ce7SRichard Henderson@pd_pg_pn_s0 ........ . . ...... .. pg:4 . rn:4 . rd:4 &rpr_s s=0 10735da316fSRichard Henderson 10838388f7eSRichard Henderson# Three operand with unused vector element size 10938388f7eSRichard Henderson@rd_rn_rm_e0 ........ ... rm:5 ... ... rn:5 rd:5 &rrr_esz esz=0 11038388f7eSRichard Henderson 111516e246aSRichard Henderson# Three predicate operand, with governing predicate, flag setting 112516e246aSRichard Henderson@pd_pg_pn_pm_s ........ . s:1 .. rm:4 .. pg:4 . rn:4 . rd:4 &rprr_s 113516e246aSRichard Henderson 114fea98f9cSRichard Henderson# Three operand, vector element size 115fea98f9cSRichard Henderson@rd_rn_rm ........ esz:2 . rm:5 ... ... rn:5 rd:5 &rrr_esz 116d731d8cbSRichard Henderson@pd_pn_pm ........ esz:2 .. rm:4 ....... rn:4 . rd:4 &rrr_esz 11730562ab7SRichard Henderson@rdn_rm ........ esz:2 ...... ...... rm:5 rd:5 \ 11830562ab7SRichard Henderson &rrr_esz rn=%reg_movprfx 1196e6a157dSRichard Henderson@rdn_sh_i8u ........ esz:2 ...... ...... ..... rd:5 \ 1206e6a157dSRichard Henderson &rri_esz rn=%reg_movprfx imm=%sh8_i8u 1216e6a157dSRichard Henderson@rdn_i8u ........ esz:2 ...... ... imm:8 rd:5 \ 1226e6a157dSRichard Henderson &rri_esz rn=%reg_movprfx 1236e6a157dSRichard Henderson@rdn_i8s ........ esz:2 ...... ... imm:s8 rd:5 \ 1246e6a157dSRichard Henderson &rri_esz rn=%reg_movprfx 125fea98f9cSRichard Henderson 12638650638SRichard Henderson# Four operand, vector element size 12738650638SRichard Henderson@rda_rn_rm ........ esz:2 . rm:5 ... ... rn:5 rd:5 \ 12838650638SRichard Henderson &rrrr_esz ra=%reg_movprfx 12938650638SRichard Henderson 130911cdc6dSRichard Henderson# Four operand with unused vector element size 131911cdc6dSRichard Henderson@rdn_ra_rm_e0 ........ ... rm:5 ... ... ra:5 rd:5 \ 132911cdc6dSRichard Henderson &rrrr_esz esz=0 rn=%reg_movprfx 133911cdc6dSRichard Henderson 1344b242d9cSRichard Henderson# Three operand with "memory" size, aka immediate left shift 1354b242d9cSRichard Henderson@rd_rn_msz_rm ........ ... rm:5 .... imm:2 rn:5 rd:5 &rrri 1364b242d9cSRichard Henderson 137f97cfd59SRichard Henderson# Two register operand, with governing predicate, vector element size 138f97cfd59SRichard Henderson@rdn_pg_rm ........ esz:2 ... ... ... pg:3 rm:5 rd:5 \ 139f97cfd59SRichard Henderson &rprr_esz rn=%reg_movprfx 140f97cfd59SRichard Henderson@rdm_pg_rn ........ esz:2 ... ... ... pg:3 rn:5 rd:5 \ 141f97cfd59SRichard Henderson &rprr_esz rm=%reg_movprfx 142d3fe4a29SRichard Henderson@rd_pg4_rn_rm ........ esz:2 . rm:5 .. pg:4 rn:5 rd:5 &rprr_esz 143757f9cffSRichard Henderson@pd_pg_rn_rm ........ esz:2 . rm:5 ... pg:3 rn:5 . rd:4 &rprr_esz 144f97cfd59SRichard Henderson 14596a36e4aSRichard Henderson# Three register operand, with governing predicate, vector element size 14696a36e4aSRichard Henderson@rda_pg_rn_rm ........ esz:2 . rm:5 ... pg:3 rn:5 rd:5 \ 14796a36e4aSRichard Henderson &rprrr_esz ra=%reg_movprfx 14896a36e4aSRichard Henderson@rdn_pg_ra_rm ........ esz:2 . rm:5 ... pg:3 ra:5 rd:5 \ 14996a36e4aSRichard Henderson &rprrr_esz rn=%reg_movprfx 1506ceabaadSRichard Henderson@rdn_pg_rm_ra ........ esz:2 . ra:5 ... pg:3 rm:5 rd:5 \ 1516ceabaadSRichard Henderson &rprrr_esz rn=%reg_movprfx 1527d47ac94SStephen Long@rd_pg_rn_rm ........ esz:2 . rm:5 ... pg:3 rn:5 rd:5 &rprr_esz 15396a36e4aSRichard Henderson 154047cec97SRichard Henderson# One register operand, with governing predicate, vector element size 155047cec97SRichard Henderson@rd_pg_rn ........ esz:2 ... ... ... pg:3 rn:5 rd:5 &rpr_esz 1569ee3a611SRichard Henderson@rd_pg4_pn ........ esz:2 ... ... .. pg:4 . rn:4 rd:5 &rpr_esz 1574d2e2a03SRichard Henderson@pd_pg_rn ........ esz:2 ... ... ... pg:3 rn:5 . rd:4 &rpr_esz 158047cec97SRichard Henderson 1598092c6a3SRichard Henderson# One register operand, with governing predicate, no vector element size 1608092c6a3SRichard Henderson@rd_pg_rn_e0 ........ .. ... ... ... pg:3 rn:5 rd:5 &rpr_esz esz=0 1618092c6a3SRichard Henderson 16296f922ccSRichard Henderson# Two register operands with a 6-bit signed immediate. 16396f922ccSRichard Henderson@rd_rn_i6 ........ ... rn:5 ..... imm:s6 rd:5 &rri 16496f922ccSRichard Henderson 165ccd841c3SRichard Henderson# Two register operand, one immediate operand, with predicate, 166830d1a5aSRichard Henderson# element size encoded as TSZHL. 167830d1a5aSRichard Henderson@rdn_pg_tszimm_shl ........ .. ... ... ... pg:3 ..... rd:5 \ 168830d1a5aSRichard Henderson &rpri_esz rn=%reg_movprfx esz=%tszimm_esz imm=%tszimm_shl 169830d1a5aSRichard Henderson@rdn_pg_tszimm_shr ........ .. ... ... ... pg:3 ..... rd:5 \ 170830d1a5aSRichard Henderson &rpri_esz rn=%reg_movprfx esz=%tszimm_esz imm=%tszimm_shr 171ccd841c3SRichard Henderson 172d9d78dccSRichard Henderson# Similarly without predicate. 173830d1a5aSRichard Henderson@rd_rn_tszimm_shl ........ .. ... ... ...... rn:5 rd:5 \ 174830d1a5aSRichard Henderson &rri_esz esz=%tszimm16_esz imm=%tszimm16_shl 175830d1a5aSRichard Henderson@rd_rn_tszimm_shr ........ .. ... ... ...... rn:5 rd:5 \ 176830d1a5aSRichard Henderson &rri_esz esz=%tszimm16_esz imm=%tszimm16_shr 177d9d78dccSRichard Henderson 178f25a2361SRichard Henderson# Two register operand, one immediate operand, with 4-bit predicate. 179f25a2361SRichard Henderson# User must fill in imm. 180f25a2361SRichard Henderson@rdn_pg4 ........ esz:2 .. pg:4 ... ........ rd:5 \ 181f25a2361SRichard Henderson &rpri_esz rn=%reg_movprfx 182f25a2361SRichard Henderson 183cc48affeSRichard Henderson# Two register operand, one one-bit floating-point operand. 184cc48affeSRichard Henderson@rdn_i1 ........ esz:2 ......... pg:3 .... imm:1 rd:5 \ 185cc48affeSRichard Henderson &rpri_esz rn=%reg_movprfx 186cc48affeSRichard Henderson 187e1fa1164SRichard Henderson# Two register operand, one encoded bitmask. 188e1fa1164SRichard Henderson@rdn_dbm ........ .. .... dbm:13 rd:5 \ 189e1fa1164SRichard Henderson &rr_dbm rn=%reg_movprfx 190e1fa1164SRichard Henderson 19138cadebaSRichard Henderson# Predicate output, vector and immediate input, 19238cadebaSRichard Henderson# controlling predicate, element size. 19338cadebaSRichard Henderson@pd_pg_rn_i7 ........ esz:2 . imm:7 . pg:3 rn:5 . rd:4 &rpri_esz 19438cadebaSRichard Henderson@pd_pg_rn_i5 ........ esz:2 . imm:s5 ... pg:3 rn:5 . rd:4 &rpri_esz 19538cadebaSRichard Henderson 196d1822297SRichard Henderson# Basic Load/Store with 9-bit immediate offset 197d1822297SRichard Henderson@pd_rn_i9 ........ ........ ...... rn:5 . rd:4 \ 198d1822297SRichard Henderson &rri imm=%imm9_16_10 199d1822297SRichard Henderson@rd_rn_i9 ........ ........ ...... rn:5 rd:5 \ 200d1822297SRichard Henderson &rri imm=%imm9_16_10 201d1822297SRichard Henderson 20224e82e68SRichard Henderson# One register, pattern, and uint4+1. 20324e82e68SRichard Henderson# User must fill in U and D. 20424e82e68SRichard Henderson@incdec_cnt ........ esz:2 .. .... ...... pat:5 rd:5 \ 20524e82e68SRichard Henderson &incdec_cnt imm=%imm4_16_p1 20624e82e68SRichard Henderson@incdec2_cnt ........ esz:2 .. .... ...... pat:5 rd:5 \ 20724e82e68SRichard Henderson &incdec2_cnt imm=%imm4_16_p1 rn=%reg_movprfx 20824e82e68SRichard Henderson 2099ee3a611SRichard Henderson# One register, predicate. 2109ee3a611SRichard Henderson# User must fill in U and D. 2119ee3a611SRichard Henderson@incdec_pred ........ esz:2 .... .. ..... .. pg:4 rd:5 &incdec_pred 2129ee3a611SRichard Henderson@incdec2_pred ........ esz:2 .... .. ..... .. pg:4 rd:5 \ 2139ee3a611SRichard Henderson &incdec2_pred rn=%reg_movprfx 2149ee3a611SRichard Henderson 215c4e7c493SRichard Henderson# Loads; user must fill in NREG. 216c4e7c493SRichard Henderson@rprr_load_dt ....... dtype:4 rm:5 ... pg:3 rn:5 rd:5 &rprr_load 217c4e7c493SRichard Henderson@rpri_load_dt ....... dtype:4 . imm:s4 ... pg:3 rn:5 rd:5 &rpri_load 218c4e7c493SRichard Henderson 219c4e7c493SRichard Henderson@rprr_load_msz ....... .... rm:5 ... pg:3 rn:5 rd:5 \ 220c4e7c493SRichard Henderson &rprr_load dtype=%msz_dtype 221c4e7c493SRichard Henderson@rpri_load_msz ....... .... . imm:s4 ... pg:3 rn:5 rd:5 \ 222c4e7c493SRichard Henderson &rpri_load dtype=%msz_dtype 223c4e7c493SRichard Henderson 224673e9fa6SRichard Henderson# Gather Loads. 225673e9fa6SRichard Henderson@rprr_g_load_u ....... .. . . rm:5 . u:1 ff:1 pg:3 rn:5 rd:5 \ 226673e9fa6SRichard Henderson &rprr_gather_load xs=2 227673e9fa6SRichard Henderson@rprr_g_load_xs_u ....... .. xs:1 . rm:5 . u:1 ff:1 pg:3 rn:5 rd:5 \ 228673e9fa6SRichard Henderson &rprr_gather_load 229673e9fa6SRichard Henderson@rprr_g_load_xs_u_sc ....... .. xs:1 scale:1 rm:5 . u:1 ff:1 pg:3 rn:5 rd:5 \ 230673e9fa6SRichard Henderson &rprr_gather_load 231673e9fa6SRichard Henderson@rprr_g_load_xs_sc ....... .. xs:1 scale:1 rm:5 . . ff:1 pg:3 rn:5 rd:5 \ 232673e9fa6SRichard Henderson &rprr_gather_load 233673e9fa6SRichard Henderson@rprr_g_load_u_sc ....... .. . scale:1 rm:5 . u:1 ff:1 pg:3 rn:5 rd:5 \ 234673e9fa6SRichard Henderson &rprr_gather_load xs=2 235673e9fa6SRichard Henderson@rprr_g_load_sc ....... .. . scale:1 rm:5 . . ff:1 pg:3 rn:5 rd:5 \ 236673e9fa6SRichard Henderson &rprr_gather_load xs=2 237673e9fa6SRichard Henderson@rpri_g_load ....... msz:2 .. imm:5 . u:1 ff:1 pg:3 rn:5 rd:5 \ 238673e9fa6SRichard Henderson &rpri_gather_load 239673e9fa6SRichard Henderson 2401a039c7eSRichard Henderson# Stores; user must fill in ESZ, MSZ, NREG as needed. 2411a039c7eSRichard Henderson@rprr_store ....... .. .. rm:5 ... pg:3 rn:5 rd:5 &rprr_store 2421a039c7eSRichard Henderson@rpri_store_msz ....... msz:2 .. . imm:s4 ... pg:3 rn:5 rd:5 &rpri_store 2431a039c7eSRichard Henderson@rprr_store_esz_n0 ....... .. esz:2 rm:5 ... pg:3 rn:5 rd:5 \ 2441a039c7eSRichard Henderson &rprr_store nreg=0 245f6dbf62aSRichard Henderson@rprr_scatter_store ....... msz:2 .. rm:5 ... pg:3 rn:5 rd:5 \ 246f6dbf62aSRichard Henderson &rprr_scatter_store 247408ecde9SRichard Henderson@rpri_scatter_store ....... msz:2 .. imm:5 ... pg:3 rn:5 rd:5 \ 248408ecde9SRichard Henderson &rpri_scatter_store 2491a039c7eSRichard Henderson 2501c737d9cSRichard Henderson# Two registers and a scalar by N-bit index 2511c737d9cSRichard Henderson@rrx_3 ........ .. . .. rm:3 ...... rn:5 rd:5 \ 2521c737d9cSRichard Henderson &rrx_esz index=%index3_22_19 2531c737d9cSRichard Henderson@rrx_2 ........ .. . index:2 rm:3 ...... rn:5 rd:5 &rrx_esz 2541c737d9cSRichard Henderson@rrx_1 ........ .. . index:1 rm:4 ...... rn:5 rd:5 &rrx_esz 2551c737d9cSRichard Henderson 2560a82d963SRichard Henderson# Three registers and a scalar by N-bit index 2570a82d963SRichard Henderson@rrxr_3 ........ .. . .. rm:3 ...... rn:5 rd:5 \ 2580a82d963SRichard Henderson &rrxr_esz ra=%reg_movprfx index=%index3_22_19 2590a82d963SRichard Henderson@rrxr_2 ........ .. . index:2 rm:3 ...... rn:5 rd:5 \ 2600a82d963SRichard Henderson &rrxr_esz ra=%reg_movprfx 2610a82d963SRichard Henderson@rrxr_1 ........ .. . index:1 rm:4 ...... rn:5 rd:5 \ 2620a82d963SRichard Henderson &rrxr_esz ra=%reg_movprfx 2630a82d963SRichard Henderson 26438388f7eSRichard Henderson########################################################################### 26538388f7eSRichard Henderson# Instruction patterns. Grouped according to the SVE encodingindex.xhtml. 26638388f7eSRichard Henderson 267f97cfd59SRichard Henderson### SVE Integer Arithmetic - Binary Predicated Group 268f97cfd59SRichard Henderson 269f97cfd59SRichard Henderson# SVE bitwise logical vector operations (predicated) 270f97cfd59SRichard HendersonORR_zpzz 00000100 .. 011 000 000 ... ..... ..... @rdn_pg_rm 271f97cfd59SRichard HendersonEOR_zpzz 00000100 .. 011 001 000 ... ..... ..... @rdn_pg_rm 272f97cfd59SRichard HendersonAND_zpzz 00000100 .. 011 010 000 ... ..... ..... @rdn_pg_rm 273f97cfd59SRichard HendersonBIC_zpzz 00000100 .. 011 011 000 ... ..... ..... @rdn_pg_rm 274f97cfd59SRichard Henderson 275f97cfd59SRichard Henderson# SVE integer add/subtract vectors (predicated) 276f97cfd59SRichard HendersonADD_zpzz 00000100 .. 000 000 000 ... ..... ..... @rdn_pg_rm 277f97cfd59SRichard HendersonSUB_zpzz 00000100 .. 000 001 000 ... ..... ..... @rdn_pg_rm 278f97cfd59SRichard HendersonSUB_zpzz 00000100 .. 000 011 000 ... ..... ..... @rdm_pg_rn # SUBR 279f97cfd59SRichard Henderson 280f97cfd59SRichard Henderson# SVE integer min/max/difference (predicated) 281f97cfd59SRichard HendersonSMAX_zpzz 00000100 .. 001 000 000 ... ..... ..... @rdn_pg_rm 282f97cfd59SRichard HendersonUMAX_zpzz 00000100 .. 001 001 000 ... ..... ..... @rdn_pg_rm 283f97cfd59SRichard HendersonSMIN_zpzz 00000100 .. 001 010 000 ... ..... ..... @rdn_pg_rm 284f97cfd59SRichard HendersonUMIN_zpzz 00000100 .. 001 011 000 ... ..... ..... @rdn_pg_rm 285f97cfd59SRichard HendersonSABD_zpzz 00000100 .. 001 100 000 ... ..... ..... @rdn_pg_rm 286f97cfd59SRichard HendersonUABD_zpzz 00000100 .. 001 101 000 ... ..... ..... @rdn_pg_rm 287f97cfd59SRichard Henderson 288f97cfd59SRichard Henderson# SVE integer multiply/divide (predicated) 289f97cfd59SRichard HendersonMUL_zpzz 00000100 .. 010 000 000 ... ..... ..... @rdn_pg_rm 290f97cfd59SRichard HendersonSMULH_zpzz 00000100 .. 010 010 000 ... ..... ..... @rdn_pg_rm 291f97cfd59SRichard HendersonUMULH_zpzz 00000100 .. 010 011 000 ... ..... ..... @rdn_pg_rm 292f97cfd59SRichard Henderson# Note that divide requires size >= 2; below 2 is unallocated. 293f97cfd59SRichard HendersonSDIV_zpzz 00000100 .. 010 100 000 ... ..... ..... @rdn_pg_rm 294f97cfd59SRichard HendersonUDIV_zpzz 00000100 .. 010 101 000 ... ..... ..... @rdn_pg_rm 295f97cfd59SRichard HendersonSDIV_zpzz 00000100 .. 010 110 000 ... ..... ..... @rdm_pg_rn # SDIVR 296f97cfd59SRichard HendersonUDIV_zpzz 00000100 .. 010 111 000 ... ..... ..... @rdm_pg_rn # UDIVR 297f97cfd59SRichard Henderson 298047cec97SRichard Henderson### SVE Integer Reduction Group 299047cec97SRichard Henderson 300047cec97SRichard Henderson# SVE bitwise logical reduction (predicated) 301047cec97SRichard HendersonORV 00000100 .. 011 000 001 ... ..... ..... @rd_pg_rn 302047cec97SRichard HendersonEORV 00000100 .. 011 001 001 ... ..... ..... @rd_pg_rn 303047cec97SRichard HendersonANDV 00000100 .. 011 010 001 ... ..... ..... @rd_pg_rn 304047cec97SRichard Henderson 305a2103582SRichard Henderson# SVE constructive prefix (predicated) 306a2103582SRichard HendersonMOVPRFX_z 00000100 .. 010 000 001 ... ..... ..... @rd_pg_rn 307a2103582SRichard HendersonMOVPRFX_m 00000100 .. 010 001 001 ... ..... ..... @rd_pg_rn 308a2103582SRichard Henderson 309047cec97SRichard Henderson# SVE integer add reduction (predicated) 310047cec97SRichard Henderson# Note that saddv requires size != 3. 311047cec97SRichard HendersonUADDV 00000100 .. 000 001 001 ... ..... ..... @rd_pg_rn 312047cec97SRichard HendersonSADDV 00000100 .. 000 000 001 ... ..... ..... @rd_pg_rn 313047cec97SRichard Henderson 314047cec97SRichard Henderson# SVE integer min/max reduction (predicated) 315047cec97SRichard HendersonSMAXV 00000100 .. 001 000 001 ... ..... ..... @rd_pg_rn 316047cec97SRichard HendersonUMAXV 00000100 .. 001 001 001 ... ..... ..... @rd_pg_rn 317047cec97SRichard HendersonSMINV 00000100 .. 001 010 001 ... ..... ..... @rd_pg_rn 318047cec97SRichard HendersonUMINV 00000100 .. 001 011 001 ... ..... ..... @rd_pg_rn 319047cec97SRichard Henderson 320ccd841c3SRichard Henderson### SVE Shift by Immediate - Predicated Group 321ccd841c3SRichard Henderson 322ccd841c3SRichard Henderson# SVE bitwise shift by immediate (predicated) 323830d1a5aSRichard HendersonASR_zpzi 00000100 .. 000 000 100 ... .. ... ..... @rdn_pg_tszimm_shr 324830d1a5aSRichard HendersonLSR_zpzi 00000100 .. 000 001 100 ... .. ... ..... @rdn_pg_tszimm_shr 325830d1a5aSRichard HendersonLSL_zpzi 00000100 .. 000 011 100 ... .. ... ..... @rdn_pg_tszimm_shl 326830d1a5aSRichard HendersonASRD 00000100 .. 000 100 100 ... .. ... ..... @rdn_pg_tszimm_shr 327ccd841c3SRichard Henderson 32827721dbbSRichard Henderson# SVE bitwise shift by vector (predicated) 32927721dbbSRichard HendersonASR_zpzz 00000100 .. 010 000 100 ... ..... ..... @rdn_pg_rm 33027721dbbSRichard HendersonLSR_zpzz 00000100 .. 010 001 100 ... ..... ..... @rdn_pg_rm 33127721dbbSRichard HendersonLSL_zpzz 00000100 .. 010 011 100 ... ..... ..... @rdn_pg_rm 33227721dbbSRichard HendersonASR_zpzz 00000100 .. 010 100 100 ... ..... ..... @rdm_pg_rn # ASRR 33327721dbbSRichard HendersonLSR_zpzz 00000100 .. 010 101 100 ... ..... ..... @rdm_pg_rn # LSRR 33427721dbbSRichard HendersonLSL_zpzz 00000100 .. 010 111 100 ... ..... ..... @rdm_pg_rn # LSLR 33527721dbbSRichard Henderson 336fe7f8dfbSRichard Henderson# SVE bitwise shift by wide elements (predicated) 337fe7f8dfbSRichard Henderson# Note these require size != 3. 338fe7f8dfbSRichard HendersonASR_zpzw 00000100 .. 011 000 100 ... ..... ..... @rdn_pg_rm 339fe7f8dfbSRichard HendersonLSR_zpzw 00000100 .. 011 001 100 ... ..... ..... @rdn_pg_rm 340fe7f8dfbSRichard HendersonLSL_zpzw 00000100 .. 011 011 100 ... ..... ..... @rdn_pg_rm 341fe7f8dfbSRichard Henderson 342afac6d04SRichard Henderson### SVE Integer Arithmetic - Unary Predicated Group 343afac6d04SRichard Henderson 344afac6d04SRichard Henderson# SVE unary bit operations (predicated) 345afac6d04SRichard Henderson# Note esz != 0 for FABS and FNEG. 346afac6d04SRichard HendersonCLS 00000100 .. 011 000 101 ... ..... ..... @rd_pg_rn 347afac6d04SRichard HendersonCLZ 00000100 .. 011 001 101 ... ..... ..... @rd_pg_rn 348afac6d04SRichard HendersonCNT_zpz 00000100 .. 011 010 101 ... ..... ..... @rd_pg_rn 349afac6d04SRichard HendersonCNOT 00000100 .. 011 011 101 ... ..... ..... @rd_pg_rn 350afac6d04SRichard HendersonNOT_zpz 00000100 .. 011 110 101 ... ..... ..... @rd_pg_rn 351afac6d04SRichard HendersonFABS 00000100 .. 011 100 101 ... ..... ..... @rd_pg_rn 352afac6d04SRichard HendersonFNEG 00000100 .. 011 101 101 ... ..... ..... @rd_pg_rn 353afac6d04SRichard Henderson 354afac6d04SRichard Henderson# SVE integer unary operations (predicated) 355afac6d04SRichard Henderson# Note esz > original size for extensions. 356afac6d04SRichard HendersonABS 00000100 .. 010 110 101 ... ..... ..... @rd_pg_rn 357afac6d04SRichard HendersonNEG 00000100 .. 010 111 101 ... ..... ..... @rd_pg_rn 358afac6d04SRichard HendersonSXTB 00000100 .. 010 000 101 ... ..... ..... @rd_pg_rn 359afac6d04SRichard HendersonUXTB 00000100 .. 010 001 101 ... ..... ..... @rd_pg_rn 360afac6d04SRichard HendersonSXTH 00000100 .. 010 010 101 ... ..... ..... @rd_pg_rn 361afac6d04SRichard HendersonUXTH 00000100 .. 010 011 101 ... ..... ..... @rd_pg_rn 362afac6d04SRichard HendersonSXTW 00000100 .. 010 100 101 ... ..... ..... @rd_pg_rn 363afac6d04SRichard HendersonUXTW 00000100 .. 010 101 101 ... ..... ..... @rd_pg_rn 364afac6d04SRichard Henderson 365abfdefd5SRichard Henderson### SVE Floating Point Compare - Vectors Group 366abfdefd5SRichard Henderson 367abfdefd5SRichard Henderson# SVE floating-point compare vectors 368abfdefd5SRichard HendersonFCMGE_ppzz 01100101 .. 0 ..... 010 ... ..... 0 .... @pd_pg_rn_rm 369abfdefd5SRichard HendersonFCMGT_ppzz 01100101 .. 0 ..... 010 ... ..... 1 .... @pd_pg_rn_rm 370abfdefd5SRichard HendersonFCMEQ_ppzz 01100101 .. 0 ..... 011 ... ..... 0 .... @pd_pg_rn_rm 371abfdefd5SRichard HendersonFCMNE_ppzz 01100101 .. 0 ..... 011 ... ..... 1 .... @pd_pg_rn_rm 372abfdefd5SRichard HendersonFCMUO_ppzz 01100101 .. 0 ..... 110 ... ..... 0 .... @pd_pg_rn_rm 373abfdefd5SRichard HendersonFACGE_ppzz 01100101 .. 0 ..... 110 ... ..... 1 .... @pd_pg_rn_rm 374abfdefd5SRichard HendersonFACGT_ppzz 01100101 .. 0 ..... 111 ... ..... 1 .... @pd_pg_rn_rm 375abfdefd5SRichard Henderson 37696a36e4aSRichard Henderson### SVE Integer Multiply-Add Group 37796a36e4aSRichard Henderson 37896a36e4aSRichard Henderson# SVE integer multiply-add writing addend (predicated) 37996a36e4aSRichard HendersonMLA 00000100 .. 0 ..... 010 ... ..... ..... @rda_pg_rn_rm 38096a36e4aSRichard HendersonMLS 00000100 .. 0 ..... 011 ... ..... ..... @rda_pg_rn_rm 38196a36e4aSRichard Henderson 38296a36e4aSRichard Henderson# SVE integer multiply-add writing multiplicand (predicated) 38396a36e4aSRichard HendersonMLA 00000100 .. 0 ..... 110 ... ..... ..... @rdn_pg_ra_rm # MAD 38496a36e4aSRichard HendersonMLS 00000100 .. 0 ..... 111 ... ..... ..... @rdn_pg_ra_rm # MSB 38596a36e4aSRichard Henderson 386fea98f9cSRichard Henderson### SVE Integer Arithmetic - Unpredicated Group 387fea98f9cSRichard Henderson 388fea98f9cSRichard Henderson# SVE integer add/subtract vectors (unpredicated) 389fea98f9cSRichard HendersonADD_zzz 00000100 .. 1 ..... 000 000 ..... ..... @rd_rn_rm 390fea98f9cSRichard HendersonSUB_zzz 00000100 .. 1 ..... 000 001 ..... ..... @rd_rn_rm 391fea98f9cSRichard HendersonSQADD_zzz 00000100 .. 1 ..... 000 100 ..... ..... @rd_rn_rm 392fea98f9cSRichard HendersonUQADD_zzz 00000100 .. 1 ..... 000 101 ..... ..... @rd_rn_rm 393fea98f9cSRichard HendersonSQSUB_zzz 00000100 .. 1 ..... 000 110 ..... ..... @rd_rn_rm 394fea98f9cSRichard HendersonUQSUB_zzz 00000100 .. 1 ..... 000 111 ..... ..... @rd_rn_rm 395fea98f9cSRichard Henderson 39638388f7eSRichard Henderson### SVE Logical - Unpredicated Group 39738388f7eSRichard Henderson 39838388f7eSRichard Henderson# SVE bitwise logical operations (unpredicated) 39938388f7eSRichard HendersonAND_zzz 00000100 00 1 ..... 001 100 ..... ..... @rd_rn_rm_e0 40038388f7eSRichard HendersonORR_zzz 00000100 01 1 ..... 001 100 ..... ..... @rd_rn_rm_e0 40138388f7eSRichard HendersonEOR_zzz 00000100 10 1 ..... 001 100 ..... ..... @rd_rn_rm_e0 40238388f7eSRichard HendersonBIC_zzz 00000100 11 1 ..... 001 100 ..... ..... @rd_rn_rm_e0 403d1822297SRichard Henderson 404e6eba6e5SRichard HendersonXAR 00000100 .. 1 ..... 001 101 rm:5 rd:5 &rrri_esz \ 405e6eba6e5SRichard Henderson rn=%reg_movprfx esz=%tszimm16_esz imm=%tszimm16_shr 406e6eba6e5SRichard Henderson 407911cdc6dSRichard Henderson# SVE2 bitwise ternary operations 408911cdc6dSRichard HendersonEOR3 00000100 00 1 ..... 001 110 ..... ..... @rdn_ra_rm_e0 409911cdc6dSRichard HendersonBSL 00000100 00 1 ..... 001 111 ..... ..... @rdn_ra_rm_e0 410911cdc6dSRichard HendersonBCAX 00000100 01 1 ..... 001 110 ..... ..... @rdn_ra_rm_e0 411911cdc6dSRichard HendersonBSL1N 00000100 01 1 ..... 001 111 ..... ..... @rdn_ra_rm_e0 412911cdc6dSRichard HendersonBSL2N 00000100 10 1 ..... 001 111 ..... ..... @rdn_ra_rm_e0 413911cdc6dSRichard HendersonNBSL 00000100 11 1 ..... 001 111 ..... ..... @rdn_ra_rm_e0 414911cdc6dSRichard Henderson 4159a56c9c3SRichard Henderson### SVE Index Generation Group 4169a56c9c3SRichard Henderson 4179a56c9c3SRichard Henderson# SVE index generation (immediate start, immediate increment) 4189a56c9c3SRichard HendersonINDEX_ii 00000100 esz:2 1 imm2:s5 010000 imm1:s5 rd:5 4199a56c9c3SRichard Henderson 4209a56c9c3SRichard Henderson# SVE index generation (immediate start, register increment) 4219a56c9c3SRichard HendersonINDEX_ir 00000100 esz:2 1 rm:5 010010 imm:s5 rd:5 4229a56c9c3SRichard Henderson 4239a56c9c3SRichard Henderson# SVE index generation (register start, immediate increment) 4249a56c9c3SRichard HendersonINDEX_ri 00000100 esz:2 1 imm:s5 010001 rn:5 rd:5 4259a56c9c3SRichard Henderson 4269a56c9c3SRichard Henderson# SVE index generation (register start, register increment) 4279a56c9c3SRichard HendersonINDEX_rr 00000100 .. 1 ..... 010011 ..... ..... @rd_rn_rm 4289a56c9c3SRichard Henderson 42996f922ccSRichard Henderson### SVE Stack Allocation Group 43096f922ccSRichard Henderson 43196f922ccSRichard Henderson# SVE stack frame adjustment 43296f922ccSRichard HendersonADDVL 00000100 001 ..... 01010 ...... ..... @rd_rn_i6 43396f922ccSRichard HendersonADDPL 00000100 011 ..... 01010 ...... ..... @rd_rn_i6 43496f922ccSRichard Henderson 43596f922ccSRichard Henderson# SVE stack frame size 43696f922ccSRichard HendersonRDVL 00000100 101 11111 01010 imm:s6 rd:5 43796f922ccSRichard Henderson 438d9d78dccSRichard Henderson### SVE Bitwise Shift - Unpredicated Group 439d9d78dccSRichard Henderson 440d9d78dccSRichard Henderson# SVE bitwise shift by immediate (unpredicated) 441830d1a5aSRichard HendersonASR_zzi 00000100 .. 1 ..... 1001 00 ..... ..... @rd_rn_tszimm_shr 442830d1a5aSRichard HendersonLSR_zzi 00000100 .. 1 ..... 1001 01 ..... ..... @rd_rn_tszimm_shr 443830d1a5aSRichard HendersonLSL_zzi 00000100 .. 1 ..... 1001 11 ..... ..... @rd_rn_tszimm_shl 444d9d78dccSRichard Henderson 445d9d78dccSRichard Henderson# SVE bitwise shift by wide elements (unpredicated) 446d9d78dccSRichard Henderson# Note esz != 3 447d9d78dccSRichard HendersonASR_zzw 00000100 .. 1 ..... 1000 00 ..... ..... @rd_rn_rm 448d9d78dccSRichard HendersonLSR_zzw 00000100 .. 1 ..... 1000 01 ..... ..... @rd_rn_rm 449d9d78dccSRichard HendersonLSL_zzw 00000100 .. 1 ..... 1000 11 ..... ..... @rd_rn_rm 450d9d78dccSRichard Henderson 4514b242d9cSRichard Henderson### SVE Compute Vector Address Group 4524b242d9cSRichard Henderson 4534b242d9cSRichard Henderson# SVE vector address generation 4544b242d9cSRichard HendersonADR_s32 00000100 00 1 ..... 1010 .. ..... ..... @rd_rn_msz_rm 4554b242d9cSRichard HendersonADR_u32 00000100 01 1 ..... 1010 .. ..... ..... @rd_rn_msz_rm 4564b242d9cSRichard HendersonADR_p32 00000100 10 1 ..... 1010 .. ..... ..... @rd_rn_msz_rm 4574b242d9cSRichard HendersonADR_p64 00000100 11 1 ..... 1010 .. ..... ..... @rd_rn_msz_rm 4584b242d9cSRichard Henderson 4590762cd42SRichard Henderson### SVE Integer Misc - Unpredicated Group 4600762cd42SRichard Henderson 461a2103582SRichard Henderson# SVE constructive prefix (unpredicated) 462a2103582SRichard HendersonMOVPRFX 00000100 00 1 00000 101111 rn:5 rd:5 463a2103582SRichard Henderson 4640762cd42SRichard Henderson# SVE floating-point exponential accelerator 4650762cd42SRichard Henderson# Note esz != 0 4660762cd42SRichard HendersonFEXPA 00000100 .. 1 00000 101110 ..... ..... @rd_rn 4670762cd42SRichard Henderson 468a1f233f2SRichard Henderson# SVE floating-point trig select coefficient 469a1f233f2SRichard Henderson# Note esz != 0 470a1f233f2SRichard HendersonFTSSEL 00000100 .. 1 ..... 101100 ..... ..... @rd_rn_rm 471a1f233f2SRichard Henderson 47224e82e68SRichard Henderson### SVE Element Count Group 47324e82e68SRichard Henderson 47424e82e68SRichard Henderson# SVE element count 47524e82e68SRichard HendersonCNT_r 00000100 .. 10 .... 1110 0 0 ..... ..... @incdec_cnt d=0 u=1 47624e82e68SRichard Henderson 47724e82e68SRichard Henderson# SVE inc/dec register by element count 47824e82e68SRichard HendersonINCDEC_r 00000100 .. 11 .... 1110 0 d:1 ..... ..... @incdec_cnt u=1 47924e82e68SRichard Henderson 48024e82e68SRichard Henderson# SVE saturating inc/dec register by element count 48124e82e68SRichard HendersonSINCDEC_r_32 00000100 .. 10 .... 1111 d:1 u:1 ..... ..... @incdec_cnt 48224e82e68SRichard HendersonSINCDEC_r_64 00000100 .. 11 .... 1111 d:1 u:1 ..... ..... @incdec_cnt 48324e82e68SRichard Henderson 48424e82e68SRichard Henderson# SVE inc/dec vector by element count 48524e82e68SRichard Henderson# Note this requires esz != 0. 48624e82e68SRichard HendersonINCDEC_v 00000100 .. 1 1 .... 1100 0 d:1 ..... ..... @incdec2_cnt u=1 48724e82e68SRichard Henderson 48824e82e68SRichard Henderson# SVE saturating inc/dec vector by element count 48924e82e68SRichard Henderson# Note these require esz != 0. 49024e82e68SRichard HendersonSINCDEC_v 00000100 .. 1 0 .... 1100 d:1 u:1 ..... ..... @incdec2_cnt 491516e246aSRichard Henderson 492e1fa1164SRichard Henderson### SVE Bitwise Immediate Group 493e1fa1164SRichard Henderson 494e1fa1164SRichard Henderson# SVE bitwise logical with immediate (unpredicated) 495e1fa1164SRichard HendersonORR_zzi 00000101 00 0000 ............. ..... @rdn_dbm 496e1fa1164SRichard HendersonEOR_zzi 00000101 01 0000 ............. ..... @rdn_dbm 497e1fa1164SRichard HendersonAND_zzi 00000101 10 0000 ............. ..... @rdn_dbm 498e1fa1164SRichard Henderson 499e1fa1164SRichard Henderson# SVE broadcast bitmask immediate 500e1fa1164SRichard HendersonDUPM 00000101 11 0000 dbm:13 rd:5 501e1fa1164SRichard Henderson 502f25a2361SRichard Henderson### SVE Integer Wide Immediate - Predicated Group 503f25a2361SRichard Henderson 504f25a2361SRichard Henderson# SVE copy floating-point immediate (predicated) 505f25a2361SRichard HendersonFCPY 00000101 .. 01 .... 110 imm:8 ..... @rdn_pg4 506f25a2361SRichard Henderson 507f25a2361SRichard Henderson# SVE copy integer immediate (predicated) 508f25a2361SRichard HendersonCPY_m_i 00000101 .. 01 .... 01 . ........ ..... @rdn_pg4 imm=%sh8_i8s 509f25a2361SRichard HendersonCPY_z_i 00000101 .. 01 .... 00 . ........ ..... @rdn_pg4 imm=%sh8_i8s 510f25a2361SRichard Henderson 511b94f8f60SRichard Henderson### SVE Permute - Extract Group 512b94f8f60SRichard Henderson 51375114792SStephen Long# SVE extract vector (destructive) 514b94f8f60SRichard HendersonEXT 00000101 001 ..... 000 ... rm:5 rd:5 \ 515b94f8f60SRichard Henderson &rrri rn=%reg_movprfx imm=%imm8_16_10 516b94f8f60SRichard Henderson 51775114792SStephen Long# SVE2 extract vector (constructive) 51875114792SStephen LongEXT_sve2 00000101 011 ..... 000 ... rn:5 rd:5 \ 51975114792SStephen Long &rri imm=%imm8_16_10 52075114792SStephen Long 52130562ab7SRichard Henderson### SVE Permute - Unpredicated Group 52230562ab7SRichard Henderson 52330562ab7SRichard Henderson# SVE broadcast general register 52430562ab7SRichard HendersonDUP_s 00000101 .. 1 00000 001110 ..... ..... @rd_rn 52530562ab7SRichard Henderson 52630562ab7SRichard Henderson# SVE broadcast indexed element 52730562ab7SRichard HendersonDUP_x 00000101 .. 1 ..... 001000 rn:5 rd:5 \ 52830562ab7SRichard Henderson &rri imm=%imm7_22_16 52930562ab7SRichard Henderson 53030562ab7SRichard Henderson# SVE insert SIMD&FP scalar register 53130562ab7SRichard HendersonINSR_f 00000101 .. 1 10100 001110 ..... ..... @rdn_rm 53230562ab7SRichard Henderson 53330562ab7SRichard Henderson# SVE insert general register 53430562ab7SRichard HendersonINSR_r 00000101 .. 1 00100 001110 ..... ..... @rdn_rm 53530562ab7SRichard Henderson 53630562ab7SRichard Henderson# SVE reverse vector elements 53730562ab7SRichard HendersonREV_v 00000101 .. 1 11000 001110 ..... ..... @rd_rn 53830562ab7SRichard Henderson 53930562ab7SRichard Henderson# SVE vector table lookup 54030562ab7SRichard HendersonTBL 00000101 .. 1 ..... 001100 ..... ..... @rd_rn_rm 54130562ab7SRichard Henderson 54230562ab7SRichard Henderson# SVE unpack vector elements 54330562ab7SRichard HendersonUNPK 00000101 esz:2 1100 u:1 h:1 001110 rn:5 rd:5 54430562ab7SRichard Henderson 545d731d8cbSRichard Henderson### SVE Permute - Predicates Group 546d731d8cbSRichard Henderson 547d731d8cbSRichard Henderson# SVE permute predicate elements 548d731d8cbSRichard HendersonZIP1_p 00000101 .. 10 .... 010 000 0 .... 0 .... @pd_pn_pm 549d731d8cbSRichard HendersonZIP2_p 00000101 .. 10 .... 010 001 0 .... 0 .... @pd_pn_pm 550d731d8cbSRichard HendersonUZP1_p 00000101 .. 10 .... 010 010 0 .... 0 .... @pd_pn_pm 551d731d8cbSRichard HendersonUZP2_p 00000101 .. 10 .... 010 011 0 .... 0 .... @pd_pn_pm 552d731d8cbSRichard HendersonTRN1_p 00000101 .. 10 .... 010 100 0 .... 0 .... @pd_pn_pm 553d731d8cbSRichard HendersonTRN2_p 00000101 .. 10 .... 010 101 0 .... 0 .... @pd_pn_pm 554d731d8cbSRichard Henderson 555d731d8cbSRichard Henderson# SVE reverse predicate elements 556d731d8cbSRichard HendersonREV_p 00000101 .. 11 0100 010 000 0 .... 0 .... @pd_pn 557d731d8cbSRichard Henderson 558d731d8cbSRichard Henderson# SVE unpack predicate elements 559d731d8cbSRichard HendersonPUNPKLO 00000101 00 11 0000 010 000 0 .... 0 .... @pd_pn_e0 560d731d8cbSRichard HendersonPUNPKHI 00000101 00 11 0001 010 000 0 .... 0 .... @pd_pn_e0 561d731d8cbSRichard Henderson 562234b48e9SRichard Henderson### SVE Permute - Interleaving Group 563234b48e9SRichard Henderson 564234b48e9SRichard Henderson# SVE permute vector elements 565234b48e9SRichard HendersonZIP1_z 00000101 .. 1 ..... 011 000 ..... ..... @rd_rn_rm 566234b48e9SRichard HendersonZIP2_z 00000101 .. 1 ..... 011 001 ..... ..... @rd_rn_rm 567234b48e9SRichard HendersonUZP1_z 00000101 .. 1 ..... 011 010 ..... ..... @rd_rn_rm 568234b48e9SRichard HendersonUZP2_z 00000101 .. 1 ..... 011 011 ..... ..... @rd_rn_rm 569234b48e9SRichard HendersonTRN1_z 00000101 .. 1 ..... 011 100 ..... ..... @rd_rn_rm 570234b48e9SRichard HendersonTRN2_z 00000101 .. 1 ..... 011 101 ..... ..... @rd_rn_rm 571234b48e9SRichard Henderson 5723ca879aeSRichard Henderson### SVE Permute - Predicated Group 5733ca879aeSRichard Henderson 5743ca879aeSRichard Henderson# SVE compress active elements 5753ca879aeSRichard Henderson# Note esz >= 2 5763ca879aeSRichard HendersonCOMPACT 00000101 .. 100001 100 ... ..... ..... @rd_pg_rn 5773ca879aeSRichard Henderson 578ef23cb72SRichard Henderson# SVE conditionally broadcast element to vector 579ef23cb72SRichard HendersonCLASTA_z 00000101 .. 10100 0 100 ... ..... ..... @rdn_pg_rm 580ef23cb72SRichard HendersonCLASTB_z 00000101 .. 10100 1 100 ... ..... ..... @rdn_pg_rm 581ef23cb72SRichard Henderson 582ef23cb72SRichard Henderson# SVE conditionally copy element to SIMD&FP scalar 583ef23cb72SRichard HendersonCLASTA_v 00000101 .. 10101 0 100 ... ..... ..... @rd_pg_rn 584ef23cb72SRichard HendersonCLASTB_v 00000101 .. 10101 1 100 ... ..... ..... @rd_pg_rn 585ef23cb72SRichard Henderson 586ef23cb72SRichard Henderson# SVE conditionally copy element to general register 587ef23cb72SRichard HendersonCLASTA_r 00000101 .. 11000 0 101 ... ..... ..... @rd_pg_rn 588ef23cb72SRichard HendersonCLASTB_r 00000101 .. 11000 1 101 ... ..... ..... @rd_pg_rn 589ef23cb72SRichard Henderson 590ef23cb72SRichard Henderson# SVE copy element to SIMD&FP scalar register 591ef23cb72SRichard HendersonLASTA_v 00000101 .. 10001 0 100 ... ..... ..... @rd_pg_rn 592ef23cb72SRichard HendersonLASTB_v 00000101 .. 10001 1 100 ... ..... ..... @rd_pg_rn 593ef23cb72SRichard Henderson 594ef23cb72SRichard Henderson# SVE copy element to general register 595ef23cb72SRichard HendersonLASTA_r 00000101 .. 10000 0 101 ... ..... ..... @rd_pg_rn 596ef23cb72SRichard HendersonLASTB_r 00000101 .. 10000 1 101 ... ..... ..... @rd_pg_rn 597ef23cb72SRichard Henderson 598792a5578SRichard Henderson# SVE copy element from SIMD&FP scalar register 599792a5578SRichard HendersonCPY_m_v 00000101 .. 100000 100 ... ..... ..... @rd_pg_rn 600792a5578SRichard Henderson 601792a5578SRichard Henderson# SVE copy element from general register to vector (predicated) 602792a5578SRichard HendersonCPY_m_r 00000101 .. 101000 101 ... ..... ..... @rd_pg_rn 603792a5578SRichard Henderson 604dae8fb90SRichard Henderson# SVE reverse within elements 605dae8fb90SRichard Henderson# Note esz >= operation size 606dae8fb90SRichard HendersonREVB 00000101 .. 1001 00 100 ... ..... ..... @rd_pg_rn 607dae8fb90SRichard HendersonREVH 00000101 .. 1001 01 100 ... ..... ..... @rd_pg_rn 608dae8fb90SRichard HendersonREVW 00000101 .. 1001 10 100 ... ..... ..... @rd_pg_rn 609dae8fb90SRichard HendersonRBIT 00000101 .. 1001 11 100 ... ..... ..... @rd_pg_rn 610dae8fb90SRichard Henderson 61175114792SStephen Long# SVE vector splice (predicated, destructive) 612b48ff240SRichard HendersonSPLICE 00000101 .. 101 100 100 ... ..... ..... @rdn_pg_rm 613b48ff240SRichard Henderson 61475114792SStephen Long# SVE2 vector splice (predicated, constructive) 61575114792SStephen LongSPLICE_sve2 00000101 .. 101 101 100 ... ..... ..... @rd_pg_rn 61675114792SStephen Long 617d3fe4a29SRichard Henderson### SVE Select Vectors Group 618d3fe4a29SRichard Henderson 619d3fe4a29SRichard Henderson# SVE select vector elements (predicated) 620d3fe4a29SRichard HendersonSEL_zpzz 00000101 .. 1 ..... 11 .... ..... ..... @rd_pg4_rn_rm 621d3fe4a29SRichard Henderson 622757f9cffSRichard Henderson### SVE Integer Compare - Vectors Group 623757f9cffSRichard Henderson 624757f9cffSRichard Henderson# SVE integer compare_vectors 625757f9cffSRichard HendersonCMPHS_ppzz 00100100 .. 0 ..... 000 ... ..... 0 .... @pd_pg_rn_rm 626757f9cffSRichard HendersonCMPHI_ppzz 00100100 .. 0 ..... 000 ... ..... 1 .... @pd_pg_rn_rm 627757f9cffSRichard HendersonCMPGE_ppzz 00100100 .. 0 ..... 100 ... ..... 0 .... @pd_pg_rn_rm 628757f9cffSRichard HendersonCMPGT_ppzz 00100100 .. 0 ..... 100 ... ..... 1 .... @pd_pg_rn_rm 629757f9cffSRichard HendersonCMPEQ_ppzz 00100100 .. 0 ..... 101 ... ..... 0 .... @pd_pg_rn_rm 630757f9cffSRichard HendersonCMPNE_ppzz 00100100 .. 0 ..... 101 ... ..... 1 .... @pd_pg_rn_rm 631757f9cffSRichard Henderson 632757f9cffSRichard Henderson# SVE integer compare with wide elements 633757f9cffSRichard Henderson# Note these require esz != 3. 634757f9cffSRichard HendersonCMPEQ_ppzw 00100100 .. 0 ..... 001 ... ..... 0 .... @pd_pg_rn_rm 635757f9cffSRichard HendersonCMPNE_ppzw 00100100 .. 0 ..... 001 ... ..... 1 .... @pd_pg_rn_rm 636757f9cffSRichard HendersonCMPGE_ppzw 00100100 .. 0 ..... 010 ... ..... 0 .... @pd_pg_rn_rm 637757f9cffSRichard HendersonCMPGT_ppzw 00100100 .. 0 ..... 010 ... ..... 1 .... @pd_pg_rn_rm 638757f9cffSRichard HendersonCMPLT_ppzw 00100100 .. 0 ..... 011 ... ..... 0 .... @pd_pg_rn_rm 639757f9cffSRichard HendersonCMPLE_ppzw 00100100 .. 0 ..... 011 ... ..... 1 .... @pd_pg_rn_rm 640757f9cffSRichard HendersonCMPHS_ppzw 00100100 .. 0 ..... 110 ... ..... 0 .... @pd_pg_rn_rm 641757f9cffSRichard HendersonCMPHI_ppzw 00100100 .. 0 ..... 110 ... ..... 1 .... @pd_pg_rn_rm 642757f9cffSRichard HendersonCMPLO_ppzw 00100100 .. 0 ..... 111 ... ..... 0 .... @pd_pg_rn_rm 643757f9cffSRichard HendersonCMPLS_ppzw 00100100 .. 0 ..... 111 ... ..... 1 .... @pd_pg_rn_rm 644757f9cffSRichard Henderson 64538cadebaSRichard Henderson### SVE Integer Compare - Unsigned Immediate Group 64638cadebaSRichard Henderson 64738cadebaSRichard Henderson# SVE integer compare with unsigned immediate 64838cadebaSRichard HendersonCMPHS_ppzi 00100100 .. 1 ....... 0 ... ..... 0 .... @pd_pg_rn_i7 64938cadebaSRichard HendersonCMPHI_ppzi 00100100 .. 1 ....... 0 ... ..... 1 .... @pd_pg_rn_i7 65038cadebaSRichard HendersonCMPLO_ppzi 00100100 .. 1 ....... 1 ... ..... 0 .... @pd_pg_rn_i7 65138cadebaSRichard HendersonCMPLS_ppzi 00100100 .. 1 ....... 1 ... ..... 1 .... @pd_pg_rn_i7 65238cadebaSRichard Henderson 65338cadebaSRichard Henderson### SVE Integer Compare - Signed Immediate Group 65438cadebaSRichard Henderson 65538cadebaSRichard Henderson# SVE integer compare with signed immediate 65638cadebaSRichard HendersonCMPGE_ppzi 00100101 .. 0 ..... 000 ... ..... 0 .... @pd_pg_rn_i5 65738cadebaSRichard HendersonCMPGT_ppzi 00100101 .. 0 ..... 000 ... ..... 1 .... @pd_pg_rn_i5 65838cadebaSRichard HendersonCMPLT_ppzi 00100101 .. 0 ..... 001 ... ..... 0 .... @pd_pg_rn_i5 65938cadebaSRichard HendersonCMPLE_ppzi 00100101 .. 0 ..... 001 ... ..... 1 .... @pd_pg_rn_i5 66038cadebaSRichard HendersonCMPEQ_ppzi 00100101 .. 0 ..... 100 ... ..... 0 .... @pd_pg_rn_i5 66138cadebaSRichard HendersonCMPNE_ppzi 00100101 .. 0 ..... 100 ... ..... 1 .... @pd_pg_rn_i5 66238cadebaSRichard Henderson 663e1fa1164SRichard Henderson### SVE Predicate Logical Operations Group 664e1fa1164SRichard Henderson 665516e246aSRichard Henderson# SVE predicate logical operations 666516e246aSRichard HendersonAND_pppp 00100101 0. 00 .... 01 .... 0 .... 0 .... @pd_pg_pn_pm_s 667516e246aSRichard HendersonBIC_pppp 00100101 0. 00 .... 01 .... 0 .... 1 .... @pd_pg_pn_pm_s 668516e246aSRichard HendersonEOR_pppp 00100101 0. 00 .... 01 .... 1 .... 0 .... @pd_pg_pn_pm_s 669516e246aSRichard HendersonSEL_pppp 00100101 0. 00 .... 01 .... 1 .... 1 .... @pd_pg_pn_pm_s 670516e246aSRichard HendersonORR_pppp 00100101 1. 00 .... 01 .... 0 .... 0 .... @pd_pg_pn_pm_s 671516e246aSRichard HendersonORN_pppp 00100101 1. 00 .... 01 .... 0 .... 1 .... @pd_pg_pn_pm_s 672516e246aSRichard HendersonNOR_pppp 00100101 1. 00 .... 01 .... 1 .... 0 .... @pd_pg_pn_pm_s 673516e246aSRichard HendersonNAND_pppp 00100101 1. 00 .... 01 .... 1 .... 1 .... @pd_pg_pn_pm_s 674516e246aSRichard Henderson 6759e18d7a6SRichard Henderson### SVE Predicate Misc Group 6769e18d7a6SRichard Henderson 6779e18d7a6SRichard Henderson# SVE predicate test 6789e18d7a6SRichard HendersonPTEST 00100101 01 010000 11 pg:4 0 rn:4 0 0000 6799e18d7a6SRichard Henderson 680028e2a7bSRichard Henderson# SVE predicate initialize 681028e2a7bSRichard HendersonPTRUE 00100101 esz:2 01100 s:1 111000 pat:5 0 rd:4 682028e2a7bSRichard Henderson 683028e2a7bSRichard Henderson# SVE initialize FFR 684028e2a7bSRichard HendersonSETFFR 00100101 0010 1100 1001 0000 0000 0000 685028e2a7bSRichard Henderson 686028e2a7bSRichard Henderson# SVE zero predicate register 687028e2a7bSRichard HendersonPFALSE 00100101 0001 1000 1110 0100 0000 rd:4 688028e2a7bSRichard Henderson 689028e2a7bSRichard Henderson# SVE predicate read from FFR (predicated) 690028e2a7bSRichard HendersonRDFFR_p 00100101 0 s:1 0110001111000 pg:4 0 rd:4 691028e2a7bSRichard Henderson 692028e2a7bSRichard Henderson# SVE predicate read from FFR (unpredicated) 693028e2a7bSRichard HendersonRDFFR 00100101 0001 1001 1111 0000 0000 rd:4 694028e2a7bSRichard Henderson 695028e2a7bSRichard Henderson# SVE FFR write from predicate (WRFFR) 696028e2a7bSRichard HendersonWRFFR 00100101 0010 1000 1001 000 rn:4 00000 697028e2a7bSRichard Henderson 698028e2a7bSRichard Henderson# SVE predicate first active 699028e2a7bSRichard HendersonPFIRST 00100101 01 011 000 11000 00 .... 0 .... @pd_pn_e0 700028e2a7bSRichard Henderson 701028e2a7bSRichard Henderson# SVE predicate next active 702028e2a7bSRichard HendersonPNEXT 00100101 .. 011 001 11000 10 .... 0 .... @pd_pn 703028e2a7bSRichard Henderson 70435da316fSRichard Henderson### SVE Partition Break Group 70535da316fSRichard Henderson 70635da316fSRichard Henderson# SVE propagate break from previous partition 70735da316fSRichard HendersonBRKPA 00100101 0. 00 .... 11 .... 0 .... 0 .... @pd_pg_pn_pm_s 70835da316fSRichard HendersonBRKPB 00100101 0. 00 .... 11 .... 0 .... 1 .... @pd_pg_pn_pm_s 70935da316fSRichard Henderson 71035da316fSRichard Henderson# SVE partition break condition 71135da316fSRichard HendersonBRKA_z 00100101 0. 01000001 .... 0 .... 0 .... @pd_pg_pn_s 71235da316fSRichard HendersonBRKB_z 00100101 1. 01000001 .... 0 .... 0 .... @pd_pg_pn_s 713407e6ce7SRichard HendersonBRKA_m 00100101 00 01000001 .... 0 .... 1 .... @pd_pg_pn_s0 714407e6ce7SRichard HendersonBRKB_m 00100101 10 01000001 .... 0 .... 1 .... @pd_pg_pn_s0 71535da316fSRichard Henderson 71635da316fSRichard Henderson# SVE propagate break to next partition 71735da316fSRichard HendersonBRKN 00100101 0. 01100001 .... 0 .... 0 .... @pd_pg_pn_s 71835da316fSRichard Henderson 7199ee3a611SRichard Henderson### SVE Predicate Count Group 7209ee3a611SRichard Henderson 7219ee3a611SRichard Henderson# SVE predicate count 7229ee3a611SRichard HendersonCNTP 00100101 .. 100 000 10 .... 0 .... ..... @rd_pg4_pn 7239ee3a611SRichard Henderson 7249ee3a611SRichard Henderson# SVE inc/dec register by predicate count 7259ee3a611SRichard HendersonINCDECP_r 00100101 .. 10110 d:1 10001 00 .... ..... @incdec_pred u=1 7269ee3a611SRichard Henderson 7279ee3a611SRichard Henderson# SVE inc/dec vector by predicate count 7289ee3a611SRichard HendersonINCDECP_z 00100101 .. 10110 d:1 10000 00 .... ..... @incdec2_pred u=1 7299ee3a611SRichard Henderson 7309ee3a611SRichard Henderson# SVE saturating inc/dec register by predicate count 7319ee3a611SRichard HendersonSINCDECP_r_32 00100101 .. 1010 d:1 u:1 10001 00 .... ..... @incdec_pred 7329ee3a611SRichard HendersonSINCDECP_r_64 00100101 .. 1010 d:1 u:1 10001 10 .... ..... @incdec_pred 7339ee3a611SRichard Henderson 7349ee3a611SRichard Henderson# SVE saturating inc/dec vector by predicate count 7359ee3a611SRichard HendersonSINCDECP_z 00100101 .. 1010 d:1 u:1 10000 00 .... ..... @incdec2_pred 7369ee3a611SRichard Henderson 737caf1cefcSRichard Henderson### SVE Integer Compare - Scalars Group 738caf1cefcSRichard Henderson 739caf1cefcSRichard Henderson# SVE conditionally terminate scalars 740caf1cefcSRichard HendersonCTERM 00100101 1 sf:1 1 rm:5 001000 rn:5 ne:1 0000 741caf1cefcSRichard Henderson 742caf1cefcSRichard Henderson# SVE integer compare scalar count and limit 74334688dbcSRichard HendersonWHILE 00100101 esz:2 1 rm:5 000 sf:1 u:1 lt:1 rn:5 eq:1 rd:4 744caf1cefcSRichard Henderson 74514f6dad1SRichard Henderson# SVE2 pointer conflict compare 74614f6dad1SRichard HendersonWHILE_ptr 00100101 esz:2 1 rm:5 001 100 rn:5 rw:1 rd:4 74714f6dad1SRichard Henderson 748ed491961SRichard Henderson### SVE Integer Wide Immediate - Unpredicated Group 749ed491961SRichard Henderson 750ed491961SRichard Henderson# SVE broadcast floating-point immediate (unpredicated) 751ed491961SRichard HendersonFDUP 00100101 esz:2 111 00 1110 imm:8 rd:5 752ed491961SRichard Henderson 753ed491961SRichard Henderson# SVE broadcast integer immediate (unpredicated) 754ed491961SRichard HendersonDUP_i 00100101 esz:2 111 00 011 . ........ rd:5 imm=%sh8_i8s 755ed491961SRichard Henderson 7566e6a157dSRichard Henderson# SVE integer add/subtract immediate (unpredicated) 7576e6a157dSRichard HendersonADD_zzi 00100101 .. 100 000 11 . ........ ..... @rdn_sh_i8u 7586e6a157dSRichard HendersonSUB_zzi 00100101 .. 100 001 11 . ........ ..... @rdn_sh_i8u 7596e6a157dSRichard HendersonSUBR_zzi 00100101 .. 100 011 11 . ........ ..... @rdn_sh_i8u 7606e6a157dSRichard HendersonSQADD_zzi 00100101 .. 100 100 11 . ........ ..... @rdn_sh_i8u 7616e6a157dSRichard HendersonUQADD_zzi 00100101 .. 100 101 11 . ........ ..... @rdn_sh_i8u 7626e6a157dSRichard HendersonSQSUB_zzi 00100101 .. 100 110 11 . ........ ..... @rdn_sh_i8u 7636e6a157dSRichard HendersonUQSUB_zzi 00100101 .. 100 111 11 . ........ ..... @rdn_sh_i8u 7646e6a157dSRichard Henderson 7656e6a157dSRichard Henderson# SVE integer min/max immediate (unpredicated) 7666e6a157dSRichard HendersonSMAX_zzi 00100101 .. 101 000 110 ........ ..... @rdn_i8s 7676e6a157dSRichard HendersonUMAX_zzi 00100101 .. 101 001 110 ........ ..... @rdn_i8u 7686e6a157dSRichard HendersonSMIN_zzi 00100101 .. 101 010 110 ........ ..... @rdn_i8s 7696e6a157dSRichard HendersonUMIN_zzi 00100101 .. 101 011 110 ........ ..... @rdn_i8u 7706e6a157dSRichard Henderson 7716e6a157dSRichard Henderson# SVE integer multiply immediate (unpredicated) 7726e6a157dSRichard HendersonMUL_zzi 00100101 .. 110 000 110 ........ ..... @rdn_i8s 7736e6a157dSRichard Henderson 774d730ecaaSRichard Henderson# SVE integer dot product (unpredicated) 775bc2bd697SRichard HendersonDOT_zzzz 01000100 1 sz:1 0 rm:5 00000 u:1 rn:5 rd:5 \ 776bc2bd697SRichard Henderson ra=%reg_movprfx 777d730ecaaSRichard Henderson 778*814d4c52SRichard Henderson#### SVE Multiply - Indexed 779*814d4c52SRichard Henderson 78016fcfdc7SRichard Henderson# SVE integer dot product (indexed) 7810a82d963SRichard HendersonSDOT_zzxw_s 01000100 10 1 ..... 000000 ..... ..... @rrxr_2 esz=2 7820a82d963SRichard HendersonSDOT_zzxw_d 01000100 11 1 ..... 000000 ..... ..... @rrxr_1 esz=3 7830a82d963SRichard HendersonUDOT_zzxw_s 01000100 10 1 ..... 000001 ..... ..... @rrxr_2 esz=2 7840a82d963SRichard HendersonUDOT_zzxw_d 01000100 11 1 ..... 000001 ..... ..... @rrxr_1 esz=3 78516fcfdc7SRichard Henderson 786*814d4c52SRichard Henderson# SVE2 integer multiply (indexed) 787*814d4c52SRichard HendersonMUL_zzx_h 01000100 0. 1 ..... 111110 ..... ..... @rrx_3 esz=1 788*814d4c52SRichard HendersonMUL_zzx_s 01000100 10 1 ..... 111110 ..... ..... @rrx_2 esz=2 789*814d4c52SRichard HendersonMUL_zzx_d 01000100 11 1 ..... 111110 ..... ..... @rrx_1 esz=3 790*814d4c52SRichard Henderson 79176a9d9cdSRichard Henderson# SVE floating-point complex add (predicated) 79276a9d9cdSRichard HendersonFCADD 01100100 esz:2 00000 rot:1 100 pg:3 rm:5 rd:5 \ 79376a9d9cdSRichard Henderson rn=%reg_movprfx 79476a9d9cdSRichard Henderson 79505f48babSRichard Henderson# SVE floating-point complex multiply-add (predicated) 79605f48babSRichard HendersonFCMLA_zpzzz 01100100 esz:2 0 rm:5 0 rot:2 pg:3 rn:5 rd:5 \ 79705f48babSRichard Henderson ra=%reg_movprfx 79805f48babSRichard Henderson 79918fc2405SRichard Henderson# SVE floating-point complex multiply-add (indexed) 80018fc2405SRichard HendersonFCMLA_zzxz 01100100 10 1 index:2 rm:3 0001 rot:2 rn:5 rd:5 \ 80118fc2405SRichard Henderson ra=%reg_movprfx esz=1 80218fc2405SRichard HendersonFCMLA_zzxz 01100100 11 1 index:1 rm:4 0001 rot:2 rn:5 rd:5 \ 80318fc2405SRichard Henderson ra=%reg_movprfx esz=2 80418fc2405SRichard Henderson 805ca40a6e6SRichard Henderson### SVE FP Multiply-Add Indexed Group 806ca40a6e6SRichard Henderson 807ca40a6e6SRichard Henderson# SVE floating-point multiply-add (indexed) 8080a82d963SRichard HendersonFMLA_zzxz 01100100 0. 1 ..... 000000 ..... ..... @rrxr_3 esz=1 8090a82d963SRichard HendersonFMLA_zzxz 01100100 10 1 ..... 000000 ..... ..... @rrxr_2 esz=2 8100a82d963SRichard HendersonFMLA_zzxz 01100100 11 1 ..... 000000 ..... ..... @rrxr_1 esz=3 8110a82d963SRichard HendersonFMLS_zzxz 01100100 0. 1 ..... 000001 ..... ..... @rrxr_3 esz=1 8120a82d963SRichard HendersonFMLS_zzxz 01100100 10 1 ..... 000001 ..... ..... @rrxr_2 esz=2 8130a82d963SRichard HendersonFMLS_zzxz 01100100 11 1 ..... 000001 ..... ..... @rrxr_1 esz=3 814ca40a6e6SRichard Henderson 815ca40a6e6SRichard Henderson### SVE FP Multiply Indexed Group 816ca40a6e6SRichard Henderson 817ca40a6e6SRichard Henderson# SVE floating-point multiply (indexed) 8181c737d9cSRichard HendersonFMUL_zzx 01100100 0. 1 ..... 001000 ..... ..... @rrx_3 esz=1 8191c737d9cSRichard HendersonFMUL_zzx 01100100 10 1 ..... 001000 ..... ..... @rrx_2 esz=2 8201c737d9cSRichard HendersonFMUL_zzx 01100100 11 1 ..... 001000 ..... ..... @rrx_1 esz=3 821ca40a6e6SRichard Henderson 82223fbe79fSRichard Henderson### SVE FP Fast Reduction Group 82323fbe79fSRichard Henderson 82423fbe79fSRichard HendersonFADDV 01100101 .. 000 000 001 ... ..... ..... @rd_pg_rn 82523fbe79fSRichard HendersonFMAXNMV 01100101 .. 000 100 001 ... ..... ..... @rd_pg_rn 82623fbe79fSRichard HendersonFMINNMV 01100101 .. 000 101 001 ... ..... ..... @rd_pg_rn 82723fbe79fSRichard HendersonFMAXV 01100101 .. 000 110 001 ... ..... ..... @rd_pg_rn 82823fbe79fSRichard HendersonFMINV 01100101 .. 000 111 001 ... ..... ..... @rd_pg_rn 82923fbe79fSRichard Henderson 8303887c038SRichard Henderson## SVE Floating Point Unary Operations - Unpredicated Group 8313887c038SRichard Henderson 8323887c038SRichard HendersonFRECPE 01100101 .. 001 110 001100 ..... ..... @rd_rn 8333887c038SRichard HendersonFRSQRTE 01100101 .. 001 111 001100 ..... ..... @rd_rn 8343887c038SRichard Henderson 8354d2e2a03SRichard Henderson### SVE FP Compare with Zero Group 8364d2e2a03SRichard Henderson 8374d2e2a03SRichard HendersonFCMGE_ppz0 01100101 .. 0100 00 001 ... ..... 0 .... @pd_pg_rn 8384d2e2a03SRichard HendersonFCMGT_ppz0 01100101 .. 0100 00 001 ... ..... 1 .... @pd_pg_rn 8394d2e2a03SRichard HendersonFCMLT_ppz0 01100101 .. 0100 01 001 ... ..... 0 .... @pd_pg_rn 8404d2e2a03SRichard HendersonFCMLE_ppz0 01100101 .. 0100 01 001 ... ..... 1 .... @pd_pg_rn 8414d2e2a03SRichard HendersonFCMEQ_ppz0 01100101 .. 0100 10 001 ... ..... 0 .... @pd_pg_rn 8424d2e2a03SRichard HendersonFCMNE_ppz0 01100101 .. 0100 11 001 ... ..... 0 .... @pd_pg_rn 8434d2e2a03SRichard Henderson 8447f9ddf64SRichard Henderson### SVE FP Accumulating Reduction Group 8457f9ddf64SRichard Henderson 8467f9ddf64SRichard Henderson# SVE floating-point serial reduction (predicated) 8477f9ddf64SRichard HendersonFADDA 01100101 .. 011 000 001 ... ..... ..... @rdn_pg_rm 8487f9ddf64SRichard Henderson 84929b80469SRichard Henderson### SVE Floating Point Arithmetic - Unpredicated Group 85029b80469SRichard Henderson 85129b80469SRichard Henderson# SVE floating-point arithmetic (unpredicated) 85229b80469SRichard HendersonFADD_zzz 01100101 .. 0 ..... 000 000 ..... ..... @rd_rn_rm 85329b80469SRichard HendersonFSUB_zzz 01100101 .. 0 ..... 000 001 ..... ..... @rd_rn_rm 85429b80469SRichard HendersonFMUL_zzz 01100101 .. 0 ..... 000 010 ..... ..... @rd_rn_rm 85529b80469SRichard HendersonFTSMUL 01100101 .. 0 ..... 000 011 ..... ..... @rd_rn_rm 85629b80469SRichard HendersonFRECPS 01100101 .. 0 ..... 000 110 ..... ..... @rd_rn_rm 85729b80469SRichard HendersonFRSQRTS 01100101 .. 0 ..... 000 111 ..... ..... @rd_rn_rm 85829b80469SRichard Henderson 859ec3b87c2SRichard Henderson### SVE FP Arithmetic Predicated Group 860ec3b87c2SRichard Henderson 861ec3b87c2SRichard Henderson# SVE floating-point arithmetic (predicated) 862ec3b87c2SRichard HendersonFADD_zpzz 01100101 .. 00 0000 100 ... ..... ..... @rdn_pg_rm 863ec3b87c2SRichard HendersonFSUB_zpzz 01100101 .. 00 0001 100 ... ..... ..... @rdn_pg_rm 864ec3b87c2SRichard HendersonFMUL_zpzz 01100101 .. 00 0010 100 ... ..... ..... @rdn_pg_rm 865ec3b87c2SRichard HendersonFSUB_zpzz 01100101 .. 00 0011 100 ... ..... ..... @rdm_pg_rn # FSUBR 866ec3b87c2SRichard HendersonFMAXNM_zpzz 01100101 .. 00 0100 100 ... ..... ..... @rdn_pg_rm 867ec3b87c2SRichard HendersonFMINNM_zpzz 01100101 .. 00 0101 100 ... ..... ..... @rdn_pg_rm 868ec3b87c2SRichard HendersonFMAX_zpzz 01100101 .. 00 0110 100 ... ..... ..... @rdn_pg_rm 869ec3b87c2SRichard HendersonFMIN_zpzz 01100101 .. 00 0111 100 ... ..... ..... @rdn_pg_rm 870ec3b87c2SRichard HendersonFABD 01100101 .. 00 1000 100 ... ..... ..... @rdn_pg_rm 871ec3b87c2SRichard HendersonFSCALE 01100101 .. 00 1001 100 ... ..... ..... @rdn_pg_rm 872ec3b87c2SRichard HendersonFMULX 01100101 .. 00 1010 100 ... ..... ..... @rdn_pg_rm 873ec3b87c2SRichard HendersonFDIV 01100101 .. 00 1100 100 ... ..... ..... @rdm_pg_rn # FDIVR 874ec3b87c2SRichard HendersonFDIV 01100101 .. 00 1101 100 ... ..... ..... @rdn_pg_rm 875ec3b87c2SRichard Henderson 876cc48affeSRichard Henderson# SVE floating-point arithmetic with immediate (predicated) 877cc48affeSRichard HendersonFADD_zpzi 01100101 .. 011 000 100 ... 0000 . ..... @rdn_i1 878cc48affeSRichard HendersonFSUB_zpzi 01100101 .. 011 001 100 ... 0000 . ..... @rdn_i1 879cc48affeSRichard HendersonFMUL_zpzi 01100101 .. 011 010 100 ... 0000 . ..... @rdn_i1 880cc48affeSRichard HendersonFSUBR_zpzi 01100101 .. 011 011 100 ... 0000 . ..... @rdn_i1 881cc48affeSRichard HendersonFMAXNM_zpzi 01100101 .. 011 100 100 ... 0000 . ..... @rdn_i1 882cc48affeSRichard HendersonFMINNM_zpzi 01100101 .. 011 101 100 ... 0000 . ..... @rdn_i1 883cc48affeSRichard HendersonFMAX_zpzi 01100101 .. 011 110 100 ... 0000 . ..... @rdn_i1 884cc48affeSRichard HendersonFMIN_zpzi 01100101 .. 011 111 100 ... 0000 . ..... @rdn_i1 885cc48affeSRichard Henderson 88667fcd9adSRichard Henderson# SVE floating-point trig multiply-add coefficient 88767fcd9adSRichard HendersonFTMAD 01100101 esz:2 010 imm:3 100000 rm:5 rd:5 rn=%reg_movprfx 88867fcd9adSRichard Henderson 8896ceabaadSRichard Henderson### SVE FP Multiply-Add Group 8906ceabaadSRichard Henderson 8916ceabaadSRichard Henderson# SVE floating-point multiply-accumulate writing addend 8926ceabaadSRichard HendersonFMLA_zpzzz 01100101 .. 1 ..... 000 ... ..... ..... @rda_pg_rn_rm 8936ceabaadSRichard HendersonFMLS_zpzzz 01100101 .. 1 ..... 001 ... ..... ..... @rda_pg_rn_rm 8946ceabaadSRichard HendersonFNMLA_zpzzz 01100101 .. 1 ..... 010 ... ..... ..... @rda_pg_rn_rm 8956ceabaadSRichard HendersonFNMLS_zpzzz 01100101 .. 1 ..... 011 ... ..... ..... @rda_pg_rn_rm 8966ceabaadSRichard Henderson 8976ceabaadSRichard Henderson# SVE floating-point multiply-accumulate writing multiplicand 8986ceabaadSRichard Henderson# Alter the operand extraction order and reuse the helpers from above. 8996ceabaadSRichard Henderson# FMAD, FMSB, FNMAD, FNMS 9006ceabaadSRichard HendersonFMLA_zpzzz 01100101 .. 1 ..... 100 ... ..... ..... @rdn_pg_rm_ra 9016ceabaadSRichard HendersonFMLS_zpzzz 01100101 .. 1 ..... 101 ... ..... ..... @rdn_pg_rm_ra 9026ceabaadSRichard HendersonFNMLA_zpzzz 01100101 .. 1 ..... 110 ... ..... ..... @rdn_pg_rm_ra 9036ceabaadSRichard HendersonFNMLS_zpzzz 01100101 .. 1 ..... 111 ... ..... ..... @rdn_pg_rm_ra 9046ceabaadSRichard Henderson 9058092c6a3SRichard Henderson### SVE FP Unary Operations Predicated Group 9068092c6a3SRichard Henderson 90746d33d1eSRichard Henderson# SVE floating-point convert precision 90846d33d1eSRichard HendersonFCVT_sh 01100101 10 0010 00 101 ... ..... ..... @rd_pg_rn_e0 90946d33d1eSRichard HendersonFCVT_hs 01100101 10 0010 01 101 ... ..... ..... @rd_pg_rn_e0 91046d33d1eSRichard HendersonFCVT_dh 01100101 11 0010 00 101 ... ..... ..... @rd_pg_rn_e0 91146d33d1eSRichard HendersonFCVT_hd 01100101 11 0010 01 101 ... ..... ..... @rd_pg_rn_e0 91246d33d1eSRichard HendersonFCVT_ds 01100101 11 0010 10 101 ... ..... ..... @rd_pg_rn_e0 91346d33d1eSRichard HendersonFCVT_sd 01100101 11 0010 11 101 ... ..... ..... @rd_pg_rn_e0 91446d33d1eSRichard Henderson 915df4de1afSRichard Henderson# SVE floating-point convert to integer 916df4de1afSRichard HendersonFCVTZS_hh 01100101 01 011 01 0 101 ... ..... ..... @rd_pg_rn_e0 917df4de1afSRichard HendersonFCVTZU_hh 01100101 01 011 01 1 101 ... ..... ..... @rd_pg_rn_e0 918df4de1afSRichard HendersonFCVTZS_hs 01100101 01 011 10 0 101 ... ..... ..... @rd_pg_rn_e0 919df4de1afSRichard HendersonFCVTZU_hs 01100101 01 011 10 1 101 ... ..... ..... @rd_pg_rn_e0 920df4de1afSRichard HendersonFCVTZS_hd 01100101 01 011 11 0 101 ... ..... ..... @rd_pg_rn_e0 921df4de1afSRichard HendersonFCVTZU_hd 01100101 01 011 11 1 101 ... ..... ..... @rd_pg_rn_e0 922df4de1afSRichard HendersonFCVTZS_ss 01100101 10 011 10 0 101 ... ..... ..... @rd_pg_rn_e0 923df4de1afSRichard HendersonFCVTZU_ss 01100101 10 011 10 1 101 ... ..... ..... @rd_pg_rn_e0 924df4de1afSRichard HendersonFCVTZS_ds 01100101 11 011 00 0 101 ... ..... ..... @rd_pg_rn_e0 925df4de1afSRichard HendersonFCVTZU_ds 01100101 11 011 00 1 101 ... ..... ..... @rd_pg_rn_e0 926df4de1afSRichard HendersonFCVTZS_sd 01100101 11 011 10 0 101 ... ..... ..... @rd_pg_rn_e0 927df4de1afSRichard HendersonFCVTZU_sd 01100101 11 011 10 1 101 ... ..... ..... @rd_pg_rn_e0 928df4de1afSRichard HendersonFCVTZS_dd 01100101 11 011 11 0 101 ... ..... ..... @rd_pg_rn_e0 929df4de1afSRichard HendersonFCVTZU_dd 01100101 11 011 11 1 101 ... ..... ..... @rd_pg_rn_e0 930df4de1afSRichard Henderson 931cda3c753SRichard Henderson# SVE floating-point round to integral value 932cda3c753SRichard HendersonFRINTN 01100101 .. 000 000 101 ... ..... ..... @rd_pg_rn 933cda3c753SRichard HendersonFRINTP 01100101 .. 000 001 101 ... ..... ..... @rd_pg_rn 934cda3c753SRichard HendersonFRINTM 01100101 .. 000 010 101 ... ..... ..... @rd_pg_rn 935cda3c753SRichard HendersonFRINTZ 01100101 .. 000 011 101 ... ..... ..... @rd_pg_rn 936cda3c753SRichard HendersonFRINTA 01100101 .. 000 100 101 ... ..... ..... @rd_pg_rn 937cda3c753SRichard HendersonFRINTX 01100101 .. 000 110 101 ... ..... ..... @rd_pg_rn 938cda3c753SRichard HendersonFRINTI 01100101 .. 000 111 101 ... ..... ..... @rd_pg_rn 939cda3c753SRichard Henderson 940ec5b375bSRichard Henderson# SVE floating-point unary operations 941ec5b375bSRichard HendersonFRECPX 01100101 .. 001 100 101 ... ..... ..... @rd_pg_rn 942ec5b375bSRichard HendersonFSQRT 01100101 .. 001 101 101 ... ..... ..... @rd_pg_rn 943ec5b375bSRichard Henderson 9448092c6a3SRichard Henderson# SVE integer convert to floating-point 9458092c6a3SRichard HendersonSCVTF_hh 01100101 01 010 01 0 101 ... ..... ..... @rd_pg_rn_e0 9468092c6a3SRichard HendersonSCVTF_sh 01100101 01 010 10 0 101 ... ..... ..... @rd_pg_rn_e0 9478092c6a3SRichard HendersonSCVTF_dh 01100101 01 010 11 0 101 ... ..... ..... @rd_pg_rn_e0 9488092c6a3SRichard HendersonSCVTF_ss 01100101 10 010 10 0 101 ... ..... ..... @rd_pg_rn_e0 9498092c6a3SRichard HendersonSCVTF_sd 01100101 11 010 00 0 101 ... ..... ..... @rd_pg_rn_e0 9508092c6a3SRichard HendersonSCVTF_ds 01100101 11 010 10 0 101 ... ..... ..... @rd_pg_rn_e0 9518092c6a3SRichard HendersonSCVTF_dd 01100101 11 010 11 0 101 ... ..... ..... @rd_pg_rn_e0 9528092c6a3SRichard Henderson 9538092c6a3SRichard HendersonUCVTF_hh 01100101 01 010 01 1 101 ... ..... ..... @rd_pg_rn_e0 9548092c6a3SRichard HendersonUCVTF_sh 01100101 01 010 10 1 101 ... ..... ..... @rd_pg_rn_e0 9558092c6a3SRichard HendersonUCVTF_dh 01100101 01 010 11 1 101 ... ..... ..... @rd_pg_rn_e0 9568092c6a3SRichard HendersonUCVTF_ss 01100101 10 010 10 1 101 ... ..... ..... @rd_pg_rn_e0 9578092c6a3SRichard HendersonUCVTF_sd 01100101 11 010 00 1 101 ... ..... ..... @rd_pg_rn_e0 9588092c6a3SRichard HendersonUCVTF_ds 01100101 11 010 10 1 101 ... ..... ..... @rd_pg_rn_e0 9598092c6a3SRichard HendersonUCVTF_dd 01100101 11 010 11 1 101 ... ..... ..... @rd_pg_rn_e0 9608092c6a3SRichard Henderson 961d1822297SRichard Henderson### SVE Memory - 32-bit Gather and Unsized Contiguous Group 962d1822297SRichard Henderson 963d1822297SRichard Henderson# SVE load predicate register 964d1822297SRichard HendersonLDR_pri 10000101 10 ...... 000 ... ..... 0 .... @pd_rn_i9 965d1822297SRichard Henderson 966d1822297SRichard Henderson# SVE load vector register 967d1822297SRichard HendersonLDR_zri 10000101 10 ...... 010 ... ..... ..... @rd_rn_i9 968c4e7c493SRichard Henderson 96968459864SRichard Henderson# SVE load and broadcast element 97068459864SRichard HendersonLD1R_zpri 1000010 .. 1 imm:6 1.. pg:3 rn:5 rd:5 \ 97168459864SRichard Henderson &rpri_load dtype=%dtype_23_13 nreg=0 97268459864SRichard Henderson 973673e9fa6SRichard Henderson# SVE 32-bit gather load (scalar plus 32-bit unscaled offsets) 974673e9fa6SRichard Henderson# SVE 32-bit gather load (scalar plus 32-bit scaled offsets) 975673e9fa6SRichard HendersonLD1_zprz 1000010 00 .0 ..... 0.. ... ..... ..... \ 976673e9fa6SRichard Henderson @rprr_g_load_xs_u esz=2 msz=0 scale=0 977673e9fa6SRichard HendersonLD1_zprz 1000010 01 .. ..... 0.. ... ..... ..... \ 978673e9fa6SRichard Henderson @rprr_g_load_xs_u_sc esz=2 msz=1 979673e9fa6SRichard HendersonLD1_zprz 1000010 10 .. ..... 01. ... ..... ..... \ 980673e9fa6SRichard Henderson @rprr_g_load_xs_sc esz=2 msz=2 u=1 981673e9fa6SRichard Henderson 982673e9fa6SRichard Henderson# SVE 32-bit gather load (vector plus immediate) 983673e9fa6SRichard HendersonLD1_zpiz 1000010 .. 01 ..... 1.. ... ..... ..... \ 984673e9fa6SRichard Henderson @rpri_g_load esz=2 985673e9fa6SRichard Henderson 986c4e7c493SRichard Henderson### SVE Memory Contiguous Load Group 987c4e7c493SRichard Henderson 988c4e7c493SRichard Henderson# SVE contiguous load (scalar plus scalar) 989c4e7c493SRichard HendersonLD_zprr 1010010 .... ..... 010 ... ..... ..... @rprr_load_dt nreg=0 990c4e7c493SRichard Henderson 991e2654d75SRichard Henderson# SVE contiguous first-fault load (scalar plus scalar) 992e2654d75SRichard HendersonLDFF1_zprr 1010010 .... ..... 011 ... ..... ..... @rprr_load_dt nreg=0 993e2654d75SRichard Henderson 994c4e7c493SRichard Henderson# SVE contiguous load (scalar plus immediate) 995c4e7c493SRichard HendersonLD_zpri 1010010 .... 0.... 101 ... ..... ..... @rpri_load_dt nreg=0 996c4e7c493SRichard Henderson 997e2654d75SRichard Henderson# SVE contiguous non-fault load (scalar plus immediate) 998e2654d75SRichard HendersonLDNF1_zpri 1010010 .... 1.... 101 ... ..... ..... @rpri_load_dt nreg=0 999e2654d75SRichard Henderson 1000c4e7c493SRichard Henderson# SVE contiguous non-temporal load (scalar plus scalar) 1001c4e7c493SRichard Henderson# LDNT1B, LDNT1H, LDNT1W, LDNT1D 1002c4e7c493SRichard Henderson# SVE load multiple structures (scalar plus scalar) 1003c4e7c493SRichard Henderson# LD2B, LD2H, LD2W, LD2D; etc. 1004c4e7c493SRichard HendersonLD_zprr 1010010 .. nreg:2 ..... 110 ... ..... ..... @rprr_load_msz 1005c4e7c493SRichard Henderson 1006c4e7c493SRichard Henderson# SVE contiguous non-temporal load (scalar plus immediate) 1007c4e7c493SRichard Henderson# LDNT1B, LDNT1H, LDNT1W, LDNT1D 1008c4e7c493SRichard Henderson# SVE load multiple structures (scalar plus immediate) 1009c4e7c493SRichard Henderson# LD2B, LD2H, LD2W, LD2D; etc. 1010c4e7c493SRichard HendersonLD_zpri 1010010 .. nreg:2 0.... 111 ... ..... ..... @rpri_load_msz 10111a039c7eSRichard Henderson 101205abe304SRichard Henderson# SVE load and broadcast quadword (scalar plus scalar) 101305abe304SRichard HendersonLD1RQ_zprr 1010010 .. 00 ..... 000 ... ..... ..... \ 101405abe304SRichard Henderson @rprr_load_msz nreg=0 101505abe304SRichard Henderson 101605abe304SRichard Henderson# SVE load and broadcast quadword (scalar plus immediate) 101705abe304SRichard Henderson# LD1RQB, LD1RQH, LD1RQS, LD1RQD 101805abe304SRichard HendersonLD1RQ_zpri 1010010 .. 00 0.... 001 ... ..... ..... \ 101905abe304SRichard Henderson @rpri_load_msz nreg=0 102005abe304SRichard Henderson 1021dec6cf6bSRichard Henderson# SVE 32-bit gather prefetch (scalar plus 32-bit scaled offsets) 1022dec6cf6bSRichard HendersonPRF 1000010 00 -1 ----- 0-- --- ----- 0 ---- 1023dec6cf6bSRichard Henderson 1024dec6cf6bSRichard Henderson# SVE 32-bit gather prefetch (vector plus immediate) 1025dec6cf6bSRichard HendersonPRF 1000010 -- 00 ----- 111 --- ----- 0 ---- 1026dec6cf6bSRichard Henderson 1027dec6cf6bSRichard Henderson# SVE contiguous prefetch (scalar plus immediate) 1028dec6cf6bSRichard HendersonPRF 1000010 11 1- ----- 0-- --- ----- 0 ---- 1029dec6cf6bSRichard Henderson 1030dec6cf6bSRichard Henderson# SVE contiguous prefetch (scalar plus scalar) 1031dec6cf6bSRichard HendersonPRF_rr 1000010 -- 00 rm:5 110 --- ----- 0 ---- 1032dec6cf6bSRichard Henderson 1033dec6cf6bSRichard Henderson### SVE Memory 64-bit Gather Group 1034dec6cf6bSRichard Henderson 1035673e9fa6SRichard Henderson# SVE 64-bit gather load (scalar plus 32-bit unpacked unscaled offsets) 1036673e9fa6SRichard Henderson# SVE 64-bit gather load (scalar plus 32-bit unpacked scaled offsets) 1037673e9fa6SRichard HendersonLD1_zprz 1100010 00 .0 ..... 0.. ... ..... ..... \ 1038673e9fa6SRichard Henderson @rprr_g_load_xs_u esz=3 msz=0 scale=0 1039673e9fa6SRichard HendersonLD1_zprz 1100010 01 .. ..... 0.. ... ..... ..... \ 1040673e9fa6SRichard Henderson @rprr_g_load_xs_u_sc esz=3 msz=1 1041673e9fa6SRichard HendersonLD1_zprz 1100010 10 .. ..... 0.. ... ..... ..... \ 1042673e9fa6SRichard Henderson @rprr_g_load_xs_u_sc esz=3 msz=2 1043673e9fa6SRichard HendersonLD1_zprz 1100010 11 .. ..... 01. ... ..... ..... \ 1044673e9fa6SRichard Henderson @rprr_g_load_xs_sc esz=3 msz=3 u=1 1045673e9fa6SRichard Henderson 1046673e9fa6SRichard Henderson# SVE 64-bit gather load (scalar plus 64-bit unscaled offsets) 1047673e9fa6SRichard Henderson# SVE 64-bit gather load (scalar plus 64-bit scaled offsets) 1048673e9fa6SRichard HendersonLD1_zprz 1100010 00 10 ..... 1.. ... ..... ..... \ 1049673e9fa6SRichard Henderson @rprr_g_load_u esz=3 msz=0 scale=0 1050673e9fa6SRichard HendersonLD1_zprz 1100010 01 1. ..... 1.. ... ..... ..... \ 1051673e9fa6SRichard Henderson @rprr_g_load_u_sc esz=3 msz=1 1052673e9fa6SRichard HendersonLD1_zprz 1100010 10 1. ..... 1.. ... ..... ..... \ 1053673e9fa6SRichard Henderson @rprr_g_load_u_sc esz=3 msz=2 1054673e9fa6SRichard HendersonLD1_zprz 1100010 11 1. ..... 11. ... ..... ..... \ 1055673e9fa6SRichard Henderson @rprr_g_load_sc esz=3 msz=3 u=1 1056673e9fa6SRichard Henderson 1057673e9fa6SRichard Henderson# SVE 64-bit gather load (vector plus immediate) 1058673e9fa6SRichard HendersonLD1_zpiz 1100010 .. 01 ..... 1.. ... ..... ..... \ 1059673e9fa6SRichard Henderson @rpri_g_load esz=3 1060673e9fa6SRichard Henderson 1061dec6cf6bSRichard Henderson# SVE 64-bit gather prefetch (scalar plus 64-bit scaled offsets) 1062dec6cf6bSRichard HendersonPRF 1100010 00 11 ----- 1-- --- ----- 0 ---- 1063dec6cf6bSRichard Henderson 1064dec6cf6bSRichard Henderson# SVE 64-bit gather prefetch (scalar plus unpacked 32-bit scaled offsets) 1065dec6cf6bSRichard HendersonPRF 1100010 00 -1 ----- 0-- --- ----- 0 ---- 1066dec6cf6bSRichard Henderson 1067dec6cf6bSRichard Henderson# SVE 64-bit gather prefetch (vector plus immediate) 1068dec6cf6bSRichard HendersonPRF 1100010 -- 00 ----- 111 --- ----- 0 ---- 1069dec6cf6bSRichard Henderson 10701a039c7eSRichard Henderson### SVE Memory Store Group 10711a039c7eSRichard Henderson 10725047c204SRichard Henderson# SVE store predicate register 10735047c204SRichard HendersonSTR_pri 1110010 11 0. ..... 000 ... ..... 0 .... @pd_rn_i9 10745047c204SRichard Henderson 10755047c204SRichard Henderson# SVE store vector register 10765047c204SRichard HendersonSTR_zri 1110010 11 0. ..... 010 ... ..... ..... @rd_rn_i9 10775047c204SRichard Henderson 10781a039c7eSRichard Henderson# SVE contiguous store (scalar plus immediate) 10791a039c7eSRichard Henderson# ST1B, ST1H, ST1W, ST1D; require msz <= esz 10801a039c7eSRichard HendersonST_zpri 1110010 .. esz:2 0.... 111 ... ..... ..... \ 10811a039c7eSRichard Henderson @rpri_store_msz nreg=0 10821a039c7eSRichard Henderson 10831a039c7eSRichard Henderson# SVE contiguous store (scalar plus scalar) 10841a039c7eSRichard Henderson# ST1B, ST1H, ST1W, ST1D; require msz <= esz 10851a039c7eSRichard Henderson# Enumerate msz lest we conflict with STR_zri. 10861a039c7eSRichard HendersonST_zprr 1110010 00 .. ..... 010 ... ..... ..... \ 10871a039c7eSRichard Henderson @rprr_store_esz_n0 msz=0 10881a039c7eSRichard HendersonST_zprr 1110010 01 .. ..... 010 ... ..... ..... \ 10891a039c7eSRichard Henderson @rprr_store_esz_n0 msz=1 10901a039c7eSRichard HendersonST_zprr 1110010 10 .. ..... 010 ... ..... ..... \ 10911a039c7eSRichard Henderson @rprr_store_esz_n0 msz=2 10921a039c7eSRichard HendersonST_zprr 1110010 11 11 ..... 010 ... ..... ..... \ 10931a039c7eSRichard Henderson @rprr_store msz=3 esz=3 nreg=0 10941a039c7eSRichard Henderson 10951a039c7eSRichard Henderson# SVE contiguous non-temporal store (scalar plus immediate) (nreg == 0) 10961a039c7eSRichard Henderson# SVE store multiple structures (scalar plus immediate) (nreg != 0) 10971a039c7eSRichard HendersonST_zpri 1110010 .. nreg:2 1.... 111 ... ..... ..... \ 10981a039c7eSRichard Henderson @rpri_store_msz esz=%size_23 10991a039c7eSRichard Henderson 11001a039c7eSRichard Henderson# SVE contiguous non-temporal store (scalar plus scalar) (nreg == 0) 11011a039c7eSRichard Henderson# SVE store multiple structures (scalar plus scalar) (nreg != 0) 11021a039c7eSRichard HendersonST_zprr 1110010 msz:2 nreg:2 ..... 011 ... ..... ..... \ 11031a039c7eSRichard Henderson @rprr_store esz=%size_23 1104f6dbf62aSRichard Henderson 1105f6dbf62aSRichard Henderson# SVE 32-bit scatter store (scalar plus 32-bit scaled offsets) 1106f6dbf62aSRichard Henderson# Require msz > 0 && msz <= esz. 1107f6dbf62aSRichard HendersonST1_zprz 1110010 .. 11 ..... 100 ... ..... ..... \ 1108f6dbf62aSRichard Henderson @rprr_scatter_store xs=0 esz=2 scale=1 1109f6dbf62aSRichard HendersonST1_zprz 1110010 .. 11 ..... 110 ... ..... ..... \ 1110f6dbf62aSRichard Henderson @rprr_scatter_store xs=1 esz=2 scale=1 1111f6dbf62aSRichard Henderson 1112f6dbf62aSRichard Henderson# SVE 32-bit scatter store (scalar plus 32-bit unscaled offsets) 1113f6dbf62aSRichard Henderson# Require msz <= esz. 1114f6dbf62aSRichard HendersonST1_zprz 1110010 .. 10 ..... 100 ... ..... ..... \ 1115f6dbf62aSRichard Henderson @rprr_scatter_store xs=0 esz=2 scale=0 1116f6dbf62aSRichard HendersonST1_zprz 1110010 .. 10 ..... 110 ... ..... ..... \ 1117f6dbf62aSRichard Henderson @rprr_scatter_store xs=1 esz=2 scale=0 1118f6dbf62aSRichard Henderson 1119f6dbf62aSRichard Henderson# SVE 64-bit scatter store (scalar plus 64-bit scaled offset) 1120f6dbf62aSRichard Henderson# Require msz > 0 1121f6dbf62aSRichard HendersonST1_zprz 1110010 .. 01 ..... 101 ... ..... ..... \ 1122f6dbf62aSRichard Henderson @rprr_scatter_store xs=2 esz=3 scale=1 1123f6dbf62aSRichard Henderson 1124f6dbf62aSRichard Henderson# SVE 64-bit scatter store (scalar plus 64-bit unscaled offset) 1125f6dbf62aSRichard HendersonST1_zprz 1110010 .. 00 ..... 101 ... ..... ..... \ 1126f6dbf62aSRichard Henderson @rprr_scatter_store xs=2 esz=3 scale=0 1127f6dbf62aSRichard Henderson 1128408ecde9SRichard Henderson# SVE 64-bit scatter store (vector plus immediate) 1129408ecde9SRichard HendersonST1_zpiz 1110010 .. 10 ..... 101 ... ..... ..... \ 1130408ecde9SRichard Henderson @rpri_scatter_store esz=3 1131408ecde9SRichard Henderson 1132408ecde9SRichard Henderson# SVE 32-bit scatter store (vector plus immediate) 1133408ecde9SRichard HendersonST1_zpiz 1110010 .. 11 ..... 101 ... ..... ..... \ 1134408ecde9SRichard Henderson @rpri_scatter_store esz=2 1135408ecde9SRichard Henderson 1136f6dbf62aSRichard Henderson# SVE 64-bit scatter store (scalar plus unpacked 32-bit scaled offset) 1137f6dbf62aSRichard Henderson# Require msz > 0 1138f6dbf62aSRichard HendersonST1_zprz 1110010 .. 01 ..... 100 ... ..... ..... \ 1139f6dbf62aSRichard Henderson @rprr_scatter_store xs=0 esz=3 scale=1 1140f6dbf62aSRichard HendersonST1_zprz 1110010 .. 01 ..... 110 ... ..... ..... \ 1141f6dbf62aSRichard Henderson @rprr_scatter_store xs=1 esz=3 scale=1 1142f6dbf62aSRichard Henderson 1143f6dbf62aSRichard Henderson# SVE 64-bit scatter store (scalar plus unpacked 32-bit unscaled offset) 1144f6dbf62aSRichard HendersonST1_zprz 1110010 .. 00 ..... 100 ... ..... ..... \ 1145f6dbf62aSRichard Henderson @rprr_scatter_store xs=0 esz=3 scale=0 1146f6dbf62aSRichard HendersonST1_zprz 1110010 .. 00 ..... 110 ... ..... ..... \ 1147f6dbf62aSRichard Henderson @rprr_scatter_store xs=1 esz=3 scale=0 11485dad1ba5SRichard Henderson 11495dad1ba5SRichard Henderson#### SVE2 Support 11505dad1ba5SRichard Henderson 11515dad1ba5SRichard Henderson### SVE2 Integer Multiply - Unpredicated 11525dad1ba5SRichard Henderson 11535dad1ba5SRichard Henderson# SVE2 integer multiply vectors (unpredicated) 11545dad1ba5SRichard HendersonMUL_zzz 00000100 .. 1 ..... 0110 00 ..... ..... @rd_rn_rm 11555dad1ba5SRichard HendersonSMULH_zzz 00000100 .. 1 ..... 0110 10 ..... ..... @rd_rn_rm 11565dad1ba5SRichard HendersonUMULH_zzz 00000100 .. 1 ..... 0110 11 ..... ..... @rd_rn_rm 11575dad1ba5SRichard HendersonPMUL_zzz 00000100 00 1 ..... 0110 01 ..... ..... @rd_rn_rm_e0 1158d4b1e59dSRichard Henderson 1159d4b1e59dSRichard Henderson### SVE2 Integer - Predicated 1160d4b1e59dSRichard Henderson 1161d4b1e59dSRichard HendersonSADALP_zpzz 01000100 .. 000 100 101 ... ..... ..... @rdm_pg_rn 1162d4b1e59dSRichard HendersonUADALP_zpzz 01000100 .. 000 101 101 ... ..... ..... @rdm_pg_rn 1163db366da8SRichard Henderson 1164db366da8SRichard Henderson### SVE2 integer unary operations (predicated) 1165db366da8SRichard Henderson 1166db366da8SRichard HendersonURECPE 01000100 .. 000 000 101 ... ..... ..... @rd_pg_rn 1167db366da8SRichard HendersonURSQRTE 01000100 .. 000 001 101 ... ..... ..... @rd_pg_rn 1168db366da8SRichard HendersonSQABS 01000100 .. 001 000 101 ... ..... ..... @rd_pg_rn 1169db366da8SRichard HendersonSQNEG 01000100 .. 001 001 101 ... ..... ..... @rd_pg_rn 117045d9503dSRichard Henderson 117145d9503dSRichard Henderson### SVE2 saturating/rounding bitwise shift left (predicated) 117245d9503dSRichard Henderson 117345d9503dSRichard HendersonSRSHL 01000100 .. 000 010 100 ... ..... ..... @rdn_pg_rm 117445d9503dSRichard HendersonURSHL 01000100 .. 000 011 100 ... ..... ..... @rdn_pg_rm 117545d9503dSRichard HendersonSRSHL 01000100 .. 000 110 100 ... ..... ..... @rdm_pg_rn # SRSHLR 117645d9503dSRichard HendersonURSHL 01000100 .. 000 111 100 ... ..... ..... @rdm_pg_rn # URSHLR 117745d9503dSRichard Henderson 117845d9503dSRichard HendersonSQSHL 01000100 .. 001 000 100 ... ..... ..... @rdn_pg_rm 117945d9503dSRichard HendersonUQSHL 01000100 .. 001 001 100 ... ..... ..... @rdn_pg_rm 118045d9503dSRichard HendersonSQSHL 01000100 .. 001 100 100 ... ..... ..... @rdm_pg_rn # SQSHLR 118145d9503dSRichard HendersonUQSHL 01000100 .. 001 101 100 ... ..... ..... @rdm_pg_rn # UQSHLR 118245d9503dSRichard Henderson 118345d9503dSRichard HendersonSQRSHL 01000100 .. 001 010 100 ... ..... ..... @rdn_pg_rm 118445d9503dSRichard HendersonUQRSHL 01000100 .. 001 011 100 ... ..... ..... @rdn_pg_rm 118545d9503dSRichard HendersonSQRSHL 01000100 .. 001 110 100 ... ..... ..... @rdm_pg_rn # SQRSHLR 118645d9503dSRichard HendersonUQRSHL 01000100 .. 001 111 100 ... ..... ..... @rdm_pg_rn # UQRSHLR 1187a47dc220SRichard Henderson 1188a47dc220SRichard Henderson### SVE2 integer halving add/subtract (predicated) 1189a47dc220SRichard Henderson 1190a47dc220SRichard HendersonSHADD 01000100 .. 010 000 100 ... ..... ..... @rdn_pg_rm 1191a47dc220SRichard HendersonUHADD 01000100 .. 010 001 100 ... ..... ..... @rdn_pg_rm 1192a47dc220SRichard HendersonSHSUB 01000100 .. 010 010 100 ... ..... ..... @rdn_pg_rm 1193a47dc220SRichard HendersonUHSUB 01000100 .. 010 011 100 ... ..... ..... @rdn_pg_rm 1194a47dc220SRichard HendersonSRHADD 01000100 .. 010 100 100 ... ..... ..... @rdn_pg_rm 1195a47dc220SRichard HendersonURHADD 01000100 .. 010 101 100 ... ..... ..... @rdn_pg_rm 1196a47dc220SRichard HendersonSHSUB 01000100 .. 010 110 100 ... ..... ..... @rdm_pg_rn # SHSUBR 1197a47dc220SRichard HendersonUHSUB 01000100 .. 010 111 100 ... ..... ..... @rdm_pg_rn # UHSUBR 11988597dc8bSRichard Henderson 11998597dc8bSRichard Henderson### SVE2 integer pairwise arithmetic 12008597dc8bSRichard Henderson 12018597dc8bSRichard HendersonADDP 01000100 .. 010 001 101 ... ..... ..... @rdn_pg_rm 12028597dc8bSRichard HendersonSMAXP 01000100 .. 010 100 101 ... ..... ..... @rdn_pg_rm 12038597dc8bSRichard HendersonUMAXP 01000100 .. 010 101 101 ... ..... ..... @rdn_pg_rm 12048597dc8bSRichard HendersonSMINP 01000100 .. 010 110 101 ... ..... ..... @rdn_pg_rm 12058597dc8bSRichard HendersonUMINP 01000100 .. 010 111 101 ... ..... ..... @rdn_pg_rm 12064f07fbebSRichard Henderson 12074f07fbebSRichard Henderson### SVE2 saturating add/subtract (predicated) 12084f07fbebSRichard Henderson 12094f07fbebSRichard HendersonSQADD_zpzz 01000100 .. 011 000 100 ... ..... ..... @rdn_pg_rm 12104f07fbebSRichard HendersonUQADD_zpzz 01000100 .. 011 001 100 ... ..... ..... @rdn_pg_rm 12114f07fbebSRichard HendersonSQSUB_zpzz 01000100 .. 011 010 100 ... ..... ..... @rdn_pg_rm 12124f07fbebSRichard HendersonUQSUB_zpzz 01000100 .. 011 011 100 ... ..... ..... @rdn_pg_rm 12134f07fbebSRichard HendersonSUQADD 01000100 .. 011 100 100 ... ..... ..... @rdn_pg_rm 12144f07fbebSRichard HendersonUSQADD 01000100 .. 011 101 100 ... ..... ..... @rdn_pg_rm 12154f07fbebSRichard HendersonSQSUB_zpzz 01000100 .. 011 110 100 ... ..... ..... @rdm_pg_rn # SQSUBR 12164f07fbebSRichard HendersonUQSUB_zpzz 01000100 .. 011 111 100 ... ..... ..... @rdm_pg_rn # UQSUBR 12170ce1dda8SRichard Henderson 12180ce1dda8SRichard Henderson#### SVE2 Widening Integer Arithmetic 12190ce1dda8SRichard Henderson 12200ce1dda8SRichard Henderson## SVE2 integer add/subtract long 12210ce1dda8SRichard Henderson 12220ce1dda8SRichard HendersonSADDLB 01000101 .. 0 ..... 00 0000 ..... ..... @rd_rn_rm 12230ce1dda8SRichard HendersonSADDLT 01000101 .. 0 ..... 00 0001 ..... ..... @rd_rn_rm 12240ce1dda8SRichard HendersonUADDLB 01000101 .. 0 ..... 00 0010 ..... ..... @rd_rn_rm 12250ce1dda8SRichard HendersonUADDLT 01000101 .. 0 ..... 00 0011 ..... ..... @rd_rn_rm 12260ce1dda8SRichard Henderson 12270ce1dda8SRichard HendersonSSUBLB 01000101 .. 0 ..... 00 0100 ..... ..... @rd_rn_rm 12280ce1dda8SRichard HendersonSSUBLT 01000101 .. 0 ..... 00 0101 ..... ..... @rd_rn_rm 12290ce1dda8SRichard HendersonUSUBLB 01000101 .. 0 ..... 00 0110 ..... ..... @rd_rn_rm 12300ce1dda8SRichard HendersonUSUBLT 01000101 .. 0 ..... 00 0111 ..... ..... @rd_rn_rm 12310ce1dda8SRichard Henderson 12320ce1dda8SRichard HendersonSABDLB 01000101 .. 0 ..... 00 1100 ..... ..... @rd_rn_rm 12330ce1dda8SRichard HendersonSABDLT 01000101 .. 0 ..... 00 1101 ..... ..... @rd_rn_rm 12340ce1dda8SRichard HendersonUABDLB 01000101 .. 0 ..... 00 1110 ..... ..... @rd_rn_rm 12350ce1dda8SRichard HendersonUABDLT 01000101 .. 0 ..... 00 1111 ..... ..... @rd_rn_rm 1236daec426bSRichard Henderson 1237daec426bSRichard Henderson## SVE2 integer add/subtract interleaved long 1238daec426bSRichard Henderson 1239daec426bSRichard HendersonSADDLBT 01000101 .. 0 ..... 1000 00 ..... ..... @rd_rn_rm 1240daec426bSRichard HendersonSSUBLBT 01000101 .. 0 ..... 1000 10 ..... ..... @rd_rn_rm 1241daec426bSRichard HendersonSSUBLTB 01000101 .. 0 ..... 1000 11 ..... ..... @rd_rn_rm 124281fccf09SRichard Henderson 124381fccf09SRichard Henderson## SVE2 integer add/subtract wide 124481fccf09SRichard Henderson 124581fccf09SRichard HendersonSADDWB 01000101 .. 0 ..... 010 000 ..... ..... @rd_rn_rm 124681fccf09SRichard HendersonSADDWT 01000101 .. 0 ..... 010 001 ..... ..... @rd_rn_rm 124781fccf09SRichard HendersonUADDWB 01000101 .. 0 ..... 010 010 ..... ..... @rd_rn_rm 124881fccf09SRichard HendersonUADDWT 01000101 .. 0 ..... 010 011 ..... ..... @rd_rn_rm 124981fccf09SRichard Henderson 125081fccf09SRichard HendersonSSUBWB 01000101 .. 0 ..... 010 100 ..... ..... @rd_rn_rm 125181fccf09SRichard HendersonSSUBWT 01000101 .. 0 ..... 010 101 ..... ..... @rd_rn_rm 125281fccf09SRichard HendersonUSUBWB 01000101 .. 0 ..... 010 110 ..... ..... @rd_rn_rm 125381fccf09SRichard HendersonUSUBWT 01000101 .. 0 ..... 010 111 ..... ..... @rd_rn_rm 125469ccc099SRichard Henderson 125569ccc099SRichard Henderson## SVE2 integer multiply long 125669ccc099SRichard Henderson 125769ccc099SRichard HendersonSQDMULLB_zzz 01000101 .. 0 ..... 011 000 ..... ..... @rd_rn_rm 125869ccc099SRichard HendersonSQDMULLT_zzz 01000101 .. 0 ..... 011 001 ..... ..... @rd_rn_rm 1259e3a56131SRichard HendersonPMULLB 01000101 .. 0 ..... 011 010 ..... ..... @rd_rn_rm 1260e3a56131SRichard HendersonPMULLT 01000101 .. 0 ..... 011 011 ..... ..... @rd_rn_rm 126169ccc099SRichard HendersonSMULLB_zzz 01000101 .. 0 ..... 011 100 ..... ..... @rd_rn_rm 126269ccc099SRichard HendersonSMULLT_zzz 01000101 .. 0 ..... 011 101 ..... ..... @rd_rn_rm 126369ccc099SRichard HendersonUMULLB_zzz 01000101 .. 0 ..... 011 110 ..... ..... @rd_rn_rm 126469ccc099SRichard HendersonUMULLT_zzz 01000101 .. 0 ..... 011 111 ..... ..... @rd_rn_rm 12654269fef1SRichard Henderson 12664269fef1SRichard Henderson## SVE2 bitwise shift left long 12674269fef1SRichard Henderson 12684269fef1SRichard Henderson# Note bit23 == 0 is handled by esz > 0 in do_sve2_shll_tb. 12694269fef1SRichard HendersonSSHLLB 01000101 .. 0 ..... 1010 00 ..... ..... @rd_rn_tszimm_shl 12704269fef1SRichard HendersonSSHLLT 01000101 .. 0 ..... 1010 01 ..... ..... @rd_rn_tszimm_shl 12714269fef1SRichard HendersonUSHLLB 01000101 .. 0 ..... 1010 10 ..... ..... @rd_rn_tszimm_shl 12724269fef1SRichard HendersonUSHLLT 01000101 .. 0 ..... 1010 11 ..... ..... @rd_rn_tszimm_shl 12732df3ca55SRichard Henderson 12742df3ca55SRichard Henderson## SVE2 bitwise exclusive-or interleaved 12752df3ca55SRichard Henderson 12762df3ca55SRichard HendersonEORBT 01000101 .. 0 ..... 10010 0 ..... ..... @rd_rn_rm 12772df3ca55SRichard HendersonEORTB 01000101 .. 0 ..... 10010 1 ..... ..... @rd_rn_rm 1278cb9c33b8SRichard Henderson 1279cb9c33b8SRichard Henderson## SVE2 bitwise permute 1280cb9c33b8SRichard Henderson 1281cb9c33b8SRichard HendersonBEXT 01000101 .. 0 ..... 1011 00 ..... ..... @rd_rn_rm 1282cb9c33b8SRichard HendersonBDEP 01000101 .. 0 ..... 1011 01 ..... ..... @rd_rn_rm 1283cb9c33b8SRichard HendersonBGRP 01000101 .. 0 ..... 1011 10 ..... ..... @rd_rn_rm 1284ed4a6387SRichard Henderson 1285ed4a6387SRichard Henderson#### SVE2 Accumulate 1286ed4a6387SRichard Henderson 1287ed4a6387SRichard Henderson## SVE2 complex integer add 1288ed4a6387SRichard Henderson 1289ed4a6387SRichard HendersonCADD_rot90 01000101 .. 00000 0 11011 0 ..... ..... @rdn_rm 1290ed4a6387SRichard HendersonCADD_rot270 01000101 .. 00000 0 11011 1 ..... ..... @rdn_rm 1291ed4a6387SRichard HendersonSQCADD_rot90 01000101 .. 00000 1 11011 0 ..... ..... @rdn_rm 1292ed4a6387SRichard HendersonSQCADD_rot270 01000101 .. 00000 1 11011 1 ..... ..... @rdn_rm 129338650638SRichard Henderson 129438650638SRichard Henderson## SVE2 integer absolute difference and accumulate long 129538650638SRichard Henderson 129638650638SRichard HendersonSABALB 01000101 .. 0 ..... 1100 00 ..... ..... @rda_rn_rm 129738650638SRichard HendersonSABALT 01000101 .. 0 ..... 1100 01 ..... ..... @rda_rn_rm 129838650638SRichard HendersonUABALB 01000101 .. 0 ..... 1100 10 ..... ..... @rda_rn_rm 129938650638SRichard HendersonUABALT 01000101 .. 0 ..... 1100 11 ..... ..... @rda_rn_rm 1300b8295dfbSRichard Henderson 1301b8295dfbSRichard Henderson## SVE2 integer add/subtract long with carry 1302b8295dfbSRichard Henderson 1303b8295dfbSRichard Henderson# ADC and SBC decoded via size in helper dispatch. 1304b8295dfbSRichard HendersonADCLB 01000101 .. 0 ..... 11010 0 ..... ..... @rda_rn_rm 1305b8295dfbSRichard HendersonADCLT 01000101 .. 0 ..... 11010 1 ..... ..... @rda_rn_rm 1306a7e3a90eSRichard Henderson 1307a7e3a90eSRichard Henderson## SVE2 bitwise shift right and accumulate 1308a7e3a90eSRichard Henderson 1309a7e3a90eSRichard Henderson# TODO: Use @rda and %reg_movprfx here. 1310a7e3a90eSRichard HendersonSSRA 01000101 .. 0 ..... 1110 00 ..... ..... @rd_rn_tszimm_shr 1311a7e3a90eSRichard HendersonUSRA 01000101 .. 0 ..... 1110 01 ..... ..... @rd_rn_tszimm_shr 1312a7e3a90eSRichard HendersonSRSRA 01000101 .. 0 ..... 1110 10 ..... ..... @rd_rn_tszimm_shr 1313a7e3a90eSRichard HendersonURSRA 01000101 .. 0 ..... 1110 11 ..... ..... @rd_rn_tszimm_shr 1314fc12b46aSRichard Henderson 1315fc12b46aSRichard Henderson## SVE2 bitwise shift and insert 1316fc12b46aSRichard Henderson 1317fc12b46aSRichard HendersonSRI 01000101 .. 0 ..... 11110 0 ..... ..... @rd_rn_tszimm_shr 1318fc12b46aSRichard HendersonSLI 01000101 .. 0 ..... 11110 1 ..... ..... @rd_rn_tszimm_shl 1319289a1797SRichard Henderson 1320289a1797SRichard Henderson## SVE2 integer absolute difference and accumulate 1321289a1797SRichard Henderson 1322289a1797SRichard Henderson# TODO: Use @rda and %reg_movprfx here. 1323289a1797SRichard HendersonSABA 01000101 .. 0 ..... 11111 0 ..... ..... @rd_rn_rm 1324289a1797SRichard HendersonUABA 01000101 .. 0 ..... 11111 1 ..... ..... @rd_rn_rm 13255ff2838dSRichard Henderson 13265ff2838dSRichard Henderson#### SVE2 Narrowing 13275ff2838dSRichard Henderson 13285ff2838dSRichard Henderson## SVE2 saturating extract narrow 13295ff2838dSRichard Henderson 13305ff2838dSRichard Henderson# Bits 23, 18-16 are zero, limited in the translator via esz < 3 & imm == 0. 13315ff2838dSRichard HendersonSQXTNB 01000101 .. 1 ..... 010 000 ..... ..... @rd_rn_tszimm_shl 13325ff2838dSRichard HendersonSQXTNT 01000101 .. 1 ..... 010 001 ..... ..... @rd_rn_tszimm_shl 13335ff2838dSRichard HendersonUQXTNB 01000101 .. 1 ..... 010 010 ..... ..... @rd_rn_tszimm_shl 13345ff2838dSRichard HendersonUQXTNT 01000101 .. 1 ..... 010 011 ..... ..... @rd_rn_tszimm_shl 13355ff2838dSRichard HendersonSQXTUNB 01000101 .. 1 ..... 010 100 ..... ..... @rd_rn_tszimm_shl 13365ff2838dSRichard HendersonSQXTUNT 01000101 .. 1 ..... 010 101 ..... ..... @rd_rn_tszimm_shl 1337b87dbeebSStephen Long 133846d111b2SRichard Henderson## SVE2 bitwise shift right narrow 133946d111b2SRichard Henderson 134046d111b2SRichard Henderson# Bit 23 == 0 is handled by esz > 0 in the translator. 134181fd3e6eSRichard HendersonSQSHRUNB 01000101 .. 1 ..... 00 0000 ..... ..... @rd_rn_tszimm_shr 134281fd3e6eSRichard HendersonSQSHRUNT 01000101 .. 1 ..... 00 0001 ..... ..... @rd_rn_tszimm_shr 134381fd3e6eSRichard HendersonSQRSHRUNB 01000101 .. 1 ..... 00 0010 ..... ..... @rd_rn_tszimm_shr 134481fd3e6eSRichard HendersonSQRSHRUNT 01000101 .. 1 ..... 00 0011 ..... ..... @rd_rn_tszimm_shr 134546d111b2SRichard HendersonSHRNB 01000101 .. 1 ..... 00 0100 ..... ..... @rd_rn_tszimm_shr 134646d111b2SRichard HendersonSHRNT 01000101 .. 1 ..... 00 0101 ..... ..... @rd_rn_tszimm_shr 134746d111b2SRichard HendersonRSHRNB 01000101 .. 1 ..... 00 0110 ..... ..... @rd_rn_tszimm_shr 134846d111b2SRichard HendersonRSHRNT 01000101 .. 1 ..... 00 0111 ..... ..... @rd_rn_tszimm_shr 1349743bb147SRichard HendersonSQSHRNB 01000101 .. 1 ..... 00 1000 ..... ..... @rd_rn_tszimm_shr 1350743bb147SRichard HendersonSQSHRNT 01000101 .. 1 ..... 00 1001 ..... ..... @rd_rn_tszimm_shr 1351743bb147SRichard HendersonSQRSHRNB 01000101 .. 1 ..... 00 1010 ..... ..... @rd_rn_tszimm_shr 1352743bb147SRichard HendersonSQRSHRNT 01000101 .. 1 ..... 00 1011 ..... ..... @rd_rn_tszimm_shr 1353c13418daSRichard HendersonUQSHRNB 01000101 .. 1 ..... 00 1100 ..... ..... @rd_rn_tszimm_shr 1354c13418daSRichard HendersonUQSHRNT 01000101 .. 1 ..... 00 1101 ..... ..... @rd_rn_tszimm_shr 1355c13418daSRichard HendersonUQRSHRNB 01000101 .. 1 ..... 00 1110 ..... ..... @rd_rn_tszimm_shr 1356c13418daSRichard HendersonUQRSHRNT 01000101 .. 1 ..... 00 1111 ..... ..... @rd_rn_tszimm_shr 135746d111b2SRichard Henderson 135840d5ea50SStephen Long## SVE2 integer add/subtract narrow high part 135940d5ea50SStephen Long 136040d5ea50SStephen LongADDHNB 01000101 .. 1 ..... 011 000 ..... ..... @rd_rn_rm 136140d5ea50SStephen LongADDHNT 01000101 .. 1 ..... 011 001 ..... ..... @rd_rn_rm 13620ea3ff02SStephen LongRADDHNB 01000101 .. 1 ..... 011 010 ..... ..... @rd_rn_rm 13630ea3ff02SStephen LongRADDHNT 01000101 .. 1 ..... 011 011 ..... ..... @rd_rn_rm 1364c3cd6766SStephen LongSUBHNB 01000101 .. 1 ..... 011 100 ..... ..... @rd_rn_rm 1365c3cd6766SStephen LongSUBHNT 01000101 .. 1 ..... 011 101 ..... ..... @rd_rn_rm 1366e9443d10SStephen LongRSUBHNB 01000101 .. 1 ..... 011 110 ..... ..... @rd_rn_rm 1367e9443d10SStephen LongRSUBHNT 01000101 .. 1 ..... 011 111 ..... ..... @rd_rn_rm 136840d5ea50SStephen Long 1369e0ae6ec3SStephen Long### SVE2 Character Match 1370e0ae6ec3SStephen Long 1371e0ae6ec3SStephen LongMATCH 01000101 .. 1 ..... 100 ... ..... 0 .... @pd_pg_rn_rm 1372e0ae6ec3SStephen LongNMATCH 01000101 .. 1 ..... 100 ... ..... 1 .... @pd_pg_rn_rm 1373e0ae6ec3SStephen Long 13747d47ac94SStephen Long### SVE2 Histogram Computation 13757d47ac94SStephen Long 13767d47ac94SStephen LongHISTCNT 01000101 .. 1 ..... 110 ... ..... ..... @rd_pg_rn_rm 13777d47ac94SStephen LongHISTSEG 01000101 .. 1 ..... 101 000 ..... ..... @rd_rn_rm 13787d47ac94SStephen Long 1379b87dbeebSStephen Long## SVE2 floating-point pairwise operations 1380b87dbeebSStephen Long 1381b87dbeebSStephen LongFADDP 01100100 .. 010 00 0 100 ... ..... ..... @rdn_pg_rm 1382b87dbeebSStephen LongFMAXNMP 01100100 .. 010 10 0 100 ... ..... ..... @rdn_pg_rm 1383b87dbeebSStephen LongFMINNMP 01100100 .. 010 10 1 100 ... ..... ..... @rdn_pg_rm 1384b87dbeebSStephen LongFMAXP 01100100 .. 010 11 0 100 ... ..... ..... @rdn_pg_rm 1385b87dbeebSStephen LongFMINP 01100100 .. 010 11 1 100 ... ..... ..... @rdn_pg_rm 1386bfc9307eSRichard Henderson 1387bfc9307eSRichard Henderson#### SVE Integer Multiply-Add (unpredicated) 1388bfc9307eSRichard Henderson 1389bfc9307eSRichard Henderson## SVE2 saturating multiply-add long 1390bfc9307eSRichard Henderson 1391bfc9307eSRichard HendersonSQDMLALB_zzzw 01000100 .. 0 ..... 0110 00 ..... ..... @rda_rn_rm 1392bfc9307eSRichard HendersonSQDMLALT_zzzw 01000100 .. 0 ..... 0110 01 ..... ..... @rda_rn_rm 1393bfc9307eSRichard HendersonSQDMLSLB_zzzw 01000100 .. 0 ..... 0110 10 ..... ..... @rda_rn_rm 1394bfc9307eSRichard HendersonSQDMLSLT_zzzw 01000100 .. 0 ..... 0110 11 ..... ..... @rda_rn_rm 1395bfc9307eSRichard Henderson 1396bfc9307eSRichard Henderson## SVE2 saturating multiply-add interleaved long 1397bfc9307eSRichard Henderson 1398bfc9307eSRichard HendersonSQDMLALBT 01000100 .. 0 ..... 00001 0 ..... ..... @rda_rn_rm 1399bfc9307eSRichard HendersonSQDMLSLBT 01000100 .. 0 ..... 00001 1 ..... ..... @rda_rn_rm 1400ab3ddf31SRichard Henderson 1401ab3ddf31SRichard Henderson## SVE2 saturating multiply-add high 1402ab3ddf31SRichard Henderson 1403ab3ddf31SRichard HendersonSQRDMLAH_zzzz 01000100 .. 0 ..... 01110 0 ..... ..... @rda_rn_rm 1404ab3ddf31SRichard HendersonSQRDMLSH_zzzz 01000100 .. 0 ..... 01110 1 ..... ..... @rda_rn_rm 140545a32e80SRichard Henderson 140645a32e80SRichard Henderson## SVE2 integer multiply-add long 140745a32e80SRichard Henderson 140845a32e80SRichard HendersonSMLALB_zzzw 01000100 .. 0 ..... 010 000 ..... ..... @rda_rn_rm 140945a32e80SRichard HendersonSMLALT_zzzw 01000100 .. 0 ..... 010 001 ..... ..... @rda_rn_rm 141045a32e80SRichard HendersonUMLALB_zzzw 01000100 .. 0 ..... 010 010 ..... ..... @rda_rn_rm 141145a32e80SRichard HendersonUMLALT_zzzw 01000100 .. 0 ..... 010 011 ..... ..... @rda_rn_rm 141245a32e80SRichard HendersonSMLSLB_zzzw 01000100 .. 0 ..... 010 100 ..... ..... @rda_rn_rm 141345a32e80SRichard HendersonSMLSLT_zzzw 01000100 .. 0 ..... 010 101 ..... ..... @rda_rn_rm 141445a32e80SRichard HendersonUMLSLB_zzzw 01000100 .. 0 ..... 010 110 ..... ..... @rda_rn_rm 141545a32e80SRichard HendersonUMLSLT_zzzw 01000100 .. 0 ..... 010 111 ..... ..... @rda_rn_rm 1416d782d3caSRichard Henderson 1417d782d3caSRichard Henderson## SVE2 complex integer multiply-add 1418d782d3caSRichard Henderson 1419d782d3caSRichard HendersonCMLA_zzzz 01000100 esz:2 0 rm:5 0010 rot:2 rn:5 rd:5 ra=%reg_movprfx 1420d782d3caSRichard HendersonSQRDCMLAH_zzzz 01000100 esz:2 0 rm:5 0011 rot:2 rn:5 rd:5 ra=%reg_movprfx 14216ebca45fSStephen Long 14224f26756bSStephen Long### SVE2 floating point matrix multiply accumulate 14234f26756bSStephen Long 14244f26756bSStephen LongFMMLA 01100100 .. 1 ..... 111001 ..... ..... @rda_rn_rm 14254f26756bSStephen Long 1426cf327449SStephen Long### SVE2 Memory Gather Load Group 1427cf327449SStephen Long 1428cf327449SStephen Long# SVE2 64-bit gather non-temporal load 1429cf327449SStephen Long# (scalar plus unpacked 32-bit unscaled offsets) 1430cf327449SStephen LongLDNT1_zprz 1100010 msz:2 00 rm:5 1 u:1 0 pg:3 rn:5 rd:5 \ 1431cf327449SStephen Long &rprr_gather_load xs=0 esz=3 scale=0 ff=0 1432cf327449SStephen Long 1433cf327449SStephen Long# SVE2 32-bit gather non-temporal load (scalar plus 32-bit unscaled offsets) 1434cf327449SStephen LongLDNT1_zprz 1000010 msz:2 00 rm:5 10 u:1 pg:3 rn:5 rd:5 \ 1435cf327449SStephen Long &rprr_gather_load xs=0 esz=2 scale=0 ff=0 1436cf327449SStephen Long 14376ebca45fSStephen Long### SVE2 Memory Store Group 14386ebca45fSStephen Long 14396ebca45fSStephen Long# SVE2 64-bit scatter non-temporal store (vector plus scalar) 14406ebca45fSStephen LongSTNT1_zprz 1110010 .. 00 ..... 001 ... ..... ..... \ 14416ebca45fSStephen Long @rprr_scatter_store xs=2 esz=3 scale=0 14426ebca45fSStephen Long 14436ebca45fSStephen Long# SVE2 32-bit scatter non-temporal store (vector plus scalar) 14446ebca45fSStephen LongSTNT1_zprz 1110010 .. 10 ..... 001 ... ..... ..... \ 14456ebca45fSStephen Long @rprr_scatter_store xs=0 esz=2 scale=0 1446