1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033 |
- // cmd/7c/7.out.h from Vita Nuova.
- // https://code.google.com/p/ken-cc/source/browse/src/cmd/7c/7.out.h
- //
- // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved.
- // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net)
- // Portions Copyright © 1997-1999 Vita Nuova Limited
- // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com)
- // Portions Copyright © 2004,2006 Bruce Ellis
- // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net)
- // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others
- // Portions Copyright © 2009 The Go Authors. All rights reserved.
- //
- // Permission is hereby granted, free of charge, to any person obtaining a copy
- // of this software and associated documentation files (the "Software"), to deal
- // in the Software without restriction, including without limitation the rights
- // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- // copies of the Software, and to permit persons to whom the Software is
- // furnished to do so, subject to the following conditions:
- //
- // The above copyright notice and this permission notice shall be included in
- // all copies or substantial portions of the Software.
- //
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- // THE SOFTWARE.
- package arm64
- import "github.com/twitchyliquid64/golang-asm/obj"
- const (
- NSNAME = 8
- NSYM = 50
- NREG = 32 /* number of general registers */
- NFREG = 32 /* number of floating point registers */
- )
- // General purpose registers, kept in the low bits of Prog.Reg.
- const (
- // integer
- REG_R0 = obj.RBaseARM64 + iota
- REG_R1
- REG_R2
- REG_R3
- REG_R4
- REG_R5
- REG_R6
- REG_R7
- REG_R8
- REG_R9
- REG_R10
- REG_R11
- REG_R12
- REG_R13
- REG_R14
- REG_R15
- REG_R16
- REG_R17
- REG_R18
- REG_R19
- REG_R20
- REG_R21
- REG_R22
- REG_R23
- REG_R24
- REG_R25
- REG_R26
- REG_R27
- REG_R28
- REG_R29
- REG_R30
- REG_R31
- // scalar floating point
- REG_F0
- REG_F1
- REG_F2
- REG_F3
- REG_F4
- REG_F5
- REG_F6
- REG_F7
- REG_F8
- REG_F9
- REG_F10
- REG_F11
- REG_F12
- REG_F13
- REG_F14
- REG_F15
- REG_F16
- REG_F17
- REG_F18
- REG_F19
- REG_F20
- REG_F21
- REG_F22
- REG_F23
- REG_F24
- REG_F25
- REG_F26
- REG_F27
- REG_F28
- REG_F29
- REG_F30
- REG_F31
- // SIMD
- REG_V0
- REG_V1
- REG_V2
- REG_V3
- REG_V4
- REG_V5
- REG_V6
- REG_V7
- REG_V8
- REG_V9
- REG_V10
- REG_V11
- REG_V12
- REG_V13
- REG_V14
- REG_V15
- REG_V16
- REG_V17
- REG_V18
- REG_V19
- REG_V20
- REG_V21
- REG_V22
- REG_V23
- REG_V24
- REG_V25
- REG_V26
- REG_V27
- REG_V28
- REG_V29
- REG_V30
- REG_V31
- // The EQ in
- // CSET EQ, R0
- // is encoded as TYPE_REG, even though it's not really a register.
- COND_EQ
- COND_NE
- COND_HS
- COND_LO
- COND_MI
- COND_PL
- COND_VS
- COND_VC
- COND_HI
- COND_LS
- COND_GE
- COND_LT
- COND_GT
- COND_LE
- COND_AL
- COND_NV
- REG_RSP = REG_V31 + 32 // to differentiate ZR/SP, REG_RSP&0x1f = 31
- )
- // bits 0-4 indicates register: Vn
- // bits 5-8 indicates arrangement: <T>
- const (
- REG_ARNG = obj.RBaseARM64 + 1<<10 + iota<<9 // Vn.<T>
- REG_ELEM // Vn.<T>[index]
- REG_ELEM_END
- )
- // Not registers, but flags that can be combined with regular register
- // constants to indicate extended register conversion. When checking,
- // you should subtract obj.RBaseARM64 first. From this difference, bit 11
- // indicates extended register, bits 8-10 select the conversion mode.
- // REG_LSL is the index shift specifier, bit 9 indicates shifted offset register.
- const REG_LSL = obj.RBaseARM64 + 1<<9
- const REG_EXT = obj.RBaseARM64 + 1<<11
- const (
- REG_UXTB = REG_EXT + iota<<8
- REG_UXTH
- REG_UXTW
- REG_UXTX
- REG_SXTB
- REG_SXTH
- REG_SXTW
- REG_SXTX
- )
- // Special registers, after subtracting obj.RBaseARM64, bit 12 indicates
- // a special register and the low bits select the register.
- // SYSREG_END is the last item in the automatically generated system register
- // declaration, and it is defined in the sysRegEnc.go file.
- const (
- REG_SPECIAL = obj.RBaseARM64 + 1<<12
- REG_DAIFSet = SYSREG_END + iota
- REG_DAIFClr
- REG_PLDL1KEEP
- REG_PLDL1STRM
- REG_PLDL2KEEP
- REG_PLDL2STRM
- REG_PLDL3KEEP
- REG_PLDL3STRM
- REG_PLIL1KEEP
- REG_PLIL1STRM
- REG_PLIL2KEEP
- REG_PLIL2STRM
- REG_PLIL3KEEP
- REG_PLIL3STRM
- REG_PSTL1KEEP
- REG_PSTL1STRM
- REG_PSTL2KEEP
- REG_PSTL2STRM
- REG_PSTL3KEEP
- REG_PSTL3STRM
- )
- // Register assignments:
- //
- // compiler allocates R0 up as temps
- // compiler allocates register variables R7-R25
- // compiler allocates external registers R26 down
- //
- // compiler allocates register variables F7-F26
- // compiler allocates external registers F26 down
- const (
- REGMIN = REG_R7 // register variables allocated from here to REGMAX
- REGRT1 = REG_R16 // ARM64 IP0, external linker may use as a scrach register in trampoline
- REGRT2 = REG_R17 // ARM64 IP1, external linker may use as a scrach register in trampoline
- REGPR = REG_R18 // ARM64 platform register, unused in the Go toolchain
- REGMAX = REG_R25
- REGCTXT = REG_R26 // environment for closures
- REGTMP = REG_R27 // reserved for liblink
- REGG = REG_R28 // G
- REGFP = REG_R29 // frame pointer, unused in the Go toolchain
- REGLINK = REG_R30
- // ARM64 uses R31 as both stack pointer and zero register,
- // depending on the instruction. To differentiate RSP from ZR,
- // we use a different numeric value for REGZERO and REGSP.
- REGZERO = REG_R31
- REGSP = REG_RSP
- FREGRET = REG_F0
- FREGMIN = REG_F7 // first register variable
- FREGMAX = REG_F26 // last register variable for 7g only
- FREGEXT = REG_F26 // first external register
- )
- // http://infocenter.arm.com/help/topic/com.arm.doc.ecm0665627/abi_sve_aadwarf_100985_0000_00_en.pdf
- var ARM64DWARFRegisters = map[int16]int16{
- REG_R0: 0,
- REG_R1: 1,
- REG_R2: 2,
- REG_R3: 3,
- REG_R4: 4,
- REG_R5: 5,
- REG_R6: 6,
- REG_R7: 7,
- REG_R8: 8,
- REG_R9: 9,
- REG_R10: 10,
- REG_R11: 11,
- REG_R12: 12,
- REG_R13: 13,
- REG_R14: 14,
- REG_R15: 15,
- REG_R16: 16,
- REG_R17: 17,
- REG_R18: 18,
- REG_R19: 19,
- REG_R20: 20,
- REG_R21: 21,
- REG_R22: 22,
- REG_R23: 23,
- REG_R24: 24,
- REG_R25: 25,
- REG_R26: 26,
- REG_R27: 27,
- REG_R28: 28,
- REG_R29: 29,
- REG_R30: 30,
- // floating point
- REG_F0: 64,
- REG_F1: 65,
- REG_F2: 66,
- REG_F3: 67,
- REG_F4: 68,
- REG_F5: 69,
- REG_F6: 70,
- REG_F7: 71,
- REG_F8: 72,
- REG_F9: 73,
- REG_F10: 74,
- REG_F11: 75,
- REG_F12: 76,
- REG_F13: 77,
- REG_F14: 78,
- REG_F15: 79,
- REG_F16: 80,
- REG_F17: 81,
- REG_F18: 82,
- REG_F19: 83,
- REG_F20: 84,
- REG_F21: 85,
- REG_F22: 86,
- REG_F23: 87,
- REG_F24: 88,
- REG_F25: 89,
- REG_F26: 90,
- REG_F27: 91,
- REG_F28: 92,
- REG_F29: 93,
- REG_F30: 94,
- REG_F31: 95,
- // SIMD
- REG_V0: 64,
- REG_V1: 65,
- REG_V2: 66,
- REG_V3: 67,
- REG_V4: 68,
- REG_V5: 69,
- REG_V6: 70,
- REG_V7: 71,
- REG_V8: 72,
- REG_V9: 73,
- REG_V10: 74,
- REG_V11: 75,
- REG_V12: 76,
- REG_V13: 77,
- REG_V14: 78,
- REG_V15: 79,
- REG_V16: 80,
- REG_V17: 81,
- REG_V18: 82,
- REG_V19: 83,
- REG_V20: 84,
- REG_V21: 85,
- REG_V22: 86,
- REG_V23: 87,
- REG_V24: 88,
- REG_V25: 89,
- REG_V26: 90,
- REG_V27: 91,
- REG_V28: 92,
- REG_V29: 93,
- REG_V30: 94,
- REG_V31: 95,
- }
- const (
- BIG = 2048 - 8
- )
- const (
- /* mark flags */
- LABEL = 1 << iota
- LEAF
- FLOAT
- BRANCH
- LOAD
- FCMP
- SYNC
- LIST
- FOLL
- NOSCHED
- )
- const (
- // optab is sorted based on the order of these constants
- // and the first match is chosen.
- // The more specific class needs to come earlier.
- C_NONE = iota
- C_REG // R0..R30
- C_RSP // R0..R30, RSP
- C_FREG // F0..F31
- C_VREG // V0..V31
- C_PAIR // (Rn, Rm)
- C_SHIFT // Rn<<2
- C_EXTREG // Rn.UXTB[<<3]
- C_SPR // REG_NZCV
- C_COND // EQ, NE, etc
- C_ARNG // Vn.<T>
- C_ELEM // Vn.<T>[index]
- C_LIST // [V1, V2, V3]
- C_ZCON // $0 or ZR
- C_ABCON0 // could be C_ADDCON0 or C_BITCON
- C_ADDCON0 // 12-bit unsigned, unshifted
- C_ABCON // could be C_ADDCON or C_BITCON
- C_AMCON // could be C_ADDCON or C_MOVCON
- C_ADDCON // 12-bit unsigned, shifted left by 0 or 12
- C_MBCON // could be C_MOVCON or C_BITCON
- C_MOVCON // generated by a 16-bit constant, optionally inverted and/or shifted by multiple of 16
- C_BITCON // bitfield and logical immediate masks
- C_ADDCON2 // 24-bit constant
- C_LCON // 32-bit constant
- C_MOVCON2 // a constant that can be loaded with one MOVZ/MOVN and one MOVK
- C_MOVCON3 // a constant that can be loaded with one MOVZ/MOVN and two MOVKs
- C_VCON // 64-bit constant
- C_FCON // floating-point constant
- C_VCONADDR // 64-bit memory address
- C_AACON // ADDCON offset in auto constant $a(FP)
- C_AACON2 // 24-bit offset in auto constant $a(FP)
- C_LACON // 32-bit offset in auto constant $a(FP)
- C_AECON // ADDCON offset in extern constant $e(SB)
- // TODO(aram): only one branch class should be enough
- C_SBRA // for TYPE_BRANCH
- C_LBRA
- C_ZAUTO // 0(RSP)
- C_NSAUTO_8 // -256 <= x < 0, 0 mod 8
- C_NSAUTO_4 // -256 <= x < 0, 0 mod 4
- C_NSAUTO // -256 <= x < 0
- C_NPAUTO // -512 <= x < 0, 0 mod 8
- C_NAUTO4K // -4095 <= x < 0
- C_PSAUTO_8 // 0 to 255, 0 mod 8
- C_PSAUTO_4 // 0 to 255, 0 mod 4
- C_PSAUTO // 0 to 255
- C_PPAUTO // 0 to 504, 0 mod 8
- C_UAUTO4K_8 // 0 to 4095, 0 mod 8
- C_UAUTO4K_4 // 0 to 4095, 0 mod 4
- C_UAUTO4K_2 // 0 to 4095, 0 mod 2
- C_UAUTO4K // 0 to 4095
- C_UAUTO8K_8 // 0 to 8190, 0 mod 8
- C_UAUTO8K_4 // 0 to 8190, 0 mod 4
- C_UAUTO8K // 0 to 8190, 0 mod 2
- C_UAUTO16K_8 // 0 to 16380, 0 mod 8
- C_UAUTO16K // 0 to 16380, 0 mod 4
- C_UAUTO32K // 0 to 32760, 0 mod 8
- C_LAUTO // any other 32-bit constant
- C_SEXT1 // 0 to 4095, direct
- C_SEXT2 // 0 to 8190
- C_SEXT4 // 0 to 16380
- C_SEXT8 // 0 to 32760
- C_SEXT16 // 0 to 65520
- C_LEXT
- C_ZOREG // 0(R)
- C_NSOREG_8 // must mirror C_NSAUTO_8, etc
- C_NSOREG_4
- C_NSOREG
- C_NPOREG
- C_NOREG4K
- C_PSOREG_8
- C_PSOREG_4
- C_PSOREG
- C_PPOREG
- C_UOREG4K_8
- C_UOREG4K_4
- C_UOREG4K_2
- C_UOREG4K
- C_UOREG8K_8
- C_UOREG8K_4
- C_UOREG8K
- C_UOREG16K_8
- C_UOREG16K
- C_UOREG32K
- C_LOREG
- C_ADDR // TODO(aram): explain difference from C_VCONADDR
- // The GOT slot for a symbol in -dynlink mode.
- C_GOTADDR
- // TLS "var" in local exec mode: will become a constant offset from
- // thread local base that is ultimately chosen by the program linker.
- C_TLS_LE
- // TLS "var" in initial exec mode: will become a memory address (chosen
- // by the program linker) that the dynamic linker will fill with the
- // offset from the thread local base.
- C_TLS_IE
- C_ROFF // register offset (including register extended)
- C_GOK
- C_TEXTSIZE
- C_NCLASS // must be last
- )
- const (
- C_XPRE = 1 << 6 // match arm.C_WBIT, so Prog.String know how to print it
- C_XPOST = 1 << 5 // match arm.C_PBIT, so Prog.String know how to print it
- )
- //go:generate go run ../stringer.go -i $GOFILE -o anames.go -p arm64
- const (
- AADC = obj.ABaseARM64 + obj.A_ARCHSPECIFIC + iota
- AADCS
- AADCSW
- AADCW
- AADD
- AADDS
- AADDSW
- AADDW
- AADR
- AADRP
- AAND
- AANDS
- AANDSW
- AANDW
- AASR
- AASRW
- AAT
- ABFI
- ABFIW
- ABFM
- ABFMW
- ABFXIL
- ABFXILW
- ABIC
- ABICS
- ABICSW
- ABICW
- ABRK
- ACBNZ
- ACBNZW
- ACBZ
- ACBZW
- ACCMN
- ACCMNW
- ACCMP
- ACCMPW
- ACINC
- ACINCW
- ACINV
- ACINVW
- ACLREX
- ACLS
- ACLSW
- ACLZ
- ACLZW
- ACMN
- ACMNW
- ACMP
- ACMPW
- ACNEG
- ACNEGW
- ACRC32B
- ACRC32CB
- ACRC32CH
- ACRC32CW
- ACRC32CX
- ACRC32H
- ACRC32W
- ACRC32X
- ACSEL
- ACSELW
- ACSET
- ACSETM
- ACSETMW
- ACSETW
- ACSINC
- ACSINCW
- ACSINV
- ACSINVW
- ACSNEG
- ACSNEGW
- ADC
- ADCPS1
- ADCPS2
- ADCPS3
- ADMB
- ADRPS
- ADSB
- AEON
- AEONW
- AEOR
- AEORW
- AERET
- AEXTR
- AEXTRW
- AHINT
- AHLT
- AHVC
- AIC
- AISB
- ALDADDAB
- ALDADDAD
- ALDADDAH
- ALDADDAW
- ALDADDALB
- ALDADDALD
- ALDADDALH
- ALDADDALW
- ALDADDB
- ALDADDD
- ALDADDH
- ALDADDW
- ALDADDLB
- ALDADDLD
- ALDADDLH
- ALDADDLW
- ALDANDAB
- ALDANDAD
- ALDANDAH
- ALDANDAW
- ALDANDALB
- ALDANDALD
- ALDANDALH
- ALDANDALW
- ALDANDB
- ALDANDD
- ALDANDH
- ALDANDW
- ALDANDLB
- ALDANDLD
- ALDANDLH
- ALDANDLW
- ALDAR
- ALDARB
- ALDARH
- ALDARW
- ALDAXP
- ALDAXPW
- ALDAXR
- ALDAXRB
- ALDAXRH
- ALDAXRW
- ALDEORAB
- ALDEORAD
- ALDEORAH
- ALDEORAW
- ALDEORALB
- ALDEORALD
- ALDEORALH
- ALDEORALW
- ALDEORB
- ALDEORD
- ALDEORH
- ALDEORW
- ALDEORLB
- ALDEORLD
- ALDEORLH
- ALDEORLW
- ALDORAB
- ALDORAD
- ALDORAH
- ALDORAW
- ALDORALB
- ALDORALD
- ALDORALH
- ALDORALW
- ALDORB
- ALDORD
- ALDORH
- ALDORW
- ALDORLB
- ALDORLD
- ALDORLH
- ALDORLW
- ALDP
- ALDPW
- ALDPSW
- ALDXR
- ALDXRB
- ALDXRH
- ALDXRW
- ALDXP
- ALDXPW
- ALSL
- ALSLW
- ALSR
- ALSRW
- AMADD
- AMADDW
- AMNEG
- AMNEGW
- AMOVK
- AMOVKW
- AMOVN
- AMOVNW
- AMOVZ
- AMOVZW
- AMRS
- AMSR
- AMSUB
- AMSUBW
- AMUL
- AMULW
- AMVN
- AMVNW
- ANEG
- ANEGS
- ANEGSW
- ANEGW
- ANGC
- ANGCS
- ANGCSW
- ANGCW
- ANOOP
- AORN
- AORNW
- AORR
- AORRW
- APRFM
- APRFUM
- ARBIT
- ARBITW
- AREM
- AREMW
- AREV
- AREV16
- AREV16W
- AREV32
- AREVW
- AROR
- ARORW
- ASBC
- ASBCS
- ASBCSW
- ASBCW
- ASBFIZ
- ASBFIZW
- ASBFM
- ASBFMW
- ASBFX
- ASBFXW
- ASDIV
- ASDIVW
- ASEV
- ASEVL
- ASMADDL
- ASMC
- ASMNEGL
- ASMSUBL
- ASMULH
- ASMULL
- ASTXR
- ASTXRB
- ASTXRH
- ASTXP
- ASTXPW
- ASTXRW
- ASTLP
- ASTLPW
- ASTLR
- ASTLRB
- ASTLRH
- ASTLRW
- ASTLXP
- ASTLXPW
- ASTLXR
- ASTLXRB
- ASTLXRH
- ASTLXRW
- ASTP
- ASTPW
- ASUB
- ASUBS
- ASUBSW
- ASUBW
- ASVC
- ASXTB
- ASXTBW
- ASXTH
- ASXTHW
- ASXTW
- ASYS
- ASYSL
- ATBNZ
- ATBZ
- ATLBI
- ATST
- ATSTW
- AUBFIZ
- AUBFIZW
- AUBFM
- AUBFMW
- AUBFX
- AUBFXW
- AUDIV
- AUDIVW
- AUMADDL
- AUMNEGL
- AUMSUBL
- AUMULH
- AUMULL
- AUREM
- AUREMW
- AUXTB
- AUXTH
- AUXTW
- AUXTBW
- AUXTHW
- AWFE
- AWFI
- AYIELD
- AMOVB
- AMOVBU
- AMOVH
- AMOVHU
- AMOVW
- AMOVWU
- AMOVD
- AMOVNP
- AMOVNPW
- AMOVP
- AMOVPD
- AMOVPQ
- AMOVPS
- AMOVPSW
- AMOVPW
- ASWPAD
- ASWPAW
- ASWPAH
- ASWPAB
- ASWPALD
- ASWPALW
- ASWPALH
- ASWPALB
- ASWPD
- ASWPW
- ASWPH
- ASWPB
- ASWPLD
- ASWPLW
- ASWPLH
- ASWPLB
- ABEQ
- ABNE
- ABCS
- ABHS
- ABCC
- ABLO
- ABMI
- ABPL
- ABVS
- ABVC
- ABHI
- ABLS
- ABGE
- ABLT
- ABGT
- ABLE
- AFABSD
- AFABSS
- AFADDD
- AFADDS
- AFCCMPD
- AFCCMPED
- AFCCMPS
- AFCCMPES
- AFCMPD
- AFCMPED
- AFCMPES
- AFCMPS
- AFCVTSD
- AFCVTDS
- AFCVTZSD
- AFCVTZSDW
- AFCVTZSS
- AFCVTZSSW
- AFCVTZUD
- AFCVTZUDW
- AFCVTZUS
- AFCVTZUSW
- AFDIVD
- AFDIVS
- AFLDPD
- AFLDPS
- AFMOVD
- AFMOVS
- AFMOVQ
- AFMULD
- AFMULS
- AFNEGD
- AFNEGS
- AFSQRTD
- AFSQRTS
- AFSTPD
- AFSTPS
- AFSUBD
- AFSUBS
- ASCVTFD
- ASCVTFS
- ASCVTFWD
- ASCVTFWS
- AUCVTFD
- AUCVTFS
- AUCVTFWD
- AUCVTFWS
- AWORD
- ADWORD
- AFCSELS
- AFCSELD
- AFMAXS
- AFMINS
- AFMAXD
- AFMIND
- AFMAXNMS
- AFMAXNMD
- AFNMULS
- AFNMULD
- AFRINTNS
- AFRINTND
- AFRINTPS
- AFRINTPD
- AFRINTMS
- AFRINTMD
- AFRINTZS
- AFRINTZD
- AFRINTAS
- AFRINTAD
- AFRINTXS
- AFRINTXD
- AFRINTIS
- AFRINTID
- AFMADDS
- AFMADDD
- AFMSUBS
- AFMSUBD
- AFNMADDS
- AFNMADDD
- AFNMSUBS
- AFNMSUBD
- AFMINNMS
- AFMINNMD
- AFCVTDH
- AFCVTHS
- AFCVTHD
- AFCVTSH
- AAESD
- AAESE
- AAESIMC
- AAESMC
- ASHA1C
- ASHA1H
- ASHA1M
- ASHA1P
- ASHA1SU0
- ASHA1SU1
- ASHA256H
- ASHA256H2
- ASHA256SU0
- ASHA256SU1
- ASHA512H
- ASHA512H2
- ASHA512SU0
- ASHA512SU1
- AVADD
- AVADDP
- AVAND
- AVBIF
- AVCMEQ
- AVCNT
- AVEOR
- AVMOV
- AVLD1
- AVLD2
- AVLD3
- AVLD4
- AVLD1R
- AVLD2R
- AVLD3R
- AVLD4R
- AVORR
- AVREV16
- AVREV32
- AVREV64
- AVST1
- AVST2
- AVST3
- AVST4
- AVDUP
- AVADDV
- AVMOVI
- AVUADDLV
- AVSUB
- AVFMLA
- AVFMLS
- AVPMULL
- AVPMULL2
- AVEXT
- AVRBIT
- AVUSHR
- AVUSHLL
- AVUSHLL2
- AVUXTL
- AVUXTL2
- AVUZP1
- AVUZP2
- AVSHL
- AVSRI
- AVBSL
- AVBIT
- AVTBL
- AVZIP1
- AVZIP2
- AVCMTST
- ALAST
- AB = obj.AJMP
- ABL = obj.ACALL
- )
- const (
- // shift types
- SHIFT_LL = 0 << 22
- SHIFT_LR = 1 << 22
- SHIFT_AR = 2 << 22
- )
- // Arrangement for ARM64 SIMD instructions
- const (
- // arrangement types
- ARNG_8B = iota
- ARNG_16B
- ARNG_1D
- ARNG_4H
- ARNG_8H
- ARNG_2S
- ARNG_4S
- ARNG_2D
- ARNG_1Q
- ARNG_B
- ARNG_H
- ARNG_S
- ARNG_D
- )
|