mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-10-31 08:16:47 +00:00 
			
		
		
		
	Add subtargets for Freescale e500mc (32-bit) and e5500 (64-bit) to the PowerPC backend. Patch by Tobias von Koch. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162764 91177308-0d34-0410-b5e6-96231b3b80d8
		
			
				
	
	
		
			520 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			TableGen
		
	
	
	
	
	
			
		
		
	
	
			520 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			TableGen
		
	
	
	
	
	
| //===-- PPCSchedule.td - PowerPC Scheduling Definitions ----*- tablegen -*-===//
 | |
| //
 | |
| //                     The LLVM Compiler Infrastructure
 | |
| //
 | |
| // This file is distributed under the University of Illinois Open Source
 | |
| // License. See LICENSE.TXT for details.
 | |
| //
 | |
| //===----------------------------------------------------------------------===//
 | |
| 
 | |
| //===----------------------------------------------------------------------===//
 | |
| // Functional units across PowerPC chips sets
 | |
| //
 | |
| def BPU    : FuncUnit; // Branch unit
 | |
| def SLU    : FuncUnit; // Store/load unit
 | |
| def SRU    : FuncUnit; // special register unit
 | |
| def IU1    : FuncUnit; // integer unit 1 (simple)
 | |
| def IU2    : FuncUnit; // integer unit 2 (complex)
 | |
| def FPU1   : FuncUnit; // floating point unit 1
 | |
| def FPU2   : FuncUnit; // floating point unit 2
 | |
| def VPU    : FuncUnit; // vector permutation unit
 | |
| def VIU1   : FuncUnit; // vector integer unit 1 (simple)
 | |
| def VIU2   : FuncUnit; // vector integer unit 2 (complex)
 | |
| def VFPU   : FuncUnit; // vector floating point unit
 | |
| 
 | |
| //===----------------------------------------------------------------------===//
 | |
| // Instruction Itinerary classes used for PowerPC
 | |
| //
 | |
| def IntSimple    : InstrItinClass;
 | |
| def IntGeneral   : InstrItinClass;
 | |
| def IntCompare   : InstrItinClass;
 | |
| def IntDivD      : InstrItinClass;
 | |
| def IntDivW      : InstrItinClass;
 | |
| def IntMFFS      : InstrItinClass;
 | |
| def IntMFVSCR    : InstrItinClass;
 | |
| def IntMTFSB0    : InstrItinClass;
 | |
| def IntMTSRD     : InstrItinClass;
 | |
| def IntMulHD     : InstrItinClass;
 | |
| def IntMulHW     : InstrItinClass;
 | |
| def IntMulHWU    : InstrItinClass;
 | |
| def IntMulLI     : InstrItinClass;
 | |
| def IntRFID      : InstrItinClass;
 | |
| def IntRotateD   : InstrItinClass;
 | |
| def IntRotateDI  : InstrItinClass;
 | |
| def IntRotate    : InstrItinClass;
 | |
| def IntShift     : InstrItinClass;
 | |
| def IntTrapD     : InstrItinClass;
 | |
| def IntTrapW     : InstrItinClass;
 | |
| def BrB          : InstrItinClass;
 | |
| def BrCR         : InstrItinClass;
 | |
| def BrMCR        : InstrItinClass;
 | |
| def BrMCRX       : InstrItinClass;
 | |
| def LdStDCBA     : InstrItinClass;
 | |
| def LdStDCBF     : InstrItinClass;
 | |
| def LdStDCBI     : InstrItinClass;
 | |
| def LdStLoad     : InstrItinClass;
 | |
| def LdStLoadUpd  : InstrItinClass;
 | |
| def LdStStore    : InstrItinClass;
 | |
| def LdStStoreUpd : InstrItinClass;
 | |
| def LdStDSS      : InstrItinClass;
 | |
| def LdStICBI     : InstrItinClass;
 | |
| def LdStLD       : InstrItinClass;
 | |
| def LdStLDU      : InstrItinClass;
 | |
| def LdStLDARX    : InstrItinClass;
 | |
| def LdStLFD      : InstrItinClass;
 | |
| def LdStLFDU     : InstrItinClass;
 | |
| def LdStLHA      : InstrItinClass;
 | |
| def LdStLHAU     : InstrItinClass;
 | |
| def LdStLMW      : InstrItinClass;
 | |
| def LdStLVecX    : InstrItinClass;
 | |
| def LdStLWA      : InstrItinClass;
 | |
| def LdStLWARX    : InstrItinClass;
 | |
| def LdStSLBIA    : InstrItinClass;
 | |
| def LdStSLBIE    : InstrItinClass;
 | |
| def LdStSTD      : InstrItinClass;
 | |
| def LdStSTDCX    : InstrItinClass;
 | |
| def LdStSTDU     : InstrItinClass;
 | |
| def LdStSTFD     : InstrItinClass;
 | |
| def LdStSTFDU    : InstrItinClass;
 | |
| def LdStSTVEBX   : InstrItinClass;
 | |
| def LdStSTWCX    : InstrItinClass;
 | |
| def LdStSync     : InstrItinClass;
 | |
| def SprISYNC     : InstrItinClass;
 | |
| def SprMFSR      : InstrItinClass;
 | |
| def SprMTMSR     : InstrItinClass;
 | |
| def SprMTSR      : InstrItinClass;
 | |
| def SprTLBSYNC   : InstrItinClass;
 | |
| def SprMFCR      : InstrItinClass;
 | |
| def SprMFMSR     : InstrItinClass;
 | |
| def SprMFSPR     : InstrItinClass;
 | |
| def SprMFTB      : InstrItinClass;
 | |
| def SprMTSPR     : InstrItinClass;
 | |
| def SprMTSRIN    : InstrItinClass;
 | |
| def SprRFI       : InstrItinClass;
 | |
| def SprSC        : InstrItinClass;
 | |
| def FPGeneral    : InstrItinClass;
 | |
| def FPAddSub     : InstrItinClass;
 | |
| def FPCompare    : InstrItinClass;
 | |
| def FPDivD       : InstrItinClass;
 | |
| def FPDivS       : InstrItinClass;
 | |
| def FPFused      : InstrItinClass;
 | |
| def FPRes        : InstrItinClass;
 | |
| def FPSqrt       : InstrItinClass;
 | |
| def VecGeneral   : InstrItinClass;
 | |
| def VecFP        : InstrItinClass;
 | |
| def VecFPCompare : InstrItinClass;
 | |
| def VecComplex   : InstrItinClass;
 | |
| def VecPerm      : InstrItinClass;
 | |
| def VecFPRound   : InstrItinClass;
 | |
| def VecVSL       : InstrItinClass;
 | |
| def VecVSR       : InstrItinClass;
 | |
| 
 | |
| //===----------------------------------------------------------------------===//
 | |
| // Processor instruction itineraries.
 | |
| 
 | |
| include "PPCScheduleG3.td"
 | |
| include "PPCSchedule440.td"
 | |
| include "PPCScheduleG4.td"
 | |
| include "PPCScheduleG4Plus.td"
 | |
| include "PPCScheduleG5.td"
 | |
| include "PPCScheduleA2.td"
 | |
| include "PPCScheduleE500mc.td"
 | |
| include "PPCScheduleE5500.td"
 | |
| 
 | |
| //===----------------------------------------------------------------------===//
 | |
| // Instruction to itinerary class map - When add new opcodes to the supported
 | |
| // set, refer to the following table to determine which itinerary class the
 | |
| // opcode belongs.
 | |
| //
 | |
| //    opcode     itinerary class
 | |
| //    ======     ===============
 | |
| //    add        IntSimple
 | |
| //    addc       IntGeneral
 | |
| //    adde       IntGeneral
 | |
| //    addi       IntSimple
 | |
| //    addic      IntGeneral
 | |
| //    addic.     IntGeneral
 | |
| //    addis      IntSimple
 | |
| //    addme      IntGeneral
 | |
| //    addze      IntGeneral
 | |
| //    and        IntSimple
 | |
| //    andc       IntSimple
 | |
| //    andi.      IntGeneral
 | |
| //    andis.     IntGeneral
 | |
| //    b          BrB
 | |
| //    bc         BrB
 | |
| //    bcctr      BrB
 | |
| //    bclr       BrB
 | |
| //    cmp        IntCompare
 | |
| //    cmpi       IntCompare
 | |
| //    cmpl       IntCompare
 | |
| //    cmpli      IntCompare
 | |
| //    cntlzd     IntRotateD
 | |
| //    cntlzw     IntGeneral
 | |
| //    crand      BrCR
 | |
| //    crandc     BrCR
 | |
| //    creqv      BrCR
 | |
| //    crnand     BrCR
 | |
| //    crnor      BrCR
 | |
| //    cror       BrCR
 | |
| //    crorc      BrCR
 | |
| //    crxor      BrCR
 | |
| //    dcba       LdStDCBA
 | |
| //    dcbf       LdStDCBF
 | |
| //    dcbi       LdStDCBI
 | |
| //    dcbst      LdStDCBF
 | |
| //    dcbt       LdStLoad
 | |
| //    dcbtst     LdStLoad
 | |
| //    dcbz       LdStDCBF
 | |
| //    divd       IntDivD
 | |
| //    divdu      IntDivD
 | |
| //    divw       IntDivW
 | |
| //    divwu      IntDivW
 | |
| //    dss        LdStDSS
 | |
| //    dst        LdStDSS
 | |
| //    dstst      LdStDSS
 | |
| //    eciwx      LdStLoad
 | |
| //    ecowx      LdStLoad
 | |
| //    eieio      LdStLoad
 | |
| //    eqv        IntSimple
 | |
| //    extsb      IntSimple
 | |
| //    extsh      IntSimple
 | |
| //    extsw      IntSimple
 | |
| //    fabs       FPGeneral
 | |
| //    fadd       FPAddSub
 | |
| //    fadds      FPGeneral
 | |
| //    fcfid      FPGeneral
 | |
| //    fcmpo      FPCompare
 | |
| //    fcmpu      FPCompare
 | |
| //    fctid      FPGeneral
 | |
| //    fctidz     FPGeneral
 | |
| //    fctiw      FPGeneral
 | |
| //    fctiwz     FPGeneral
 | |
| //    fdiv       FPDivD
 | |
| //    fdivs      FPDivS
 | |
| //    fmadd      FPFused
 | |
| //    fmadds     FPGeneral
 | |
| //    fmr        FPGeneral
 | |
| //    fmsub      FPFused
 | |
| //    fmsubs     FPGeneral
 | |
| //    fmul       FPFused
 | |
| //    fmuls      FPGeneral
 | |
| //    fnabs      FPGeneral
 | |
| //    fneg       FPGeneral
 | |
| //    fnmadd     FPFused
 | |
| //    fnmadds    FPGeneral
 | |
| //    fnmsub     FPFused
 | |
| //    fnmsubs    FPGeneral
 | |
| //    fres       FPRes
 | |
| //    frsp       FPGeneral
 | |
| //    frsqrte    FPGeneral
 | |
| //    fsel       FPGeneral
 | |
| //    fsqrt      FPSqrt
 | |
| //    fsqrts     FPSqrt
 | |
| //    fsub       FPAddSub
 | |
| //    fsubs      FPGeneral
 | |
| //    icbi       LdStICBI
 | |
| //    isync      SprISYNC
 | |
| //    lbz        LdStLoad
 | |
| //    lbzu       LdStLoadUpd
 | |
| //    lbzux      LdStLoadUpd
 | |
| //    lbzx       LdStLoad
 | |
| //    ld         LdStLD
 | |
| //    ldarx      LdStLDARX
 | |
| //    ldu        LdStLDU
 | |
| //    ldux       LdStLDU
 | |
| //    ldx        LdStLD
 | |
| //    lfd        LdStLFD
 | |
| //    lfdu       LdStLFDU
 | |
| //    lfdux      LdStLFDU
 | |
| //    lfdx       LdStLFD
 | |
| //    lfs        LdStLFD
 | |
| //    lfsu       LdStLFDU
 | |
| //    lfsux      LdStLFDU
 | |
| //    lfsx       LdStLFD
 | |
| //    lha        LdStLHA
 | |
| //    lhau       LdStLHAU
 | |
| //    lhaux      LdStLHAU
 | |
| //    lhax       LdStLHA
 | |
| //    lhbrx      LdStLoad
 | |
| //    lhz        LdStLoad
 | |
| //    lhzu       LdStLoadUpd
 | |
| //    lhzux      LdStLoadUpd
 | |
| //    lhzx       LdStLoad
 | |
| //    lmw        LdStLMW
 | |
| //    lswi       LdStLMW
 | |
| //    lswx       LdStLMW
 | |
| //    lvebx      LdStLVecX
 | |
| //    lvehx      LdStLVecX
 | |
| //    lvewx      LdStLVecX
 | |
| //    lvsl       LdStLVecX
 | |
| //    lvsr       LdStLVecX
 | |
| //    lvx        LdStLVecX
 | |
| //    lvxl       LdStLVecX
 | |
| //    lwa        LdStLWA
 | |
| //    lwarx      LdStLWARX
 | |
| //    lwaux      LdStLHAU
 | |
| //    lwax       LdStLHA
 | |
| //    lwbrx      LdStLoad
 | |
| //    lwz        LdStLoad
 | |
| //    lwzu       LdStLoadUpd
 | |
| //    lwzux      LdStLoadUpd
 | |
| //    lwzx       LdStLoad
 | |
| //    mcrf       BrMCR
 | |
| //    mcrfs      FPGeneral
 | |
| //    mcrxr      BrMCRX
 | |
| //    mfcr       SprMFCR
 | |
| //    mffs       IntMFFS
 | |
| //    mfmsr      SprMFMSR
 | |
| //    mfspr      SprMFSPR
 | |
| //    mfsr       SprMFSR
 | |
| //    mfsrin     SprMFSR
 | |
| //    mftb       SprMFTB
 | |
| //    mfvscr     IntMFVSCR
 | |
| //    mtcrf      BrMCRX
 | |
| //    mtfsb0     IntMTFSB0
 | |
| //    mtfsb1     IntMTFSB0
 | |
| //    mtfsf      IntMTFSB0
 | |
| //    mtfsfi     IntMTFSB0
 | |
| //    mtmsr      SprMTMSR
 | |
| //    mtmsrd     LdStLD
 | |
| //    mtspr      SprMTSPR
 | |
| //    mtsr       SprMTSR
 | |
| //    mtsrd      IntMTSRD
 | |
| //    mtsrdin    IntMTSRD
 | |
| //    mtsrin     SprMTSRIN
 | |
| //    mtvscr     IntMFVSCR
 | |
| //    mulhd      IntMulHD
 | |
| //    mulhdu     IntMulHD
 | |
| //    mulhw      IntMulHW
 | |
| //    mulhwu     IntMulHWU
 | |
| //    mulld      IntMulHD
 | |
| //    mulli      IntMulLI
 | |
| //    mullw      IntMulHW
 | |
| //    nand       IntSimple
 | |
| //    neg        IntSimple
 | |
| //    nor        IntSimple
 | |
| //    or         IntSimple
 | |
| //    orc        IntSimple
 | |
| //    ori        IntSimple
 | |
| //    oris       IntSimple
 | |
| //    rfi        SprRFI
 | |
| //    rfid       IntRFID
 | |
| //    rldcl      IntRotateD
 | |
| //    rldcr      IntRotateD
 | |
| //    rldic      IntRotateDI
 | |
| //    rldicl     IntRotateDI
 | |
| //    rldicr     IntRotateDI
 | |
| //    rldimi     IntRotateDI
 | |
| //    rlwimi     IntRotate
 | |
| //    rlwinm     IntGeneral
 | |
| //    rlwnm      IntGeneral
 | |
| //    sc         SprSC
 | |
| //    slbia      LdStSLBIA
 | |
| //    slbie      LdStSLBIE
 | |
| //    sld        IntRotateD
 | |
| //    slw        IntGeneral
 | |
| //    srad       IntRotateD
 | |
| //    sradi      IntRotateDI
 | |
| //    sraw       IntShift
 | |
| //    srawi      IntShift
 | |
| //    srd        IntRotateD
 | |
| //    srw        IntGeneral
 | |
| //    stb        LdStStore
 | |
| //    stbu       LdStStoreUpd
 | |
| //    stbux      LdStStoreUpd
 | |
| //    stbx       LdStStore
 | |
| //    std        LdStSTD
 | |
| //    stdcx.     LdStSTDCX
 | |
| //    stdu       LdStSTDU
 | |
| //    stdux      LdStSTDU
 | |
| //    stdx       LdStSTD
 | |
| //    stfd       LdStSTFD
 | |
| //    stfdu      LdStSTFDU
 | |
| //    stfdux     LdStSTFDU
 | |
| //    stfdx      LdStSTFD
 | |
| //    stfiwx     LdStSTFD
 | |
| //    stfs       LdStSTFD
 | |
| //    stfsu      LdStSTFDU
 | |
| //    stfsux     LdStSTFDU
 | |
| //    stfsx      LdStSTFD
 | |
| //    sth        LdStStore
 | |
| //    sthbrx     LdStStore
 | |
| //    sthu       LdStStoreUpd
 | |
| //    sthux      LdStStoreUpd
 | |
| //    sthx       LdStStore
 | |
| //    stmw       LdStLMW
 | |
| //    stswi      LdStLMW
 | |
| //    stswx      LdStLMW
 | |
| //    stvebx     LdStSTVEBX
 | |
| //    stvehx     LdStSTVEBX
 | |
| //    stvewx     LdStSTVEBX
 | |
| //    stvx       LdStSTVEBX
 | |
| //    stvxl      LdStSTVEBX
 | |
| //    stw        LdStStore
 | |
| //    stwbrx     LdStStore
 | |
| //    stwcx.     LdStSTWCX
 | |
| //    stwu       LdStStoreUpd
 | |
| //    stwux      LdStStoreUpd
 | |
| //    stwx       LdStStore
 | |
| //    subf       IntGeneral
 | |
| //    subfc      IntGeneral
 | |
| //    subfe      IntGeneral
 | |
| //    subfic     IntGeneral
 | |
| //    subfme     IntGeneral
 | |
| //    subfze     IntGeneral
 | |
| //    sync       LdStSync
 | |
| //    td         IntTrapD
 | |
| //    tdi        IntTrapD
 | |
| //    tlbia      LdStSLBIA
 | |
| //    tlbie      LdStDCBF
 | |
| //    tlbsync    SprTLBSYNC
 | |
| //    tw         IntTrapW
 | |
| //    twi        IntTrapW
 | |
| //    vaddcuw    VecGeneral
 | |
| //    vaddfp     VecFP
 | |
| //    vaddsbs    VecGeneral
 | |
| //    vaddshs    VecGeneral
 | |
| //    vaddsws    VecGeneral
 | |
| //    vaddubm    VecGeneral
 | |
| //    vaddubs    VecGeneral
 | |
| //    vadduhm    VecGeneral
 | |
| //    vadduhs    VecGeneral
 | |
| //    vadduwm    VecGeneral
 | |
| //    vadduws    VecGeneral
 | |
| //    vand       VecGeneral
 | |
| //    vandc      VecGeneral
 | |
| //    vavgsb     VecGeneral
 | |
| //    vavgsh     VecGeneral
 | |
| //    vavgsw     VecGeneral
 | |
| //    vavgub     VecGeneral
 | |
| //    vavguh     VecGeneral
 | |
| //    vavguw     VecGeneral
 | |
| //    vcfsx      VecFP
 | |
| //    vcfux      VecFP
 | |
| //    vcmpbfp    VecFPCompare
 | |
| //    vcmpeqfp   VecFPCompare
 | |
| //    vcmpequb   VecGeneral
 | |
| //    vcmpequh   VecGeneral
 | |
| //    vcmpequw   VecGeneral
 | |
| //    vcmpgefp   VecFPCompare
 | |
| //    vcmpgtfp   VecFPCompare
 | |
| //    vcmpgtsb   VecGeneral
 | |
| //    vcmpgtsh   VecGeneral
 | |
| //    vcmpgtsw   VecGeneral
 | |
| //    vcmpgtub   VecGeneral
 | |
| //    vcmpgtuh   VecGeneral
 | |
| //    vcmpgtuw   VecGeneral
 | |
| //    vctsxs     VecFP
 | |
| //    vctuxs     VecFP
 | |
| //    vexptefp   VecFP
 | |
| //    vlogefp    VecFP
 | |
| //    vmaddfp    VecFP
 | |
| //    vmaxfp     VecFPCompare
 | |
| //    vmaxsb     VecGeneral
 | |
| //    vmaxsh     VecGeneral
 | |
| //    vmaxsw     VecGeneral
 | |
| //    vmaxub     VecGeneral
 | |
| //    vmaxuh     VecGeneral
 | |
| //    vmaxuw     VecGeneral
 | |
| //    vmhaddshs  VecComplex
 | |
| //    vmhraddshs VecComplex
 | |
| //    vminfp     VecFPCompare
 | |
| //    vminsb     VecGeneral
 | |
| //    vminsh     VecGeneral
 | |
| //    vminsw     VecGeneral
 | |
| //    vminub     VecGeneral
 | |
| //    vminuh     VecGeneral
 | |
| //    vminuw     VecGeneral
 | |
| //    vmladduhm  VecComplex
 | |
| //    vmrghb     VecPerm
 | |
| //    vmrghh     VecPerm
 | |
| //    vmrghw     VecPerm
 | |
| //    vmrglb     VecPerm
 | |
| //    vmrglh     VecPerm
 | |
| //    vmrglw     VecPerm
 | |
| //    vmsubfp    VecFP
 | |
| //    vmsummbm   VecComplex
 | |
| //    vmsumshm   VecComplex
 | |
| //    vmsumshs   VecComplex
 | |
| //    vmsumubm   VecComplex
 | |
| //    vmsumuhm   VecComplex
 | |
| //    vmsumuhs   VecComplex
 | |
| //    vmulesb    VecComplex
 | |
| //    vmulesh    VecComplex
 | |
| //    vmuleub    VecComplex
 | |
| //    vmuleuh    VecComplex
 | |
| //    vmulosb    VecComplex
 | |
| //    vmulosh    VecComplex
 | |
| //    vmuloub    VecComplex
 | |
| //    vmulouh    VecComplex
 | |
| //    vnor       VecGeneral
 | |
| //    vor        VecGeneral
 | |
| //    vperm      VecPerm
 | |
| //    vpkpx      VecPerm
 | |
| //    vpkshss    VecPerm
 | |
| //    vpkshus    VecPerm
 | |
| //    vpkswss    VecPerm
 | |
| //    vpkswus    VecPerm
 | |
| //    vpkuhum    VecPerm
 | |
| //    vpkuhus    VecPerm
 | |
| //    vpkuwum    VecPerm
 | |
| //    vpkuwus    VecPerm
 | |
| //    vrefp      VecFPRound
 | |
| //    vrfim      VecFPRound
 | |
| //    vrfin      VecFPRound
 | |
| //    vrfip      VecFPRound
 | |
| //    vrfiz      VecFPRound
 | |
| //    vrlb       VecGeneral
 | |
| //    vrlh       VecGeneral
 | |
| //    vrlw       VecGeneral
 | |
| //    vrsqrtefp  VecFP
 | |
| //    vsel       VecGeneral
 | |
| //    vsl        VecVSL
 | |
| //    vslb       VecGeneral
 | |
| //    vsldoi     VecPerm
 | |
| //    vslh       VecGeneral
 | |
| //    vslo       VecPerm
 | |
| //    vslw       VecGeneral
 | |
| //    vspltb     VecPerm
 | |
| //    vsplth     VecPerm
 | |
| //    vspltisb   VecPerm
 | |
| //    vspltish   VecPerm
 | |
| //    vspltisw   VecPerm
 | |
| //    vspltw     VecPerm
 | |
| //    vsr        VecVSR
 | |
| //    vsrab      VecGeneral
 | |
| //    vsrah      VecGeneral
 | |
| //    vsraw      VecGeneral
 | |
| //    vsrb       VecGeneral
 | |
| //    vsrh       VecGeneral
 | |
| //    vsro       VecPerm
 | |
| //    vsrw       VecGeneral
 | |
| //    vsubcuw    VecGeneral
 | |
| //    vsubfp     VecFP
 | |
| //    vsubsbs    VecGeneral
 | |
| //    vsubshs    VecGeneral
 | |
| //    vsubsws    VecGeneral
 | |
| //    vsububm    VecGeneral
 | |
| //    vsububs    VecGeneral
 | |
| //    vsubuhm    VecGeneral
 | |
| //    vsubuhs    VecGeneral
 | |
| //    vsubuwm    VecGeneral
 | |
| //    vsubuws    VecGeneral
 | |
| //    vsum2sws   VecComplex
 | |
| //    vsum4sbs   VecComplex
 | |
| //    vsum4shs   VecComplex
 | |
| //    vsum4ubs   VecComplex
 | |
| //    vsumsws    VecComplex
 | |
| //    vupkhpx    VecPerm
 | |
| //    vupkhsb    VecPerm
 | |
| //    vupkhsh    VecPerm
 | |
| //    vupklpx    VecPerm
 | |
| //    vupklsb    VecPerm
 | |
| //    vupklsh    VecPerm
 | |
| //    vxor       VecGeneral
 | |
| //    xor        IntSimple
 | |
| //    xori       IntSimple
 | |
| //    xoris      IntSimple
 | |
| //
 |