1b8021494Sopenharmony_ci// Copyright 2015, VIXL authors 2b8021494Sopenharmony_ci// All rights reserved. 3b8021494Sopenharmony_ci// 4b8021494Sopenharmony_ci// Redistribution and use in source and binary forms, with or without 5b8021494Sopenharmony_ci// modification, are permitted provided that the following conditions are met: 6b8021494Sopenharmony_ci// 7b8021494Sopenharmony_ci// * Redistributions of source code must retain the above copyright notice, 8b8021494Sopenharmony_ci// this list of conditions and the following disclaimer. 9b8021494Sopenharmony_ci// * Redistributions in binary form must reproduce the above copyright notice, 10b8021494Sopenharmony_ci// this list of conditions and the following disclaimer in the documentation 11b8021494Sopenharmony_ci// and/or other materials provided with the distribution. 12b8021494Sopenharmony_ci// * Neither the name of ARM Limited nor the names of its contributors may be 13b8021494Sopenharmony_ci// used to endorse or promote products derived from this software without 14b8021494Sopenharmony_ci// specific prior written permission. 15b8021494Sopenharmony_ci// 16b8021494Sopenharmony_ci// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS CONTRIBUTORS "AS IS" AND 17b8021494Sopenharmony_ci// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 18b8021494Sopenharmony_ci// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 19b8021494Sopenharmony_ci// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE 20b8021494Sopenharmony_ci// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 21b8021494Sopenharmony_ci// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 22b8021494Sopenharmony_ci// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 23b8021494Sopenharmony_ci// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 24b8021494Sopenharmony_ci// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 25b8021494Sopenharmony_ci// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26b8021494Sopenharmony_ci 27b8021494Sopenharmony_ci#ifndef VIXL_AARCH64_CONSTANTS_AARCH64_H_ 28b8021494Sopenharmony_ci#define VIXL_AARCH64_CONSTANTS_AARCH64_H_ 29b8021494Sopenharmony_ci 30b8021494Sopenharmony_ci#include "../globals-vixl.h" 31b8021494Sopenharmony_ci 32b8021494Sopenharmony_cinamespace vixl { 33b8021494Sopenharmony_cinamespace aarch64 { 34b8021494Sopenharmony_ci 35b8021494Sopenharmony_ciconst unsigned kNumberOfRegisters = 32; 36b8021494Sopenharmony_ciconst unsigned kNumberOfVRegisters = 32; 37b8021494Sopenharmony_ciconst unsigned kNumberOfZRegisters = kNumberOfVRegisters; 38b8021494Sopenharmony_ciconst unsigned kNumberOfPRegisters = 16; 39b8021494Sopenharmony_ci// Callee saved registers are x21-x30(lr). 40b8021494Sopenharmony_ciconst int kNumberOfCalleeSavedRegisters = 10; 41b8021494Sopenharmony_ciconst int kFirstCalleeSavedRegisterIndex = 21; 42b8021494Sopenharmony_ci// Callee saved FP registers are d8-d15. Note that the high parts of v8-v15 are 43b8021494Sopenharmony_ci// still caller-saved. 44b8021494Sopenharmony_ciconst int kNumberOfCalleeSavedFPRegisters = 8; 45b8021494Sopenharmony_ciconst int kFirstCalleeSavedFPRegisterIndex = 8; 46b8021494Sopenharmony_ci// All predicated instructions accept at least p0-p7 as the governing predicate. 47b8021494Sopenharmony_ciconst unsigned kNumberOfGoverningPRegisters = 8; 48b8021494Sopenharmony_ci 49b8021494Sopenharmony_ci// clang-format off 50b8021494Sopenharmony_ci#define AARCH64_P_REGISTER_CODE_LIST(R) \ 51b8021494Sopenharmony_ci R(0) R(1) R(2) R(3) R(4) R(5) R(6) R(7) \ 52b8021494Sopenharmony_ci R(8) R(9) R(10) R(11) R(12) R(13) R(14) R(15) 53b8021494Sopenharmony_ci 54b8021494Sopenharmony_ci#define AARCH64_REGISTER_CODE_LIST(R) \ 55b8021494Sopenharmony_ci R(0) R(1) R(2) R(3) R(4) R(5) R(6) R(7) \ 56b8021494Sopenharmony_ci R(8) R(9) R(10) R(11) R(12) R(13) R(14) R(15) \ 57b8021494Sopenharmony_ci R(16) R(17) R(18) R(19) R(20) R(21) R(22) R(23) \ 58b8021494Sopenharmony_ci R(24) R(25) R(26) R(27) R(28) R(29) R(30) R(31) 59b8021494Sopenharmony_ci 60b8021494Sopenharmony_ci// SVE loads and stores use "w" instead of "s" for word-sized accesses, so the 61b8021494Sopenharmony_ci// mapping from the load/store variant to constants like k*RegSize is irregular. 62b8021494Sopenharmony_ci#define VIXL_SVE_LOAD_STORE_VARIANT_LIST(V) \ 63b8021494Sopenharmony_ci V(b, B) \ 64b8021494Sopenharmony_ci V(h, H) \ 65b8021494Sopenharmony_ci V(w, S) \ 66b8021494Sopenharmony_ci V(d, D) 67b8021494Sopenharmony_ci 68b8021494Sopenharmony_ci// Sign-extending loads don't have double-word variants. 69b8021494Sopenharmony_ci#define VIXL_SVE_LOAD_STORE_SIGNED_VARIANT_LIST(V) \ 70b8021494Sopenharmony_ci V(b, B) \ 71b8021494Sopenharmony_ci V(h, H) \ 72b8021494Sopenharmony_ci V(w, S) 73b8021494Sopenharmony_ci 74b8021494Sopenharmony_ci#define INSTRUCTION_FIELDS_LIST(V_) \ 75b8021494Sopenharmony_ci/* Register fields */ \ 76b8021494Sopenharmony_ciV_(Rd, 4, 0, ExtractBits) /* Destination register. */ \ 77b8021494Sopenharmony_ciV_(Rn, 9, 5, ExtractBits) /* First source register. */ \ 78b8021494Sopenharmony_ciV_(Rm, 20, 16, ExtractBits) /* Second source register. */ \ 79b8021494Sopenharmony_ciV_(RmLow16, 19, 16, ExtractBits) /* Second source register (code 0-15). */ \ 80b8021494Sopenharmony_ciV_(Ra, 14, 10, ExtractBits) /* Third source register. */ \ 81b8021494Sopenharmony_ciV_(Rt, 4, 0, ExtractBits) /* Load/store register. */ \ 82b8021494Sopenharmony_ciV_(Rt2, 14, 10, ExtractBits) /* Load/store second register. */ \ 83b8021494Sopenharmony_ciV_(Rs, 20, 16, ExtractBits) /* Exclusive access status. */ \ 84b8021494Sopenharmony_ciV_(Pt, 3, 0, ExtractBits) /* Load/store register (p0-p7). */ \ 85b8021494Sopenharmony_ciV_(Pd, 3, 0, ExtractBits) /* SVE destination predicate register. */ \ 86b8021494Sopenharmony_ciV_(Pn, 8, 5, ExtractBits) /* SVE first source predicate register. */ \ 87b8021494Sopenharmony_ciV_(Pm, 19, 16, ExtractBits) /* SVE second source predicate register.*/ \ 88b8021494Sopenharmony_ciV_(PgLow8, 12, 10, ExtractBits) /* Governing predicate (p0-p7). */ \ 89b8021494Sopenharmony_ci \ 90b8021494Sopenharmony_ci/* Common bits */ \ 91b8021494Sopenharmony_ciV_(SixtyFourBits, 31, 31, ExtractBits) \ 92b8021494Sopenharmony_ciV_(FlagsUpdate, 29, 29, ExtractBits) \ 93b8021494Sopenharmony_ci \ 94b8021494Sopenharmony_ci/* PC relative addressing */ \ 95b8021494Sopenharmony_ciV_(ImmPCRelHi, 23, 5, ExtractSignedBits) \ 96b8021494Sopenharmony_ciV_(ImmPCRelLo, 30, 29, ExtractBits) \ 97b8021494Sopenharmony_ci \ 98b8021494Sopenharmony_ci/* Add/subtract/logical shift register */ \ 99b8021494Sopenharmony_ciV_(ShiftDP, 23, 22, ExtractBits) \ 100b8021494Sopenharmony_ciV_(ImmDPShift, 15, 10, ExtractBits) \ 101b8021494Sopenharmony_ci \ 102b8021494Sopenharmony_ci/* Add/subtract immediate */ \ 103b8021494Sopenharmony_ciV_(ImmAddSub, 21, 10, ExtractBits) \ 104b8021494Sopenharmony_ciV_(ImmAddSubShift, 22, 22, ExtractBits) \ 105b8021494Sopenharmony_ci \ 106b8021494Sopenharmony_ci/* Add/substract extend */ \ 107b8021494Sopenharmony_ciV_(ImmExtendShift, 12, 10, ExtractBits) \ 108b8021494Sopenharmony_ciV_(ExtendMode, 15, 13, ExtractBits) \ 109b8021494Sopenharmony_ci \ 110b8021494Sopenharmony_ci/* Move wide */ \ 111b8021494Sopenharmony_ciV_(ImmMoveWide, 20, 5, ExtractBits) \ 112b8021494Sopenharmony_ciV_(ShiftMoveWide, 22, 21, ExtractBits) \ 113b8021494Sopenharmony_ci \ 114b8021494Sopenharmony_ci/* Logical immediate, bitfield and extract */ \ 115b8021494Sopenharmony_ciV_(BitN, 22, 22, ExtractBits) \ 116b8021494Sopenharmony_ciV_(ImmRotate, 21, 16, ExtractBits) \ 117b8021494Sopenharmony_ciV_(ImmSetBits, 15, 10, ExtractBits) \ 118b8021494Sopenharmony_ciV_(ImmR, 21, 16, ExtractBits) \ 119b8021494Sopenharmony_ciV_(ImmS, 15, 10, ExtractBits) \ 120b8021494Sopenharmony_ci \ 121b8021494Sopenharmony_ci/* Test and branch immediate */ \ 122b8021494Sopenharmony_ciV_(ImmTestBranch, 18, 5, ExtractSignedBits) \ 123b8021494Sopenharmony_ciV_(ImmTestBranchBit40, 23, 19, ExtractBits) \ 124b8021494Sopenharmony_ciV_(ImmTestBranchBit5, 31, 31, ExtractBits) \ 125b8021494Sopenharmony_ci \ 126b8021494Sopenharmony_ci/* Conditionals */ \ 127b8021494Sopenharmony_ciV_(Condition, 15, 12, ExtractBits) \ 128b8021494Sopenharmony_ciV_(ConditionBranch, 3, 0, ExtractBits) \ 129b8021494Sopenharmony_ciV_(Nzcv, 3, 0, ExtractBits) \ 130b8021494Sopenharmony_ciV_(ImmCondCmp, 20, 16, ExtractBits) \ 131b8021494Sopenharmony_ciV_(ImmCondBranch, 23, 5, ExtractSignedBits) \ 132b8021494Sopenharmony_ci \ 133b8021494Sopenharmony_ci/* Floating point */ \ 134b8021494Sopenharmony_ciV_(FPType, 23, 22, ExtractBits) \ 135b8021494Sopenharmony_ciV_(ImmFP, 20, 13, ExtractBits) \ 136b8021494Sopenharmony_ciV_(FPScale, 15, 10, ExtractBits) \ 137b8021494Sopenharmony_ci \ 138b8021494Sopenharmony_ci/* Load Store */ \ 139b8021494Sopenharmony_ciV_(ImmLS, 20, 12, ExtractSignedBits) \ 140b8021494Sopenharmony_ciV_(ImmLSUnsigned, 21, 10, ExtractBits) \ 141b8021494Sopenharmony_ciV_(ImmLSPair, 21, 15, ExtractSignedBits) \ 142b8021494Sopenharmony_ciV_(ImmShiftLS, 12, 12, ExtractBits) \ 143b8021494Sopenharmony_ciV_(LSOpc, 23, 22, ExtractBits) \ 144b8021494Sopenharmony_ciV_(LSVector, 26, 26, ExtractBits) \ 145b8021494Sopenharmony_ciV_(LSSize, 31, 30, ExtractBits) \ 146b8021494Sopenharmony_ciV_(ImmPrefetchOperation, 4, 0, ExtractBits) \ 147b8021494Sopenharmony_ciV_(PrefetchHint, 4, 3, ExtractBits) \ 148b8021494Sopenharmony_ciV_(PrefetchTarget, 2, 1, ExtractBits) \ 149b8021494Sopenharmony_ciV_(PrefetchStream, 0, 0, ExtractBits) \ 150b8021494Sopenharmony_ciV_(ImmLSPACHi, 22, 22, ExtractSignedBits) \ 151b8021494Sopenharmony_ciV_(ImmLSPACLo, 20, 12, ExtractBits) \ 152b8021494Sopenharmony_ci \ 153b8021494Sopenharmony_ci/* Other immediates */ \ 154b8021494Sopenharmony_ciV_(ImmUncondBranch, 25, 0, ExtractSignedBits) \ 155b8021494Sopenharmony_ciV_(ImmCmpBranch, 23, 5, ExtractSignedBits) \ 156b8021494Sopenharmony_ciV_(ImmLLiteral, 23, 5, ExtractSignedBits) \ 157b8021494Sopenharmony_ciV_(ImmException, 20, 5, ExtractBits) \ 158b8021494Sopenharmony_ciV_(ImmHint, 11, 5, ExtractBits) \ 159b8021494Sopenharmony_ciV_(ImmBarrierDomain, 11, 10, ExtractBits) \ 160b8021494Sopenharmony_ciV_(ImmBarrierType, 9, 8, ExtractBits) \ 161b8021494Sopenharmony_ciV_(ImmUdf, 15, 0, ExtractBits) \ 162b8021494Sopenharmony_ci \ 163b8021494Sopenharmony_ci/* System (MRS, MSR, SYS) */ \ 164b8021494Sopenharmony_ciV_(ImmSystemRegister, 20, 5, ExtractBits) \ 165b8021494Sopenharmony_ciV_(SysO0, 19, 19, ExtractBits) \ 166b8021494Sopenharmony_ciV_(SysOp, 18, 5, ExtractBits) \ 167b8021494Sopenharmony_ciV_(SysOp0, 20, 19, ExtractBits) \ 168b8021494Sopenharmony_ciV_(SysOp1, 18, 16, ExtractBits) \ 169b8021494Sopenharmony_ciV_(SysOp2, 7, 5, ExtractBits) \ 170b8021494Sopenharmony_ciV_(CRn, 15, 12, ExtractBits) \ 171b8021494Sopenharmony_ciV_(CRm, 11, 8, ExtractBits) \ 172b8021494Sopenharmony_ciV_(ImmRMIFRotation, 20, 15, ExtractBits) \ 173b8021494Sopenharmony_ci \ 174b8021494Sopenharmony_ci/* Load-/store-exclusive */ \ 175b8021494Sopenharmony_ciV_(LdStXLoad, 22, 22, ExtractBits) \ 176b8021494Sopenharmony_ciV_(LdStXNotExclusive, 23, 23, ExtractBits) \ 177b8021494Sopenharmony_ciV_(LdStXAcquireRelease, 15, 15, ExtractBits) \ 178b8021494Sopenharmony_ciV_(LdStXSizeLog2, 31, 30, ExtractBits) \ 179b8021494Sopenharmony_ciV_(LdStXPair, 21, 21, ExtractBits) \ 180b8021494Sopenharmony_ci \ 181b8021494Sopenharmony_ci/* NEON generic fields */ \ 182b8021494Sopenharmony_ciV_(NEONQ, 30, 30, ExtractBits) \ 183b8021494Sopenharmony_ciV_(NEONSize, 23, 22, ExtractBits) \ 184b8021494Sopenharmony_ciV_(NEONLSSize, 11, 10, ExtractBits) \ 185b8021494Sopenharmony_ciV_(NEONS, 12, 12, ExtractBits) \ 186b8021494Sopenharmony_ciV_(NEONL, 21, 21, ExtractBits) \ 187b8021494Sopenharmony_ciV_(NEONM, 20, 20, ExtractBits) \ 188b8021494Sopenharmony_ciV_(NEONH, 11, 11, ExtractBits) \ 189b8021494Sopenharmony_ciV_(ImmNEONExt, 14, 11, ExtractBits) \ 190b8021494Sopenharmony_ciV_(ImmNEON5, 20, 16, ExtractBits) \ 191b8021494Sopenharmony_ciV_(ImmNEON4, 14, 11, ExtractBits) \ 192b8021494Sopenharmony_ci \ 193b8021494Sopenharmony_ci/* NEON extra fields */ \ 194b8021494Sopenharmony_ciV_(ImmRotFcadd, 12, 12, ExtractBits) \ 195b8021494Sopenharmony_ciV_(ImmRotFcmlaVec, 12, 11, ExtractBits) \ 196b8021494Sopenharmony_ciV_(ImmRotFcmlaSca, 14, 13, ExtractBits) \ 197b8021494Sopenharmony_ci \ 198b8021494Sopenharmony_ci/* NEON Modified Immediate fields */ \ 199b8021494Sopenharmony_ciV_(ImmNEONabc, 18, 16, ExtractBits) \ 200b8021494Sopenharmony_ciV_(ImmNEONdefgh, 9, 5, ExtractBits) \ 201b8021494Sopenharmony_ciV_(NEONModImmOp, 29, 29, ExtractBits) \ 202b8021494Sopenharmony_ciV_(NEONCmode, 15, 12, ExtractBits) \ 203b8021494Sopenharmony_ci \ 204b8021494Sopenharmony_ci/* NEON Shift Immediate fields */ \ 205b8021494Sopenharmony_ciV_(ImmNEONImmhImmb, 22, 16, ExtractBits) \ 206b8021494Sopenharmony_ciV_(ImmNEONImmh, 22, 19, ExtractBits) \ 207b8021494Sopenharmony_ciV_(ImmNEONImmb, 18, 16, ExtractBits) \ 208b8021494Sopenharmony_ci \ 209b8021494Sopenharmony_ci/* SVE generic fields */ \ 210b8021494Sopenharmony_ciV_(SVESize, 23, 22, ExtractBits) \ 211b8021494Sopenharmony_ciV_(ImmSVEVLScale, 10, 5, ExtractSignedBits) \ 212b8021494Sopenharmony_ciV_(ImmSVEIntWideSigned, 12, 5, ExtractSignedBits) \ 213b8021494Sopenharmony_ciV_(ImmSVEIntWideUnsigned, 12, 5, ExtractBits) \ 214b8021494Sopenharmony_ciV_(ImmSVEPredicateConstraint, 9, 5, ExtractBits) \ 215b8021494Sopenharmony_ci \ 216b8021494Sopenharmony_ci/* SVE Bitwise Immediate bitfield */ \ 217b8021494Sopenharmony_ciV_(SVEBitN, 17, 17, ExtractBits) \ 218b8021494Sopenharmony_ciV_(SVEImmRotate, 16, 11, ExtractBits) \ 219b8021494Sopenharmony_ciV_(SVEImmSetBits, 10, 5, ExtractBits) \ 220b8021494Sopenharmony_ci \ 221b8021494Sopenharmony_ciV_(SVEImmPrefetchOperation, 3, 0, ExtractBits) \ 222b8021494Sopenharmony_ciV_(SVEPrefetchHint, 3, 3, ExtractBits) 223b8021494Sopenharmony_ci 224b8021494Sopenharmony_ci// clang-format on 225b8021494Sopenharmony_ci 226b8021494Sopenharmony_ci#define SYSTEM_REGISTER_FIELDS_LIST(V_, M_) \ 227b8021494Sopenharmony_ci /* NZCV */ \ 228b8021494Sopenharmony_ci V_(Flags, 31, 28, ExtractBits) \ 229b8021494Sopenharmony_ci V_(N, 31, 31, ExtractBits) \ 230b8021494Sopenharmony_ci V_(Z, 30, 30, ExtractBits) \ 231b8021494Sopenharmony_ci V_(C, 29, 29, ExtractBits) \ 232b8021494Sopenharmony_ci V_(V, 28, 28, ExtractBits) \ 233b8021494Sopenharmony_ci M_(NZCV, Flags_mask) \ 234b8021494Sopenharmony_ci /* FPCR */ \ 235b8021494Sopenharmony_ci V_(AHP, 26, 26, ExtractBits) \ 236b8021494Sopenharmony_ci V_(DN, 25, 25, ExtractBits) \ 237b8021494Sopenharmony_ci V_(FZ, 24, 24, ExtractBits) \ 238b8021494Sopenharmony_ci V_(RMode, 23, 22, ExtractBits) \ 239b8021494Sopenharmony_ci M_(FPCR, AHP_mask | DN_mask | FZ_mask | RMode_mask) 240b8021494Sopenharmony_ci 241b8021494Sopenharmony_ci// Fields offsets. 242b8021494Sopenharmony_ci#define DECLARE_FIELDS_OFFSETS(Name, HighBit, LowBit, X) \ 243b8021494Sopenharmony_ci const int Name##_offset = LowBit; \ 244b8021494Sopenharmony_ci const int Name##_width = HighBit - LowBit + 1; \ 245b8021494Sopenharmony_ci const uint32_t Name##_mask = ((1 << Name##_width) - 1) << LowBit; 246b8021494Sopenharmony_ci#define NOTHING(A, B) 247b8021494Sopenharmony_ciINSTRUCTION_FIELDS_LIST(DECLARE_FIELDS_OFFSETS) 248b8021494Sopenharmony_ciSYSTEM_REGISTER_FIELDS_LIST(DECLARE_FIELDS_OFFSETS, NOTHING) 249b8021494Sopenharmony_ci#undef NOTHING 250b8021494Sopenharmony_ci#undef DECLARE_FIELDS_BITS 251b8021494Sopenharmony_ci 252b8021494Sopenharmony_ci// ImmPCRel is a compound field (not present in INSTRUCTION_FIELDS_LIST), formed 253b8021494Sopenharmony_ci// from ImmPCRelLo and ImmPCRelHi. 254b8021494Sopenharmony_ciconst int ImmPCRel_mask = ImmPCRelLo_mask | ImmPCRelHi_mask; 255b8021494Sopenharmony_ci 256b8021494Sopenharmony_ci// Disable `clang-format` for the `enum`s below. We care about the manual 257b8021494Sopenharmony_ci// formatting that `clang-format` would destroy. 258b8021494Sopenharmony_ci// clang-format off 259b8021494Sopenharmony_ci 260b8021494Sopenharmony_ci// Condition codes. 261b8021494Sopenharmony_cienum Condition { 262b8021494Sopenharmony_ci eq = 0, // Z set Equal. 263b8021494Sopenharmony_ci ne = 1, // Z clear Not equal. 264b8021494Sopenharmony_ci cs = 2, // C set Carry set. 265b8021494Sopenharmony_ci cc = 3, // C clear Carry clear. 266b8021494Sopenharmony_ci mi = 4, // N set Negative. 267b8021494Sopenharmony_ci pl = 5, // N clear Positive or zero. 268b8021494Sopenharmony_ci vs = 6, // V set Overflow. 269b8021494Sopenharmony_ci vc = 7, // V clear No overflow. 270b8021494Sopenharmony_ci hi = 8, // C set, Z clear Unsigned higher. 271b8021494Sopenharmony_ci ls = 9, // C clear or Z set Unsigned lower or same. 272b8021494Sopenharmony_ci ge = 10, // N == V Greater or equal. 273b8021494Sopenharmony_ci lt = 11, // N != V Less than. 274b8021494Sopenharmony_ci gt = 12, // Z clear, N == V Greater than. 275b8021494Sopenharmony_ci le = 13, // Z set or N != V Less then or equal 276b8021494Sopenharmony_ci al = 14, // Always. 277b8021494Sopenharmony_ci nv = 15, // Behaves as always/al. 278b8021494Sopenharmony_ci 279b8021494Sopenharmony_ci // Aliases. 280b8021494Sopenharmony_ci hs = cs, // C set Unsigned higher or same. 281b8021494Sopenharmony_ci lo = cc, // C clear Unsigned lower. 282b8021494Sopenharmony_ci 283b8021494Sopenharmony_ci // Floating-point additional condition code. 284b8021494Sopenharmony_ci uo, // Unordered comparison. 285b8021494Sopenharmony_ci 286b8021494Sopenharmony_ci // SVE predicate condition aliases. 287b8021494Sopenharmony_ci sve_none = eq, // No active elements were true. 288b8021494Sopenharmony_ci sve_any = ne, // An active element was true. 289b8021494Sopenharmony_ci sve_nlast = cs, // The last element was not true. 290b8021494Sopenharmony_ci sve_last = cc, // The last element was true. 291b8021494Sopenharmony_ci sve_first = mi, // The first element was true. 292b8021494Sopenharmony_ci sve_nfrst = pl, // The first element was not true. 293b8021494Sopenharmony_ci sve_pmore = hi, // An active element was true but not the last element. 294b8021494Sopenharmony_ci sve_plast = ls, // The last active element was true or no active elements were true. 295b8021494Sopenharmony_ci sve_tcont = ge, // CTERM termination condition not deleted. 296b8021494Sopenharmony_ci sve_tstop = lt // CTERM termination condition deleted. 297b8021494Sopenharmony_ci}; 298b8021494Sopenharmony_ci 299b8021494Sopenharmony_ciinline Condition InvertCondition(Condition cond) { 300b8021494Sopenharmony_ci // Conditions al and nv behave identically, as "always true". They can't be 301b8021494Sopenharmony_ci // inverted, because there is no "always false" condition. 302b8021494Sopenharmony_ci VIXL_ASSERT((cond != al) && (cond != nv)); 303b8021494Sopenharmony_ci return static_cast<Condition>(cond ^ 1); 304b8021494Sopenharmony_ci} 305b8021494Sopenharmony_ci 306b8021494Sopenharmony_cienum FPTrapFlags { 307b8021494Sopenharmony_ci EnableTrap = 1, 308b8021494Sopenharmony_ci DisableTrap = 0 309b8021494Sopenharmony_ci}; 310b8021494Sopenharmony_ci 311b8021494Sopenharmony_cienum FlagsUpdate { 312b8021494Sopenharmony_ci SetFlags = 1, 313b8021494Sopenharmony_ci LeaveFlags = 0 314b8021494Sopenharmony_ci}; 315b8021494Sopenharmony_ci 316b8021494Sopenharmony_cienum StatusFlags { 317b8021494Sopenharmony_ci NoFlag = 0, 318b8021494Sopenharmony_ci 319b8021494Sopenharmony_ci // Derive the flag combinations from the system register bit descriptions. 320b8021494Sopenharmony_ci NFlag = N_mask, 321b8021494Sopenharmony_ci ZFlag = Z_mask, 322b8021494Sopenharmony_ci CFlag = C_mask, 323b8021494Sopenharmony_ci VFlag = V_mask, 324b8021494Sopenharmony_ci NZFlag = NFlag | ZFlag, 325b8021494Sopenharmony_ci NCFlag = NFlag | CFlag, 326b8021494Sopenharmony_ci NVFlag = NFlag | VFlag, 327b8021494Sopenharmony_ci ZCFlag = ZFlag | CFlag, 328b8021494Sopenharmony_ci ZVFlag = ZFlag | VFlag, 329b8021494Sopenharmony_ci CVFlag = CFlag | VFlag, 330b8021494Sopenharmony_ci NZCFlag = NFlag | ZFlag | CFlag, 331b8021494Sopenharmony_ci NZVFlag = NFlag | ZFlag | VFlag, 332b8021494Sopenharmony_ci NCVFlag = NFlag | CFlag | VFlag, 333b8021494Sopenharmony_ci ZCVFlag = ZFlag | CFlag | VFlag, 334b8021494Sopenharmony_ci NZCVFlag = NFlag | ZFlag | CFlag | VFlag, 335b8021494Sopenharmony_ci 336b8021494Sopenharmony_ci // Floating-point comparison results. 337b8021494Sopenharmony_ci FPEqualFlag = ZCFlag, 338b8021494Sopenharmony_ci FPLessThanFlag = NFlag, 339b8021494Sopenharmony_ci FPGreaterThanFlag = CFlag, 340b8021494Sopenharmony_ci FPUnorderedFlag = CVFlag, 341b8021494Sopenharmony_ci 342b8021494Sopenharmony_ci // SVE condition flags. 343b8021494Sopenharmony_ci SVEFirstFlag = NFlag, 344b8021494Sopenharmony_ci SVENoneFlag = ZFlag, 345b8021494Sopenharmony_ci SVENotLastFlag = CFlag 346b8021494Sopenharmony_ci}; 347b8021494Sopenharmony_ci 348b8021494Sopenharmony_cienum Shift { 349b8021494Sopenharmony_ci NO_SHIFT = -1, 350b8021494Sopenharmony_ci LSL = 0x0, 351b8021494Sopenharmony_ci LSR = 0x1, 352b8021494Sopenharmony_ci ASR = 0x2, 353b8021494Sopenharmony_ci ROR = 0x3, 354b8021494Sopenharmony_ci MSL = 0x4 355b8021494Sopenharmony_ci}; 356b8021494Sopenharmony_ci 357b8021494Sopenharmony_cienum Extend { 358b8021494Sopenharmony_ci NO_EXTEND = -1, 359b8021494Sopenharmony_ci UXTB = 0, 360b8021494Sopenharmony_ci UXTH = 1, 361b8021494Sopenharmony_ci UXTW = 2, 362b8021494Sopenharmony_ci UXTX = 3, 363b8021494Sopenharmony_ci SXTB = 4, 364b8021494Sopenharmony_ci SXTH = 5, 365b8021494Sopenharmony_ci SXTW = 6, 366b8021494Sopenharmony_ci SXTX = 7 367b8021494Sopenharmony_ci}; 368b8021494Sopenharmony_ci 369b8021494Sopenharmony_cienum SVEOffsetModifier { 370b8021494Sopenharmony_ci NO_SVE_OFFSET_MODIFIER, 371b8021494Sopenharmony_ci // Multiply (each element of) the offset by either the vector or predicate 372b8021494Sopenharmony_ci // length, according to the context. 373b8021494Sopenharmony_ci SVE_MUL_VL, 374b8021494Sopenharmony_ci // Shift or extend modifiers (as in `Shift` or `Extend`). 375b8021494Sopenharmony_ci SVE_LSL, 376b8021494Sopenharmony_ci SVE_UXTW, 377b8021494Sopenharmony_ci SVE_SXTW 378b8021494Sopenharmony_ci}; 379b8021494Sopenharmony_ci 380b8021494Sopenharmony_cienum SystemHint { 381b8021494Sopenharmony_ci NOP = 0, 382b8021494Sopenharmony_ci YIELD = 1, 383b8021494Sopenharmony_ci WFE = 2, 384b8021494Sopenharmony_ci WFI = 3, 385b8021494Sopenharmony_ci SEV = 4, 386b8021494Sopenharmony_ci SEVL = 5, 387b8021494Sopenharmony_ci ESB = 16, 388b8021494Sopenharmony_ci CSDB = 20, 389b8021494Sopenharmony_ci BTI = 32, 390b8021494Sopenharmony_ci BTI_c = 34, 391b8021494Sopenharmony_ci BTI_j = 36, 392b8021494Sopenharmony_ci BTI_jc = 38 393b8021494Sopenharmony_ci}; 394b8021494Sopenharmony_ci 395b8021494Sopenharmony_cienum BranchTargetIdentifier { 396b8021494Sopenharmony_ci EmitBTI_none = NOP, 397b8021494Sopenharmony_ci EmitBTI = BTI, 398b8021494Sopenharmony_ci EmitBTI_c = BTI_c, 399b8021494Sopenharmony_ci EmitBTI_j = BTI_j, 400b8021494Sopenharmony_ci EmitBTI_jc = BTI_jc, 401b8021494Sopenharmony_ci 402b8021494Sopenharmony_ci // These correspond to the values of the CRm:op2 fields in the equivalent HINT 403b8021494Sopenharmony_ci // instruction. 404b8021494Sopenharmony_ci EmitPACIASP = 25, 405b8021494Sopenharmony_ci EmitPACIBSP = 27 406b8021494Sopenharmony_ci}; 407b8021494Sopenharmony_ci 408b8021494Sopenharmony_cienum BarrierDomain { 409b8021494Sopenharmony_ci OuterShareable = 0, 410b8021494Sopenharmony_ci NonShareable = 1, 411b8021494Sopenharmony_ci InnerShareable = 2, 412b8021494Sopenharmony_ci FullSystem = 3 413b8021494Sopenharmony_ci}; 414b8021494Sopenharmony_ci 415b8021494Sopenharmony_cienum BarrierType { 416b8021494Sopenharmony_ci BarrierOther = 0, 417b8021494Sopenharmony_ci BarrierReads = 1, 418b8021494Sopenharmony_ci BarrierWrites = 2, 419b8021494Sopenharmony_ci BarrierAll = 3 420b8021494Sopenharmony_ci}; 421b8021494Sopenharmony_ci 422b8021494Sopenharmony_cienum PrefetchOperation { 423b8021494Sopenharmony_ci PLDL1KEEP = 0x00, 424b8021494Sopenharmony_ci PLDL1STRM = 0x01, 425b8021494Sopenharmony_ci PLDL2KEEP = 0x02, 426b8021494Sopenharmony_ci PLDL2STRM = 0x03, 427b8021494Sopenharmony_ci PLDL3KEEP = 0x04, 428b8021494Sopenharmony_ci PLDL3STRM = 0x05, 429b8021494Sopenharmony_ci 430b8021494Sopenharmony_ci PrfUnallocated06 = 0x06, 431b8021494Sopenharmony_ci PrfUnallocated07 = 0x07, 432b8021494Sopenharmony_ci 433b8021494Sopenharmony_ci PLIL1KEEP = 0x08, 434b8021494Sopenharmony_ci PLIL1STRM = 0x09, 435b8021494Sopenharmony_ci PLIL2KEEP = 0x0a, 436b8021494Sopenharmony_ci PLIL2STRM = 0x0b, 437b8021494Sopenharmony_ci PLIL3KEEP = 0x0c, 438b8021494Sopenharmony_ci PLIL3STRM = 0x0d, 439b8021494Sopenharmony_ci 440b8021494Sopenharmony_ci PrfUnallocated0e = 0x0e, 441b8021494Sopenharmony_ci PrfUnallocated0f = 0x0f, 442b8021494Sopenharmony_ci 443b8021494Sopenharmony_ci PSTL1KEEP = 0x10, 444b8021494Sopenharmony_ci PSTL1STRM = 0x11, 445b8021494Sopenharmony_ci PSTL2KEEP = 0x12, 446b8021494Sopenharmony_ci PSTL2STRM = 0x13, 447b8021494Sopenharmony_ci PSTL3KEEP = 0x14, 448b8021494Sopenharmony_ci PSTL3STRM = 0x15, 449b8021494Sopenharmony_ci 450b8021494Sopenharmony_ci PrfUnallocated16 = 0x16, 451b8021494Sopenharmony_ci PrfUnallocated17 = 0x17, 452b8021494Sopenharmony_ci PrfUnallocated18 = 0x18, 453b8021494Sopenharmony_ci PrfUnallocated19 = 0x19, 454b8021494Sopenharmony_ci PrfUnallocated1a = 0x1a, 455b8021494Sopenharmony_ci PrfUnallocated1b = 0x1b, 456b8021494Sopenharmony_ci PrfUnallocated1c = 0x1c, 457b8021494Sopenharmony_ci PrfUnallocated1d = 0x1d, 458b8021494Sopenharmony_ci PrfUnallocated1e = 0x1e, 459b8021494Sopenharmony_ci PrfUnallocated1f = 0x1f, 460b8021494Sopenharmony_ci}; 461b8021494Sopenharmony_ci 462b8021494Sopenharmony_ciconstexpr bool IsNamedPrefetchOperation(int op) { 463b8021494Sopenharmony_ci return ((op >= PLDL1KEEP) && (op <= PLDL3STRM)) || 464b8021494Sopenharmony_ci ((op >= PLIL1KEEP) && (op <= PLIL3STRM)) || 465b8021494Sopenharmony_ci ((op >= PSTL1KEEP) && (op <= PSTL3STRM)); 466b8021494Sopenharmony_ci} 467b8021494Sopenharmony_ci 468b8021494Sopenharmony_cienum BType { 469b8021494Sopenharmony_ci // Set when executing any instruction on a guarded page, except those cases 470b8021494Sopenharmony_ci // listed below. 471b8021494Sopenharmony_ci DefaultBType = 0, 472b8021494Sopenharmony_ci 473b8021494Sopenharmony_ci // Set when an indirect branch is taken from an unguarded page to a guarded 474b8021494Sopenharmony_ci // page, or from a guarded page to ip0 or ip1 (x16 or x17), eg "br ip0". 475b8021494Sopenharmony_ci BranchFromUnguardedOrToIP = 1, 476b8021494Sopenharmony_ci 477b8021494Sopenharmony_ci // Set when an indirect branch and link (call) is taken, eg. "blr x0". 478b8021494Sopenharmony_ci BranchAndLink = 2, 479b8021494Sopenharmony_ci 480b8021494Sopenharmony_ci // Set when an indirect branch is taken from a guarded page to a register 481b8021494Sopenharmony_ci // that is not ip0 or ip1 (x16 or x17), eg, "br x0". 482b8021494Sopenharmony_ci BranchFromGuardedNotToIP = 3 483b8021494Sopenharmony_ci}; 484b8021494Sopenharmony_ci 485b8021494Sopenharmony_citemplate<int op0, int op1, int crn, int crm, int op2> 486b8021494Sopenharmony_ciclass SystemRegisterEncoder { 487b8021494Sopenharmony_ci public: 488b8021494Sopenharmony_ci static const uint32_t value = 489b8021494Sopenharmony_ci ((op0 << SysO0_offset) | 490b8021494Sopenharmony_ci (op1 << SysOp1_offset) | 491b8021494Sopenharmony_ci (crn << CRn_offset) | 492b8021494Sopenharmony_ci (crm << CRm_offset) | 493b8021494Sopenharmony_ci (op2 << SysOp2_offset)) >> ImmSystemRegister_offset; 494b8021494Sopenharmony_ci}; 495b8021494Sopenharmony_ci 496b8021494Sopenharmony_ci// System/special register names. 497b8021494Sopenharmony_ci// This information is not encoded as one field but as the concatenation of 498b8021494Sopenharmony_ci// multiple fields (Op0, Op1, Crn, Crm, Op2). 499b8021494Sopenharmony_cienum SystemRegister { 500b8021494Sopenharmony_ci NZCV = SystemRegisterEncoder<3, 3, 4, 2, 0>::value, 501b8021494Sopenharmony_ci FPCR = SystemRegisterEncoder<3, 3, 4, 4, 0>::value, 502b8021494Sopenharmony_ci RNDR = SystemRegisterEncoder<3, 3, 2, 4, 0>::value, // Random number. 503b8021494Sopenharmony_ci RNDRRS = SystemRegisterEncoder<3, 3, 2, 4, 1>::value // Reseeded random number. 504b8021494Sopenharmony_ci}; 505b8021494Sopenharmony_ci 506b8021494Sopenharmony_citemplate<int op1, int crn, int crm, int op2> 507b8021494Sopenharmony_ciclass CacheOpEncoder { 508b8021494Sopenharmony_ci public: 509b8021494Sopenharmony_ci static const uint32_t value = 510b8021494Sopenharmony_ci ((op1 << SysOp1_offset) | 511b8021494Sopenharmony_ci (crn << CRn_offset) | 512b8021494Sopenharmony_ci (crm << CRm_offset) | 513b8021494Sopenharmony_ci (op2 << SysOp2_offset)) >> SysOp_offset; 514b8021494Sopenharmony_ci}; 515b8021494Sopenharmony_ci 516b8021494Sopenharmony_cienum InstructionCacheOp { 517b8021494Sopenharmony_ci IVAU = CacheOpEncoder<3, 7, 5, 1>::value 518b8021494Sopenharmony_ci}; 519b8021494Sopenharmony_ci 520b8021494Sopenharmony_cienum DataCacheOp { 521b8021494Sopenharmony_ci CVAC = CacheOpEncoder<3, 7, 10, 1>::value, 522b8021494Sopenharmony_ci CVAU = CacheOpEncoder<3, 7, 11, 1>::value, 523b8021494Sopenharmony_ci CVAP = CacheOpEncoder<3, 7, 12, 1>::value, 524b8021494Sopenharmony_ci CVADP = CacheOpEncoder<3, 7, 13, 1>::value, 525b8021494Sopenharmony_ci CIVAC = CacheOpEncoder<3, 7, 14, 1>::value, 526b8021494Sopenharmony_ci ZVA = CacheOpEncoder<3, 7, 4, 1>::value, 527b8021494Sopenharmony_ci GVA = CacheOpEncoder<3, 7, 4, 3>::value, 528b8021494Sopenharmony_ci GZVA = CacheOpEncoder<3, 7, 4, 4>::value, 529b8021494Sopenharmony_ci CGVAC = CacheOpEncoder<3, 7, 10, 3>::value, 530b8021494Sopenharmony_ci CGDVAC = CacheOpEncoder<3, 7, 10, 5>::value, 531b8021494Sopenharmony_ci CGVAP = CacheOpEncoder<3, 7, 12, 3>::value, 532b8021494Sopenharmony_ci CGDVAP = CacheOpEncoder<3, 7, 12, 5>::value, 533b8021494Sopenharmony_ci CIGVAC = CacheOpEncoder<3, 7, 14, 3>::value, 534b8021494Sopenharmony_ci CIGDVAC = CacheOpEncoder<3, 7, 14, 5>::value 535b8021494Sopenharmony_ci}; 536b8021494Sopenharmony_ci 537b8021494Sopenharmony_ci// Some SVE instructions support a predicate constraint pattern. This is 538b8021494Sopenharmony_ci// interpreted as a VL-dependent value, and is typically used to initialise 539b8021494Sopenharmony_ci// predicates, or to otherwise limit the number of processed elements. 540b8021494Sopenharmony_cienum SVEPredicateConstraint { 541b8021494Sopenharmony_ci // Select 2^N elements, for the largest possible N. 542b8021494Sopenharmony_ci SVE_POW2 = 0x0, 543b8021494Sopenharmony_ci // Each VL<N> selects exactly N elements if possible, or zero if N is greater 544b8021494Sopenharmony_ci // than the number of elements. Note that the encoding values for VL<N> are 545b8021494Sopenharmony_ci // not linearly related to N. 546b8021494Sopenharmony_ci SVE_VL1 = 0x1, 547b8021494Sopenharmony_ci SVE_VL2 = 0x2, 548b8021494Sopenharmony_ci SVE_VL3 = 0x3, 549b8021494Sopenharmony_ci SVE_VL4 = 0x4, 550b8021494Sopenharmony_ci SVE_VL5 = 0x5, 551b8021494Sopenharmony_ci SVE_VL6 = 0x6, 552b8021494Sopenharmony_ci SVE_VL7 = 0x7, 553b8021494Sopenharmony_ci SVE_VL8 = 0x8, 554b8021494Sopenharmony_ci SVE_VL16 = 0x9, 555b8021494Sopenharmony_ci SVE_VL32 = 0xa, 556b8021494Sopenharmony_ci SVE_VL64 = 0xb, 557b8021494Sopenharmony_ci SVE_VL128 = 0xc, 558b8021494Sopenharmony_ci SVE_VL256 = 0xd, 559b8021494Sopenharmony_ci // Each MUL<N> selects the largest multiple of N elements that the vector 560b8021494Sopenharmony_ci // length supports. Note that for D-sized lanes, this can be zero. 561b8021494Sopenharmony_ci SVE_MUL4 = 0x1d, 562b8021494Sopenharmony_ci SVE_MUL3 = 0x1e, 563b8021494Sopenharmony_ci // Select all elements. 564b8021494Sopenharmony_ci SVE_ALL = 0x1f 565b8021494Sopenharmony_ci}; 566b8021494Sopenharmony_ci 567b8021494Sopenharmony_ci// Instruction enumerations. 568b8021494Sopenharmony_ci// 569b8021494Sopenharmony_ci// These are the masks that define a class of instructions, and the list of 570b8021494Sopenharmony_ci// instructions within each class. Each enumeration has a Fixed, FMask and 571b8021494Sopenharmony_ci// Mask value. 572b8021494Sopenharmony_ci// 573b8021494Sopenharmony_ci// Fixed: The fixed bits in this instruction class. 574b8021494Sopenharmony_ci// FMask: The mask used to extract the fixed bits in the class. 575b8021494Sopenharmony_ci// Mask: The mask used to identify the instructions within a class. 576b8021494Sopenharmony_ci// 577b8021494Sopenharmony_ci// The enumerations can be used like this: 578b8021494Sopenharmony_ci// 579b8021494Sopenharmony_ci// VIXL_ASSERT(instr->Mask(PCRelAddressingFMask) == PCRelAddressingFixed); 580b8021494Sopenharmony_ci// switch(instr->Mask(PCRelAddressingMask)) { 581b8021494Sopenharmony_ci// case ADR: Format("adr 'Xd, 'AddrPCRelByte"); break; 582b8021494Sopenharmony_ci// case ADRP: Format("adrp 'Xd, 'AddrPCRelPage"); break; 583b8021494Sopenharmony_ci// default: printf("Unknown instruction\n"); 584b8021494Sopenharmony_ci// } 585b8021494Sopenharmony_ci 586b8021494Sopenharmony_ci 587b8021494Sopenharmony_ci// Generic fields. 588b8021494Sopenharmony_cienum GenericInstrField { 589b8021494Sopenharmony_ci SixtyFourBits = 0x80000000, 590b8021494Sopenharmony_ci ThirtyTwoBits = 0x00000000, 591b8021494Sopenharmony_ci 592b8021494Sopenharmony_ci FPTypeMask = 0x00C00000, 593b8021494Sopenharmony_ci FP16 = 0x00C00000, 594b8021494Sopenharmony_ci FP32 = 0x00000000, 595b8021494Sopenharmony_ci FP64 = 0x00400000 596b8021494Sopenharmony_ci}; 597b8021494Sopenharmony_ci 598b8021494Sopenharmony_cienum NEONFormatField { 599b8021494Sopenharmony_ci NEONFormatFieldMask = 0x40C00000, 600b8021494Sopenharmony_ci NEON_Q = 0x40000000, 601b8021494Sopenharmony_ci NEON_8B = 0x00000000, 602b8021494Sopenharmony_ci NEON_16B = NEON_8B | NEON_Q, 603b8021494Sopenharmony_ci NEON_4H = 0x00400000, 604b8021494Sopenharmony_ci NEON_8H = NEON_4H | NEON_Q, 605b8021494Sopenharmony_ci NEON_2S = 0x00800000, 606b8021494Sopenharmony_ci NEON_4S = NEON_2S | NEON_Q, 607b8021494Sopenharmony_ci NEON_1D = 0x00C00000, 608b8021494Sopenharmony_ci NEON_2D = 0x00C00000 | NEON_Q 609b8021494Sopenharmony_ci}; 610b8021494Sopenharmony_ci 611b8021494Sopenharmony_cienum NEONFPFormatField { 612b8021494Sopenharmony_ci NEONFPFormatFieldMask = 0x40400000, 613b8021494Sopenharmony_ci NEON_FP_4H = FP16, 614b8021494Sopenharmony_ci NEON_FP_2S = FP32, 615b8021494Sopenharmony_ci NEON_FP_8H = FP16 | NEON_Q, 616b8021494Sopenharmony_ci NEON_FP_4S = FP32 | NEON_Q, 617b8021494Sopenharmony_ci NEON_FP_2D = FP64 | NEON_Q 618b8021494Sopenharmony_ci}; 619b8021494Sopenharmony_ci 620b8021494Sopenharmony_cienum NEONLSFormatField { 621b8021494Sopenharmony_ci NEONLSFormatFieldMask = 0x40000C00, 622b8021494Sopenharmony_ci LS_NEON_8B = 0x00000000, 623b8021494Sopenharmony_ci LS_NEON_16B = LS_NEON_8B | NEON_Q, 624b8021494Sopenharmony_ci LS_NEON_4H = 0x00000400, 625b8021494Sopenharmony_ci LS_NEON_8H = LS_NEON_4H | NEON_Q, 626b8021494Sopenharmony_ci LS_NEON_2S = 0x00000800, 627b8021494Sopenharmony_ci LS_NEON_4S = LS_NEON_2S | NEON_Q, 628b8021494Sopenharmony_ci LS_NEON_1D = 0x00000C00, 629b8021494Sopenharmony_ci LS_NEON_2D = LS_NEON_1D | NEON_Q 630b8021494Sopenharmony_ci}; 631b8021494Sopenharmony_ci 632b8021494Sopenharmony_cienum NEONScalarFormatField { 633b8021494Sopenharmony_ci NEONScalarFormatFieldMask = 0x00C00000, 634b8021494Sopenharmony_ci NEONScalar = 0x10000000, 635b8021494Sopenharmony_ci NEON_B = 0x00000000, 636b8021494Sopenharmony_ci NEON_H = 0x00400000, 637b8021494Sopenharmony_ci NEON_S = 0x00800000, 638b8021494Sopenharmony_ci NEON_D = 0x00C00000 639b8021494Sopenharmony_ci}; 640b8021494Sopenharmony_ci 641b8021494Sopenharmony_cienum SVESizeField { 642b8021494Sopenharmony_ci SVESizeFieldMask = 0x00C00000, 643b8021494Sopenharmony_ci SVE_B = 0x00000000, 644b8021494Sopenharmony_ci SVE_H = 0x00400000, 645b8021494Sopenharmony_ci SVE_S = 0x00800000, 646b8021494Sopenharmony_ci SVE_D = 0x00C00000 647b8021494Sopenharmony_ci}; 648b8021494Sopenharmony_ci 649b8021494Sopenharmony_ci// PC relative addressing. 650b8021494Sopenharmony_cienum PCRelAddressingOp { 651b8021494Sopenharmony_ci PCRelAddressingFixed = 0x10000000, 652b8021494Sopenharmony_ci PCRelAddressingFMask = 0x1F000000, 653b8021494Sopenharmony_ci PCRelAddressingMask = 0x9F000000, 654b8021494Sopenharmony_ci ADR = PCRelAddressingFixed | 0x00000000, 655b8021494Sopenharmony_ci ADRP = PCRelAddressingFixed | 0x80000000 656b8021494Sopenharmony_ci}; 657b8021494Sopenharmony_ci 658b8021494Sopenharmony_ci// Add/sub (immediate, shifted and extended.) 659b8021494Sopenharmony_ciconst int kSFOffset = 31; 660b8021494Sopenharmony_cienum AddSubOp { 661b8021494Sopenharmony_ci AddSubOpMask = 0x60000000, 662b8021494Sopenharmony_ci AddSubSetFlagsBit = 0x20000000, 663b8021494Sopenharmony_ci ADD = 0x00000000, 664b8021494Sopenharmony_ci ADDS = ADD | AddSubSetFlagsBit, 665b8021494Sopenharmony_ci SUB = 0x40000000, 666b8021494Sopenharmony_ci SUBS = SUB | AddSubSetFlagsBit 667b8021494Sopenharmony_ci}; 668b8021494Sopenharmony_ci 669b8021494Sopenharmony_ci#define ADD_SUB_OP_LIST(V) \ 670b8021494Sopenharmony_ci V(ADD), \ 671b8021494Sopenharmony_ci V(ADDS), \ 672b8021494Sopenharmony_ci V(SUB), \ 673b8021494Sopenharmony_ci V(SUBS) 674b8021494Sopenharmony_ci 675b8021494Sopenharmony_cienum AddSubImmediateOp { 676b8021494Sopenharmony_ci AddSubImmediateFixed = 0x11000000, 677b8021494Sopenharmony_ci AddSubImmediateFMask = 0x1F800000, 678b8021494Sopenharmony_ci AddSubImmediateMask = 0xFF800000, 679b8021494Sopenharmony_ci #define ADD_SUB_IMMEDIATE(A) \ 680b8021494Sopenharmony_ci A##_w_imm = AddSubImmediateFixed | A, \ 681b8021494Sopenharmony_ci A##_x_imm = AddSubImmediateFixed | A | SixtyFourBits 682b8021494Sopenharmony_ci ADD_SUB_OP_LIST(ADD_SUB_IMMEDIATE) 683b8021494Sopenharmony_ci #undef ADD_SUB_IMMEDIATE 684b8021494Sopenharmony_ci}; 685b8021494Sopenharmony_ci 686b8021494Sopenharmony_cienum AddSubShiftedOp { 687b8021494Sopenharmony_ci AddSubShiftedFixed = 0x0B000000, 688b8021494Sopenharmony_ci AddSubShiftedFMask = 0x1F200000, 689b8021494Sopenharmony_ci AddSubShiftedMask = 0xFF200000, 690b8021494Sopenharmony_ci #define ADD_SUB_SHIFTED(A) \ 691b8021494Sopenharmony_ci A##_w_shift = AddSubShiftedFixed | A, \ 692b8021494Sopenharmony_ci A##_x_shift = AddSubShiftedFixed | A | SixtyFourBits 693b8021494Sopenharmony_ci ADD_SUB_OP_LIST(ADD_SUB_SHIFTED) 694b8021494Sopenharmony_ci #undef ADD_SUB_SHIFTED 695b8021494Sopenharmony_ci}; 696b8021494Sopenharmony_ci 697b8021494Sopenharmony_cienum AddSubExtendedOp { 698b8021494Sopenharmony_ci AddSubExtendedFixed = 0x0B200000, 699b8021494Sopenharmony_ci AddSubExtendedFMask = 0x1F200000, 700b8021494Sopenharmony_ci AddSubExtendedMask = 0xFFE00000, 701b8021494Sopenharmony_ci #define ADD_SUB_EXTENDED(A) \ 702b8021494Sopenharmony_ci A##_w_ext = AddSubExtendedFixed | A, \ 703b8021494Sopenharmony_ci A##_x_ext = AddSubExtendedFixed | A | SixtyFourBits 704b8021494Sopenharmony_ci ADD_SUB_OP_LIST(ADD_SUB_EXTENDED) 705b8021494Sopenharmony_ci #undef ADD_SUB_EXTENDED 706b8021494Sopenharmony_ci}; 707b8021494Sopenharmony_ci 708b8021494Sopenharmony_ci// Add/sub with carry. 709b8021494Sopenharmony_cienum AddSubWithCarryOp { 710b8021494Sopenharmony_ci AddSubWithCarryFixed = 0x1A000000, 711b8021494Sopenharmony_ci AddSubWithCarryFMask = 0x1FE00000, 712b8021494Sopenharmony_ci AddSubWithCarryMask = 0xFFE0FC00, 713b8021494Sopenharmony_ci ADC_w = AddSubWithCarryFixed | ADD, 714b8021494Sopenharmony_ci ADC_x = AddSubWithCarryFixed | ADD | SixtyFourBits, 715b8021494Sopenharmony_ci ADC = ADC_w, 716b8021494Sopenharmony_ci ADCS_w = AddSubWithCarryFixed | ADDS, 717b8021494Sopenharmony_ci ADCS_x = AddSubWithCarryFixed | ADDS | SixtyFourBits, 718b8021494Sopenharmony_ci SBC_w = AddSubWithCarryFixed | SUB, 719b8021494Sopenharmony_ci SBC_x = AddSubWithCarryFixed | SUB | SixtyFourBits, 720b8021494Sopenharmony_ci SBC = SBC_w, 721b8021494Sopenharmony_ci SBCS_w = AddSubWithCarryFixed | SUBS, 722b8021494Sopenharmony_ci SBCS_x = AddSubWithCarryFixed | SUBS | SixtyFourBits 723b8021494Sopenharmony_ci}; 724b8021494Sopenharmony_ci 725b8021494Sopenharmony_ci// Rotate right into flags. 726b8021494Sopenharmony_cienum RotateRightIntoFlagsOp { 727b8021494Sopenharmony_ci RotateRightIntoFlagsFixed = 0x1A000400, 728b8021494Sopenharmony_ci RotateRightIntoFlagsFMask = 0x1FE07C00, 729b8021494Sopenharmony_ci RotateRightIntoFlagsMask = 0xFFE07C10, 730b8021494Sopenharmony_ci RMIF = RotateRightIntoFlagsFixed | 0xA0000000 731b8021494Sopenharmony_ci}; 732b8021494Sopenharmony_ci 733b8021494Sopenharmony_ci// Evaluate into flags. 734b8021494Sopenharmony_cienum EvaluateIntoFlagsOp { 735b8021494Sopenharmony_ci EvaluateIntoFlagsFixed = 0x1A000800, 736b8021494Sopenharmony_ci EvaluateIntoFlagsFMask = 0x1FE03C00, 737b8021494Sopenharmony_ci EvaluateIntoFlagsMask = 0xFFE07C1F, 738b8021494Sopenharmony_ci SETF8 = EvaluateIntoFlagsFixed | 0x2000000D, 739b8021494Sopenharmony_ci SETF16 = EvaluateIntoFlagsFixed | 0x2000400D 740b8021494Sopenharmony_ci}; 741b8021494Sopenharmony_ci 742b8021494Sopenharmony_ci 743b8021494Sopenharmony_ci// Logical (immediate and shifted register). 744b8021494Sopenharmony_cienum LogicalOp { 745b8021494Sopenharmony_ci LogicalOpMask = 0x60200000, 746b8021494Sopenharmony_ci NOT = 0x00200000, 747b8021494Sopenharmony_ci AND = 0x00000000, 748b8021494Sopenharmony_ci BIC = AND | NOT, 749b8021494Sopenharmony_ci ORR = 0x20000000, 750b8021494Sopenharmony_ci ORN = ORR | NOT, 751b8021494Sopenharmony_ci EOR = 0x40000000, 752b8021494Sopenharmony_ci EON = EOR | NOT, 753b8021494Sopenharmony_ci ANDS = 0x60000000, 754b8021494Sopenharmony_ci BICS = ANDS | NOT 755b8021494Sopenharmony_ci}; 756b8021494Sopenharmony_ci 757b8021494Sopenharmony_ci// Logical immediate. 758b8021494Sopenharmony_cienum LogicalImmediateOp { 759b8021494Sopenharmony_ci LogicalImmediateFixed = 0x12000000, 760b8021494Sopenharmony_ci LogicalImmediateFMask = 0x1F800000, 761b8021494Sopenharmony_ci LogicalImmediateMask = 0xFF800000, 762b8021494Sopenharmony_ci AND_w_imm = LogicalImmediateFixed | AND, 763b8021494Sopenharmony_ci AND_x_imm = LogicalImmediateFixed | AND | SixtyFourBits, 764b8021494Sopenharmony_ci ORR_w_imm = LogicalImmediateFixed | ORR, 765b8021494Sopenharmony_ci ORR_x_imm = LogicalImmediateFixed | ORR | SixtyFourBits, 766b8021494Sopenharmony_ci EOR_w_imm = LogicalImmediateFixed | EOR, 767b8021494Sopenharmony_ci EOR_x_imm = LogicalImmediateFixed | EOR | SixtyFourBits, 768b8021494Sopenharmony_ci ANDS_w_imm = LogicalImmediateFixed | ANDS, 769b8021494Sopenharmony_ci ANDS_x_imm = LogicalImmediateFixed | ANDS | SixtyFourBits 770b8021494Sopenharmony_ci}; 771b8021494Sopenharmony_ci 772b8021494Sopenharmony_ci// Logical shifted register. 773b8021494Sopenharmony_cienum LogicalShiftedOp { 774b8021494Sopenharmony_ci LogicalShiftedFixed = 0x0A000000, 775b8021494Sopenharmony_ci LogicalShiftedFMask = 0x1F000000, 776b8021494Sopenharmony_ci LogicalShiftedMask = 0xFF200000, 777b8021494Sopenharmony_ci AND_w = LogicalShiftedFixed | AND, 778b8021494Sopenharmony_ci AND_x = LogicalShiftedFixed | AND | SixtyFourBits, 779b8021494Sopenharmony_ci AND_shift = AND_w, 780b8021494Sopenharmony_ci BIC_w = LogicalShiftedFixed | BIC, 781b8021494Sopenharmony_ci BIC_x = LogicalShiftedFixed | BIC | SixtyFourBits, 782b8021494Sopenharmony_ci BIC_shift = BIC_w, 783b8021494Sopenharmony_ci ORR_w = LogicalShiftedFixed | ORR, 784b8021494Sopenharmony_ci ORR_x = LogicalShiftedFixed | ORR | SixtyFourBits, 785b8021494Sopenharmony_ci ORR_shift = ORR_w, 786b8021494Sopenharmony_ci ORN_w = LogicalShiftedFixed | ORN, 787b8021494Sopenharmony_ci ORN_x = LogicalShiftedFixed | ORN | SixtyFourBits, 788b8021494Sopenharmony_ci ORN_shift = ORN_w, 789b8021494Sopenharmony_ci EOR_w = LogicalShiftedFixed | EOR, 790b8021494Sopenharmony_ci EOR_x = LogicalShiftedFixed | EOR | SixtyFourBits, 791b8021494Sopenharmony_ci EOR_shift = EOR_w, 792b8021494Sopenharmony_ci EON_w = LogicalShiftedFixed | EON, 793b8021494Sopenharmony_ci EON_x = LogicalShiftedFixed | EON | SixtyFourBits, 794b8021494Sopenharmony_ci EON_shift = EON_w, 795b8021494Sopenharmony_ci ANDS_w = LogicalShiftedFixed | ANDS, 796b8021494Sopenharmony_ci ANDS_x = LogicalShiftedFixed | ANDS | SixtyFourBits, 797b8021494Sopenharmony_ci ANDS_shift = ANDS_w, 798b8021494Sopenharmony_ci BICS_w = LogicalShiftedFixed | BICS, 799b8021494Sopenharmony_ci BICS_x = LogicalShiftedFixed | BICS | SixtyFourBits, 800b8021494Sopenharmony_ci BICS_shift = BICS_w 801b8021494Sopenharmony_ci}; 802b8021494Sopenharmony_ci 803b8021494Sopenharmony_ci// Move wide immediate. 804b8021494Sopenharmony_cienum MoveWideImmediateOp { 805b8021494Sopenharmony_ci MoveWideImmediateFixed = 0x12800000, 806b8021494Sopenharmony_ci MoveWideImmediateFMask = 0x1F800000, 807b8021494Sopenharmony_ci MoveWideImmediateMask = 0xFF800000, 808b8021494Sopenharmony_ci MOVN = 0x00000000, 809b8021494Sopenharmony_ci MOVZ = 0x40000000, 810b8021494Sopenharmony_ci MOVK = 0x60000000, 811b8021494Sopenharmony_ci MOVN_w = MoveWideImmediateFixed | MOVN, 812b8021494Sopenharmony_ci MOVN_x = MoveWideImmediateFixed | MOVN | SixtyFourBits, 813b8021494Sopenharmony_ci MOVZ_w = MoveWideImmediateFixed | MOVZ, 814b8021494Sopenharmony_ci MOVZ_x = MoveWideImmediateFixed | MOVZ | SixtyFourBits, 815b8021494Sopenharmony_ci MOVK_w = MoveWideImmediateFixed | MOVK, 816b8021494Sopenharmony_ci MOVK_x = MoveWideImmediateFixed | MOVK | SixtyFourBits 817b8021494Sopenharmony_ci}; 818b8021494Sopenharmony_ci 819b8021494Sopenharmony_ci// Bitfield. 820b8021494Sopenharmony_ciconst int kBitfieldNOffset = 22; 821b8021494Sopenharmony_cienum BitfieldOp { 822b8021494Sopenharmony_ci BitfieldFixed = 0x13000000, 823b8021494Sopenharmony_ci BitfieldFMask = 0x1F800000, 824b8021494Sopenharmony_ci BitfieldMask = 0xFF800000, 825b8021494Sopenharmony_ci SBFM_w = BitfieldFixed | 0x00000000, 826b8021494Sopenharmony_ci SBFM_x = BitfieldFixed | 0x80000000, 827b8021494Sopenharmony_ci SBFM = SBFM_w, 828b8021494Sopenharmony_ci BFM_w = BitfieldFixed | 0x20000000, 829b8021494Sopenharmony_ci BFM_x = BitfieldFixed | 0xA0000000, 830b8021494Sopenharmony_ci BFM = BFM_w, 831b8021494Sopenharmony_ci UBFM_w = BitfieldFixed | 0x40000000, 832b8021494Sopenharmony_ci UBFM_x = BitfieldFixed | 0xC0000000, 833b8021494Sopenharmony_ci UBFM = UBFM_w 834b8021494Sopenharmony_ci // Bitfield N field. 835b8021494Sopenharmony_ci}; 836b8021494Sopenharmony_ci 837b8021494Sopenharmony_ci// Extract. 838b8021494Sopenharmony_cienum ExtractOp { 839b8021494Sopenharmony_ci ExtractFixed = 0x13800000, 840b8021494Sopenharmony_ci ExtractFMask = 0x1F800000, 841b8021494Sopenharmony_ci ExtractMask = 0xFFA00000, 842b8021494Sopenharmony_ci EXTR_w = ExtractFixed | 0x00000000, 843b8021494Sopenharmony_ci EXTR_x = ExtractFixed | 0x80000000, 844b8021494Sopenharmony_ci EXTR = EXTR_w 845b8021494Sopenharmony_ci}; 846b8021494Sopenharmony_ci 847b8021494Sopenharmony_ci// Unconditional branch. 848b8021494Sopenharmony_cienum UnconditionalBranchOp { 849b8021494Sopenharmony_ci UnconditionalBranchFixed = 0x14000000, 850b8021494Sopenharmony_ci UnconditionalBranchFMask = 0x7C000000, 851b8021494Sopenharmony_ci UnconditionalBranchMask = 0xFC000000, 852b8021494Sopenharmony_ci B = UnconditionalBranchFixed | 0x00000000, 853b8021494Sopenharmony_ci BL = UnconditionalBranchFixed | 0x80000000 854b8021494Sopenharmony_ci}; 855b8021494Sopenharmony_ci 856b8021494Sopenharmony_ci// Unconditional branch to register. 857b8021494Sopenharmony_cienum UnconditionalBranchToRegisterOp { 858b8021494Sopenharmony_ci UnconditionalBranchToRegisterFixed = 0xD6000000, 859b8021494Sopenharmony_ci UnconditionalBranchToRegisterFMask = 0xFE000000, 860b8021494Sopenharmony_ci UnconditionalBranchToRegisterMask = 0xFFFFFC00, 861b8021494Sopenharmony_ci BR = UnconditionalBranchToRegisterFixed | 0x001F0000, 862b8021494Sopenharmony_ci BLR = UnconditionalBranchToRegisterFixed | 0x003F0000, 863b8021494Sopenharmony_ci RET = UnconditionalBranchToRegisterFixed | 0x005F0000, 864b8021494Sopenharmony_ci 865b8021494Sopenharmony_ci BRAAZ = UnconditionalBranchToRegisterFixed | 0x001F0800, 866b8021494Sopenharmony_ci BRABZ = UnconditionalBranchToRegisterFixed | 0x001F0C00, 867b8021494Sopenharmony_ci BLRAAZ = UnconditionalBranchToRegisterFixed | 0x003F0800, 868b8021494Sopenharmony_ci BLRABZ = UnconditionalBranchToRegisterFixed | 0x003F0C00, 869b8021494Sopenharmony_ci RETAA = UnconditionalBranchToRegisterFixed | 0x005F0800, 870b8021494Sopenharmony_ci RETAB = UnconditionalBranchToRegisterFixed | 0x005F0C00, 871b8021494Sopenharmony_ci BRAA = UnconditionalBranchToRegisterFixed | 0x011F0800, 872b8021494Sopenharmony_ci BRAB = UnconditionalBranchToRegisterFixed | 0x011F0C00, 873b8021494Sopenharmony_ci BLRAA = UnconditionalBranchToRegisterFixed | 0x013F0800, 874b8021494Sopenharmony_ci BLRAB = UnconditionalBranchToRegisterFixed | 0x013F0C00 875b8021494Sopenharmony_ci}; 876b8021494Sopenharmony_ci 877b8021494Sopenharmony_ci// Compare and branch. 878b8021494Sopenharmony_cienum CompareBranchOp { 879b8021494Sopenharmony_ci CompareBranchFixed = 0x34000000, 880b8021494Sopenharmony_ci CompareBranchFMask = 0x7E000000, 881b8021494Sopenharmony_ci CompareBranchMask = 0xFF000000, 882b8021494Sopenharmony_ci CBZ_w = CompareBranchFixed | 0x00000000, 883b8021494Sopenharmony_ci CBZ_x = CompareBranchFixed | 0x80000000, 884b8021494Sopenharmony_ci CBZ = CBZ_w, 885b8021494Sopenharmony_ci CBNZ_w = CompareBranchFixed | 0x01000000, 886b8021494Sopenharmony_ci CBNZ_x = CompareBranchFixed | 0x81000000, 887b8021494Sopenharmony_ci CBNZ = CBNZ_w 888b8021494Sopenharmony_ci}; 889b8021494Sopenharmony_ci 890b8021494Sopenharmony_ci// Test and branch. 891b8021494Sopenharmony_cienum TestBranchOp { 892b8021494Sopenharmony_ci TestBranchFixed = 0x36000000, 893b8021494Sopenharmony_ci TestBranchFMask = 0x7E000000, 894b8021494Sopenharmony_ci TestBranchMask = 0x7F000000, 895b8021494Sopenharmony_ci TBZ = TestBranchFixed | 0x00000000, 896b8021494Sopenharmony_ci TBNZ = TestBranchFixed | 0x01000000 897b8021494Sopenharmony_ci}; 898b8021494Sopenharmony_ci 899b8021494Sopenharmony_ci// Conditional branch. 900b8021494Sopenharmony_cienum ConditionalBranchOp { 901b8021494Sopenharmony_ci ConditionalBranchFixed = 0x54000000, 902b8021494Sopenharmony_ci ConditionalBranchFMask = 0xFE000000, 903b8021494Sopenharmony_ci ConditionalBranchMask = 0xFF000010, 904b8021494Sopenharmony_ci B_cond = ConditionalBranchFixed | 0x00000000 905b8021494Sopenharmony_ci}; 906b8021494Sopenharmony_ci 907b8021494Sopenharmony_ci// System. 908b8021494Sopenharmony_ci// System instruction encoding is complicated because some instructions use op 909b8021494Sopenharmony_ci// and CR fields to encode parameters. To handle this cleanly, the system 910b8021494Sopenharmony_ci// instructions are split into more than one enum. 911b8021494Sopenharmony_ci 912b8021494Sopenharmony_cienum SystemOp { 913b8021494Sopenharmony_ci SystemFixed = 0xD5000000, 914b8021494Sopenharmony_ci SystemFMask = 0xFFC00000 915b8021494Sopenharmony_ci}; 916b8021494Sopenharmony_ci 917b8021494Sopenharmony_cienum SystemSysRegOp { 918b8021494Sopenharmony_ci SystemSysRegFixed = 0xD5100000, 919b8021494Sopenharmony_ci SystemSysRegFMask = 0xFFD00000, 920b8021494Sopenharmony_ci SystemSysRegMask = 0xFFF00000, 921b8021494Sopenharmony_ci MRS = SystemSysRegFixed | 0x00200000, 922b8021494Sopenharmony_ci MSR = SystemSysRegFixed | 0x00000000 923b8021494Sopenharmony_ci}; 924b8021494Sopenharmony_ci 925b8021494Sopenharmony_cienum SystemPStateOp { 926b8021494Sopenharmony_ci SystemPStateFixed = 0xD5004000, 927b8021494Sopenharmony_ci SystemPStateFMask = 0xFFF8F000, 928b8021494Sopenharmony_ci SystemPStateMask = 0xFFFFF0FF, 929b8021494Sopenharmony_ci CFINV = SystemPStateFixed | 0x0000001F, 930b8021494Sopenharmony_ci XAFLAG = SystemPStateFixed | 0x0000003F, 931b8021494Sopenharmony_ci AXFLAG = SystemPStateFixed | 0x0000005F 932b8021494Sopenharmony_ci}; 933b8021494Sopenharmony_ci 934b8021494Sopenharmony_cienum SystemHintOp { 935b8021494Sopenharmony_ci SystemHintFixed = 0xD503201F, 936b8021494Sopenharmony_ci SystemHintFMask = 0xFFFFF01F, 937b8021494Sopenharmony_ci SystemHintMask = 0xFFFFF01F, 938b8021494Sopenharmony_ci HINT = SystemHintFixed | 0x00000000 939b8021494Sopenharmony_ci}; 940b8021494Sopenharmony_ci 941b8021494Sopenharmony_cienum SystemSysOp { 942b8021494Sopenharmony_ci SystemSysFixed = 0xD5080000, 943b8021494Sopenharmony_ci SystemSysFMask = 0xFFF80000, 944b8021494Sopenharmony_ci SystemSysMask = 0xFFF80000, 945b8021494Sopenharmony_ci SYS = SystemSysFixed | 0x00000000 946b8021494Sopenharmony_ci}; 947b8021494Sopenharmony_ci 948b8021494Sopenharmony_ci// Exception. 949b8021494Sopenharmony_cienum ExceptionOp { 950b8021494Sopenharmony_ci ExceptionFixed = 0xD4000000, 951b8021494Sopenharmony_ci ExceptionFMask = 0xFF000000, 952b8021494Sopenharmony_ci ExceptionMask = 0xFFE0001F, 953b8021494Sopenharmony_ci HLT = ExceptionFixed | 0x00400000, 954b8021494Sopenharmony_ci BRK = ExceptionFixed | 0x00200000, 955b8021494Sopenharmony_ci SVC = ExceptionFixed | 0x00000001, 956b8021494Sopenharmony_ci HVC = ExceptionFixed | 0x00000002, 957b8021494Sopenharmony_ci SMC = ExceptionFixed | 0x00000003, 958b8021494Sopenharmony_ci DCPS1 = ExceptionFixed | 0x00A00001, 959b8021494Sopenharmony_ci DCPS2 = ExceptionFixed | 0x00A00002, 960b8021494Sopenharmony_ci DCPS3 = ExceptionFixed | 0x00A00003 961b8021494Sopenharmony_ci}; 962b8021494Sopenharmony_ci 963b8021494Sopenharmony_cienum MemBarrierOp { 964b8021494Sopenharmony_ci MemBarrierFixed = 0xD503309F, 965b8021494Sopenharmony_ci MemBarrierFMask = 0xFFFFF09F, 966b8021494Sopenharmony_ci MemBarrierMask = 0xFFFFF0FF, 967b8021494Sopenharmony_ci DSB = MemBarrierFixed | 0x00000000, 968b8021494Sopenharmony_ci DMB = MemBarrierFixed | 0x00000020, 969b8021494Sopenharmony_ci ISB = MemBarrierFixed | 0x00000040 970b8021494Sopenharmony_ci}; 971b8021494Sopenharmony_ci 972b8021494Sopenharmony_cienum SystemExclusiveMonitorOp { 973b8021494Sopenharmony_ci SystemExclusiveMonitorFixed = 0xD503305F, 974b8021494Sopenharmony_ci SystemExclusiveMonitorFMask = 0xFFFFF0FF, 975b8021494Sopenharmony_ci SystemExclusiveMonitorMask = 0xFFFFF0FF, 976b8021494Sopenharmony_ci CLREX = SystemExclusiveMonitorFixed 977b8021494Sopenharmony_ci}; 978b8021494Sopenharmony_ci 979b8021494Sopenharmony_cienum SystemPAuthOp { 980b8021494Sopenharmony_ci SystemPAuthFixed = 0xD503211F, 981b8021494Sopenharmony_ci SystemPAuthFMask = 0xFFFFFD1F, 982b8021494Sopenharmony_ci SystemPAuthMask = 0xFFFFFFFF, 983b8021494Sopenharmony_ci PACIA1716 = SystemPAuthFixed | 0x00000100, 984b8021494Sopenharmony_ci PACIB1716 = SystemPAuthFixed | 0x00000140, 985b8021494Sopenharmony_ci AUTIA1716 = SystemPAuthFixed | 0x00000180, 986b8021494Sopenharmony_ci AUTIB1716 = SystemPAuthFixed | 0x000001C0, 987b8021494Sopenharmony_ci PACIAZ = SystemPAuthFixed | 0x00000300, 988b8021494Sopenharmony_ci PACIASP = SystemPAuthFixed | 0x00000320, 989b8021494Sopenharmony_ci PACIBZ = SystemPAuthFixed | 0x00000340, 990b8021494Sopenharmony_ci PACIBSP = SystemPAuthFixed | 0x00000360, 991b8021494Sopenharmony_ci AUTIAZ = SystemPAuthFixed | 0x00000380, 992b8021494Sopenharmony_ci AUTIASP = SystemPAuthFixed | 0x000003A0, 993b8021494Sopenharmony_ci AUTIBZ = SystemPAuthFixed | 0x000003C0, 994b8021494Sopenharmony_ci AUTIBSP = SystemPAuthFixed | 0x000003E0, 995b8021494Sopenharmony_ci 996b8021494Sopenharmony_ci // XPACLRI has the same fixed mask as System Hints and needs to be handled 997b8021494Sopenharmony_ci // differently. 998b8021494Sopenharmony_ci XPACLRI = 0xD50320FF 999b8021494Sopenharmony_ci}; 1000b8021494Sopenharmony_ci 1001b8021494Sopenharmony_ci// Any load or store. 1002b8021494Sopenharmony_cienum LoadStoreAnyOp { 1003b8021494Sopenharmony_ci LoadStoreAnyFMask = 0x0a000000, 1004b8021494Sopenharmony_ci LoadStoreAnyFixed = 0x08000000 1005b8021494Sopenharmony_ci}; 1006b8021494Sopenharmony_ci 1007b8021494Sopenharmony_ci// Any load pair or store pair. 1008b8021494Sopenharmony_cienum LoadStorePairAnyOp { 1009b8021494Sopenharmony_ci LoadStorePairAnyFMask = 0x3a000000, 1010b8021494Sopenharmony_ci LoadStorePairAnyFixed = 0x28000000 1011b8021494Sopenharmony_ci}; 1012b8021494Sopenharmony_ci 1013b8021494Sopenharmony_ci#define LOAD_STORE_PAIR_OP_LIST(V) \ 1014b8021494Sopenharmony_ci V(STP, w, 0x00000000), \ 1015b8021494Sopenharmony_ci V(LDP, w, 0x00400000), \ 1016b8021494Sopenharmony_ci V(LDPSW, x, 0x40400000), \ 1017b8021494Sopenharmony_ci V(STP, x, 0x80000000), \ 1018b8021494Sopenharmony_ci V(LDP, x, 0x80400000), \ 1019b8021494Sopenharmony_ci V(STP, s, 0x04000000), \ 1020b8021494Sopenharmony_ci V(LDP, s, 0x04400000), \ 1021b8021494Sopenharmony_ci V(STP, d, 0x44000000), \ 1022b8021494Sopenharmony_ci V(LDP, d, 0x44400000), \ 1023b8021494Sopenharmony_ci V(STP, q, 0x84000000), \ 1024b8021494Sopenharmony_ci V(LDP, q, 0x84400000) 1025b8021494Sopenharmony_ci 1026b8021494Sopenharmony_ci// Load/store pair (post, pre and offset.) 1027b8021494Sopenharmony_cienum LoadStorePairOp { 1028b8021494Sopenharmony_ci LoadStorePairMask = 0xC4400000, 1029b8021494Sopenharmony_ci LoadStorePairLBit = 1 << 22, 1030b8021494Sopenharmony_ci #define LOAD_STORE_PAIR(A, B, C) \ 1031b8021494Sopenharmony_ci A##_##B = C 1032b8021494Sopenharmony_ci LOAD_STORE_PAIR_OP_LIST(LOAD_STORE_PAIR) 1033b8021494Sopenharmony_ci #undef LOAD_STORE_PAIR 1034b8021494Sopenharmony_ci}; 1035b8021494Sopenharmony_ci 1036b8021494Sopenharmony_cienum LoadStorePairPostIndexOp { 1037b8021494Sopenharmony_ci LoadStorePairPostIndexFixed = 0x28800000, 1038b8021494Sopenharmony_ci LoadStorePairPostIndexFMask = 0x3B800000, 1039b8021494Sopenharmony_ci LoadStorePairPostIndexMask = 0xFFC00000, 1040b8021494Sopenharmony_ci #define LOAD_STORE_PAIR_POST_INDEX(A, B, C) \ 1041b8021494Sopenharmony_ci A##_##B##_post = LoadStorePairPostIndexFixed | A##_##B 1042b8021494Sopenharmony_ci LOAD_STORE_PAIR_OP_LIST(LOAD_STORE_PAIR_POST_INDEX) 1043b8021494Sopenharmony_ci #undef LOAD_STORE_PAIR_POST_INDEX 1044b8021494Sopenharmony_ci}; 1045b8021494Sopenharmony_ci 1046b8021494Sopenharmony_cienum LoadStorePairPreIndexOp { 1047b8021494Sopenharmony_ci LoadStorePairPreIndexFixed = 0x29800000, 1048b8021494Sopenharmony_ci LoadStorePairPreIndexFMask = 0x3B800000, 1049b8021494Sopenharmony_ci LoadStorePairPreIndexMask = 0xFFC00000, 1050b8021494Sopenharmony_ci #define LOAD_STORE_PAIR_PRE_INDEX(A, B, C) \ 1051b8021494Sopenharmony_ci A##_##B##_pre = LoadStorePairPreIndexFixed | A##_##B 1052b8021494Sopenharmony_ci LOAD_STORE_PAIR_OP_LIST(LOAD_STORE_PAIR_PRE_INDEX) 1053b8021494Sopenharmony_ci #undef LOAD_STORE_PAIR_PRE_INDEX 1054b8021494Sopenharmony_ci}; 1055b8021494Sopenharmony_ci 1056b8021494Sopenharmony_cienum LoadStorePairOffsetOp { 1057b8021494Sopenharmony_ci LoadStorePairOffsetFixed = 0x29000000, 1058b8021494Sopenharmony_ci LoadStorePairOffsetFMask = 0x3B800000, 1059b8021494Sopenharmony_ci LoadStorePairOffsetMask = 0xFFC00000, 1060b8021494Sopenharmony_ci #define LOAD_STORE_PAIR_OFFSET(A, B, C) \ 1061b8021494Sopenharmony_ci A##_##B##_off = LoadStorePairOffsetFixed | A##_##B 1062b8021494Sopenharmony_ci LOAD_STORE_PAIR_OP_LIST(LOAD_STORE_PAIR_OFFSET) 1063b8021494Sopenharmony_ci #undef LOAD_STORE_PAIR_OFFSET 1064b8021494Sopenharmony_ci}; 1065b8021494Sopenharmony_ci 1066b8021494Sopenharmony_cienum LoadStorePairNonTemporalOp { 1067b8021494Sopenharmony_ci LoadStorePairNonTemporalFixed = 0x28000000, 1068b8021494Sopenharmony_ci LoadStorePairNonTemporalFMask = 0x3B800000, 1069b8021494Sopenharmony_ci LoadStorePairNonTemporalMask = 0xFFC00000, 1070b8021494Sopenharmony_ci LoadStorePairNonTemporalLBit = 1 << 22, 1071b8021494Sopenharmony_ci STNP_w = LoadStorePairNonTemporalFixed | STP_w, 1072b8021494Sopenharmony_ci LDNP_w = LoadStorePairNonTemporalFixed | LDP_w, 1073b8021494Sopenharmony_ci STNP_x = LoadStorePairNonTemporalFixed | STP_x, 1074b8021494Sopenharmony_ci LDNP_x = LoadStorePairNonTemporalFixed | LDP_x, 1075b8021494Sopenharmony_ci STNP_s = LoadStorePairNonTemporalFixed | STP_s, 1076b8021494Sopenharmony_ci LDNP_s = LoadStorePairNonTemporalFixed | LDP_s, 1077b8021494Sopenharmony_ci STNP_d = LoadStorePairNonTemporalFixed | STP_d, 1078b8021494Sopenharmony_ci LDNP_d = LoadStorePairNonTemporalFixed | LDP_d, 1079b8021494Sopenharmony_ci STNP_q = LoadStorePairNonTemporalFixed | STP_q, 1080b8021494Sopenharmony_ci LDNP_q = LoadStorePairNonTemporalFixed | LDP_q 1081b8021494Sopenharmony_ci}; 1082b8021494Sopenharmony_ci 1083b8021494Sopenharmony_ci// Load with pointer authentication. 1084b8021494Sopenharmony_cienum LoadStorePACOp { 1085b8021494Sopenharmony_ci LoadStorePACFixed = 0xF8200400, 1086b8021494Sopenharmony_ci LoadStorePACFMask = 0xFF200400, 1087b8021494Sopenharmony_ci LoadStorePACMask = 0xFFA00C00, 1088b8021494Sopenharmony_ci LoadStorePACPreBit = 0x00000800, 1089b8021494Sopenharmony_ci LDRAA = LoadStorePACFixed | 0x00000000, 1090b8021494Sopenharmony_ci LDRAA_pre = LoadStorePACPreBit | LDRAA, 1091b8021494Sopenharmony_ci LDRAB = LoadStorePACFixed | 0x00800000, 1092b8021494Sopenharmony_ci LDRAB_pre = LoadStorePACPreBit | LDRAB 1093b8021494Sopenharmony_ci}; 1094b8021494Sopenharmony_ci 1095b8021494Sopenharmony_ci// Load literal. 1096b8021494Sopenharmony_cienum LoadLiteralOp { 1097b8021494Sopenharmony_ci LoadLiteralFixed = 0x18000000, 1098b8021494Sopenharmony_ci LoadLiteralFMask = 0x3B000000, 1099b8021494Sopenharmony_ci LoadLiteralMask = 0xFF000000, 1100b8021494Sopenharmony_ci LDR_w_lit = LoadLiteralFixed | 0x00000000, 1101b8021494Sopenharmony_ci LDR_x_lit = LoadLiteralFixed | 0x40000000, 1102b8021494Sopenharmony_ci LDRSW_x_lit = LoadLiteralFixed | 0x80000000, 1103b8021494Sopenharmony_ci PRFM_lit = LoadLiteralFixed | 0xC0000000, 1104b8021494Sopenharmony_ci LDR_s_lit = LoadLiteralFixed | 0x04000000, 1105b8021494Sopenharmony_ci LDR_d_lit = LoadLiteralFixed | 0x44000000, 1106b8021494Sopenharmony_ci LDR_q_lit = LoadLiteralFixed | 0x84000000 1107b8021494Sopenharmony_ci}; 1108b8021494Sopenharmony_ci 1109b8021494Sopenharmony_ci#define LOAD_STORE_OP_LIST(V) \ 1110b8021494Sopenharmony_ci V(ST, RB, w, 0x00000000), \ 1111b8021494Sopenharmony_ci V(ST, RH, w, 0x40000000), \ 1112b8021494Sopenharmony_ci V(ST, R, w, 0x80000000), \ 1113b8021494Sopenharmony_ci V(ST, R, x, 0xC0000000), \ 1114b8021494Sopenharmony_ci V(LD, RB, w, 0x00400000), \ 1115b8021494Sopenharmony_ci V(LD, RH, w, 0x40400000), \ 1116b8021494Sopenharmony_ci V(LD, R, w, 0x80400000), \ 1117b8021494Sopenharmony_ci V(LD, R, x, 0xC0400000), \ 1118b8021494Sopenharmony_ci V(LD, RSB, x, 0x00800000), \ 1119b8021494Sopenharmony_ci V(LD, RSH, x, 0x40800000), \ 1120b8021494Sopenharmony_ci V(LD, RSW, x, 0x80800000), \ 1121b8021494Sopenharmony_ci V(LD, RSB, w, 0x00C00000), \ 1122b8021494Sopenharmony_ci V(LD, RSH, w, 0x40C00000), \ 1123b8021494Sopenharmony_ci V(ST, R, b, 0x04000000), \ 1124b8021494Sopenharmony_ci V(ST, R, h, 0x44000000), \ 1125b8021494Sopenharmony_ci V(ST, R, s, 0x84000000), \ 1126b8021494Sopenharmony_ci V(ST, R, d, 0xC4000000), \ 1127b8021494Sopenharmony_ci V(ST, R, q, 0x04800000), \ 1128b8021494Sopenharmony_ci V(LD, R, b, 0x04400000), \ 1129b8021494Sopenharmony_ci V(LD, R, h, 0x44400000), \ 1130b8021494Sopenharmony_ci V(LD, R, s, 0x84400000), \ 1131b8021494Sopenharmony_ci V(LD, R, d, 0xC4400000), \ 1132b8021494Sopenharmony_ci V(LD, R, q, 0x04C00000) 1133b8021494Sopenharmony_ci 1134b8021494Sopenharmony_ci// Load/store (post, pre, offset and unsigned.) 1135b8021494Sopenharmony_cienum LoadStoreOp { 1136b8021494Sopenharmony_ci LoadStoreMask = 0xC4C00000, 1137b8021494Sopenharmony_ci LoadStoreVMask = 0x04000000, 1138b8021494Sopenharmony_ci #define LOAD_STORE(A, B, C, D) \ 1139b8021494Sopenharmony_ci A##B##_##C = D 1140b8021494Sopenharmony_ci LOAD_STORE_OP_LIST(LOAD_STORE), 1141b8021494Sopenharmony_ci #undef LOAD_STORE 1142b8021494Sopenharmony_ci PRFM = 0xC0800000 1143b8021494Sopenharmony_ci}; 1144b8021494Sopenharmony_ci 1145b8021494Sopenharmony_ci// Load/store unscaled offset. 1146b8021494Sopenharmony_cienum LoadStoreUnscaledOffsetOp { 1147b8021494Sopenharmony_ci LoadStoreUnscaledOffsetFixed = 0x38000000, 1148b8021494Sopenharmony_ci LoadStoreUnscaledOffsetFMask = 0x3B200C00, 1149b8021494Sopenharmony_ci LoadStoreUnscaledOffsetMask = 0xFFE00C00, 1150b8021494Sopenharmony_ci PRFUM = LoadStoreUnscaledOffsetFixed | PRFM, 1151b8021494Sopenharmony_ci #define LOAD_STORE_UNSCALED(A, B, C, D) \ 1152b8021494Sopenharmony_ci A##U##B##_##C = LoadStoreUnscaledOffsetFixed | D 1153b8021494Sopenharmony_ci LOAD_STORE_OP_LIST(LOAD_STORE_UNSCALED) 1154b8021494Sopenharmony_ci #undef LOAD_STORE_UNSCALED 1155b8021494Sopenharmony_ci}; 1156b8021494Sopenharmony_ci 1157b8021494Sopenharmony_ci// Load/store post index. 1158b8021494Sopenharmony_cienum LoadStorePostIndex { 1159b8021494Sopenharmony_ci LoadStorePostIndexFixed = 0x38000400, 1160b8021494Sopenharmony_ci LoadStorePostIndexFMask = 0x3B200C00, 1161b8021494Sopenharmony_ci LoadStorePostIndexMask = 0xFFE00C00, 1162b8021494Sopenharmony_ci #define LOAD_STORE_POST_INDEX(A, B, C, D) \ 1163b8021494Sopenharmony_ci A##B##_##C##_post = LoadStorePostIndexFixed | D 1164b8021494Sopenharmony_ci LOAD_STORE_OP_LIST(LOAD_STORE_POST_INDEX) 1165b8021494Sopenharmony_ci #undef LOAD_STORE_POST_INDEX 1166b8021494Sopenharmony_ci}; 1167b8021494Sopenharmony_ci 1168b8021494Sopenharmony_ci// Load/store pre index. 1169b8021494Sopenharmony_cienum LoadStorePreIndex { 1170b8021494Sopenharmony_ci LoadStorePreIndexFixed = 0x38000C00, 1171b8021494Sopenharmony_ci LoadStorePreIndexFMask = 0x3B200C00, 1172b8021494Sopenharmony_ci LoadStorePreIndexMask = 0xFFE00C00, 1173b8021494Sopenharmony_ci #define LOAD_STORE_PRE_INDEX(A, B, C, D) \ 1174b8021494Sopenharmony_ci A##B##_##C##_pre = LoadStorePreIndexFixed | D 1175b8021494Sopenharmony_ci LOAD_STORE_OP_LIST(LOAD_STORE_PRE_INDEX) 1176b8021494Sopenharmony_ci #undef LOAD_STORE_PRE_INDEX 1177b8021494Sopenharmony_ci}; 1178b8021494Sopenharmony_ci 1179b8021494Sopenharmony_ci// Load/store unsigned offset. 1180b8021494Sopenharmony_cienum LoadStoreUnsignedOffset { 1181b8021494Sopenharmony_ci LoadStoreUnsignedOffsetFixed = 0x39000000, 1182b8021494Sopenharmony_ci LoadStoreUnsignedOffsetFMask = 0x3B000000, 1183b8021494Sopenharmony_ci LoadStoreUnsignedOffsetMask = 0xFFC00000, 1184b8021494Sopenharmony_ci PRFM_unsigned = LoadStoreUnsignedOffsetFixed | PRFM, 1185b8021494Sopenharmony_ci #define LOAD_STORE_UNSIGNED_OFFSET(A, B, C, D) \ 1186b8021494Sopenharmony_ci A##B##_##C##_unsigned = LoadStoreUnsignedOffsetFixed | D 1187b8021494Sopenharmony_ci LOAD_STORE_OP_LIST(LOAD_STORE_UNSIGNED_OFFSET) 1188b8021494Sopenharmony_ci #undef LOAD_STORE_UNSIGNED_OFFSET 1189b8021494Sopenharmony_ci}; 1190b8021494Sopenharmony_ci 1191b8021494Sopenharmony_ci// Load/store register offset. 1192b8021494Sopenharmony_cienum LoadStoreRegisterOffset { 1193b8021494Sopenharmony_ci LoadStoreRegisterOffsetFixed = 0x38200800, 1194b8021494Sopenharmony_ci LoadStoreRegisterOffsetFMask = 0x3B200C00, 1195b8021494Sopenharmony_ci LoadStoreRegisterOffsetMask = 0xFFE00C00, 1196b8021494Sopenharmony_ci PRFM_reg = LoadStoreRegisterOffsetFixed | PRFM, 1197b8021494Sopenharmony_ci #define LOAD_STORE_REGISTER_OFFSET(A, B, C, D) \ 1198b8021494Sopenharmony_ci A##B##_##C##_reg = LoadStoreRegisterOffsetFixed | D 1199b8021494Sopenharmony_ci LOAD_STORE_OP_LIST(LOAD_STORE_REGISTER_OFFSET) 1200b8021494Sopenharmony_ci #undef LOAD_STORE_REGISTER_OFFSET 1201b8021494Sopenharmony_ci}; 1202b8021494Sopenharmony_ci 1203b8021494Sopenharmony_cienum LoadStoreExclusive { 1204b8021494Sopenharmony_ci LoadStoreExclusiveFixed = 0x08000000, 1205b8021494Sopenharmony_ci LoadStoreExclusiveFMask = 0x3F000000, 1206b8021494Sopenharmony_ci LoadStoreExclusiveMask = 0xFFE08000, 1207b8021494Sopenharmony_ci STXRB_w = LoadStoreExclusiveFixed | 0x00000000, 1208b8021494Sopenharmony_ci STXRH_w = LoadStoreExclusiveFixed | 0x40000000, 1209b8021494Sopenharmony_ci STXR_w = LoadStoreExclusiveFixed | 0x80000000, 1210b8021494Sopenharmony_ci STXR_x = LoadStoreExclusiveFixed | 0xC0000000, 1211b8021494Sopenharmony_ci LDXRB_w = LoadStoreExclusiveFixed | 0x00400000, 1212b8021494Sopenharmony_ci LDXRH_w = LoadStoreExclusiveFixed | 0x40400000, 1213b8021494Sopenharmony_ci LDXR_w = LoadStoreExclusiveFixed | 0x80400000, 1214b8021494Sopenharmony_ci LDXR_x = LoadStoreExclusiveFixed | 0xC0400000, 1215b8021494Sopenharmony_ci STXP_w = LoadStoreExclusiveFixed | 0x80200000, 1216b8021494Sopenharmony_ci STXP_x = LoadStoreExclusiveFixed | 0xC0200000, 1217b8021494Sopenharmony_ci LDXP_w = LoadStoreExclusiveFixed | 0x80600000, 1218b8021494Sopenharmony_ci LDXP_x = LoadStoreExclusiveFixed | 0xC0600000, 1219b8021494Sopenharmony_ci STLXRB_w = LoadStoreExclusiveFixed | 0x00008000, 1220b8021494Sopenharmony_ci STLXRH_w = LoadStoreExclusiveFixed | 0x40008000, 1221b8021494Sopenharmony_ci STLXR_w = LoadStoreExclusiveFixed | 0x80008000, 1222b8021494Sopenharmony_ci STLXR_x = LoadStoreExclusiveFixed | 0xC0008000, 1223b8021494Sopenharmony_ci LDAXRB_w = LoadStoreExclusiveFixed | 0x00408000, 1224b8021494Sopenharmony_ci LDAXRH_w = LoadStoreExclusiveFixed | 0x40408000, 1225b8021494Sopenharmony_ci LDAXR_w = LoadStoreExclusiveFixed | 0x80408000, 1226b8021494Sopenharmony_ci LDAXR_x = LoadStoreExclusiveFixed | 0xC0408000, 1227b8021494Sopenharmony_ci STLXP_w = LoadStoreExclusiveFixed | 0x80208000, 1228b8021494Sopenharmony_ci STLXP_x = LoadStoreExclusiveFixed | 0xC0208000, 1229b8021494Sopenharmony_ci LDAXP_w = LoadStoreExclusiveFixed | 0x80608000, 1230b8021494Sopenharmony_ci LDAXP_x = LoadStoreExclusiveFixed | 0xC0608000, 1231b8021494Sopenharmony_ci STLRB_w = LoadStoreExclusiveFixed | 0x00808000, 1232b8021494Sopenharmony_ci STLRH_w = LoadStoreExclusiveFixed | 0x40808000, 1233b8021494Sopenharmony_ci STLR_w = LoadStoreExclusiveFixed | 0x80808000, 1234b8021494Sopenharmony_ci STLR_x = LoadStoreExclusiveFixed | 0xC0808000, 1235b8021494Sopenharmony_ci LDARB_w = LoadStoreExclusiveFixed | 0x00C08000, 1236b8021494Sopenharmony_ci LDARH_w = LoadStoreExclusiveFixed | 0x40C08000, 1237b8021494Sopenharmony_ci LDAR_w = LoadStoreExclusiveFixed | 0x80C08000, 1238b8021494Sopenharmony_ci LDAR_x = LoadStoreExclusiveFixed | 0xC0C08000, 1239b8021494Sopenharmony_ci 1240b8021494Sopenharmony_ci // v8.1 Load/store LORegion ops 1241b8021494Sopenharmony_ci STLLRB = LoadStoreExclusiveFixed | 0x00800000, 1242b8021494Sopenharmony_ci LDLARB = LoadStoreExclusiveFixed | 0x00C00000, 1243b8021494Sopenharmony_ci STLLRH = LoadStoreExclusiveFixed | 0x40800000, 1244b8021494Sopenharmony_ci LDLARH = LoadStoreExclusiveFixed | 0x40C00000, 1245b8021494Sopenharmony_ci STLLR_w = LoadStoreExclusiveFixed | 0x80800000, 1246b8021494Sopenharmony_ci LDLAR_w = LoadStoreExclusiveFixed | 0x80C00000, 1247b8021494Sopenharmony_ci STLLR_x = LoadStoreExclusiveFixed | 0xC0800000, 1248b8021494Sopenharmony_ci LDLAR_x = LoadStoreExclusiveFixed | 0xC0C00000, 1249b8021494Sopenharmony_ci 1250b8021494Sopenharmony_ci // v8.1 Load/store exclusive ops 1251b8021494Sopenharmony_ci LSEBit_l = 0x00400000, 1252b8021494Sopenharmony_ci LSEBit_o0 = 0x00008000, 1253b8021494Sopenharmony_ci LSEBit_sz = 0x40000000, 1254b8021494Sopenharmony_ci CASFixed = LoadStoreExclusiveFixed | 0x80A00000, 1255b8021494Sopenharmony_ci CASBFixed = LoadStoreExclusiveFixed | 0x00A00000, 1256b8021494Sopenharmony_ci CASHFixed = LoadStoreExclusiveFixed | 0x40A00000, 1257b8021494Sopenharmony_ci CASPFixed = LoadStoreExclusiveFixed | 0x00200000, 1258b8021494Sopenharmony_ci CAS_w = CASFixed, 1259b8021494Sopenharmony_ci CAS_x = CASFixed | LSEBit_sz, 1260b8021494Sopenharmony_ci CASA_w = CASFixed | LSEBit_l, 1261b8021494Sopenharmony_ci CASA_x = CASFixed | LSEBit_l | LSEBit_sz, 1262b8021494Sopenharmony_ci CASL_w = CASFixed | LSEBit_o0, 1263b8021494Sopenharmony_ci CASL_x = CASFixed | LSEBit_o0 | LSEBit_sz, 1264b8021494Sopenharmony_ci CASAL_w = CASFixed | LSEBit_l | LSEBit_o0, 1265b8021494Sopenharmony_ci CASAL_x = CASFixed | LSEBit_l | LSEBit_o0 | LSEBit_sz, 1266b8021494Sopenharmony_ci CASB = CASBFixed, 1267b8021494Sopenharmony_ci CASAB = CASBFixed | LSEBit_l, 1268b8021494Sopenharmony_ci CASLB = CASBFixed | LSEBit_o0, 1269b8021494Sopenharmony_ci CASALB = CASBFixed | LSEBit_l | LSEBit_o0, 1270b8021494Sopenharmony_ci CASH = CASHFixed, 1271b8021494Sopenharmony_ci CASAH = CASHFixed | LSEBit_l, 1272b8021494Sopenharmony_ci CASLH = CASHFixed | LSEBit_o0, 1273b8021494Sopenharmony_ci CASALH = CASHFixed | LSEBit_l | LSEBit_o0, 1274b8021494Sopenharmony_ci CASP_w = CASPFixed, 1275b8021494Sopenharmony_ci CASP_x = CASPFixed | LSEBit_sz, 1276b8021494Sopenharmony_ci CASPA_w = CASPFixed | LSEBit_l, 1277b8021494Sopenharmony_ci CASPA_x = CASPFixed | LSEBit_l | LSEBit_sz, 1278b8021494Sopenharmony_ci CASPL_w = CASPFixed | LSEBit_o0, 1279b8021494Sopenharmony_ci CASPL_x = CASPFixed | LSEBit_o0 | LSEBit_sz, 1280b8021494Sopenharmony_ci CASPAL_w = CASPFixed | LSEBit_l | LSEBit_o0, 1281b8021494Sopenharmony_ci CASPAL_x = CASPFixed | LSEBit_l | LSEBit_o0 | LSEBit_sz 1282b8021494Sopenharmony_ci}; 1283b8021494Sopenharmony_ci 1284b8021494Sopenharmony_ci// Load/store RCpc unscaled offset. 1285b8021494Sopenharmony_cienum LoadStoreRCpcUnscaledOffsetOp { 1286b8021494Sopenharmony_ci LoadStoreRCpcUnscaledOffsetFixed = 0x19000000, 1287b8021494Sopenharmony_ci LoadStoreRCpcUnscaledOffsetFMask = 0x3F200C00, 1288b8021494Sopenharmony_ci LoadStoreRCpcUnscaledOffsetMask = 0xFFE00C00, 1289b8021494Sopenharmony_ci STLURB = LoadStoreRCpcUnscaledOffsetFixed | 0x00000000, 1290b8021494Sopenharmony_ci LDAPURB = LoadStoreRCpcUnscaledOffsetFixed | 0x00400000, 1291b8021494Sopenharmony_ci LDAPURSB_x = LoadStoreRCpcUnscaledOffsetFixed | 0x00800000, 1292b8021494Sopenharmony_ci LDAPURSB_w = LoadStoreRCpcUnscaledOffsetFixed | 0x00C00000, 1293b8021494Sopenharmony_ci STLURH = LoadStoreRCpcUnscaledOffsetFixed | 0x40000000, 1294b8021494Sopenharmony_ci LDAPURH = LoadStoreRCpcUnscaledOffsetFixed | 0x40400000, 1295b8021494Sopenharmony_ci LDAPURSH_x = LoadStoreRCpcUnscaledOffsetFixed | 0x40800000, 1296b8021494Sopenharmony_ci LDAPURSH_w = LoadStoreRCpcUnscaledOffsetFixed | 0x40C00000, 1297b8021494Sopenharmony_ci STLUR_w = LoadStoreRCpcUnscaledOffsetFixed | 0x80000000, 1298b8021494Sopenharmony_ci LDAPUR_w = LoadStoreRCpcUnscaledOffsetFixed | 0x80400000, 1299b8021494Sopenharmony_ci LDAPURSW = LoadStoreRCpcUnscaledOffsetFixed | 0x80800000, 1300b8021494Sopenharmony_ci STLUR_x = LoadStoreRCpcUnscaledOffsetFixed | 0xC0000000, 1301b8021494Sopenharmony_ci LDAPUR_x = LoadStoreRCpcUnscaledOffsetFixed | 0xC0400000 1302b8021494Sopenharmony_ci}; 1303b8021494Sopenharmony_ci 1304b8021494Sopenharmony_ci#define ATOMIC_MEMORY_SIMPLE_OPC_LIST(V) \ 1305b8021494Sopenharmony_ci V(LDADD, 0x00000000), \ 1306b8021494Sopenharmony_ci V(LDCLR, 0x00001000), \ 1307b8021494Sopenharmony_ci V(LDEOR, 0x00002000), \ 1308b8021494Sopenharmony_ci V(LDSET, 0x00003000), \ 1309b8021494Sopenharmony_ci V(LDSMAX, 0x00004000), \ 1310b8021494Sopenharmony_ci V(LDSMIN, 0x00005000), \ 1311b8021494Sopenharmony_ci V(LDUMAX, 0x00006000), \ 1312b8021494Sopenharmony_ci V(LDUMIN, 0x00007000) 1313b8021494Sopenharmony_ci 1314b8021494Sopenharmony_ci// Atomic memory. 1315b8021494Sopenharmony_cienum AtomicMemoryOp { 1316b8021494Sopenharmony_ci AtomicMemoryFixed = 0x38200000, 1317b8021494Sopenharmony_ci AtomicMemoryFMask = 0x3B200C00, 1318b8021494Sopenharmony_ci AtomicMemoryMask = 0xFFE0FC00, 1319b8021494Sopenharmony_ci SWPB = AtomicMemoryFixed | 0x00008000, 1320b8021494Sopenharmony_ci SWPAB = AtomicMemoryFixed | 0x00808000, 1321b8021494Sopenharmony_ci SWPLB = AtomicMemoryFixed | 0x00408000, 1322b8021494Sopenharmony_ci SWPALB = AtomicMemoryFixed | 0x00C08000, 1323b8021494Sopenharmony_ci SWPH = AtomicMemoryFixed | 0x40008000, 1324b8021494Sopenharmony_ci SWPAH = AtomicMemoryFixed | 0x40808000, 1325b8021494Sopenharmony_ci SWPLH = AtomicMemoryFixed | 0x40408000, 1326b8021494Sopenharmony_ci SWPALH = AtomicMemoryFixed | 0x40C08000, 1327b8021494Sopenharmony_ci SWP_w = AtomicMemoryFixed | 0x80008000, 1328b8021494Sopenharmony_ci SWPA_w = AtomicMemoryFixed | 0x80808000, 1329b8021494Sopenharmony_ci SWPL_w = AtomicMemoryFixed | 0x80408000, 1330b8021494Sopenharmony_ci SWPAL_w = AtomicMemoryFixed | 0x80C08000, 1331b8021494Sopenharmony_ci SWP_x = AtomicMemoryFixed | 0xC0008000, 1332b8021494Sopenharmony_ci SWPA_x = AtomicMemoryFixed | 0xC0808000, 1333b8021494Sopenharmony_ci SWPL_x = AtomicMemoryFixed | 0xC0408000, 1334b8021494Sopenharmony_ci SWPAL_x = AtomicMemoryFixed | 0xC0C08000, 1335b8021494Sopenharmony_ci LDAPRB = AtomicMemoryFixed | 0x0080C000, 1336b8021494Sopenharmony_ci LDAPRH = AtomicMemoryFixed | 0x4080C000, 1337b8021494Sopenharmony_ci LDAPR_w = AtomicMemoryFixed | 0x8080C000, 1338b8021494Sopenharmony_ci LDAPR_x = AtomicMemoryFixed | 0xC080C000, 1339b8021494Sopenharmony_ci 1340b8021494Sopenharmony_ci AtomicMemorySimpleFMask = 0x3B208C00, 1341b8021494Sopenharmony_ci AtomicMemorySimpleOpMask = 0x00007000, 1342b8021494Sopenharmony_ci#define ATOMIC_MEMORY_SIMPLE(N, OP) \ 1343b8021494Sopenharmony_ci N##Op = OP, \ 1344b8021494Sopenharmony_ci N##B = AtomicMemoryFixed | OP, \ 1345b8021494Sopenharmony_ci N##AB = AtomicMemoryFixed | OP | 0x00800000, \ 1346b8021494Sopenharmony_ci N##LB = AtomicMemoryFixed | OP | 0x00400000, \ 1347b8021494Sopenharmony_ci N##ALB = AtomicMemoryFixed | OP | 0x00C00000, \ 1348b8021494Sopenharmony_ci N##H = AtomicMemoryFixed | OP | 0x40000000, \ 1349b8021494Sopenharmony_ci N##AH = AtomicMemoryFixed | OP | 0x40800000, \ 1350b8021494Sopenharmony_ci N##LH = AtomicMemoryFixed | OP | 0x40400000, \ 1351b8021494Sopenharmony_ci N##ALH = AtomicMemoryFixed | OP | 0x40C00000, \ 1352b8021494Sopenharmony_ci N##_w = AtomicMemoryFixed | OP | 0x80000000, \ 1353b8021494Sopenharmony_ci N##A_w = AtomicMemoryFixed | OP | 0x80800000, \ 1354b8021494Sopenharmony_ci N##L_w = AtomicMemoryFixed | OP | 0x80400000, \ 1355b8021494Sopenharmony_ci N##AL_w = AtomicMemoryFixed | OP | 0x80C00000, \ 1356b8021494Sopenharmony_ci N##_x = AtomicMemoryFixed | OP | 0xC0000000, \ 1357b8021494Sopenharmony_ci N##A_x = AtomicMemoryFixed | OP | 0xC0800000, \ 1358b8021494Sopenharmony_ci N##L_x = AtomicMemoryFixed | OP | 0xC0400000, \ 1359b8021494Sopenharmony_ci N##AL_x = AtomicMemoryFixed | OP | 0xC0C00000 1360b8021494Sopenharmony_ci 1361b8021494Sopenharmony_ci ATOMIC_MEMORY_SIMPLE_OPC_LIST(ATOMIC_MEMORY_SIMPLE) 1362b8021494Sopenharmony_ci#undef ATOMIC_MEMORY_SIMPLE 1363b8021494Sopenharmony_ci}; 1364b8021494Sopenharmony_ci 1365b8021494Sopenharmony_ci// Conditional compare. 1366b8021494Sopenharmony_cienum ConditionalCompareOp { 1367b8021494Sopenharmony_ci ConditionalCompareMask = 0x60000000, 1368b8021494Sopenharmony_ci CCMN = 0x20000000, 1369b8021494Sopenharmony_ci CCMP = 0x60000000 1370b8021494Sopenharmony_ci}; 1371b8021494Sopenharmony_ci 1372b8021494Sopenharmony_ci// Conditional compare register. 1373b8021494Sopenharmony_cienum ConditionalCompareRegisterOp { 1374b8021494Sopenharmony_ci ConditionalCompareRegisterFixed = 0x1A400000, 1375b8021494Sopenharmony_ci ConditionalCompareRegisterFMask = 0x1FE00800, 1376b8021494Sopenharmony_ci ConditionalCompareRegisterMask = 0xFFE00C10, 1377b8021494Sopenharmony_ci CCMN_w = ConditionalCompareRegisterFixed | CCMN, 1378b8021494Sopenharmony_ci CCMN_x = ConditionalCompareRegisterFixed | SixtyFourBits | CCMN, 1379b8021494Sopenharmony_ci CCMP_w = ConditionalCompareRegisterFixed | CCMP, 1380b8021494Sopenharmony_ci CCMP_x = ConditionalCompareRegisterFixed | SixtyFourBits | CCMP 1381b8021494Sopenharmony_ci}; 1382b8021494Sopenharmony_ci 1383b8021494Sopenharmony_ci// Conditional compare immediate. 1384b8021494Sopenharmony_cienum ConditionalCompareImmediateOp { 1385b8021494Sopenharmony_ci ConditionalCompareImmediateFixed = 0x1A400800, 1386b8021494Sopenharmony_ci ConditionalCompareImmediateFMask = 0x1FE00800, 1387b8021494Sopenharmony_ci ConditionalCompareImmediateMask = 0xFFE00C10, 1388b8021494Sopenharmony_ci CCMN_w_imm = ConditionalCompareImmediateFixed | CCMN, 1389b8021494Sopenharmony_ci CCMN_x_imm = ConditionalCompareImmediateFixed | SixtyFourBits | CCMN, 1390b8021494Sopenharmony_ci CCMP_w_imm = ConditionalCompareImmediateFixed | CCMP, 1391b8021494Sopenharmony_ci CCMP_x_imm = ConditionalCompareImmediateFixed | SixtyFourBits | CCMP 1392b8021494Sopenharmony_ci}; 1393b8021494Sopenharmony_ci 1394b8021494Sopenharmony_ci// Conditional select. 1395b8021494Sopenharmony_cienum ConditionalSelectOp { 1396b8021494Sopenharmony_ci ConditionalSelectFixed = 0x1A800000, 1397b8021494Sopenharmony_ci ConditionalSelectFMask = 0x1FE00000, 1398b8021494Sopenharmony_ci ConditionalSelectMask = 0xFFE00C00, 1399b8021494Sopenharmony_ci CSEL_w = ConditionalSelectFixed | 0x00000000, 1400b8021494Sopenharmony_ci CSEL_x = ConditionalSelectFixed | 0x80000000, 1401b8021494Sopenharmony_ci CSEL = CSEL_w, 1402b8021494Sopenharmony_ci CSINC_w = ConditionalSelectFixed | 0x00000400, 1403b8021494Sopenharmony_ci CSINC_x = ConditionalSelectFixed | 0x80000400, 1404b8021494Sopenharmony_ci CSINC = CSINC_w, 1405b8021494Sopenharmony_ci CSINV_w = ConditionalSelectFixed | 0x40000000, 1406b8021494Sopenharmony_ci CSINV_x = ConditionalSelectFixed | 0xC0000000, 1407b8021494Sopenharmony_ci CSINV = CSINV_w, 1408b8021494Sopenharmony_ci CSNEG_w = ConditionalSelectFixed | 0x40000400, 1409b8021494Sopenharmony_ci CSNEG_x = ConditionalSelectFixed | 0xC0000400, 1410b8021494Sopenharmony_ci CSNEG = CSNEG_w 1411b8021494Sopenharmony_ci}; 1412b8021494Sopenharmony_ci 1413b8021494Sopenharmony_ci// Data processing 1 source. 1414b8021494Sopenharmony_cienum DataProcessing1SourceOp { 1415b8021494Sopenharmony_ci DataProcessing1SourceFixed = 0x5AC00000, 1416b8021494Sopenharmony_ci DataProcessing1SourceFMask = 0x5FE00000, 1417b8021494Sopenharmony_ci DataProcessing1SourceMask = 0xFFFFFC00, 1418b8021494Sopenharmony_ci RBIT = DataProcessing1SourceFixed | 0x00000000, 1419b8021494Sopenharmony_ci RBIT_w = RBIT, 1420b8021494Sopenharmony_ci RBIT_x = RBIT | SixtyFourBits, 1421b8021494Sopenharmony_ci REV16 = DataProcessing1SourceFixed | 0x00000400, 1422b8021494Sopenharmony_ci REV16_w = REV16, 1423b8021494Sopenharmony_ci REV16_x = REV16 | SixtyFourBits, 1424b8021494Sopenharmony_ci REV = DataProcessing1SourceFixed | 0x00000800, 1425b8021494Sopenharmony_ci REV_w = REV, 1426b8021494Sopenharmony_ci REV32_x = REV | SixtyFourBits, 1427b8021494Sopenharmony_ci REV_x = DataProcessing1SourceFixed | SixtyFourBits | 0x00000C00, 1428b8021494Sopenharmony_ci CLZ = DataProcessing1SourceFixed | 0x00001000, 1429b8021494Sopenharmony_ci CLZ_w = CLZ, 1430b8021494Sopenharmony_ci CLZ_x = CLZ | SixtyFourBits, 1431b8021494Sopenharmony_ci CLS = DataProcessing1SourceFixed | 0x00001400, 1432b8021494Sopenharmony_ci CLS_w = CLS, 1433b8021494Sopenharmony_ci CLS_x = CLS | SixtyFourBits, 1434b8021494Sopenharmony_ci 1435b8021494Sopenharmony_ci // Pointer authentication instructions in Armv8.3. 1436b8021494Sopenharmony_ci PACIA = DataProcessing1SourceFixed | 0x80010000, 1437b8021494Sopenharmony_ci PACIB = DataProcessing1SourceFixed | 0x80010400, 1438b8021494Sopenharmony_ci PACDA = DataProcessing1SourceFixed | 0x80010800, 1439b8021494Sopenharmony_ci PACDB = DataProcessing1SourceFixed | 0x80010C00, 1440b8021494Sopenharmony_ci AUTIA = DataProcessing1SourceFixed | 0x80011000, 1441b8021494Sopenharmony_ci AUTIB = DataProcessing1SourceFixed | 0x80011400, 1442b8021494Sopenharmony_ci AUTDA = DataProcessing1SourceFixed | 0x80011800, 1443b8021494Sopenharmony_ci AUTDB = DataProcessing1SourceFixed | 0x80011C00, 1444b8021494Sopenharmony_ci PACIZA = DataProcessing1SourceFixed | 0x80012000, 1445b8021494Sopenharmony_ci PACIZB = DataProcessing1SourceFixed | 0x80012400, 1446b8021494Sopenharmony_ci PACDZA = DataProcessing1SourceFixed | 0x80012800, 1447b8021494Sopenharmony_ci PACDZB = DataProcessing1SourceFixed | 0x80012C00, 1448b8021494Sopenharmony_ci AUTIZA = DataProcessing1SourceFixed | 0x80013000, 1449b8021494Sopenharmony_ci AUTIZB = DataProcessing1SourceFixed | 0x80013400, 1450b8021494Sopenharmony_ci AUTDZA = DataProcessing1SourceFixed | 0x80013800, 1451b8021494Sopenharmony_ci AUTDZB = DataProcessing1SourceFixed | 0x80013C00, 1452b8021494Sopenharmony_ci XPACI = DataProcessing1SourceFixed | 0x80014000, 1453b8021494Sopenharmony_ci XPACD = DataProcessing1SourceFixed | 0x80014400 1454b8021494Sopenharmony_ci}; 1455b8021494Sopenharmony_ci 1456b8021494Sopenharmony_ci// Data processing 2 source. 1457b8021494Sopenharmony_cienum DataProcessing2SourceOp { 1458b8021494Sopenharmony_ci DataProcessing2SourceFixed = 0x1AC00000, 1459b8021494Sopenharmony_ci DataProcessing2SourceFMask = 0x5FE00000, 1460b8021494Sopenharmony_ci DataProcessing2SourceMask = 0xFFE0FC00, 1461b8021494Sopenharmony_ci UDIV_w = DataProcessing2SourceFixed | 0x00000800, 1462b8021494Sopenharmony_ci UDIV_x = DataProcessing2SourceFixed | 0x80000800, 1463b8021494Sopenharmony_ci UDIV = UDIV_w, 1464b8021494Sopenharmony_ci SDIV_w = DataProcessing2SourceFixed | 0x00000C00, 1465b8021494Sopenharmony_ci SDIV_x = DataProcessing2SourceFixed | 0x80000C00, 1466b8021494Sopenharmony_ci SDIV = SDIV_w, 1467b8021494Sopenharmony_ci LSLV_w = DataProcessing2SourceFixed | 0x00002000, 1468b8021494Sopenharmony_ci LSLV_x = DataProcessing2SourceFixed | 0x80002000, 1469b8021494Sopenharmony_ci LSLV = LSLV_w, 1470b8021494Sopenharmony_ci LSRV_w = DataProcessing2SourceFixed | 0x00002400, 1471b8021494Sopenharmony_ci LSRV_x = DataProcessing2SourceFixed | 0x80002400, 1472b8021494Sopenharmony_ci LSRV = LSRV_w, 1473b8021494Sopenharmony_ci ASRV_w = DataProcessing2SourceFixed | 0x00002800, 1474b8021494Sopenharmony_ci ASRV_x = DataProcessing2SourceFixed | 0x80002800, 1475b8021494Sopenharmony_ci ASRV = ASRV_w, 1476b8021494Sopenharmony_ci RORV_w = DataProcessing2SourceFixed | 0x00002C00, 1477b8021494Sopenharmony_ci RORV_x = DataProcessing2SourceFixed | 0x80002C00, 1478b8021494Sopenharmony_ci RORV = RORV_w, 1479b8021494Sopenharmony_ci PACGA = DataProcessing2SourceFixed | SixtyFourBits | 0x00003000, 1480b8021494Sopenharmony_ci CRC32B = DataProcessing2SourceFixed | 0x00004000, 1481b8021494Sopenharmony_ci CRC32H = DataProcessing2SourceFixed | 0x00004400, 1482b8021494Sopenharmony_ci CRC32W = DataProcessing2SourceFixed | 0x00004800, 1483b8021494Sopenharmony_ci CRC32X = DataProcessing2SourceFixed | SixtyFourBits | 0x00004C00, 1484b8021494Sopenharmony_ci CRC32CB = DataProcessing2SourceFixed | 0x00005000, 1485b8021494Sopenharmony_ci CRC32CH = DataProcessing2SourceFixed | 0x00005400, 1486b8021494Sopenharmony_ci CRC32CW = DataProcessing2SourceFixed | 0x00005800, 1487b8021494Sopenharmony_ci CRC32CX = DataProcessing2SourceFixed | SixtyFourBits | 0x00005C00 1488b8021494Sopenharmony_ci}; 1489b8021494Sopenharmony_ci 1490b8021494Sopenharmony_ci// Data processing 3 source. 1491b8021494Sopenharmony_cienum DataProcessing3SourceOp { 1492b8021494Sopenharmony_ci DataProcessing3SourceFixed = 0x1B000000, 1493b8021494Sopenharmony_ci DataProcessing3SourceFMask = 0x1F000000, 1494b8021494Sopenharmony_ci DataProcessing3SourceMask = 0xFFE08000, 1495b8021494Sopenharmony_ci MADD_w = DataProcessing3SourceFixed | 0x00000000, 1496b8021494Sopenharmony_ci MADD_x = DataProcessing3SourceFixed | 0x80000000, 1497b8021494Sopenharmony_ci MADD = MADD_w, 1498b8021494Sopenharmony_ci MSUB_w = DataProcessing3SourceFixed | 0x00008000, 1499b8021494Sopenharmony_ci MSUB_x = DataProcessing3SourceFixed | 0x80008000, 1500b8021494Sopenharmony_ci MSUB = MSUB_w, 1501b8021494Sopenharmony_ci SMADDL_x = DataProcessing3SourceFixed | 0x80200000, 1502b8021494Sopenharmony_ci SMSUBL_x = DataProcessing3SourceFixed | 0x80208000, 1503b8021494Sopenharmony_ci SMULH_x = DataProcessing3SourceFixed | 0x80400000, 1504b8021494Sopenharmony_ci UMADDL_x = DataProcessing3SourceFixed | 0x80A00000, 1505b8021494Sopenharmony_ci UMSUBL_x = DataProcessing3SourceFixed | 0x80A08000, 1506b8021494Sopenharmony_ci UMULH_x = DataProcessing3SourceFixed | 0x80C00000 1507b8021494Sopenharmony_ci}; 1508b8021494Sopenharmony_ci 1509b8021494Sopenharmony_ci// Floating point compare. 1510b8021494Sopenharmony_cienum FPCompareOp { 1511b8021494Sopenharmony_ci FPCompareFixed = 0x1E202000, 1512b8021494Sopenharmony_ci FPCompareFMask = 0x5F203C00, 1513b8021494Sopenharmony_ci FPCompareMask = 0xFFE0FC1F, 1514b8021494Sopenharmony_ci FCMP_h = FPCompareFixed | FP16 | 0x00000000, 1515b8021494Sopenharmony_ci FCMP_s = FPCompareFixed | 0x00000000, 1516b8021494Sopenharmony_ci FCMP_d = FPCompareFixed | FP64 | 0x00000000, 1517b8021494Sopenharmony_ci FCMP = FCMP_s, 1518b8021494Sopenharmony_ci FCMP_h_zero = FPCompareFixed | FP16 | 0x00000008, 1519b8021494Sopenharmony_ci FCMP_s_zero = FPCompareFixed | 0x00000008, 1520b8021494Sopenharmony_ci FCMP_d_zero = FPCompareFixed | FP64 | 0x00000008, 1521b8021494Sopenharmony_ci FCMP_zero = FCMP_s_zero, 1522b8021494Sopenharmony_ci FCMPE_h = FPCompareFixed | FP16 | 0x00000010, 1523b8021494Sopenharmony_ci FCMPE_s = FPCompareFixed | 0x00000010, 1524b8021494Sopenharmony_ci FCMPE_d = FPCompareFixed | FP64 | 0x00000010, 1525b8021494Sopenharmony_ci FCMPE = FCMPE_s, 1526b8021494Sopenharmony_ci FCMPE_h_zero = FPCompareFixed | FP16 | 0x00000018, 1527b8021494Sopenharmony_ci FCMPE_s_zero = FPCompareFixed | 0x00000018, 1528b8021494Sopenharmony_ci FCMPE_d_zero = FPCompareFixed | FP64 | 0x00000018, 1529b8021494Sopenharmony_ci FCMPE_zero = FCMPE_s_zero 1530b8021494Sopenharmony_ci}; 1531b8021494Sopenharmony_ci 1532b8021494Sopenharmony_ci// Floating point conditional compare. 1533b8021494Sopenharmony_cienum FPConditionalCompareOp { 1534b8021494Sopenharmony_ci FPConditionalCompareFixed = 0x1E200400, 1535b8021494Sopenharmony_ci FPConditionalCompareFMask = 0x5F200C00, 1536b8021494Sopenharmony_ci FPConditionalCompareMask = 0xFFE00C10, 1537b8021494Sopenharmony_ci FCCMP_h = FPConditionalCompareFixed | FP16 | 0x00000000, 1538b8021494Sopenharmony_ci FCCMP_s = FPConditionalCompareFixed | 0x00000000, 1539b8021494Sopenharmony_ci FCCMP_d = FPConditionalCompareFixed | FP64 | 0x00000000, 1540b8021494Sopenharmony_ci FCCMP = FCCMP_s, 1541b8021494Sopenharmony_ci FCCMPE_h = FPConditionalCompareFixed | FP16 | 0x00000010, 1542b8021494Sopenharmony_ci FCCMPE_s = FPConditionalCompareFixed | 0x00000010, 1543b8021494Sopenharmony_ci FCCMPE_d = FPConditionalCompareFixed | FP64 | 0x00000010, 1544b8021494Sopenharmony_ci FCCMPE = FCCMPE_s 1545b8021494Sopenharmony_ci}; 1546b8021494Sopenharmony_ci 1547b8021494Sopenharmony_ci// Floating point conditional select. 1548b8021494Sopenharmony_cienum FPConditionalSelectOp { 1549b8021494Sopenharmony_ci FPConditionalSelectFixed = 0x1E200C00, 1550b8021494Sopenharmony_ci FPConditionalSelectFMask = 0x5F200C00, 1551b8021494Sopenharmony_ci FPConditionalSelectMask = 0xFFE00C00, 1552b8021494Sopenharmony_ci FCSEL_h = FPConditionalSelectFixed | FP16 | 0x00000000, 1553b8021494Sopenharmony_ci FCSEL_s = FPConditionalSelectFixed | 0x00000000, 1554b8021494Sopenharmony_ci FCSEL_d = FPConditionalSelectFixed | FP64 | 0x00000000, 1555b8021494Sopenharmony_ci FCSEL = FCSEL_s 1556b8021494Sopenharmony_ci}; 1557b8021494Sopenharmony_ci 1558b8021494Sopenharmony_ci// Floating point immediate. 1559b8021494Sopenharmony_cienum FPImmediateOp { 1560b8021494Sopenharmony_ci FPImmediateFixed = 0x1E201000, 1561b8021494Sopenharmony_ci FPImmediateFMask = 0x5F201C00, 1562b8021494Sopenharmony_ci FPImmediateMask = 0xFFE01C00, 1563b8021494Sopenharmony_ci FMOV_h_imm = FPImmediateFixed | FP16 | 0x00000000, 1564b8021494Sopenharmony_ci FMOV_s_imm = FPImmediateFixed | 0x00000000, 1565b8021494Sopenharmony_ci FMOV_d_imm = FPImmediateFixed | FP64 | 0x00000000 1566b8021494Sopenharmony_ci}; 1567b8021494Sopenharmony_ci 1568b8021494Sopenharmony_ci// Floating point data processing 1 source. 1569b8021494Sopenharmony_cienum FPDataProcessing1SourceOp { 1570b8021494Sopenharmony_ci FPDataProcessing1SourceFixed = 0x1E204000, 1571b8021494Sopenharmony_ci FPDataProcessing1SourceFMask = 0x5F207C00, 1572b8021494Sopenharmony_ci FPDataProcessing1SourceMask = 0xFFFFFC00, 1573b8021494Sopenharmony_ci FMOV_h = FPDataProcessing1SourceFixed | FP16 | 0x00000000, 1574b8021494Sopenharmony_ci FMOV_s = FPDataProcessing1SourceFixed | 0x00000000, 1575b8021494Sopenharmony_ci FMOV_d = FPDataProcessing1SourceFixed | FP64 | 0x00000000, 1576b8021494Sopenharmony_ci FMOV = FMOV_s, 1577b8021494Sopenharmony_ci FABS_h = FPDataProcessing1SourceFixed | FP16 | 0x00008000, 1578b8021494Sopenharmony_ci FABS_s = FPDataProcessing1SourceFixed | 0x00008000, 1579b8021494Sopenharmony_ci FABS_d = FPDataProcessing1SourceFixed | FP64 | 0x00008000, 1580b8021494Sopenharmony_ci FABS = FABS_s, 1581b8021494Sopenharmony_ci FNEG_h = FPDataProcessing1SourceFixed | FP16 | 0x00010000, 1582b8021494Sopenharmony_ci FNEG_s = FPDataProcessing1SourceFixed | 0x00010000, 1583b8021494Sopenharmony_ci FNEG_d = FPDataProcessing1SourceFixed | FP64 | 0x00010000, 1584b8021494Sopenharmony_ci FNEG = FNEG_s, 1585b8021494Sopenharmony_ci FSQRT_h = FPDataProcessing1SourceFixed | FP16 | 0x00018000, 1586b8021494Sopenharmony_ci FSQRT_s = FPDataProcessing1SourceFixed | 0x00018000, 1587b8021494Sopenharmony_ci FSQRT_d = FPDataProcessing1SourceFixed | FP64 | 0x00018000, 1588b8021494Sopenharmony_ci FSQRT = FSQRT_s, 1589b8021494Sopenharmony_ci FCVT_ds = FPDataProcessing1SourceFixed | 0x00028000, 1590b8021494Sopenharmony_ci FCVT_sd = FPDataProcessing1SourceFixed | FP64 | 0x00020000, 1591b8021494Sopenharmony_ci FCVT_hs = FPDataProcessing1SourceFixed | 0x00038000, 1592b8021494Sopenharmony_ci FCVT_hd = FPDataProcessing1SourceFixed | FP64 | 0x00038000, 1593b8021494Sopenharmony_ci FCVT_sh = FPDataProcessing1SourceFixed | 0x00C20000, 1594b8021494Sopenharmony_ci FCVT_dh = FPDataProcessing1SourceFixed | 0x00C28000, 1595b8021494Sopenharmony_ci FRINT32X_s = FPDataProcessing1SourceFixed | 0x00088000, 1596b8021494Sopenharmony_ci FRINT32X_d = FPDataProcessing1SourceFixed | FP64 | 0x00088000, 1597b8021494Sopenharmony_ci FRINT32X = FRINT32X_s, 1598b8021494Sopenharmony_ci FRINT32Z_s = FPDataProcessing1SourceFixed | 0x00080000, 1599b8021494Sopenharmony_ci FRINT32Z_d = FPDataProcessing1SourceFixed | FP64 | 0x00080000, 1600b8021494Sopenharmony_ci FRINT32Z = FRINT32Z_s, 1601b8021494Sopenharmony_ci FRINT64X_s = FPDataProcessing1SourceFixed | 0x00098000, 1602b8021494Sopenharmony_ci FRINT64X_d = FPDataProcessing1SourceFixed | FP64 | 0x00098000, 1603b8021494Sopenharmony_ci FRINT64X = FRINT64X_s, 1604b8021494Sopenharmony_ci FRINT64Z_s = FPDataProcessing1SourceFixed | 0x00090000, 1605b8021494Sopenharmony_ci FRINT64Z_d = FPDataProcessing1SourceFixed | FP64 | 0x00090000, 1606b8021494Sopenharmony_ci FRINT64Z = FRINT64Z_s, 1607b8021494Sopenharmony_ci FRINTN_h = FPDataProcessing1SourceFixed | FP16 | 0x00040000, 1608b8021494Sopenharmony_ci FRINTN_s = FPDataProcessing1SourceFixed | 0x00040000, 1609b8021494Sopenharmony_ci FRINTN_d = FPDataProcessing1SourceFixed | FP64 | 0x00040000, 1610b8021494Sopenharmony_ci FRINTN = FRINTN_s, 1611b8021494Sopenharmony_ci FRINTP_h = FPDataProcessing1SourceFixed | FP16 | 0x00048000, 1612b8021494Sopenharmony_ci FRINTP_s = FPDataProcessing1SourceFixed | 0x00048000, 1613b8021494Sopenharmony_ci FRINTP_d = FPDataProcessing1SourceFixed | FP64 | 0x00048000, 1614b8021494Sopenharmony_ci FRINTP = FRINTP_s, 1615b8021494Sopenharmony_ci FRINTM_h = FPDataProcessing1SourceFixed | FP16 | 0x00050000, 1616b8021494Sopenharmony_ci FRINTM_s = FPDataProcessing1SourceFixed | 0x00050000, 1617b8021494Sopenharmony_ci FRINTM_d = FPDataProcessing1SourceFixed | FP64 | 0x00050000, 1618b8021494Sopenharmony_ci FRINTM = FRINTM_s, 1619b8021494Sopenharmony_ci FRINTZ_h = FPDataProcessing1SourceFixed | FP16 | 0x00058000, 1620b8021494Sopenharmony_ci FRINTZ_s = FPDataProcessing1SourceFixed | 0x00058000, 1621b8021494Sopenharmony_ci FRINTZ_d = FPDataProcessing1SourceFixed | FP64 | 0x00058000, 1622b8021494Sopenharmony_ci FRINTZ = FRINTZ_s, 1623b8021494Sopenharmony_ci FRINTA_h = FPDataProcessing1SourceFixed | FP16 | 0x00060000, 1624b8021494Sopenharmony_ci FRINTA_s = FPDataProcessing1SourceFixed | 0x00060000, 1625b8021494Sopenharmony_ci FRINTA_d = FPDataProcessing1SourceFixed | FP64 | 0x00060000, 1626b8021494Sopenharmony_ci FRINTA = FRINTA_s, 1627b8021494Sopenharmony_ci FRINTX_h = FPDataProcessing1SourceFixed | FP16 | 0x00070000, 1628b8021494Sopenharmony_ci FRINTX_s = FPDataProcessing1SourceFixed | 0x00070000, 1629b8021494Sopenharmony_ci FRINTX_d = FPDataProcessing1SourceFixed | FP64 | 0x00070000, 1630b8021494Sopenharmony_ci FRINTX = FRINTX_s, 1631b8021494Sopenharmony_ci FRINTI_h = FPDataProcessing1SourceFixed | FP16 | 0x00078000, 1632b8021494Sopenharmony_ci FRINTI_s = FPDataProcessing1SourceFixed | 0x00078000, 1633b8021494Sopenharmony_ci FRINTI_d = FPDataProcessing1SourceFixed | FP64 | 0x00078000, 1634b8021494Sopenharmony_ci FRINTI = FRINTI_s 1635b8021494Sopenharmony_ci}; 1636b8021494Sopenharmony_ci 1637b8021494Sopenharmony_ci// Floating point data processing 2 source. 1638b8021494Sopenharmony_cienum FPDataProcessing2SourceOp { 1639b8021494Sopenharmony_ci FPDataProcessing2SourceFixed = 0x1E200800, 1640b8021494Sopenharmony_ci FPDataProcessing2SourceFMask = 0x5F200C00, 1641b8021494Sopenharmony_ci FPDataProcessing2SourceMask = 0xFFE0FC00, 1642b8021494Sopenharmony_ci FMUL = FPDataProcessing2SourceFixed | 0x00000000, 1643b8021494Sopenharmony_ci FMUL_h = FMUL | FP16, 1644b8021494Sopenharmony_ci FMUL_s = FMUL, 1645b8021494Sopenharmony_ci FMUL_d = FMUL | FP64, 1646b8021494Sopenharmony_ci FDIV = FPDataProcessing2SourceFixed | 0x00001000, 1647b8021494Sopenharmony_ci FDIV_h = FDIV | FP16, 1648b8021494Sopenharmony_ci FDIV_s = FDIV, 1649b8021494Sopenharmony_ci FDIV_d = FDIV | FP64, 1650b8021494Sopenharmony_ci FADD = FPDataProcessing2SourceFixed | 0x00002000, 1651b8021494Sopenharmony_ci FADD_h = FADD | FP16, 1652b8021494Sopenharmony_ci FADD_s = FADD, 1653b8021494Sopenharmony_ci FADD_d = FADD | FP64, 1654b8021494Sopenharmony_ci FSUB = FPDataProcessing2SourceFixed | 0x00003000, 1655b8021494Sopenharmony_ci FSUB_h = FSUB | FP16, 1656b8021494Sopenharmony_ci FSUB_s = FSUB, 1657b8021494Sopenharmony_ci FSUB_d = FSUB | FP64, 1658b8021494Sopenharmony_ci FMAX = FPDataProcessing2SourceFixed | 0x00004000, 1659b8021494Sopenharmony_ci FMAX_h = FMAX | FP16, 1660b8021494Sopenharmony_ci FMAX_s = FMAX, 1661b8021494Sopenharmony_ci FMAX_d = FMAX | FP64, 1662b8021494Sopenharmony_ci FMIN = FPDataProcessing2SourceFixed | 0x00005000, 1663b8021494Sopenharmony_ci FMIN_h = FMIN | FP16, 1664b8021494Sopenharmony_ci FMIN_s = FMIN, 1665b8021494Sopenharmony_ci FMIN_d = FMIN | FP64, 1666b8021494Sopenharmony_ci FMAXNM = FPDataProcessing2SourceFixed | 0x00006000, 1667b8021494Sopenharmony_ci FMAXNM_h = FMAXNM | FP16, 1668b8021494Sopenharmony_ci FMAXNM_s = FMAXNM, 1669b8021494Sopenharmony_ci FMAXNM_d = FMAXNM | FP64, 1670b8021494Sopenharmony_ci FMINNM = FPDataProcessing2SourceFixed | 0x00007000, 1671b8021494Sopenharmony_ci FMINNM_h = FMINNM | FP16, 1672b8021494Sopenharmony_ci FMINNM_s = FMINNM, 1673b8021494Sopenharmony_ci FMINNM_d = FMINNM | FP64, 1674b8021494Sopenharmony_ci FNMUL = FPDataProcessing2SourceFixed | 0x00008000, 1675b8021494Sopenharmony_ci FNMUL_h = FNMUL | FP16, 1676b8021494Sopenharmony_ci FNMUL_s = FNMUL, 1677b8021494Sopenharmony_ci FNMUL_d = FNMUL | FP64 1678b8021494Sopenharmony_ci}; 1679b8021494Sopenharmony_ci 1680b8021494Sopenharmony_ci// Floating point data processing 3 source. 1681b8021494Sopenharmony_cienum FPDataProcessing3SourceOp { 1682b8021494Sopenharmony_ci FPDataProcessing3SourceFixed = 0x1F000000, 1683b8021494Sopenharmony_ci FPDataProcessing3SourceFMask = 0x5F000000, 1684b8021494Sopenharmony_ci FPDataProcessing3SourceMask = 0xFFE08000, 1685b8021494Sopenharmony_ci FMADD_h = FPDataProcessing3SourceFixed | 0x00C00000, 1686b8021494Sopenharmony_ci FMSUB_h = FPDataProcessing3SourceFixed | 0x00C08000, 1687b8021494Sopenharmony_ci FNMADD_h = FPDataProcessing3SourceFixed | 0x00E00000, 1688b8021494Sopenharmony_ci FNMSUB_h = FPDataProcessing3SourceFixed | 0x00E08000, 1689b8021494Sopenharmony_ci FMADD_s = FPDataProcessing3SourceFixed | 0x00000000, 1690b8021494Sopenharmony_ci FMSUB_s = FPDataProcessing3SourceFixed | 0x00008000, 1691b8021494Sopenharmony_ci FNMADD_s = FPDataProcessing3SourceFixed | 0x00200000, 1692b8021494Sopenharmony_ci FNMSUB_s = FPDataProcessing3SourceFixed | 0x00208000, 1693b8021494Sopenharmony_ci FMADD_d = FPDataProcessing3SourceFixed | 0x00400000, 1694b8021494Sopenharmony_ci FMSUB_d = FPDataProcessing3SourceFixed | 0x00408000, 1695b8021494Sopenharmony_ci FNMADD_d = FPDataProcessing3SourceFixed | 0x00600000, 1696b8021494Sopenharmony_ci FNMSUB_d = FPDataProcessing3SourceFixed | 0x00608000 1697b8021494Sopenharmony_ci}; 1698b8021494Sopenharmony_ci 1699b8021494Sopenharmony_ci// Conversion between floating point and integer. 1700b8021494Sopenharmony_cienum FPIntegerConvertOp { 1701b8021494Sopenharmony_ci FPIntegerConvertFixed = 0x1E200000, 1702b8021494Sopenharmony_ci FPIntegerConvertFMask = 0x5F20FC00, 1703b8021494Sopenharmony_ci FPIntegerConvertMask = 0xFFFFFC00, 1704b8021494Sopenharmony_ci FCVTNS = FPIntegerConvertFixed | 0x00000000, 1705b8021494Sopenharmony_ci FCVTNS_wh = FCVTNS | FP16, 1706b8021494Sopenharmony_ci FCVTNS_xh = FCVTNS | SixtyFourBits | FP16, 1707b8021494Sopenharmony_ci FCVTNS_ws = FCVTNS, 1708b8021494Sopenharmony_ci FCVTNS_xs = FCVTNS | SixtyFourBits, 1709b8021494Sopenharmony_ci FCVTNS_wd = FCVTNS | FP64, 1710b8021494Sopenharmony_ci FCVTNS_xd = FCVTNS | SixtyFourBits | FP64, 1711b8021494Sopenharmony_ci FCVTNU = FPIntegerConvertFixed | 0x00010000, 1712b8021494Sopenharmony_ci FCVTNU_wh = FCVTNU | FP16, 1713b8021494Sopenharmony_ci FCVTNU_xh = FCVTNU | SixtyFourBits | FP16, 1714b8021494Sopenharmony_ci FCVTNU_ws = FCVTNU, 1715b8021494Sopenharmony_ci FCVTNU_xs = FCVTNU | SixtyFourBits, 1716b8021494Sopenharmony_ci FCVTNU_wd = FCVTNU | FP64, 1717b8021494Sopenharmony_ci FCVTNU_xd = FCVTNU | SixtyFourBits | FP64, 1718b8021494Sopenharmony_ci FCVTPS = FPIntegerConvertFixed | 0x00080000, 1719b8021494Sopenharmony_ci FCVTPS_wh = FCVTPS | FP16, 1720b8021494Sopenharmony_ci FCVTPS_xh = FCVTPS | SixtyFourBits | FP16, 1721b8021494Sopenharmony_ci FCVTPS_ws = FCVTPS, 1722b8021494Sopenharmony_ci FCVTPS_xs = FCVTPS | SixtyFourBits, 1723b8021494Sopenharmony_ci FCVTPS_wd = FCVTPS | FP64, 1724b8021494Sopenharmony_ci FCVTPS_xd = FCVTPS | SixtyFourBits | FP64, 1725b8021494Sopenharmony_ci FCVTPU = FPIntegerConvertFixed | 0x00090000, 1726b8021494Sopenharmony_ci FCVTPU_wh = FCVTPU | FP16, 1727b8021494Sopenharmony_ci FCVTPU_xh = FCVTPU | SixtyFourBits | FP16, 1728b8021494Sopenharmony_ci FCVTPU_ws = FCVTPU, 1729b8021494Sopenharmony_ci FCVTPU_xs = FCVTPU | SixtyFourBits, 1730b8021494Sopenharmony_ci FCVTPU_wd = FCVTPU | FP64, 1731b8021494Sopenharmony_ci FCVTPU_xd = FCVTPU | SixtyFourBits | FP64, 1732b8021494Sopenharmony_ci FCVTMS = FPIntegerConvertFixed | 0x00100000, 1733b8021494Sopenharmony_ci FCVTMS_wh = FCVTMS | FP16, 1734b8021494Sopenharmony_ci FCVTMS_xh = FCVTMS | SixtyFourBits | FP16, 1735b8021494Sopenharmony_ci FCVTMS_ws = FCVTMS, 1736b8021494Sopenharmony_ci FCVTMS_xs = FCVTMS | SixtyFourBits, 1737b8021494Sopenharmony_ci FCVTMS_wd = FCVTMS | FP64, 1738b8021494Sopenharmony_ci FCVTMS_xd = FCVTMS | SixtyFourBits | FP64, 1739b8021494Sopenharmony_ci FCVTMU = FPIntegerConvertFixed | 0x00110000, 1740b8021494Sopenharmony_ci FCVTMU_wh = FCVTMU | FP16, 1741b8021494Sopenharmony_ci FCVTMU_xh = FCVTMU | SixtyFourBits | FP16, 1742b8021494Sopenharmony_ci FCVTMU_ws = FCVTMU, 1743b8021494Sopenharmony_ci FCVTMU_xs = FCVTMU | SixtyFourBits, 1744b8021494Sopenharmony_ci FCVTMU_wd = FCVTMU | FP64, 1745b8021494Sopenharmony_ci FCVTMU_xd = FCVTMU | SixtyFourBits | FP64, 1746b8021494Sopenharmony_ci FCVTZS = FPIntegerConvertFixed | 0x00180000, 1747b8021494Sopenharmony_ci FCVTZS_wh = FCVTZS | FP16, 1748b8021494Sopenharmony_ci FCVTZS_xh = FCVTZS | SixtyFourBits | FP16, 1749b8021494Sopenharmony_ci FCVTZS_ws = FCVTZS, 1750b8021494Sopenharmony_ci FCVTZS_xs = FCVTZS | SixtyFourBits, 1751b8021494Sopenharmony_ci FCVTZS_wd = FCVTZS | FP64, 1752b8021494Sopenharmony_ci FCVTZS_xd = FCVTZS | SixtyFourBits | FP64, 1753b8021494Sopenharmony_ci FCVTZU = FPIntegerConvertFixed | 0x00190000, 1754b8021494Sopenharmony_ci FCVTZU_wh = FCVTZU | FP16, 1755b8021494Sopenharmony_ci FCVTZU_xh = FCVTZU | SixtyFourBits | FP16, 1756b8021494Sopenharmony_ci FCVTZU_ws = FCVTZU, 1757b8021494Sopenharmony_ci FCVTZU_xs = FCVTZU | SixtyFourBits, 1758b8021494Sopenharmony_ci FCVTZU_wd = FCVTZU | FP64, 1759b8021494Sopenharmony_ci FCVTZU_xd = FCVTZU | SixtyFourBits | FP64, 1760b8021494Sopenharmony_ci SCVTF = FPIntegerConvertFixed | 0x00020000, 1761b8021494Sopenharmony_ci SCVTF_hw = SCVTF | FP16, 1762b8021494Sopenharmony_ci SCVTF_hx = SCVTF | SixtyFourBits | FP16, 1763b8021494Sopenharmony_ci SCVTF_sw = SCVTF, 1764b8021494Sopenharmony_ci SCVTF_sx = SCVTF | SixtyFourBits, 1765b8021494Sopenharmony_ci SCVTF_dw = SCVTF | FP64, 1766b8021494Sopenharmony_ci SCVTF_dx = SCVTF | SixtyFourBits | FP64, 1767b8021494Sopenharmony_ci UCVTF = FPIntegerConvertFixed | 0x00030000, 1768b8021494Sopenharmony_ci UCVTF_hw = UCVTF | FP16, 1769b8021494Sopenharmony_ci UCVTF_hx = UCVTF | SixtyFourBits | FP16, 1770b8021494Sopenharmony_ci UCVTF_sw = UCVTF, 1771b8021494Sopenharmony_ci UCVTF_sx = UCVTF | SixtyFourBits, 1772b8021494Sopenharmony_ci UCVTF_dw = UCVTF | FP64, 1773b8021494Sopenharmony_ci UCVTF_dx = UCVTF | SixtyFourBits | FP64, 1774b8021494Sopenharmony_ci FCVTAS = FPIntegerConvertFixed | 0x00040000, 1775b8021494Sopenharmony_ci FCVTAS_wh = FCVTAS | FP16, 1776b8021494Sopenharmony_ci FCVTAS_xh = FCVTAS | SixtyFourBits | FP16, 1777b8021494Sopenharmony_ci FCVTAS_ws = FCVTAS, 1778b8021494Sopenharmony_ci FCVTAS_xs = FCVTAS | SixtyFourBits, 1779b8021494Sopenharmony_ci FCVTAS_wd = FCVTAS | FP64, 1780b8021494Sopenharmony_ci FCVTAS_xd = FCVTAS | SixtyFourBits | FP64, 1781b8021494Sopenharmony_ci FCVTAU = FPIntegerConvertFixed | 0x00050000, 1782b8021494Sopenharmony_ci FCVTAU_wh = FCVTAU | FP16, 1783b8021494Sopenharmony_ci FCVTAU_xh = FCVTAU | SixtyFourBits | FP16, 1784b8021494Sopenharmony_ci FCVTAU_ws = FCVTAU, 1785b8021494Sopenharmony_ci FCVTAU_xs = FCVTAU | SixtyFourBits, 1786b8021494Sopenharmony_ci FCVTAU_wd = FCVTAU | FP64, 1787b8021494Sopenharmony_ci FCVTAU_xd = FCVTAU | SixtyFourBits | FP64, 1788b8021494Sopenharmony_ci FMOV_wh = FPIntegerConvertFixed | 0x00060000 | FP16, 1789b8021494Sopenharmony_ci FMOV_hw = FPIntegerConvertFixed | 0x00070000 | FP16, 1790b8021494Sopenharmony_ci FMOV_xh = FMOV_wh | SixtyFourBits, 1791b8021494Sopenharmony_ci FMOV_hx = FMOV_hw | SixtyFourBits, 1792b8021494Sopenharmony_ci FMOV_ws = FPIntegerConvertFixed | 0x00060000, 1793b8021494Sopenharmony_ci FMOV_sw = FPIntegerConvertFixed | 0x00070000, 1794b8021494Sopenharmony_ci FMOV_xd = FMOV_ws | SixtyFourBits | FP64, 1795b8021494Sopenharmony_ci FMOV_dx = FMOV_sw | SixtyFourBits | FP64, 1796b8021494Sopenharmony_ci FMOV_d1_x = FPIntegerConvertFixed | SixtyFourBits | 0x008F0000, 1797b8021494Sopenharmony_ci FMOV_x_d1 = FPIntegerConvertFixed | SixtyFourBits | 0x008E0000, 1798b8021494Sopenharmony_ci FJCVTZS = FPIntegerConvertFixed | FP64 | 0x001E0000 1799b8021494Sopenharmony_ci}; 1800b8021494Sopenharmony_ci 1801b8021494Sopenharmony_ci// Conversion between fixed point and floating point. 1802b8021494Sopenharmony_cienum FPFixedPointConvertOp { 1803b8021494Sopenharmony_ci FPFixedPointConvertFixed = 0x1E000000, 1804b8021494Sopenharmony_ci FPFixedPointConvertFMask = 0x5F200000, 1805b8021494Sopenharmony_ci FPFixedPointConvertMask = 0xFFFF0000, 1806b8021494Sopenharmony_ci FCVTZS_fixed = FPFixedPointConvertFixed | 0x00180000, 1807b8021494Sopenharmony_ci FCVTZS_wh_fixed = FCVTZS_fixed | FP16, 1808b8021494Sopenharmony_ci FCVTZS_xh_fixed = FCVTZS_fixed | SixtyFourBits | FP16, 1809b8021494Sopenharmony_ci FCVTZS_ws_fixed = FCVTZS_fixed, 1810b8021494Sopenharmony_ci FCVTZS_xs_fixed = FCVTZS_fixed | SixtyFourBits, 1811b8021494Sopenharmony_ci FCVTZS_wd_fixed = FCVTZS_fixed | FP64, 1812b8021494Sopenharmony_ci FCVTZS_xd_fixed = FCVTZS_fixed | SixtyFourBits | FP64, 1813b8021494Sopenharmony_ci FCVTZU_fixed = FPFixedPointConvertFixed | 0x00190000, 1814b8021494Sopenharmony_ci FCVTZU_wh_fixed = FCVTZU_fixed | FP16, 1815b8021494Sopenharmony_ci FCVTZU_xh_fixed = FCVTZU_fixed | SixtyFourBits | FP16, 1816b8021494Sopenharmony_ci FCVTZU_ws_fixed = FCVTZU_fixed, 1817b8021494Sopenharmony_ci FCVTZU_xs_fixed = FCVTZU_fixed | SixtyFourBits, 1818b8021494Sopenharmony_ci FCVTZU_wd_fixed = FCVTZU_fixed | FP64, 1819b8021494Sopenharmony_ci FCVTZU_xd_fixed = FCVTZU_fixed | SixtyFourBits | FP64, 1820b8021494Sopenharmony_ci SCVTF_fixed = FPFixedPointConvertFixed | 0x00020000, 1821b8021494Sopenharmony_ci SCVTF_hw_fixed = SCVTF_fixed | FP16, 1822b8021494Sopenharmony_ci SCVTF_hx_fixed = SCVTF_fixed | SixtyFourBits | FP16, 1823b8021494Sopenharmony_ci SCVTF_sw_fixed = SCVTF_fixed, 1824b8021494Sopenharmony_ci SCVTF_sx_fixed = SCVTF_fixed | SixtyFourBits, 1825b8021494Sopenharmony_ci SCVTF_dw_fixed = SCVTF_fixed | FP64, 1826b8021494Sopenharmony_ci SCVTF_dx_fixed = SCVTF_fixed | SixtyFourBits | FP64, 1827b8021494Sopenharmony_ci UCVTF_fixed = FPFixedPointConvertFixed | 0x00030000, 1828b8021494Sopenharmony_ci UCVTF_hw_fixed = UCVTF_fixed | FP16, 1829b8021494Sopenharmony_ci UCVTF_hx_fixed = UCVTF_fixed | SixtyFourBits | FP16, 1830b8021494Sopenharmony_ci UCVTF_sw_fixed = UCVTF_fixed, 1831b8021494Sopenharmony_ci UCVTF_sx_fixed = UCVTF_fixed | SixtyFourBits, 1832b8021494Sopenharmony_ci UCVTF_dw_fixed = UCVTF_fixed | FP64, 1833b8021494Sopenharmony_ci UCVTF_dx_fixed = UCVTF_fixed | SixtyFourBits | FP64 1834b8021494Sopenharmony_ci}; 1835b8021494Sopenharmony_ci 1836b8021494Sopenharmony_ci// Crypto - two register SHA. 1837b8021494Sopenharmony_cienum Crypto2RegSHAOp { 1838b8021494Sopenharmony_ci Crypto2RegSHAFixed = 0x5E280800, 1839b8021494Sopenharmony_ci Crypto2RegSHAFMask = 0xFF3E0C00 1840b8021494Sopenharmony_ci}; 1841b8021494Sopenharmony_ci 1842b8021494Sopenharmony_ci// Crypto - three register SHA. 1843b8021494Sopenharmony_cienum Crypto3RegSHAOp { 1844b8021494Sopenharmony_ci Crypto3RegSHAFixed = 0x5E000000, 1845b8021494Sopenharmony_ci Crypto3RegSHAFMask = 0xFF208C00 1846b8021494Sopenharmony_ci}; 1847b8021494Sopenharmony_ci 1848b8021494Sopenharmony_ci// Crypto - AES. 1849b8021494Sopenharmony_cienum CryptoAESOp { 1850b8021494Sopenharmony_ci CryptoAESFixed = 0x4E280800, 1851b8021494Sopenharmony_ci CryptoAESFMask = 0xFF3E0C00 1852b8021494Sopenharmony_ci}; 1853b8021494Sopenharmony_ci 1854b8021494Sopenharmony_ci// NEON instructions with two register operands. 1855b8021494Sopenharmony_cienum NEON2RegMiscOp { 1856b8021494Sopenharmony_ci NEON2RegMiscFixed = 0x0E200800, 1857b8021494Sopenharmony_ci NEON2RegMiscFMask = 0x9F3E0C00, 1858b8021494Sopenharmony_ci NEON2RegMiscMask = 0xBF3FFC00, 1859b8021494Sopenharmony_ci NEON2RegMiscUBit = 0x20000000, 1860b8021494Sopenharmony_ci NEON_REV64 = NEON2RegMiscFixed | 0x00000000, 1861b8021494Sopenharmony_ci NEON_REV32 = NEON2RegMiscFixed | 0x20000000, 1862b8021494Sopenharmony_ci NEON_REV16 = NEON2RegMiscFixed | 0x00001000, 1863b8021494Sopenharmony_ci NEON_SADDLP = NEON2RegMiscFixed | 0x00002000, 1864b8021494Sopenharmony_ci NEON_UADDLP = NEON_SADDLP | NEON2RegMiscUBit, 1865b8021494Sopenharmony_ci NEON_SUQADD = NEON2RegMiscFixed | 0x00003000, 1866b8021494Sopenharmony_ci NEON_USQADD = NEON_SUQADD | NEON2RegMiscUBit, 1867b8021494Sopenharmony_ci NEON_CLS = NEON2RegMiscFixed | 0x00004000, 1868b8021494Sopenharmony_ci NEON_CLZ = NEON2RegMiscFixed | 0x20004000, 1869b8021494Sopenharmony_ci NEON_CNT = NEON2RegMiscFixed | 0x00005000, 1870b8021494Sopenharmony_ci NEON_RBIT_NOT = NEON2RegMiscFixed | 0x20005000, 1871b8021494Sopenharmony_ci NEON_SADALP = NEON2RegMiscFixed | 0x00006000, 1872b8021494Sopenharmony_ci NEON_UADALP = NEON_SADALP | NEON2RegMiscUBit, 1873b8021494Sopenharmony_ci NEON_SQABS = NEON2RegMiscFixed | 0x00007000, 1874b8021494Sopenharmony_ci NEON_SQNEG = NEON2RegMiscFixed | 0x20007000, 1875b8021494Sopenharmony_ci NEON_CMGT_zero = NEON2RegMiscFixed | 0x00008000, 1876b8021494Sopenharmony_ci NEON_CMGE_zero = NEON2RegMiscFixed | 0x20008000, 1877b8021494Sopenharmony_ci NEON_CMEQ_zero = NEON2RegMiscFixed | 0x00009000, 1878b8021494Sopenharmony_ci NEON_CMLE_zero = NEON2RegMiscFixed | 0x20009000, 1879b8021494Sopenharmony_ci NEON_CMLT_zero = NEON2RegMiscFixed | 0x0000A000, 1880b8021494Sopenharmony_ci NEON_ABS = NEON2RegMiscFixed | 0x0000B000, 1881b8021494Sopenharmony_ci NEON_NEG = NEON2RegMiscFixed | 0x2000B000, 1882b8021494Sopenharmony_ci NEON_XTN = NEON2RegMiscFixed | 0x00012000, 1883b8021494Sopenharmony_ci NEON_SQXTUN = NEON2RegMiscFixed | 0x20012000, 1884b8021494Sopenharmony_ci NEON_SHLL = NEON2RegMiscFixed | 0x20013000, 1885b8021494Sopenharmony_ci NEON_SQXTN = NEON2RegMiscFixed | 0x00014000, 1886b8021494Sopenharmony_ci NEON_UQXTN = NEON_SQXTN | NEON2RegMiscUBit, 1887b8021494Sopenharmony_ci 1888b8021494Sopenharmony_ci NEON2RegMiscOpcode = 0x0001F000, 1889b8021494Sopenharmony_ci NEON_RBIT_NOT_opcode = NEON_RBIT_NOT & NEON2RegMiscOpcode, 1890b8021494Sopenharmony_ci NEON_NEG_opcode = NEON_NEG & NEON2RegMiscOpcode, 1891b8021494Sopenharmony_ci NEON_XTN_opcode = NEON_XTN & NEON2RegMiscOpcode, 1892b8021494Sopenharmony_ci NEON_UQXTN_opcode = NEON_UQXTN & NEON2RegMiscOpcode, 1893b8021494Sopenharmony_ci 1894b8021494Sopenharmony_ci // These instructions use only one bit of the size field. The other bit is 1895b8021494Sopenharmony_ci // used to distinguish between instructions. 1896b8021494Sopenharmony_ci NEON2RegMiscFPMask = NEON2RegMiscMask | 0x00800000, 1897b8021494Sopenharmony_ci NEON_FABS = NEON2RegMiscFixed | 0x0080F000, 1898b8021494Sopenharmony_ci NEON_FNEG = NEON2RegMiscFixed | 0x2080F000, 1899b8021494Sopenharmony_ci NEON_FCVTN = NEON2RegMiscFixed | 0x00016000, 1900b8021494Sopenharmony_ci NEON_FCVTXN = NEON2RegMiscFixed | 0x20016000, 1901b8021494Sopenharmony_ci NEON_FCVTL = NEON2RegMiscFixed | 0x00017000, 1902b8021494Sopenharmony_ci NEON_FRINT32X = NEON2RegMiscFixed | 0x2001E000, 1903b8021494Sopenharmony_ci NEON_FRINT32Z = NEON2RegMiscFixed | 0x0001E000, 1904b8021494Sopenharmony_ci NEON_FRINT64X = NEON2RegMiscFixed | 0x2001F000, 1905b8021494Sopenharmony_ci NEON_FRINT64Z = NEON2RegMiscFixed | 0x0001F000, 1906b8021494Sopenharmony_ci NEON_FRINTN = NEON2RegMiscFixed | 0x00018000, 1907b8021494Sopenharmony_ci NEON_FRINTA = NEON2RegMiscFixed | 0x20018000, 1908b8021494Sopenharmony_ci NEON_FRINTP = NEON2RegMiscFixed | 0x00818000, 1909b8021494Sopenharmony_ci NEON_FRINTM = NEON2RegMiscFixed | 0x00019000, 1910b8021494Sopenharmony_ci NEON_FRINTX = NEON2RegMiscFixed | 0x20019000, 1911b8021494Sopenharmony_ci NEON_FRINTZ = NEON2RegMiscFixed | 0x00819000, 1912b8021494Sopenharmony_ci NEON_FRINTI = NEON2RegMiscFixed | 0x20819000, 1913b8021494Sopenharmony_ci NEON_FCVTNS = NEON2RegMiscFixed | 0x0001A000, 1914b8021494Sopenharmony_ci NEON_FCVTNU = NEON_FCVTNS | NEON2RegMiscUBit, 1915b8021494Sopenharmony_ci NEON_FCVTPS = NEON2RegMiscFixed | 0x0081A000, 1916b8021494Sopenharmony_ci NEON_FCVTPU = NEON_FCVTPS | NEON2RegMiscUBit, 1917b8021494Sopenharmony_ci NEON_FCVTMS = NEON2RegMiscFixed | 0x0001B000, 1918b8021494Sopenharmony_ci NEON_FCVTMU = NEON_FCVTMS | NEON2RegMiscUBit, 1919b8021494Sopenharmony_ci NEON_FCVTZS = NEON2RegMiscFixed | 0x0081B000, 1920b8021494Sopenharmony_ci NEON_FCVTZU = NEON_FCVTZS | NEON2RegMiscUBit, 1921b8021494Sopenharmony_ci NEON_FCVTAS = NEON2RegMiscFixed | 0x0001C000, 1922b8021494Sopenharmony_ci NEON_FCVTAU = NEON_FCVTAS | NEON2RegMiscUBit, 1923b8021494Sopenharmony_ci NEON_FSQRT = NEON2RegMiscFixed | 0x2081F000, 1924b8021494Sopenharmony_ci NEON_SCVTF = NEON2RegMiscFixed | 0x0001D000, 1925b8021494Sopenharmony_ci NEON_UCVTF = NEON_SCVTF | NEON2RegMiscUBit, 1926b8021494Sopenharmony_ci NEON_URSQRTE = NEON2RegMiscFixed | 0x2081C000, 1927b8021494Sopenharmony_ci NEON_URECPE = NEON2RegMiscFixed | 0x0081C000, 1928b8021494Sopenharmony_ci NEON_FRSQRTE = NEON2RegMiscFixed | 0x2081D000, 1929b8021494Sopenharmony_ci NEON_FRECPE = NEON2RegMiscFixed | 0x0081D000, 1930b8021494Sopenharmony_ci NEON_FCMGT_zero = NEON2RegMiscFixed | 0x0080C000, 1931b8021494Sopenharmony_ci NEON_FCMGE_zero = NEON2RegMiscFixed | 0x2080C000, 1932b8021494Sopenharmony_ci NEON_FCMEQ_zero = NEON2RegMiscFixed | 0x0080D000, 1933b8021494Sopenharmony_ci NEON_FCMLE_zero = NEON2RegMiscFixed | 0x2080D000, 1934b8021494Sopenharmony_ci NEON_FCMLT_zero = NEON2RegMiscFixed | 0x0080E000, 1935b8021494Sopenharmony_ci 1936b8021494Sopenharmony_ci NEON_FCVTL_opcode = NEON_FCVTL & NEON2RegMiscOpcode, 1937b8021494Sopenharmony_ci NEON_FCVTN_opcode = NEON_FCVTN & NEON2RegMiscOpcode 1938b8021494Sopenharmony_ci}; 1939b8021494Sopenharmony_ci 1940b8021494Sopenharmony_ci// NEON instructions with two register operands (FP16). 1941b8021494Sopenharmony_cienum NEON2RegMiscFP16Op { 1942b8021494Sopenharmony_ci NEON2RegMiscFP16Fixed = 0x0E780800, 1943b8021494Sopenharmony_ci NEON2RegMiscFP16FMask = 0x9F7E0C00, 1944b8021494Sopenharmony_ci NEON2RegMiscFP16Mask = 0xBFFFFC00, 1945b8021494Sopenharmony_ci NEON_FRINTN_H = NEON2RegMiscFP16Fixed | 0x00018000, 1946b8021494Sopenharmony_ci NEON_FRINTM_H = NEON2RegMiscFP16Fixed | 0x00019000, 1947b8021494Sopenharmony_ci NEON_FCVTNS_H = NEON2RegMiscFP16Fixed | 0x0001A000, 1948b8021494Sopenharmony_ci NEON_FCVTMS_H = NEON2RegMiscFP16Fixed | 0x0001B000, 1949b8021494Sopenharmony_ci NEON_FCVTAS_H = NEON2RegMiscFP16Fixed | 0x0001C000, 1950b8021494Sopenharmony_ci NEON_SCVTF_H = NEON2RegMiscFP16Fixed | 0x0001D000, 1951b8021494Sopenharmony_ci NEON_FCMGT_H_zero = NEON2RegMiscFP16Fixed | 0x0080C000, 1952b8021494Sopenharmony_ci NEON_FCMEQ_H_zero = NEON2RegMiscFP16Fixed | 0x0080D000, 1953b8021494Sopenharmony_ci NEON_FCMLT_H_zero = NEON2RegMiscFP16Fixed | 0x0080E000, 1954b8021494Sopenharmony_ci NEON_FABS_H = NEON2RegMiscFP16Fixed | 0x0080F000, 1955b8021494Sopenharmony_ci NEON_FRINTP_H = NEON2RegMiscFP16Fixed | 0x00818000, 1956b8021494Sopenharmony_ci NEON_FRINTZ_H = NEON2RegMiscFP16Fixed | 0x00819000, 1957b8021494Sopenharmony_ci NEON_FCVTPS_H = NEON2RegMiscFP16Fixed | 0x0081A000, 1958b8021494Sopenharmony_ci NEON_FCVTZS_H = NEON2RegMiscFP16Fixed | 0x0081B000, 1959b8021494Sopenharmony_ci NEON_FRECPE_H = NEON2RegMiscFP16Fixed | 0x0081D000, 1960b8021494Sopenharmony_ci NEON_FRINTA_H = NEON2RegMiscFP16Fixed | 0x20018000, 1961b8021494Sopenharmony_ci NEON_FRINTX_H = NEON2RegMiscFP16Fixed | 0x20019000, 1962b8021494Sopenharmony_ci NEON_FCVTNU_H = NEON2RegMiscFP16Fixed | 0x2001A000, 1963b8021494Sopenharmony_ci NEON_FCVTMU_H = NEON2RegMiscFP16Fixed | 0x2001B000, 1964b8021494Sopenharmony_ci NEON_FCVTAU_H = NEON2RegMiscFP16Fixed | 0x2001C000, 1965b8021494Sopenharmony_ci NEON_UCVTF_H = NEON2RegMiscFP16Fixed | 0x2001D000, 1966b8021494Sopenharmony_ci NEON_FCMGE_H_zero = NEON2RegMiscFP16Fixed | 0x2080C000, 1967b8021494Sopenharmony_ci NEON_FCMLE_H_zero = NEON2RegMiscFP16Fixed | 0x2080D000, 1968b8021494Sopenharmony_ci NEON_FNEG_H = NEON2RegMiscFP16Fixed | 0x2080F000, 1969b8021494Sopenharmony_ci NEON_FRINTI_H = NEON2RegMiscFP16Fixed | 0x20819000, 1970b8021494Sopenharmony_ci NEON_FCVTPU_H = NEON2RegMiscFP16Fixed | 0x2081A000, 1971b8021494Sopenharmony_ci NEON_FCVTZU_H = NEON2RegMiscFP16Fixed | 0x2081B000, 1972b8021494Sopenharmony_ci NEON_FRSQRTE_H = NEON2RegMiscFP16Fixed | 0x2081D000, 1973b8021494Sopenharmony_ci NEON_FSQRT_H = NEON2RegMiscFP16Fixed | 0x2081F000 1974b8021494Sopenharmony_ci}; 1975b8021494Sopenharmony_ci 1976b8021494Sopenharmony_ci// NEON instructions with three same-type operands. 1977b8021494Sopenharmony_cienum NEON3SameOp { 1978b8021494Sopenharmony_ci NEON3SameFixed = 0x0E200400, 1979b8021494Sopenharmony_ci NEON3SameFMask = 0x9F200400, 1980b8021494Sopenharmony_ci NEON3SameMask = 0xBF20FC00, 1981b8021494Sopenharmony_ci NEON3SameUBit = 0x20000000, 1982b8021494Sopenharmony_ci NEON_ADD = NEON3SameFixed | 0x00008000, 1983b8021494Sopenharmony_ci NEON_ADDP = NEON3SameFixed | 0x0000B800, 1984b8021494Sopenharmony_ci NEON_SHADD = NEON3SameFixed | 0x00000000, 1985b8021494Sopenharmony_ci NEON_SHSUB = NEON3SameFixed | 0x00002000, 1986b8021494Sopenharmony_ci NEON_SRHADD = NEON3SameFixed | 0x00001000, 1987b8021494Sopenharmony_ci NEON_CMEQ = NEON3SameFixed | NEON3SameUBit | 0x00008800, 1988b8021494Sopenharmony_ci NEON_CMGE = NEON3SameFixed | 0x00003800, 1989b8021494Sopenharmony_ci NEON_CMGT = NEON3SameFixed | 0x00003000, 1990b8021494Sopenharmony_ci NEON_CMHI = NEON3SameFixed | NEON3SameUBit | NEON_CMGT, 1991b8021494Sopenharmony_ci NEON_CMHS = NEON3SameFixed | NEON3SameUBit | NEON_CMGE, 1992b8021494Sopenharmony_ci NEON_CMTST = NEON3SameFixed | 0x00008800, 1993b8021494Sopenharmony_ci NEON_MLA = NEON3SameFixed | 0x00009000, 1994b8021494Sopenharmony_ci NEON_MLS = NEON3SameFixed | 0x20009000, 1995b8021494Sopenharmony_ci NEON_MUL = NEON3SameFixed | 0x00009800, 1996b8021494Sopenharmony_ci NEON_PMUL = NEON3SameFixed | 0x20009800, 1997b8021494Sopenharmony_ci NEON_SRSHL = NEON3SameFixed | 0x00005000, 1998b8021494Sopenharmony_ci NEON_SQSHL = NEON3SameFixed | 0x00004800, 1999b8021494Sopenharmony_ci NEON_SQRSHL = NEON3SameFixed | 0x00005800, 2000b8021494Sopenharmony_ci NEON_SSHL = NEON3SameFixed | 0x00004000, 2001b8021494Sopenharmony_ci NEON_SMAX = NEON3SameFixed | 0x00006000, 2002b8021494Sopenharmony_ci NEON_SMAXP = NEON3SameFixed | 0x0000A000, 2003b8021494Sopenharmony_ci NEON_SMIN = NEON3SameFixed | 0x00006800, 2004b8021494Sopenharmony_ci NEON_SMINP = NEON3SameFixed | 0x0000A800, 2005b8021494Sopenharmony_ci NEON_SABD = NEON3SameFixed | 0x00007000, 2006b8021494Sopenharmony_ci NEON_SABA = NEON3SameFixed | 0x00007800, 2007b8021494Sopenharmony_ci NEON_UABD = NEON3SameFixed | NEON3SameUBit | NEON_SABD, 2008b8021494Sopenharmony_ci NEON_UABA = NEON3SameFixed | NEON3SameUBit | NEON_SABA, 2009b8021494Sopenharmony_ci NEON_SQADD = NEON3SameFixed | 0x00000800, 2010b8021494Sopenharmony_ci NEON_SQSUB = NEON3SameFixed | 0x00002800, 2011b8021494Sopenharmony_ci NEON_SUB = NEON3SameFixed | NEON3SameUBit | 0x00008000, 2012b8021494Sopenharmony_ci NEON_UHADD = NEON3SameFixed | NEON3SameUBit | NEON_SHADD, 2013b8021494Sopenharmony_ci NEON_UHSUB = NEON3SameFixed | NEON3SameUBit | NEON_SHSUB, 2014b8021494Sopenharmony_ci NEON_URHADD = NEON3SameFixed | NEON3SameUBit | NEON_SRHADD, 2015b8021494Sopenharmony_ci NEON_UMAX = NEON3SameFixed | NEON3SameUBit | NEON_SMAX, 2016b8021494Sopenharmony_ci NEON_UMAXP = NEON3SameFixed | NEON3SameUBit | NEON_SMAXP, 2017b8021494Sopenharmony_ci NEON_UMIN = NEON3SameFixed | NEON3SameUBit | NEON_SMIN, 2018b8021494Sopenharmony_ci NEON_UMINP = NEON3SameFixed | NEON3SameUBit | NEON_SMINP, 2019b8021494Sopenharmony_ci NEON_URSHL = NEON3SameFixed | NEON3SameUBit | NEON_SRSHL, 2020b8021494Sopenharmony_ci NEON_UQADD = NEON3SameFixed | NEON3SameUBit | NEON_SQADD, 2021b8021494Sopenharmony_ci NEON_UQRSHL = NEON3SameFixed | NEON3SameUBit | NEON_SQRSHL, 2022b8021494Sopenharmony_ci NEON_UQSHL = NEON3SameFixed | NEON3SameUBit | NEON_SQSHL, 2023b8021494Sopenharmony_ci NEON_UQSUB = NEON3SameFixed | NEON3SameUBit | NEON_SQSUB, 2024b8021494Sopenharmony_ci NEON_USHL = NEON3SameFixed | NEON3SameUBit | NEON_SSHL, 2025b8021494Sopenharmony_ci NEON_SQDMULH = NEON3SameFixed | 0x0000B000, 2026b8021494Sopenharmony_ci NEON_SQRDMULH = NEON3SameFixed | 0x2000B000, 2027b8021494Sopenharmony_ci 2028b8021494Sopenharmony_ci // NEON floating point instructions with three same-type operands. 2029b8021494Sopenharmony_ci NEON3SameFPFixed = NEON3SameFixed | 0x0000C000, 2030b8021494Sopenharmony_ci NEON3SameFPFMask = NEON3SameFMask | 0x0000C000, 2031b8021494Sopenharmony_ci NEON3SameFPMask = NEON3SameMask | 0x00800000, 2032b8021494Sopenharmony_ci NEON_FADD = NEON3SameFixed | 0x0000D000, 2033b8021494Sopenharmony_ci NEON_FSUB = NEON3SameFixed | 0x0080D000, 2034b8021494Sopenharmony_ci NEON_FMUL = NEON3SameFixed | 0x2000D800, 2035b8021494Sopenharmony_ci NEON_FDIV = NEON3SameFixed | 0x2000F800, 2036b8021494Sopenharmony_ci NEON_FMAX = NEON3SameFixed | 0x0000F000, 2037b8021494Sopenharmony_ci NEON_FMAXNM = NEON3SameFixed | 0x0000C000, 2038b8021494Sopenharmony_ci NEON_FMAXP = NEON3SameFixed | 0x2000F000, 2039b8021494Sopenharmony_ci NEON_FMAXNMP = NEON3SameFixed | 0x2000C000, 2040b8021494Sopenharmony_ci NEON_FMIN = NEON3SameFixed | 0x0080F000, 2041b8021494Sopenharmony_ci NEON_FMINNM = NEON3SameFixed | 0x0080C000, 2042b8021494Sopenharmony_ci NEON_FMINP = NEON3SameFixed | 0x2080F000, 2043b8021494Sopenharmony_ci NEON_FMINNMP = NEON3SameFixed | 0x2080C000, 2044b8021494Sopenharmony_ci NEON_FMLA = NEON3SameFixed | 0x0000C800, 2045b8021494Sopenharmony_ci NEON_FMLS = NEON3SameFixed | 0x0080C800, 2046b8021494Sopenharmony_ci NEON_FMULX = NEON3SameFixed | 0x0000D800, 2047b8021494Sopenharmony_ci NEON_FRECPS = NEON3SameFixed | 0x0000F800, 2048b8021494Sopenharmony_ci NEON_FRSQRTS = NEON3SameFixed | 0x0080F800, 2049b8021494Sopenharmony_ci NEON_FABD = NEON3SameFixed | 0x2080D000, 2050b8021494Sopenharmony_ci NEON_FADDP = NEON3SameFixed | 0x2000D000, 2051b8021494Sopenharmony_ci NEON_FCMEQ = NEON3SameFixed | 0x0000E000, 2052b8021494Sopenharmony_ci NEON_FCMGE = NEON3SameFixed | 0x2000E000, 2053b8021494Sopenharmony_ci NEON_FCMGT = NEON3SameFixed | 0x2080E000, 2054b8021494Sopenharmony_ci NEON_FACGE = NEON3SameFixed | 0x2000E800, 2055b8021494Sopenharmony_ci NEON_FACGT = NEON3SameFixed | 0x2080E800, 2056b8021494Sopenharmony_ci 2057b8021494Sopenharmony_ci // NEON logical instructions with three same-type operands. 2058b8021494Sopenharmony_ci NEON3SameLogicalFixed = NEON3SameFixed | 0x00001800, 2059b8021494Sopenharmony_ci NEON3SameLogicalFMask = NEON3SameFMask | 0x0000F800, 2060b8021494Sopenharmony_ci NEON3SameLogicalMask = 0xBFE0FC00, 2061b8021494Sopenharmony_ci NEON3SameLogicalFormatMask = NEON_Q, 2062b8021494Sopenharmony_ci NEON_AND = NEON3SameLogicalFixed | 0x00000000, 2063b8021494Sopenharmony_ci NEON_ORR = NEON3SameLogicalFixed | 0x00A00000, 2064b8021494Sopenharmony_ci NEON_ORN = NEON3SameLogicalFixed | 0x00C00000, 2065b8021494Sopenharmony_ci NEON_EOR = NEON3SameLogicalFixed | 0x20000000, 2066b8021494Sopenharmony_ci NEON_BIC = NEON3SameLogicalFixed | 0x00400000, 2067b8021494Sopenharmony_ci NEON_BIF = NEON3SameLogicalFixed | 0x20C00000, 2068b8021494Sopenharmony_ci NEON_BIT = NEON3SameLogicalFixed | 0x20800000, 2069b8021494Sopenharmony_ci NEON_BSL = NEON3SameLogicalFixed | 0x20400000, 2070b8021494Sopenharmony_ci 2071b8021494Sopenharmony_ci // FHM (FMLAL-like) instructions have an oddball encoding scheme under 3Same. 2072b8021494Sopenharmony_ci NEON3SameFHMMask = 0xBFE0FC00, // U size opcode 2073b8021494Sopenharmony_ci NEON_FMLAL = NEON3SameFixed | 0x0000E800, // 0 00 11101 2074b8021494Sopenharmony_ci NEON_FMLAL2 = NEON3SameFixed | 0x2000C800, // 1 00 11001 2075b8021494Sopenharmony_ci NEON_FMLSL = NEON3SameFixed | 0x0080E800, // 0 10 11101 2076b8021494Sopenharmony_ci NEON_FMLSL2 = NEON3SameFixed | 0x2080C800 // 1 10 11001 2077b8021494Sopenharmony_ci}; 2078b8021494Sopenharmony_ci 2079b8021494Sopenharmony_ci 2080b8021494Sopenharmony_cienum NEON3SameFP16 { 2081b8021494Sopenharmony_ci NEON3SameFP16Fixed = 0x0E400400, 2082b8021494Sopenharmony_ci NEON3SameFP16FMask = 0x9F60C400, 2083b8021494Sopenharmony_ci NEON3SameFP16Mask = 0xBFE0FC00, 2084b8021494Sopenharmony_ci NEON_FMAXNM_H = NEON3SameFP16Fixed | 0x00000000, 2085b8021494Sopenharmony_ci NEON_FMLA_H = NEON3SameFP16Fixed | 0x00000800, 2086b8021494Sopenharmony_ci NEON_FADD_H = NEON3SameFP16Fixed | 0x00001000, 2087b8021494Sopenharmony_ci NEON_FMULX_H = NEON3SameFP16Fixed | 0x00001800, 2088b8021494Sopenharmony_ci NEON_FCMEQ_H = NEON3SameFP16Fixed | 0x00002000, 2089b8021494Sopenharmony_ci NEON_FMAX_H = NEON3SameFP16Fixed | 0x00003000, 2090b8021494Sopenharmony_ci NEON_FRECPS_H = NEON3SameFP16Fixed | 0x00003800, 2091b8021494Sopenharmony_ci NEON_FMINNM_H = NEON3SameFP16Fixed | 0x00800000, 2092b8021494Sopenharmony_ci NEON_FMLS_H = NEON3SameFP16Fixed | 0x00800800, 2093b8021494Sopenharmony_ci NEON_FSUB_H = NEON3SameFP16Fixed | 0x00801000, 2094b8021494Sopenharmony_ci NEON_FMIN_H = NEON3SameFP16Fixed | 0x00803000, 2095b8021494Sopenharmony_ci NEON_FRSQRTS_H = NEON3SameFP16Fixed | 0x00803800, 2096b8021494Sopenharmony_ci NEON_FMAXNMP_H = NEON3SameFP16Fixed | 0x20000000, 2097b8021494Sopenharmony_ci NEON_FADDP_H = NEON3SameFP16Fixed | 0x20001000, 2098b8021494Sopenharmony_ci NEON_FMUL_H = NEON3SameFP16Fixed | 0x20001800, 2099b8021494Sopenharmony_ci NEON_FCMGE_H = NEON3SameFP16Fixed | 0x20002000, 2100b8021494Sopenharmony_ci NEON_FACGE_H = NEON3SameFP16Fixed | 0x20002800, 2101b8021494Sopenharmony_ci NEON_FMAXP_H = NEON3SameFP16Fixed | 0x20003000, 2102b8021494Sopenharmony_ci NEON_FDIV_H = NEON3SameFP16Fixed | 0x20003800, 2103b8021494Sopenharmony_ci NEON_FMINNMP_H = NEON3SameFP16Fixed | 0x20800000, 2104b8021494Sopenharmony_ci NEON_FABD_H = NEON3SameFP16Fixed | 0x20801000, 2105b8021494Sopenharmony_ci NEON_FCMGT_H = NEON3SameFP16Fixed | 0x20802000, 2106b8021494Sopenharmony_ci NEON_FACGT_H = NEON3SameFP16Fixed | 0x20802800, 2107b8021494Sopenharmony_ci NEON_FMINP_H = NEON3SameFP16Fixed | 0x20803000 2108b8021494Sopenharmony_ci}; 2109b8021494Sopenharmony_ci 2110b8021494Sopenharmony_ci 2111b8021494Sopenharmony_ci// 'Extra' NEON instructions with three same-type operands. 2112b8021494Sopenharmony_cienum NEON3SameExtraOp { 2113b8021494Sopenharmony_ci NEON3SameExtraFixed = 0x0E008400, 2114b8021494Sopenharmony_ci NEON3SameExtraUBit = 0x20000000, 2115b8021494Sopenharmony_ci NEON3SameExtraFMask = 0x9E208400, 2116b8021494Sopenharmony_ci NEON3SameExtraMask = 0xBE20FC00, 2117b8021494Sopenharmony_ci NEON_SQRDMLAH = NEON3SameExtraFixed | NEON3SameExtraUBit, 2118b8021494Sopenharmony_ci NEON_SQRDMLSH = NEON3SameExtraFixed | NEON3SameExtraUBit | 0x00000800, 2119b8021494Sopenharmony_ci NEON_SDOT = NEON3SameExtraFixed | 0x00001000, 2120b8021494Sopenharmony_ci NEON_UDOT = NEON3SameExtraFixed | NEON3SameExtraUBit | 0x00001000, 2121b8021494Sopenharmony_ci 2122b8021494Sopenharmony_ci /* v8.3 Complex Numbers */ 2123b8021494Sopenharmony_ci NEON3SameExtraFCFixed = 0x2E00C400, 2124b8021494Sopenharmony_ci NEON3SameExtraFCFMask = 0xBF20C400, 2125b8021494Sopenharmony_ci // FCMLA fixes opcode<3:2>, and uses opcode<1:0> to encode <rotate>. 2126b8021494Sopenharmony_ci NEON3SameExtraFCMLAMask = NEON3SameExtraFCFMask | 0x00006000, 2127b8021494Sopenharmony_ci NEON_FCMLA = NEON3SameExtraFCFixed, 2128b8021494Sopenharmony_ci // FCADD fixes opcode<3:2, 0>, and uses opcode<1> to encode <rotate>. 2129b8021494Sopenharmony_ci NEON3SameExtraFCADDMask = NEON3SameExtraFCFMask | 0x00006800, 2130b8021494Sopenharmony_ci NEON_FCADD = NEON3SameExtraFCFixed | 0x00002000 2131b8021494Sopenharmony_ci // Other encodings under NEON3SameExtraFCFMask are UNALLOCATED. 2132b8021494Sopenharmony_ci}; 2133b8021494Sopenharmony_ci 2134b8021494Sopenharmony_ci// NEON instructions with three different-type operands. 2135b8021494Sopenharmony_cienum NEON3DifferentOp { 2136b8021494Sopenharmony_ci NEON3DifferentFixed = 0x0E200000, 2137b8021494Sopenharmony_ci NEON3DifferentFMask = 0x9F200C00, 2138b8021494Sopenharmony_ci NEON3DifferentMask = 0xFF20FC00, 2139b8021494Sopenharmony_ci NEON_ADDHN = NEON3DifferentFixed | 0x00004000, 2140b8021494Sopenharmony_ci NEON_ADDHN2 = NEON_ADDHN | NEON_Q, 2141b8021494Sopenharmony_ci NEON_PMULL = NEON3DifferentFixed | 0x0000E000, 2142b8021494Sopenharmony_ci NEON_PMULL2 = NEON_PMULL | NEON_Q, 2143b8021494Sopenharmony_ci NEON_RADDHN = NEON3DifferentFixed | 0x20004000, 2144b8021494Sopenharmony_ci NEON_RADDHN2 = NEON_RADDHN | NEON_Q, 2145b8021494Sopenharmony_ci NEON_RSUBHN = NEON3DifferentFixed | 0x20006000, 2146b8021494Sopenharmony_ci NEON_RSUBHN2 = NEON_RSUBHN | NEON_Q, 2147b8021494Sopenharmony_ci NEON_SABAL = NEON3DifferentFixed | 0x00005000, 2148b8021494Sopenharmony_ci NEON_SABAL2 = NEON_SABAL | NEON_Q, 2149b8021494Sopenharmony_ci NEON_SABDL = NEON3DifferentFixed | 0x00007000, 2150b8021494Sopenharmony_ci NEON_SABDL2 = NEON_SABDL | NEON_Q, 2151b8021494Sopenharmony_ci NEON_SADDL = NEON3DifferentFixed | 0x00000000, 2152b8021494Sopenharmony_ci NEON_SADDL2 = NEON_SADDL | NEON_Q, 2153b8021494Sopenharmony_ci NEON_SADDW = NEON3DifferentFixed | 0x00001000, 2154b8021494Sopenharmony_ci NEON_SADDW2 = NEON_SADDW | NEON_Q, 2155b8021494Sopenharmony_ci NEON_SMLAL = NEON3DifferentFixed | 0x00008000, 2156b8021494Sopenharmony_ci NEON_SMLAL2 = NEON_SMLAL | NEON_Q, 2157b8021494Sopenharmony_ci NEON_SMLSL = NEON3DifferentFixed | 0x0000A000, 2158b8021494Sopenharmony_ci NEON_SMLSL2 = NEON_SMLSL | NEON_Q, 2159b8021494Sopenharmony_ci NEON_SMULL = NEON3DifferentFixed | 0x0000C000, 2160b8021494Sopenharmony_ci NEON_SMULL2 = NEON_SMULL | NEON_Q, 2161b8021494Sopenharmony_ci NEON_SSUBL = NEON3DifferentFixed | 0x00002000, 2162b8021494Sopenharmony_ci NEON_SSUBL2 = NEON_SSUBL | NEON_Q, 2163b8021494Sopenharmony_ci NEON_SSUBW = NEON3DifferentFixed | 0x00003000, 2164b8021494Sopenharmony_ci NEON_SSUBW2 = NEON_SSUBW | NEON_Q, 2165b8021494Sopenharmony_ci NEON_SQDMLAL = NEON3DifferentFixed | 0x00009000, 2166b8021494Sopenharmony_ci NEON_SQDMLAL2 = NEON_SQDMLAL | NEON_Q, 2167b8021494Sopenharmony_ci NEON_SQDMLSL = NEON3DifferentFixed | 0x0000B000, 2168b8021494Sopenharmony_ci NEON_SQDMLSL2 = NEON_SQDMLSL | NEON_Q, 2169b8021494Sopenharmony_ci NEON_SQDMULL = NEON3DifferentFixed | 0x0000D000, 2170b8021494Sopenharmony_ci NEON_SQDMULL2 = NEON_SQDMULL | NEON_Q, 2171b8021494Sopenharmony_ci NEON_SUBHN = NEON3DifferentFixed | 0x00006000, 2172b8021494Sopenharmony_ci NEON_SUBHN2 = NEON_SUBHN | NEON_Q, 2173b8021494Sopenharmony_ci NEON_UABAL = NEON_SABAL | NEON3SameUBit, 2174b8021494Sopenharmony_ci NEON_UABAL2 = NEON_UABAL | NEON_Q, 2175b8021494Sopenharmony_ci NEON_UABDL = NEON_SABDL | NEON3SameUBit, 2176b8021494Sopenharmony_ci NEON_UABDL2 = NEON_UABDL | NEON_Q, 2177b8021494Sopenharmony_ci NEON_UADDL = NEON_SADDL | NEON3SameUBit, 2178b8021494Sopenharmony_ci NEON_UADDL2 = NEON_UADDL | NEON_Q, 2179b8021494Sopenharmony_ci NEON_UADDW = NEON_SADDW | NEON3SameUBit, 2180b8021494Sopenharmony_ci NEON_UADDW2 = NEON_UADDW | NEON_Q, 2181b8021494Sopenharmony_ci NEON_UMLAL = NEON_SMLAL | NEON3SameUBit, 2182b8021494Sopenharmony_ci NEON_UMLAL2 = NEON_UMLAL | NEON_Q, 2183b8021494Sopenharmony_ci NEON_UMLSL = NEON_SMLSL | NEON3SameUBit, 2184b8021494Sopenharmony_ci NEON_UMLSL2 = NEON_UMLSL | NEON_Q, 2185b8021494Sopenharmony_ci NEON_UMULL = NEON_SMULL | NEON3SameUBit, 2186b8021494Sopenharmony_ci NEON_UMULL2 = NEON_UMULL | NEON_Q, 2187b8021494Sopenharmony_ci NEON_USUBL = NEON_SSUBL | NEON3SameUBit, 2188b8021494Sopenharmony_ci NEON_USUBL2 = NEON_USUBL | NEON_Q, 2189b8021494Sopenharmony_ci NEON_USUBW = NEON_SSUBW | NEON3SameUBit, 2190b8021494Sopenharmony_ci NEON_USUBW2 = NEON_USUBW | NEON_Q 2191b8021494Sopenharmony_ci}; 2192b8021494Sopenharmony_ci 2193b8021494Sopenharmony_ci// NEON instructions operating across vectors. 2194b8021494Sopenharmony_cienum NEONAcrossLanesOp { 2195b8021494Sopenharmony_ci NEONAcrossLanesFixed = 0x0E300800, 2196b8021494Sopenharmony_ci NEONAcrossLanesFMask = 0x9F3E0C00, 2197b8021494Sopenharmony_ci NEONAcrossLanesMask = 0xBF3FFC00, 2198b8021494Sopenharmony_ci NEON_ADDV = NEONAcrossLanesFixed | 0x0001B000, 2199b8021494Sopenharmony_ci NEON_SADDLV = NEONAcrossLanesFixed | 0x00003000, 2200b8021494Sopenharmony_ci NEON_UADDLV = NEONAcrossLanesFixed | 0x20003000, 2201b8021494Sopenharmony_ci NEON_SMAXV = NEONAcrossLanesFixed | 0x0000A000, 2202b8021494Sopenharmony_ci NEON_SMINV = NEONAcrossLanesFixed | 0x0001A000, 2203b8021494Sopenharmony_ci NEON_UMAXV = NEONAcrossLanesFixed | 0x2000A000, 2204b8021494Sopenharmony_ci NEON_UMINV = NEONAcrossLanesFixed | 0x2001A000, 2205b8021494Sopenharmony_ci 2206b8021494Sopenharmony_ci NEONAcrossLanesFP16Fixed = NEONAcrossLanesFixed | 0x0000C000, 2207b8021494Sopenharmony_ci NEONAcrossLanesFP16FMask = NEONAcrossLanesFMask | 0x2000C000, 2208b8021494Sopenharmony_ci NEONAcrossLanesFP16Mask = NEONAcrossLanesMask | 0x20800000, 2209b8021494Sopenharmony_ci NEON_FMAXNMV_H = NEONAcrossLanesFP16Fixed | 0x00000000, 2210b8021494Sopenharmony_ci NEON_FMAXV_H = NEONAcrossLanesFP16Fixed | 0x00003000, 2211b8021494Sopenharmony_ci NEON_FMINNMV_H = NEONAcrossLanesFP16Fixed | 0x00800000, 2212b8021494Sopenharmony_ci NEON_FMINV_H = NEONAcrossLanesFP16Fixed | 0x00803000, 2213b8021494Sopenharmony_ci 2214b8021494Sopenharmony_ci // NEON floating point across instructions. 2215b8021494Sopenharmony_ci NEONAcrossLanesFPFixed = NEONAcrossLanesFixed | 0x2000C000, 2216b8021494Sopenharmony_ci NEONAcrossLanesFPFMask = NEONAcrossLanesFMask | 0x2000C000, 2217b8021494Sopenharmony_ci NEONAcrossLanesFPMask = NEONAcrossLanesMask | 0x20800000, 2218b8021494Sopenharmony_ci 2219b8021494Sopenharmony_ci NEON_FMAXV = NEONAcrossLanesFPFixed | 0x2000F000, 2220b8021494Sopenharmony_ci NEON_FMINV = NEONAcrossLanesFPFixed | 0x2080F000, 2221b8021494Sopenharmony_ci NEON_FMAXNMV = NEONAcrossLanesFPFixed | 0x2000C000, 2222b8021494Sopenharmony_ci NEON_FMINNMV = NEONAcrossLanesFPFixed | 0x2080C000 2223b8021494Sopenharmony_ci}; 2224b8021494Sopenharmony_ci 2225b8021494Sopenharmony_ci// NEON instructions with indexed element operand. 2226b8021494Sopenharmony_cienum NEONByIndexedElementOp { 2227b8021494Sopenharmony_ci NEONByIndexedElementFixed = 0x0F000000, 2228b8021494Sopenharmony_ci NEONByIndexedElementFMask = 0x9F000400, 2229b8021494Sopenharmony_ci NEONByIndexedElementMask = 0xBF00F400, 2230b8021494Sopenharmony_ci NEON_MUL_byelement = NEONByIndexedElementFixed | 0x00008000, 2231b8021494Sopenharmony_ci NEON_MLA_byelement = NEONByIndexedElementFixed | 0x20000000, 2232b8021494Sopenharmony_ci NEON_MLS_byelement = NEONByIndexedElementFixed | 0x20004000, 2233b8021494Sopenharmony_ci NEON_SMULL_byelement = NEONByIndexedElementFixed | 0x0000A000, 2234b8021494Sopenharmony_ci NEON_SMLAL_byelement = NEONByIndexedElementFixed | 0x00002000, 2235b8021494Sopenharmony_ci NEON_SMLSL_byelement = NEONByIndexedElementFixed | 0x00006000, 2236b8021494Sopenharmony_ci NEON_UMULL_byelement = NEONByIndexedElementFixed | 0x2000A000, 2237b8021494Sopenharmony_ci NEON_UMLAL_byelement = NEONByIndexedElementFixed | 0x20002000, 2238b8021494Sopenharmony_ci NEON_UMLSL_byelement = NEONByIndexedElementFixed | 0x20006000, 2239b8021494Sopenharmony_ci NEON_SQDMULL_byelement = NEONByIndexedElementFixed | 0x0000B000, 2240b8021494Sopenharmony_ci NEON_SQDMLAL_byelement = NEONByIndexedElementFixed | 0x00003000, 2241b8021494Sopenharmony_ci NEON_SQDMLSL_byelement = NEONByIndexedElementFixed | 0x00007000, 2242b8021494Sopenharmony_ci NEON_SQDMULH_byelement = NEONByIndexedElementFixed | 0x0000C000, 2243b8021494Sopenharmony_ci NEON_SQRDMULH_byelement = NEONByIndexedElementFixed | 0x0000D000, 2244b8021494Sopenharmony_ci NEON_SDOT_byelement = NEONByIndexedElementFixed | 0x0000E000, 2245b8021494Sopenharmony_ci NEON_SQRDMLAH_byelement = NEONByIndexedElementFixed | 0x2000D000, 2246b8021494Sopenharmony_ci NEON_UDOT_byelement = NEONByIndexedElementFixed | 0x2000E000, 2247b8021494Sopenharmony_ci NEON_SQRDMLSH_byelement = NEONByIndexedElementFixed | 0x2000F000, 2248b8021494Sopenharmony_ci 2249b8021494Sopenharmony_ci NEON_FMLA_H_byelement = NEONByIndexedElementFixed | 0x00001000, 2250b8021494Sopenharmony_ci NEON_FMLS_H_byelement = NEONByIndexedElementFixed | 0x00005000, 2251b8021494Sopenharmony_ci NEON_FMUL_H_byelement = NEONByIndexedElementFixed | 0x00009000, 2252b8021494Sopenharmony_ci NEON_FMULX_H_byelement = NEONByIndexedElementFixed | 0x20009000, 2253b8021494Sopenharmony_ci 2254b8021494Sopenharmony_ci // Floating point instructions. 2255b8021494Sopenharmony_ci NEONByIndexedElementFPFixed = NEONByIndexedElementFixed | 0x00800000, 2256b8021494Sopenharmony_ci NEONByIndexedElementFPMask = NEONByIndexedElementMask | 0x00800000, 2257b8021494Sopenharmony_ci NEON_FMLA_byelement = NEONByIndexedElementFPFixed | 0x00001000, 2258b8021494Sopenharmony_ci NEON_FMLS_byelement = NEONByIndexedElementFPFixed | 0x00005000, 2259b8021494Sopenharmony_ci NEON_FMUL_byelement = NEONByIndexedElementFPFixed | 0x00009000, 2260b8021494Sopenharmony_ci NEON_FMULX_byelement = NEONByIndexedElementFPFixed | 0x20009000, 2261b8021494Sopenharmony_ci 2262b8021494Sopenharmony_ci // FMLAL-like instructions. 2263b8021494Sopenharmony_ci // For all cases: U = x, size = 10, opcode = xx00 2264b8021494Sopenharmony_ci NEONByIndexedElementFPLongFixed = NEONByIndexedElementFixed | 0x00800000, 2265b8021494Sopenharmony_ci NEONByIndexedElementFPLongFMask = NEONByIndexedElementFMask | 0x00C03000, 2266b8021494Sopenharmony_ci NEONByIndexedElementFPLongMask = 0xBFC0F400, 2267b8021494Sopenharmony_ci NEON_FMLAL_H_byelement = NEONByIndexedElementFixed | 0x00800000, 2268b8021494Sopenharmony_ci NEON_FMLAL2_H_byelement = NEONByIndexedElementFixed | 0x20808000, 2269b8021494Sopenharmony_ci NEON_FMLSL_H_byelement = NEONByIndexedElementFixed | 0x00804000, 2270b8021494Sopenharmony_ci NEON_FMLSL2_H_byelement = NEONByIndexedElementFixed | 0x2080C000, 2271b8021494Sopenharmony_ci 2272b8021494Sopenharmony_ci // Complex instruction(s). 2273b8021494Sopenharmony_ci // This is necessary because the 'rot' encoding moves into the 2274b8021494Sopenharmony_ci // NEONByIndex..Mask space. 2275b8021494Sopenharmony_ci NEONByIndexedElementFPComplexMask = 0xBF009400, 2276b8021494Sopenharmony_ci NEON_FCMLA_byelement = NEONByIndexedElementFixed | 0x20001000 2277b8021494Sopenharmony_ci}; 2278b8021494Sopenharmony_ci 2279b8021494Sopenharmony_ci// NEON register copy. 2280b8021494Sopenharmony_cienum NEONCopyOp { 2281b8021494Sopenharmony_ci NEONCopyFixed = 0x0E000400, 2282b8021494Sopenharmony_ci NEONCopyFMask = 0x9FE08400, 2283b8021494Sopenharmony_ci NEONCopyMask = 0x3FE08400, 2284b8021494Sopenharmony_ci NEONCopyInsElementMask = NEONCopyMask | 0x40000000, 2285b8021494Sopenharmony_ci NEONCopyInsGeneralMask = NEONCopyMask | 0x40007800, 2286b8021494Sopenharmony_ci NEONCopyDupElementMask = NEONCopyMask | 0x20007800, 2287b8021494Sopenharmony_ci NEONCopyDupGeneralMask = NEONCopyDupElementMask, 2288b8021494Sopenharmony_ci NEONCopyUmovMask = NEONCopyMask | 0x20007800, 2289b8021494Sopenharmony_ci NEONCopySmovMask = NEONCopyMask | 0x20007800, 2290b8021494Sopenharmony_ci NEON_INS_ELEMENT = NEONCopyFixed | 0x60000000, 2291b8021494Sopenharmony_ci NEON_INS_GENERAL = NEONCopyFixed | 0x40001800, 2292b8021494Sopenharmony_ci NEON_DUP_ELEMENT = NEONCopyFixed | 0x00000000, 2293b8021494Sopenharmony_ci NEON_DUP_GENERAL = NEONCopyFixed | 0x00000800, 2294b8021494Sopenharmony_ci NEON_SMOV = NEONCopyFixed | 0x00002800, 2295b8021494Sopenharmony_ci NEON_UMOV = NEONCopyFixed | 0x00003800 2296b8021494Sopenharmony_ci}; 2297b8021494Sopenharmony_ci 2298b8021494Sopenharmony_ci// NEON extract. 2299b8021494Sopenharmony_cienum NEONExtractOp { 2300b8021494Sopenharmony_ci NEONExtractFixed = 0x2E000000, 2301b8021494Sopenharmony_ci NEONExtractFMask = 0xBF208400, 2302b8021494Sopenharmony_ci NEONExtractMask = 0xBFE08400, 2303b8021494Sopenharmony_ci NEON_EXT = NEONExtractFixed | 0x00000000 2304b8021494Sopenharmony_ci}; 2305b8021494Sopenharmony_ci 2306b8021494Sopenharmony_cienum NEONLoadStoreMultiOp { 2307b8021494Sopenharmony_ci NEONLoadStoreMultiL = 0x00400000, 2308b8021494Sopenharmony_ci NEONLoadStoreMulti1_1v = 0x00007000, 2309b8021494Sopenharmony_ci NEONLoadStoreMulti1_2v = 0x0000A000, 2310b8021494Sopenharmony_ci NEONLoadStoreMulti1_3v = 0x00006000, 2311b8021494Sopenharmony_ci NEONLoadStoreMulti1_4v = 0x00002000, 2312b8021494Sopenharmony_ci NEONLoadStoreMulti2 = 0x00008000, 2313b8021494Sopenharmony_ci NEONLoadStoreMulti3 = 0x00004000, 2314b8021494Sopenharmony_ci NEONLoadStoreMulti4 = 0x00000000 2315b8021494Sopenharmony_ci}; 2316b8021494Sopenharmony_ci 2317b8021494Sopenharmony_ci// NEON load/store multiple structures. 2318b8021494Sopenharmony_cienum NEONLoadStoreMultiStructOp { 2319b8021494Sopenharmony_ci NEONLoadStoreMultiStructFixed = 0x0C000000, 2320b8021494Sopenharmony_ci NEONLoadStoreMultiStructFMask = 0xBFBF0000, 2321b8021494Sopenharmony_ci NEONLoadStoreMultiStructMask = 0xBFFFF000, 2322b8021494Sopenharmony_ci NEONLoadStoreMultiStructStore = NEONLoadStoreMultiStructFixed, 2323b8021494Sopenharmony_ci NEONLoadStoreMultiStructLoad = NEONLoadStoreMultiStructFixed | 2324b8021494Sopenharmony_ci NEONLoadStoreMultiL, 2325b8021494Sopenharmony_ci NEON_LD1_1v = NEONLoadStoreMultiStructLoad | NEONLoadStoreMulti1_1v, 2326b8021494Sopenharmony_ci NEON_LD1_2v = NEONLoadStoreMultiStructLoad | NEONLoadStoreMulti1_2v, 2327b8021494Sopenharmony_ci NEON_LD1_3v = NEONLoadStoreMultiStructLoad | NEONLoadStoreMulti1_3v, 2328b8021494Sopenharmony_ci NEON_LD1_4v = NEONLoadStoreMultiStructLoad | NEONLoadStoreMulti1_4v, 2329b8021494Sopenharmony_ci NEON_LD2 = NEONLoadStoreMultiStructLoad | NEONLoadStoreMulti2, 2330b8021494Sopenharmony_ci NEON_LD3 = NEONLoadStoreMultiStructLoad | NEONLoadStoreMulti3, 2331b8021494Sopenharmony_ci NEON_LD4 = NEONLoadStoreMultiStructLoad | NEONLoadStoreMulti4, 2332b8021494Sopenharmony_ci NEON_ST1_1v = NEONLoadStoreMultiStructStore | NEONLoadStoreMulti1_1v, 2333b8021494Sopenharmony_ci NEON_ST1_2v = NEONLoadStoreMultiStructStore | NEONLoadStoreMulti1_2v, 2334b8021494Sopenharmony_ci NEON_ST1_3v = NEONLoadStoreMultiStructStore | NEONLoadStoreMulti1_3v, 2335b8021494Sopenharmony_ci NEON_ST1_4v = NEONLoadStoreMultiStructStore | NEONLoadStoreMulti1_4v, 2336b8021494Sopenharmony_ci NEON_ST2 = NEONLoadStoreMultiStructStore | NEONLoadStoreMulti2, 2337b8021494Sopenharmony_ci NEON_ST3 = NEONLoadStoreMultiStructStore | NEONLoadStoreMulti3, 2338b8021494Sopenharmony_ci NEON_ST4 = NEONLoadStoreMultiStructStore | NEONLoadStoreMulti4 2339b8021494Sopenharmony_ci}; 2340b8021494Sopenharmony_ci 2341b8021494Sopenharmony_ci// NEON load/store multiple structures with post-index addressing. 2342b8021494Sopenharmony_cienum NEONLoadStoreMultiStructPostIndexOp { 2343b8021494Sopenharmony_ci NEONLoadStoreMultiStructPostIndexFixed = 0x0C800000, 2344b8021494Sopenharmony_ci NEONLoadStoreMultiStructPostIndexFMask = 0xBFA00000, 2345b8021494Sopenharmony_ci NEONLoadStoreMultiStructPostIndexMask = 0xBFE0F000, 2346b8021494Sopenharmony_ci NEONLoadStoreMultiStructPostIndex = 0x00800000, 2347b8021494Sopenharmony_ci NEON_LD1_1v_post = NEON_LD1_1v | NEONLoadStoreMultiStructPostIndex, 2348b8021494Sopenharmony_ci NEON_LD1_2v_post = NEON_LD1_2v | NEONLoadStoreMultiStructPostIndex, 2349b8021494Sopenharmony_ci NEON_LD1_3v_post = NEON_LD1_3v | NEONLoadStoreMultiStructPostIndex, 2350b8021494Sopenharmony_ci NEON_LD1_4v_post = NEON_LD1_4v | NEONLoadStoreMultiStructPostIndex, 2351b8021494Sopenharmony_ci NEON_LD2_post = NEON_LD2 | NEONLoadStoreMultiStructPostIndex, 2352b8021494Sopenharmony_ci NEON_LD3_post = NEON_LD3 | NEONLoadStoreMultiStructPostIndex, 2353b8021494Sopenharmony_ci NEON_LD4_post = NEON_LD4 | NEONLoadStoreMultiStructPostIndex, 2354b8021494Sopenharmony_ci NEON_ST1_1v_post = NEON_ST1_1v | NEONLoadStoreMultiStructPostIndex, 2355b8021494Sopenharmony_ci NEON_ST1_2v_post = NEON_ST1_2v | NEONLoadStoreMultiStructPostIndex, 2356b8021494Sopenharmony_ci NEON_ST1_3v_post = NEON_ST1_3v | NEONLoadStoreMultiStructPostIndex, 2357b8021494Sopenharmony_ci NEON_ST1_4v_post = NEON_ST1_4v | NEONLoadStoreMultiStructPostIndex, 2358b8021494Sopenharmony_ci NEON_ST2_post = NEON_ST2 | NEONLoadStoreMultiStructPostIndex, 2359b8021494Sopenharmony_ci NEON_ST3_post = NEON_ST3 | NEONLoadStoreMultiStructPostIndex, 2360b8021494Sopenharmony_ci NEON_ST4_post = NEON_ST4 | NEONLoadStoreMultiStructPostIndex 2361b8021494Sopenharmony_ci}; 2362b8021494Sopenharmony_ci 2363b8021494Sopenharmony_cienum NEONLoadStoreSingleOp { 2364b8021494Sopenharmony_ci NEONLoadStoreSingle1 = 0x00000000, 2365b8021494Sopenharmony_ci NEONLoadStoreSingle2 = 0x00200000, 2366b8021494Sopenharmony_ci NEONLoadStoreSingle3 = 0x00002000, 2367b8021494Sopenharmony_ci NEONLoadStoreSingle4 = 0x00202000, 2368b8021494Sopenharmony_ci NEONLoadStoreSingleL = 0x00400000, 2369b8021494Sopenharmony_ci NEONLoadStoreSingle_b = 0x00000000, 2370b8021494Sopenharmony_ci NEONLoadStoreSingle_h = 0x00004000, 2371b8021494Sopenharmony_ci NEONLoadStoreSingle_s = 0x00008000, 2372b8021494Sopenharmony_ci NEONLoadStoreSingle_d = 0x00008400, 2373b8021494Sopenharmony_ci NEONLoadStoreSingleAllLanes = 0x0000C000, 2374b8021494Sopenharmony_ci NEONLoadStoreSingleLenMask = 0x00202000 2375b8021494Sopenharmony_ci}; 2376b8021494Sopenharmony_ci 2377b8021494Sopenharmony_ci// NEON load/store single structure. 2378b8021494Sopenharmony_cienum NEONLoadStoreSingleStructOp { 2379b8021494Sopenharmony_ci NEONLoadStoreSingleStructFixed = 0x0D000000, 2380b8021494Sopenharmony_ci NEONLoadStoreSingleStructFMask = 0xBF9F0000, 2381b8021494Sopenharmony_ci NEONLoadStoreSingleStructMask = 0xBFFFE000, 2382b8021494Sopenharmony_ci NEONLoadStoreSingleStructStore = NEONLoadStoreSingleStructFixed, 2383b8021494Sopenharmony_ci NEONLoadStoreSingleStructLoad = NEONLoadStoreSingleStructFixed | 2384b8021494Sopenharmony_ci NEONLoadStoreSingleL, 2385b8021494Sopenharmony_ci NEONLoadStoreSingleStructLoad1 = NEONLoadStoreSingle1 | 2386b8021494Sopenharmony_ci NEONLoadStoreSingleStructLoad, 2387b8021494Sopenharmony_ci NEONLoadStoreSingleStructLoad2 = NEONLoadStoreSingle2 | 2388b8021494Sopenharmony_ci NEONLoadStoreSingleStructLoad, 2389b8021494Sopenharmony_ci NEONLoadStoreSingleStructLoad3 = NEONLoadStoreSingle3 | 2390b8021494Sopenharmony_ci NEONLoadStoreSingleStructLoad, 2391b8021494Sopenharmony_ci NEONLoadStoreSingleStructLoad4 = NEONLoadStoreSingle4 | 2392b8021494Sopenharmony_ci NEONLoadStoreSingleStructLoad, 2393b8021494Sopenharmony_ci NEONLoadStoreSingleStructStore1 = NEONLoadStoreSingle1 | 2394b8021494Sopenharmony_ci NEONLoadStoreSingleStructFixed, 2395b8021494Sopenharmony_ci NEONLoadStoreSingleStructStore2 = NEONLoadStoreSingle2 | 2396b8021494Sopenharmony_ci NEONLoadStoreSingleStructFixed, 2397b8021494Sopenharmony_ci NEONLoadStoreSingleStructStore3 = NEONLoadStoreSingle3 | 2398b8021494Sopenharmony_ci NEONLoadStoreSingleStructFixed, 2399b8021494Sopenharmony_ci NEONLoadStoreSingleStructStore4 = NEONLoadStoreSingle4 | 2400b8021494Sopenharmony_ci NEONLoadStoreSingleStructFixed, 2401b8021494Sopenharmony_ci NEON_LD1_b = NEONLoadStoreSingleStructLoad1 | NEONLoadStoreSingle_b, 2402b8021494Sopenharmony_ci NEON_LD1_h = NEONLoadStoreSingleStructLoad1 | NEONLoadStoreSingle_h, 2403b8021494Sopenharmony_ci NEON_LD1_s = NEONLoadStoreSingleStructLoad1 | NEONLoadStoreSingle_s, 2404b8021494Sopenharmony_ci NEON_LD1_d = NEONLoadStoreSingleStructLoad1 | NEONLoadStoreSingle_d, 2405b8021494Sopenharmony_ci NEON_LD1R = NEONLoadStoreSingleStructLoad1 | NEONLoadStoreSingleAllLanes, 2406b8021494Sopenharmony_ci NEON_ST1_b = NEONLoadStoreSingleStructStore1 | NEONLoadStoreSingle_b, 2407b8021494Sopenharmony_ci NEON_ST1_h = NEONLoadStoreSingleStructStore1 | NEONLoadStoreSingle_h, 2408b8021494Sopenharmony_ci NEON_ST1_s = NEONLoadStoreSingleStructStore1 | NEONLoadStoreSingle_s, 2409b8021494Sopenharmony_ci NEON_ST1_d = NEONLoadStoreSingleStructStore1 | NEONLoadStoreSingle_d, 2410b8021494Sopenharmony_ci 2411b8021494Sopenharmony_ci NEON_LD2_b = NEONLoadStoreSingleStructLoad2 | NEONLoadStoreSingle_b, 2412b8021494Sopenharmony_ci NEON_LD2_h = NEONLoadStoreSingleStructLoad2 | NEONLoadStoreSingle_h, 2413b8021494Sopenharmony_ci NEON_LD2_s = NEONLoadStoreSingleStructLoad2 | NEONLoadStoreSingle_s, 2414b8021494Sopenharmony_ci NEON_LD2_d = NEONLoadStoreSingleStructLoad2 | NEONLoadStoreSingle_d, 2415b8021494Sopenharmony_ci NEON_LD2R = NEONLoadStoreSingleStructLoad2 | NEONLoadStoreSingleAllLanes, 2416b8021494Sopenharmony_ci NEON_ST2_b = NEONLoadStoreSingleStructStore2 | NEONLoadStoreSingle_b, 2417b8021494Sopenharmony_ci NEON_ST2_h = NEONLoadStoreSingleStructStore2 | NEONLoadStoreSingle_h, 2418b8021494Sopenharmony_ci NEON_ST2_s = NEONLoadStoreSingleStructStore2 | NEONLoadStoreSingle_s, 2419b8021494Sopenharmony_ci NEON_ST2_d = NEONLoadStoreSingleStructStore2 | NEONLoadStoreSingle_d, 2420b8021494Sopenharmony_ci 2421b8021494Sopenharmony_ci NEON_LD3_b = NEONLoadStoreSingleStructLoad3 | NEONLoadStoreSingle_b, 2422b8021494Sopenharmony_ci NEON_LD3_h = NEONLoadStoreSingleStructLoad3 | NEONLoadStoreSingle_h, 2423b8021494Sopenharmony_ci NEON_LD3_s = NEONLoadStoreSingleStructLoad3 | NEONLoadStoreSingle_s, 2424b8021494Sopenharmony_ci NEON_LD3_d = NEONLoadStoreSingleStructLoad3 | NEONLoadStoreSingle_d, 2425b8021494Sopenharmony_ci NEON_LD3R = NEONLoadStoreSingleStructLoad3 | NEONLoadStoreSingleAllLanes, 2426b8021494Sopenharmony_ci NEON_ST3_b = NEONLoadStoreSingleStructStore3 | NEONLoadStoreSingle_b, 2427b8021494Sopenharmony_ci NEON_ST3_h = NEONLoadStoreSingleStructStore3 | NEONLoadStoreSingle_h, 2428b8021494Sopenharmony_ci NEON_ST3_s = NEONLoadStoreSingleStructStore3 | NEONLoadStoreSingle_s, 2429b8021494Sopenharmony_ci NEON_ST3_d = NEONLoadStoreSingleStructStore3 | NEONLoadStoreSingle_d, 2430b8021494Sopenharmony_ci 2431b8021494Sopenharmony_ci NEON_LD4_b = NEONLoadStoreSingleStructLoad4 | NEONLoadStoreSingle_b, 2432b8021494Sopenharmony_ci NEON_LD4_h = NEONLoadStoreSingleStructLoad4 | NEONLoadStoreSingle_h, 2433b8021494Sopenharmony_ci NEON_LD4_s = NEONLoadStoreSingleStructLoad4 | NEONLoadStoreSingle_s, 2434b8021494Sopenharmony_ci NEON_LD4_d = NEONLoadStoreSingleStructLoad4 | NEONLoadStoreSingle_d, 2435b8021494Sopenharmony_ci NEON_LD4R = NEONLoadStoreSingleStructLoad4 | NEONLoadStoreSingleAllLanes, 2436b8021494Sopenharmony_ci NEON_ST4_b = NEONLoadStoreSingleStructStore4 | NEONLoadStoreSingle_b, 2437b8021494Sopenharmony_ci NEON_ST4_h = NEONLoadStoreSingleStructStore4 | NEONLoadStoreSingle_h, 2438b8021494Sopenharmony_ci NEON_ST4_s = NEONLoadStoreSingleStructStore4 | NEONLoadStoreSingle_s, 2439b8021494Sopenharmony_ci NEON_ST4_d = NEONLoadStoreSingleStructStore4 | NEONLoadStoreSingle_d 2440b8021494Sopenharmony_ci}; 2441b8021494Sopenharmony_ci 2442b8021494Sopenharmony_ci// NEON load/store single structure with post-index addressing. 2443b8021494Sopenharmony_cienum NEONLoadStoreSingleStructPostIndexOp { 2444b8021494Sopenharmony_ci NEONLoadStoreSingleStructPostIndexFixed = 0x0D800000, 2445b8021494Sopenharmony_ci NEONLoadStoreSingleStructPostIndexFMask = 0xBF800000, 2446b8021494Sopenharmony_ci NEONLoadStoreSingleStructPostIndexMask = 0xBFE0E000, 2447b8021494Sopenharmony_ci NEONLoadStoreSingleStructPostIndex = 0x00800000, 2448b8021494Sopenharmony_ci NEON_LD1_b_post = NEON_LD1_b | NEONLoadStoreSingleStructPostIndex, 2449b8021494Sopenharmony_ci NEON_LD1_h_post = NEON_LD1_h | NEONLoadStoreSingleStructPostIndex, 2450b8021494Sopenharmony_ci NEON_LD1_s_post = NEON_LD1_s | NEONLoadStoreSingleStructPostIndex, 2451b8021494Sopenharmony_ci NEON_LD1_d_post = NEON_LD1_d | NEONLoadStoreSingleStructPostIndex, 2452b8021494Sopenharmony_ci NEON_LD1R_post = NEON_LD1R | NEONLoadStoreSingleStructPostIndex, 2453b8021494Sopenharmony_ci NEON_ST1_b_post = NEON_ST1_b | NEONLoadStoreSingleStructPostIndex, 2454b8021494Sopenharmony_ci NEON_ST1_h_post = NEON_ST1_h | NEONLoadStoreSingleStructPostIndex, 2455b8021494Sopenharmony_ci NEON_ST1_s_post = NEON_ST1_s | NEONLoadStoreSingleStructPostIndex, 2456b8021494Sopenharmony_ci NEON_ST1_d_post = NEON_ST1_d | NEONLoadStoreSingleStructPostIndex, 2457b8021494Sopenharmony_ci 2458b8021494Sopenharmony_ci NEON_LD2_b_post = NEON_LD2_b | NEONLoadStoreSingleStructPostIndex, 2459b8021494Sopenharmony_ci NEON_LD2_h_post = NEON_LD2_h | NEONLoadStoreSingleStructPostIndex, 2460b8021494Sopenharmony_ci NEON_LD2_s_post = NEON_LD2_s | NEONLoadStoreSingleStructPostIndex, 2461b8021494Sopenharmony_ci NEON_LD2_d_post = NEON_LD2_d | NEONLoadStoreSingleStructPostIndex, 2462b8021494Sopenharmony_ci NEON_LD2R_post = NEON_LD2R | NEONLoadStoreSingleStructPostIndex, 2463b8021494Sopenharmony_ci NEON_ST2_b_post = NEON_ST2_b | NEONLoadStoreSingleStructPostIndex, 2464b8021494Sopenharmony_ci NEON_ST2_h_post = NEON_ST2_h | NEONLoadStoreSingleStructPostIndex, 2465b8021494Sopenharmony_ci NEON_ST2_s_post = NEON_ST2_s | NEONLoadStoreSingleStructPostIndex, 2466b8021494Sopenharmony_ci NEON_ST2_d_post = NEON_ST2_d | NEONLoadStoreSingleStructPostIndex, 2467b8021494Sopenharmony_ci 2468b8021494Sopenharmony_ci NEON_LD3_b_post = NEON_LD3_b | NEONLoadStoreSingleStructPostIndex, 2469b8021494Sopenharmony_ci NEON_LD3_h_post = NEON_LD3_h | NEONLoadStoreSingleStructPostIndex, 2470b8021494Sopenharmony_ci NEON_LD3_s_post = NEON_LD3_s | NEONLoadStoreSingleStructPostIndex, 2471b8021494Sopenharmony_ci NEON_LD3_d_post = NEON_LD3_d | NEONLoadStoreSingleStructPostIndex, 2472b8021494Sopenharmony_ci NEON_LD3R_post = NEON_LD3R | NEONLoadStoreSingleStructPostIndex, 2473b8021494Sopenharmony_ci NEON_ST3_b_post = NEON_ST3_b | NEONLoadStoreSingleStructPostIndex, 2474b8021494Sopenharmony_ci NEON_ST3_h_post = NEON_ST3_h | NEONLoadStoreSingleStructPostIndex, 2475b8021494Sopenharmony_ci NEON_ST3_s_post = NEON_ST3_s | NEONLoadStoreSingleStructPostIndex, 2476b8021494Sopenharmony_ci NEON_ST3_d_post = NEON_ST3_d | NEONLoadStoreSingleStructPostIndex, 2477b8021494Sopenharmony_ci 2478b8021494Sopenharmony_ci NEON_LD4_b_post = NEON_LD4_b | NEONLoadStoreSingleStructPostIndex, 2479b8021494Sopenharmony_ci NEON_LD4_h_post = NEON_LD4_h | NEONLoadStoreSingleStructPostIndex, 2480b8021494Sopenharmony_ci NEON_LD4_s_post = NEON_LD4_s | NEONLoadStoreSingleStructPostIndex, 2481b8021494Sopenharmony_ci NEON_LD4_d_post = NEON_LD4_d | NEONLoadStoreSingleStructPostIndex, 2482b8021494Sopenharmony_ci NEON_LD4R_post = NEON_LD4R | NEONLoadStoreSingleStructPostIndex, 2483b8021494Sopenharmony_ci NEON_ST4_b_post = NEON_ST4_b | NEONLoadStoreSingleStructPostIndex, 2484b8021494Sopenharmony_ci NEON_ST4_h_post = NEON_ST4_h | NEONLoadStoreSingleStructPostIndex, 2485b8021494Sopenharmony_ci NEON_ST4_s_post = NEON_ST4_s | NEONLoadStoreSingleStructPostIndex, 2486b8021494Sopenharmony_ci NEON_ST4_d_post = NEON_ST4_d | NEONLoadStoreSingleStructPostIndex 2487b8021494Sopenharmony_ci}; 2488b8021494Sopenharmony_ci 2489b8021494Sopenharmony_ci// NEON modified immediate. 2490b8021494Sopenharmony_cienum NEONModifiedImmediateOp { 2491b8021494Sopenharmony_ci NEONModifiedImmediateFixed = 0x0F000400, 2492b8021494Sopenharmony_ci NEONModifiedImmediateFMask = 0x9FF80400, 2493b8021494Sopenharmony_ci NEONModifiedImmediateOpBit = 0x20000000, 2494b8021494Sopenharmony_ci NEONModifiedImmediate_FMOV = NEONModifiedImmediateFixed | 0x00000800, 2495b8021494Sopenharmony_ci NEONModifiedImmediate_MOVI = NEONModifiedImmediateFixed | 0x00000000, 2496b8021494Sopenharmony_ci NEONModifiedImmediate_MVNI = NEONModifiedImmediateFixed | 0x20000000, 2497b8021494Sopenharmony_ci NEONModifiedImmediate_ORR = NEONModifiedImmediateFixed | 0x00001000, 2498b8021494Sopenharmony_ci NEONModifiedImmediate_BIC = NEONModifiedImmediateFixed | 0x20001000 2499b8021494Sopenharmony_ci}; 2500b8021494Sopenharmony_ci 2501b8021494Sopenharmony_ci// NEON shift immediate. 2502b8021494Sopenharmony_cienum NEONShiftImmediateOp { 2503b8021494Sopenharmony_ci NEONShiftImmediateFixed = 0x0F000400, 2504b8021494Sopenharmony_ci NEONShiftImmediateFMask = 0x9F800400, 2505b8021494Sopenharmony_ci NEONShiftImmediateMask = 0xBF80FC00, 2506b8021494Sopenharmony_ci NEONShiftImmediateUBit = 0x20000000, 2507b8021494Sopenharmony_ci NEON_SHL = NEONShiftImmediateFixed | 0x00005000, 2508b8021494Sopenharmony_ci NEON_SSHLL = NEONShiftImmediateFixed | 0x0000A000, 2509b8021494Sopenharmony_ci NEON_USHLL = NEONShiftImmediateFixed | 0x2000A000, 2510b8021494Sopenharmony_ci NEON_SLI = NEONShiftImmediateFixed | 0x20005000, 2511b8021494Sopenharmony_ci NEON_SRI = NEONShiftImmediateFixed | 0x20004000, 2512b8021494Sopenharmony_ci NEON_SHRN = NEONShiftImmediateFixed | 0x00008000, 2513b8021494Sopenharmony_ci NEON_RSHRN = NEONShiftImmediateFixed | 0x00008800, 2514b8021494Sopenharmony_ci NEON_UQSHRN = NEONShiftImmediateFixed | 0x20009000, 2515b8021494Sopenharmony_ci NEON_UQRSHRN = NEONShiftImmediateFixed | 0x20009800, 2516b8021494Sopenharmony_ci NEON_SQSHRN = NEONShiftImmediateFixed | 0x00009000, 2517b8021494Sopenharmony_ci NEON_SQRSHRN = NEONShiftImmediateFixed | 0x00009800, 2518b8021494Sopenharmony_ci NEON_SQSHRUN = NEONShiftImmediateFixed | 0x20008000, 2519b8021494Sopenharmony_ci NEON_SQRSHRUN = NEONShiftImmediateFixed | 0x20008800, 2520b8021494Sopenharmony_ci NEON_SSHR = NEONShiftImmediateFixed | 0x00000000, 2521b8021494Sopenharmony_ci NEON_SRSHR = NEONShiftImmediateFixed | 0x00002000, 2522b8021494Sopenharmony_ci NEON_USHR = NEONShiftImmediateFixed | 0x20000000, 2523b8021494Sopenharmony_ci NEON_URSHR = NEONShiftImmediateFixed | 0x20002000, 2524b8021494Sopenharmony_ci NEON_SSRA = NEONShiftImmediateFixed | 0x00001000, 2525b8021494Sopenharmony_ci NEON_SRSRA = NEONShiftImmediateFixed | 0x00003000, 2526b8021494Sopenharmony_ci NEON_USRA = NEONShiftImmediateFixed | 0x20001000, 2527b8021494Sopenharmony_ci NEON_URSRA = NEONShiftImmediateFixed | 0x20003000, 2528b8021494Sopenharmony_ci NEON_SQSHLU = NEONShiftImmediateFixed | 0x20006000, 2529b8021494Sopenharmony_ci NEON_SCVTF_imm = NEONShiftImmediateFixed | 0x0000E000, 2530b8021494Sopenharmony_ci NEON_UCVTF_imm = NEONShiftImmediateFixed | 0x2000E000, 2531b8021494Sopenharmony_ci NEON_FCVTZS_imm = NEONShiftImmediateFixed | 0x0000F800, 2532b8021494Sopenharmony_ci NEON_FCVTZU_imm = NEONShiftImmediateFixed | 0x2000F800, 2533b8021494Sopenharmony_ci NEON_SQSHL_imm = NEONShiftImmediateFixed | 0x00007000, 2534b8021494Sopenharmony_ci NEON_UQSHL_imm = NEONShiftImmediateFixed | 0x20007000 2535b8021494Sopenharmony_ci}; 2536b8021494Sopenharmony_ci 2537b8021494Sopenharmony_ci// NEON table. 2538b8021494Sopenharmony_cienum NEONTableOp { 2539b8021494Sopenharmony_ci NEONTableFixed = 0x0E000000, 2540b8021494Sopenharmony_ci NEONTableFMask = 0xBF208C00, 2541b8021494Sopenharmony_ci NEONTableExt = 0x00001000, 2542b8021494Sopenharmony_ci NEONTableMask = 0xBF20FC00, 2543b8021494Sopenharmony_ci NEON_TBL_1v = NEONTableFixed | 0x00000000, 2544b8021494Sopenharmony_ci NEON_TBL_2v = NEONTableFixed | 0x00002000, 2545b8021494Sopenharmony_ci NEON_TBL_3v = NEONTableFixed | 0x00004000, 2546b8021494Sopenharmony_ci NEON_TBL_4v = NEONTableFixed | 0x00006000, 2547b8021494Sopenharmony_ci NEON_TBX_1v = NEON_TBL_1v | NEONTableExt, 2548b8021494Sopenharmony_ci NEON_TBX_2v = NEON_TBL_2v | NEONTableExt, 2549b8021494Sopenharmony_ci NEON_TBX_3v = NEON_TBL_3v | NEONTableExt, 2550b8021494Sopenharmony_ci NEON_TBX_4v = NEON_TBL_4v | NEONTableExt 2551b8021494Sopenharmony_ci}; 2552b8021494Sopenharmony_ci 2553b8021494Sopenharmony_ci// NEON perm. 2554b8021494Sopenharmony_cienum NEONPermOp { 2555b8021494Sopenharmony_ci NEONPermFixed = 0x0E000800, 2556b8021494Sopenharmony_ci NEONPermFMask = 0xBF208C00, 2557b8021494Sopenharmony_ci NEONPermMask = 0x3F20FC00, 2558b8021494Sopenharmony_ci NEON_UZP1 = NEONPermFixed | 0x00001000, 2559b8021494Sopenharmony_ci NEON_TRN1 = NEONPermFixed | 0x00002000, 2560b8021494Sopenharmony_ci NEON_ZIP1 = NEONPermFixed | 0x00003000, 2561b8021494Sopenharmony_ci NEON_UZP2 = NEONPermFixed | 0x00005000, 2562b8021494Sopenharmony_ci NEON_TRN2 = NEONPermFixed | 0x00006000, 2563b8021494Sopenharmony_ci NEON_ZIP2 = NEONPermFixed | 0x00007000 2564b8021494Sopenharmony_ci}; 2565b8021494Sopenharmony_ci 2566b8021494Sopenharmony_ci// NEON scalar instructions with two register operands. 2567b8021494Sopenharmony_cienum NEONScalar2RegMiscOp { 2568b8021494Sopenharmony_ci NEONScalar2RegMiscFixed = 0x5E200800, 2569b8021494Sopenharmony_ci NEONScalar2RegMiscFMask = 0xDF3E0C00, 2570b8021494Sopenharmony_ci NEONScalar2RegMiscMask = NEON_Q | NEONScalar | NEON2RegMiscMask, 2571b8021494Sopenharmony_ci NEON_CMGT_zero_scalar = NEON_Q | NEONScalar | NEON_CMGT_zero, 2572b8021494Sopenharmony_ci NEON_CMEQ_zero_scalar = NEON_Q | NEONScalar | NEON_CMEQ_zero, 2573b8021494Sopenharmony_ci NEON_CMLT_zero_scalar = NEON_Q | NEONScalar | NEON_CMLT_zero, 2574b8021494Sopenharmony_ci NEON_CMGE_zero_scalar = NEON_Q | NEONScalar | NEON_CMGE_zero, 2575b8021494Sopenharmony_ci NEON_CMLE_zero_scalar = NEON_Q | NEONScalar | NEON_CMLE_zero, 2576b8021494Sopenharmony_ci NEON_ABS_scalar = NEON_Q | NEONScalar | NEON_ABS, 2577b8021494Sopenharmony_ci NEON_SQABS_scalar = NEON_Q | NEONScalar | NEON_SQABS, 2578b8021494Sopenharmony_ci NEON_NEG_scalar = NEON_Q | NEONScalar | NEON_NEG, 2579b8021494Sopenharmony_ci NEON_SQNEG_scalar = NEON_Q | NEONScalar | NEON_SQNEG, 2580b8021494Sopenharmony_ci NEON_SQXTN_scalar = NEON_Q | NEONScalar | NEON_SQXTN, 2581b8021494Sopenharmony_ci NEON_UQXTN_scalar = NEON_Q | NEONScalar | NEON_UQXTN, 2582b8021494Sopenharmony_ci NEON_SQXTUN_scalar = NEON_Q | NEONScalar | NEON_SQXTUN, 2583b8021494Sopenharmony_ci NEON_SUQADD_scalar = NEON_Q | NEONScalar | NEON_SUQADD, 2584b8021494Sopenharmony_ci NEON_USQADD_scalar = NEON_Q | NEONScalar | NEON_USQADD, 2585b8021494Sopenharmony_ci 2586b8021494Sopenharmony_ci NEONScalar2RegMiscOpcode = NEON2RegMiscOpcode, 2587b8021494Sopenharmony_ci NEON_NEG_scalar_opcode = NEON_NEG_scalar & NEONScalar2RegMiscOpcode, 2588b8021494Sopenharmony_ci 2589b8021494Sopenharmony_ci NEONScalar2RegMiscFPMask = NEONScalar2RegMiscMask | 0x00800000, 2590b8021494Sopenharmony_ci NEON_FRSQRTE_scalar = NEON_Q | NEONScalar | NEON_FRSQRTE, 2591b8021494Sopenharmony_ci NEON_FRECPE_scalar = NEON_Q | NEONScalar | NEON_FRECPE, 2592b8021494Sopenharmony_ci NEON_SCVTF_scalar = NEON_Q | NEONScalar | NEON_SCVTF, 2593b8021494Sopenharmony_ci NEON_UCVTF_scalar = NEON_Q | NEONScalar | NEON_UCVTF, 2594b8021494Sopenharmony_ci NEON_FCMGT_zero_scalar = NEON_Q | NEONScalar | NEON_FCMGT_zero, 2595b8021494Sopenharmony_ci NEON_FCMEQ_zero_scalar = NEON_Q | NEONScalar | NEON_FCMEQ_zero, 2596b8021494Sopenharmony_ci NEON_FCMLT_zero_scalar = NEON_Q | NEONScalar | NEON_FCMLT_zero, 2597b8021494Sopenharmony_ci NEON_FCMGE_zero_scalar = NEON_Q | NEONScalar | NEON_FCMGE_zero, 2598b8021494Sopenharmony_ci NEON_FCMLE_zero_scalar = NEON_Q | NEONScalar | NEON_FCMLE_zero, 2599b8021494Sopenharmony_ci NEON_FRECPX_scalar = NEONScalar2RegMiscFixed | 0x0081F000, 2600b8021494Sopenharmony_ci NEON_FCVTNS_scalar = NEON_Q | NEONScalar | NEON_FCVTNS, 2601b8021494Sopenharmony_ci NEON_FCVTNU_scalar = NEON_Q | NEONScalar | NEON_FCVTNU, 2602b8021494Sopenharmony_ci NEON_FCVTPS_scalar = NEON_Q | NEONScalar | NEON_FCVTPS, 2603b8021494Sopenharmony_ci NEON_FCVTPU_scalar = NEON_Q | NEONScalar | NEON_FCVTPU, 2604b8021494Sopenharmony_ci NEON_FCVTMS_scalar = NEON_Q | NEONScalar | NEON_FCVTMS, 2605b8021494Sopenharmony_ci NEON_FCVTMU_scalar = NEON_Q | NEONScalar | NEON_FCVTMU, 2606b8021494Sopenharmony_ci NEON_FCVTZS_scalar = NEON_Q | NEONScalar | NEON_FCVTZS, 2607b8021494Sopenharmony_ci NEON_FCVTZU_scalar = NEON_Q | NEONScalar | NEON_FCVTZU, 2608b8021494Sopenharmony_ci NEON_FCVTAS_scalar = NEON_Q | NEONScalar | NEON_FCVTAS, 2609b8021494Sopenharmony_ci NEON_FCVTAU_scalar = NEON_Q | NEONScalar | NEON_FCVTAU, 2610b8021494Sopenharmony_ci NEON_FCVTXN_scalar = NEON_Q | NEONScalar | NEON_FCVTXN 2611b8021494Sopenharmony_ci}; 2612b8021494Sopenharmony_ci 2613b8021494Sopenharmony_ci// NEON instructions with two register operands (FP16). 2614b8021494Sopenharmony_cienum NEONScalar2RegMiscFP16Op { 2615b8021494Sopenharmony_ci NEONScalar2RegMiscFP16Fixed = 0x5E780800, 2616b8021494Sopenharmony_ci NEONScalar2RegMiscFP16FMask = 0xDF7E0C00, 2617b8021494Sopenharmony_ci NEONScalar2RegMiscFP16Mask = 0xFFFFFC00, 2618b8021494Sopenharmony_ci NEON_FCVTNS_H_scalar = NEON_Q | NEONScalar | NEON_FCVTNS_H, 2619b8021494Sopenharmony_ci NEON_FCVTMS_H_scalar = NEON_Q | NEONScalar | NEON_FCVTMS_H, 2620b8021494Sopenharmony_ci NEON_FCVTAS_H_scalar = NEON_Q | NEONScalar | NEON_FCVTAS_H, 2621b8021494Sopenharmony_ci NEON_SCVTF_H_scalar = NEON_Q | NEONScalar | NEON_SCVTF_H, 2622b8021494Sopenharmony_ci NEON_FCMGT_H_zero_scalar = NEON_Q | NEONScalar | NEON_FCMGT_H_zero, 2623b8021494Sopenharmony_ci NEON_FCMEQ_H_zero_scalar = NEON_Q | NEONScalar | NEON_FCMEQ_H_zero, 2624b8021494Sopenharmony_ci NEON_FCMLT_H_zero_scalar = NEON_Q | NEONScalar | NEON_FCMLT_H_zero, 2625b8021494Sopenharmony_ci NEON_FCVTPS_H_scalar = NEON_Q | NEONScalar | NEON_FCVTPS_H, 2626b8021494Sopenharmony_ci NEON_FCVTZS_H_scalar = NEON_Q | NEONScalar | NEON_FCVTZS_H, 2627b8021494Sopenharmony_ci NEON_FRECPE_H_scalar = NEON_Q | NEONScalar | NEON_FRECPE_H, 2628b8021494Sopenharmony_ci NEON_FRECPX_H_scalar = NEONScalar2RegMiscFP16Fixed | 0x0081F000, 2629b8021494Sopenharmony_ci NEON_FCVTNU_H_scalar = NEON_Q | NEONScalar | NEON_FCVTNU_H, 2630b8021494Sopenharmony_ci NEON_FCVTMU_H_scalar = NEON_Q | NEONScalar | NEON_FCVTMU_H, 2631b8021494Sopenharmony_ci NEON_FCVTAU_H_scalar = NEON_Q | NEONScalar | NEON_FCVTAU_H, 2632b8021494Sopenharmony_ci NEON_UCVTF_H_scalar = NEON_Q | NEONScalar | NEON_UCVTF_H, 2633b8021494Sopenharmony_ci NEON_FCMGE_H_zero_scalar = NEON_Q | NEONScalar | NEON_FCMGE_H_zero, 2634b8021494Sopenharmony_ci NEON_FCMLE_H_zero_scalar = NEON_Q | NEONScalar | NEON_FCMLE_H_zero, 2635b8021494Sopenharmony_ci NEON_FCVTPU_H_scalar = NEON_Q | NEONScalar | NEON_FCVTPU_H, 2636b8021494Sopenharmony_ci NEON_FCVTZU_H_scalar = NEON_Q | NEONScalar | NEON_FCVTZU_H, 2637b8021494Sopenharmony_ci NEON_FRSQRTE_H_scalar = NEON_Q | NEONScalar | NEON_FRSQRTE_H 2638b8021494Sopenharmony_ci}; 2639b8021494Sopenharmony_ci 2640b8021494Sopenharmony_ci// NEON scalar instructions with three same-type operands. 2641b8021494Sopenharmony_cienum NEONScalar3SameOp { 2642b8021494Sopenharmony_ci NEONScalar3SameFixed = 0x5E200400, 2643b8021494Sopenharmony_ci NEONScalar3SameFMask = 0xDF200400, 2644b8021494Sopenharmony_ci NEONScalar3SameMask = 0xFF20FC00, 2645b8021494Sopenharmony_ci NEON_ADD_scalar = NEON_Q | NEONScalar | NEON_ADD, 2646b8021494Sopenharmony_ci NEON_CMEQ_scalar = NEON_Q | NEONScalar | NEON_CMEQ, 2647b8021494Sopenharmony_ci NEON_CMGE_scalar = NEON_Q | NEONScalar | NEON_CMGE, 2648b8021494Sopenharmony_ci NEON_CMGT_scalar = NEON_Q | NEONScalar | NEON_CMGT, 2649b8021494Sopenharmony_ci NEON_CMHI_scalar = NEON_Q | NEONScalar | NEON_CMHI, 2650b8021494Sopenharmony_ci NEON_CMHS_scalar = NEON_Q | NEONScalar | NEON_CMHS, 2651b8021494Sopenharmony_ci NEON_CMTST_scalar = NEON_Q | NEONScalar | NEON_CMTST, 2652b8021494Sopenharmony_ci NEON_SUB_scalar = NEON_Q | NEONScalar | NEON_SUB, 2653b8021494Sopenharmony_ci NEON_UQADD_scalar = NEON_Q | NEONScalar | NEON_UQADD, 2654b8021494Sopenharmony_ci NEON_SQADD_scalar = NEON_Q | NEONScalar | NEON_SQADD, 2655b8021494Sopenharmony_ci NEON_UQSUB_scalar = NEON_Q | NEONScalar | NEON_UQSUB, 2656b8021494Sopenharmony_ci NEON_SQSUB_scalar = NEON_Q | NEONScalar | NEON_SQSUB, 2657b8021494Sopenharmony_ci NEON_USHL_scalar = NEON_Q | NEONScalar | NEON_USHL, 2658b8021494Sopenharmony_ci NEON_SSHL_scalar = NEON_Q | NEONScalar | NEON_SSHL, 2659b8021494Sopenharmony_ci NEON_UQSHL_scalar = NEON_Q | NEONScalar | NEON_UQSHL, 2660b8021494Sopenharmony_ci NEON_SQSHL_scalar = NEON_Q | NEONScalar | NEON_SQSHL, 2661b8021494Sopenharmony_ci NEON_URSHL_scalar = NEON_Q | NEONScalar | NEON_URSHL, 2662b8021494Sopenharmony_ci NEON_SRSHL_scalar = NEON_Q | NEONScalar | NEON_SRSHL, 2663b8021494Sopenharmony_ci NEON_UQRSHL_scalar = NEON_Q | NEONScalar | NEON_UQRSHL, 2664b8021494Sopenharmony_ci NEON_SQRSHL_scalar = NEON_Q | NEONScalar | NEON_SQRSHL, 2665b8021494Sopenharmony_ci NEON_SQDMULH_scalar = NEON_Q | NEONScalar | NEON_SQDMULH, 2666b8021494Sopenharmony_ci NEON_SQRDMULH_scalar = NEON_Q | NEONScalar | NEON_SQRDMULH, 2667b8021494Sopenharmony_ci 2668b8021494Sopenharmony_ci // NEON floating point scalar instructions with three same-type operands. 2669b8021494Sopenharmony_ci NEONScalar3SameFPFixed = NEONScalar3SameFixed | 0x0000C000, 2670b8021494Sopenharmony_ci NEONScalar3SameFPFMask = NEONScalar3SameFMask | 0x0000C000, 2671b8021494Sopenharmony_ci NEONScalar3SameFPMask = NEONScalar3SameMask | 0x00800000, 2672b8021494Sopenharmony_ci NEON_FACGE_scalar = NEON_Q | NEONScalar | NEON_FACGE, 2673b8021494Sopenharmony_ci NEON_FACGT_scalar = NEON_Q | NEONScalar | NEON_FACGT, 2674b8021494Sopenharmony_ci NEON_FCMEQ_scalar = NEON_Q | NEONScalar | NEON_FCMEQ, 2675b8021494Sopenharmony_ci NEON_FCMGE_scalar = NEON_Q | NEONScalar | NEON_FCMGE, 2676b8021494Sopenharmony_ci NEON_FCMGT_scalar = NEON_Q | NEONScalar | NEON_FCMGT, 2677b8021494Sopenharmony_ci NEON_FMULX_scalar = NEON_Q | NEONScalar | NEON_FMULX, 2678b8021494Sopenharmony_ci NEON_FRECPS_scalar = NEON_Q | NEONScalar | NEON_FRECPS, 2679b8021494Sopenharmony_ci NEON_FRSQRTS_scalar = NEON_Q | NEONScalar | NEON_FRSQRTS, 2680b8021494Sopenharmony_ci NEON_FABD_scalar = NEON_Q | NEONScalar | NEON_FABD 2681b8021494Sopenharmony_ci}; 2682b8021494Sopenharmony_ci 2683b8021494Sopenharmony_ci// NEON scalar FP16 instructions with three same-type operands. 2684b8021494Sopenharmony_cienum NEONScalar3SameFP16Op { 2685b8021494Sopenharmony_ci NEONScalar3SameFP16Fixed = 0x5E400400, 2686b8021494Sopenharmony_ci NEONScalar3SameFP16FMask = 0xDF60C400, 2687b8021494Sopenharmony_ci NEONScalar3SameFP16Mask = 0xFFE0FC00, 2688b8021494Sopenharmony_ci NEON_FABD_H_scalar = NEON_Q | NEONScalar | NEON_FABD_H, 2689b8021494Sopenharmony_ci NEON_FMULX_H_scalar = NEON_Q | NEONScalar | NEON_FMULX_H, 2690b8021494Sopenharmony_ci NEON_FCMEQ_H_scalar = NEON_Q | NEONScalar | NEON_FCMEQ_H, 2691b8021494Sopenharmony_ci NEON_FCMGE_H_scalar = NEON_Q | NEONScalar | NEON_FCMGE_H, 2692b8021494Sopenharmony_ci NEON_FCMGT_H_scalar = NEON_Q | NEONScalar | NEON_FCMGT_H, 2693b8021494Sopenharmony_ci NEON_FACGE_H_scalar = NEON_Q | NEONScalar | NEON_FACGE_H, 2694b8021494Sopenharmony_ci NEON_FACGT_H_scalar = NEON_Q | NEONScalar | NEON_FACGT_H, 2695b8021494Sopenharmony_ci NEON_FRECPS_H_scalar = NEON_Q | NEONScalar | NEON_FRECPS_H, 2696b8021494Sopenharmony_ci NEON_FRSQRTS_H_scalar = NEON_Q | NEONScalar | NEON_FRSQRTS_H 2697b8021494Sopenharmony_ci}; 2698b8021494Sopenharmony_ci 2699b8021494Sopenharmony_ci// 'Extra' NEON scalar instructions with three same-type operands. 2700b8021494Sopenharmony_cienum NEONScalar3SameExtraOp { 2701b8021494Sopenharmony_ci NEONScalar3SameExtraFixed = 0x5E008400, 2702b8021494Sopenharmony_ci NEONScalar3SameExtraFMask = 0xDF208400, 2703b8021494Sopenharmony_ci NEONScalar3SameExtraMask = 0xFF20FC00, 2704b8021494Sopenharmony_ci NEON_SQRDMLAH_scalar = NEON_Q | NEONScalar | NEON_SQRDMLAH, 2705b8021494Sopenharmony_ci NEON_SQRDMLSH_scalar = NEON_Q | NEONScalar | NEON_SQRDMLSH 2706b8021494Sopenharmony_ci}; 2707b8021494Sopenharmony_ci 2708b8021494Sopenharmony_ci// NEON scalar instructions with three different-type operands. 2709b8021494Sopenharmony_cienum NEONScalar3DiffOp { 2710b8021494Sopenharmony_ci NEONScalar3DiffFixed = 0x5E200000, 2711b8021494Sopenharmony_ci NEONScalar3DiffFMask = 0xDF200C00, 2712b8021494Sopenharmony_ci NEONScalar3DiffMask = NEON_Q | NEONScalar | NEON3DifferentMask, 2713b8021494Sopenharmony_ci NEON_SQDMLAL_scalar = NEON_Q | NEONScalar | NEON_SQDMLAL, 2714b8021494Sopenharmony_ci NEON_SQDMLSL_scalar = NEON_Q | NEONScalar | NEON_SQDMLSL, 2715b8021494Sopenharmony_ci NEON_SQDMULL_scalar = NEON_Q | NEONScalar | NEON_SQDMULL 2716b8021494Sopenharmony_ci}; 2717b8021494Sopenharmony_ci 2718b8021494Sopenharmony_ci// NEON scalar instructions with indexed element operand. 2719b8021494Sopenharmony_cienum NEONScalarByIndexedElementOp { 2720b8021494Sopenharmony_ci NEONScalarByIndexedElementFixed = 0x5F000000, 2721b8021494Sopenharmony_ci NEONScalarByIndexedElementFMask = 0xDF000400, 2722b8021494Sopenharmony_ci NEONScalarByIndexedElementMask = 0xFF00F400, 2723b8021494Sopenharmony_ci NEON_SQDMLAL_byelement_scalar = NEON_Q | NEONScalar | NEON_SQDMLAL_byelement, 2724b8021494Sopenharmony_ci NEON_SQDMLSL_byelement_scalar = NEON_Q | NEONScalar | NEON_SQDMLSL_byelement, 2725b8021494Sopenharmony_ci NEON_SQDMULL_byelement_scalar = NEON_Q | NEONScalar | NEON_SQDMULL_byelement, 2726b8021494Sopenharmony_ci NEON_SQDMULH_byelement_scalar = NEON_Q | NEONScalar | NEON_SQDMULH_byelement, 2727b8021494Sopenharmony_ci NEON_SQRDMULH_byelement_scalar 2728b8021494Sopenharmony_ci = NEON_Q | NEONScalar | NEON_SQRDMULH_byelement, 2729b8021494Sopenharmony_ci NEON_SQRDMLAH_byelement_scalar 2730b8021494Sopenharmony_ci = NEON_Q | NEONScalar | NEON_SQRDMLAH_byelement, 2731b8021494Sopenharmony_ci NEON_SQRDMLSH_byelement_scalar 2732b8021494Sopenharmony_ci = NEON_Q | NEONScalar | NEON_SQRDMLSH_byelement, 2733b8021494Sopenharmony_ci NEON_FMLA_H_byelement_scalar = NEON_Q | NEONScalar | NEON_FMLA_H_byelement, 2734b8021494Sopenharmony_ci NEON_FMLS_H_byelement_scalar = NEON_Q | NEONScalar | NEON_FMLS_H_byelement, 2735b8021494Sopenharmony_ci NEON_FMUL_H_byelement_scalar = NEON_Q | NEONScalar | NEON_FMUL_H_byelement, 2736b8021494Sopenharmony_ci NEON_FMULX_H_byelement_scalar = NEON_Q | NEONScalar | NEON_FMULX_H_byelement, 2737b8021494Sopenharmony_ci 2738b8021494Sopenharmony_ci // Floating point instructions. 2739b8021494Sopenharmony_ci NEONScalarByIndexedElementFPFixed 2740b8021494Sopenharmony_ci = NEONScalarByIndexedElementFixed | 0x00800000, 2741b8021494Sopenharmony_ci NEONScalarByIndexedElementFPMask 2742b8021494Sopenharmony_ci = NEONScalarByIndexedElementMask | 0x00800000, 2743b8021494Sopenharmony_ci NEON_FMLA_byelement_scalar = NEON_Q | NEONScalar | NEON_FMLA_byelement, 2744b8021494Sopenharmony_ci NEON_FMLS_byelement_scalar = NEON_Q | NEONScalar | NEON_FMLS_byelement, 2745b8021494Sopenharmony_ci NEON_FMUL_byelement_scalar = NEON_Q | NEONScalar | NEON_FMUL_byelement, 2746b8021494Sopenharmony_ci NEON_FMULX_byelement_scalar = NEON_Q | NEONScalar | NEON_FMULX_byelement 2747b8021494Sopenharmony_ci}; 2748b8021494Sopenharmony_ci 2749b8021494Sopenharmony_ci// NEON scalar register copy. 2750b8021494Sopenharmony_cienum NEONScalarCopyOp { 2751b8021494Sopenharmony_ci NEONScalarCopyFixed = 0x5E000400, 2752b8021494Sopenharmony_ci NEONScalarCopyFMask = 0xDFE08400, 2753b8021494Sopenharmony_ci NEONScalarCopyMask = 0xFFE0FC00, 2754b8021494Sopenharmony_ci NEON_DUP_ELEMENT_scalar = NEON_Q | NEONScalar | NEON_DUP_ELEMENT 2755b8021494Sopenharmony_ci}; 2756b8021494Sopenharmony_ci 2757b8021494Sopenharmony_ci// NEON scalar pairwise instructions. 2758b8021494Sopenharmony_cienum NEONScalarPairwiseOp { 2759b8021494Sopenharmony_ci NEONScalarPairwiseFixed = 0x5E300800, 2760b8021494Sopenharmony_ci NEONScalarPairwiseFMask = 0xDF3E0C00, 2761b8021494Sopenharmony_ci NEONScalarPairwiseMask = 0xFFB1F800, 2762b8021494Sopenharmony_ci NEON_ADDP_scalar = NEONScalarPairwiseFixed | 0x0081B000, 2763b8021494Sopenharmony_ci NEON_FMAXNMP_h_scalar = NEONScalarPairwiseFixed | 0x0000C000, 2764b8021494Sopenharmony_ci NEON_FADDP_h_scalar = NEONScalarPairwiseFixed | 0x0000D000, 2765b8021494Sopenharmony_ci NEON_FMAXP_h_scalar = NEONScalarPairwiseFixed | 0x0000F000, 2766b8021494Sopenharmony_ci NEON_FMINNMP_h_scalar = NEONScalarPairwiseFixed | 0x0080C000, 2767b8021494Sopenharmony_ci NEON_FMINP_h_scalar = NEONScalarPairwiseFixed | 0x0080F000, 2768b8021494Sopenharmony_ci NEON_FMAXNMP_scalar = NEONScalarPairwiseFixed | 0x2000C000, 2769b8021494Sopenharmony_ci NEON_FMINNMP_scalar = NEONScalarPairwiseFixed | 0x2080C000, 2770b8021494Sopenharmony_ci NEON_FADDP_scalar = NEONScalarPairwiseFixed | 0x2000D000, 2771b8021494Sopenharmony_ci NEON_FMAXP_scalar = NEONScalarPairwiseFixed | 0x2000F000, 2772b8021494Sopenharmony_ci NEON_FMINP_scalar = NEONScalarPairwiseFixed | 0x2080F000 2773b8021494Sopenharmony_ci}; 2774b8021494Sopenharmony_ci 2775b8021494Sopenharmony_ci// NEON scalar shift immediate. 2776b8021494Sopenharmony_cienum NEONScalarShiftImmediateOp { 2777b8021494Sopenharmony_ci NEONScalarShiftImmediateFixed = 0x5F000400, 2778b8021494Sopenharmony_ci NEONScalarShiftImmediateFMask = 0xDF800400, 2779b8021494Sopenharmony_ci NEONScalarShiftImmediateMask = 0xFF80FC00, 2780b8021494Sopenharmony_ci NEON_SHL_scalar = NEON_Q | NEONScalar | NEON_SHL, 2781b8021494Sopenharmony_ci NEON_SLI_scalar = NEON_Q | NEONScalar | NEON_SLI, 2782b8021494Sopenharmony_ci NEON_SRI_scalar = NEON_Q | NEONScalar | NEON_SRI, 2783b8021494Sopenharmony_ci NEON_SSHR_scalar = NEON_Q | NEONScalar | NEON_SSHR, 2784b8021494Sopenharmony_ci NEON_USHR_scalar = NEON_Q | NEONScalar | NEON_USHR, 2785b8021494Sopenharmony_ci NEON_SRSHR_scalar = NEON_Q | NEONScalar | NEON_SRSHR, 2786b8021494Sopenharmony_ci NEON_URSHR_scalar = NEON_Q | NEONScalar | NEON_URSHR, 2787b8021494Sopenharmony_ci NEON_SSRA_scalar = NEON_Q | NEONScalar | NEON_SSRA, 2788b8021494Sopenharmony_ci NEON_USRA_scalar = NEON_Q | NEONScalar | NEON_USRA, 2789b8021494Sopenharmony_ci NEON_SRSRA_scalar = NEON_Q | NEONScalar | NEON_SRSRA, 2790b8021494Sopenharmony_ci NEON_URSRA_scalar = NEON_Q | NEONScalar | NEON_URSRA, 2791b8021494Sopenharmony_ci NEON_UQSHRN_scalar = NEON_Q | NEONScalar | NEON_UQSHRN, 2792b8021494Sopenharmony_ci NEON_UQRSHRN_scalar = NEON_Q | NEONScalar | NEON_UQRSHRN, 2793b8021494Sopenharmony_ci NEON_SQSHRN_scalar = NEON_Q | NEONScalar | NEON_SQSHRN, 2794b8021494Sopenharmony_ci NEON_SQRSHRN_scalar = NEON_Q | NEONScalar | NEON_SQRSHRN, 2795b8021494Sopenharmony_ci NEON_SQSHRUN_scalar = NEON_Q | NEONScalar | NEON_SQSHRUN, 2796b8021494Sopenharmony_ci NEON_SQRSHRUN_scalar = NEON_Q | NEONScalar | NEON_SQRSHRUN, 2797b8021494Sopenharmony_ci NEON_SQSHLU_scalar = NEON_Q | NEONScalar | NEON_SQSHLU, 2798b8021494Sopenharmony_ci NEON_SQSHL_imm_scalar = NEON_Q | NEONScalar | NEON_SQSHL_imm, 2799b8021494Sopenharmony_ci NEON_UQSHL_imm_scalar = NEON_Q | NEONScalar | NEON_UQSHL_imm, 2800b8021494Sopenharmony_ci NEON_SCVTF_imm_scalar = NEON_Q | NEONScalar | NEON_SCVTF_imm, 2801b8021494Sopenharmony_ci NEON_UCVTF_imm_scalar = NEON_Q | NEONScalar | NEON_UCVTF_imm, 2802b8021494Sopenharmony_ci NEON_FCVTZS_imm_scalar = NEON_Q | NEONScalar | NEON_FCVTZS_imm, 2803b8021494Sopenharmony_ci NEON_FCVTZU_imm_scalar = NEON_Q | NEONScalar | NEON_FCVTZU_imm 2804b8021494Sopenharmony_ci}; 2805b8021494Sopenharmony_ci 2806b8021494Sopenharmony_cienum SVE32BitGatherLoadHalfwords_ScalarPlus32BitScaledOffsetsOp { 2807b8021494Sopenharmony_ci SVE32BitGatherLoadHalfwords_ScalarPlus32BitScaledOffsetsFixed = 0x84A00000, 2808b8021494Sopenharmony_ci SVE32BitGatherLoadHalfwords_ScalarPlus32BitScaledOffsetsFMask = 0xFFA08000, 2809b8021494Sopenharmony_ci SVE32BitGatherLoadHalfwords_ScalarPlus32BitScaledOffsetsMask = 0xFFA0E000, 2810b8021494Sopenharmony_ci LD1SH_z_p_bz_s_x32_scaled = SVE32BitGatherLoadHalfwords_ScalarPlus32BitScaledOffsetsFixed, 2811b8021494Sopenharmony_ci LDFF1SH_z_p_bz_s_x32_scaled = SVE32BitGatherLoadHalfwords_ScalarPlus32BitScaledOffsetsFixed | 0x00002000, 2812b8021494Sopenharmony_ci LD1H_z_p_bz_s_x32_scaled = SVE32BitGatherLoadHalfwords_ScalarPlus32BitScaledOffsetsFixed | 0x00004000, 2813b8021494Sopenharmony_ci LDFF1H_z_p_bz_s_x32_scaled = SVE32BitGatherLoadHalfwords_ScalarPlus32BitScaledOffsetsFixed | 0x00006000 2814b8021494Sopenharmony_ci}; 2815b8021494Sopenharmony_ci 2816b8021494Sopenharmony_cienum SVE32BitGatherLoadWords_ScalarPlus32BitScaledOffsetsOp { 2817b8021494Sopenharmony_ci SVE32BitGatherLoadWords_ScalarPlus32BitScaledOffsetsFixed = 0x85200000, 2818b8021494Sopenharmony_ci SVE32BitGatherLoadWords_ScalarPlus32BitScaledOffsetsFMask = 0xFFA08000, 2819b8021494Sopenharmony_ci SVE32BitGatherLoadWords_ScalarPlus32BitScaledOffsetsMask = 0xFFA0E000, 2820b8021494Sopenharmony_ci LD1W_z_p_bz_s_x32_scaled = SVE32BitGatherLoadWords_ScalarPlus32BitScaledOffsetsFixed | 0x00004000, 2821b8021494Sopenharmony_ci LDFF1W_z_p_bz_s_x32_scaled = SVE32BitGatherLoadWords_ScalarPlus32BitScaledOffsetsFixed | 0x00006000 2822b8021494Sopenharmony_ci}; 2823b8021494Sopenharmony_ci 2824b8021494Sopenharmony_cienum SVE32BitGatherLoad_ScalarPlus32BitUnscaledOffsetsOp { 2825b8021494Sopenharmony_ci SVE32BitGatherLoad_ScalarPlus32BitUnscaledOffsetsFixed = 0x84000000, 2826b8021494Sopenharmony_ci SVE32BitGatherLoad_ScalarPlus32BitUnscaledOffsetsFMask = 0xFE208000, 2827b8021494Sopenharmony_ci SVE32BitGatherLoad_ScalarPlus32BitUnscaledOffsetsMask = 0xFFA0E000, 2828b8021494Sopenharmony_ci LD1SB_z_p_bz_s_x32_unscaled = SVE32BitGatherLoad_ScalarPlus32BitUnscaledOffsetsFixed, 2829b8021494Sopenharmony_ci LDFF1SB_z_p_bz_s_x32_unscaled = SVE32BitGatherLoad_ScalarPlus32BitUnscaledOffsetsFixed | 0x00002000, 2830b8021494Sopenharmony_ci LD1B_z_p_bz_s_x32_unscaled = SVE32BitGatherLoad_ScalarPlus32BitUnscaledOffsetsFixed | 0x00004000, 2831b8021494Sopenharmony_ci LDFF1B_z_p_bz_s_x32_unscaled = SVE32BitGatherLoad_ScalarPlus32BitUnscaledOffsetsFixed | 0x00006000, 2832b8021494Sopenharmony_ci LD1SH_z_p_bz_s_x32_unscaled = SVE32BitGatherLoad_ScalarPlus32BitUnscaledOffsetsFixed | 0x00800000, 2833b8021494Sopenharmony_ci LDFF1SH_z_p_bz_s_x32_unscaled = SVE32BitGatherLoad_ScalarPlus32BitUnscaledOffsetsFixed | 0x00802000, 2834b8021494Sopenharmony_ci LD1H_z_p_bz_s_x32_unscaled = SVE32BitGatherLoad_ScalarPlus32BitUnscaledOffsetsFixed | 0x00804000, 2835b8021494Sopenharmony_ci LDFF1H_z_p_bz_s_x32_unscaled = SVE32BitGatherLoad_ScalarPlus32BitUnscaledOffsetsFixed | 0x00806000, 2836b8021494Sopenharmony_ci LD1W_z_p_bz_s_x32_unscaled = SVE32BitGatherLoad_ScalarPlus32BitUnscaledOffsetsFixed | 0x01004000, 2837b8021494Sopenharmony_ci LDFF1W_z_p_bz_s_x32_unscaled = SVE32BitGatherLoad_ScalarPlus32BitUnscaledOffsetsFixed | 0x01006000 2838b8021494Sopenharmony_ci}; 2839b8021494Sopenharmony_ci 2840b8021494Sopenharmony_cienum SVE32BitGatherLoad_VectorPlusImmOp { 2841b8021494Sopenharmony_ci SVE32BitGatherLoad_VectorPlusImmFixed = 0x84208000, 2842b8021494Sopenharmony_ci SVE32BitGatherLoad_VectorPlusImmFMask = 0xFE608000, 2843b8021494Sopenharmony_ci SVE32BitGatherLoad_VectorPlusImmMask = 0xFFE0E000, 2844b8021494Sopenharmony_ci LD1SB_z_p_ai_s = SVE32BitGatherLoad_VectorPlusImmFixed, 2845b8021494Sopenharmony_ci LDFF1SB_z_p_ai_s = SVE32BitGatherLoad_VectorPlusImmFixed | 0x00002000, 2846b8021494Sopenharmony_ci LD1B_z_p_ai_s = SVE32BitGatherLoad_VectorPlusImmFixed | 0x00004000, 2847b8021494Sopenharmony_ci LDFF1B_z_p_ai_s = SVE32BitGatherLoad_VectorPlusImmFixed | 0x00006000, 2848b8021494Sopenharmony_ci LD1SH_z_p_ai_s = SVE32BitGatherLoad_VectorPlusImmFixed | 0x00800000, 2849b8021494Sopenharmony_ci LDFF1SH_z_p_ai_s = SVE32BitGatherLoad_VectorPlusImmFixed | 0x00802000, 2850b8021494Sopenharmony_ci LD1H_z_p_ai_s = SVE32BitGatherLoad_VectorPlusImmFixed | 0x00804000, 2851b8021494Sopenharmony_ci LDFF1H_z_p_ai_s = SVE32BitGatherLoad_VectorPlusImmFixed | 0x00806000, 2852b8021494Sopenharmony_ci LD1W_z_p_ai_s = SVE32BitGatherLoad_VectorPlusImmFixed | 0x01004000, 2853b8021494Sopenharmony_ci LDFF1W_z_p_ai_s = SVE32BitGatherLoad_VectorPlusImmFixed | 0x01006000 2854b8021494Sopenharmony_ci}; 2855b8021494Sopenharmony_ci 2856b8021494Sopenharmony_cienum SVE32BitGatherPrefetch_ScalarPlus32BitScaledOffsetsOp { 2857b8021494Sopenharmony_ci SVE32BitGatherPrefetch_ScalarPlus32BitScaledOffsetsFixed = 0x84200000, 2858b8021494Sopenharmony_ci SVE32BitGatherPrefetch_ScalarPlus32BitScaledOffsetsFMask = 0xFFA08010, 2859b8021494Sopenharmony_ci SVE32BitGatherPrefetch_ScalarPlus32BitScaledOffsetsMask = 0xFFA0E010, 2860b8021494Sopenharmony_ci PRFB_i_p_bz_s_x32_scaled = SVE32BitGatherPrefetch_ScalarPlus32BitScaledOffsetsFixed, 2861b8021494Sopenharmony_ci PRFH_i_p_bz_s_x32_scaled = SVE32BitGatherPrefetch_ScalarPlus32BitScaledOffsetsFixed | 0x00002000, 2862b8021494Sopenharmony_ci PRFW_i_p_bz_s_x32_scaled = SVE32BitGatherPrefetch_ScalarPlus32BitScaledOffsetsFixed | 0x00004000, 2863b8021494Sopenharmony_ci PRFD_i_p_bz_s_x32_scaled = SVE32BitGatherPrefetch_ScalarPlus32BitScaledOffsetsFixed | 0x00006000 2864b8021494Sopenharmony_ci}; 2865b8021494Sopenharmony_ci 2866b8021494Sopenharmony_cienum SVE32BitGatherPrefetch_VectorPlusImmOp { 2867b8021494Sopenharmony_ci SVE32BitGatherPrefetch_VectorPlusImmFixed = 0x8400E000, 2868b8021494Sopenharmony_ci SVE32BitGatherPrefetch_VectorPlusImmFMask = 0xFE60E010, 2869b8021494Sopenharmony_ci SVE32BitGatherPrefetch_VectorPlusImmMask = 0xFFE0E010, 2870b8021494Sopenharmony_ci PRFB_i_p_ai_s = SVE32BitGatherPrefetch_VectorPlusImmFixed, 2871b8021494Sopenharmony_ci PRFH_i_p_ai_s = SVE32BitGatherPrefetch_VectorPlusImmFixed | 0x00800000, 2872b8021494Sopenharmony_ci PRFW_i_p_ai_s = SVE32BitGatherPrefetch_VectorPlusImmFixed | 0x01000000, 2873b8021494Sopenharmony_ci PRFD_i_p_ai_s = SVE32BitGatherPrefetch_VectorPlusImmFixed | 0x01800000 2874b8021494Sopenharmony_ci}; 2875b8021494Sopenharmony_ci 2876b8021494Sopenharmony_cienum SVE32BitScatterStore_ScalarPlus32BitScaledOffsetsOp { 2877b8021494Sopenharmony_ci SVE32BitScatterStore_ScalarPlus32BitScaledOffsetsFixed = 0xE4608000, 2878b8021494Sopenharmony_ci SVE32BitScatterStore_ScalarPlus32BitScaledOffsetsFMask = 0xFE60A000, 2879b8021494Sopenharmony_ci SVE32BitScatterStore_ScalarPlus32BitScaledOffsetsMask = 0xFFE0A000, 2880b8021494Sopenharmony_ci ST1H_z_p_bz_s_x32_scaled = SVE32BitScatterStore_ScalarPlus32BitScaledOffsetsFixed | 0x00800000, 2881b8021494Sopenharmony_ci ST1W_z_p_bz_s_x32_scaled = SVE32BitScatterStore_ScalarPlus32BitScaledOffsetsFixed | 0x01000000 2882b8021494Sopenharmony_ci}; 2883b8021494Sopenharmony_ci 2884b8021494Sopenharmony_cienum SVE32BitScatterStore_ScalarPlus32BitUnscaledOffsetsOp { 2885b8021494Sopenharmony_ci SVE32BitScatterStore_ScalarPlus32BitUnscaledOffsetsFixed = 0xE4408000, 2886b8021494Sopenharmony_ci SVE32BitScatterStore_ScalarPlus32BitUnscaledOffsetsFMask = 0xFE60A000, 2887b8021494Sopenharmony_ci SVE32BitScatterStore_ScalarPlus32BitUnscaledOffsetsMask = 0xFFE0A000, 2888b8021494Sopenharmony_ci ST1B_z_p_bz_s_x32_unscaled = SVE32BitScatterStore_ScalarPlus32BitUnscaledOffsetsFixed, 2889b8021494Sopenharmony_ci ST1H_z_p_bz_s_x32_unscaled = SVE32BitScatterStore_ScalarPlus32BitUnscaledOffsetsFixed | 0x00800000, 2890b8021494Sopenharmony_ci ST1W_z_p_bz_s_x32_unscaled = SVE32BitScatterStore_ScalarPlus32BitUnscaledOffsetsFixed | 0x01000000 2891b8021494Sopenharmony_ci}; 2892b8021494Sopenharmony_ci 2893b8021494Sopenharmony_cienum SVE32BitScatterStore_VectorPlusImmOp { 2894b8021494Sopenharmony_ci SVE32BitScatterStore_VectorPlusImmFixed = 0xE460A000, 2895b8021494Sopenharmony_ci SVE32BitScatterStore_VectorPlusImmFMask = 0xFE60E000, 2896b8021494Sopenharmony_ci SVE32BitScatterStore_VectorPlusImmMask = 0xFFE0E000, 2897b8021494Sopenharmony_ci ST1B_z_p_ai_s = SVE32BitScatterStore_VectorPlusImmFixed, 2898b8021494Sopenharmony_ci ST1H_z_p_ai_s = SVE32BitScatterStore_VectorPlusImmFixed | 0x00800000, 2899b8021494Sopenharmony_ci ST1W_z_p_ai_s = SVE32BitScatterStore_VectorPlusImmFixed | 0x01000000 2900b8021494Sopenharmony_ci}; 2901b8021494Sopenharmony_ci 2902b8021494Sopenharmony_cienum SVE64BitGatherLoad_ScalarPlus32BitUnpackedScaledOffsetsOp { 2903b8021494Sopenharmony_ci SVE64BitGatherLoad_ScalarPlus32BitUnpackedScaledOffsetsFixed = 0xC4200000, 2904b8021494Sopenharmony_ci SVE64BitGatherLoad_ScalarPlus32BitUnpackedScaledOffsetsFMask = 0xFE208000, 2905b8021494Sopenharmony_ci SVE64BitGatherLoad_ScalarPlus32BitUnpackedScaledOffsetsMask = 0xFFA0E000, 2906b8021494Sopenharmony_ci LD1SH_z_p_bz_d_x32_scaled = SVE64BitGatherLoad_ScalarPlus32BitUnpackedScaledOffsetsFixed | 0x00800000, 2907b8021494Sopenharmony_ci LDFF1SH_z_p_bz_d_x32_scaled = SVE64BitGatherLoad_ScalarPlus32BitUnpackedScaledOffsetsFixed | 0x00802000, 2908b8021494Sopenharmony_ci LD1H_z_p_bz_d_x32_scaled = SVE64BitGatherLoad_ScalarPlus32BitUnpackedScaledOffsetsFixed | 0x00804000, 2909b8021494Sopenharmony_ci LDFF1H_z_p_bz_d_x32_scaled = SVE64BitGatherLoad_ScalarPlus32BitUnpackedScaledOffsetsFixed | 0x00806000, 2910b8021494Sopenharmony_ci LD1SW_z_p_bz_d_x32_scaled = SVE64BitGatherLoad_ScalarPlus32BitUnpackedScaledOffsetsFixed | 0x01000000, 2911b8021494Sopenharmony_ci LDFF1SW_z_p_bz_d_x32_scaled = SVE64BitGatherLoad_ScalarPlus32BitUnpackedScaledOffsetsFixed | 0x01002000, 2912b8021494Sopenharmony_ci LD1W_z_p_bz_d_x32_scaled = SVE64BitGatherLoad_ScalarPlus32BitUnpackedScaledOffsetsFixed | 0x01004000, 2913b8021494Sopenharmony_ci LDFF1W_z_p_bz_d_x32_scaled = SVE64BitGatherLoad_ScalarPlus32BitUnpackedScaledOffsetsFixed | 0x01006000, 2914b8021494Sopenharmony_ci LD1D_z_p_bz_d_x32_scaled = SVE64BitGatherLoad_ScalarPlus32BitUnpackedScaledOffsetsFixed | 0x01804000, 2915b8021494Sopenharmony_ci LDFF1D_z_p_bz_d_x32_scaled = SVE64BitGatherLoad_ScalarPlus32BitUnpackedScaledOffsetsFixed | 0x01806000 2916b8021494Sopenharmony_ci}; 2917b8021494Sopenharmony_ci 2918b8021494Sopenharmony_cienum SVE64BitGatherLoad_ScalarPlus64BitScaledOffsetsOp { 2919b8021494Sopenharmony_ci SVE64BitGatherLoad_ScalarPlus64BitScaledOffsetsFixed = 0xC4608000, 2920b8021494Sopenharmony_ci SVE64BitGatherLoad_ScalarPlus64BitScaledOffsetsFMask = 0xFE608000, 2921b8021494Sopenharmony_ci SVE64BitGatherLoad_ScalarPlus64BitScaledOffsetsMask = 0xFFE0E000, 2922b8021494Sopenharmony_ci LD1SH_z_p_bz_d_64_scaled = SVE64BitGatherLoad_ScalarPlus64BitScaledOffsetsFixed | 0x00800000, 2923b8021494Sopenharmony_ci LDFF1SH_z_p_bz_d_64_scaled = SVE64BitGatherLoad_ScalarPlus64BitScaledOffsetsFixed | 0x00802000, 2924b8021494Sopenharmony_ci LD1H_z_p_bz_d_64_scaled = SVE64BitGatherLoad_ScalarPlus64BitScaledOffsetsFixed | 0x00804000, 2925b8021494Sopenharmony_ci LDFF1H_z_p_bz_d_64_scaled = SVE64BitGatherLoad_ScalarPlus64BitScaledOffsetsFixed | 0x00806000, 2926b8021494Sopenharmony_ci LD1SW_z_p_bz_d_64_scaled = SVE64BitGatherLoad_ScalarPlus64BitScaledOffsetsFixed | 0x01000000, 2927b8021494Sopenharmony_ci LDFF1SW_z_p_bz_d_64_scaled = SVE64BitGatherLoad_ScalarPlus64BitScaledOffsetsFixed | 0x01002000, 2928b8021494Sopenharmony_ci LD1W_z_p_bz_d_64_scaled = SVE64BitGatherLoad_ScalarPlus64BitScaledOffsetsFixed | 0x01004000, 2929b8021494Sopenharmony_ci LDFF1W_z_p_bz_d_64_scaled = SVE64BitGatherLoad_ScalarPlus64BitScaledOffsetsFixed | 0x01006000, 2930b8021494Sopenharmony_ci LD1D_z_p_bz_d_64_scaled = SVE64BitGatherLoad_ScalarPlus64BitScaledOffsetsFixed | 0x01804000, 2931b8021494Sopenharmony_ci LDFF1D_z_p_bz_d_64_scaled = SVE64BitGatherLoad_ScalarPlus64BitScaledOffsetsFixed | 0x01806000 2932b8021494Sopenharmony_ci}; 2933b8021494Sopenharmony_ci 2934b8021494Sopenharmony_cienum SVE64BitGatherLoad_ScalarPlus64BitUnscaledOffsetsOp { 2935b8021494Sopenharmony_ci SVE64BitGatherLoad_ScalarPlus64BitUnscaledOffsetsFixed = 0xC4408000, 2936b8021494Sopenharmony_ci SVE64BitGatherLoad_ScalarPlus64BitUnscaledOffsetsFMask = 0xFE608000, 2937b8021494Sopenharmony_ci SVE64BitGatherLoad_ScalarPlus64BitUnscaledOffsetsMask = 0xFFE0E000, 2938b8021494Sopenharmony_ci LD1SB_z_p_bz_d_64_unscaled = SVE64BitGatherLoad_ScalarPlus64BitUnscaledOffsetsFixed, 2939b8021494Sopenharmony_ci LDFF1SB_z_p_bz_d_64_unscaled = SVE64BitGatherLoad_ScalarPlus64BitUnscaledOffsetsFixed | 0x00002000, 2940b8021494Sopenharmony_ci LD1B_z_p_bz_d_64_unscaled = SVE64BitGatherLoad_ScalarPlus64BitUnscaledOffsetsFixed | 0x00004000, 2941b8021494Sopenharmony_ci LDFF1B_z_p_bz_d_64_unscaled = SVE64BitGatherLoad_ScalarPlus64BitUnscaledOffsetsFixed | 0x00006000, 2942b8021494Sopenharmony_ci LD1SH_z_p_bz_d_64_unscaled = SVE64BitGatherLoad_ScalarPlus64BitUnscaledOffsetsFixed | 0x00800000, 2943b8021494Sopenharmony_ci LDFF1SH_z_p_bz_d_64_unscaled = SVE64BitGatherLoad_ScalarPlus64BitUnscaledOffsetsFixed | 0x00802000, 2944b8021494Sopenharmony_ci LD1H_z_p_bz_d_64_unscaled = SVE64BitGatherLoad_ScalarPlus64BitUnscaledOffsetsFixed | 0x00804000, 2945b8021494Sopenharmony_ci LDFF1H_z_p_bz_d_64_unscaled = SVE64BitGatherLoad_ScalarPlus64BitUnscaledOffsetsFixed | 0x00806000, 2946b8021494Sopenharmony_ci LD1SW_z_p_bz_d_64_unscaled = SVE64BitGatherLoad_ScalarPlus64BitUnscaledOffsetsFixed | 0x01000000, 2947b8021494Sopenharmony_ci LDFF1SW_z_p_bz_d_64_unscaled = SVE64BitGatherLoad_ScalarPlus64BitUnscaledOffsetsFixed | 0x01002000, 2948b8021494Sopenharmony_ci LD1W_z_p_bz_d_64_unscaled = SVE64BitGatherLoad_ScalarPlus64BitUnscaledOffsetsFixed | 0x01004000, 2949b8021494Sopenharmony_ci LDFF1W_z_p_bz_d_64_unscaled = SVE64BitGatherLoad_ScalarPlus64BitUnscaledOffsetsFixed | 0x01006000, 2950b8021494Sopenharmony_ci LD1D_z_p_bz_d_64_unscaled = SVE64BitGatherLoad_ScalarPlus64BitUnscaledOffsetsFixed | 0x01804000, 2951b8021494Sopenharmony_ci LDFF1D_z_p_bz_d_64_unscaled = SVE64BitGatherLoad_ScalarPlus64BitUnscaledOffsetsFixed | 0x01806000 2952b8021494Sopenharmony_ci}; 2953b8021494Sopenharmony_ci 2954b8021494Sopenharmony_cienum SVE64BitGatherLoad_ScalarPlusUnpacked32BitUnscaledOffsetsOp { 2955b8021494Sopenharmony_ci SVE64BitGatherLoad_ScalarPlusUnpacked32BitUnscaledOffsetsFixed = 0xC4000000, 2956b8021494Sopenharmony_ci SVE64BitGatherLoad_ScalarPlusUnpacked32BitUnscaledOffsetsFMask = 0xFE208000, 2957b8021494Sopenharmony_ci SVE64BitGatherLoad_ScalarPlusUnpacked32BitUnscaledOffsetsMask = 0xFFA0E000, 2958b8021494Sopenharmony_ci LD1SB_z_p_bz_d_x32_unscaled = SVE64BitGatherLoad_ScalarPlusUnpacked32BitUnscaledOffsetsFixed, 2959b8021494Sopenharmony_ci LDFF1SB_z_p_bz_d_x32_unscaled = SVE64BitGatherLoad_ScalarPlusUnpacked32BitUnscaledOffsetsFixed | 0x00002000, 2960b8021494Sopenharmony_ci LD1B_z_p_bz_d_x32_unscaled = SVE64BitGatherLoad_ScalarPlusUnpacked32BitUnscaledOffsetsFixed | 0x00004000, 2961b8021494Sopenharmony_ci LDFF1B_z_p_bz_d_x32_unscaled = SVE64BitGatherLoad_ScalarPlusUnpacked32BitUnscaledOffsetsFixed | 0x00006000, 2962b8021494Sopenharmony_ci LD1SH_z_p_bz_d_x32_unscaled = SVE64BitGatherLoad_ScalarPlusUnpacked32BitUnscaledOffsetsFixed | 0x00800000, 2963b8021494Sopenharmony_ci LDFF1SH_z_p_bz_d_x32_unscaled = SVE64BitGatherLoad_ScalarPlusUnpacked32BitUnscaledOffsetsFixed | 0x00802000, 2964b8021494Sopenharmony_ci LD1H_z_p_bz_d_x32_unscaled = SVE64BitGatherLoad_ScalarPlusUnpacked32BitUnscaledOffsetsFixed | 0x00804000, 2965b8021494Sopenharmony_ci LDFF1H_z_p_bz_d_x32_unscaled = SVE64BitGatherLoad_ScalarPlusUnpacked32BitUnscaledOffsetsFixed | 0x00806000, 2966b8021494Sopenharmony_ci LD1SW_z_p_bz_d_x32_unscaled = SVE64BitGatherLoad_ScalarPlusUnpacked32BitUnscaledOffsetsFixed | 0x01000000, 2967b8021494Sopenharmony_ci LDFF1SW_z_p_bz_d_x32_unscaled = SVE64BitGatherLoad_ScalarPlusUnpacked32BitUnscaledOffsetsFixed | 0x01002000, 2968b8021494Sopenharmony_ci LD1W_z_p_bz_d_x32_unscaled = SVE64BitGatherLoad_ScalarPlusUnpacked32BitUnscaledOffsetsFixed | 0x01004000, 2969b8021494Sopenharmony_ci LDFF1W_z_p_bz_d_x32_unscaled = SVE64BitGatherLoad_ScalarPlusUnpacked32BitUnscaledOffsetsFixed | 0x01006000, 2970b8021494Sopenharmony_ci LD1D_z_p_bz_d_x32_unscaled = SVE64BitGatherLoad_ScalarPlusUnpacked32BitUnscaledOffsetsFixed | 0x01804000, 2971b8021494Sopenharmony_ci LDFF1D_z_p_bz_d_x32_unscaled = SVE64BitGatherLoad_ScalarPlusUnpacked32BitUnscaledOffsetsFixed | 0x01806000 2972b8021494Sopenharmony_ci}; 2973b8021494Sopenharmony_ci 2974b8021494Sopenharmony_cienum SVE64BitGatherLoad_VectorPlusImmOp { 2975b8021494Sopenharmony_ci SVE64BitGatherLoad_VectorPlusImmFixed = 0xC4208000, 2976b8021494Sopenharmony_ci SVE64BitGatherLoad_VectorPlusImmFMask = 0xFE608000, 2977b8021494Sopenharmony_ci SVE64BitGatherLoad_VectorPlusImmMask = 0xFFE0E000, 2978b8021494Sopenharmony_ci LD1SB_z_p_ai_d = SVE64BitGatherLoad_VectorPlusImmFixed, 2979b8021494Sopenharmony_ci LDFF1SB_z_p_ai_d = SVE64BitGatherLoad_VectorPlusImmFixed | 0x00002000, 2980b8021494Sopenharmony_ci LD1B_z_p_ai_d = SVE64BitGatherLoad_VectorPlusImmFixed | 0x00004000, 2981b8021494Sopenharmony_ci LDFF1B_z_p_ai_d = SVE64BitGatherLoad_VectorPlusImmFixed | 0x00006000, 2982b8021494Sopenharmony_ci LD1SH_z_p_ai_d = SVE64BitGatherLoad_VectorPlusImmFixed | 0x00800000, 2983b8021494Sopenharmony_ci LDFF1SH_z_p_ai_d = SVE64BitGatherLoad_VectorPlusImmFixed | 0x00802000, 2984b8021494Sopenharmony_ci LD1H_z_p_ai_d = SVE64BitGatherLoad_VectorPlusImmFixed | 0x00804000, 2985b8021494Sopenharmony_ci LDFF1H_z_p_ai_d = SVE64BitGatherLoad_VectorPlusImmFixed | 0x00806000, 2986b8021494Sopenharmony_ci LD1SW_z_p_ai_d = SVE64BitGatherLoad_VectorPlusImmFixed | 0x01000000, 2987b8021494Sopenharmony_ci LDFF1SW_z_p_ai_d = SVE64BitGatherLoad_VectorPlusImmFixed | 0x01002000, 2988b8021494Sopenharmony_ci LD1W_z_p_ai_d = SVE64BitGatherLoad_VectorPlusImmFixed | 0x01004000, 2989b8021494Sopenharmony_ci LDFF1W_z_p_ai_d = SVE64BitGatherLoad_VectorPlusImmFixed | 0x01006000, 2990b8021494Sopenharmony_ci LD1D_z_p_ai_d = SVE64BitGatherLoad_VectorPlusImmFixed | 0x01804000, 2991b8021494Sopenharmony_ci LDFF1D_z_p_ai_d = SVE64BitGatherLoad_VectorPlusImmFixed | 0x01806000 2992b8021494Sopenharmony_ci}; 2993b8021494Sopenharmony_ci 2994b8021494Sopenharmony_cienum SVE64BitGatherPrefetch_ScalarPlus64BitScaledOffsetsOp { 2995b8021494Sopenharmony_ci SVE64BitGatherPrefetch_ScalarPlus64BitScaledOffsetsFixed = 0xC4608000, 2996b8021494Sopenharmony_ci SVE64BitGatherPrefetch_ScalarPlus64BitScaledOffsetsFMask = 0xFFE08010, 2997b8021494Sopenharmony_ci SVE64BitGatherPrefetch_ScalarPlus64BitScaledOffsetsMask = 0xFFE0E010, 2998b8021494Sopenharmony_ci PRFB_i_p_bz_d_64_scaled = SVE64BitGatherPrefetch_ScalarPlus64BitScaledOffsetsFixed, 2999b8021494Sopenharmony_ci PRFH_i_p_bz_d_64_scaled = SVE64BitGatherPrefetch_ScalarPlus64BitScaledOffsetsFixed | 0x00002000, 3000b8021494Sopenharmony_ci PRFW_i_p_bz_d_64_scaled = SVE64BitGatherPrefetch_ScalarPlus64BitScaledOffsetsFixed | 0x00004000, 3001b8021494Sopenharmony_ci PRFD_i_p_bz_d_64_scaled = SVE64BitGatherPrefetch_ScalarPlus64BitScaledOffsetsFixed | 0x00006000 3002b8021494Sopenharmony_ci}; 3003b8021494Sopenharmony_ci 3004b8021494Sopenharmony_cienum SVE64BitGatherPrefetch_ScalarPlusUnpacked32BitScaledOffsetsOp { 3005b8021494Sopenharmony_ci SVE64BitGatherPrefetch_ScalarPlusUnpacked32BitScaledOffsetsFixed = 0xC4200000, 3006b8021494Sopenharmony_ci SVE64BitGatherPrefetch_ScalarPlusUnpacked32BitScaledOffsetsFMask = 0xFFA08010, 3007b8021494Sopenharmony_ci SVE64BitGatherPrefetch_ScalarPlusUnpacked32BitScaledOffsetsMask = 0xFFA0E010, 3008b8021494Sopenharmony_ci PRFB_i_p_bz_d_x32_scaled = SVE64BitGatherPrefetch_ScalarPlusUnpacked32BitScaledOffsetsFixed, 3009b8021494Sopenharmony_ci PRFH_i_p_bz_d_x32_scaled = SVE64BitGatherPrefetch_ScalarPlusUnpacked32BitScaledOffsetsFixed | 0x00002000, 3010b8021494Sopenharmony_ci PRFW_i_p_bz_d_x32_scaled = SVE64BitGatherPrefetch_ScalarPlusUnpacked32BitScaledOffsetsFixed | 0x00004000, 3011b8021494Sopenharmony_ci PRFD_i_p_bz_d_x32_scaled = SVE64BitGatherPrefetch_ScalarPlusUnpacked32BitScaledOffsetsFixed | 0x00006000 3012b8021494Sopenharmony_ci}; 3013b8021494Sopenharmony_ci 3014b8021494Sopenharmony_cienum SVE64BitGatherPrefetch_VectorPlusImmOp { 3015b8021494Sopenharmony_ci SVE64BitGatherPrefetch_VectorPlusImmFixed = 0xC400E000, 3016b8021494Sopenharmony_ci SVE64BitGatherPrefetch_VectorPlusImmFMask = 0xFE60E010, 3017b8021494Sopenharmony_ci SVE64BitGatherPrefetch_VectorPlusImmMask = 0xFFE0E010, 3018b8021494Sopenharmony_ci PRFB_i_p_ai_d = SVE64BitGatherPrefetch_VectorPlusImmFixed, 3019b8021494Sopenharmony_ci PRFH_i_p_ai_d = SVE64BitGatherPrefetch_VectorPlusImmFixed | 0x00800000, 3020b8021494Sopenharmony_ci PRFW_i_p_ai_d = SVE64BitGatherPrefetch_VectorPlusImmFixed | 0x01000000, 3021b8021494Sopenharmony_ci PRFD_i_p_ai_d = SVE64BitGatherPrefetch_VectorPlusImmFixed | 0x01800000 3022b8021494Sopenharmony_ci}; 3023b8021494Sopenharmony_ci 3024b8021494Sopenharmony_cienum SVE64BitScatterStore_ScalarPlus64BitScaledOffsetsOp { 3025b8021494Sopenharmony_ci SVE64BitScatterStore_ScalarPlus64BitScaledOffsetsFixed = 0xE420A000, 3026b8021494Sopenharmony_ci SVE64BitScatterStore_ScalarPlus64BitScaledOffsetsFMask = 0xFE60E000, 3027b8021494Sopenharmony_ci SVE64BitScatterStore_ScalarPlus64BitScaledOffsetsMask = 0xFFE0E000, 3028b8021494Sopenharmony_ci ST1H_z_p_bz_d_64_scaled = SVE64BitScatterStore_ScalarPlus64BitScaledOffsetsFixed | 0x00800000, 3029b8021494Sopenharmony_ci ST1W_z_p_bz_d_64_scaled = SVE64BitScatterStore_ScalarPlus64BitScaledOffsetsFixed | 0x01000000, 3030b8021494Sopenharmony_ci ST1D_z_p_bz_d_64_scaled = SVE64BitScatterStore_ScalarPlus64BitScaledOffsetsFixed | 0x01800000 3031b8021494Sopenharmony_ci}; 3032b8021494Sopenharmony_ci 3033b8021494Sopenharmony_cienum SVE64BitScatterStore_ScalarPlus64BitUnscaledOffsetsOp { 3034b8021494Sopenharmony_ci SVE64BitScatterStore_ScalarPlus64BitUnscaledOffsetsFixed = 0xE400A000, 3035b8021494Sopenharmony_ci SVE64BitScatterStore_ScalarPlus64BitUnscaledOffsetsFMask = 0xFE60E000, 3036b8021494Sopenharmony_ci SVE64BitScatterStore_ScalarPlus64BitUnscaledOffsetsMask = 0xFFE0E000, 3037b8021494Sopenharmony_ci ST1B_z_p_bz_d_64_unscaled = SVE64BitScatterStore_ScalarPlus64BitUnscaledOffsetsFixed, 3038b8021494Sopenharmony_ci ST1H_z_p_bz_d_64_unscaled = SVE64BitScatterStore_ScalarPlus64BitUnscaledOffsetsFixed | 0x00800000, 3039b8021494Sopenharmony_ci ST1W_z_p_bz_d_64_unscaled = SVE64BitScatterStore_ScalarPlus64BitUnscaledOffsetsFixed | 0x01000000, 3040b8021494Sopenharmony_ci ST1D_z_p_bz_d_64_unscaled = SVE64BitScatterStore_ScalarPlus64BitUnscaledOffsetsFixed | 0x01800000 3041b8021494Sopenharmony_ci}; 3042b8021494Sopenharmony_ci 3043b8021494Sopenharmony_cienum SVE64BitScatterStore_ScalarPlusUnpacked32BitScaledOffsetsOp { 3044b8021494Sopenharmony_ci SVE64BitScatterStore_ScalarPlusUnpacked32BitScaledOffsetsFixed = 0xE4208000, 3045b8021494Sopenharmony_ci SVE64BitScatterStore_ScalarPlusUnpacked32BitScaledOffsetsFMask = 0xFE60A000, 3046b8021494Sopenharmony_ci SVE64BitScatterStore_ScalarPlusUnpacked32BitScaledOffsetsMask = 0xFFE0A000, 3047b8021494Sopenharmony_ci ST1H_z_p_bz_d_x32_scaled = SVE64BitScatterStore_ScalarPlusUnpacked32BitScaledOffsetsFixed | 0x00800000, 3048b8021494Sopenharmony_ci ST1W_z_p_bz_d_x32_scaled = SVE64BitScatterStore_ScalarPlusUnpacked32BitScaledOffsetsFixed | 0x01000000, 3049b8021494Sopenharmony_ci ST1D_z_p_bz_d_x32_scaled = SVE64BitScatterStore_ScalarPlusUnpacked32BitScaledOffsetsFixed | 0x01800000 3050b8021494Sopenharmony_ci}; 3051b8021494Sopenharmony_ci 3052b8021494Sopenharmony_cienum SVE64BitScatterStore_ScalarPlusUnpacked32BitUnscaledOffsetsOp { 3053b8021494Sopenharmony_ci SVE64BitScatterStore_ScalarPlusUnpacked32BitUnscaledOffsetsFixed = 0xE4008000, 3054b8021494Sopenharmony_ci SVE64BitScatterStore_ScalarPlusUnpacked32BitUnscaledOffsetsFMask = 0xFE60A000, 3055b8021494Sopenharmony_ci SVE64BitScatterStore_ScalarPlusUnpacked32BitUnscaledOffsetsMask = 0xFFE0A000, 3056b8021494Sopenharmony_ci ST1B_z_p_bz_d_x32_unscaled = SVE64BitScatterStore_ScalarPlusUnpacked32BitUnscaledOffsetsFixed, 3057b8021494Sopenharmony_ci ST1H_z_p_bz_d_x32_unscaled = SVE64BitScatterStore_ScalarPlusUnpacked32BitUnscaledOffsetsFixed | 0x00800000, 3058b8021494Sopenharmony_ci ST1W_z_p_bz_d_x32_unscaled = SVE64BitScatterStore_ScalarPlusUnpacked32BitUnscaledOffsetsFixed | 0x01000000, 3059b8021494Sopenharmony_ci ST1D_z_p_bz_d_x32_unscaled = SVE64BitScatterStore_ScalarPlusUnpacked32BitUnscaledOffsetsFixed | 0x01800000 3060b8021494Sopenharmony_ci}; 3061b8021494Sopenharmony_ci 3062b8021494Sopenharmony_cienum SVE64BitScatterStore_VectorPlusImmOp { 3063b8021494Sopenharmony_ci SVE64BitScatterStore_VectorPlusImmFixed = 0xE440A000, 3064b8021494Sopenharmony_ci SVE64BitScatterStore_VectorPlusImmFMask = 0xFE60E000, 3065b8021494Sopenharmony_ci SVE64BitScatterStore_VectorPlusImmMask = 0xFFE0E000, 3066b8021494Sopenharmony_ci ST1B_z_p_ai_d = SVE64BitScatterStore_VectorPlusImmFixed, 3067b8021494Sopenharmony_ci ST1H_z_p_ai_d = SVE64BitScatterStore_VectorPlusImmFixed | 0x00800000, 3068b8021494Sopenharmony_ci ST1W_z_p_ai_d = SVE64BitScatterStore_VectorPlusImmFixed | 0x01000000, 3069b8021494Sopenharmony_ci ST1D_z_p_ai_d = SVE64BitScatterStore_VectorPlusImmFixed | 0x01800000 3070b8021494Sopenharmony_ci}; 3071b8021494Sopenharmony_ci 3072b8021494Sopenharmony_cienum SVEAddressGenerationOp { 3073b8021494Sopenharmony_ci SVEAddressGenerationFixed = 0x0420A000, 3074b8021494Sopenharmony_ci SVEAddressGenerationFMask = 0xFF20F000, 3075b8021494Sopenharmony_ci SVEAddressGenerationMask = 0xFFE0F000, 3076b8021494Sopenharmony_ci ADR_z_az_d_s32_scaled = SVEAddressGenerationFixed, 3077b8021494Sopenharmony_ci ADR_z_az_d_u32_scaled = SVEAddressGenerationFixed | 0x00400000, 3078b8021494Sopenharmony_ci ADR_z_az_s_same_scaled = SVEAddressGenerationFixed | 0x00800000, 3079b8021494Sopenharmony_ci ADR_z_az_d_same_scaled = SVEAddressGenerationFixed | 0x00C00000 3080b8021494Sopenharmony_ci}; 3081b8021494Sopenharmony_ci 3082b8021494Sopenharmony_cienum SVEBitwiseLogicalUnpredicatedOp { 3083b8021494Sopenharmony_ci SVEBitwiseLogicalUnpredicatedFixed = 0x04202000, 3084b8021494Sopenharmony_ci SVEBitwiseLogicalUnpredicatedFMask = 0xFF20E000, 3085b8021494Sopenharmony_ci SVEBitwiseLogicalUnpredicatedMask = 0xFFE0FC00, 3086b8021494Sopenharmony_ci AND_z_zz = SVEBitwiseLogicalUnpredicatedFixed | 0x00001000, 3087b8021494Sopenharmony_ci ORR_z_zz = SVEBitwiseLogicalUnpredicatedFixed | 0x00401000, 3088b8021494Sopenharmony_ci EOR_z_zz = SVEBitwiseLogicalUnpredicatedFixed | 0x00801000, 3089b8021494Sopenharmony_ci BIC_z_zz = SVEBitwiseLogicalUnpredicatedFixed | 0x00C01000 3090b8021494Sopenharmony_ci}; 3091b8021494Sopenharmony_ci 3092b8021494Sopenharmony_cienum SVEBitwiseLogicalWithImm_UnpredicatedOp { 3093b8021494Sopenharmony_ci SVEBitwiseLogicalWithImm_UnpredicatedFixed = 0x05000000, 3094b8021494Sopenharmony_ci SVEBitwiseLogicalWithImm_UnpredicatedFMask = 0xFF3C0000, 3095b8021494Sopenharmony_ci SVEBitwiseLogicalWithImm_UnpredicatedMask = 0xFFFC0000, 3096b8021494Sopenharmony_ci ORR_z_zi = SVEBitwiseLogicalWithImm_UnpredicatedFixed, 3097b8021494Sopenharmony_ci EOR_z_zi = SVEBitwiseLogicalWithImm_UnpredicatedFixed | 0x00400000, 3098b8021494Sopenharmony_ci AND_z_zi = SVEBitwiseLogicalWithImm_UnpredicatedFixed | 0x00800000 3099b8021494Sopenharmony_ci}; 3100b8021494Sopenharmony_ci 3101b8021494Sopenharmony_cienum SVEBitwiseLogical_PredicatedOp { 3102b8021494Sopenharmony_ci SVEBitwiseLogical_PredicatedFixed = 0x04180000, 3103b8021494Sopenharmony_ci SVEBitwiseLogical_PredicatedFMask = 0xFF38E000, 3104b8021494Sopenharmony_ci SVEBitwiseLogical_PredicatedMask = 0xFF3FE000, 3105b8021494Sopenharmony_ci ORR_z_p_zz = SVEBitwiseLogical_PredicatedFixed, 3106b8021494Sopenharmony_ci EOR_z_p_zz = SVEBitwiseLogical_PredicatedFixed | 0x00010000, 3107b8021494Sopenharmony_ci AND_z_p_zz = SVEBitwiseLogical_PredicatedFixed | 0x00020000, 3108b8021494Sopenharmony_ci BIC_z_p_zz = SVEBitwiseLogical_PredicatedFixed | 0x00030000 3109b8021494Sopenharmony_ci}; 3110b8021494Sopenharmony_ci 3111b8021494Sopenharmony_cienum SVEBitwiseShiftByImm_PredicatedOp { 3112b8021494Sopenharmony_ci SVEBitwiseShiftByImm_PredicatedFixed = 0x04008000, 3113b8021494Sopenharmony_ci SVEBitwiseShiftByImm_PredicatedFMask = 0xFF30E000, 3114b8021494Sopenharmony_ci SVEBitwiseShiftByImm_PredicatedMask = 0xFF3FE000, 3115b8021494Sopenharmony_ci ASR_z_p_zi = SVEBitwiseShiftByImm_PredicatedFixed, 3116b8021494Sopenharmony_ci LSR_z_p_zi = SVEBitwiseShiftByImm_PredicatedFixed | 0x00010000, 3117b8021494Sopenharmony_ci LSL_z_p_zi = SVEBitwiseShiftByImm_PredicatedFixed | 0x00030000, 3118b8021494Sopenharmony_ci ASRD_z_p_zi = SVEBitwiseShiftByImm_PredicatedFixed | 0x00040000 3119b8021494Sopenharmony_ci}; 3120b8021494Sopenharmony_ci 3121b8021494Sopenharmony_cienum SVEBitwiseShiftByVector_PredicatedOp { 3122b8021494Sopenharmony_ci SVEBitwiseShiftByVector_PredicatedFixed = 0x04108000, 3123b8021494Sopenharmony_ci SVEBitwiseShiftByVector_PredicatedFMask = 0xFF38E000, 3124b8021494Sopenharmony_ci SVEBitwiseShiftByVector_PredicatedMask = 0xFF3FE000, 3125b8021494Sopenharmony_ci ASR_z_p_zz = SVEBitwiseShiftByVector_PredicatedFixed, 3126b8021494Sopenharmony_ci LSR_z_p_zz = SVEBitwiseShiftByVector_PredicatedFixed | 0x00010000, 3127b8021494Sopenharmony_ci LSL_z_p_zz = SVEBitwiseShiftByVector_PredicatedFixed | 0x00030000, 3128b8021494Sopenharmony_ci ASRR_z_p_zz = SVEBitwiseShiftByVector_PredicatedFixed | 0x00040000, 3129b8021494Sopenharmony_ci LSRR_z_p_zz = SVEBitwiseShiftByVector_PredicatedFixed | 0x00050000, 3130b8021494Sopenharmony_ci LSLR_z_p_zz = SVEBitwiseShiftByVector_PredicatedFixed | 0x00070000 3131b8021494Sopenharmony_ci}; 3132b8021494Sopenharmony_ci 3133b8021494Sopenharmony_cienum SVEBitwiseShiftByWideElements_PredicatedOp { 3134b8021494Sopenharmony_ci SVEBitwiseShiftByWideElements_PredicatedFixed = 0x04188000, 3135b8021494Sopenharmony_ci SVEBitwiseShiftByWideElements_PredicatedFMask = 0xFF38E000, 3136b8021494Sopenharmony_ci SVEBitwiseShiftByWideElements_PredicatedMask = 0xFF3FE000, 3137b8021494Sopenharmony_ci ASR_z_p_zw = SVEBitwiseShiftByWideElements_PredicatedFixed, 3138b8021494Sopenharmony_ci LSR_z_p_zw = SVEBitwiseShiftByWideElements_PredicatedFixed | 0x00010000, 3139b8021494Sopenharmony_ci LSL_z_p_zw = SVEBitwiseShiftByWideElements_PredicatedFixed | 0x00030000 3140b8021494Sopenharmony_ci}; 3141b8021494Sopenharmony_ci 3142b8021494Sopenharmony_cienum SVEBitwiseShiftUnpredicatedOp { 3143b8021494Sopenharmony_ci SVEBitwiseShiftUnpredicatedFixed = 0x04208000, 3144b8021494Sopenharmony_ci SVEBitwiseShiftUnpredicatedFMask = 0xFF20E000, 3145b8021494Sopenharmony_ci SVEBitwiseShiftUnpredicatedMask = 0xFF20FC00, 3146b8021494Sopenharmony_ci ASR_z_zw = SVEBitwiseShiftUnpredicatedFixed, 3147b8021494Sopenharmony_ci LSR_z_zw = SVEBitwiseShiftUnpredicatedFixed | 0x00000400, 3148b8021494Sopenharmony_ci LSL_z_zw = SVEBitwiseShiftUnpredicatedFixed | 0x00000C00, 3149b8021494Sopenharmony_ci ASR_z_zi = SVEBitwiseShiftUnpredicatedFixed | 0x00001000, 3150b8021494Sopenharmony_ci LSR_z_zi = SVEBitwiseShiftUnpredicatedFixed | 0x00001400, 3151b8021494Sopenharmony_ci LSL_z_zi = SVEBitwiseShiftUnpredicatedFixed | 0x00001C00 3152b8021494Sopenharmony_ci}; 3153b8021494Sopenharmony_ci 3154b8021494Sopenharmony_cienum SVEBroadcastBitmaskImmOp { 3155b8021494Sopenharmony_ci SVEBroadcastBitmaskImmFixed = 0x05C00000, 3156b8021494Sopenharmony_ci SVEBroadcastBitmaskImmFMask = 0xFFFC0000, 3157b8021494Sopenharmony_ci SVEBroadcastBitmaskImmMask = 0xFFFC0000, 3158b8021494Sopenharmony_ci DUPM_z_i = SVEBroadcastBitmaskImmFixed 3159b8021494Sopenharmony_ci}; 3160b8021494Sopenharmony_ci 3161b8021494Sopenharmony_cienum SVEBroadcastFPImm_UnpredicatedOp { 3162b8021494Sopenharmony_ci SVEBroadcastFPImm_UnpredicatedFixed = 0x2539C000, 3163b8021494Sopenharmony_ci SVEBroadcastFPImm_UnpredicatedFMask = 0xFF39C000, 3164b8021494Sopenharmony_ci SVEBroadcastFPImm_UnpredicatedMask = 0xFF3FE000, 3165b8021494Sopenharmony_ci FDUP_z_i = SVEBroadcastFPImm_UnpredicatedFixed 3166b8021494Sopenharmony_ci}; 3167b8021494Sopenharmony_ci 3168b8021494Sopenharmony_cienum SVEBroadcastGeneralRegisterOp { 3169b8021494Sopenharmony_ci SVEBroadcastGeneralRegisterFixed = 0x05203800, 3170b8021494Sopenharmony_ci SVEBroadcastGeneralRegisterFMask = 0xFF3FFC00, 3171b8021494Sopenharmony_ci SVEBroadcastGeneralRegisterMask = 0xFF3FFC00, 3172b8021494Sopenharmony_ci DUP_z_r = SVEBroadcastGeneralRegisterFixed 3173b8021494Sopenharmony_ci}; 3174b8021494Sopenharmony_ci 3175b8021494Sopenharmony_cienum SVEBroadcastIndexElementOp { 3176b8021494Sopenharmony_ci SVEBroadcastIndexElementFixed = 0x05202000, 3177b8021494Sopenharmony_ci SVEBroadcastIndexElementFMask = 0xFF20FC00, 3178b8021494Sopenharmony_ci SVEBroadcastIndexElementMask = 0xFF20FC00, 3179b8021494Sopenharmony_ci DUP_z_zi = SVEBroadcastIndexElementFixed 3180b8021494Sopenharmony_ci}; 3181b8021494Sopenharmony_ci 3182b8021494Sopenharmony_cienum SVEBroadcastIntImm_UnpredicatedOp { 3183b8021494Sopenharmony_ci SVEBroadcastIntImm_UnpredicatedFixed = 0x2538C000, 3184b8021494Sopenharmony_ci SVEBroadcastIntImm_UnpredicatedFMask = 0xFF39C000, 3185b8021494Sopenharmony_ci SVEBroadcastIntImm_UnpredicatedMask = 0xFF3FC000, 3186b8021494Sopenharmony_ci DUP_z_i = SVEBroadcastIntImm_UnpredicatedFixed 3187b8021494Sopenharmony_ci}; 3188b8021494Sopenharmony_ci 3189b8021494Sopenharmony_cienum SVECompressActiveElementsOp { 3190b8021494Sopenharmony_ci SVECompressActiveElementsFixed = 0x05A18000, 3191b8021494Sopenharmony_ci SVECompressActiveElementsFMask = 0xFFBFE000, 3192b8021494Sopenharmony_ci SVECompressActiveElementsMask = 0xFFBFE000, 3193b8021494Sopenharmony_ci COMPACT_z_p_z = SVECompressActiveElementsFixed 3194b8021494Sopenharmony_ci}; 3195b8021494Sopenharmony_ci 3196b8021494Sopenharmony_cienum SVEConditionallyBroadcastElementToVectorOp { 3197b8021494Sopenharmony_ci SVEConditionallyBroadcastElementToVectorFixed = 0x05288000, 3198b8021494Sopenharmony_ci SVEConditionallyBroadcastElementToVectorFMask = 0xFF3EE000, 3199b8021494Sopenharmony_ci SVEConditionallyBroadcastElementToVectorMask = 0xFF3FE000, 3200b8021494Sopenharmony_ci CLASTA_z_p_zz = SVEConditionallyBroadcastElementToVectorFixed, 3201b8021494Sopenharmony_ci CLASTB_z_p_zz = SVEConditionallyBroadcastElementToVectorFixed | 0x00010000 3202b8021494Sopenharmony_ci}; 3203b8021494Sopenharmony_ci 3204b8021494Sopenharmony_cienum SVEConditionallyExtractElementToGeneralRegisterOp { 3205b8021494Sopenharmony_ci SVEConditionallyExtractElementToGeneralRegisterFixed = 0x0530A000, 3206b8021494Sopenharmony_ci SVEConditionallyExtractElementToGeneralRegisterFMask = 0xFF3EE000, 3207b8021494Sopenharmony_ci SVEConditionallyExtractElementToGeneralRegisterMask = 0xFF3FE000, 3208b8021494Sopenharmony_ci CLASTA_r_p_z = SVEConditionallyExtractElementToGeneralRegisterFixed, 3209b8021494Sopenharmony_ci CLASTB_r_p_z = SVEConditionallyExtractElementToGeneralRegisterFixed | 0x00010000 3210b8021494Sopenharmony_ci}; 3211b8021494Sopenharmony_ci 3212b8021494Sopenharmony_cienum SVEConditionallyExtractElementToSIMDFPScalarOp { 3213b8021494Sopenharmony_ci SVEConditionallyExtractElementToSIMDFPScalarFixed = 0x052A8000, 3214b8021494Sopenharmony_ci SVEConditionallyExtractElementToSIMDFPScalarFMask = 0xFF3EE000, 3215b8021494Sopenharmony_ci SVEConditionallyExtractElementToSIMDFPScalarMask = 0xFF3FE000, 3216b8021494Sopenharmony_ci CLASTA_v_p_z = SVEConditionallyExtractElementToSIMDFPScalarFixed, 3217b8021494Sopenharmony_ci CLASTB_v_p_z = SVEConditionallyExtractElementToSIMDFPScalarFixed | 0x00010000 3218b8021494Sopenharmony_ci}; 3219b8021494Sopenharmony_ci 3220b8021494Sopenharmony_cienum SVEConditionallyTerminateScalarsOp { 3221b8021494Sopenharmony_ci SVEConditionallyTerminateScalarsFixed = 0x25202000, 3222b8021494Sopenharmony_ci SVEConditionallyTerminateScalarsFMask = 0xFF20FC0F, 3223b8021494Sopenharmony_ci SVEConditionallyTerminateScalarsMask = 0xFFA0FC1F, 3224b8021494Sopenharmony_ci CTERMEQ_rr = SVEConditionallyTerminateScalarsFixed | 0x00800000, 3225b8021494Sopenharmony_ci CTERMNE_rr = SVEConditionallyTerminateScalarsFixed | 0x00800010 3226b8021494Sopenharmony_ci}; 3227b8021494Sopenharmony_ci 3228b8021494Sopenharmony_cienum SVEConstructivePrefix_UnpredicatedOp { 3229b8021494Sopenharmony_ci SVEConstructivePrefix_UnpredicatedFixed = 0x0420BC00, 3230b8021494Sopenharmony_ci SVEConstructivePrefix_UnpredicatedFMask = 0xFF20FC00, 3231b8021494Sopenharmony_ci SVEConstructivePrefix_UnpredicatedMask = 0xFFFFFC00, 3232b8021494Sopenharmony_ci MOVPRFX_z_z = SVEConstructivePrefix_UnpredicatedFixed 3233b8021494Sopenharmony_ci}; 3234b8021494Sopenharmony_ci 3235b8021494Sopenharmony_cienum SVEContiguousFirstFaultLoad_ScalarPlusScalarOp { 3236b8021494Sopenharmony_ci SVEContiguousFirstFaultLoad_ScalarPlusScalarFixed = 0xA4006000, 3237b8021494Sopenharmony_ci SVEContiguousFirstFaultLoad_ScalarPlusScalarFMask = 0xFE00E000, 3238b8021494Sopenharmony_ci SVEContiguousFirstFaultLoad_ScalarPlusScalarMask = 0xFFE0E000, 3239b8021494Sopenharmony_ci LDFF1B_z_p_br_u8 = SVEContiguousFirstFaultLoad_ScalarPlusScalarFixed, 3240b8021494Sopenharmony_ci LDFF1B_z_p_br_u16 = SVEContiguousFirstFaultLoad_ScalarPlusScalarFixed | 0x00200000, 3241b8021494Sopenharmony_ci LDFF1B_z_p_br_u32 = SVEContiguousFirstFaultLoad_ScalarPlusScalarFixed | 0x00400000, 3242b8021494Sopenharmony_ci LDFF1B_z_p_br_u64 = SVEContiguousFirstFaultLoad_ScalarPlusScalarFixed | 0x00600000, 3243b8021494Sopenharmony_ci LDFF1SW_z_p_br_s64 = SVEContiguousFirstFaultLoad_ScalarPlusScalarFixed | 0x00800000, 3244b8021494Sopenharmony_ci LDFF1H_z_p_br_u16 = SVEContiguousFirstFaultLoad_ScalarPlusScalarFixed | 0x00A00000, 3245b8021494Sopenharmony_ci LDFF1H_z_p_br_u32 = SVEContiguousFirstFaultLoad_ScalarPlusScalarFixed | 0x00C00000, 3246b8021494Sopenharmony_ci LDFF1H_z_p_br_u64 = SVEContiguousFirstFaultLoad_ScalarPlusScalarFixed | 0x00E00000, 3247b8021494Sopenharmony_ci LDFF1SH_z_p_br_s64 = SVEContiguousFirstFaultLoad_ScalarPlusScalarFixed | 0x01000000, 3248b8021494Sopenharmony_ci LDFF1SH_z_p_br_s32 = SVEContiguousFirstFaultLoad_ScalarPlusScalarFixed | 0x01200000, 3249b8021494Sopenharmony_ci LDFF1W_z_p_br_u32 = SVEContiguousFirstFaultLoad_ScalarPlusScalarFixed | 0x01400000, 3250b8021494Sopenharmony_ci LDFF1W_z_p_br_u64 = SVEContiguousFirstFaultLoad_ScalarPlusScalarFixed | 0x01600000, 3251b8021494Sopenharmony_ci LDFF1SB_z_p_br_s64 = SVEContiguousFirstFaultLoad_ScalarPlusScalarFixed | 0x01800000, 3252b8021494Sopenharmony_ci LDFF1SB_z_p_br_s32 = SVEContiguousFirstFaultLoad_ScalarPlusScalarFixed | 0x01A00000, 3253b8021494Sopenharmony_ci LDFF1SB_z_p_br_s16 = SVEContiguousFirstFaultLoad_ScalarPlusScalarFixed | 0x01C00000, 3254b8021494Sopenharmony_ci LDFF1D_z_p_br_u64 = SVEContiguousFirstFaultLoad_ScalarPlusScalarFixed | 0x01E00000 3255b8021494Sopenharmony_ci}; 3256b8021494Sopenharmony_ci 3257b8021494Sopenharmony_cienum SVEContiguousLoad_ScalarPlusImmOp { 3258b8021494Sopenharmony_ci SVEContiguousLoad_ScalarPlusImmFixed = 0xA400A000, 3259b8021494Sopenharmony_ci SVEContiguousLoad_ScalarPlusImmFMask = 0xFE10E000, 3260b8021494Sopenharmony_ci SVEContiguousLoad_ScalarPlusImmMask = 0xFFF0E000, 3261b8021494Sopenharmony_ci LD1B_z_p_bi_u8 = SVEContiguousLoad_ScalarPlusImmFixed, 3262b8021494Sopenharmony_ci LD1B_z_p_bi_u16 = SVEContiguousLoad_ScalarPlusImmFixed | 0x00200000, 3263b8021494Sopenharmony_ci LD1B_z_p_bi_u32 = SVEContiguousLoad_ScalarPlusImmFixed | 0x00400000, 3264b8021494Sopenharmony_ci LD1B_z_p_bi_u64 = SVEContiguousLoad_ScalarPlusImmFixed | 0x00600000, 3265b8021494Sopenharmony_ci LD1SW_z_p_bi_s64 = SVEContiguousLoad_ScalarPlusImmFixed | 0x00800000, 3266b8021494Sopenharmony_ci LD1H_z_p_bi_u16 = SVEContiguousLoad_ScalarPlusImmFixed | 0x00A00000, 3267b8021494Sopenharmony_ci LD1H_z_p_bi_u32 = SVEContiguousLoad_ScalarPlusImmFixed | 0x00C00000, 3268b8021494Sopenharmony_ci LD1H_z_p_bi_u64 = SVEContiguousLoad_ScalarPlusImmFixed | 0x00E00000, 3269b8021494Sopenharmony_ci LD1SH_z_p_bi_s64 = SVEContiguousLoad_ScalarPlusImmFixed | 0x01000000, 3270b8021494Sopenharmony_ci LD1SH_z_p_bi_s32 = SVEContiguousLoad_ScalarPlusImmFixed | 0x01200000, 3271b8021494Sopenharmony_ci LD1W_z_p_bi_u32 = SVEContiguousLoad_ScalarPlusImmFixed | 0x01400000, 3272b8021494Sopenharmony_ci LD1W_z_p_bi_u64 = SVEContiguousLoad_ScalarPlusImmFixed | 0x01600000, 3273b8021494Sopenharmony_ci LD1SB_z_p_bi_s64 = SVEContiguousLoad_ScalarPlusImmFixed | 0x01800000, 3274b8021494Sopenharmony_ci LD1SB_z_p_bi_s32 = SVEContiguousLoad_ScalarPlusImmFixed | 0x01A00000, 3275b8021494Sopenharmony_ci LD1SB_z_p_bi_s16 = SVEContiguousLoad_ScalarPlusImmFixed | 0x01C00000, 3276b8021494Sopenharmony_ci LD1D_z_p_bi_u64 = SVEContiguousLoad_ScalarPlusImmFixed | 0x01E00000 3277b8021494Sopenharmony_ci}; 3278b8021494Sopenharmony_ci 3279b8021494Sopenharmony_cienum SVEContiguousLoad_ScalarPlusScalarOp { 3280b8021494Sopenharmony_ci SVEContiguousLoad_ScalarPlusScalarFixed = 0xA4004000, 3281b8021494Sopenharmony_ci SVEContiguousLoad_ScalarPlusScalarFMask = 0xFE00E000, 3282b8021494Sopenharmony_ci SVEContiguousLoad_ScalarPlusScalarMask = 0xFFE0E000, 3283b8021494Sopenharmony_ci LD1B_z_p_br_u8 = SVEContiguousLoad_ScalarPlusScalarFixed, 3284b8021494Sopenharmony_ci LD1B_z_p_br_u16 = SVEContiguousLoad_ScalarPlusScalarFixed | 0x00200000, 3285b8021494Sopenharmony_ci LD1B_z_p_br_u32 = SVEContiguousLoad_ScalarPlusScalarFixed | 0x00400000, 3286b8021494Sopenharmony_ci LD1B_z_p_br_u64 = SVEContiguousLoad_ScalarPlusScalarFixed | 0x00600000, 3287b8021494Sopenharmony_ci LD1SW_z_p_br_s64 = SVEContiguousLoad_ScalarPlusScalarFixed | 0x00800000, 3288b8021494Sopenharmony_ci LD1H_z_p_br_u16 = SVEContiguousLoad_ScalarPlusScalarFixed | 0x00A00000, 3289b8021494Sopenharmony_ci LD1H_z_p_br_u32 = SVEContiguousLoad_ScalarPlusScalarFixed | 0x00C00000, 3290b8021494Sopenharmony_ci LD1H_z_p_br_u64 = SVEContiguousLoad_ScalarPlusScalarFixed | 0x00E00000, 3291b8021494Sopenharmony_ci LD1SH_z_p_br_s64 = SVEContiguousLoad_ScalarPlusScalarFixed | 0x01000000, 3292b8021494Sopenharmony_ci LD1SH_z_p_br_s32 = SVEContiguousLoad_ScalarPlusScalarFixed | 0x01200000, 3293b8021494Sopenharmony_ci LD1W_z_p_br_u32 = SVEContiguousLoad_ScalarPlusScalarFixed | 0x01400000, 3294b8021494Sopenharmony_ci LD1W_z_p_br_u64 = SVEContiguousLoad_ScalarPlusScalarFixed | 0x01600000, 3295b8021494Sopenharmony_ci LD1SB_z_p_br_s64 = SVEContiguousLoad_ScalarPlusScalarFixed | 0x01800000, 3296b8021494Sopenharmony_ci LD1SB_z_p_br_s32 = SVEContiguousLoad_ScalarPlusScalarFixed | 0x01A00000, 3297b8021494Sopenharmony_ci LD1SB_z_p_br_s16 = SVEContiguousLoad_ScalarPlusScalarFixed | 0x01C00000, 3298b8021494Sopenharmony_ci LD1D_z_p_br_u64 = SVEContiguousLoad_ScalarPlusScalarFixed | 0x01E00000 3299b8021494Sopenharmony_ci}; 3300b8021494Sopenharmony_ci 3301b8021494Sopenharmony_cienum SVEContiguousNonFaultLoad_ScalarPlusImmOp { 3302b8021494Sopenharmony_ci SVEContiguousNonFaultLoad_ScalarPlusImmFixed = 0xA410A000, 3303b8021494Sopenharmony_ci SVEContiguousNonFaultLoad_ScalarPlusImmFMask = 0xFE10E000, 3304b8021494Sopenharmony_ci SVEContiguousNonFaultLoad_ScalarPlusImmMask = 0xFFF0E000, 3305b8021494Sopenharmony_ci LDNF1B_z_p_bi_u8 = SVEContiguousNonFaultLoad_ScalarPlusImmFixed, 3306b8021494Sopenharmony_ci LDNF1B_z_p_bi_u16 = SVEContiguousNonFaultLoad_ScalarPlusImmFixed | 0x00200000, 3307b8021494Sopenharmony_ci LDNF1B_z_p_bi_u32 = SVEContiguousNonFaultLoad_ScalarPlusImmFixed | 0x00400000, 3308b8021494Sopenharmony_ci LDNF1B_z_p_bi_u64 = SVEContiguousNonFaultLoad_ScalarPlusImmFixed | 0x00600000, 3309b8021494Sopenharmony_ci LDNF1SW_z_p_bi_s64 = SVEContiguousNonFaultLoad_ScalarPlusImmFixed | 0x00800000, 3310b8021494Sopenharmony_ci LDNF1H_z_p_bi_u16 = SVEContiguousNonFaultLoad_ScalarPlusImmFixed | 0x00A00000, 3311b8021494Sopenharmony_ci LDNF1H_z_p_bi_u32 = SVEContiguousNonFaultLoad_ScalarPlusImmFixed | 0x00C00000, 3312b8021494Sopenharmony_ci LDNF1H_z_p_bi_u64 = SVEContiguousNonFaultLoad_ScalarPlusImmFixed | 0x00E00000, 3313b8021494Sopenharmony_ci LDNF1SH_z_p_bi_s64 = SVEContiguousNonFaultLoad_ScalarPlusImmFixed | 0x01000000, 3314b8021494Sopenharmony_ci LDNF1SH_z_p_bi_s32 = SVEContiguousNonFaultLoad_ScalarPlusImmFixed | 0x01200000, 3315b8021494Sopenharmony_ci LDNF1W_z_p_bi_u32 = SVEContiguousNonFaultLoad_ScalarPlusImmFixed | 0x01400000, 3316b8021494Sopenharmony_ci LDNF1W_z_p_bi_u64 = SVEContiguousNonFaultLoad_ScalarPlusImmFixed | 0x01600000, 3317b8021494Sopenharmony_ci LDNF1SB_z_p_bi_s64 = SVEContiguousNonFaultLoad_ScalarPlusImmFixed | 0x01800000, 3318b8021494Sopenharmony_ci LDNF1SB_z_p_bi_s32 = SVEContiguousNonFaultLoad_ScalarPlusImmFixed | 0x01A00000, 3319b8021494Sopenharmony_ci LDNF1SB_z_p_bi_s16 = SVEContiguousNonFaultLoad_ScalarPlusImmFixed | 0x01C00000, 3320b8021494Sopenharmony_ci LDNF1D_z_p_bi_u64 = SVEContiguousNonFaultLoad_ScalarPlusImmFixed | 0x01E00000 3321b8021494Sopenharmony_ci}; 3322b8021494Sopenharmony_ci 3323b8021494Sopenharmony_cienum SVEContiguousNonTemporalLoad_ScalarPlusImmOp { 3324b8021494Sopenharmony_ci SVEContiguousNonTemporalLoad_ScalarPlusImmFixed = 0xA400E000, 3325b8021494Sopenharmony_ci SVEContiguousNonTemporalLoad_ScalarPlusImmFMask = 0xFE70E000, 3326b8021494Sopenharmony_ci SVEContiguousNonTemporalLoad_ScalarPlusImmMask = 0xFFF0E000, 3327b8021494Sopenharmony_ci LDNT1B_z_p_bi_contiguous = SVEContiguousNonTemporalLoad_ScalarPlusImmFixed, 3328b8021494Sopenharmony_ci LDNT1H_z_p_bi_contiguous = SVEContiguousNonTemporalLoad_ScalarPlusImmFixed | 0x00800000, 3329b8021494Sopenharmony_ci LDNT1W_z_p_bi_contiguous = SVEContiguousNonTemporalLoad_ScalarPlusImmFixed | 0x01000000, 3330b8021494Sopenharmony_ci LDNT1D_z_p_bi_contiguous = SVEContiguousNonTemporalLoad_ScalarPlusImmFixed | 0x01800000 3331b8021494Sopenharmony_ci}; 3332b8021494Sopenharmony_ci 3333b8021494Sopenharmony_cienum SVEContiguousNonTemporalLoad_ScalarPlusScalarOp { 3334b8021494Sopenharmony_ci SVEContiguousNonTemporalLoad_ScalarPlusScalarFixed = 0xA400C000, 3335b8021494Sopenharmony_ci SVEContiguousNonTemporalLoad_ScalarPlusScalarFMask = 0xFE60E000, 3336b8021494Sopenharmony_ci SVEContiguousNonTemporalLoad_ScalarPlusScalarMask = 0xFFE0E000, 3337b8021494Sopenharmony_ci LDNT1B_z_p_br_contiguous = SVEContiguousNonTemporalLoad_ScalarPlusScalarFixed, 3338b8021494Sopenharmony_ci LDNT1H_z_p_br_contiguous = SVEContiguousNonTemporalLoad_ScalarPlusScalarFixed | 0x00800000, 3339b8021494Sopenharmony_ci LDNT1W_z_p_br_contiguous = SVEContiguousNonTemporalLoad_ScalarPlusScalarFixed | 0x01000000, 3340b8021494Sopenharmony_ci LDNT1D_z_p_br_contiguous = SVEContiguousNonTemporalLoad_ScalarPlusScalarFixed | 0x01800000 3341b8021494Sopenharmony_ci}; 3342b8021494Sopenharmony_ci 3343b8021494Sopenharmony_cienum SVEContiguousNonTemporalStore_ScalarPlusImmOp { 3344b8021494Sopenharmony_ci SVEContiguousNonTemporalStore_ScalarPlusImmFixed = 0xE410E000, 3345b8021494Sopenharmony_ci SVEContiguousNonTemporalStore_ScalarPlusImmFMask = 0xFE70E000, 3346b8021494Sopenharmony_ci SVEContiguousNonTemporalStore_ScalarPlusImmMask = 0xFFF0E000, 3347b8021494Sopenharmony_ci STNT1B_z_p_bi_contiguous = SVEContiguousNonTemporalStore_ScalarPlusImmFixed, 3348b8021494Sopenharmony_ci STNT1H_z_p_bi_contiguous = SVEContiguousNonTemporalStore_ScalarPlusImmFixed | 0x00800000, 3349b8021494Sopenharmony_ci STNT1W_z_p_bi_contiguous = SVEContiguousNonTemporalStore_ScalarPlusImmFixed | 0x01000000, 3350b8021494Sopenharmony_ci STNT1D_z_p_bi_contiguous = SVEContiguousNonTemporalStore_ScalarPlusImmFixed | 0x01800000 3351b8021494Sopenharmony_ci}; 3352b8021494Sopenharmony_ci 3353b8021494Sopenharmony_cienum SVEContiguousNonTemporalStore_ScalarPlusScalarOp { 3354b8021494Sopenharmony_ci SVEContiguousNonTemporalStore_ScalarPlusScalarFixed = 0xE4006000, 3355b8021494Sopenharmony_ci SVEContiguousNonTemporalStore_ScalarPlusScalarFMask = 0xFE60E000, 3356b8021494Sopenharmony_ci SVEContiguousNonTemporalStore_ScalarPlusScalarMask = 0xFFE0E000, 3357b8021494Sopenharmony_ci STNT1B_z_p_br_contiguous = SVEContiguousNonTemporalStore_ScalarPlusScalarFixed, 3358b8021494Sopenharmony_ci STNT1H_z_p_br_contiguous = SVEContiguousNonTemporalStore_ScalarPlusScalarFixed | 0x00800000, 3359b8021494Sopenharmony_ci STNT1W_z_p_br_contiguous = SVEContiguousNonTemporalStore_ScalarPlusScalarFixed | 0x01000000, 3360b8021494Sopenharmony_ci STNT1D_z_p_br_contiguous = SVEContiguousNonTemporalStore_ScalarPlusScalarFixed | 0x01800000 3361b8021494Sopenharmony_ci}; 3362b8021494Sopenharmony_ci 3363b8021494Sopenharmony_cienum SVEContiguousPrefetch_ScalarPlusImmOp { 3364b8021494Sopenharmony_ci SVEContiguousPrefetch_ScalarPlusImmFixed = 0x85C00000, 3365b8021494Sopenharmony_ci SVEContiguousPrefetch_ScalarPlusImmFMask = 0xFFC08010, 3366b8021494Sopenharmony_ci SVEContiguousPrefetch_ScalarPlusImmMask = 0xFFC0E010, 3367b8021494Sopenharmony_ci PRFB_i_p_bi_s = SVEContiguousPrefetch_ScalarPlusImmFixed, 3368b8021494Sopenharmony_ci PRFH_i_p_bi_s = SVEContiguousPrefetch_ScalarPlusImmFixed | 0x00002000, 3369b8021494Sopenharmony_ci PRFW_i_p_bi_s = SVEContiguousPrefetch_ScalarPlusImmFixed | 0x00004000, 3370b8021494Sopenharmony_ci PRFD_i_p_bi_s = SVEContiguousPrefetch_ScalarPlusImmFixed | 0x00006000 3371b8021494Sopenharmony_ci}; 3372b8021494Sopenharmony_ci 3373b8021494Sopenharmony_cienum SVEContiguousPrefetch_ScalarPlusScalarOp { 3374b8021494Sopenharmony_ci SVEContiguousPrefetch_ScalarPlusScalarFixed = 0x8400C000, 3375b8021494Sopenharmony_ci SVEContiguousPrefetch_ScalarPlusScalarFMask = 0xFE60E010, 3376b8021494Sopenharmony_ci SVEContiguousPrefetch_ScalarPlusScalarMask = 0xFFE0E010, 3377b8021494Sopenharmony_ci PRFB_i_p_br_s = SVEContiguousPrefetch_ScalarPlusScalarFixed, 3378b8021494Sopenharmony_ci PRFH_i_p_br_s = SVEContiguousPrefetch_ScalarPlusScalarFixed | 0x00800000, 3379b8021494Sopenharmony_ci PRFW_i_p_br_s = SVEContiguousPrefetch_ScalarPlusScalarFixed | 0x01000000, 3380b8021494Sopenharmony_ci PRFD_i_p_br_s = SVEContiguousPrefetch_ScalarPlusScalarFixed | 0x01800000 3381b8021494Sopenharmony_ci}; 3382b8021494Sopenharmony_ci 3383b8021494Sopenharmony_cienum SVEContiguousStore_ScalarPlusImmOp { 3384b8021494Sopenharmony_ci SVEContiguousStore_ScalarPlusImmFixed = 0xE400E000, 3385b8021494Sopenharmony_ci SVEContiguousStore_ScalarPlusImmFMask = 0xFE10E000, 3386b8021494Sopenharmony_ci SVEContiguousStore_ScalarPlusImmMask = 0xFF90E000, 3387b8021494Sopenharmony_ci ST1B_z_p_bi = SVEContiguousStore_ScalarPlusImmFixed, 3388b8021494Sopenharmony_ci ST1H_z_p_bi = SVEContiguousStore_ScalarPlusImmFixed | 0x00800000, 3389b8021494Sopenharmony_ci ST1W_z_p_bi = SVEContiguousStore_ScalarPlusImmFixed | 0x01000000, 3390b8021494Sopenharmony_ci ST1D_z_p_bi = SVEContiguousStore_ScalarPlusImmFixed | 0x01800000 3391b8021494Sopenharmony_ci}; 3392b8021494Sopenharmony_ci 3393b8021494Sopenharmony_cienum SVEContiguousStore_ScalarPlusScalarOp { 3394b8021494Sopenharmony_ci SVEContiguousStore_ScalarPlusScalarFixed = 0xE4004000, 3395b8021494Sopenharmony_ci SVEContiguousStore_ScalarPlusScalarFMask = 0xFE00E000, 3396b8021494Sopenharmony_ci SVEContiguousStore_ScalarPlusScalarMask = 0xFF80E000, 3397b8021494Sopenharmony_ci ST1B_z_p_br = SVEContiguousStore_ScalarPlusScalarFixed, 3398b8021494Sopenharmony_ci ST1H_z_p_br = SVEContiguousStore_ScalarPlusScalarFixed | 0x00800000, 3399b8021494Sopenharmony_ci ST1W_z_p_br = SVEContiguousStore_ScalarPlusScalarFixed | 0x01000000, 3400b8021494Sopenharmony_ci ST1D_z_p_br = SVEContiguousStore_ScalarPlusScalarFixed | 0x01800000 3401b8021494Sopenharmony_ci}; 3402b8021494Sopenharmony_ci 3403b8021494Sopenharmony_cienum SVECopyFPImm_PredicatedOp { 3404b8021494Sopenharmony_ci SVECopyFPImm_PredicatedFixed = 0x0510C000, 3405b8021494Sopenharmony_ci SVECopyFPImm_PredicatedFMask = 0xFF30E000, 3406b8021494Sopenharmony_ci SVECopyFPImm_PredicatedMask = 0xFF30E000, 3407b8021494Sopenharmony_ci FCPY_z_p_i = SVECopyFPImm_PredicatedFixed 3408b8021494Sopenharmony_ci}; 3409b8021494Sopenharmony_ci 3410b8021494Sopenharmony_cienum SVECopyGeneralRegisterToVector_PredicatedOp { 3411b8021494Sopenharmony_ci SVECopyGeneralRegisterToVector_PredicatedFixed = 0x0528A000, 3412b8021494Sopenharmony_ci SVECopyGeneralRegisterToVector_PredicatedFMask = 0xFF3FE000, 3413b8021494Sopenharmony_ci SVECopyGeneralRegisterToVector_PredicatedMask = 0xFF3FE000, 3414b8021494Sopenharmony_ci CPY_z_p_r = SVECopyGeneralRegisterToVector_PredicatedFixed 3415b8021494Sopenharmony_ci}; 3416b8021494Sopenharmony_ci 3417b8021494Sopenharmony_cienum SVECopyIntImm_PredicatedOp { 3418b8021494Sopenharmony_ci SVECopyIntImm_PredicatedFixed = 0x05100000, 3419b8021494Sopenharmony_ci SVECopyIntImm_PredicatedFMask = 0xFF308000, 3420b8021494Sopenharmony_ci SVECopyIntImm_PredicatedMask = 0xFF308000, 3421b8021494Sopenharmony_ci CPY_z_p_i = SVECopyIntImm_PredicatedFixed 3422b8021494Sopenharmony_ci}; 3423b8021494Sopenharmony_ci 3424b8021494Sopenharmony_cienum SVECopySIMDFPScalarRegisterToVector_PredicatedOp { 3425b8021494Sopenharmony_ci SVECopySIMDFPScalarRegisterToVector_PredicatedFixed = 0x05208000, 3426b8021494Sopenharmony_ci SVECopySIMDFPScalarRegisterToVector_PredicatedFMask = 0xFF3FE000, 3427b8021494Sopenharmony_ci SVECopySIMDFPScalarRegisterToVector_PredicatedMask = 0xFF3FE000, 3428b8021494Sopenharmony_ci CPY_z_p_v = SVECopySIMDFPScalarRegisterToVector_PredicatedFixed 3429b8021494Sopenharmony_ci}; 3430b8021494Sopenharmony_ci 3431b8021494Sopenharmony_cienum SVEElementCountOp { 3432b8021494Sopenharmony_ci SVEElementCountFixed = 0x0420E000, 3433b8021494Sopenharmony_ci SVEElementCountFMask = 0xFF30F800, 3434b8021494Sopenharmony_ci SVEElementCountMask = 0xFFF0FC00, 3435b8021494Sopenharmony_ci CNTB_r_s = SVEElementCountFixed, 3436b8021494Sopenharmony_ci CNTH_r_s = SVEElementCountFixed | 0x00400000, 3437b8021494Sopenharmony_ci CNTW_r_s = SVEElementCountFixed | 0x00800000, 3438b8021494Sopenharmony_ci CNTD_r_s = SVEElementCountFixed | 0x00C00000 3439b8021494Sopenharmony_ci}; 3440b8021494Sopenharmony_ci 3441b8021494Sopenharmony_cienum SVEExtractElementToGeneralRegisterOp { 3442b8021494Sopenharmony_ci SVEExtractElementToGeneralRegisterFixed = 0x0520A000, 3443b8021494Sopenharmony_ci SVEExtractElementToGeneralRegisterFMask = 0xFF3EE000, 3444b8021494Sopenharmony_ci SVEExtractElementToGeneralRegisterMask = 0xFF3FE000, 3445b8021494Sopenharmony_ci LASTA_r_p_z = SVEExtractElementToGeneralRegisterFixed, 3446b8021494Sopenharmony_ci LASTB_r_p_z = SVEExtractElementToGeneralRegisterFixed | 0x00010000 3447b8021494Sopenharmony_ci}; 3448b8021494Sopenharmony_ci 3449b8021494Sopenharmony_cienum SVEExtractElementToSIMDFPScalarRegisterOp { 3450b8021494Sopenharmony_ci SVEExtractElementToSIMDFPScalarRegisterFixed = 0x05228000, 3451b8021494Sopenharmony_ci SVEExtractElementToSIMDFPScalarRegisterFMask = 0xFF3EE000, 3452b8021494Sopenharmony_ci SVEExtractElementToSIMDFPScalarRegisterMask = 0xFF3FE000, 3453b8021494Sopenharmony_ci LASTA_v_p_z = SVEExtractElementToSIMDFPScalarRegisterFixed, 3454b8021494Sopenharmony_ci LASTB_v_p_z = SVEExtractElementToSIMDFPScalarRegisterFixed | 0x00010000 3455b8021494Sopenharmony_ci}; 3456b8021494Sopenharmony_ci 3457b8021494Sopenharmony_cienum SVEFFRInitialiseOp { 3458b8021494Sopenharmony_ci SVEFFRInitialiseFixed = 0x252C9000, 3459b8021494Sopenharmony_ci SVEFFRInitialiseFMask = 0xFF3FFFFF, 3460b8021494Sopenharmony_ci SVEFFRInitialiseMask = 0xFFFFFFFF, 3461b8021494Sopenharmony_ci SETFFR_f = SVEFFRInitialiseFixed 3462b8021494Sopenharmony_ci}; 3463b8021494Sopenharmony_ci 3464b8021494Sopenharmony_cienum SVEFFRWriteFromPredicateOp { 3465b8021494Sopenharmony_ci SVEFFRWriteFromPredicateFixed = 0x25289000, 3466b8021494Sopenharmony_ci SVEFFRWriteFromPredicateFMask = 0xFF3FFE1F, 3467b8021494Sopenharmony_ci SVEFFRWriteFromPredicateMask = 0xFFFFFE1F, 3468b8021494Sopenharmony_ci WRFFR_f_p = SVEFFRWriteFromPredicateFixed 3469b8021494Sopenharmony_ci}; 3470b8021494Sopenharmony_ci 3471b8021494Sopenharmony_cienum SVEFPAccumulatingReductionOp { 3472b8021494Sopenharmony_ci SVEFPAccumulatingReductionFixed = 0x65182000, 3473b8021494Sopenharmony_ci SVEFPAccumulatingReductionFMask = 0xFF38E000, 3474b8021494Sopenharmony_ci SVEFPAccumulatingReductionMask = 0xFF3FE000, 3475b8021494Sopenharmony_ci FADDA_v_p_z = SVEFPAccumulatingReductionFixed 3476b8021494Sopenharmony_ci}; 3477b8021494Sopenharmony_ci 3478b8021494Sopenharmony_cienum SVEFPArithmeticUnpredicatedOp { 3479b8021494Sopenharmony_ci SVEFPArithmeticUnpredicatedFixed = 0x65000000, 3480b8021494Sopenharmony_ci SVEFPArithmeticUnpredicatedFMask = 0xFF20E000, 3481b8021494Sopenharmony_ci SVEFPArithmeticUnpredicatedMask = 0xFF20FC00, 3482b8021494Sopenharmony_ci FADD_z_zz = SVEFPArithmeticUnpredicatedFixed, 3483b8021494Sopenharmony_ci FSUB_z_zz = SVEFPArithmeticUnpredicatedFixed | 0x00000400, 3484b8021494Sopenharmony_ci FMUL_z_zz = SVEFPArithmeticUnpredicatedFixed | 0x00000800, 3485b8021494Sopenharmony_ci FTSMUL_z_zz = SVEFPArithmeticUnpredicatedFixed | 0x00000C00, 3486b8021494Sopenharmony_ci FRECPS_z_zz = SVEFPArithmeticUnpredicatedFixed | 0x00001800, 3487b8021494Sopenharmony_ci FRSQRTS_z_zz = SVEFPArithmeticUnpredicatedFixed | 0x00001C00 3488b8021494Sopenharmony_ci}; 3489b8021494Sopenharmony_ci 3490b8021494Sopenharmony_cienum SVEFPArithmeticWithImm_PredicatedOp { 3491b8021494Sopenharmony_ci SVEFPArithmeticWithImm_PredicatedFixed = 0x65188000, 3492b8021494Sopenharmony_ci SVEFPArithmeticWithImm_PredicatedFMask = 0xFF38E3C0, 3493b8021494Sopenharmony_ci SVEFPArithmeticWithImm_PredicatedMask = 0xFF3FE3C0, 3494b8021494Sopenharmony_ci FADD_z_p_zs = SVEFPArithmeticWithImm_PredicatedFixed, 3495b8021494Sopenharmony_ci FSUB_z_p_zs = SVEFPArithmeticWithImm_PredicatedFixed | 0x00010000, 3496b8021494Sopenharmony_ci FMUL_z_p_zs = SVEFPArithmeticWithImm_PredicatedFixed | 0x00020000, 3497b8021494Sopenharmony_ci FSUBR_z_p_zs = SVEFPArithmeticWithImm_PredicatedFixed | 0x00030000, 3498b8021494Sopenharmony_ci FMAXNM_z_p_zs = SVEFPArithmeticWithImm_PredicatedFixed | 0x00040000, 3499b8021494Sopenharmony_ci FMINNM_z_p_zs = SVEFPArithmeticWithImm_PredicatedFixed | 0x00050000, 3500b8021494Sopenharmony_ci FMAX_z_p_zs = SVEFPArithmeticWithImm_PredicatedFixed | 0x00060000, 3501b8021494Sopenharmony_ci FMIN_z_p_zs = SVEFPArithmeticWithImm_PredicatedFixed | 0x00070000 3502b8021494Sopenharmony_ci}; 3503b8021494Sopenharmony_ci 3504b8021494Sopenharmony_cienum SVEFPArithmetic_PredicatedOp { 3505b8021494Sopenharmony_ci SVEFPArithmetic_PredicatedFixed = 0x65008000, 3506b8021494Sopenharmony_ci SVEFPArithmetic_PredicatedFMask = 0xFF30E000, 3507b8021494Sopenharmony_ci SVEFPArithmetic_PredicatedMask = 0xFF3FE000, 3508b8021494Sopenharmony_ci FADD_z_p_zz = SVEFPArithmetic_PredicatedFixed, 3509b8021494Sopenharmony_ci FSUB_z_p_zz = SVEFPArithmetic_PredicatedFixed | 0x00010000, 3510b8021494Sopenharmony_ci FMUL_z_p_zz = SVEFPArithmetic_PredicatedFixed | 0x00020000, 3511b8021494Sopenharmony_ci FSUBR_z_p_zz = SVEFPArithmetic_PredicatedFixed | 0x00030000, 3512b8021494Sopenharmony_ci FMAXNM_z_p_zz = SVEFPArithmetic_PredicatedFixed | 0x00040000, 3513b8021494Sopenharmony_ci FMINNM_z_p_zz = SVEFPArithmetic_PredicatedFixed | 0x00050000, 3514b8021494Sopenharmony_ci FMAX_z_p_zz = SVEFPArithmetic_PredicatedFixed | 0x00060000, 3515b8021494Sopenharmony_ci FMIN_z_p_zz = SVEFPArithmetic_PredicatedFixed | 0x00070000, 3516b8021494Sopenharmony_ci FABD_z_p_zz = SVEFPArithmetic_PredicatedFixed | 0x00080000, 3517b8021494Sopenharmony_ci FSCALE_z_p_zz = SVEFPArithmetic_PredicatedFixed | 0x00090000, 3518b8021494Sopenharmony_ci FMULX_z_p_zz = SVEFPArithmetic_PredicatedFixed | 0x000A0000, 3519b8021494Sopenharmony_ci FDIVR_z_p_zz = SVEFPArithmetic_PredicatedFixed | 0x000C0000, 3520b8021494Sopenharmony_ci FDIV_z_p_zz = SVEFPArithmetic_PredicatedFixed | 0x000D0000 3521b8021494Sopenharmony_ci}; 3522b8021494Sopenharmony_ci 3523b8021494Sopenharmony_cienum SVEFPCompareVectorsOp { 3524b8021494Sopenharmony_ci SVEFPCompareVectorsFixed = 0x65004000, 3525b8021494Sopenharmony_ci SVEFPCompareVectorsFMask = 0xFF204000, 3526b8021494Sopenharmony_ci SVEFPCompareVectorsMask = 0xFF20E010, 3527b8021494Sopenharmony_ci FCMGE_p_p_zz = SVEFPCompareVectorsFixed, 3528b8021494Sopenharmony_ci FCMGT_p_p_zz = SVEFPCompareVectorsFixed | 0x00000010, 3529b8021494Sopenharmony_ci FCMEQ_p_p_zz = SVEFPCompareVectorsFixed | 0x00002000, 3530b8021494Sopenharmony_ci FCMNE_p_p_zz = SVEFPCompareVectorsFixed | 0x00002010, 3531b8021494Sopenharmony_ci FCMUO_p_p_zz = SVEFPCompareVectorsFixed | 0x00008000, 3532b8021494Sopenharmony_ci FACGE_p_p_zz = SVEFPCompareVectorsFixed | 0x00008010, 3533b8021494Sopenharmony_ci FACGT_p_p_zz = SVEFPCompareVectorsFixed | 0x0000A010 3534b8021494Sopenharmony_ci}; 3535b8021494Sopenharmony_ci 3536b8021494Sopenharmony_cienum SVEFPCompareWithZeroOp { 3537b8021494Sopenharmony_ci SVEFPCompareWithZeroFixed = 0x65102000, 3538b8021494Sopenharmony_ci SVEFPCompareWithZeroFMask = 0xFF38E000, 3539b8021494Sopenharmony_ci SVEFPCompareWithZeroMask = 0xFF3FE010, 3540b8021494Sopenharmony_ci FCMGE_p_p_z0 = SVEFPCompareWithZeroFixed, 3541b8021494Sopenharmony_ci FCMGT_p_p_z0 = SVEFPCompareWithZeroFixed | 0x00000010, 3542b8021494Sopenharmony_ci FCMLT_p_p_z0 = SVEFPCompareWithZeroFixed | 0x00010000, 3543b8021494Sopenharmony_ci FCMLE_p_p_z0 = SVEFPCompareWithZeroFixed | 0x00010010, 3544b8021494Sopenharmony_ci FCMEQ_p_p_z0 = SVEFPCompareWithZeroFixed | 0x00020000, 3545b8021494Sopenharmony_ci FCMNE_p_p_z0 = SVEFPCompareWithZeroFixed | 0x00030000 3546b8021494Sopenharmony_ci}; 3547b8021494Sopenharmony_ci 3548b8021494Sopenharmony_cienum SVEFPComplexAdditionOp { 3549b8021494Sopenharmony_ci SVEFPComplexAdditionFixed = 0x64008000, 3550b8021494Sopenharmony_ci SVEFPComplexAdditionFMask = 0xFF3EE000, 3551b8021494Sopenharmony_ci SVEFPComplexAdditionMask = 0xFF3EE000, 3552b8021494Sopenharmony_ci FCADD_z_p_zz = SVEFPComplexAdditionFixed 3553b8021494Sopenharmony_ci}; 3554b8021494Sopenharmony_ci 3555b8021494Sopenharmony_cienum SVEFPComplexMulAddOp { 3556b8021494Sopenharmony_ci SVEFPComplexMulAddFixed = 0x64000000, 3557b8021494Sopenharmony_ci SVEFPComplexMulAddFMask = 0xFF208000, 3558b8021494Sopenharmony_ci SVEFPComplexMulAddMask = 0xFF208000, 3559b8021494Sopenharmony_ci FCMLA_z_p_zzz = SVEFPComplexMulAddFixed 3560b8021494Sopenharmony_ci}; 3561b8021494Sopenharmony_ci 3562b8021494Sopenharmony_cienum SVEFPComplexMulAddIndexOp { 3563b8021494Sopenharmony_ci SVEFPComplexMulAddIndexFixed = 0x64201000, 3564b8021494Sopenharmony_ci SVEFPComplexMulAddIndexFMask = 0xFF20F000, 3565b8021494Sopenharmony_ci SVEFPComplexMulAddIndexMask = 0xFFE0F000, 3566b8021494Sopenharmony_ci FCMLA_z_zzzi_h = SVEFPComplexMulAddIndexFixed | 0x00800000, 3567b8021494Sopenharmony_ci FCMLA_z_zzzi_s = SVEFPComplexMulAddIndexFixed | 0x00C00000 3568b8021494Sopenharmony_ci}; 3569b8021494Sopenharmony_ci 3570b8021494Sopenharmony_cienum SVEFPConvertPrecisionOp { 3571b8021494Sopenharmony_ci SVEFPConvertPrecisionFixed = 0x6508A000, 3572b8021494Sopenharmony_ci SVEFPConvertPrecisionFMask = 0xFF3CE000, 3573b8021494Sopenharmony_ci SVEFPConvertPrecisionMask = 0xFFFFE000, 3574b8021494Sopenharmony_ci FCVT_z_p_z_s2h = SVEFPConvertPrecisionFixed | 0x00800000, 3575b8021494Sopenharmony_ci FCVT_z_p_z_h2s = SVEFPConvertPrecisionFixed | 0x00810000, 3576b8021494Sopenharmony_ci FCVT_z_p_z_d2h = SVEFPConvertPrecisionFixed | 0x00C00000, 3577b8021494Sopenharmony_ci FCVT_z_p_z_h2d = SVEFPConvertPrecisionFixed | 0x00C10000, 3578b8021494Sopenharmony_ci FCVT_z_p_z_d2s = SVEFPConvertPrecisionFixed | 0x00C20000, 3579b8021494Sopenharmony_ci FCVT_z_p_z_s2d = SVEFPConvertPrecisionFixed | 0x00C30000 3580b8021494Sopenharmony_ci}; 3581b8021494Sopenharmony_ci 3582b8021494Sopenharmony_cienum SVEFPConvertToIntOp { 3583b8021494Sopenharmony_ci SVEFPConvertToIntFixed = 0x6518A000, 3584b8021494Sopenharmony_ci SVEFPConvertToIntFMask = 0xFF38E000, 3585b8021494Sopenharmony_ci SVEFPConvertToIntMask = 0xFFFFE000, 3586b8021494Sopenharmony_ci FCVTZS_z_p_z_fp162h = SVEFPConvertToIntFixed | 0x00420000, 3587b8021494Sopenharmony_ci FCVTZU_z_p_z_fp162h = SVEFPConvertToIntFixed | 0x00430000, 3588b8021494Sopenharmony_ci FCVTZS_z_p_z_fp162w = SVEFPConvertToIntFixed | 0x00440000, 3589b8021494Sopenharmony_ci FCVTZU_z_p_z_fp162w = SVEFPConvertToIntFixed | 0x00450000, 3590b8021494Sopenharmony_ci FCVTZS_z_p_z_fp162x = SVEFPConvertToIntFixed | 0x00460000, 3591b8021494Sopenharmony_ci FCVTZU_z_p_z_fp162x = SVEFPConvertToIntFixed | 0x00470000, 3592b8021494Sopenharmony_ci FCVTZS_z_p_z_s2w = SVEFPConvertToIntFixed | 0x00840000, 3593b8021494Sopenharmony_ci FCVTZU_z_p_z_s2w = SVEFPConvertToIntFixed | 0x00850000, 3594b8021494Sopenharmony_ci FCVTZS_z_p_z_d2w = SVEFPConvertToIntFixed | 0x00C00000, 3595b8021494Sopenharmony_ci FCVTZU_z_p_z_d2w = SVEFPConvertToIntFixed | 0x00C10000, 3596b8021494Sopenharmony_ci FCVTZS_z_p_z_s2x = SVEFPConvertToIntFixed | 0x00C40000, 3597b8021494Sopenharmony_ci FCVTZU_z_p_z_s2x = SVEFPConvertToIntFixed | 0x00C50000, 3598b8021494Sopenharmony_ci FCVTZS_z_p_z_d2x = SVEFPConvertToIntFixed | 0x00C60000, 3599b8021494Sopenharmony_ci FCVTZU_z_p_z_d2x = SVEFPConvertToIntFixed | 0x00C70000 3600b8021494Sopenharmony_ci}; 3601b8021494Sopenharmony_ci 3602b8021494Sopenharmony_cienum SVEFPExponentialAcceleratorOp { 3603b8021494Sopenharmony_ci SVEFPExponentialAcceleratorFixed = 0x0420B800, 3604b8021494Sopenharmony_ci SVEFPExponentialAcceleratorFMask = 0xFF20FC00, 3605b8021494Sopenharmony_ci SVEFPExponentialAcceleratorMask = 0xFF3FFC00, 3606b8021494Sopenharmony_ci FEXPA_z_z = SVEFPExponentialAcceleratorFixed 3607b8021494Sopenharmony_ci}; 3608b8021494Sopenharmony_ci 3609b8021494Sopenharmony_cienum SVEFPFastReductionOp { 3610b8021494Sopenharmony_ci SVEFPFastReductionFixed = 0x65002000, 3611b8021494Sopenharmony_ci SVEFPFastReductionFMask = 0xFF38E000, 3612b8021494Sopenharmony_ci SVEFPFastReductionMask = 0xFF3FE000, 3613b8021494Sopenharmony_ci FADDV_v_p_z = SVEFPFastReductionFixed, 3614b8021494Sopenharmony_ci FMAXNMV_v_p_z = SVEFPFastReductionFixed | 0x00040000, 3615b8021494Sopenharmony_ci FMINNMV_v_p_z = SVEFPFastReductionFixed | 0x00050000, 3616b8021494Sopenharmony_ci FMAXV_v_p_z = SVEFPFastReductionFixed | 0x00060000, 3617b8021494Sopenharmony_ci FMINV_v_p_z = SVEFPFastReductionFixed | 0x00070000 3618b8021494Sopenharmony_ci}; 3619b8021494Sopenharmony_ci 3620b8021494Sopenharmony_cienum SVEFPMulAddOp { 3621b8021494Sopenharmony_ci SVEFPMulAddFixed = 0x65200000, 3622b8021494Sopenharmony_ci SVEFPMulAddFMask = 0xFF200000, 3623b8021494Sopenharmony_ci SVEFPMulAddMask = 0xFF20E000, 3624b8021494Sopenharmony_ci FMLA_z_p_zzz = SVEFPMulAddFixed, 3625b8021494Sopenharmony_ci FMLS_z_p_zzz = SVEFPMulAddFixed | 0x00002000, 3626b8021494Sopenharmony_ci FNMLA_z_p_zzz = SVEFPMulAddFixed | 0x00004000, 3627b8021494Sopenharmony_ci FNMLS_z_p_zzz = SVEFPMulAddFixed | 0x00006000, 3628b8021494Sopenharmony_ci FMAD_z_p_zzz = SVEFPMulAddFixed | 0x00008000, 3629b8021494Sopenharmony_ci FMSB_z_p_zzz = SVEFPMulAddFixed | 0x0000A000, 3630b8021494Sopenharmony_ci FNMAD_z_p_zzz = SVEFPMulAddFixed | 0x0000C000, 3631b8021494Sopenharmony_ci FNMSB_z_p_zzz = SVEFPMulAddFixed | 0x0000E000 3632b8021494Sopenharmony_ci}; 3633b8021494Sopenharmony_ci 3634b8021494Sopenharmony_cienum SVEFPMulAddIndexOp { 3635b8021494Sopenharmony_ci SVEFPMulAddIndexFixed = 0x64200000, 3636b8021494Sopenharmony_ci SVEFPMulAddIndexFMask = 0xFF20F800, 3637b8021494Sopenharmony_ci SVEFPMulAddIndexMask = 0xFFE0FC00, 3638b8021494Sopenharmony_ci FMLA_z_zzzi_h = SVEFPMulAddIndexFixed, 3639b8021494Sopenharmony_ci FMLA_z_zzzi_h_i3h = FMLA_z_zzzi_h | 0x00400000, 3640b8021494Sopenharmony_ci FMLS_z_zzzi_h = SVEFPMulAddIndexFixed | 0x00000400, 3641b8021494Sopenharmony_ci FMLS_z_zzzi_h_i3h = FMLS_z_zzzi_h | 0x00400000, 3642b8021494Sopenharmony_ci FMLA_z_zzzi_s = SVEFPMulAddIndexFixed | 0x00800000, 3643b8021494Sopenharmony_ci FMLS_z_zzzi_s = SVEFPMulAddIndexFixed | 0x00800400, 3644b8021494Sopenharmony_ci FMLA_z_zzzi_d = SVEFPMulAddIndexFixed | 0x00C00000, 3645b8021494Sopenharmony_ci FMLS_z_zzzi_d = SVEFPMulAddIndexFixed | 0x00C00400 3646b8021494Sopenharmony_ci}; 3647b8021494Sopenharmony_ci 3648b8021494Sopenharmony_cienum SVEFPMulIndexOp { 3649b8021494Sopenharmony_ci SVEFPMulIndexFixed = 0x64202000, 3650b8021494Sopenharmony_ci SVEFPMulIndexFMask = 0xFF20FC00, 3651b8021494Sopenharmony_ci SVEFPMulIndexMask = 0xFFE0FC00, 3652b8021494Sopenharmony_ci FMUL_z_zzi_h = SVEFPMulIndexFixed, 3653b8021494Sopenharmony_ci FMUL_z_zzi_h_i3h = FMUL_z_zzi_h | 0x00400000, 3654b8021494Sopenharmony_ci FMUL_z_zzi_s = SVEFPMulIndexFixed | 0x00800000, 3655b8021494Sopenharmony_ci FMUL_z_zzi_d = SVEFPMulIndexFixed | 0x00C00000 3656b8021494Sopenharmony_ci}; 3657b8021494Sopenharmony_ci 3658b8021494Sopenharmony_cienum SVEFPRoundToIntegralValueOp { 3659b8021494Sopenharmony_ci SVEFPRoundToIntegralValueFixed = 0x6500A000, 3660b8021494Sopenharmony_ci SVEFPRoundToIntegralValueFMask = 0xFF38E000, 3661b8021494Sopenharmony_ci SVEFPRoundToIntegralValueMask = 0xFF3FE000, 3662b8021494Sopenharmony_ci FRINTN_z_p_z = SVEFPRoundToIntegralValueFixed, 3663b8021494Sopenharmony_ci FRINTP_z_p_z = SVEFPRoundToIntegralValueFixed | 0x00010000, 3664b8021494Sopenharmony_ci FRINTM_z_p_z = SVEFPRoundToIntegralValueFixed | 0x00020000, 3665b8021494Sopenharmony_ci FRINTZ_z_p_z = SVEFPRoundToIntegralValueFixed | 0x00030000, 3666b8021494Sopenharmony_ci FRINTA_z_p_z = SVEFPRoundToIntegralValueFixed | 0x00040000, 3667b8021494Sopenharmony_ci FRINTX_z_p_z = SVEFPRoundToIntegralValueFixed | 0x00060000, 3668b8021494Sopenharmony_ci FRINTI_z_p_z = SVEFPRoundToIntegralValueFixed | 0x00070000 3669b8021494Sopenharmony_ci}; 3670b8021494Sopenharmony_ci 3671b8021494Sopenharmony_cienum SVEFPTrigMulAddCoefficientOp { 3672b8021494Sopenharmony_ci SVEFPTrigMulAddCoefficientFixed = 0x65108000, 3673b8021494Sopenharmony_ci SVEFPTrigMulAddCoefficientFMask = 0xFF38FC00, 3674b8021494Sopenharmony_ci SVEFPTrigMulAddCoefficientMask = 0xFF38FC00, 3675b8021494Sopenharmony_ci FTMAD_z_zzi = SVEFPTrigMulAddCoefficientFixed 3676b8021494Sopenharmony_ci}; 3677b8021494Sopenharmony_ci 3678b8021494Sopenharmony_cienum SVEFPTrigSelectCoefficientOp { 3679b8021494Sopenharmony_ci SVEFPTrigSelectCoefficientFixed = 0x0420B000, 3680b8021494Sopenharmony_ci SVEFPTrigSelectCoefficientFMask = 0xFF20F800, 3681b8021494Sopenharmony_ci SVEFPTrigSelectCoefficientMask = 0xFF20FC00, 3682b8021494Sopenharmony_ci FTSSEL_z_zz = SVEFPTrigSelectCoefficientFixed 3683b8021494Sopenharmony_ci}; 3684b8021494Sopenharmony_ci 3685b8021494Sopenharmony_cienum SVEFPUnaryOpOp { 3686b8021494Sopenharmony_ci SVEFPUnaryOpFixed = 0x650CA000, 3687b8021494Sopenharmony_ci SVEFPUnaryOpFMask = 0xFF3CE000, 3688b8021494Sopenharmony_ci SVEFPUnaryOpMask = 0xFF3FE000, 3689b8021494Sopenharmony_ci FRECPX_z_p_z = SVEFPUnaryOpFixed, 3690b8021494Sopenharmony_ci FSQRT_z_p_z = SVEFPUnaryOpFixed | 0x00010000 3691b8021494Sopenharmony_ci}; 3692b8021494Sopenharmony_ci 3693b8021494Sopenharmony_cienum SVEFPUnaryOpUnpredicatedOp { 3694b8021494Sopenharmony_ci SVEFPUnaryOpUnpredicatedFixed = 0x65083000, 3695b8021494Sopenharmony_ci SVEFPUnaryOpUnpredicatedFMask = 0xFF38F000, 3696b8021494Sopenharmony_ci SVEFPUnaryOpUnpredicatedMask = 0xFF3FFC00, 3697b8021494Sopenharmony_ci FRECPE_z_z = SVEFPUnaryOpUnpredicatedFixed | 0x00060000, 3698b8021494Sopenharmony_ci FRSQRTE_z_z = SVEFPUnaryOpUnpredicatedFixed | 0x00070000 3699b8021494Sopenharmony_ci}; 3700b8021494Sopenharmony_ci 3701b8021494Sopenharmony_cienum SVEIncDecByPredicateCountOp { 3702b8021494Sopenharmony_ci SVEIncDecByPredicateCountFixed = 0x25288000, 3703b8021494Sopenharmony_ci SVEIncDecByPredicateCountFMask = 0xFF38F000, 3704b8021494Sopenharmony_ci SVEIncDecByPredicateCountMask = 0xFF3FFE00, 3705b8021494Sopenharmony_ci SQINCP_z_p_z = SVEIncDecByPredicateCountFixed, 3706b8021494Sopenharmony_ci SQINCP_r_p_r_sx = SVEIncDecByPredicateCountFixed | 0x00000800, 3707b8021494Sopenharmony_ci SQINCP_r_p_r_x = SVEIncDecByPredicateCountFixed | 0x00000C00, 3708b8021494Sopenharmony_ci UQINCP_z_p_z = SVEIncDecByPredicateCountFixed | 0x00010000, 3709b8021494Sopenharmony_ci UQINCP_r_p_r_uw = SVEIncDecByPredicateCountFixed | 0x00010800, 3710b8021494Sopenharmony_ci UQINCP_r_p_r_x = SVEIncDecByPredicateCountFixed | 0x00010C00, 3711b8021494Sopenharmony_ci SQDECP_z_p_z = SVEIncDecByPredicateCountFixed | 0x00020000, 3712b8021494Sopenharmony_ci SQDECP_r_p_r_sx = SVEIncDecByPredicateCountFixed | 0x00020800, 3713b8021494Sopenharmony_ci SQDECP_r_p_r_x = SVEIncDecByPredicateCountFixed | 0x00020C00, 3714b8021494Sopenharmony_ci UQDECP_z_p_z = SVEIncDecByPredicateCountFixed | 0x00030000, 3715b8021494Sopenharmony_ci UQDECP_r_p_r_uw = SVEIncDecByPredicateCountFixed | 0x00030800, 3716b8021494Sopenharmony_ci UQDECP_r_p_r_x = SVEIncDecByPredicateCountFixed | 0x00030C00, 3717b8021494Sopenharmony_ci INCP_z_p_z = SVEIncDecByPredicateCountFixed | 0x00040000, 3718b8021494Sopenharmony_ci INCP_r_p_r = SVEIncDecByPredicateCountFixed | 0x00040800, 3719b8021494Sopenharmony_ci DECP_z_p_z = SVEIncDecByPredicateCountFixed | 0x00050000, 3720b8021494Sopenharmony_ci DECP_r_p_r = SVEIncDecByPredicateCountFixed | 0x00050800 3721b8021494Sopenharmony_ci}; 3722b8021494Sopenharmony_ci 3723b8021494Sopenharmony_cienum SVEIncDecRegisterByElementCountOp { 3724b8021494Sopenharmony_ci SVEIncDecRegisterByElementCountFixed = 0x0430E000, 3725b8021494Sopenharmony_ci SVEIncDecRegisterByElementCountFMask = 0xFF30F800, 3726b8021494Sopenharmony_ci SVEIncDecRegisterByElementCountMask = 0xFFF0FC00, 3727b8021494Sopenharmony_ci INCB_r_rs = SVEIncDecRegisterByElementCountFixed, 3728b8021494Sopenharmony_ci DECB_r_rs = SVEIncDecRegisterByElementCountFixed | 0x00000400, 3729b8021494Sopenharmony_ci INCH_r_rs = SVEIncDecRegisterByElementCountFixed | 0x00400000, 3730b8021494Sopenharmony_ci DECH_r_rs = SVEIncDecRegisterByElementCountFixed | 0x00400400, 3731b8021494Sopenharmony_ci INCW_r_rs = SVEIncDecRegisterByElementCountFixed | 0x00800000, 3732b8021494Sopenharmony_ci DECW_r_rs = SVEIncDecRegisterByElementCountFixed | 0x00800400, 3733b8021494Sopenharmony_ci INCD_r_rs = SVEIncDecRegisterByElementCountFixed | 0x00C00000, 3734b8021494Sopenharmony_ci DECD_r_rs = SVEIncDecRegisterByElementCountFixed | 0x00C00400 3735b8021494Sopenharmony_ci}; 3736b8021494Sopenharmony_ci 3737b8021494Sopenharmony_cienum SVEIncDecVectorByElementCountOp { 3738b8021494Sopenharmony_ci SVEIncDecVectorByElementCountFixed = 0x0430C000, 3739b8021494Sopenharmony_ci SVEIncDecVectorByElementCountFMask = 0xFF30F800, 3740b8021494Sopenharmony_ci SVEIncDecVectorByElementCountMask = 0xFFF0FC00, 3741b8021494Sopenharmony_ci INCH_z_zs = SVEIncDecVectorByElementCountFixed | 0x00400000, 3742b8021494Sopenharmony_ci DECH_z_zs = SVEIncDecVectorByElementCountFixed | 0x00400400, 3743b8021494Sopenharmony_ci INCW_z_zs = SVEIncDecVectorByElementCountFixed | 0x00800000, 3744b8021494Sopenharmony_ci DECW_z_zs = SVEIncDecVectorByElementCountFixed | 0x00800400, 3745b8021494Sopenharmony_ci INCD_z_zs = SVEIncDecVectorByElementCountFixed | 0x00C00000, 3746b8021494Sopenharmony_ci DECD_z_zs = SVEIncDecVectorByElementCountFixed | 0x00C00400 3747b8021494Sopenharmony_ci}; 3748b8021494Sopenharmony_ci 3749b8021494Sopenharmony_cienum SVEIndexGenerationOp { 3750b8021494Sopenharmony_ci SVEIndexGenerationFixed = 0x04204000, 3751b8021494Sopenharmony_ci SVEIndexGenerationFMask = 0xFF20F000, 3752b8021494Sopenharmony_ci SVEIndexGenerationMask = 0xFF20FC00, 3753b8021494Sopenharmony_ci INDEX_z_ii = SVEIndexGenerationFixed, 3754b8021494Sopenharmony_ci INDEX_z_ri = SVEIndexGenerationFixed | 0x00000400, 3755b8021494Sopenharmony_ci INDEX_z_ir = SVEIndexGenerationFixed | 0x00000800, 3756b8021494Sopenharmony_ci INDEX_z_rr = SVEIndexGenerationFixed | 0x00000C00 3757b8021494Sopenharmony_ci}; 3758b8021494Sopenharmony_ci 3759b8021494Sopenharmony_cienum SVEInsertGeneralRegisterOp { 3760b8021494Sopenharmony_ci SVEInsertGeneralRegisterFixed = 0x05243800, 3761b8021494Sopenharmony_ci SVEInsertGeneralRegisterFMask = 0xFF3FFC00, 3762b8021494Sopenharmony_ci SVEInsertGeneralRegisterMask = 0xFF3FFC00, 3763b8021494Sopenharmony_ci INSR_z_r = SVEInsertGeneralRegisterFixed 3764b8021494Sopenharmony_ci}; 3765b8021494Sopenharmony_ci 3766b8021494Sopenharmony_cienum SVEInsertSIMDFPScalarRegisterOp { 3767b8021494Sopenharmony_ci SVEInsertSIMDFPScalarRegisterFixed = 0x05343800, 3768b8021494Sopenharmony_ci SVEInsertSIMDFPScalarRegisterFMask = 0xFF3FFC00, 3769b8021494Sopenharmony_ci SVEInsertSIMDFPScalarRegisterMask = 0xFF3FFC00, 3770b8021494Sopenharmony_ci INSR_z_v = SVEInsertSIMDFPScalarRegisterFixed 3771b8021494Sopenharmony_ci}; 3772b8021494Sopenharmony_ci 3773b8021494Sopenharmony_cienum SVEIntAddSubtractImm_UnpredicatedOp { 3774b8021494Sopenharmony_ci SVEIntAddSubtractImm_UnpredicatedFixed = 0x2520C000, 3775b8021494Sopenharmony_ci SVEIntAddSubtractImm_UnpredicatedFMask = 0xFF38C000, 3776b8021494Sopenharmony_ci SVEIntAddSubtractImm_UnpredicatedMask = 0xFF3FC000, 3777b8021494Sopenharmony_ci ADD_z_zi = SVEIntAddSubtractImm_UnpredicatedFixed, 3778b8021494Sopenharmony_ci SUB_z_zi = SVEIntAddSubtractImm_UnpredicatedFixed | 0x00010000, 3779b8021494Sopenharmony_ci SUBR_z_zi = SVEIntAddSubtractImm_UnpredicatedFixed | 0x00030000, 3780b8021494Sopenharmony_ci SQADD_z_zi = SVEIntAddSubtractImm_UnpredicatedFixed | 0x00040000, 3781b8021494Sopenharmony_ci UQADD_z_zi = SVEIntAddSubtractImm_UnpredicatedFixed | 0x00050000, 3782b8021494Sopenharmony_ci SQSUB_z_zi = SVEIntAddSubtractImm_UnpredicatedFixed | 0x00060000, 3783b8021494Sopenharmony_ci UQSUB_z_zi = SVEIntAddSubtractImm_UnpredicatedFixed | 0x00070000 3784b8021494Sopenharmony_ci}; 3785b8021494Sopenharmony_ci 3786b8021494Sopenharmony_cienum SVEIntAddSubtractVectors_PredicatedOp { 3787b8021494Sopenharmony_ci SVEIntAddSubtractVectors_PredicatedFixed = 0x04000000, 3788b8021494Sopenharmony_ci SVEIntAddSubtractVectors_PredicatedFMask = 0xFF38E000, 3789b8021494Sopenharmony_ci SVEIntAddSubtractVectors_PredicatedMask = 0xFF3FE000, 3790b8021494Sopenharmony_ci ADD_z_p_zz = SVEIntAddSubtractVectors_PredicatedFixed, 3791b8021494Sopenharmony_ci SUB_z_p_zz = SVEIntAddSubtractVectors_PredicatedFixed | 0x00010000, 3792b8021494Sopenharmony_ci SUBR_z_p_zz = SVEIntAddSubtractVectors_PredicatedFixed | 0x00030000 3793b8021494Sopenharmony_ci}; 3794b8021494Sopenharmony_ci 3795b8021494Sopenharmony_cienum SVEIntArithmeticUnpredicatedOp { 3796b8021494Sopenharmony_ci SVEIntArithmeticUnpredicatedFixed = 0x04200000, 3797b8021494Sopenharmony_ci SVEIntArithmeticUnpredicatedFMask = 0xFF20E000, 3798b8021494Sopenharmony_ci SVEIntArithmeticUnpredicatedMask = 0xFF20FC00, 3799b8021494Sopenharmony_ci ADD_z_zz = SVEIntArithmeticUnpredicatedFixed, 3800b8021494Sopenharmony_ci SUB_z_zz = SVEIntArithmeticUnpredicatedFixed | 0x00000400, 3801b8021494Sopenharmony_ci SQADD_z_zz = SVEIntArithmeticUnpredicatedFixed | 0x00001000, 3802b8021494Sopenharmony_ci UQADD_z_zz = SVEIntArithmeticUnpredicatedFixed | 0x00001400, 3803b8021494Sopenharmony_ci SQSUB_z_zz = SVEIntArithmeticUnpredicatedFixed | 0x00001800, 3804b8021494Sopenharmony_ci UQSUB_z_zz = SVEIntArithmeticUnpredicatedFixed | 0x00001C00 3805b8021494Sopenharmony_ci}; 3806b8021494Sopenharmony_ci 3807b8021494Sopenharmony_cienum SVEIntCompareScalarCountAndLimitOp { 3808b8021494Sopenharmony_ci SVEIntCompareScalarCountAndLimitFixed = 0x25200000, 3809b8021494Sopenharmony_ci SVEIntCompareScalarCountAndLimitFMask = 0xFF20E000, 3810b8021494Sopenharmony_ci SVEIntCompareScalarCountAndLimitMask = 0xFF20EC10, 3811b8021494Sopenharmony_ci WHILELT_p_p_rr = SVEIntCompareScalarCountAndLimitFixed | 0x00000400, 3812b8021494Sopenharmony_ci WHILELE_p_p_rr = SVEIntCompareScalarCountAndLimitFixed | 0x00000410, 3813b8021494Sopenharmony_ci WHILELO_p_p_rr = SVEIntCompareScalarCountAndLimitFixed | 0x00000C00, 3814b8021494Sopenharmony_ci WHILELS_p_p_rr = SVEIntCompareScalarCountAndLimitFixed | 0x00000C10 3815b8021494Sopenharmony_ci}; 3816b8021494Sopenharmony_ci 3817b8021494Sopenharmony_cienum SVEIntCompareSignedImmOp { 3818b8021494Sopenharmony_ci SVEIntCompareSignedImmFixed = 0x25000000, 3819b8021494Sopenharmony_ci SVEIntCompareSignedImmFMask = 0xFF204000, 3820b8021494Sopenharmony_ci SVEIntCompareSignedImmMask = 0xFF20E010, 3821b8021494Sopenharmony_ci CMPGE_p_p_zi = SVEIntCompareSignedImmFixed, 3822b8021494Sopenharmony_ci CMPGT_p_p_zi = SVEIntCompareSignedImmFixed | 0x00000010, 3823b8021494Sopenharmony_ci CMPLT_p_p_zi = SVEIntCompareSignedImmFixed | 0x00002000, 3824b8021494Sopenharmony_ci CMPLE_p_p_zi = SVEIntCompareSignedImmFixed | 0x00002010, 3825b8021494Sopenharmony_ci CMPEQ_p_p_zi = SVEIntCompareSignedImmFixed | 0x00008000, 3826b8021494Sopenharmony_ci CMPNE_p_p_zi = SVEIntCompareSignedImmFixed | 0x00008010 3827b8021494Sopenharmony_ci}; 3828b8021494Sopenharmony_ci 3829b8021494Sopenharmony_cienum SVEIntCompareUnsignedImmOp { 3830b8021494Sopenharmony_ci SVEIntCompareUnsignedImmFixed = 0x24200000, 3831b8021494Sopenharmony_ci SVEIntCompareUnsignedImmFMask = 0xFF200000, 3832b8021494Sopenharmony_ci SVEIntCompareUnsignedImmMask = 0xFF202010, 3833b8021494Sopenharmony_ci CMPHS_p_p_zi = SVEIntCompareUnsignedImmFixed, 3834b8021494Sopenharmony_ci CMPHI_p_p_zi = SVEIntCompareUnsignedImmFixed | 0x00000010, 3835b8021494Sopenharmony_ci CMPLO_p_p_zi = SVEIntCompareUnsignedImmFixed | 0x00002000, 3836b8021494Sopenharmony_ci CMPLS_p_p_zi = SVEIntCompareUnsignedImmFixed | 0x00002010 3837b8021494Sopenharmony_ci}; 3838b8021494Sopenharmony_ci 3839b8021494Sopenharmony_cienum SVEIntCompareVectorsOp { 3840b8021494Sopenharmony_ci SVEIntCompareVectorsFixed = 0x24000000, 3841b8021494Sopenharmony_ci SVEIntCompareVectorsFMask = 0xFF200000, 3842b8021494Sopenharmony_ci SVEIntCompareVectorsMask = 0xFF20E010, 3843b8021494Sopenharmony_ci CMPHS_p_p_zz = SVEIntCompareVectorsFixed, 3844b8021494Sopenharmony_ci CMPHI_p_p_zz = SVEIntCompareVectorsFixed | 0x00000010, 3845b8021494Sopenharmony_ci CMPEQ_p_p_zw = SVEIntCompareVectorsFixed | 0x00002000, 3846b8021494Sopenharmony_ci CMPNE_p_p_zw = SVEIntCompareVectorsFixed | 0x00002010, 3847b8021494Sopenharmony_ci CMPGE_p_p_zw = SVEIntCompareVectorsFixed | 0x00004000, 3848b8021494Sopenharmony_ci CMPGT_p_p_zw = SVEIntCompareVectorsFixed | 0x00004010, 3849b8021494Sopenharmony_ci CMPLT_p_p_zw = SVEIntCompareVectorsFixed | 0x00006000, 3850b8021494Sopenharmony_ci CMPLE_p_p_zw = SVEIntCompareVectorsFixed | 0x00006010, 3851b8021494Sopenharmony_ci CMPGE_p_p_zz = SVEIntCompareVectorsFixed | 0x00008000, 3852b8021494Sopenharmony_ci CMPGT_p_p_zz = SVEIntCompareVectorsFixed | 0x00008010, 3853b8021494Sopenharmony_ci CMPEQ_p_p_zz = SVEIntCompareVectorsFixed | 0x0000A000, 3854b8021494Sopenharmony_ci CMPNE_p_p_zz = SVEIntCompareVectorsFixed | 0x0000A010, 3855b8021494Sopenharmony_ci CMPHS_p_p_zw = SVEIntCompareVectorsFixed | 0x0000C000, 3856b8021494Sopenharmony_ci CMPHI_p_p_zw = SVEIntCompareVectorsFixed | 0x0000C010, 3857b8021494Sopenharmony_ci CMPLO_p_p_zw = SVEIntCompareVectorsFixed | 0x0000E000, 3858b8021494Sopenharmony_ci CMPLS_p_p_zw = SVEIntCompareVectorsFixed | 0x0000E010 3859b8021494Sopenharmony_ci}; 3860b8021494Sopenharmony_ci 3861b8021494Sopenharmony_cienum SVEIntConvertToFPOp { 3862b8021494Sopenharmony_ci SVEIntConvertToFPFixed = 0x6510A000, 3863b8021494Sopenharmony_ci SVEIntConvertToFPFMask = 0xFF38E000, 3864b8021494Sopenharmony_ci SVEIntConvertToFPMask = 0xFFFFE000, 3865b8021494Sopenharmony_ci SCVTF_z_p_z_h2fp16 = SVEIntConvertToFPFixed | 0x00420000, 3866b8021494Sopenharmony_ci UCVTF_z_p_z_h2fp16 = SVEIntConvertToFPFixed | 0x00430000, 3867b8021494Sopenharmony_ci SCVTF_z_p_z_w2fp16 = SVEIntConvertToFPFixed | 0x00440000, 3868b8021494Sopenharmony_ci UCVTF_z_p_z_w2fp16 = SVEIntConvertToFPFixed | 0x00450000, 3869b8021494Sopenharmony_ci SCVTF_z_p_z_x2fp16 = SVEIntConvertToFPFixed | 0x00460000, 3870b8021494Sopenharmony_ci UCVTF_z_p_z_x2fp16 = SVEIntConvertToFPFixed | 0x00470000, 3871b8021494Sopenharmony_ci SCVTF_z_p_z_w2s = SVEIntConvertToFPFixed | 0x00840000, 3872b8021494Sopenharmony_ci UCVTF_z_p_z_w2s = SVEIntConvertToFPFixed | 0x00850000, 3873b8021494Sopenharmony_ci SCVTF_z_p_z_w2d = SVEIntConvertToFPFixed | 0x00C00000, 3874b8021494Sopenharmony_ci UCVTF_z_p_z_w2d = SVEIntConvertToFPFixed | 0x00C10000, 3875b8021494Sopenharmony_ci SCVTF_z_p_z_x2s = SVEIntConvertToFPFixed | 0x00C40000, 3876b8021494Sopenharmony_ci UCVTF_z_p_z_x2s = SVEIntConvertToFPFixed | 0x00C50000, 3877b8021494Sopenharmony_ci SCVTF_z_p_z_x2d = SVEIntConvertToFPFixed | 0x00C60000, 3878b8021494Sopenharmony_ci UCVTF_z_p_z_x2d = SVEIntConvertToFPFixed | 0x00C70000 3879b8021494Sopenharmony_ci}; 3880b8021494Sopenharmony_ci 3881b8021494Sopenharmony_cienum SVEIntDivideVectors_PredicatedOp { 3882b8021494Sopenharmony_ci SVEIntDivideVectors_PredicatedFixed = 0x04140000, 3883b8021494Sopenharmony_ci SVEIntDivideVectors_PredicatedFMask = 0xFF3CE000, 3884b8021494Sopenharmony_ci SVEIntDivideVectors_PredicatedMask = 0xFF3FE000, 3885b8021494Sopenharmony_ci SDIV_z_p_zz = SVEIntDivideVectors_PredicatedFixed, 3886b8021494Sopenharmony_ci UDIV_z_p_zz = SVEIntDivideVectors_PredicatedFixed | 0x00010000, 3887b8021494Sopenharmony_ci SDIVR_z_p_zz = SVEIntDivideVectors_PredicatedFixed | 0x00020000, 3888b8021494Sopenharmony_ci UDIVR_z_p_zz = SVEIntDivideVectors_PredicatedFixed | 0x00030000 3889b8021494Sopenharmony_ci}; 3890b8021494Sopenharmony_ci 3891b8021494Sopenharmony_cienum SVEIntMinMaxDifference_PredicatedOp { 3892b8021494Sopenharmony_ci SVEIntMinMaxDifference_PredicatedFixed = 0x04080000, 3893b8021494Sopenharmony_ci SVEIntMinMaxDifference_PredicatedFMask = 0xFF38E000, 3894b8021494Sopenharmony_ci SVEIntMinMaxDifference_PredicatedMask = 0xFF3FE000, 3895b8021494Sopenharmony_ci SMAX_z_p_zz = SVEIntMinMaxDifference_PredicatedFixed, 3896b8021494Sopenharmony_ci UMAX_z_p_zz = SVEIntMinMaxDifference_PredicatedFixed | 0x00010000, 3897b8021494Sopenharmony_ci SMIN_z_p_zz = SVEIntMinMaxDifference_PredicatedFixed | 0x00020000, 3898b8021494Sopenharmony_ci UMIN_z_p_zz = SVEIntMinMaxDifference_PredicatedFixed | 0x00030000, 3899b8021494Sopenharmony_ci SABD_z_p_zz = SVEIntMinMaxDifference_PredicatedFixed | 0x00040000, 3900b8021494Sopenharmony_ci UABD_z_p_zz = SVEIntMinMaxDifference_PredicatedFixed | 0x00050000 3901b8021494Sopenharmony_ci}; 3902b8021494Sopenharmony_ci 3903b8021494Sopenharmony_cienum SVEIntMinMaxImm_UnpredicatedOp { 3904b8021494Sopenharmony_ci SVEIntMinMaxImm_UnpredicatedFixed = 0x2528C000, 3905b8021494Sopenharmony_ci SVEIntMinMaxImm_UnpredicatedFMask = 0xFF38C000, 3906b8021494Sopenharmony_ci SVEIntMinMaxImm_UnpredicatedMask = 0xFF3FE000, 3907b8021494Sopenharmony_ci SMAX_z_zi = SVEIntMinMaxImm_UnpredicatedFixed, 3908b8021494Sopenharmony_ci UMAX_z_zi = SVEIntMinMaxImm_UnpredicatedFixed | 0x00010000, 3909b8021494Sopenharmony_ci SMIN_z_zi = SVEIntMinMaxImm_UnpredicatedFixed | 0x00020000, 3910b8021494Sopenharmony_ci UMIN_z_zi = SVEIntMinMaxImm_UnpredicatedFixed | 0x00030000 3911b8021494Sopenharmony_ci}; 3912b8021494Sopenharmony_ci 3913b8021494Sopenharmony_cienum SVEIntMulAddPredicatedOp { 3914b8021494Sopenharmony_ci SVEIntMulAddPredicatedFixed = 0x04004000, 3915b8021494Sopenharmony_ci SVEIntMulAddPredicatedFMask = 0xFF204000, 3916b8021494Sopenharmony_ci SVEIntMulAddPredicatedMask = 0xFF20E000, 3917b8021494Sopenharmony_ci MLA_z_p_zzz = SVEIntMulAddPredicatedFixed, 3918b8021494Sopenharmony_ci MLS_z_p_zzz = SVEIntMulAddPredicatedFixed | 0x00002000, 3919b8021494Sopenharmony_ci MAD_z_p_zzz = SVEIntMulAddPredicatedFixed | 0x00008000, 3920b8021494Sopenharmony_ci MSB_z_p_zzz = SVEIntMulAddPredicatedFixed | 0x0000A000 3921b8021494Sopenharmony_ci}; 3922b8021494Sopenharmony_ci 3923b8021494Sopenharmony_cienum SVEIntMulAddUnpredicatedOp { 3924b8021494Sopenharmony_ci SVEIntMulAddUnpredicatedFixed = 0x44000000, 3925b8021494Sopenharmony_ci SVEIntMulAddUnpredicatedFMask = 0xFF208000, 3926b8021494Sopenharmony_ci SVEIntMulAddUnpredicatedMask = 0xFF20FC00, 3927b8021494Sopenharmony_ci SDOT_z_zzz = SVEIntMulAddUnpredicatedFixed, 3928b8021494Sopenharmony_ci UDOT_z_zzz = SVEIntMulAddUnpredicatedFixed | 0x00000400 3929b8021494Sopenharmony_ci}; 3930b8021494Sopenharmony_ci 3931b8021494Sopenharmony_cienum SVEIntMulImm_UnpredicatedOp { 3932b8021494Sopenharmony_ci SVEIntMulImm_UnpredicatedFixed = 0x2530C000, 3933b8021494Sopenharmony_ci SVEIntMulImm_UnpredicatedFMask = 0xFF38C000, 3934b8021494Sopenharmony_ci SVEIntMulImm_UnpredicatedMask = 0xFF3FE000, 3935b8021494Sopenharmony_ci MUL_z_zi = SVEIntMulImm_UnpredicatedFixed 3936b8021494Sopenharmony_ci}; 3937b8021494Sopenharmony_ci 3938b8021494Sopenharmony_cienum SVEIntMulVectors_PredicatedOp { 3939b8021494Sopenharmony_ci SVEIntMulVectors_PredicatedFixed = 0x04100000, 3940b8021494Sopenharmony_ci SVEIntMulVectors_PredicatedFMask = 0xFF3CE000, 3941b8021494Sopenharmony_ci SVEIntMulVectors_PredicatedMask = 0xFF3FE000, 3942b8021494Sopenharmony_ci MUL_z_p_zz = SVEIntMulVectors_PredicatedFixed, 3943b8021494Sopenharmony_ci SMULH_z_p_zz = SVEIntMulVectors_PredicatedFixed | 0x00020000, 3944b8021494Sopenharmony_ci UMULH_z_p_zz = SVEIntMulVectors_PredicatedFixed | 0x00030000 3945b8021494Sopenharmony_ci}; 3946b8021494Sopenharmony_ci 3947b8021494Sopenharmony_cienum SVEMovprfxOp { 3948b8021494Sopenharmony_ci SVEMovprfxFixed = 0x04002000, 3949b8021494Sopenharmony_ci SVEMovprfxFMask = 0xFF20E000, 3950b8021494Sopenharmony_ci SVEMovprfxMask = 0xFF3EE000, 3951b8021494Sopenharmony_ci MOVPRFX_z_p_z = SVEMovprfxFixed | 0x00100000 3952b8021494Sopenharmony_ci}; 3953b8021494Sopenharmony_ci 3954b8021494Sopenharmony_cienum SVEIntReductionOp { 3955b8021494Sopenharmony_ci SVEIntReductionFixed = 0x04002000, 3956b8021494Sopenharmony_ci SVEIntReductionFMask = 0xFF20E000, 3957b8021494Sopenharmony_ci SVEIntReductionMask = 0xFF3FE000, 3958b8021494Sopenharmony_ci SADDV_r_p_z = SVEIntReductionFixed, 3959b8021494Sopenharmony_ci UADDV_r_p_z = SVEIntReductionFixed | 0x00010000, 3960b8021494Sopenharmony_ci SMAXV_r_p_z = SVEIntReductionFixed | 0x00080000, 3961b8021494Sopenharmony_ci UMAXV_r_p_z = SVEIntReductionFixed | 0x00090000, 3962b8021494Sopenharmony_ci SMINV_r_p_z = SVEIntReductionFixed | 0x000A0000, 3963b8021494Sopenharmony_ci UMINV_r_p_z = SVEIntReductionFixed | 0x000B0000 3964b8021494Sopenharmony_ci}; 3965b8021494Sopenharmony_ci 3966b8021494Sopenharmony_cienum SVEIntReductionLogicalOp { 3967b8021494Sopenharmony_ci SVEIntReductionLogicalFixed = 0x04182000, 3968b8021494Sopenharmony_ci SVEIntReductionLogicalFMask = 0xFF38E000, 3969b8021494Sopenharmony_ci SVEIntReductionLogicalMask = 0xFF3FE000, 3970b8021494Sopenharmony_ci ORV_r_p_z = SVEIntReductionLogicalFixed | 0x00180000, 3971b8021494Sopenharmony_ci EORV_r_p_z = SVEIntReductionLogicalFixed | 0x00190000, 3972b8021494Sopenharmony_ci ANDV_r_p_z = SVEIntReductionLogicalFixed | 0x001A0000 3973b8021494Sopenharmony_ci}; 3974b8021494Sopenharmony_ci 3975b8021494Sopenharmony_cienum SVEIntUnaryArithmeticPredicatedOp { 3976b8021494Sopenharmony_ci SVEIntUnaryArithmeticPredicatedFixed = 0x0400A000, 3977b8021494Sopenharmony_ci SVEIntUnaryArithmeticPredicatedFMask = 0xFF20E000, 3978b8021494Sopenharmony_ci SVEIntUnaryArithmeticPredicatedMask = 0xFF3FE000, 3979b8021494Sopenharmony_ci SXTB_z_p_z = SVEIntUnaryArithmeticPredicatedFixed | 0x00100000, 3980b8021494Sopenharmony_ci UXTB_z_p_z = SVEIntUnaryArithmeticPredicatedFixed | 0x00110000, 3981b8021494Sopenharmony_ci SXTH_z_p_z = SVEIntUnaryArithmeticPredicatedFixed | 0x00120000, 3982b8021494Sopenharmony_ci UXTH_z_p_z = SVEIntUnaryArithmeticPredicatedFixed | 0x00130000, 3983b8021494Sopenharmony_ci SXTW_z_p_z = SVEIntUnaryArithmeticPredicatedFixed | 0x00140000, 3984b8021494Sopenharmony_ci UXTW_z_p_z = SVEIntUnaryArithmeticPredicatedFixed | 0x00150000, 3985b8021494Sopenharmony_ci ABS_z_p_z = SVEIntUnaryArithmeticPredicatedFixed | 0x00160000, 3986b8021494Sopenharmony_ci NEG_z_p_z = SVEIntUnaryArithmeticPredicatedFixed | 0x00170000, 3987b8021494Sopenharmony_ci CLS_z_p_z = SVEIntUnaryArithmeticPredicatedFixed | 0x00180000, 3988b8021494Sopenharmony_ci CLZ_z_p_z = SVEIntUnaryArithmeticPredicatedFixed | 0x00190000, 3989b8021494Sopenharmony_ci CNT_z_p_z = SVEIntUnaryArithmeticPredicatedFixed | 0x001A0000, 3990b8021494Sopenharmony_ci CNOT_z_p_z = SVEIntUnaryArithmeticPredicatedFixed | 0x001B0000, 3991b8021494Sopenharmony_ci FABS_z_p_z = SVEIntUnaryArithmeticPredicatedFixed | 0x001C0000, 3992b8021494Sopenharmony_ci FNEG_z_p_z = SVEIntUnaryArithmeticPredicatedFixed | 0x001D0000, 3993b8021494Sopenharmony_ci NOT_z_p_z = SVEIntUnaryArithmeticPredicatedFixed | 0x001E0000 3994b8021494Sopenharmony_ci}; 3995b8021494Sopenharmony_ci 3996b8021494Sopenharmony_cienum SVELoadAndBroadcastElementOp { 3997b8021494Sopenharmony_ci SVELoadAndBroadcastElementFixed = 0x84408000, 3998b8021494Sopenharmony_ci SVELoadAndBroadcastElementFMask = 0xFE408000, 3999b8021494Sopenharmony_ci SVELoadAndBroadcastElementMask = 0xFFC0E000, 4000b8021494Sopenharmony_ci LD1RB_z_p_bi_u8 = SVELoadAndBroadcastElementFixed, 4001b8021494Sopenharmony_ci LD1RB_z_p_bi_u16 = SVELoadAndBroadcastElementFixed | 0x00002000, 4002b8021494Sopenharmony_ci LD1RB_z_p_bi_u32 = SVELoadAndBroadcastElementFixed | 0x00004000, 4003b8021494Sopenharmony_ci LD1RB_z_p_bi_u64 = SVELoadAndBroadcastElementFixed | 0x00006000, 4004b8021494Sopenharmony_ci LD1RSW_z_p_bi_s64 = SVELoadAndBroadcastElementFixed | 0x00800000, 4005b8021494Sopenharmony_ci LD1RH_z_p_bi_u16 = SVELoadAndBroadcastElementFixed | 0x00802000, 4006b8021494Sopenharmony_ci LD1RH_z_p_bi_u32 = SVELoadAndBroadcastElementFixed | 0x00804000, 4007b8021494Sopenharmony_ci LD1RH_z_p_bi_u64 = SVELoadAndBroadcastElementFixed | 0x00806000, 4008b8021494Sopenharmony_ci LD1RSH_z_p_bi_s64 = SVELoadAndBroadcastElementFixed | 0x01000000, 4009b8021494Sopenharmony_ci LD1RSH_z_p_bi_s32 = SVELoadAndBroadcastElementFixed | 0x01002000, 4010b8021494Sopenharmony_ci LD1RW_z_p_bi_u32 = SVELoadAndBroadcastElementFixed | 0x01004000, 4011b8021494Sopenharmony_ci LD1RW_z_p_bi_u64 = SVELoadAndBroadcastElementFixed | 0x01006000, 4012b8021494Sopenharmony_ci LD1RSB_z_p_bi_s64 = SVELoadAndBroadcastElementFixed | 0x01800000, 4013b8021494Sopenharmony_ci LD1RSB_z_p_bi_s32 = SVELoadAndBroadcastElementFixed | 0x01802000, 4014b8021494Sopenharmony_ci LD1RSB_z_p_bi_s16 = SVELoadAndBroadcastElementFixed | 0x01804000, 4015b8021494Sopenharmony_ci LD1RD_z_p_bi_u64 = SVELoadAndBroadcastElementFixed | 0x01806000 4016b8021494Sopenharmony_ci}; 4017b8021494Sopenharmony_ci 4018b8021494Sopenharmony_cienum SVELoadAndBroadcastQuadword_ScalarPlusImmOp { 4019b8021494Sopenharmony_ci SVELoadAndBroadcastQuadword_ScalarPlusImmFixed = 0xA4002000, 4020b8021494Sopenharmony_ci SVELoadAndBroadcastQuadword_ScalarPlusImmFMask = 0xFE10E000, 4021b8021494Sopenharmony_ci SVELoadAndBroadcastQuadword_ScalarPlusImmMask = 0xFFF0E000, 4022b8021494Sopenharmony_ci LD1RQB_z_p_bi_u8 = SVELoadAndBroadcastQuadword_ScalarPlusImmFixed, 4023b8021494Sopenharmony_ci LD1RQH_z_p_bi_u16 = SVELoadAndBroadcastQuadword_ScalarPlusImmFixed | 0x00800000, 4024b8021494Sopenharmony_ci LD1RQW_z_p_bi_u32 = SVELoadAndBroadcastQuadword_ScalarPlusImmFixed | 0x01000000, 4025b8021494Sopenharmony_ci LD1RQD_z_p_bi_u64 = SVELoadAndBroadcastQuadword_ScalarPlusImmFixed | 0x01800000 4026b8021494Sopenharmony_ci}; 4027b8021494Sopenharmony_ci 4028b8021494Sopenharmony_cienum SVELoadAndBroadcastQuadword_ScalarPlusScalarOp { 4029b8021494Sopenharmony_ci SVELoadAndBroadcastQuadword_ScalarPlusScalarFixed = 0xA4000000, 4030b8021494Sopenharmony_ci SVELoadAndBroadcastQuadword_ScalarPlusScalarFMask = 0xFE00E000, 4031b8021494Sopenharmony_ci SVELoadAndBroadcastQuadword_ScalarPlusScalarMask = 0xFFE0E000, 4032b8021494Sopenharmony_ci LD1RQB_z_p_br_contiguous = SVELoadAndBroadcastQuadword_ScalarPlusScalarFixed, 4033b8021494Sopenharmony_ci LD1RQH_z_p_br_contiguous = SVELoadAndBroadcastQuadword_ScalarPlusScalarFixed | 0x00800000, 4034b8021494Sopenharmony_ci LD1RQW_z_p_br_contiguous = SVELoadAndBroadcastQuadword_ScalarPlusScalarFixed | 0x01000000, 4035b8021494Sopenharmony_ci LD1RQD_z_p_br_contiguous = SVELoadAndBroadcastQuadword_ScalarPlusScalarFixed | 0x01800000 4036b8021494Sopenharmony_ci}; 4037b8021494Sopenharmony_ci 4038b8021494Sopenharmony_cienum SVELoadMultipleStructures_ScalarPlusImmOp { 4039b8021494Sopenharmony_ci SVELoadMultipleStructures_ScalarPlusImmFixed = 0xA400E000, 4040b8021494Sopenharmony_ci SVELoadMultipleStructures_ScalarPlusImmFMask = 0xFE10E000, 4041b8021494Sopenharmony_ci SVELoadMultipleStructures_ScalarPlusImmMask = 0xFFF0E000, 4042b8021494Sopenharmony_ci LD2B_z_p_bi_contiguous = SVELoadMultipleStructures_ScalarPlusImmFixed | 0x00200000, 4043b8021494Sopenharmony_ci LD3B_z_p_bi_contiguous = SVELoadMultipleStructures_ScalarPlusImmFixed | 0x00400000, 4044b8021494Sopenharmony_ci LD4B_z_p_bi_contiguous = SVELoadMultipleStructures_ScalarPlusImmFixed | 0x00600000, 4045b8021494Sopenharmony_ci LD2H_z_p_bi_contiguous = SVELoadMultipleStructures_ScalarPlusImmFixed | 0x00A00000, 4046b8021494Sopenharmony_ci LD3H_z_p_bi_contiguous = SVELoadMultipleStructures_ScalarPlusImmFixed | 0x00C00000, 4047b8021494Sopenharmony_ci LD4H_z_p_bi_contiguous = SVELoadMultipleStructures_ScalarPlusImmFixed | 0x00E00000, 4048b8021494Sopenharmony_ci LD2W_z_p_bi_contiguous = SVELoadMultipleStructures_ScalarPlusImmFixed | 0x01200000, 4049b8021494Sopenharmony_ci LD3W_z_p_bi_contiguous = SVELoadMultipleStructures_ScalarPlusImmFixed | 0x01400000, 4050b8021494Sopenharmony_ci LD4W_z_p_bi_contiguous = SVELoadMultipleStructures_ScalarPlusImmFixed | 0x01600000, 4051b8021494Sopenharmony_ci LD2D_z_p_bi_contiguous = SVELoadMultipleStructures_ScalarPlusImmFixed | 0x01A00000, 4052b8021494Sopenharmony_ci LD3D_z_p_bi_contiguous = SVELoadMultipleStructures_ScalarPlusImmFixed | 0x01C00000, 4053b8021494Sopenharmony_ci LD4D_z_p_bi_contiguous = SVELoadMultipleStructures_ScalarPlusImmFixed | 0x01E00000 4054b8021494Sopenharmony_ci}; 4055b8021494Sopenharmony_ci 4056b8021494Sopenharmony_cienum SVELoadMultipleStructures_ScalarPlusScalarOp { 4057b8021494Sopenharmony_ci SVELoadMultipleStructures_ScalarPlusScalarFixed = 0xA400C000, 4058b8021494Sopenharmony_ci SVELoadMultipleStructures_ScalarPlusScalarFMask = 0xFE00E000, 4059b8021494Sopenharmony_ci SVELoadMultipleStructures_ScalarPlusScalarMask = 0xFFE0E000, 4060b8021494Sopenharmony_ci LD2B_z_p_br_contiguous = SVELoadMultipleStructures_ScalarPlusScalarFixed | 0x00200000, 4061b8021494Sopenharmony_ci LD3B_z_p_br_contiguous = SVELoadMultipleStructures_ScalarPlusScalarFixed | 0x00400000, 4062b8021494Sopenharmony_ci LD4B_z_p_br_contiguous = SVELoadMultipleStructures_ScalarPlusScalarFixed | 0x00600000, 4063b8021494Sopenharmony_ci LD2H_z_p_br_contiguous = SVELoadMultipleStructures_ScalarPlusScalarFixed | 0x00A00000, 4064b8021494Sopenharmony_ci LD3H_z_p_br_contiguous = SVELoadMultipleStructures_ScalarPlusScalarFixed | 0x00C00000, 4065b8021494Sopenharmony_ci LD4H_z_p_br_contiguous = SVELoadMultipleStructures_ScalarPlusScalarFixed | 0x00E00000, 4066b8021494Sopenharmony_ci LD2W_z_p_br_contiguous = SVELoadMultipleStructures_ScalarPlusScalarFixed | 0x01200000, 4067b8021494Sopenharmony_ci LD3W_z_p_br_contiguous = SVELoadMultipleStructures_ScalarPlusScalarFixed | 0x01400000, 4068b8021494Sopenharmony_ci LD4W_z_p_br_contiguous = SVELoadMultipleStructures_ScalarPlusScalarFixed | 0x01600000, 4069b8021494Sopenharmony_ci LD2D_z_p_br_contiguous = SVELoadMultipleStructures_ScalarPlusScalarFixed | 0x01A00000, 4070b8021494Sopenharmony_ci LD3D_z_p_br_contiguous = SVELoadMultipleStructures_ScalarPlusScalarFixed | 0x01C00000, 4071b8021494Sopenharmony_ci LD4D_z_p_br_contiguous = SVELoadMultipleStructures_ScalarPlusScalarFixed | 0x01E00000 4072b8021494Sopenharmony_ci}; 4073b8021494Sopenharmony_ci 4074b8021494Sopenharmony_cienum SVELoadPredicateRegisterOp { 4075b8021494Sopenharmony_ci SVELoadPredicateRegisterFixed = 0x85800000, 4076b8021494Sopenharmony_ci SVELoadPredicateRegisterFMask = 0xFFC0E010, 4077b8021494Sopenharmony_ci SVELoadPredicateRegisterMask = 0xFFC0E010, 4078b8021494Sopenharmony_ci LDR_p_bi = SVELoadPredicateRegisterFixed 4079b8021494Sopenharmony_ci}; 4080b8021494Sopenharmony_ci 4081b8021494Sopenharmony_cienum SVELoadVectorRegisterOp { 4082b8021494Sopenharmony_ci SVELoadVectorRegisterFixed = 0x85804000, 4083b8021494Sopenharmony_ci SVELoadVectorRegisterFMask = 0xFFC0E000, 4084b8021494Sopenharmony_ci SVELoadVectorRegisterMask = 0xFFC0E000, 4085b8021494Sopenharmony_ci LDR_z_bi = SVELoadVectorRegisterFixed 4086b8021494Sopenharmony_ci}; 4087b8021494Sopenharmony_ci 4088b8021494Sopenharmony_cienum SVEMulIndexOp { 4089b8021494Sopenharmony_ci SVEMulIndexFixed = 0x44200000, 4090b8021494Sopenharmony_ci SVEMulIndexFMask = 0xFF200000, 4091b8021494Sopenharmony_ci SVEMulIndexMask = 0xFFE0FC00, 4092b8021494Sopenharmony_ci SDOT_z_zzzi_s = SVEMulIndexFixed | 0x00800000, 4093b8021494Sopenharmony_ci UDOT_z_zzzi_s = SVEMulIndexFixed | 0x00800400, 4094b8021494Sopenharmony_ci SDOT_z_zzzi_d = SVEMulIndexFixed | 0x00C00000, 4095b8021494Sopenharmony_ci UDOT_z_zzzi_d = SVEMulIndexFixed | 0x00C00400 4096b8021494Sopenharmony_ci}; 4097b8021494Sopenharmony_ci 4098b8021494Sopenharmony_cienum SVEPartitionBreakConditionOp { 4099b8021494Sopenharmony_ci SVEPartitionBreakConditionFixed = 0x25104000, 4100b8021494Sopenharmony_ci SVEPartitionBreakConditionFMask = 0xFF3FC200, 4101b8021494Sopenharmony_ci SVEPartitionBreakConditionMask = 0xFFFFC200, 4102b8021494Sopenharmony_ci BRKA_p_p_p = SVEPartitionBreakConditionFixed, 4103b8021494Sopenharmony_ci BRKAS_p_p_p_z = SVEPartitionBreakConditionFixed | 0x00400000, 4104b8021494Sopenharmony_ci BRKB_p_p_p = SVEPartitionBreakConditionFixed | 0x00800000, 4105b8021494Sopenharmony_ci BRKBS_p_p_p_z = SVEPartitionBreakConditionFixed | 0x00C00000 4106b8021494Sopenharmony_ci}; 4107b8021494Sopenharmony_ci 4108b8021494Sopenharmony_cienum SVEPermutePredicateElementsOp { 4109b8021494Sopenharmony_ci SVEPermutePredicateElementsFixed = 0x05204000, 4110b8021494Sopenharmony_ci SVEPermutePredicateElementsFMask = 0xFF30E210, 4111b8021494Sopenharmony_ci SVEPermutePredicateElementsMask = 0xFF30FE10, 4112b8021494Sopenharmony_ci ZIP1_p_pp = SVEPermutePredicateElementsFixed, 4113b8021494Sopenharmony_ci ZIP2_p_pp = SVEPermutePredicateElementsFixed | 0x00000400, 4114b8021494Sopenharmony_ci UZP1_p_pp = SVEPermutePredicateElementsFixed | 0x00000800, 4115b8021494Sopenharmony_ci UZP2_p_pp = SVEPermutePredicateElementsFixed | 0x00000C00, 4116b8021494Sopenharmony_ci TRN1_p_pp = SVEPermutePredicateElementsFixed | 0x00001000, 4117b8021494Sopenharmony_ci TRN2_p_pp = SVEPermutePredicateElementsFixed | 0x00001400 4118b8021494Sopenharmony_ci}; 4119b8021494Sopenharmony_ci 4120b8021494Sopenharmony_cienum SVEPermuteVectorExtractOp { 4121b8021494Sopenharmony_ci SVEPermuteVectorExtractFixed = 0x05200000, 4122b8021494Sopenharmony_ci SVEPermuteVectorExtractFMask = 0xFF20E000, 4123b8021494Sopenharmony_ci SVEPermuteVectorExtractMask = 0xFFE0E000, 4124b8021494Sopenharmony_ci EXT_z_zi_des = SVEPermuteVectorExtractFixed 4125b8021494Sopenharmony_ci}; 4126b8021494Sopenharmony_ci 4127b8021494Sopenharmony_cienum SVEPermuteVectorInterleavingOp { 4128b8021494Sopenharmony_ci SVEPermuteVectorInterleavingFixed = 0x05206000, 4129b8021494Sopenharmony_ci SVEPermuteVectorInterleavingFMask = 0xFF20E000, 4130b8021494Sopenharmony_ci SVEPermuteVectorInterleavingMask = 0xFF20FC00, 4131b8021494Sopenharmony_ci ZIP1_z_zz = SVEPermuteVectorInterleavingFixed, 4132b8021494Sopenharmony_ci ZIP2_z_zz = SVEPermuteVectorInterleavingFixed | 0x00000400, 4133b8021494Sopenharmony_ci UZP1_z_zz = SVEPermuteVectorInterleavingFixed | 0x00000800, 4134b8021494Sopenharmony_ci UZP2_z_zz = SVEPermuteVectorInterleavingFixed | 0x00000C00, 4135b8021494Sopenharmony_ci TRN1_z_zz = SVEPermuteVectorInterleavingFixed | 0x00001000, 4136b8021494Sopenharmony_ci TRN2_z_zz = SVEPermuteVectorInterleavingFixed | 0x00001400 4137b8021494Sopenharmony_ci}; 4138b8021494Sopenharmony_ci 4139b8021494Sopenharmony_cienum SVEPredicateCountOp { 4140b8021494Sopenharmony_ci SVEPredicateCountFixed = 0x25208000, 4141b8021494Sopenharmony_ci SVEPredicateCountFMask = 0xFF38C000, 4142b8021494Sopenharmony_ci SVEPredicateCountMask = 0xFF3FC200, 4143b8021494Sopenharmony_ci CNTP_r_p_p = SVEPredicateCountFixed 4144b8021494Sopenharmony_ci}; 4145b8021494Sopenharmony_ci 4146b8021494Sopenharmony_cienum SVEPredicateFirstActiveOp { 4147b8021494Sopenharmony_ci SVEPredicateFirstActiveFixed = 0x2518C000, 4148b8021494Sopenharmony_ci SVEPredicateFirstActiveFMask = 0xFF3FFE10, 4149b8021494Sopenharmony_ci SVEPredicateFirstActiveMask = 0xFFFFFE10, 4150b8021494Sopenharmony_ci PFIRST_p_p_p = SVEPredicateFirstActiveFixed | 0x00400000 4151b8021494Sopenharmony_ci}; 4152b8021494Sopenharmony_ci 4153b8021494Sopenharmony_cienum SVEPredicateInitializeOp { 4154b8021494Sopenharmony_ci SVEPredicateInitializeFixed = 0x2518E000, 4155b8021494Sopenharmony_ci SVEPredicateInitializeFMask = 0xFF3EFC10, 4156b8021494Sopenharmony_ci SVEPredicateInitializeMask = 0xFF3FFC10, 4157b8021494Sopenharmony_ci SVEPredicateInitializeSetFlagsBit = 0x00010000, 4158b8021494Sopenharmony_ci PTRUE_p_s = SVEPredicateInitializeFixed | 0x00000000, 4159b8021494Sopenharmony_ci PTRUES_p_s = SVEPredicateInitializeFixed | SVEPredicateInitializeSetFlagsBit 4160b8021494Sopenharmony_ci}; 4161b8021494Sopenharmony_ci 4162b8021494Sopenharmony_cienum SVEPredicateLogicalOp { 4163b8021494Sopenharmony_ci SVEPredicateLogicalFixed = 0x25004000, 4164b8021494Sopenharmony_ci SVEPredicateLogicalFMask = 0xFF30C000, 4165b8021494Sopenharmony_ci SVEPredicateLogicalMask = 0xFFF0C210, 4166b8021494Sopenharmony_ci SVEPredicateLogicalSetFlagsBit = 0x00400000, 4167b8021494Sopenharmony_ci AND_p_p_pp_z = SVEPredicateLogicalFixed, 4168b8021494Sopenharmony_ci ANDS_p_p_pp_z = AND_p_p_pp_z | SVEPredicateLogicalSetFlagsBit, 4169b8021494Sopenharmony_ci BIC_p_p_pp_z = SVEPredicateLogicalFixed | 0x00000010, 4170b8021494Sopenharmony_ci BICS_p_p_pp_z = BIC_p_p_pp_z | SVEPredicateLogicalSetFlagsBit, 4171b8021494Sopenharmony_ci EOR_p_p_pp_z = SVEPredicateLogicalFixed | 0x00000200, 4172b8021494Sopenharmony_ci EORS_p_p_pp_z = EOR_p_p_pp_z | SVEPredicateLogicalSetFlagsBit, 4173b8021494Sopenharmony_ci ORR_p_p_pp_z = SVEPredicateLogicalFixed | 0x00800000, 4174b8021494Sopenharmony_ci ORRS_p_p_pp_z = ORR_p_p_pp_z | SVEPredicateLogicalSetFlagsBit, 4175b8021494Sopenharmony_ci ORN_p_p_pp_z = SVEPredicateLogicalFixed | 0x00800010, 4176b8021494Sopenharmony_ci ORNS_p_p_pp_z = ORN_p_p_pp_z | SVEPredicateLogicalSetFlagsBit, 4177b8021494Sopenharmony_ci NAND_p_p_pp_z = SVEPredicateLogicalFixed | 0x00800210, 4178b8021494Sopenharmony_ci NANDS_p_p_pp_z = NAND_p_p_pp_z | SVEPredicateLogicalSetFlagsBit, 4179b8021494Sopenharmony_ci NOR_p_p_pp_z = SVEPredicateLogicalFixed | 0x00800200, 4180b8021494Sopenharmony_ci NORS_p_p_pp_z = NOR_p_p_pp_z | SVEPredicateLogicalSetFlagsBit, 4181b8021494Sopenharmony_ci SEL_p_p_pp = SVEPredicateLogicalFixed | 0x00000210 4182b8021494Sopenharmony_ci}; 4183b8021494Sopenharmony_ci 4184b8021494Sopenharmony_cienum SVEPredicateNextActiveOp { 4185b8021494Sopenharmony_ci SVEPredicateNextActiveFixed = 0x2519C400, 4186b8021494Sopenharmony_ci SVEPredicateNextActiveFMask = 0xFF3FFE10, 4187b8021494Sopenharmony_ci SVEPredicateNextActiveMask = 0xFF3FFE10, 4188b8021494Sopenharmony_ci PNEXT_p_p_p = SVEPredicateNextActiveFixed 4189b8021494Sopenharmony_ci}; 4190b8021494Sopenharmony_ci 4191b8021494Sopenharmony_cienum SVEPredicateReadFromFFR_PredicatedOp { 4192b8021494Sopenharmony_ci SVEPredicateReadFromFFR_PredicatedFixed = 0x2518F000, 4193b8021494Sopenharmony_ci SVEPredicateReadFromFFR_PredicatedFMask = 0xFF3FFE10, 4194b8021494Sopenharmony_ci SVEPredicateReadFromFFR_PredicatedMask = 0xFFFFFE10, 4195b8021494Sopenharmony_ci RDFFR_p_p_f = SVEPredicateReadFromFFR_PredicatedFixed, 4196b8021494Sopenharmony_ci RDFFRS_p_p_f = SVEPredicateReadFromFFR_PredicatedFixed | 0x00400000 4197b8021494Sopenharmony_ci}; 4198b8021494Sopenharmony_ci 4199b8021494Sopenharmony_cienum SVEPredicateReadFromFFR_UnpredicatedOp { 4200b8021494Sopenharmony_ci SVEPredicateReadFromFFR_UnpredicatedFixed = 0x2519F000, 4201b8021494Sopenharmony_ci SVEPredicateReadFromFFR_UnpredicatedFMask = 0xFF3FFFF0, 4202b8021494Sopenharmony_ci SVEPredicateReadFromFFR_UnpredicatedMask = 0xFFFFFFF0, 4203b8021494Sopenharmony_ci RDFFR_p_f = SVEPredicateReadFromFFR_UnpredicatedFixed 4204b8021494Sopenharmony_ci}; 4205b8021494Sopenharmony_ci 4206b8021494Sopenharmony_cienum SVEPredicateTestOp { 4207b8021494Sopenharmony_ci SVEPredicateTestFixed = 0x2510C000, 4208b8021494Sopenharmony_ci SVEPredicateTestFMask = 0xFF3FC210, 4209b8021494Sopenharmony_ci SVEPredicateTestMask = 0xFFFFC21F, 4210b8021494Sopenharmony_ci PTEST_p_p = SVEPredicateTestFixed | 0x00400000 4211b8021494Sopenharmony_ci}; 4212b8021494Sopenharmony_ci 4213b8021494Sopenharmony_cienum SVEPredicateZeroOp { 4214b8021494Sopenharmony_ci SVEPredicateZeroFixed = 0x2518E400, 4215b8021494Sopenharmony_ci SVEPredicateZeroFMask = 0xFF3FFFF0, 4216b8021494Sopenharmony_ci SVEPredicateZeroMask = 0xFFFFFFF0, 4217b8021494Sopenharmony_ci PFALSE_p = SVEPredicateZeroFixed 4218b8021494Sopenharmony_ci}; 4219b8021494Sopenharmony_ci 4220b8021494Sopenharmony_cienum SVEPropagateBreakOp { 4221b8021494Sopenharmony_ci SVEPropagateBreakFixed = 0x2500C000, 4222b8021494Sopenharmony_ci SVEPropagateBreakFMask = 0xFF30C000, 4223b8021494Sopenharmony_ci SVEPropagateBreakMask = 0xFFF0C210, 4224b8021494Sopenharmony_ci BRKPA_p_p_pp = SVEPropagateBreakFixed, 4225b8021494Sopenharmony_ci BRKPB_p_p_pp = SVEPropagateBreakFixed | 0x00000010, 4226b8021494Sopenharmony_ci BRKPAS_p_p_pp = SVEPropagateBreakFixed | 0x00400000, 4227b8021494Sopenharmony_ci BRKPBS_p_p_pp = SVEPropagateBreakFixed | 0x00400010 4228b8021494Sopenharmony_ci}; 4229b8021494Sopenharmony_ci 4230b8021494Sopenharmony_cienum SVEPropagateBreakToNextPartitionOp { 4231b8021494Sopenharmony_ci SVEPropagateBreakToNextPartitionFixed = 0x25184000, 4232b8021494Sopenharmony_ci SVEPropagateBreakToNextPartitionFMask = 0xFFBFC210, 4233b8021494Sopenharmony_ci SVEPropagateBreakToNextPartitionMask = 0xFFFFC210, 4234b8021494Sopenharmony_ci BRKN_p_p_pp = SVEPropagateBreakToNextPartitionFixed, 4235b8021494Sopenharmony_ci BRKNS_p_p_pp = SVEPropagateBreakToNextPartitionFixed | 0x00400000 4236b8021494Sopenharmony_ci}; 4237b8021494Sopenharmony_ci 4238b8021494Sopenharmony_cienum SVEReversePredicateElementsOp { 4239b8021494Sopenharmony_ci SVEReversePredicateElementsFixed = 0x05344000, 4240b8021494Sopenharmony_ci SVEReversePredicateElementsFMask = 0xFF3FFE10, 4241b8021494Sopenharmony_ci SVEReversePredicateElementsMask = 0xFF3FFE10, 4242b8021494Sopenharmony_ci REV_p_p = SVEReversePredicateElementsFixed 4243b8021494Sopenharmony_ci}; 4244b8021494Sopenharmony_ci 4245b8021494Sopenharmony_cienum SVEReverseVectorElementsOp { 4246b8021494Sopenharmony_ci SVEReverseVectorElementsFixed = 0x05383800, 4247b8021494Sopenharmony_ci SVEReverseVectorElementsFMask = 0xFF3FFC00, 4248b8021494Sopenharmony_ci SVEReverseVectorElementsMask = 0xFF3FFC00, 4249b8021494Sopenharmony_ci REV_z_z = SVEReverseVectorElementsFixed 4250b8021494Sopenharmony_ci}; 4251b8021494Sopenharmony_ci 4252b8021494Sopenharmony_cienum SVEReverseWithinElementsOp { 4253b8021494Sopenharmony_ci SVEReverseWithinElementsFixed = 0x05248000, 4254b8021494Sopenharmony_ci SVEReverseWithinElementsFMask = 0xFF3CE000, 4255b8021494Sopenharmony_ci SVEReverseWithinElementsMask = 0xFF3FE000, 4256b8021494Sopenharmony_ci REVB_z_z = SVEReverseWithinElementsFixed, 4257b8021494Sopenharmony_ci REVH_z_z = SVEReverseWithinElementsFixed | 0x00010000, 4258b8021494Sopenharmony_ci REVW_z_z = SVEReverseWithinElementsFixed | 0x00020000, 4259b8021494Sopenharmony_ci RBIT_z_p_z = SVEReverseWithinElementsFixed | 0x00030000 4260b8021494Sopenharmony_ci}; 4261b8021494Sopenharmony_ci 4262b8021494Sopenharmony_cienum SVESaturatingIncDecRegisterByElementCountOp { 4263b8021494Sopenharmony_ci SVESaturatingIncDecRegisterByElementCountFixed = 0x0420F000, 4264b8021494Sopenharmony_ci SVESaturatingIncDecRegisterByElementCountFMask = 0xFF20F000, 4265b8021494Sopenharmony_ci SVESaturatingIncDecRegisterByElementCountMask = 0xFFF0FC00, 4266b8021494Sopenharmony_ci SQINCB_r_rs_sx = SVESaturatingIncDecRegisterByElementCountFixed, 4267b8021494Sopenharmony_ci UQINCB_r_rs_uw = SVESaturatingIncDecRegisterByElementCountFixed | 0x00000400, 4268b8021494Sopenharmony_ci SQDECB_r_rs_sx = SVESaturatingIncDecRegisterByElementCountFixed | 0x00000800, 4269b8021494Sopenharmony_ci UQDECB_r_rs_uw = SVESaturatingIncDecRegisterByElementCountFixed | 0x00000C00, 4270b8021494Sopenharmony_ci SQINCB_r_rs_x = SVESaturatingIncDecRegisterByElementCountFixed | 0x00100000, 4271b8021494Sopenharmony_ci UQINCB_r_rs_x = SVESaturatingIncDecRegisterByElementCountFixed | 0x00100400, 4272b8021494Sopenharmony_ci SQDECB_r_rs_x = SVESaturatingIncDecRegisterByElementCountFixed | 0x00100800, 4273b8021494Sopenharmony_ci UQDECB_r_rs_x = SVESaturatingIncDecRegisterByElementCountFixed | 0x00100C00, 4274b8021494Sopenharmony_ci SQINCH_r_rs_sx = SVESaturatingIncDecRegisterByElementCountFixed | 0x00400000, 4275b8021494Sopenharmony_ci UQINCH_r_rs_uw = SVESaturatingIncDecRegisterByElementCountFixed | 0x00400400, 4276b8021494Sopenharmony_ci SQDECH_r_rs_sx = SVESaturatingIncDecRegisterByElementCountFixed | 0x00400800, 4277b8021494Sopenharmony_ci UQDECH_r_rs_uw = SVESaturatingIncDecRegisterByElementCountFixed | 0x00400C00, 4278b8021494Sopenharmony_ci SQINCH_r_rs_x = SVESaturatingIncDecRegisterByElementCountFixed | 0x00500000, 4279b8021494Sopenharmony_ci UQINCH_r_rs_x = SVESaturatingIncDecRegisterByElementCountFixed | 0x00500400, 4280b8021494Sopenharmony_ci SQDECH_r_rs_x = SVESaturatingIncDecRegisterByElementCountFixed | 0x00500800, 4281b8021494Sopenharmony_ci UQDECH_r_rs_x = SVESaturatingIncDecRegisterByElementCountFixed | 0x00500C00, 4282b8021494Sopenharmony_ci SQINCW_r_rs_sx = SVESaturatingIncDecRegisterByElementCountFixed | 0x00800000, 4283b8021494Sopenharmony_ci UQINCW_r_rs_uw = SVESaturatingIncDecRegisterByElementCountFixed | 0x00800400, 4284b8021494Sopenharmony_ci SQDECW_r_rs_sx = SVESaturatingIncDecRegisterByElementCountFixed | 0x00800800, 4285b8021494Sopenharmony_ci UQDECW_r_rs_uw = SVESaturatingIncDecRegisterByElementCountFixed | 0x00800C00, 4286b8021494Sopenharmony_ci SQINCW_r_rs_x = SVESaturatingIncDecRegisterByElementCountFixed | 0x00900000, 4287b8021494Sopenharmony_ci UQINCW_r_rs_x = SVESaturatingIncDecRegisterByElementCountFixed | 0x00900400, 4288b8021494Sopenharmony_ci SQDECW_r_rs_x = SVESaturatingIncDecRegisterByElementCountFixed | 0x00900800, 4289b8021494Sopenharmony_ci UQDECW_r_rs_x = SVESaturatingIncDecRegisterByElementCountFixed | 0x00900C00, 4290b8021494Sopenharmony_ci SQINCD_r_rs_sx = SVESaturatingIncDecRegisterByElementCountFixed | 0x00C00000, 4291b8021494Sopenharmony_ci UQINCD_r_rs_uw = SVESaturatingIncDecRegisterByElementCountFixed | 0x00C00400, 4292b8021494Sopenharmony_ci SQDECD_r_rs_sx = SVESaturatingIncDecRegisterByElementCountFixed | 0x00C00800, 4293b8021494Sopenharmony_ci UQDECD_r_rs_uw = SVESaturatingIncDecRegisterByElementCountFixed | 0x00C00C00, 4294b8021494Sopenharmony_ci SQINCD_r_rs_x = SVESaturatingIncDecRegisterByElementCountFixed | 0x00D00000, 4295b8021494Sopenharmony_ci UQINCD_r_rs_x = SVESaturatingIncDecRegisterByElementCountFixed | 0x00D00400, 4296b8021494Sopenharmony_ci SQDECD_r_rs_x = SVESaturatingIncDecRegisterByElementCountFixed | 0x00D00800, 4297b8021494Sopenharmony_ci UQDECD_r_rs_x = SVESaturatingIncDecRegisterByElementCountFixed | 0x00D00C00 4298b8021494Sopenharmony_ci}; 4299b8021494Sopenharmony_ci 4300b8021494Sopenharmony_cienum SVESaturatingIncDecVectorByElementCountOp { 4301b8021494Sopenharmony_ci SVESaturatingIncDecVectorByElementCountFixed = 0x0420C000, 4302b8021494Sopenharmony_ci SVESaturatingIncDecVectorByElementCountFMask = 0xFF30F000, 4303b8021494Sopenharmony_ci SVESaturatingIncDecVectorByElementCountMask = 0xFFF0FC00, 4304b8021494Sopenharmony_ci SQINCH_z_zs = SVESaturatingIncDecVectorByElementCountFixed | 0x00400000, 4305b8021494Sopenharmony_ci UQINCH_z_zs = SVESaturatingIncDecVectorByElementCountFixed | 0x00400400, 4306b8021494Sopenharmony_ci SQDECH_z_zs = SVESaturatingIncDecVectorByElementCountFixed | 0x00400800, 4307b8021494Sopenharmony_ci UQDECH_z_zs = SVESaturatingIncDecVectorByElementCountFixed | 0x00400C00, 4308b8021494Sopenharmony_ci SQINCW_z_zs = SVESaturatingIncDecVectorByElementCountFixed | 0x00800000, 4309b8021494Sopenharmony_ci UQINCW_z_zs = SVESaturatingIncDecVectorByElementCountFixed | 0x00800400, 4310b8021494Sopenharmony_ci SQDECW_z_zs = SVESaturatingIncDecVectorByElementCountFixed | 0x00800800, 4311b8021494Sopenharmony_ci UQDECW_z_zs = SVESaturatingIncDecVectorByElementCountFixed | 0x00800C00, 4312b8021494Sopenharmony_ci SQINCD_z_zs = SVESaturatingIncDecVectorByElementCountFixed | 0x00C00000, 4313b8021494Sopenharmony_ci UQINCD_z_zs = SVESaturatingIncDecVectorByElementCountFixed | 0x00C00400, 4314b8021494Sopenharmony_ci SQDECD_z_zs = SVESaturatingIncDecVectorByElementCountFixed | 0x00C00800, 4315b8021494Sopenharmony_ci UQDECD_z_zs = SVESaturatingIncDecVectorByElementCountFixed | 0x00C00C00 4316b8021494Sopenharmony_ci}; 4317b8021494Sopenharmony_ci 4318b8021494Sopenharmony_cienum SVEStackFrameAdjustmentOp { 4319b8021494Sopenharmony_ci SVEStackFrameAdjustmentFixed = 0x04205000, 4320b8021494Sopenharmony_ci SVEStackFrameAdjustmentFMask = 0xFFA0F800, 4321b8021494Sopenharmony_ci SVEStackFrameAdjustmentMask = 0xFFE0F800, 4322b8021494Sopenharmony_ci ADDVL_r_ri = SVEStackFrameAdjustmentFixed, 4323b8021494Sopenharmony_ci ADDPL_r_ri = SVEStackFrameAdjustmentFixed | 0x00400000 4324b8021494Sopenharmony_ci}; 4325b8021494Sopenharmony_ci 4326b8021494Sopenharmony_cienum SVEStackFrameSizeOp { 4327b8021494Sopenharmony_ci SVEStackFrameSizeFixed = 0x04BF5000, 4328b8021494Sopenharmony_ci SVEStackFrameSizeFMask = 0xFFFFF800, 4329b8021494Sopenharmony_ci SVEStackFrameSizeMask = 0xFFFFF800, 4330b8021494Sopenharmony_ci RDVL_r_i = SVEStackFrameSizeFixed 4331b8021494Sopenharmony_ci}; 4332b8021494Sopenharmony_ci 4333b8021494Sopenharmony_cienum SVEStoreMultipleStructures_ScalarPlusImmOp { 4334b8021494Sopenharmony_ci SVEStoreMultipleStructures_ScalarPlusImmFixed = 0xE410E000, 4335b8021494Sopenharmony_ci SVEStoreMultipleStructures_ScalarPlusImmFMask = 0xFE10E000, 4336b8021494Sopenharmony_ci SVEStoreMultipleStructures_ScalarPlusImmMask = 0xFFF0E000, 4337b8021494Sopenharmony_ci ST2B_z_p_bi_contiguous = SVEStoreMultipleStructures_ScalarPlusImmFixed | 0x00200000, 4338b8021494Sopenharmony_ci ST3B_z_p_bi_contiguous = SVEStoreMultipleStructures_ScalarPlusImmFixed | 0x00400000, 4339b8021494Sopenharmony_ci ST4B_z_p_bi_contiguous = SVEStoreMultipleStructures_ScalarPlusImmFixed | 0x00600000, 4340b8021494Sopenharmony_ci ST2H_z_p_bi_contiguous = SVEStoreMultipleStructures_ScalarPlusImmFixed | 0x00A00000, 4341b8021494Sopenharmony_ci ST3H_z_p_bi_contiguous = SVEStoreMultipleStructures_ScalarPlusImmFixed | 0x00C00000, 4342b8021494Sopenharmony_ci ST4H_z_p_bi_contiguous = SVEStoreMultipleStructures_ScalarPlusImmFixed | 0x00E00000, 4343b8021494Sopenharmony_ci ST2W_z_p_bi_contiguous = SVEStoreMultipleStructures_ScalarPlusImmFixed | 0x01200000, 4344b8021494Sopenharmony_ci ST3W_z_p_bi_contiguous = SVEStoreMultipleStructures_ScalarPlusImmFixed | 0x01400000, 4345b8021494Sopenharmony_ci ST4W_z_p_bi_contiguous = SVEStoreMultipleStructures_ScalarPlusImmFixed | 0x01600000, 4346b8021494Sopenharmony_ci ST2D_z_p_bi_contiguous = SVEStoreMultipleStructures_ScalarPlusImmFixed | 0x01A00000, 4347b8021494Sopenharmony_ci ST3D_z_p_bi_contiguous = SVEStoreMultipleStructures_ScalarPlusImmFixed | 0x01C00000, 4348b8021494Sopenharmony_ci ST4D_z_p_bi_contiguous = SVEStoreMultipleStructures_ScalarPlusImmFixed | 0x01E00000 4349b8021494Sopenharmony_ci}; 4350b8021494Sopenharmony_ci 4351b8021494Sopenharmony_cienum SVEStoreMultipleStructures_ScalarPlusScalarOp { 4352b8021494Sopenharmony_ci SVEStoreMultipleStructures_ScalarPlusScalarFixed = 0xE4006000, 4353b8021494Sopenharmony_ci SVEStoreMultipleStructures_ScalarPlusScalarFMask = 0xFE00E000, 4354b8021494Sopenharmony_ci SVEStoreMultipleStructures_ScalarPlusScalarMask = 0xFFE0E000, 4355b8021494Sopenharmony_ci ST2B_z_p_br_contiguous = SVEStoreMultipleStructures_ScalarPlusScalarFixed | 0x00200000, 4356b8021494Sopenharmony_ci ST3B_z_p_br_contiguous = SVEStoreMultipleStructures_ScalarPlusScalarFixed | 0x00400000, 4357b8021494Sopenharmony_ci ST4B_z_p_br_contiguous = SVEStoreMultipleStructures_ScalarPlusScalarFixed | 0x00600000, 4358b8021494Sopenharmony_ci ST2H_z_p_br_contiguous = SVEStoreMultipleStructures_ScalarPlusScalarFixed | 0x00A00000, 4359b8021494Sopenharmony_ci ST3H_z_p_br_contiguous = SVEStoreMultipleStructures_ScalarPlusScalarFixed | 0x00C00000, 4360b8021494Sopenharmony_ci ST4H_z_p_br_contiguous = SVEStoreMultipleStructures_ScalarPlusScalarFixed | 0x00E00000, 4361b8021494Sopenharmony_ci ST2W_z_p_br_contiguous = SVEStoreMultipleStructures_ScalarPlusScalarFixed | 0x01200000, 4362b8021494Sopenharmony_ci ST3W_z_p_br_contiguous = SVEStoreMultipleStructures_ScalarPlusScalarFixed | 0x01400000, 4363b8021494Sopenharmony_ci ST4W_z_p_br_contiguous = SVEStoreMultipleStructures_ScalarPlusScalarFixed | 0x01600000, 4364b8021494Sopenharmony_ci ST2D_z_p_br_contiguous = SVEStoreMultipleStructures_ScalarPlusScalarFixed | 0x01A00000, 4365b8021494Sopenharmony_ci ST3D_z_p_br_contiguous = SVEStoreMultipleStructures_ScalarPlusScalarFixed | 0x01C00000, 4366b8021494Sopenharmony_ci ST4D_z_p_br_contiguous = SVEStoreMultipleStructures_ScalarPlusScalarFixed | 0x01E00000 4367b8021494Sopenharmony_ci}; 4368b8021494Sopenharmony_ci 4369b8021494Sopenharmony_cienum SVEStorePredicateRegisterOp { 4370b8021494Sopenharmony_ci SVEStorePredicateRegisterFixed = 0xE5800000, 4371b8021494Sopenharmony_ci SVEStorePredicateRegisterFMask = 0xFFC0E010, 4372b8021494Sopenharmony_ci SVEStorePredicateRegisterMask = 0xFFC0E010, 4373b8021494Sopenharmony_ci STR_p_bi = SVEStorePredicateRegisterFixed 4374b8021494Sopenharmony_ci}; 4375b8021494Sopenharmony_ci 4376b8021494Sopenharmony_cienum SVEStoreVectorRegisterOp { 4377b8021494Sopenharmony_ci SVEStoreVectorRegisterFixed = 0xE5804000, 4378b8021494Sopenharmony_ci SVEStoreVectorRegisterFMask = 0xFFC0E000, 4379b8021494Sopenharmony_ci SVEStoreVectorRegisterMask = 0xFFC0E000, 4380b8021494Sopenharmony_ci STR_z_bi = SVEStoreVectorRegisterFixed 4381b8021494Sopenharmony_ci}; 4382b8021494Sopenharmony_ci 4383b8021494Sopenharmony_cienum SVETableLookupOp { 4384b8021494Sopenharmony_ci SVETableLookupFixed = 0x05203000, 4385b8021494Sopenharmony_ci SVETableLookupFMask = 0xFF20FC00, 4386b8021494Sopenharmony_ci SVETableLookupMask = 0xFF20FC00, 4387b8021494Sopenharmony_ci TBL_z_zz_1 = SVETableLookupFixed 4388b8021494Sopenharmony_ci}; 4389b8021494Sopenharmony_ci 4390b8021494Sopenharmony_cienum SVEUnpackPredicateElementsOp { 4391b8021494Sopenharmony_ci SVEUnpackPredicateElementsFixed = 0x05304000, 4392b8021494Sopenharmony_ci SVEUnpackPredicateElementsFMask = 0xFFFEFE10, 4393b8021494Sopenharmony_ci SVEUnpackPredicateElementsMask = 0xFFFFFE10, 4394b8021494Sopenharmony_ci PUNPKLO_p_p = SVEUnpackPredicateElementsFixed, 4395b8021494Sopenharmony_ci PUNPKHI_p_p = SVEUnpackPredicateElementsFixed | 0x00010000 4396b8021494Sopenharmony_ci}; 4397b8021494Sopenharmony_ci 4398b8021494Sopenharmony_cienum SVEUnpackVectorElementsOp { 4399b8021494Sopenharmony_ci SVEUnpackVectorElementsFixed = 0x05303800, 4400b8021494Sopenharmony_ci SVEUnpackVectorElementsFMask = 0xFF3CFC00, 4401b8021494Sopenharmony_ci SVEUnpackVectorElementsMask = 0xFF3FFC00, 4402b8021494Sopenharmony_ci SUNPKLO_z_z = SVEUnpackVectorElementsFixed, 4403b8021494Sopenharmony_ci SUNPKHI_z_z = SVEUnpackVectorElementsFixed | 0x00010000, 4404b8021494Sopenharmony_ci UUNPKLO_z_z = SVEUnpackVectorElementsFixed | 0x00020000, 4405b8021494Sopenharmony_ci UUNPKHI_z_z = SVEUnpackVectorElementsFixed | 0x00030000 4406b8021494Sopenharmony_ci}; 4407b8021494Sopenharmony_ci 4408b8021494Sopenharmony_cienum SVEVectorSelectOp { 4409b8021494Sopenharmony_ci SVEVectorSelectFixed = 0x0520C000, 4410b8021494Sopenharmony_ci SVEVectorSelectFMask = 0xFF20C000, 4411b8021494Sopenharmony_ci SVEVectorSelectMask = 0xFF20C000, 4412b8021494Sopenharmony_ci SEL_z_p_zz = SVEVectorSelectFixed 4413b8021494Sopenharmony_ci}; 4414b8021494Sopenharmony_ci 4415b8021494Sopenharmony_cienum SVEVectorSpliceOp { 4416b8021494Sopenharmony_ci SVEVectorSpliceFixed = 0x052C8000, 4417b8021494Sopenharmony_ci SVEVectorSpliceFMask = 0xFF3FE000, 4418b8021494Sopenharmony_ci SVEVectorSpliceMask = 0xFF3FE000, 4419b8021494Sopenharmony_ci SPLICE_z_p_zz_des = SVEVectorSpliceFixed 4420b8021494Sopenharmony_ci}; 4421b8021494Sopenharmony_ci 4422b8021494Sopenharmony_cienum ReservedOp { 4423b8021494Sopenharmony_ci ReservedFixed = 0x00000000, 4424b8021494Sopenharmony_ci ReservedFMask = 0x1E000000, 4425b8021494Sopenharmony_ci ReservedMask = 0xFFFF0000, 4426b8021494Sopenharmony_ci UDF = ReservedFixed | 0x00000000 4427b8021494Sopenharmony_ci}; 4428b8021494Sopenharmony_ci 4429b8021494Sopenharmony_ci// Unimplemented and unallocated instructions. These are defined to make fixed 4430b8021494Sopenharmony_ci// bit assertion easier. 4431b8021494Sopenharmony_cienum UnimplementedOp { 4432b8021494Sopenharmony_ci UnimplementedFixed = 0x00000000, 4433b8021494Sopenharmony_ci UnimplementedFMask = 0x00000000 4434b8021494Sopenharmony_ci}; 4435b8021494Sopenharmony_ci 4436b8021494Sopenharmony_cienum UnallocatedOp { 4437b8021494Sopenharmony_ci UnallocatedFixed = 0x00000000, 4438b8021494Sopenharmony_ci UnallocatedFMask = 0x00000000 4439b8021494Sopenharmony_ci}; 4440b8021494Sopenharmony_ci 4441b8021494Sopenharmony_ci// Re-enable `clang-format` after the `enum`s. 4442b8021494Sopenharmony_ci// clang-format on 4443b8021494Sopenharmony_ci 4444b8021494Sopenharmony_ci} // namespace aarch64 4445b8021494Sopenharmony_ci} // namespace vixl 4446b8021494Sopenharmony_ci 4447b8021494Sopenharmony_ci#endif // VIXL_AARCH64_CONSTANTS_AARCH64_H_ 4448