* powerpc 64
const (
NSNAME = 8
NSYM = 50
NREG = 32 /* number of general registers */
NFREG = 32 /* number of floating point registers */
)
const (
/* RBasePPC64 = 4096 */
/* R0=4096 ... R31=4127 */
REG_R0 = obj.RBasePPC64 + 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
// CR bits. Use Book 1, chapter 2 naming for bits. Keep aligned to 32
REG_CR0LT
REG_CR0GT
REG_CR0EQ
REG_CR0SO
REG_CR1LT
REG_CR1GT
REG_CR1EQ
REG_CR1SO
REG_CR2LT
REG_CR2GT
REG_CR2EQ
REG_CR2SO
REG_CR3LT
REG_CR3GT
REG_CR3EQ
REG_CR3SO
REG_CR4LT
REG_CR4GT
REG_CR4EQ
REG_CR4SO
REG_CR5LT
REG_CR5GT
REG_CR5EQ
REG_CR5SO
REG_CR6LT
REG_CR6GT
REG_CR6EQ
REG_CR6SO
REG_CR7LT
REG_CR7GT
REG_CR7EQ
REG_CR7SO
/* Align FPR and VSR vectors such that when masked with 0x3F they produce
an equivalent VSX register. */
/* F0=4160 ... F31=4191 */
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
/* V0=4192 ... V31=4223 */
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
/* VS0=4224 ... VS63=4287 */
REG_VS0
REG_VS1
REG_VS2
REG_VS3
REG_VS4
REG_VS5
REG_VS6
REG_VS7
REG_VS8
REG_VS9
REG_VS10
REG_VS11
REG_VS12
REG_VS13
REG_VS14
REG_VS15
REG_VS16
REG_VS17
REG_VS18
REG_VS19
REG_VS20
REG_VS21
REG_VS22
REG_VS23
REG_VS24
REG_VS25
REG_VS26
REG_VS27
REG_VS28
REG_VS29
REG_VS30
REG_VS31
REG_VS32
REG_VS33
REG_VS34
REG_VS35
REG_VS36
REG_VS37
REG_VS38
REG_VS39
REG_VS40
REG_VS41
REG_VS42
REG_VS43
REG_VS44
REG_VS45
REG_VS46
REG_VS47
REG_VS48
REG_VS49
REG_VS50
REG_VS51
REG_VS52
REG_VS53
REG_VS54
REG_VS55
REG_VS56
REG_VS57
REG_VS58
REG_VS59
REG_VS60
REG_VS61
REG_VS62
REG_VS63
REG_CR0
REG_CR1
REG_CR2
REG_CR3
REG_CR4
REG_CR5
REG_CR6
REG_CR7
// MMA accumulator registers, these shadow VSR 0-31
// e.g MMAx shadows VSRx*4-VSRx*4+3 or
// MMA0 shadows VSR0-VSR3
REG_A0
REG_A1
REG_A2
REG_A3
REG_A4
REG_A5
REG_A6
REG_A7
REG_MSR
REG_FPSCR
REG_CR
REG_SPECIAL = REG_CR0
REG_CRBIT0 = REG_CR0LT // An alias for a Condition Register bit 0
REG_SPR0 = obj.RBasePPC64 + 1024 // first of 1024 registers
REG_XER = REG_SPR0 + 1
REG_LR = REG_SPR0 + 8
REG_CTR = REG_SPR0 + 9
REGZERO = REG_R0 /* set to zero */
REGSP = REG_R1
REGSB = REG_R2
REGRET = REG_R3
REGARG = -1 /* -1 disables passing the first argument in register */
REGRT1 = REG_R20 /* reserved for runtime, duffzero and duffcopy */
REGRT2 = REG_R21 /* reserved for runtime, duffcopy */
REGMIN = REG_R7 /* register variables allocated from here to REGMAX */
REGCTXT = REG_R11 /* context for closures */
REGTLS = REG_R13 /* C ABI TLS base pointer */
REGMAX = REG_R27
REGEXT = REG_R30 /* external registers allocated from here down */
REGG = REG_R30 /* G */
REGTMP = REG_R31 /* used by the linker */
FREGRET = REG_F0
FREGMIN = REG_F17 /* first register variable */
FREGMAX = REG_F26 /* last register variable for 9g only */
FREGEXT = REG_F26 /* first external register */
)
const (
/* mark flags */
LABEL = 1 << 0
LEAF = 1 << 1
FLOAT = 1 << 2
BRANCH = 1 << 3
LOAD = 1 << 4
FCMP = 1 << 5
SYNC = 1 << 6
LIST = 1 << 7
FOLL = 1 << 8
NOSCHED = 1 << 9
PFX_X64B = 1 << 10 // A prefixed instruction crossing a 64B boundary
)
const (
BI_CR0 = 0
BI_CR1 = 4
BI_CR2 = 8
BI_CR3 = 12
BI_CR4 = 16
BI_CR5 = 20
BI_CR6 = 24
BI_CR7 = 28
BI_LT = 0
BI_GT = 1
BI_EQ = 2
BI_FU = 3
)
const (
BO_ALWAYS = 20 // branch unconditionally
BO_BCTR = 16 // decrement ctr, branch on ctr != 0
BO_NOTBCTR = 18 // decrement ctr, branch on ctr == 0
BO_BCR = 12 // branch on cr value
BO_BCRBCTR = 8 // decrement ctr, branch on ctr != 0 and cr value
BO_NOTBCR = 4 // branch on not cr value
)
const (
C_COND_LT = iota // 0 result is negative
C_COND_GT // 1 result is positive
C_COND_EQ // 2 result is zero
C_COND_SO // 3 summary overflow or FP compare w/ NaN
)
const (
C_NONE = iota
C_REGP /* An even numbered gpr which can be used a gpr pair argument */
C_REG /* Any gpr register */
C_FREGP /* An even numbered fpr which can be used a fpr pair argument */
C_FREG /* Any fpr register */
C_VREG /* Any vector register */
C_VSREGP /* An even numbered vsx register which can be used as a vsx register pair argument */
C_VSREG /* Any vector-scalar register */
C_CREG /* The condition registor (CR) */
C_CRBIT /* A single bit of the CR register (0-31) */
C_SPR /* special processor register */
C_AREG /* MMA accumulator register */
C_ZCON /* The constant zero */
C_U1CON /* 1 bit unsigned constant */
C_U2CON /* 2 bit unsigned constant */
C_U3CON /* 3 bit unsigned constant */
C_U4CON /* 4 bit unsigned constant */
C_U5CON /* 5 bit unsigned constant */
C_U8CON /* 8 bit unsigned constant */
C_U15CON /* 15 bit unsigned constant */
C_S16CON /* 16 bit signed constant */
C_U16CON /* 16 bit unsigned constant */
C_32CON /* Any constant which fits into 32 bits. Can be signed or unsigned */
C_S34CON /* 34 bit signed constant */
C_64CON /* Any constant which fits into 64 bits. Can be signed or unsigned */
C_SACON /* $n(REG) where n <= int16 */
C_LACON /* $n(REG) where n <= int32 */
C_DACON /* $n(REG) where n <= int64 */
C_SBRA /* A short offset argument to a branching instruction */
C_LBRA /* A long offset argument to a branching instruction */
C_LBRAPIC /* Like C_LBRA, but requires an extra NOP for potential TOC restore by the linker. */
C_ZOREG /* An $0+reg memory op */
C_SOREG /* An $n+reg memory arg where n is a 16 bit signed offset */
C_LOREG /* An $n+reg memory arg where n is a 32 bit signed offset */
C_XOREG /* An reg+reg memory arg */
C_FPSCR /* The fpscr register */
C_LR /* The link register */
C_CTR /* The count register */
C_ANY /* Any argument */
C_GOK /* A non-matched argument */
C_ADDR /* A symbolic memory location */
C_TLS_LE /* A thread local, local-exec, type memory arg */
C_TLS_IE /* A thread local, initial-exec, type memory arg */
C_TEXTSIZE /* An argument with Type obj.TYPE_TEXTSIZE */
C_NCLASS /* must be the last */
/* Aliased names which should be cleaned up, or integrated. */
C_SCON = C_U15CON
C_ADDCON = C_S16CON
C_ANDCON = C_U16CON
C_LCON = C_32CON
/* Aliased names which may be generated by ppc64map for the optab. */
C_S32CON = C_32CON
C_U32CON = C_32CON
)
const (
AADD = obj.ABasePPC64 + obj.A_ARCHSPECIFIC + iota
AADDCC
AADDIS
AADDV
AADDVCC
AADDC
AADDCCC
AADDCV
AADDCVCC
AADDME
AADDMECC
AADDMEVCC
AADDMEV
AADDE
AADDECC
AADDEVCC
AADDEV
AADDZE
AADDZECC
AADDZEVCC
AADDZEV
AADDEX
AAND
AANDCC
AANDN
AANDNCC
AANDISCC
ABC
ABCL
ABEQ
ABGE // not LT = G/E/U
ABGT
ABLE // not GT = L/E/U
ABLT
ABNE // not EQ = L/G/U
ABVC // Branch if float not unordered (also branch on not summary overflow)
ABVS // Branch if float unordered (also branch on summary overflow)
ABDNZ // Decrement CTR, and branch if CTR != 0
ABDZ // Decrement CTR, and branch if CTR == 0
ACMP
ACMPU
ACMPEQB
ACNTLZW
ACNTLZWCC
ACRAND
ACRANDN
ACREQV
ACRNAND
ACRNOR
ACROR
ACRORN
ACRXOR
ADIVW
ADIVWCC
ADIVWVCC
ADIVWV
ADIVWU
ADIVWUCC
ADIVWUVCC
ADIVWUV
AMODUD
AMODUW
AMODSD
AMODSW
AEQV
AEQVCC
AEXTSB
AEXTSBCC
AEXTSH
AEXTSHCC
AFABS
AFABSCC
AFADD
AFADDCC
AFADDS
AFADDSCC
AFCMPO
AFCMPU
AFCTIW
AFCTIWCC
AFCTIWZ
AFCTIWZCC
AFDIV
AFDIVCC
AFDIVS
AFDIVSCC
AFMADD
AFMADDCC
AFMADDS
AFMADDSCC
AFMOVD
AFMOVDCC
AFMOVDU
AFMOVS
AFMOVSU
AFMOVSX
AFMOVSZ
AFMSUB
AFMSUBCC
AFMSUBS
AFMSUBSCC
AFMUL
AFMULCC
AFMULS
AFMULSCC
AFNABS
AFNABSCC
AFNEG
AFNEGCC
AFNMADD
AFNMADDCC
AFNMADDS
AFNMADDSCC
AFNMSUB
AFNMSUBCC
AFNMSUBS
AFNMSUBSCC
AFRSP
AFRSPCC
AFSUB
AFSUBCC
AFSUBS
AFSUBSCC
AISEL
AMOVMW
ALBAR
ALHAR
ALSW
ALWAR
ALWSYNC
AMOVDBR
AMOVWBR
AMOVB
AMOVBU
AMOVBZ
AMOVBZU
AMOVH
AMOVHBR
AMOVHU
AMOVHZ
AMOVHZU
AMOVW
AMOVWU
AMOVFL
AMOVCRFS
AMTFSB0
AMTFSB0CC
AMTFSB1
AMTFSB1CC
AMULHW
AMULHWCC
AMULHWU
AMULHWUCC
AMULLW
AMULLWCC
AMULLWVCC
AMULLWV
ANAND
ANANDCC
ANEG
ANEGCC
ANEGVCC
ANEGV
ANOR
ANORCC
AOR
AORCC
AORN
AORNCC
AORIS
AREM
AREMU
ARFI
ARLWMI
ARLWMICC
ARLWNM
ARLWNMCC
ACLRLSLWI
ASLW
ASLWCC
ASRW
ASRAW
ASRAWCC
ASRWCC
ASTBCCC
ASTHCCC
ASTSW
ASTWCCC
ASUB
ASUBCC
ASUBVCC
ASUBC
ASUBCCC
ASUBCV
ASUBCVCC
ASUBME
ASUBMECC
ASUBMEVCC
ASUBMEV
ASUBV
ASUBE
ASUBECC
ASUBEV
ASUBEVCC
ASUBZE
ASUBZECC
ASUBZEVCC
ASUBZEV
ASYNC
AXOR
AXORCC
AXORIS
ADCBF
ADCBI
ADCBST
ADCBT
ADCBTST
ADCBZ
AEIEIO
AICBI
AISYNC
APTESYNC
ATLBIE
ATLBIEL
ATLBSYNC
ATW
ASYSCALL
AWORD
ARFCI
AFCPSGN
AFCPSGNCC
/* optional on 32-bit */
AFRES
AFRESCC
AFRIM
AFRIMCC
AFRIP
AFRIPCC
AFRIZ
AFRIZCC
AFRIN
AFRINCC
AFRSQRTE
AFRSQRTECC
AFSEL
AFSELCC
AFSQRT
AFSQRTCC
AFSQRTS
AFSQRTSCC
ACNTLZD
ACNTLZDCC
ACMPW /* CMP with L=0 */
ACMPWU
ACMPB
AFTDIV
AFTSQRT
ADIVD
ADIVDCC
ADIVDE
ADIVDECC
ADIVDEU
ADIVDEUCC
ADIVDVCC
ADIVDV
ADIVDU
ADIVDUCC
ADIVDUVCC
ADIVDUV
AEXTSW
AEXTSWCC
/* AFCFIW; AFCFIWCC */
AFCFID
AFCFIDCC
AFCFIDU
AFCFIDUCC
AFCFIDS
AFCFIDSCC
AFCTID
AFCTIDCC
AFCTIDZ
AFCTIDZCC
ALDAR
AMOVD
AMOVDU
AMOVWZ
AMOVWZU
AMULHD
AMULHDCC
AMULHDU
AMULHDUCC
AMULLD
AMULLDCC
AMULLDVCC
AMULLDV
ARFID
ARLDMI
ARLDMICC
ARLDIMI
ARLDIMICC
ARLDC
ARLDCCC
ARLDCR
ARLDCRCC
ARLDICR
ARLDICRCC
ARLDCL
ARLDCLCC
ARLDICL
ARLDICLCC
ARLDIC
ARLDICCC
ACLRLSLDI
AROTL
AROTLW
ASLBIA
ASLBIE
ASLBMFEE
ASLBMFEV
ASLBMTE
ASLD
ASLDCC
ASRD
ASRAD
ASRADCC
ASRDCC
AEXTSWSLI
AEXTSWSLICC
ASTDCCC
ATD
ASETB
/* 64-bit pseudo operation */
ADWORD
AREMD
AREMDU
/* more 64-bit operations */
AHRFID
APOPCNTD
APOPCNTW
APOPCNTB
ACNTTZW
ACNTTZWCC
ACNTTZD
ACNTTZDCC
ACOPY
APASTECC
ADARN
AMADDHD
AMADDHDU
AMADDLD
/* Vector */
ALVEBX
ALVEHX
ALVEWX
ALVX
ALVXL
ALVSL
ALVSR
ASTVEBX
ASTVEHX
ASTVEWX
ASTVX
ASTVXL
AVAND
AVANDC
AVNAND
AVOR
AVORC
AVNOR
AVXOR
AVEQV
AVADDUM
AVADDUBM
AVADDUHM
AVADDUWM
AVADDUDM
AVADDUQM
AVADDCU
AVADDCUQ
AVADDCUW
AVADDUS
AVADDUBS
AVADDUHS
AVADDUWS
AVADDSS
AVADDSBS
AVADDSHS
AVADDSWS
AVADDE
AVADDEUQM
AVADDECUQ
AVSUBUM
AVSUBUBM
AVSUBUHM
AVSUBUWM
AVSUBUDM
AVSUBUQM
AVSUBCU
AVSUBCUQ
AVSUBCUW
AVSUBUS
AVSUBUBS
AVSUBUHS
AVSUBUWS
AVSUBSS
AVSUBSBS
AVSUBSHS
AVSUBSWS
AVSUBE
AVSUBEUQM
AVSUBECUQ
AVMULESB
AVMULOSB
AVMULEUB
AVMULOUB
AVMULESH
AVMULOSH
AVMULEUH
AVMULOUH
AVMULESW
AVMULOSW
AVMULEUW
AVMULOUW
AVMULUWM
AVPMSUM
AVPMSUMB
AVPMSUMH
AVPMSUMW
AVPMSUMD
AVMSUMUDM
AVR
AVRLB
AVRLH
AVRLW
AVRLD
AVS
AVSLB
AVSLH
AVSLW
AVSL
AVSLO
AVSRB
AVSRH
AVSRW
AVSR
AVSRO
AVSLD
AVSRD
AVSA
AVSRAB
AVSRAH
AVSRAW
AVSRAD
AVSOI
AVSLDOI
AVCLZ
AVCLZB
AVCLZH
AVCLZW
AVCLZD
AVPOPCNT
AVPOPCNTB
AVPOPCNTH
AVPOPCNTW
AVPOPCNTD
AVCMPEQ
AVCMPEQUB
AVCMPEQUBCC
AVCMPEQUH
AVCMPEQUHCC
AVCMPEQUW
AVCMPEQUWCC
AVCMPEQUD
AVCMPEQUDCC
AVCMPGT
AVCMPGTUB
AVCMPGTUBCC
AVCMPGTUH
AVCMPGTUHCC
AVCMPGTUW
AVCMPGTUWCC
AVCMPGTUD
AVCMPGTUDCC
AVCMPGTSB
AVCMPGTSBCC
AVCMPGTSH
AVCMPGTSHCC
AVCMPGTSW
AVCMPGTSWCC
AVCMPGTSD
AVCMPGTSDCC
AVCMPNEZB
AVCMPNEZBCC
AVCMPNEB
AVCMPNEBCC
AVCMPNEH
AVCMPNEHCC
AVCMPNEW
AVCMPNEWCC
AVPERM
AVPERMXOR
AVPERMR
AVBPERMQ
AVBPERMD
AVSEL
AVSPLTB
AVSPLTH
AVSPLTW
AVSPLTISB
AVSPLTISH
AVSPLTISW
AVCIPH
AVCIPHER
AVCIPHERLAST
AVNCIPH
AVNCIPHER
AVNCIPHERLAST
AVSBOX
AVSHASIGMA
AVSHASIGMAW
AVSHASIGMAD
AVMRGEW
AVMRGOW
AVCLZLSBB
AVCTZLSBB
/* VSX */
ALXV
ALXVL
ALXVLL
ALXVD2X
ALXVW4X
ALXVH8X
ALXVB16X
ALXVX
ALXVDSX
ASTXV
ASTXVL
ASTXVLL
ASTXVD2X
ASTXVW4X
ASTXVH8X
ASTXVB16X
ASTXVX
ALXSDX
ASTXSDX
ALXSIWAX
ALXSIWZX
ASTXSIWX
AMFVSRD
AMFFPRD
AMFVRD
AMFVSRWZ
AMFVSRLD
AMTVSRD
AMTFPRD
AMTVRD
AMTVSRWA
AMTVSRWZ
AMTVSRDD
AMTVSRWS
AXXLAND
AXXLANDC
AXXLEQV
AXXLNAND
AXXLOR
AXXLORC
AXXLNOR
AXXLORQ
AXXLXOR
AXXSEL
AXXMRGHW
AXXMRGLW
AXXSPLTW
AXXSPLTIB
AXXPERM
AXXPERMDI
AXXSLDWI
AXXBRQ
AXXBRD
AXXBRW
AXXBRH
AXSCVDPSP
AXSCVSPDP
AXSCVDPSPN
AXSCVSPDPN
AXVCVDPSP
AXVCVSPDP
AXSCVDPSXDS
AXSCVDPSXWS
AXSCVDPUXDS
AXSCVDPUXWS
AXSCVSXDDP
AXSCVUXDDP
AXSCVSXDSP
AXSCVUXDSP
AXVCVDPSXDS
AXVCVDPSXWS
AXVCVDPUXDS
AXVCVDPUXWS
AXVCVSPSXDS
AXVCVSPSXWS
AXVCVSPUXDS
AXVCVSPUXWS
AXVCVSXDDP
AXVCVSXWDP
AXVCVUXDDP
AXVCVUXWDP
AXVCVSXDSP
AXVCVSXWSP
AXVCVUXDSP
AXVCVUXWSP
ALASTAOUT // The last instruction in this list. Also the first opcode generated by ppc64map.
// aliases
ABR = obj.AJMP
ABL = obj.ACALL
ALAST = ALASTGEN // The final enumerated instruction value + 1. This is used to size the oprange table.
)
const (
// R bit option in prefixed load/store/add D-form operations
PFX_R_ABS = 0 // Offset is absolute
PFX_R_PCREL = 1 // Offset is relative to PC, RA should be 0
)
const (
/* each rhs is OPVCC(_, _, _, _) */
OP_ADD = 31<<26 | 266<<1 | 0<<10 | 0
OP_ADDI = 14<<26 | 0<<1 | 0<<10 | 0
OP_ADDIS = 15<<26 | 0<<1 | 0<<10 | 0
OP_ANDI = 28<<26 | 0<<1 | 0<<10 | 0
OP_EXTSB = 31<<26 | 954<<1 | 0<<10 | 0
OP_EXTSH = 31<<26 | 922<<1 | 0<<10 | 0
OP_EXTSW = 31<<26 | 986<<1 | 0<<10 | 0
OP_ISEL = 31<<26 | 15<<1 | 0<<10 | 0
OP_MCRF = 19<<26 | 0<<1 | 0<<10 | 0
OP_MCRFS = 63<<26 | 64<<1 | 0<<10 | 0
OP_MCRXR = 31<<26 | 512<<1 | 0<<10 | 0
OP_MFCR = 31<<26 | 19<<1 | 0<<10 | 0
OP_MFFS = 63<<26 | 583<<1 | 0<<10 | 0
OP_MFSPR = 31<<26 | 339<<1 | 0<<10 | 0
OP_MFSR = 31<<26 | 595<<1 | 0<<10 | 0
OP_MFSRIN = 31<<26 | 659<<1 | 0<<10 | 0
OP_MTCRF = 31<<26 | 144<<1 | 0<<10 | 0
OP_MTFSF = 63<<26 | 711<<1 | 0<<10 | 0
OP_MTFSFI = 63<<26 | 134<<1 | 0<<10 | 0
OP_MTSPR = 31<<26 | 467<<1 | 0<<10 | 0
OP_MTSR = 31<<26 | 210<<1 | 0<<10 | 0
OP_MTSRIN = 31<<26 | 242<<1 | 0<<10 | 0
OP_MULLW = 31<<26 | 235<<1 | 0<<10 | 0
OP_MULLD = 31<<26 | 233<<1 | 0<<10 | 0
OP_OR = 31<<26 | 444<<1 | 0<<10 | 0
OP_ORI = 24<<26 | 0<<1 | 0<<10 | 0
OP_ORIS = 25<<26 | 0<<1 | 0<<10 | 0
OP_RLWINM = 21<<26 | 0<<1 | 0<<10 | 0
OP_RLWNM = 23<<26 | 0<<1 | 0<<10 | 0
OP_SUBF = 31<<26 | 40<<1 | 0<<10 | 0
OP_RLDIC = 30<<26 | 4<<1 | 0<<10 | 0
OP_RLDICR = 30<<26 | 2<<1 | 0<<10 | 0
OP_RLDICL = 30<<26 | 0<<1 | 0<<10 | 0
OP_RLDCL = 30<<26 | 8<<1 | 0<<10 | 0
OP_EXTSWSLI = 31<<26 | 445<<2
OP_SETB = 31<<26 | 128<<1
)
const (
D_FORM = iota
DS_FORM
)
const (
AXXSETACCZ = ALASTAOUT + iota
AXXMTACC
AXXMFACC
AXXGENPCVWM
AXXGENPCVHM
AXXGENPCVDM
AXXGENPCVBM
AXVTLSBB
AXVI8GER4SPP
AXVI8GER4PP
AXVI8GER4
AXVI4GER8PP
AXVI4GER8
AXVI16GER2SPP
AXVI16GER2S
AXVI16GER2PP
AXVI16GER2
AXVF64GERPP
AXVF64GERPN
AXVF64GERNP
AXVF64GERNN
AXVF64GER
AXVF32GERPP
AXVF32GERPN
AXVF32GERNP
AXVF32GERNN
AXVF32GER
AXVF16GER2PP
AXVF16GER2PN
AXVF16GER2NP
AXVF16GER2NN
AXVF16GER2
AXVCVSPBF16
AXVCVBF16SPN
AXVBF16GER2PP
AXVBF16GER2PN
AXVBF16GER2NP
AXVBF16GER2NN
AXVBF16GER2
AXSMINCQP
AXSMAXCQP
AXSCVUQQP
AXSCVSQQP
AXSCVQPUQZ
AXSCVQPSQZ
AXSCMPGTQP
AXSCMPGEQP
AXSCMPEQQP
AVSTRIHRCC
AVSTRIHR
AVSTRIHLCC
AVSTRIHL
AVSTRIBRCC
AVSTRIBR
AVSTRIBLCC
AVSTRIBL
AVSRQ
AVSRDBI
AVSRAQ
AVSLQ
AVSLDBI
AVRLQNM
AVRLQMI
AVRLQ
AVPEXTD
AVPDEPD
AVMULOUD
AVMULOSD
AVMULLD
AVMULHUW
AVMULHUD
AVMULHSW
AVMULHSD
AVMULEUD
AVMULESD
AVMSUMCUD
AVMODUW
AVMODUQ
AVMODUD
AVMODSW
AVMODSQ
AVMODSD
AVINSWVRX
AVINSWVLX
AVINSWRX
AVINSWLX
AVINSW
AVINSHVRX
AVINSHVLX
AVINSHRX
AVINSHLX
AVINSDRX
AVINSDLX
AVINSD
AVINSBVRX
AVINSBVLX
AVINSBRX
AVINSBLX
AVGNB
AVEXTSD2Q
AVEXTRACTWM
AVEXTRACTQM
AVEXTRACTHM
AVEXTRACTDM
AVEXTRACTBM
AVEXTDUWVRX
AVEXTDUWVLX
AVEXTDUHVRX
AVEXTDUHVLX
AVEXTDUBVRX
AVEXTDUBVLX
AVEXTDDVRX
AVEXTDDVLX
AVEXPANDWM
AVEXPANDQM
AVEXPANDHM
AVEXPANDDM
AVEXPANDBM
AVDIVUW
AVDIVUQ
AVDIVUD
AVDIVSW
AVDIVSQ
AVDIVSD
AVDIVEUW
AVDIVEUQ
AVDIVEUD
AVDIVESW
AVDIVESQ
AVDIVESD
AVCTZDM
AVCNTMBW
AVCNTMBH
AVCNTMBD
AVCNTMBB
AVCMPUQ
AVCMPSQ
AVCMPGTUQCC
AVCMPGTUQ
AVCMPGTSQCC
AVCMPGTSQ
AVCMPEQUQCC
AVCMPEQUQ
AVCLZDM
AVCLRRB
AVCLRLB
AVCFUGED
ASTXVRWX
ASTXVRHX
ASTXVRDX
ASTXVRBX
ASTXVPX
ASTXVP
ASETNBCR
ASETNBC
ASETBCR
ASETBC
APEXTD
APDEPD
AMTVSRWM
AMTVSRQM
AMTVSRHM
AMTVSRDM
AMTVSRBMI
AMTVSRBM
ALXVRWX
ALXVRHX
ALXVRDX
ALXVRBX
ALXVPX
ALXVP
ALXVKQ
ADCTFIXQQ
ADCFFIXQQ
ACNTTZDM
ACNTLZDM
ACFUGED
ABRW
ABRH
ABRD
AHASHSTP
AHASHST
AHASHCHKP
AHASHCHK
AXXSPLTIW
AXXSPLTIDP
AXXSPLTI32DX
AXXPERMX
AXXEVAL
AXXBLENDVW
AXXBLENDVH
AXXBLENDVD
AXXBLENDVB
APSTXVP
APSTXV
APSTXSSP
APSTXSD
APSTW
APSTQ
APSTH
APSTFS
APSTFD
APSTD
APSTB
APNOP
APMXVI8GER4SPP
APMXVI8GER4PP
APMXVI8GER4
APMXVI4GER8PP
APMXVI4GER8
APMXVI16GER2SPP
APMXVI16GER2S
APMXVI16GER2PP
APMXVI16GER2
APMXVF64GERPP
APMXVF64GERPN
APMXVF64GERNP
APMXVF64GERNN
APMXVF64GER
APMXVF32GERPP
APMXVF32GERPN
APMXVF32GERNP
APMXVF32GERNN
APMXVF32GER
APMXVF16GER2PP
APMXVF16GER2PN
APMXVF16GER2NP
APMXVF16GER2NN
APMXVF16GER2
APMXVBF16GER2PP
APMXVBF16GER2PN
APMXVBF16GER2NP
APMXVBF16GER2NN
APMXVBF16GER2
APLXVP
APLXV
APLXSSP
APLXSD
APLWZ
APLWA
APLQ
APLHZ
APLHA
APLFS
APLFD
APLD
APLBZ
APADDI
ALASTGEN
AFIRSTGEN = AXXSETACCZ
)
* GENERAL: * * compiler allocates R3 up as temps * compiler allocates register variables R7-R27 * compiler allocates external registers R30 down * * compiler allocates register variables F17-F26 * compiler allocates external registers F26 down
const (
BIG = 32768 - 8
)
const (
// The preferred hardware nop instruction.
NOP = 0x60000000
)
var Anames = []string{ obj.A_ARCHSPECIFIC: "ADD", "ADDCC", "ADDIS", "ADDV", "ADDVCC", "ADDC", "ADDCCC", "ADDCV", "ADDCVCC", "ADDME", "ADDMECC", "ADDMEVCC", "ADDMEV", "ADDE", "ADDECC", "ADDEVCC", "ADDEV", "ADDZE", "ADDZECC", "ADDZEVCC", "ADDZEV", "ADDEX", "AND", "ANDCC", "ANDN", "ANDNCC", "ANDISCC", "BC", "BCL", "BEQ", "BGE", "BGT", "BLE", "BLT", "BNE", "BVC", "BVS", "BDNZ", "BDZ", "CMP", "CMPU", "CMPEQB", "CNTLZW", "CNTLZWCC", "CRAND", "CRANDN", "CREQV", "CRNAND", "CRNOR", "CROR", "CRORN", "CRXOR", "DIVW", "DIVWCC", "DIVWVCC", "DIVWV", "DIVWU", "DIVWUCC", "DIVWUVCC", "DIVWUV", "MODUD", "MODUW", "MODSD", "MODSW", "EQV", "EQVCC", "EXTSB", "EXTSBCC", "EXTSH", "EXTSHCC", "FABS", "FABSCC", "FADD", "FADDCC", "FADDS", "FADDSCC", "FCMPO", "FCMPU", "FCTIW", "FCTIWCC", "FCTIWZ", "FCTIWZCC", "FDIV", "FDIVCC", "FDIVS", "FDIVSCC", "FMADD", "FMADDCC", "FMADDS", "FMADDSCC", "FMOVD", "FMOVDCC", "FMOVDU", "FMOVS", "FMOVSU", "FMOVSX", "FMOVSZ", "FMSUB", "FMSUBCC", "FMSUBS", "FMSUBSCC", "FMUL", "FMULCC", "FMULS", "FMULSCC", "FNABS", "FNABSCC", "FNEG", "FNEGCC", "FNMADD", "FNMADDCC", "FNMADDS", "FNMADDSCC", "FNMSUB", "FNMSUBCC", "FNMSUBS", "FNMSUBSCC", "FRSP", "FRSPCC", "FSUB", "FSUBCC", "FSUBS", "FSUBSCC", "ISEL", "MOVMW", "LBAR", "LHAR", "LSW", "LWAR", "LWSYNC", "MOVDBR", "MOVWBR", "MOVB", "MOVBU", "MOVBZ", "MOVBZU", "MOVH", "MOVHBR", "MOVHU", "MOVHZ", "MOVHZU", "MOVW", "MOVWU", "MOVFL", "MOVCRFS", "MTFSB0", "MTFSB0CC", "MTFSB1", "MTFSB1CC", "MULHW", "MULHWCC", "MULHWU", "MULHWUCC", "MULLW", "MULLWCC", "MULLWVCC", "MULLWV", "NAND", "NANDCC", "NEG", "NEGCC", "NEGVCC", "NEGV", "NOR", "NORCC", "OR", "ORCC", "ORN", "ORNCC", "ORIS", "REM", "REMU", "RFI", "RLWMI", "RLWMICC", "RLWNM", "RLWNMCC", "CLRLSLWI", "SLW", "SLWCC", "SRW", "SRAW", "SRAWCC", "SRWCC", "STBCCC", "STHCCC", "STSW", "STWCCC", "SUB", "SUBCC", "SUBVCC", "SUBC", "SUBCCC", "SUBCV", "SUBCVCC", "SUBME", "SUBMECC", "SUBMEVCC", "SUBMEV", "SUBV", "SUBE", "SUBECC", "SUBEV", "SUBEVCC", "SUBZE", "SUBZECC", "SUBZEVCC", "SUBZEV", "SYNC", "XOR", "XORCC", "XORIS", "DCBF", "DCBI", "DCBST", "DCBT", "DCBTST", "DCBZ", "EIEIO", "ICBI", "ISYNC", "PTESYNC", "TLBIE", "TLBIEL", "TLBSYNC", "TW", "SYSCALL", "WORD", "RFCI", "FCPSGN", "FCPSGNCC", "FRES", "FRESCC", "FRIM", "FRIMCC", "FRIP", "FRIPCC", "FRIZ", "FRIZCC", "FRIN", "FRINCC", "FRSQRTE", "FRSQRTECC", "FSEL", "FSELCC", "FSQRT", "FSQRTCC", "FSQRTS", "FSQRTSCC", "CNTLZD", "CNTLZDCC", "CMPW", "CMPWU", "CMPB", "FTDIV", "FTSQRT", "DIVD", "DIVDCC", "DIVDE", "DIVDECC", "DIVDEU", "DIVDEUCC", "DIVDVCC", "DIVDV", "DIVDU", "DIVDUCC", "DIVDUVCC", "DIVDUV", "EXTSW", "EXTSWCC", "FCFID", "FCFIDCC", "FCFIDU", "FCFIDUCC", "FCFIDS", "FCFIDSCC", "FCTID", "FCTIDCC", "FCTIDZ", "FCTIDZCC", "LDAR", "MOVD", "MOVDU", "MOVWZ", "MOVWZU", "MULHD", "MULHDCC", "MULHDU", "MULHDUCC", "MULLD", "MULLDCC", "MULLDVCC", "MULLDV", "RFID", "RLDMI", "RLDMICC", "RLDIMI", "RLDIMICC", "RLDC", "RLDCCC", "RLDCR", "RLDCRCC", "RLDICR", "RLDICRCC", "RLDCL", "RLDCLCC", "RLDICL", "RLDICLCC", "RLDIC", "RLDICCC", "CLRLSLDI", "ROTL", "ROTLW", "SLBIA", "SLBIE", "SLBMFEE", "SLBMFEV", "SLBMTE", "SLD", "SLDCC", "SRD", "SRAD", "SRADCC", "SRDCC", "EXTSWSLI", "EXTSWSLICC", "STDCCC", "TD", "SETB", "DWORD", "REMD", "REMDU", "HRFID", "POPCNTD", "POPCNTW", "POPCNTB", "CNTTZW", "CNTTZWCC", "CNTTZD", "CNTTZDCC", "COPY", "PASTECC", "DARN", "MADDHD", "MADDHDU", "MADDLD", "LVEBX", "LVEHX", "LVEWX", "LVX", "LVXL", "LVSL", "LVSR", "STVEBX", "STVEHX", "STVEWX", "STVX", "STVXL", "VAND", "VANDC", "VNAND", "VOR", "VORC", "VNOR", "VXOR", "VEQV", "VADDUM", "VADDUBM", "VADDUHM", "VADDUWM", "VADDUDM", "VADDUQM", "VADDCU", "VADDCUQ", "VADDCUW", "VADDUS", "VADDUBS", "VADDUHS", "VADDUWS", "VADDSS", "VADDSBS", "VADDSHS", "VADDSWS", "VADDE", "VADDEUQM", "VADDECUQ", "VSUBUM", "VSUBUBM", "VSUBUHM", "VSUBUWM", "VSUBUDM", "VSUBUQM", "VSUBCU", "VSUBCUQ", "VSUBCUW", "VSUBUS", "VSUBUBS", "VSUBUHS", "VSUBUWS", "VSUBSS", "VSUBSBS", "VSUBSHS", "VSUBSWS", "VSUBE", "VSUBEUQM", "VSUBECUQ", "VMULESB", "VMULOSB", "VMULEUB", "VMULOUB", "VMULESH", "VMULOSH", "VMULEUH", "VMULOUH", "VMULESW", "VMULOSW", "VMULEUW", "VMULOUW", "VMULUWM", "VPMSUM", "VPMSUMB", "VPMSUMH", "VPMSUMW", "VPMSUMD", "VMSUMUDM", "VR", "VRLB", "VRLH", "VRLW", "VRLD", "VS", "VSLB", "VSLH", "VSLW", "VSL", "VSLO", "VSRB", "VSRH", "VSRW", "VSR", "VSRO", "VSLD", "VSRD", "VSA", "VSRAB", "VSRAH", "VSRAW", "VSRAD", "VSOI", "VSLDOI", "VCLZ", "VCLZB", "VCLZH", "VCLZW", "VCLZD", "VPOPCNT", "VPOPCNTB", "VPOPCNTH", "VPOPCNTW", "VPOPCNTD", "VCMPEQ", "VCMPEQUB", "VCMPEQUBCC", "VCMPEQUH", "VCMPEQUHCC", "VCMPEQUW", "VCMPEQUWCC", "VCMPEQUD", "VCMPEQUDCC", "VCMPGT", "VCMPGTUB", "VCMPGTUBCC", "VCMPGTUH", "VCMPGTUHCC", "VCMPGTUW", "VCMPGTUWCC", "VCMPGTUD", "VCMPGTUDCC", "VCMPGTSB", "VCMPGTSBCC", "VCMPGTSH", "VCMPGTSHCC", "VCMPGTSW", "VCMPGTSWCC", "VCMPGTSD", "VCMPGTSDCC", "VCMPNEZB", "VCMPNEZBCC", "VCMPNEB", "VCMPNEBCC", "VCMPNEH", "VCMPNEHCC", "VCMPNEW", "VCMPNEWCC", "VPERM", "VPERMXOR", "VPERMR", "VBPERMQ", "VBPERMD", "VSEL", "VSPLTB", "VSPLTH", "VSPLTW", "VSPLTISB", "VSPLTISH", "VSPLTISW", "VCIPH", "VCIPHER", "VCIPHERLAST", "VNCIPH", "VNCIPHER", "VNCIPHERLAST", "VSBOX", "VSHASIGMA", "VSHASIGMAW", "VSHASIGMAD", "VMRGEW", "VMRGOW", "VCLZLSBB", "VCTZLSBB", "LXV", "LXVL", "LXVLL", "LXVD2X", "LXVW4X", "LXVH8X", "LXVB16X", "LXVX", "LXVDSX", "STXV", "STXVL", "STXVLL", "STXVD2X", "STXVW4X", "STXVH8X", "STXVB16X", "STXVX", "LXSDX", "STXSDX", "LXSIWAX", "LXSIWZX", "STXSIWX", "MFVSRD", "MFFPRD", "MFVRD", "MFVSRWZ", "MFVSRLD", "MTVSRD", "MTFPRD", "MTVRD", "MTVSRWA", "MTVSRWZ", "MTVSRDD", "MTVSRWS", "XXLAND", "XXLANDC", "XXLEQV", "XXLNAND", "XXLOR", "XXLORC", "XXLNOR", "XXLORQ", "XXLXOR", "XXSEL", "XXMRGHW", "XXMRGLW", "XXSPLTW", "XXSPLTIB", "XXPERM", "XXPERMDI", "XXSLDWI", "XXBRQ", "XXBRD", "XXBRW", "XXBRH", "XSCVDPSP", "XSCVSPDP", "XSCVDPSPN", "XSCVSPDPN", "XVCVDPSP", "XVCVSPDP", "XSCVDPSXDS", "XSCVDPSXWS", "XSCVDPUXDS", "XSCVDPUXWS", "XSCVSXDDP", "XSCVUXDDP", "XSCVSXDSP", "XSCVUXDSP", "XVCVDPSXDS", "XVCVDPSXWS", "XVCVDPUXDS", "XVCVDPUXWS", "XVCVSPSXDS", "XVCVSPSXWS", "XVCVSPUXDS", "XVCVSPUXWS", "XVCVSXDDP", "XVCVSXWDP", "XVCVUXDDP", "XVCVUXWDP", "XVCVSXDSP", "XVCVSXWSP", "XVCVUXDSP", "XVCVUXWSP", "LASTAOUT", }
var GenAnames = []string{ "XXSETACCZ", "XXMTACC", "XXMFACC", "XXGENPCVWM", "XXGENPCVHM", "XXGENPCVDM", "XXGENPCVBM", "XVTLSBB", "XVI8GER4SPP", "XVI8GER4PP", "XVI8GER4", "XVI4GER8PP", "XVI4GER8", "XVI16GER2SPP", "XVI16GER2S", "XVI16GER2PP", "XVI16GER2", "XVF64GERPP", "XVF64GERPN", "XVF64GERNP", "XVF64GERNN", "XVF64GER", "XVF32GERPP", "XVF32GERPN", "XVF32GERNP", "XVF32GERNN", "XVF32GER", "XVF16GER2PP", "XVF16GER2PN", "XVF16GER2NP", "XVF16GER2NN", "XVF16GER2", "XVCVSPBF16", "XVCVBF16SPN", "XVBF16GER2PP", "XVBF16GER2PN", "XVBF16GER2NP", "XVBF16GER2NN", "XVBF16GER2", "XSMINCQP", "XSMAXCQP", "XSCVUQQP", "XSCVSQQP", "XSCVQPUQZ", "XSCVQPSQZ", "XSCMPGTQP", "XSCMPGEQP", "XSCMPEQQP", "VSTRIHRCC", "VSTRIHR", "VSTRIHLCC", "VSTRIHL", "VSTRIBRCC", "VSTRIBR", "VSTRIBLCC", "VSTRIBL", "VSRQ", "VSRDBI", "VSRAQ", "VSLQ", "VSLDBI", "VRLQNM", "VRLQMI", "VRLQ", "VPEXTD", "VPDEPD", "VMULOUD", "VMULOSD", "VMULLD", "VMULHUW", "VMULHUD", "VMULHSW", "VMULHSD", "VMULEUD", "VMULESD", "VMSUMCUD", "VMODUW", "VMODUQ", "VMODUD", "VMODSW", "VMODSQ", "VMODSD", "VINSWVRX", "VINSWVLX", "VINSWRX", "VINSWLX", "VINSW", "VINSHVRX", "VINSHVLX", "VINSHRX", "VINSHLX", "VINSDRX", "VINSDLX", "VINSD", "VINSBVRX", "VINSBVLX", "VINSBRX", "VINSBLX", "VGNB", "VEXTSD2Q", "VEXTRACTWM", "VEXTRACTQM", "VEXTRACTHM", "VEXTRACTDM", "VEXTRACTBM", "VEXTDUWVRX", "VEXTDUWVLX", "VEXTDUHVRX", "VEXTDUHVLX", "VEXTDUBVRX", "VEXTDUBVLX", "VEXTDDVRX", "VEXTDDVLX", "VEXPANDWM", "VEXPANDQM", "VEXPANDHM", "VEXPANDDM", "VEXPANDBM", "VDIVUW", "VDIVUQ", "VDIVUD", "VDIVSW", "VDIVSQ", "VDIVSD", "VDIVEUW", "VDIVEUQ", "VDIVEUD", "VDIVESW", "VDIVESQ", "VDIVESD", "VCTZDM", "VCNTMBW", "VCNTMBH", "VCNTMBD", "VCNTMBB", "VCMPUQ", "VCMPSQ", "VCMPGTUQCC", "VCMPGTUQ", "VCMPGTSQCC", "VCMPGTSQ", "VCMPEQUQCC", "VCMPEQUQ", "VCLZDM", "VCLRRB", "VCLRLB", "VCFUGED", "STXVRWX", "STXVRHX", "STXVRDX", "STXVRBX", "STXVPX", "STXVP", "SETNBCR", "SETNBC", "SETBCR", "SETBC", "PEXTD", "PDEPD", "MTVSRWM", "MTVSRQM", "MTVSRHM", "MTVSRDM", "MTVSRBMI", "MTVSRBM", "LXVRWX", "LXVRHX", "LXVRDX", "LXVRBX", "LXVPX", "LXVP", "LXVKQ", "DCTFIXQQ", "DCFFIXQQ", "CNTTZDM", "CNTLZDM", "CFUGED", "BRW", "BRH", "BRD", "HASHSTP", "HASHST", "HASHCHKP", "HASHCHK", "XXSPLTIW", "XXSPLTIDP", "XXSPLTI32DX", "XXPERMX", "XXEVAL", "XXBLENDVW", "XXBLENDVH", "XXBLENDVD", "XXBLENDVB", "PSTXVP", "PSTXV", "PSTXSSP", "PSTXSD", "PSTW", "PSTQ", "PSTH", "PSTFS", "PSTFD", "PSTD", "PSTB", "PNOP", "PMXVI8GER4SPP", "PMXVI8GER4PP", "PMXVI8GER4", "PMXVI4GER8PP", "PMXVI4GER8", "PMXVI16GER2SPP", "PMXVI16GER2S", "PMXVI16GER2PP", "PMXVI16GER2", "PMXVF64GERPP", "PMXVF64GERPN", "PMXVF64GERNP", "PMXVF64GERNN", "PMXVF64GER", "PMXVF32GERPP", "PMXVF32GERPN", "PMXVF32GERNP", "PMXVF32GERNN", "PMXVF32GER", "PMXVF16GER2PP", "PMXVF16GER2PN", "PMXVF16GER2NP", "PMXVF16GER2NN", "PMXVF16GER2", "PMXVBF16GER2PP", "PMXVBF16GER2PN", "PMXVBF16GER2NP", "PMXVBF16GER2NN", "PMXVBF16GER2", "PLXVP", "PLXV", "PLXSSP", "PLXSD", "PLWZ", "PLWA", "PLQ", "PLHZ", "PLHA", "PLFS", "PLFD", "PLD", "PLBZ", "PADDI", }
var GenOpcodes = [...]uint32{ 0x7c030162, 0x7c010162, 0x7c000162, 0xf0000768, 0xf000072a, 0xf000076a, 0xf0000728, 0xf002076c, 0xec000318, 0xec000010, 0xec000018, 0xec000110, 0xec000118, 0xec000150, 0xec000158, 0xec000358, 0xec000258, 0xec0001d0, 0xec0005d0, 0xec0003d0, 0xec0007d0, 0xec0001d8, 0xec0000d0, 0xec0004d0, 0xec0002d0, 0xec0006d0, 0xec0000d8, 0xec000090, 0xec000490, 0xec000290, 0xec000690, 0xec000098, 0xf011076c, 0xf010076c, 0xec000190, 0xec000590, 0xec000390, 0xec000790, 0xec000198, 0xfc0005c8, 0xfc000548, 0xfc030688, 0xfc0b0688, 0xfc000688, 0xfc080688, 0xfc0001c8, 0xfc000188, 0xfc000088, 0x1003040d, 0x1003000d, 0x1002040d, 0x1002000d, 0x1001040d, 0x1001000d, 0x1000040d, 0x1000000d, 0x10000205, 0x10000216, 0x10000305, 0x10000105, 0x10000016, 0x10000145, 0x10000045, 0x10000005, 0x1000058d, 0x100005cd, 0x100000c8, 0x100001c8, 0x100001c9, 0x10000289, 0x100002c9, 0x10000389, 0x100003c9, 0x100002c8, 0x100003c8, 0x10000017, 0x1000068b, 0x1000060b, 0x100006cb, 0x1000078b, 0x1000070b, 0x100007cb, 0x1000018f, 0x1000008f, 0x1000038f, 0x1000028f, 0x100000cf, 0x1000014f, 0x1000004f, 0x1000034f, 0x1000024f, 0x100003cf, 0x100002cf, 0x100001cf, 0x1000010f, 0x1000000f, 0x1000030f, 0x1000020f, 0x100004cc, 0x101b0602, 0x100a0642, 0x100c0642, 0x10090642, 0x100b0642, 0x10080642, 0x1000001d, 0x1000001c, 0x1000001b, 0x1000001a, 0x10000019, 0x10000018, 0x1000001f, 0x1000001e, 0x10020642, 0x10040642, 0x10010642, 0x10030642, 0x10000642, 0x1000008b, 0x1000000b, 0x100000cb, 0x1000018b, 0x1000010b, 0x100001cb, 0x1000028b, 0x1000020b, 0x100002cb, 0x1000038b, 0x1000030b, 0x100003cb, 0x100007c4, 0x101c0642, 0x101a0642, 0x101e0642, 0x10180642, 0x10000101, 0x10000141, 0x10000687, 0x10000287, 0x10000787, 0x10000387, 0x100005c7, 0x100001c7, 0x10000784, 0x100001cd, 0x1000018d, 0x1000054d, 0x7c00019a, 0x7c00015a, 0x7c0001da, 0x7c00011a, 0x7c00039a, 0x18000001, 0x7c0003c0, 0x7c000380, 0x7c000340, 0x7c000300, 0x7c000178, 0x7c000138, 0x10120642, 0x10140642, 0x10110642, 0x10130642, 0x10000014, 0x10100642, 0x7c00009a, 0x7c00005a, 0x7c0000da, 0x7c00001a, 0x7c00029a, 0x18000000, 0xf01f02d0, 0xfc0107c4, 0xfc0007c4, 0x7c000476, 0x7c000076, 0x7c0001b8, 0x7c000136, 0x7c0001b6, 0x7c000176, 0x7c000524, 0x7c0005a4, 0x7c000564, 0x7c0005e4, 0x80060000, 0x80040000, 0x80000000, 0x88000000, 0x88000010, 0x84000020, 0x84000010, 0x84000030, 0x84000000, 0xf8000000, 0xd8000000, 0xbc000000, 0xb8000000, 0x90000000, 0xf0000000, 0xb0000000, 0xd0000000, 0xd8000000, 0xf4000000, 0x98000000, 0x00000000, 0xec000318, 0xec000010, 0xec000018, 0xec000110, 0xec000118, 0xec000150, 0xec000158, 0xec000358, 0xec000258, 0xec0001d0, 0xec0005d0, 0xec0003d0, 0xec0007d0, 0xec0001d8, 0xec0000d0, 0xec0004d0, 0xec0002d0, 0xec0006d0, 0xec0000d8, 0xec000090, 0xec000490, 0xec000290, 0xec000690, 0xec000098, 0xec000190, 0xec000590, 0xec000390, 0xec000790, 0xec000198, 0xe8000000, 0xc8000000, 0xac000000, 0xa8000000, 0x80000000, 0xa4000000, 0xe0000000, 0xa0000000, 0xa8000000, 0xc0000000, 0xc8000000, 0xe4000000, 0x88000000, 0x38000000, }
var GenPfxOpcodes = [...]uint32{ 0x05000000, 0x05000000, 0x05000000, 0x05000000, 0x05000000, 0x05000000, 0x05000000, 0x05000000, 0x05000000, 0x04000000, 0x04000000, 0x04000000, 0x04000000, 0x06000000, 0x04000000, 0x06000000, 0x06000000, 0x06000000, 0x04000000, 0x06000000, 0x07000000, 0x07900000, 0x07900000, 0x07900000, 0x07900000, 0x07900000, 0x07900000, 0x07900000, 0x07900000, 0x07900000, 0x07900000, 0x07900000, 0x07900000, 0x07900000, 0x07900000, 0x07900000, 0x07900000, 0x07900000, 0x07900000, 0x07900000, 0x07900000, 0x07900000, 0x07900000, 0x07900000, 0x07900000, 0x07900000, 0x07900000, 0x07900000, 0x07900000, 0x07900000, 0x04000000, 0x04000000, 0x04000000, 0x04000000, 0x06000000, 0x04000000, 0x04000000, 0x06000000, 0x06000000, 0x06000000, 0x06000000, 0x04000000, 0x06000000, 0x06000000, }
var Linkppc64 = obj.LinkArch{ Arch: sys.ArchPPC64, Init: buildop, Preprocess: preprocess, Assemble: span9, Progedit: progedit, UnaryDst: unaryDst, DWARFRegisters: PPC64DWARFRegisters, }
var Linkppc64le = obj.LinkArch{ Arch: sys.ArchPPC64LE, Init: buildop, Preprocess: preprocess, Assemble: span9, Progedit: progedit, UnaryDst: unaryDst, DWARFRegisters: PPC64DWARFRegisters, }
OpenPOWER ABI for Linux Supplement Power Architecture 64-Bit ELF V2 ABI https://openpowerfoundation.org/?resource_lib=64-bit-elf-v2-abi-specification-power-architecture
var PPC64DWARFRegisters = map[int16]int16{}
func AOP_DQ(op uint32, xt uint32, a uint32, b uint32) uint32
DQ-form, VSR register, register + offset operands
func AOP_EXTSWSLI(op uint32, a uint32, s uint32, sh uint32) uint32
func AOP_IIRR(op uint32, d uint32, a uint32, sbit uint32, simm uint32) uint32
VX-form 2-register + ST + SIX operands
func AOP_IR(op uint32, d uint32, simm uint32) uint32
VX-form 1-register + SIM operands
func AOP_IRR(op uint32, d uint32, a uint32, simm uint32) uint32
func AOP_IRRR(op uint32, d uint32, a uint32, b uint32, simm uint32) uint32
VA-form 3-register + SHB operands
func AOP_ISEL(op uint32, t uint32, a uint32, b uint32, bc uint32) uint32
func AOP_MD(op uint32, a uint32, s uint32, sh uint32, m uint32) uint32
MD-form 2-register, 2 6-bit immediate operands
func AOP_MDS(op, to, from, rsh, m uint32) uint32
MDS-form 3-register, 1 6-bit immediate operands. rsh argument is a register.
func AOP_PFX_00_8LS(r, ie uint32) uint32
func AOP_PFX_10_MLS(r, ie uint32) uint32
func AOP_RR(op uint32, d uint32, a uint32) uint32
VX-form 2-register operands, r/none/r
func AOP_RRR(op uint32, d uint32, a uint32, b uint32) uint32
the order is dest, a/s, b/imm for both arithmetic and logical operations.
func AOP_RRRI(op uint32, d uint32, a uint32, b uint32, c uint32) uint32
X-form, 3-register operands + EH field
func AOP_RRRR(op uint32, d uint32, a uint32, b uint32, c uint32) uint32
VA-form 4-register operands
func AOP_VIRR(op uint32, d uint32, a uint32, simm uint32) uint32
VX-form 2-register + UIM operands
func AOP_XX1(op uint32, r uint32, a uint32, b uint32) uint32
XX1-form 3-register operands, 1 VSR operand
func AOP_XX2(op uint32, xt uint32, a uint32, xb uint32) uint32
XX2-form 3-register operands, 2 VSR operands
func AOP_XX3(op uint32, xt uint32, xa uint32, xb uint32) uint32
XX3-form 3 VSR operands
func AOP_XX3I(op uint32, xt uint32, xa uint32, xb uint32, c uint32) uint32
XX3-form 3 VSR operands + immediate
func AOP_XX4(op uint32, xt uint32, xa uint32, xb uint32, xc uint32) uint32
XX4-form, 4 VSR operands
func AOP_Z23I(op uint32, d uint32, a uint32, b uint32, c uint32) uint32
Z23-form, 3-register operands + CY field
func ConstantToCRbit(c int64) (int16, bool)
func DRconv(a int) string
func LOP_IRR(op uint32, a uint32, s uint32, uimm uint32) uint32
func LOP_RRR(op uint32, a uint32, s uint32, b uint32) uint32
func NeedTOCpointer(ctxt *obj.Link) bool
Determine if the build configuration requires a TOC pointer. It is assumed this always called after buildop.
func OPCC(o uint32, xo uint32, rc uint32) uint32
func OPDQ(o uint32, xo uint32, oe uint32) uint32
func OPMD(o, xo, rc uint32) uint32
Generate MD-form opcode
func OPVC(o uint32, xo uint32, oe uint32, rc uint32) uint32
func OPVCC(o uint32, xo uint32, oe uint32, rc uint32) uint32
func OPVX(o uint32, xo uint32, oe uint32, rc uint32) uint32
func OPVXX1(o uint32, xo uint32, oe uint32) uint32
func OPVXX2(o uint32, xo uint32, oe uint32) uint32
func OPVXX2VA(o uint32, xo uint32, oe uint32) uint32
func OPVXX3(o uint32, xo uint32, oe uint32) uint32
func OPVXX4(o uint32, xo uint32, oe uint32) uint32
func OP_BC(op uint32, bo uint32, bi uint32, bd uint32, aa uint32) uint32
func OP_BCR(op uint32, bo uint32, bi uint32) uint32
func OP_BR(op uint32, li uint32, aa uint32) uint32
func OP_RLW(op uint32, a uint32, s uint32, sh uint32, mb uint32, me uint32) uint32
type Optab struct {
// contains filtered or unexported fields
}
These are opcodes above which may generate different sequences depending on whether prefix opcode support is available
type PrefixableOptab struct {
Optab
// contains filtered or unexported fields
}