2143 lines
58 KiB
Zig
2143 lines
58 KiB
Zig
const Feature = @import("std").target.Feature;
|
|
const Cpu = @import("std").target.Cpu;
|
|
|
|
pub const feature_BitInsts16 = Feature{
|
|
.name = "BitInsts16",
|
|
.llvm_name = "16-bit-insts",
|
|
.description = "Has i16/f16 instructions",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_addNoCarryInsts = Feature{
|
|
.name = "addNoCarryInsts",
|
|
.llvm_name = "add-no-carry-insts",
|
|
.description = "Have VALU add/sub instructions without carry out",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_apertureRegs = Feature{
|
|
.name = "apertureRegs",
|
|
.llvm_name = "aperture-regs",
|
|
.description = "Has Memory Aperture Base and Size Registers",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_atomicFaddInsts = Feature{
|
|
.name = "atomicFaddInsts",
|
|
.llvm_name = "atomic-fadd-insts",
|
|
.description = "Has buffer_atomic_add_f32, buffer_atomic_pk_add_f16, global_atomic_add_f32, global_atomic_pk_add_f16 instructions",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_autoWaitcntBeforeBarrier = Feature{
|
|
.name = "autoWaitcntBeforeBarrier",
|
|
.llvm_name = "auto-waitcnt-before-barrier",
|
|
.description = "Hardware automatically inserts waitcnt before barrier",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_ciInsts = Feature{
|
|
.name = "ciInsts",
|
|
.llvm_name = "ci-insts",
|
|
.description = "Additional instructions for CI+",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_codeObjectV3 = Feature{
|
|
.name = "codeObjectV3",
|
|
.llvm_name = "code-object-v3",
|
|
.description = "Generate code object version 3",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_cumode = Feature{
|
|
.name = "cumode",
|
|
.llvm_name = "cumode",
|
|
.description = "Enable CU wavefront execution mode",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_dlInsts = Feature{
|
|
.name = "dlInsts",
|
|
.llvm_name = "dl-insts",
|
|
.description = "Has v_fmac_f32 and v_xnor_b32 instructions",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_dpp = Feature{
|
|
.name = "dpp",
|
|
.llvm_name = "dpp",
|
|
.description = "Support DPP (Data Parallel Primitives) extension",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_dpp8 = Feature{
|
|
.name = "dpp8",
|
|
.llvm_name = "dpp8",
|
|
.description = "Support DPP8 (Data Parallel Primitives) extension",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_noSramEccSupport = Feature{
|
|
.name = "noSramEccSupport",
|
|
.llvm_name = "no-sram-ecc-support",
|
|
.description = "Hardware does not support SRAM ECC",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_noXnackSupport = Feature{
|
|
.name = "noXnackSupport",
|
|
.llvm_name = "no-xnack-support",
|
|
.description = "Hardware does not support XNACK",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_dot1Insts = Feature{
|
|
.name = "dot1Insts",
|
|
.llvm_name = "dot1-insts",
|
|
.description = "Has v_dot4_i32_i8 and v_dot8_i32_i4 instructions",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_dot2Insts = Feature{
|
|
.name = "dot2Insts",
|
|
.llvm_name = "dot2-insts",
|
|
.description = "Has v_dot2_f32_f16, v_dot2_i32_i16, v_dot2_u32_u16, v_dot4_u32_u8, v_dot8_u32_u4 instructions",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_dot3Insts = Feature{
|
|
.name = "dot3Insts",
|
|
.llvm_name = "dot3-insts",
|
|
.description = "Has v_dot8c_i32_i4 instruction",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_dot4Insts = Feature{
|
|
.name = "dot4Insts",
|
|
.llvm_name = "dot4-insts",
|
|
.description = "Has v_dot2c_i32_i16 instruction",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_dot5Insts = Feature{
|
|
.name = "dot5Insts",
|
|
.llvm_name = "dot5-insts",
|
|
.description = "Has v_dot2c_f32_f16 instruction",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_dot6Insts = Feature{
|
|
.name = "dot6Insts",
|
|
.llvm_name = "dot6-insts",
|
|
.description = "Has v_dot4c_i32_i8 instruction",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_DumpCode = Feature{
|
|
.name = "DumpCode",
|
|
.llvm_name = "DumpCode",
|
|
.description = "Dump MachineInstrs in the CodeEmitter",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_dumpcode = Feature{
|
|
.name = "dumpcode",
|
|
.llvm_name = "dumpcode",
|
|
.description = "Dump MachineInstrs in the CodeEmitter",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_enableDs128 = Feature{
|
|
.name = "enableDs128",
|
|
.llvm_name = "enable-ds128",
|
|
.description = "Use ds_{read|write}_b128",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_loadStoreOpt = Feature{
|
|
.name = "loadStoreOpt",
|
|
.llvm_name = "load-store-opt",
|
|
.description = "Enable SI load/store optimizer pass",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_enablePrtStrictNull = Feature{
|
|
.name = "enablePrtStrictNull",
|
|
.llvm_name = "enable-prt-strict-null",
|
|
.description = "Enable zeroing of result registers for sparse texture fetches",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_siScheduler = Feature{
|
|
.name = "siScheduler",
|
|
.llvm_name = "si-scheduler",
|
|
.description = "Enable SI Machine Scheduler",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_unsafeDsOffsetFolding = Feature{
|
|
.name = "unsafeDsOffsetFolding",
|
|
.llvm_name = "unsafe-ds-offset-folding",
|
|
.description = "Force using DS instruction immediate offsets on SI",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_fmaf = Feature{
|
|
.name = "fmaf",
|
|
.llvm_name = "fmaf",
|
|
.description = "Enable single precision FMA (not as fast as mul+add, but fused)",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_fp16Denormals = Feature{
|
|
.name = "fp16Denormals",
|
|
.llvm_name = "fp16-denormals",
|
|
.description = "Enable half precision denormal handling",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_fp64,
|
|
},
|
|
};
|
|
|
|
pub const feature_fp32Denormals = Feature{
|
|
.name = "fp32Denormals",
|
|
.llvm_name = "fp32-denormals",
|
|
.description = "Enable single precision denormal handling",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_fp64 = Feature{
|
|
.name = "fp64",
|
|
.llvm_name = "fp64",
|
|
.description = "Enable double precision operations",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_fp64Denormals = Feature{
|
|
.name = "fp64Denormals",
|
|
.llvm_name = "fp64-denormals",
|
|
.description = "Enable double and half precision denormal handling",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_fp64,
|
|
},
|
|
};
|
|
|
|
pub const feature_fp64Fp16Denormals = Feature{
|
|
.name = "fp64Fp16Denormals",
|
|
.llvm_name = "fp64-fp16-denormals",
|
|
.description = "Enable double and half precision denormal handling",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_fp64,
|
|
},
|
|
};
|
|
|
|
pub const feature_fpExceptions = Feature{
|
|
.name = "fpExceptions",
|
|
.llvm_name = "fp-exceptions",
|
|
.description = "Enable floating point exceptions",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_fastFmaf = Feature{
|
|
.name = "fastFmaf",
|
|
.llvm_name = "fast-fmaf",
|
|
.description = "Assuming f32 fma is at least as fast as mul + add",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_flatAddressSpace = Feature{
|
|
.name = "flatAddressSpace",
|
|
.llvm_name = "flat-address-space",
|
|
.description = "Support flat address space",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_flatForGlobal = Feature{
|
|
.name = "flatForGlobal",
|
|
.llvm_name = "flat-for-global",
|
|
.description = "Force to generate flat instruction for global",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_flatGlobalInsts = Feature{
|
|
.name = "flatGlobalInsts",
|
|
.llvm_name = "flat-global-insts",
|
|
.description = "Have global_* flat memory instructions",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_flatInstOffsets = Feature{
|
|
.name = "flatInstOffsets",
|
|
.llvm_name = "flat-inst-offsets",
|
|
.description = "Flat instructions have immediate offset addressing mode",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_flatScratchInsts = Feature{
|
|
.name = "flatScratchInsts",
|
|
.llvm_name = "flat-scratch-insts",
|
|
.description = "Have scratch_* flat memory instructions",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_flatSegmentOffsetBug = Feature{
|
|
.name = "flatSegmentOffsetBug",
|
|
.llvm_name = "flat-segment-offset-bug",
|
|
.description = "GFX10 bug, inst_offset ignored in flat segment",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_fmaMixInsts = Feature{
|
|
.name = "fmaMixInsts",
|
|
.llvm_name = "fma-mix-insts",
|
|
.description = "Has v_fma_mix_f32, v_fma_mixlo_f16, v_fma_mixhi_f16 instructions",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_gcn3Encoding = Feature{
|
|
.name = "gcn3Encoding",
|
|
.llvm_name = "gcn3-encoding",
|
|
.description = "Encoding format for VI",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_gfx7Gfx8Gfx9Insts = Feature{
|
|
.name = "gfx7Gfx8Gfx9Insts",
|
|
.llvm_name = "gfx7-gfx8-gfx9-insts",
|
|
.description = "Instructions shared in GFX7, GFX8, GFX9",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_gfx8Insts = Feature{
|
|
.name = "gfx8Insts",
|
|
.llvm_name = "gfx8-insts",
|
|
.description = "Additional instructions for GFX8+",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_gfx9Insts = Feature{
|
|
.name = "gfx9Insts",
|
|
.llvm_name = "gfx9-insts",
|
|
.description = "Additional instructions for GFX9+",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_gfx10Insts = Feature{
|
|
.name = "gfx10Insts",
|
|
.llvm_name = "gfx10-insts",
|
|
.description = "Additional instructions for GFX10+",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_instFwdPrefetchBug = Feature{
|
|
.name = "instFwdPrefetchBug",
|
|
.llvm_name = "inst-fwd-prefetch-bug",
|
|
.description = "S_INST_PREFETCH instruction causes shader to hang",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_intClampInsts = Feature{
|
|
.name = "intClampInsts",
|
|
.llvm_name = "int-clamp-insts",
|
|
.description = "Support clamp for integer destination",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_inv2piInlineImm = Feature{
|
|
.name = "inv2piInlineImm",
|
|
.llvm_name = "inv-2pi-inline-imm",
|
|
.description = "Has 1 / (2 * pi) as inline immediate",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_ldsbankcount16 = Feature{
|
|
.name = "ldsbankcount16",
|
|
.llvm_name = "ldsbankcount16",
|
|
.description = "The number of LDS banks per compute unit.",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_ldsbankcount32 = Feature{
|
|
.name = "ldsbankcount32",
|
|
.llvm_name = "ldsbankcount32",
|
|
.description = "The number of LDS banks per compute unit.",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_ldsBranchVmemWarHazard = Feature{
|
|
.name = "ldsBranchVmemWarHazard",
|
|
.llvm_name = "lds-branch-vmem-war-hazard",
|
|
.description = "Switching between LDS and VMEM-tex not waiting VM_VSRC=0",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_ldsMisalignedBug = Feature{
|
|
.name = "ldsMisalignedBug",
|
|
.llvm_name = "lds-misaligned-bug",
|
|
.description = "Some GFX10 bug with misaligned multi-dword LDS access in WGP mode",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_localmemorysize0 = Feature{
|
|
.name = "localmemorysize0",
|
|
.llvm_name = "localmemorysize0",
|
|
.description = "The size of local memory in bytes",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_localmemorysize32768 = Feature{
|
|
.name = "localmemorysize32768",
|
|
.llvm_name = "localmemorysize32768",
|
|
.description = "The size of local memory in bytes",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_localmemorysize65536 = Feature{
|
|
.name = "localmemorysize65536",
|
|
.llvm_name = "localmemorysize65536",
|
|
.description = "The size of local memory in bytes",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_maiInsts = Feature{
|
|
.name = "maiInsts",
|
|
.llvm_name = "mai-insts",
|
|
.description = "Has mAI instructions",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_mfmaInlineLiteralBug = Feature{
|
|
.name = "mfmaInlineLiteralBug",
|
|
.llvm_name = "mfma-inline-literal-bug",
|
|
.description = "MFMA cannot use inline literal as SrcC",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_mimgR128 = Feature{
|
|
.name = "mimgR128",
|
|
.llvm_name = "mimg-r128",
|
|
.description = "Support 128-bit texture resources",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_madMixInsts = Feature{
|
|
.name = "madMixInsts",
|
|
.llvm_name = "mad-mix-insts",
|
|
.description = "Has v_mad_mix_f32, v_mad_mixlo_f16, v_mad_mixhi_f16 instructions",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_maxPrivateElementSize4 = Feature{
|
|
.name = "maxPrivateElementSize4",
|
|
.llvm_name = "max-private-element-size-4",
|
|
.description = "Maximum private access size may be 4",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_maxPrivateElementSize8 = Feature{
|
|
.name = "maxPrivateElementSize8",
|
|
.llvm_name = "max-private-element-size-8",
|
|
.description = "Maximum private access size may be 8",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_maxPrivateElementSize16 = Feature{
|
|
.name = "maxPrivateElementSize16",
|
|
.llvm_name = "max-private-element-size-16",
|
|
.description = "Maximum private access size may be 16",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_movrel = Feature{
|
|
.name = "movrel",
|
|
.llvm_name = "movrel",
|
|
.description = "Has v_movrel*_b32 instructions",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_nsaEncoding = Feature{
|
|
.name = "nsaEncoding",
|
|
.llvm_name = "nsa-encoding",
|
|
.description = "Support NSA encoding for image instructions",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_nsaToVmemBug = Feature{
|
|
.name = "nsaToVmemBug",
|
|
.llvm_name = "nsa-to-vmem-bug",
|
|
.description = "MIMG-NSA followed by VMEM fail if EXEC_LO or EXEC_HI equals zero",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_noDataDepHazard = Feature{
|
|
.name = "noDataDepHazard",
|
|
.llvm_name = "no-data-dep-hazard",
|
|
.description = "Does not need SW waitstates",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_noSdstCmpx = Feature{
|
|
.name = "noSdstCmpx",
|
|
.llvm_name = "no-sdst-cmpx",
|
|
.description = "V_CMPX does not write VCC/SGPR in addition to EXEC",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_offset3fBug = Feature{
|
|
.name = "offset3fBug",
|
|
.llvm_name = "offset-3f-bug",
|
|
.description = "Branch offset of 3f hardware bug",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_pkFmacF16Inst = Feature{
|
|
.name = "pkFmacF16Inst",
|
|
.llvm_name = "pk-fmac-f16-inst",
|
|
.description = "Has v_pk_fmac_f16 instruction",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_promoteAlloca = Feature{
|
|
.name = "promoteAlloca",
|
|
.llvm_name = "promote-alloca",
|
|
.description = "Enable promote alloca pass",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_r128A16 = Feature{
|
|
.name = "r128A16",
|
|
.llvm_name = "r128-a16",
|
|
.description = "Support 16 bit coordindates/gradients/lod/clamp/mip types on gfx9",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_registerBanking = Feature{
|
|
.name = "registerBanking",
|
|
.llvm_name = "register-banking",
|
|
.description = "Has register banking",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_sdwa = Feature{
|
|
.name = "sdwa",
|
|
.llvm_name = "sdwa",
|
|
.description = "Support SDWA (Sub-DWORD Addressing) extension",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_sdwaMav = Feature{
|
|
.name = "sdwaMav",
|
|
.llvm_name = "sdwa-mav",
|
|
.description = "Support v_mac_f32/f16 with SDWA (Sub-DWORD Addressing) extension",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_sdwaOmod = Feature{
|
|
.name = "sdwaOmod",
|
|
.llvm_name = "sdwa-omod",
|
|
.description = "Support OMod with SDWA (Sub-DWORD Addressing) extension",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_sdwaOutModsVopc = Feature{
|
|
.name = "sdwaOutModsVopc",
|
|
.llvm_name = "sdwa-out-mods-vopc",
|
|
.description = "Support clamp for VOPC with SDWA (Sub-DWORD Addressing) extension",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_sdwaScalar = Feature{
|
|
.name = "sdwaScalar",
|
|
.llvm_name = "sdwa-scalar",
|
|
.description = "Support scalar register with SDWA (Sub-DWORD Addressing) extension",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_sdwaSdst = Feature{
|
|
.name = "sdwaSdst",
|
|
.llvm_name = "sdwa-sdst",
|
|
.description = "Support scalar dst for VOPC with SDWA (Sub-DWORD Addressing) extension",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_sgprInitBug = Feature{
|
|
.name = "sgprInitBug",
|
|
.llvm_name = "sgpr-init-bug",
|
|
.description = "VI SGPR initialization bug requiring a fixed SGPR allocation size",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_smemToVectorWriteHazard = Feature{
|
|
.name = "smemToVectorWriteHazard",
|
|
.llvm_name = "smem-to-vector-write-hazard",
|
|
.description = "s_load_dword followed by v_cmp page faults",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_sMemrealtime = Feature{
|
|
.name = "sMemrealtime",
|
|
.llvm_name = "s-memrealtime",
|
|
.description = "Has s_memrealtime instruction",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_sramEcc = Feature{
|
|
.name = "sramEcc",
|
|
.llvm_name = "sram-ecc",
|
|
.description = "Enable SRAM ECC",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_scalarAtomics = Feature{
|
|
.name = "scalarAtomics",
|
|
.llvm_name = "scalar-atomics",
|
|
.description = "Has atomic scalar memory instructions",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_scalarFlatScratchInsts = Feature{
|
|
.name = "scalarFlatScratchInsts",
|
|
.llvm_name = "scalar-flat-scratch-insts",
|
|
.description = "Have s_scratch_* flat memory instructions",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_scalarStores = Feature{
|
|
.name = "scalarStores",
|
|
.llvm_name = "scalar-stores",
|
|
.description = "Has store scalar memory instructions",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_trapHandler = Feature{
|
|
.name = "trapHandler",
|
|
.llvm_name = "trap-handler",
|
|
.description = "Trap handler support",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_trigReducedRange = Feature{
|
|
.name = "trigReducedRange",
|
|
.llvm_name = "trig-reduced-range",
|
|
.description = "Requires use of fract on arguments to trig instructions",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_unalignedBufferAccess = Feature{
|
|
.name = "unalignedBufferAccess",
|
|
.llvm_name = "unaligned-buffer-access",
|
|
.description = "Support unaligned global loads and stores",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_unalignedScratchAccess = Feature{
|
|
.name = "unalignedScratchAccess",
|
|
.llvm_name = "unaligned-scratch-access",
|
|
.description = "Support unaligned scratch loads and stores",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_unpackedD16Vmem = Feature{
|
|
.name = "unpackedD16Vmem",
|
|
.llvm_name = "unpacked-d16-vmem",
|
|
.description = "Has unpacked d16 vmem instructions",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_vgprIndexMode = Feature{
|
|
.name = "vgprIndexMode",
|
|
.llvm_name = "vgpr-index-mode",
|
|
.description = "Has VGPR mode register indexing",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_vmemToScalarWriteHazard = Feature{
|
|
.name = "vmemToScalarWriteHazard",
|
|
.llvm_name = "vmem-to-scalar-write-hazard",
|
|
.description = "VMEM instruction followed by scalar writing to EXEC mask, M0 or SGPR leads to incorrect execution.",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_vop3Literal = Feature{
|
|
.name = "vop3Literal",
|
|
.llvm_name = "vop3-literal",
|
|
.description = "Can use one literal in VOP3",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_vop3p = Feature{
|
|
.name = "vop3p",
|
|
.llvm_name = "vop3p",
|
|
.description = "Has VOP3P packed instructions",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_vcmpxExecWarHazard = Feature{
|
|
.name = "vcmpxExecWarHazard",
|
|
.llvm_name = "vcmpx-exec-war-hazard",
|
|
.description = "V_CMPX WAR hazard on EXEC (V_CMPX issue ONLY)",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_vcmpxPermlaneHazard = Feature{
|
|
.name = "vcmpxPermlaneHazard",
|
|
.llvm_name = "vcmpx-permlane-hazard",
|
|
.description = "TODO: describe me",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_vscnt = Feature{
|
|
.name = "vscnt",
|
|
.llvm_name = "vscnt",
|
|
.description = "Has separate store vscnt counter",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_wavefrontsize16 = Feature{
|
|
.name = "wavefrontsize16",
|
|
.llvm_name = "wavefrontsize16",
|
|
.description = "The number of threads per wavefront",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_wavefrontsize32 = Feature{
|
|
.name = "wavefrontsize32",
|
|
.llvm_name = "wavefrontsize32",
|
|
.description = "The number of threads per wavefront",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_wavefrontsize64 = Feature{
|
|
.name = "wavefrontsize64",
|
|
.llvm_name = "wavefrontsize64",
|
|
.description = "The number of threads per wavefront",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_xnack = Feature{
|
|
.name = "xnack",
|
|
.llvm_name = "xnack",
|
|
.description = "Enable XNACK support",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const feature_halfRate64Ops = Feature{
|
|
.name = "halfRate64Ops",
|
|
.llvm_name = "half-rate-64-ops",
|
|
.description = "Most fp64 instructions are half rate instead of quarter",
|
|
.dependencies = &[_]*const Feature {
|
|
},
|
|
};
|
|
|
|
pub const features = &[_]*const Feature {
|
|
&feature_BitInsts16,
|
|
&feature_addNoCarryInsts,
|
|
&feature_apertureRegs,
|
|
&feature_atomicFaddInsts,
|
|
&feature_autoWaitcntBeforeBarrier,
|
|
&feature_ciInsts,
|
|
&feature_codeObjectV3,
|
|
&feature_cumode,
|
|
&feature_dlInsts,
|
|
&feature_dpp,
|
|
&feature_dpp8,
|
|
&feature_noSramEccSupport,
|
|
&feature_noXnackSupport,
|
|
&feature_dot1Insts,
|
|
&feature_dot2Insts,
|
|
&feature_dot3Insts,
|
|
&feature_dot4Insts,
|
|
&feature_dot5Insts,
|
|
&feature_dot6Insts,
|
|
&feature_DumpCode,
|
|
&feature_dumpcode,
|
|
&feature_enableDs128,
|
|
&feature_loadStoreOpt,
|
|
&feature_enablePrtStrictNull,
|
|
&feature_siScheduler,
|
|
&feature_unsafeDsOffsetFolding,
|
|
&feature_fmaf,
|
|
&feature_fp16Denormals,
|
|
&feature_fp32Denormals,
|
|
&feature_fp64,
|
|
&feature_fp64Denormals,
|
|
&feature_fp64Fp16Denormals,
|
|
&feature_fpExceptions,
|
|
&feature_fastFmaf,
|
|
&feature_flatAddressSpace,
|
|
&feature_flatForGlobal,
|
|
&feature_flatGlobalInsts,
|
|
&feature_flatInstOffsets,
|
|
&feature_flatScratchInsts,
|
|
&feature_flatSegmentOffsetBug,
|
|
&feature_fmaMixInsts,
|
|
&feature_gcn3Encoding,
|
|
&feature_gfx7Gfx8Gfx9Insts,
|
|
&feature_gfx8Insts,
|
|
&feature_gfx9Insts,
|
|
&feature_gfx10Insts,
|
|
&feature_instFwdPrefetchBug,
|
|
&feature_intClampInsts,
|
|
&feature_inv2piInlineImm,
|
|
&feature_ldsbankcount16,
|
|
&feature_ldsbankcount32,
|
|
&feature_ldsBranchVmemWarHazard,
|
|
&feature_ldsMisalignedBug,
|
|
&feature_localmemorysize0,
|
|
&feature_localmemorysize32768,
|
|
&feature_localmemorysize65536,
|
|
&feature_maiInsts,
|
|
&feature_mfmaInlineLiteralBug,
|
|
&feature_mimgR128,
|
|
&feature_madMixInsts,
|
|
&feature_maxPrivateElementSize4,
|
|
&feature_maxPrivateElementSize8,
|
|
&feature_maxPrivateElementSize16,
|
|
&feature_movrel,
|
|
&feature_nsaEncoding,
|
|
&feature_nsaToVmemBug,
|
|
&feature_noDataDepHazard,
|
|
&feature_noSdstCmpx,
|
|
&feature_offset3fBug,
|
|
&feature_pkFmacF16Inst,
|
|
&feature_promoteAlloca,
|
|
&feature_r128A16,
|
|
&feature_registerBanking,
|
|
&feature_sdwa,
|
|
&feature_sdwaMav,
|
|
&feature_sdwaOmod,
|
|
&feature_sdwaOutModsVopc,
|
|
&feature_sdwaScalar,
|
|
&feature_sdwaSdst,
|
|
&feature_sgprInitBug,
|
|
&feature_smemToVectorWriteHazard,
|
|
&feature_sMemrealtime,
|
|
&feature_sramEcc,
|
|
&feature_scalarAtomics,
|
|
&feature_scalarFlatScratchInsts,
|
|
&feature_scalarStores,
|
|
&feature_trapHandler,
|
|
&feature_trigReducedRange,
|
|
&feature_unalignedBufferAccess,
|
|
&feature_unalignedScratchAccess,
|
|
&feature_unpackedD16Vmem,
|
|
&feature_vgprIndexMode,
|
|
&feature_vmemToScalarWriteHazard,
|
|
&feature_vop3Literal,
|
|
&feature_vop3p,
|
|
&feature_vcmpxExecWarHazard,
|
|
&feature_vcmpxPermlaneHazard,
|
|
&feature_vscnt,
|
|
&feature_wavefrontsize16,
|
|
&feature_wavefrontsize32,
|
|
&feature_wavefrontsize64,
|
|
&feature_xnack,
|
|
&feature_halfRate64Ops,
|
|
};
|
|
|
|
pub const cpu_bonaire = Cpu{
|
|
.name = "bonaire",
|
|
.llvm_name = "bonaire",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_codeObjectV3,
|
|
&feature_noXnackSupport,
|
|
&feature_ldsbankcount32,
|
|
&feature_movrel,
|
|
&feature_trigReducedRange,
|
|
&feature_wavefrontsize64,
|
|
&feature_ciInsts,
|
|
&feature_fp64,
|
|
&feature_gfx7Gfx8Gfx9Insts,
|
|
&feature_mimgR128,
|
|
&feature_noSramEccSupport,
|
|
&feature_flatAddressSpace,
|
|
&feature_localmemorysize65536,
|
|
},
|
|
};
|
|
|
|
pub const cpu_carrizo = Cpu{
|
|
.name = "carrizo",
|
|
.llvm_name = "carrizo",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_codeObjectV3,
|
|
&feature_fastFmaf,
|
|
&feature_ldsbankcount32,
|
|
&feature_unpackedD16Vmem,
|
|
&feature_BitInsts16,
|
|
&feature_flatAddressSpace,
|
|
&feature_dpp,
|
|
&feature_sdwa,
|
|
&feature_mimgR128,
|
|
&feature_inv2piInlineImm,
|
|
&feature_sdwaOutModsVopc,
|
|
&feature_sMemrealtime,
|
|
&feature_trigReducedRange,
|
|
&feature_vgprIndexMode,
|
|
&feature_fp64,
|
|
&feature_gfx7Gfx8Gfx9Insts,
|
|
&feature_noSramEccSupport,
|
|
&feature_gfx8Insts,
|
|
&feature_localmemorysize65536,
|
|
&feature_movrel,
|
|
&feature_intClampInsts,
|
|
&feature_sdwaMav,
|
|
&feature_wavefrontsize64,
|
|
&feature_ciInsts,
|
|
&feature_scalarStores,
|
|
&feature_gcn3Encoding,
|
|
&feature_xnack,
|
|
&feature_halfRate64Ops,
|
|
},
|
|
};
|
|
|
|
pub const cpu_fiji = Cpu{
|
|
.name = "fiji",
|
|
.llvm_name = "fiji",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_codeObjectV3,
|
|
&feature_noXnackSupport,
|
|
&feature_ldsbankcount32,
|
|
&feature_unpackedD16Vmem,
|
|
&feature_BitInsts16,
|
|
&feature_flatAddressSpace,
|
|
&feature_dpp,
|
|
&feature_sdwa,
|
|
&feature_mimgR128,
|
|
&feature_inv2piInlineImm,
|
|
&feature_sdwaOutModsVopc,
|
|
&feature_sMemrealtime,
|
|
&feature_trigReducedRange,
|
|
&feature_vgprIndexMode,
|
|
&feature_fp64,
|
|
&feature_gfx7Gfx8Gfx9Insts,
|
|
&feature_noSramEccSupport,
|
|
&feature_gfx8Insts,
|
|
&feature_localmemorysize65536,
|
|
&feature_movrel,
|
|
&feature_intClampInsts,
|
|
&feature_sdwaMav,
|
|
&feature_wavefrontsize64,
|
|
&feature_ciInsts,
|
|
&feature_scalarStores,
|
|
&feature_gcn3Encoding,
|
|
},
|
|
};
|
|
|
|
pub const cpu_generic = Cpu{
|
|
.name = "generic",
|
|
.llvm_name = "generic",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_wavefrontsize64,
|
|
},
|
|
};
|
|
|
|
pub const cpu_genericHsa = Cpu{
|
|
.name = "genericHsa",
|
|
.llvm_name = "generic-hsa",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_flatAddressSpace,
|
|
&feature_wavefrontsize64,
|
|
},
|
|
};
|
|
|
|
pub const cpu_gfx1010 = Cpu{
|
|
.name = "gfx1010",
|
|
.llvm_name = "gfx1010",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_codeObjectV3,
|
|
&feature_dlInsts,
|
|
&feature_noXnackSupport,
|
|
&feature_flatSegmentOffsetBug,
|
|
&feature_vop3Literal,
|
|
&feature_apertureRegs,
|
|
&feature_flatGlobalInsts,
|
|
&feature_gfx10Insts,
|
|
&feature_BitInsts16,
|
|
&feature_pkFmacF16Inst,
|
|
&feature_vop3p,
|
|
&feature_flatAddressSpace,
|
|
&feature_dpp,
|
|
&feature_inv2piInlineImm,
|
|
&feature_dpp8,
|
|
&feature_flatScratchInsts,
|
|
&feature_flatInstOffsets,
|
|
&feature_mimgR128,
|
|
&feature_sdwa,
|
|
&feature_fmaMixInsts,
|
|
&feature_sMemrealtime,
|
|
&feature_vscnt,
|
|
&feature_fastFmaf,
|
|
&feature_registerBanking,
|
|
&feature_gfx9Insts,
|
|
&feature_sdwaSdst,
|
|
&feature_noSdstCmpx,
|
|
&feature_fp64,
|
|
&feature_noSramEccSupport,
|
|
&feature_gfx8Insts,
|
|
&feature_localmemorysize65536,
|
|
&feature_movrel,
|
|
&feature_intClampInsts,
|
|
&feature_sdwaScalar,
|
|
&feature_sdwaOmod,
|
|
&feature_noDataDepHazard,
|
|
&feature_ciInsts,
|
|
&feature_addNoCarryInsts,
|
|
&feature_instFwdPrefetchBug,
|
|
&feature_ldsbankcount32,
|
|
&feature_ldsBranchVmemWarHazard,
|
|
&feature_ldsMisalignedBug,
|
|
&feature_nsaEncoding,
|
|
&feature_nsaToVmemBug,
|
|
&feature_offset3fBug,
|
|
&feature_smemToVectorWriteHazard,
|
|
&feature_scalarAtomics,
|
|
&feature_scalarFlatScratchInsts,
|
|
&feature_scalarStores,
|
|
&feature_vmemToScalarWriteHazard,
|
|
&feature_vcmpxExecWarHazard,
|
|
&feature_vcmpxPermlaneHazard,
|
|
&feature_wavefrontsize32,
|
|
},
|
|
};
|
|
|
|
pub const cpu_gfx1011 = Cpu{
|
|
.name = "gfx1011",
|
|
.llvm_name = "gfx1011",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_codeObjectV3,
|
|
&feature_dlInsts,
|
|
&feature_noXnackSupport,
|
|
&feature_dot1Insts,
|
|
&feature_dot2Insts,
|
|
&feature_dot5Insts,
|
|
&feature_dot6Insts,
|
|
&feature_flatSegmentOffsetBug,
|
|
&feature_vop3Literal,
|
|
&feature_apertureRegs,
|
|
&feature_flatGlobalInsts,
|
|
&feature_gfx10Insts,
|
|
&feature_BitInsts16,
|
|
&feature_pkFmacF16Inst,
|
|
&feature_vop3p,
|
|
&feature_flatAddressSpace,
|
|
&feature_dpp,
|
|
&feature_inv2piInlineImm,
|
|
&feature_dpp8,
|
|
&feature_flatScratchInsts,
|
|
&feature_flatInstOffsets,
|
|
&feature_mimgR128,
|
|
&feature_sdwa,
|
|
&feature_fmaMixInsts,
|
|
&feature_sMemrealtime,
|
|
&feature_vscnt,
|
|
&feature_fastFmaf,
|
|
&feature_registerBanking,
|
|
&feature_gfx9Insts,
|
|
&feature_sdwaSdst,
|
|
&feature_noSdstCmpx,
|
|
&feature_fp64,
|
|
&feature_noSramEccSupport,
|
|
&feature_gfx8Insts,
|
|
&feature_localmemorysize65536,
|
|
&feature_movrel,
|
|
&feature_intClampInsts,
|
|
&feature_sdwaScalar,
|
|
&feature_sdwaOmod,
|
|
&feature_noDataDepHazard,
|
|
&feature_ciInsts,
|
|
&feature_addNoCarryInsts,
|
|
&feature_instFwdPrefetchBug,
|
|
&feature_ldsbankcount32,
|
|
&feature_ldsBranchVmemWarHazard,
|
|
&feature_nsaEncoding,
|
|
&feature_nsaToVmemBug,
|
|
&feature_offset3fBug,
|
|
&feature_smemToVectorWriteHazard,
|
|
&feature_scalarAtomics,
|
|
&feature_scalarFlatScratchInsts,
|
|
&feature_scalarStores,
|
|
&feature_vmemToScalarWriteHazard,
|
|
&feature_vcmpxExecWarHazard,
|
|
&feature_vcmpxPermlaneHazard,
|
|
&feature_wavefrontsize32,
|
|
},
|
|
};
|
|
|
|
pub const cpu_gfx1012 = Cpu{
|
|
.name = "gfx1012",
|
|
.llvm_name = "gfx1012",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_codeObjectV3,
|
|
&feature_dlInsts,
|
|
&feature_noXnackSupport,
|
|
&feature_dot1Insts,
|
|
&feature_dot2Insts,
|
|
&feature_dot5Insts,
|
|
&feature_dot6Insts,
|
|
&feature_flatSegmentOffsetBug,
|
|
&feature_vop3Literal,
|
|
&feature_apertureRegs,
|
|
&feature_flatGlobalInsts,
|
|
&feature_gfx10Insts,
|
|
&feature_BitInsts16,
|
|
&feature_pkFmacF16Inst,
|
|
&feature_vop3p,
|
|
&feature_flatAddressSpace,
|
|
&feature_dpp,
|
|
&feature_inv2piInlineImm,
|
|
&feature_dpp8,
|
|
&feature_flatScratchInsts,
|
|
&feature_flatInstOffsets,
|
|
&feature_mimgR128,
|
|
&feature_sdwa,
|
|
&feature_fmaMixInsts,
|
|
&feature_sMemrealtime,
|
|
&feature_vscnt,
|
|
&feature_fastFmaf,
|
|
&feature_registerBanking,
|
|
&feature_gfx9Insts,
|
|
&feature_sdwaSdst,
|
|
&feature_noSdstCmpx,
|
|
&feature_fp64,
|
|
&feature_noSramEccSupport,
|
|
&feature_gfx8Insts,
|
|
&feature_localmemorysize65536,
|
|
&feature_movrel,
|
|
&feature_intClampInsts,
|
|
&feature_sdwaScalar,
|
|
&feature_sdwaOmod,
|
|
&feature_noDataDepHazard,
|
|
&feature_ciInsts,
|
|
&feature_addNoCarryInsts,
|
|
&feature_instFwdPrefetchBug,
|
|
&feature_ldsbankcount32,
|
|
&feature_ldsBranchVmemWarHazard,
|
|
&feature_ldsMisalignedBug,
|
|
&feature_nsaEncoding,
|
|
&feature_nsaToVmemBug,
|
|
&feature_offset3fBug,
|
|
&feature_smemToVectorWriteHazard,
|
|
&feature_scalarAtomics,
|
|
&feature_scalarFlatScratchInsts,
|
|
&feature_scalarStores,
|
|
&feature_vmemToScalarWriteHazard,
|
|
&feature_vcmpxExecWarHazard,
|
|
&feature_vcmpxPermlaneHazard,
|
|
&feature_wavefrontsize32,
|
|
},
|
|
};
|
|
|
|
pub const cpu_gfx600 = Cpu{
|
|
.name = "gfx600",
|
|
.llvm_name = "gfx600",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_codeObjectV3,
|
|
&feature_noXnackSupport,
|
|
&feature_fastFmaf,
|
|
&feature_ldsbankcount32,
|
|
&feature_movrel,
|
|
&feature_trigReducedRange,
|
|
&feature_wavefrontsize64,
|
|
&feature_localmemorysize32768,
|
|
&feature_fp64,
|
|
&feature_noSramEccSupport,
|
|
&feature_mimgR128,
|
|
&feature_halfRate64Ops,
|
|
},
|
|
};
|
|
|
|
pub const cpu_gfx601 = Cpu{
|
|
.name = "gfx601",
|
|
.llvm_name = "gfx601",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_codeObjectV3,
|
|
&feature_noXnackSupport,
|
|
&feature_ldsbankcount32,
|
|
&feature_movrel,
|
|
&feature_trigReducedRange,
|
|
&feature_wavefrontsize64,
|
|
&feature_localmemorysize32768,
|
|
&feature_fp64,
|
|
&feature_noSramEccSupport,
|
|
&feature_mimgR128,
|
|
},
|
|
};
|
|
|
|
pub const cpu_gfx700 = Cpu{
|
|
.name = "gfx700",
|
|
.llvm_name = "gfx700",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_codeObjectV3,
|
|
&feature_noXnackSupport,
|
|
&feature_ldsbankcount32,
|
|
&feature_movrel,
|
|
&feature_trigReducedRange,
|
|
&feature_wavefrontsize64,
|
|
&feature_ciInsts,
|
|
&feature_fp64,
|
|
&feature_gfx7Gfx8Gfx9Insts,
|
|
&feature_mimgR128,
|
|
&feature_noSramEccSupport,
|
|
&feature_flatAddressSpace,
|
|
&feature_localmemorysize65536,
|
|
},
|
|
};
|
|
|
|
pub const cpu_gfx701 = Cpu{
|
|
.name = "gfx701",
|
|
.llvm_name = "gfx701",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_codeObjectV3,
|
|
&feature_noXnackSupport,
|
|
&feature_fastFmaf,
|
|
&feature_ldsbankcount32,
|
|
&feature_movrel,
|
|
&feature_trigReducedRange,
|
|
&feature_wavefrontsize64,
|
|
&feature_ciInsts,
|
|
&feature_fp64,
|
|
&feature_gfx7Gfx8Gfx9Insts,
|
|
&feature_mimgR128,
|
|
&feature_noSramEccSupport,
|
|
&feature_flatAddressSpace,
|
|
&feature_localmemorysize65536,
|
|
&feature_halfRate64Ops,
|
|
},
|
|
};
|
|
|
|
pub const cpu_gfx702 = Cpu{
|
|
.name = "gfx702",
|
|
.llvm_name = "gfx702",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_codeObjectV3,
|
|
&feature_noXnackSupport,
|
|
&feature_fastFmaf,
|
|
&feature_ldsbankcount16,
|
|
&feature_movrel,
|
|
&feature_trigReducedRange,
|
|
&feature_wavefrontsize64,
|
|
&feature_ciInsts,
|
|
&feature_fp64,
|
|
&feature_gfx7Gfx8Gfx9Insts,
|
|
&feature_mimgR128,
|
|
&feature_noSramEccSupport,
|
|
&feature_flatAddressSpace,
|
|
&feature_localmemorysize65536,
|
|
},
|
|
};
|
|
|
|
pub const cpu_gfx703 = Cpu{
|
|
.name = "gfx703",
|
|
.llvm_name = "gfx703",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_codeObjectV3,
|
|
&feature_noXnackSupport,
|
|
&feature_ldsbankcount16,
|
|
&feature_movrel,
|
|
&feature_trigReducedRange,
|
|
&feature_wavefrontsize64,
|
|
&feature_ciInsts,
|
|
&feature_fp64,
|
|
&feature_gfx7Gfx8Gfx9Insts,
|
|
&feature_mimgR128,
|
|
&feature_noSramEccSupport,
|
|
&feature_flatAddressSpace,
|
|
&feature_localmemorysize65536,
|
|
},
|
|
};
|
|
|
|
pub const cpu_gfx704 = Cpu{
|
|
.name = "gfx704",
|
|
.llvm_name = "gfx704",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_codeObjectV3,
|
|
&feature_noXnackSupport,
|
|
&feature_ldsbankcount32,
|
|
&feature_movrel,
|
|
&feature_trigReducedRange,
|
|
&feature_wavefrontsize64,
|
|
&feature_ciInsts,
|
|
&feature_fp64,
|
|
&feature_gfx7Gfx8Gfx9Insts,
|
|
&feature_mimgR128,
|
|
&feature_noSramEccSupport,
|
|
&feature_flatAddressSpace,
|
|
&feature_localmemorysize65536,
|
|
},
|
|
};
|
|
|
|
pub const cpu_gfx801 = Cpu{
|
|
.name = "gfx801",
|
|
.llvm_name = "gfx801",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_codeObjectV3,
|
|
&feature_fastFmaf,
|
|
&feature_ldsbankcount32,
|
|
&feature_unpackedD16Vmem,
|
|
&feature_BitInsts16,
|
|
&feature_flatAddressSpace,
|
|
&feature_dpp,
|
|
&feature_sdwa,
|
|
&feature_mimgR128,
|
|
&feature_inv2piInlineImm,
|
|
&feature_sdwaOutModsVopc,
|
|
&feature_sMemrealtime,
|
|
&feature_trigReducedRange,
|
|
&feature_vgprIndexMode,
|
|
&feature_fp64,
|
|
&feature_gfx7Gfx8Gfx9Insts,
|
|
&feature_noSramEccSupport,
|
|
&feature_gfx8Insts,
|
|
&feature_localmemorysize65536,
|
|
&feature_movrel,
|
|
&feature_intClampInsts,
|
|
&feature_sdwaMav,
|
|
&feature_wavefrontsize64,
|
|
&feature_ciInsts,
|
|
&feature_scalarStores,
|
|
&feature_gcn3Encoding,
|
|
&feature_xnack,
|
|
&feature_halfRate64Ops,
|
|
},
|
|
};
|
|
|
|
pub const cpu_gfx802 = Cpu{
|
|
.name = "gfx802",
|
|
.llvm_name = "gfx802",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_codeObjectV3,
|
|
&feature_noXnackSupport,
|
|
&feature_ldsbankcount32,
|
|
&feature_sgprInitBug,
|
|
&feature_unpackedD16Vmem,
|
|
&feature_BitInsts16,
|
|
&feature_flatAddressSpace,
|
|
&feature_dpp,
|
|
&feature_sdwa,
|
|
&feature_mimgR128,
|
|
&feature_inv2piInlineImm,
|
|
&feature_sdwaOutModsVopc,
|
|
&feature_sMemrealtime,
|
|
&feature_trigReducedRange,
|
|
&feature_vgprIndexMode,
|
|
&feature_fp64,
|
|
&feature_gfx7Gfx8Gfx9Insts,
|
|
&feature_noSramEccSupport,
|
|
&feature_gfx8Insts,
|
|
&feature_localmemorysize65536,
|
|
&feature_movrel,
|
|
&feature_intClampInsts,
|
|
&feature_sdwaMav,
|
|
&feature_wavefrontsize64,
|
|
&feature_ciInsts,
|
|
&feature_scalarStores,
|
|
&feature_gcn3Encoding,
|
|
},
|
|
};
|
|
|
|
pub const cpu_gfx803 = Cpu{
|
|
.name = "gfx803",
|
|
.llvm_name = "gfx803",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_codeObjectV3,
|
|
&feature_noXnackSupport,
|
|
&feature_ldsbankcount32,
|
|
&feature_unpackedD16Vmem,
|
|
&feature_BitInsts16,
|
|
&feature_flatAddressSpace,
|
|
&feature_dpp,
|
|
&feature_sdwa,
|
|
&feature_mimgR128,
|
|
&feature_inv2piInlineImm,
|
|
&feature_sdwaOutModsVopc,
|
|
&feature_sMemrealtime,
|
|
&feature_trigReducedRange,
|
|
&feature_vgprIndexMode,
|
|
&feature_fp64,
|
|
&feature_gfx7Gfx8Gfx9Insts,
|
|
&feature_noSramEccSupport,
|
|
&feature_gfx8Insts,
|
|
&feature_localmemorysize65536,
|
|
&feature_movrel,
|
|
&feature_intClampInsts,
|
|
&feature_sdwaMav,
|
|
&feature_wavefrontsize64,
|
|
&feature_ciInsts,
|
|
&feature_scalarStores,
|
|
&feature_gcn3Encoding,
|
|
},
|
|
};
|
|
|
|
pub const cpu_gfx810 = Cpu{
|
|
.name = "gfx810",
|
|
.llvm_name = "gfx810",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_codeObjectV3,
|
|
&feature_ldsbankcount16,
|
|
&feature_BitInsts16,
|
|
&feature_flatAddressSpace,
|
|
&feature_dpp,
|
|
&feature_sdwa,
|
|
&feature_mimgR128,
|
|
&feature_inv2piInlineImm,
|
|
&feature_sdwaOutModsVopc,
|
|
&feature_sMemrealtime,
|
|
&feature_trigReducedRange,
|
|
&feature_vgprIndexMode,
|
|
&feature_fp64,
|
|
&feature_gfx7Gfx8Gfx9Insts,
|
|
&feature_noSramEccSupport,
|
|
&feature_gfx8Insts,
|
|
&feature_localmemorysize65536,
|
|
&feature_movrel,
|
|
&feature_intClampInsts,
|
|
&feature_sdwaMav,
|
|
&feature_wavefrontsize64,
|
|
&feature_ciInsts,
|
|
&feature_scalarStores,
|
|
&feature_gcn3Encoding,
|
|
&feature_xnack,
|
|
},
|
|
};
|
|
|
|
pub const cpu_gfx900 = Cpu{
|
|
.name = "gfx900",
|
|
.llvm_name = "gfx900",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_codeObjectV3,
|
|
&feature_noSramEccSupport,
|
|
&feature_noXnackSupport,
|
|
&feature_apertureRegs,
|
|
&feature_flatGlobalInsts,
|
|
&feature_BitInsts16,
|
|
&feature_vop3p,
|
|
&feature_flatAddressSpace,
|
|
&feature_dpp,
|
|
&feature_inv2piInlineImm,
|
|
&feature_sdwa,
|
|
&feature_flatScratchInsts,
|
|
&feature_flatInstOffsets,
|
|
&feature_scalarFlatScratchInsts,
|
|
&feature_sMemrealtime,
|
|
&feature_fastFmaf,
|
|
&feature_gfx9Insts,
|
|
&feature_sdwaSdst,
|
|
&feature_vgprIndexMode,
|
|
&feature_fp64,
|
|
&feature_gfx7Gfx8Gfx9Insts,
|
|
&feature_gfx8Insts,
|
|
&feature_localmemorysize65536,
|
|
&feature_intClampInsts,
|
|
&feature_sdwaScalar,
|
|
&feature_sdwaOmod,
|
|
&feature_scalarAtomics,
|
|
&feature_r128A16,
|
|
&feature_wavefrontsize64,
|
|
&feature_ciInsts,
|
|
&feature_scalarStores,
|
|
&feature_gcn3Encoding,
|
|
&feature_addNoCarryInsts,
|
|
&feature_ldsbankcount32,
|
|
&feature_madMixInsts,
|
|
},
|
|
};
|
|
|
|
pub const cpu_gfx902 = Cpu{
|
|
.name = "gfx902",
|
|
.llvm_name = "gfx902",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_codeObjectV3,
|
|
&feature_noSramEccSupport,
|
|
&feature_apertureRegs,
|
|
&feature_flatGlobalInsts,
|
|
&feature_BitInsts16,
|
|
&feature_vop3p,
|
|
&feature_flatAddressSpace,
|
|
&feature_dpp,
|
|
&feature_inv2piInlineImm,
|
|
&feature_sdwa,
|
|
&feature_flatScratchInsts,
|
|
&feature_flatInstOffsets,
|
|
&feature_scalarFlatScratchInsts,
|
|
&feature_sMemrealtime,
|
|
&feature_fastFmaf,
|
|
&feature_gfx9Insts,
|
|
&feature_sdwaSdst,
|
|
&feature_vgprIndexMode,
|
|
&feature_fp64,
|
|
&feature_gfx7Gfx8Gfx9Insts,
|
|
&feature_gfx8Insts,
|
|
&feature_localmemorysize65536,
|
|
&feature_intClampInsts,
|
|
&feature_sdwaScalar,
|
|
&feature_sdwaOmod,
|
|
&feature_scalarAtomics,
|
|
&feature_r128A16,
|
|
&feature_wavefrontsize64,
|
|
&feature_ciInsts,
|
|
&feature_scalarStores,
|
|
&feature_gcn3Encoding,
|
|
&feature_addNoCarryInsts,
|
|
&feature_ldsbankcount32,
|
|
&feature_madMixInsts,
|
|
&feature_xnack,
|
|
},
|
|
};
|
|
|
|
pub const cpu_gfx904 = Cpu{
|
|
.name = "gfx904",
|
|
.llvm_name = "gfx904",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_codeObjectV3,
|
|
&feature_noSramEccSupport,
|
|
&feature_noXnackSupport,
|
|
&feature_fmaMixInsts,
|
|
&feature_apertureRegs,
|
|
&feature_flatGlobalInsts,
|
|
&feature_BitInsts16,
|
|
&feature_vop3p,
|
|
&feature_flatAddressSpace,
|
|
&feature_dpp,
|
|
&feature_inv2piInlineImm,
|
|
&feature_sdwa,
|
|
&feature_flatScratchInsts,
|
|
&feature_flatInstOffsets,
|
|
&feature_scalarFlatScratchInsts,
|
|
&feature_sMemrealtime,
|
|
&feature_fastFmaf,
|
|
&feature_gfx9Insts,
|
|
&feature_sdwaSdst,
|
|
&feature_vgprIndexMode,
|
|
&feature_fp64,
|
|
&feature_gfx7Gfx8Gfx9Insts,
|
|
&feature_gfx8Insts,
|
|
&feature_localmemorysize65536,
|
|
&feature_intClampInsts,
|
|
&feature_sdwaScalar,
|
|
&feature_sdwaOmod,
|
|
&feature_scalarAtomics,
|
|
&feature_r128A16,
|
|
&feature_wavefrontsize64,
|
|
&feature_ciInsts,
|
|
&feature_scalarStores,
|
|
&feature_gcn3Encoding,
|
|
&feature_addNoCarryInsts,
|
|
&feature_ldsbankcount32,
|
|
},
|
|
};
|
|
|
|
pub const cpu_gfx906 = Cpu{
|
|
.name = "gfx906",
|
|
.llvm_name = "gfx906",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_codeObjectV3,
|
|
&feature_dlInsts,
|
|
&feature_noXnackSupport,
|
|
&feature_dot1Insts,
|
|
&feature_dot2Insts,
|
|
&feature_fmaMixInsts,
|
|
&feature_apertureRegs,
|
|
&feature_flatGlobalInsts,
|
|
&feature_BitInsts16,
|
|
&feature_vop3p,
|
|
&feature_flatAddressSpace,
|
|
&feature_dpp,
|
|
&feature_inv2piInlineImm,
|
|
&feature_sdwa,
|
|
&feature_flatScratchInsts,
|
|
&feature_flatInstOffsets,
|
|
&feature_scalarFlatScratchInsts,
|
|
&feature_sMemrealtime,
|
|
&feature_fastFmaf,
|
|
&feature_gfx9Insts,
|
|
&feature_sdwaSdst,
|
|
&feature_vgprIndexMode,
|
|
&feature_fp64,
|
|
&feature_gfx7Gfx8Gfx9Insts,
|
|
&feature_gfx8Insts,
|
|
&feature_localmemorysize65536,
|
|
&feature_intClampInsts,
|
|
&feature_sdwaScalar,
|
|
&feature_sdwaOmod,
|
|
&feature_scalarAtomics,
|
|
&feature_r128A16,
|
|
&feature_wavefrontsize64,
|
|
&feature_ciInsts,
|
|
&feature_scalarStores,
|
|
&feature_gcn3Encoding,
|
|
&feature_addNoCarryInsts,
|
|
&feature_ldsbankcount32,
|
|
&feature_halfRate64Ops,
|
|
},
|
|
};
|
|
|
|
pub const cpu_gfx908 = Cpu{
|
|
.name = "gfx908",
|
|
.llvm_name = "gfx908",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_atomicFaddInsts,
|
|
&feature_codeObjectV3,
|
|
&feature_dlInsts,
|
|
&feature_dot1Insts,
|
|
&feature_dot2Insts,
|
|
&feature_dot3Insts,
|
|
&feature_dot4Insts,
|
|
&feature_dot5Insts,
|
|
&feature_dot6Insts,
|
|
&feature_fmaMixInsts,
|
|
&feature_apertureRegs,
|
|
&feature_flatGlobalInsts,
|
|
&feature_BitInsts16,
|
|
&feature_vop3p,
|
|
&feature_flatAddressSpace,
|
|
&feature_dpp,
|
|
&feature_inv2piInlineImm,
|
|
&feature_sdwa,
|
|
&feature_flatScratchInsts,
|
|
&feature_flatInstOffsets,
|
|
&feature_scalarFlatScratchInsts,
|
|
&feature_sMemrealtime,
|
|
&feature_fastFmaf,
|
|
&feature_gfx9Insts,
|
|
&feature_sdwaSdst,
|
|
&feature_vgprIndexMode,
|
|
&feature_fp64,
|
|
&feature_gfx7Gfx8Gfx9Insts,
|
|
&feature_gfx8Insts,
|
|
&feature_localmemorysize65536,
|
|
&feature_intClampInsts,
|
|
&feature_sdwaScalar,
|
|
&feature_sdwaOmod,
|
|
&feature_scalarAtomics,
|
|
&feature_r128A16,
|
|
&feature_wavefrontsize64,
|
|
&feature_ciInsts,
|
|
&feature_scalarStores,
|
|
&feature_gcn3Encoding,
|
|
&feature_addNoCarryInsts,
|
|
&feature_ldsbankcount32,
|
|
&feature_maiInsts,
|
|
&feature_mfmaInlineLiteralBug,
|
|
&feature_pkFmacF16Inst,
|
|
&feature_sramEcc,
|
|
&feature_halfRate64Ops,
|
|
},
|
|
};
|
|
|
|
pub const cpu_gfx909 = Cpu{
|
|
.name = "gfx909",
|
|
.llvm_name = "gfx909",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_codeObjectV3,
|
|
&feature_apertureRegs,
|
|
&feature_flatGlobalInsts,
|
|
&feature_BitInsts16,
|
|
&feature_vop3p,
|
|
&feature_flatAddressSpace,
|
|
&feature_dpp,
|
|
&feature_inv2piInlineImm,
|
|
&feature_sdwa,
|
|
&feature_flatScratchInsts,
|
|
&feature_flatInstOffsets,
|
|
&feature_scalarFlatScratchInsts,
|
|
&feature_sMemrealtime,
|
|
&feature_fastFmaf,
|
|
&feature_gfx9Insts,
|
|
&feature_sdwaSdst,
|
|
&feature_vgprIndexMode,
|
|
&feature_fp64,
|
|
&feature_gfx7Gfx8Gfx9Insts,
|
|
&feature_gfx8Insts,
|
|
&feature_localmemorysize65536,
|
|
&feature_intClampInsts,
|
|
&feature_sdwaScalar,
|
|
&feature_sdwaOmod,
|
|
&feature_scalarAtomics,
|
|
&feature_r128A16,
|
|
&feature_wavefrontsize64,
|
|
&feature_ciInsts,
|
|
&feature_scalarStores,
|
|
&feature_gcn3Encoding,
|
|
&feature_addNoCarryInsts,
|
|
&feature_ldsbankcount32,
|
|
&feature_madMixInsts,
|
|
&feature_xnack,
|
|
},
|
|
};
|
|
|
|
pub const cpu_hainan = Cpu{
|
|
.name = "hainan",
|
|
.llvm_name = "hainan",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_codeObjectV3,
|
|
&feature_noXnackSupport,
|
|
&feature_ldsbankcount32,
|
|
&feature_movrel,
|
|
&feature_trigReducedRange,
|
|
&feature_wavefrontsize64,
|
|
&feature_localmemorysize32768,
|
|
&feature_fp64,
|
|
&feature_noSramEccSupport,
|
|
&feature_mimgR128,
|
|
},
|
|
};
|
|
|
|
pub const cpu_hawaii = Cpu{
|
|
.name = "hawaii",
|
|
.llvm_name = "hawaii",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_codeObjectV3,
|
|
&feature_noXnackSupport,
|
|
&feature_fastFmaf,
|
|
&feature_ldsbankcount32,
|
|
&feature_movrel,
|
|
&feature_trigReducedRange,
|
|
&feature_wavefrontsize64,
|
|
&feature_ciInsts,
|
|
&feature_fp64,
|
|
&feature_gfx7Gfx8Gfx9Insts,
|
|
&feature_mimgR128,
|
|
&feature_noSramEccSupport,
|
|
&feature_flatAddressSpace,
|
|
&feature_localmemorysize65536,
|
|
&feature_halfRate64Ops,
|
|
},
|
|
};
|
|
|
|
pub const cpu_iceland = Cpu{
|
|
.name = "iceland",
|
|
.llvm_name = "iceland",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_codeObjectV3,
|
|
&feature_noXnackSupport,
|
|
&feature_ldsbankcount32,
|
|
&feature_sgprInitBug,
|
|
&feature_unpackedD16Vmem,
|
|
&feature_BitInsts16,
|
|
&feature_flatAddressSpace,
|
|
&feature_dpp,
|
|
&feature_sdwa,
|
|
&feature_mimgR128,
|
|
&feature_inv2piInlineImm,
|
|
&feature_sdwaOutModsVopc,
|
|
&feature_sMemrealtime,
|
|
&feature_trigReducedRange,
|
|
&feature_vgprIndexMode,
|
|
&feature_fp64,
|
|
&feature_gfx7Gfx8Gfx9Insts,
|
|
&feature_noSramEccSupport,
|
|
&feature_gfx8Insts,
|
|
&feature_localmemorysize65536,
|
|
&feature_movrel,
|
|
&feature_intClampInsts,
|
|
&feature_sdwaMav,
|
|
&feature_wavefrontsize64,
|
|
&feature_ciInsts,
|
|
&feature_scalarStores,
|
|
&feature_gcn3Encoding,
|
|
},
|
|
};
|
|
|
|
pub const cpu_kabini = Cpu{
|
|
.name = "kabini",
|
|
.llvm_name = "kabini",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_codeObjectV3,
|
|
&feature_noXnackSupport,
|
|
&feature_ldsbankcount16,
|
|
&feature_movrel,
|
|
&feature_trigReducedRange,
|
|
&feature_wavefrontsize64,
|
|
&feature_ciInsts,
|
|
&feature_fp64,
|
|
&feature_gfx7Gfx8Gfx9Insts,
|
|
&feature_mimgR128,
|
|
&feature_noSramEccSupport,
|
|
&feature_flatAddressSpace,
|
|
&feature_localmemorysize65536,
|
|
},
|
|
};
|
|
|
|
pub const cpu_kaveri = Cpu{
|
|
.name = "kaveri",
|
|
.llvm_name = "kaveri",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_codeObjectV3,
|
|
&feature_noXnackSupport,
|
|
&feature_ldsbankcount32,
|
|
&feature_movrel,
|
|
&feature_trigReducedRange,
|
|
&feature_wavefrontsize64,
|
|
&feature_ciInsts,
|
|
&feature_fp64,
|
|
&feature_gfx7Gfx8Gfx9Insts,
|
|
&feature_mimgR128,
|
|
&feature_noSramEccSupport,
|
|
&feature_flatAddressSpace,
|
|
&feature_localmemorysize65536,
|
|
},
|
|
};
|
|
|
|
pub const cpu_mullins = Cpu{
|
|
.name = "mullins",
|
|
.llvm_name = "mullins",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_codeObjectV3,
|
|
&feature_noXnackSupport,
|
|
&feature_ldsbankcount16,
|
|
&feature_movrel,
|
|
&feature_trigReducedRange,
|
|
&feature_wavefrontsize64,
|
|
&feature_ciInsts,
|
|
&feature_fp64,
|
|
&feature_gfx7Gfx8Gfx9Insts,
|
|
&feature_mimgR128,
|
|
&feature_noSramEccSupport,
|
|
&feature_flatAddressSpace,
|
|
&feature_localmemorysize65536,
|
|
},
|
|
};
|
|
|
|
pub const cpu_oland = Cpu{
|
|
.name = "oland",
|
|
.llvm_name = "oland",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_codeObjectV3,
|
|
&feature_noXnackSupport,
|
|
&feature_ldsbankcount32,
|
|
&feature_movrel,
|
|
&feature_trigReducedRange,
|
|
&feature_wavefrontsize64,
|
|
&feature_localmemorysize32768,
|
|
&feature_fp64,
|
|
&feature_noSramEccSupport,
|
|
&feature_mimgR128,
|
|
},
|
|
};
|
|
|
|
pub const cpu_pitcairn = Cpu{
|
|
.name = "pitcairn",
|
|
.llvm_name = "pitcairn",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_codeObjectV3,
|
|
&feature_noXnackSupport,
|
|
&feature_ldsbankcount32,
|
|
&feature_movrel,
|
|
&feature_trigReducedRange,
|
|
&feature_wavefrontsize64,
|
|
&feature_localmemorysize32768,
|
|
&feature_fp64,
|
|
&feature_noSramEccSupport,
|
|
&feature_mimgR128,
|
|
},
|
|
};
|
|
|
|
pub const cpu_polaris10 = Cpu{
|
|
.name = "polaris10",
|
|
.llvm_name = "polaris10",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_codeObjectV3,
|
|
&feature_noXnackSupport,
|
|
&feature_ldsbankcount32,
|
|
&feature_unpackedD16Vmem,
|
|
&feature_BitInsts16,
|
|
&feature_flatAddressSpace,
|
|
&feature_dpp,
|
|
&feature_sdwa,
|
|
&feature_mimgR128,
|
|
&feature_inv2piInlineImm,
|
|
&feature_sdwaOutModsVopc,
|
|
&feature_sMemrealtime,
|
|
&feature_trigReducedRange,
|
|
&feature_vgprIndexMode,
|
|
&feature_fp64,
|
|
&feature_gfx7Gfx8Gfx9Insts,
|
|
&feature_noSramEccSupport,
|
|
&feature_gfx8Insts,
|
|
&feature_localmemorysize65536,
|
|
&feature_movrel,
|
|
&feature_intClampInsts,
|
|
&feature_sdwaMav,
|
|
&feature_wavefrontsize64,
|
|
&feature_ciInsts,
|
|
&feature_scalarStores,
|
|
&feature_gcn3Encoding,
|
|
},
|
|
};
|
|
|
|
pub const cpu_polaris11 = Cpu{
|
|
.name = "polaris11",
|
|
.llvm_name = "polaris11",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_codeObjectV3,
|
|
&feature_noXnackSupport,
|
|
&feature_ldsbankcount32,
|
|
&feature_unpackedD16Vmem,
|
|
&feature_BitInsts16,
|
|
&feature_flatAddressSpace,
|
|
&feature_dpp,
|
|
&feature_sdwa,
|
|
&feature_mimgR128,
|
|
&feature_inv2piInlineImm,
|
|
&feature_sdwaOutModsVopc,
|
|
&feature_sMemrealtime,
|
|
&feature_trigReducedRange,
|
|
&feature_vgprIndexMode,
|
|
&feature_fp64,
|
|
&feature_gfx7Gfx8Gfx9Insts,
|
|
&feature_noSramEccSupport,
|
|
&feature_gfx8Insts,
|
|
&feature_localmemorysize65536,
|
|
&feature_movrel,
|
|
&feature_intClampInsts,
|
|
&feature_sdwaMav,
|
|
&feature_wavefrontsize64,
|
|
&feature_ciInsts,
|
|
&feature_scalarStores,
|
|
&feature_gcn3Encoding,
|
|
},
|
|
};
|
|
|
|
pub const cpu_stoney = Cpu{
|
|
.name = "stoney",
|
|
.llvm_name = "stoney",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_codeObjectV3,
|
|
&feature_ldsbankcount16,
|
|
&feature_BitInsts16,
|
|
&feature_flatAddressSpace,
|
|
&feature_dpp,
|
|
&feature_sdwa,
|
|
&feature_mimgR128,
|
|
&feature_inv2piInlineImm,
|
|
&feature_sdwaOutModsVopc,
|
|
&feature_sMemrealtime,
|
|
&feature_trigReducedRange,
|
|
&feature_vgprIndexMode,
|
|
&feature_fp64,
|
|
&feature_gfx7Gfx8Gfx9Insts,
|
|
&feature_noSramEccSupport,
|
|
&feature_gfx8Insts,
|
|
&feature_localmemorysize65536,
|
|
&feature_movrel,
|
|
&feature_intClampInsts,
|
|
&feature_sdwaMav,
|
|
&feature_wavefrontsize64,
|
|
&feature_ciInsts,
|
|
&feature_scalarStores,
|
|
&feature_gcn3Encoding,
|
|
&feature_xnack,
|
|
},
|
|
};
|
|
|
|
pub const cpu_tahiti = Cpu{
|
|
.name = "tahiti",
|
|
.llvm_name = "tahiti",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_codeObjectV3,
|
|
&feature_noXnackSupport,
|
|
&feature_fastFmaf,
|
|
&feature_ldsbankcount32,
|
|
&feature_movrel,
|
|
&feature_trigReducedRange,
|
|
&feature_wavefrontsize64,
|
|
&feature_localmemorysize32768,
|
|
&feature_fp64,
|
|
&feature_noSramEccSupport,
|
|
&feature_mimgR128,
|
|
&feature_halfRate64Ops,
|
|
},
|
|
};
|
|
|
|
pub const cpu_tonga = Cpu{
|
|
.name = "tonga",
|
|
.llvm_name = "tonga",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_codeObjectV3,
|
|
&feature_noXnackSupport,
|
|
&feature_ldsbankcount32,
|
|
&feature_sgprInitBug,
|
|
&feature_unpackedD16Vmem,
|
|
&feature_BitInsts16,
|
|
&feature_flatAddressSpace,
|
|
&feature_dpp,
|
|
&feature_sdwa,
|
|
&feature_mimgR128,
|
|
&feature_inv2piInlineImm,
|
|
&feature_sdwaOutModsVopc,
|
|
&feature_sMemrealtime,
|
|
&feature_trigReducedRange,
|
|
&feature_vgprIndexMode,
|
|
&feature_fp64,
|
|
&feature_gfx7Gfx8Gfx9Insts,
|
|
&feature_noSramEccSupport,
|
|
&feature_gfx8Insts,
|
|
&feature_localmemorysize65536,
|
|
&feature_movrel,
|
|
&feature_intClampInsts,
|
|
&feature_sdwaMav,
|
|
&feature_wavefrontsize64,
|
|
&feature_ciInsts,
|
|
&feature_scalarStores,
|
|
&feature_gcn3Encoding,
|
|
},
|
|
};
|
|
|
|
pub const cpu_verde = Cpu{
|
|
.name = "verde",
|
|
.llvm_name = "verde",
|
|
.dependencies = &[_]*const Feature {
|
|
&feature_codeObjectV3,
|
|
&feature_noXnackSupport,
|
|
&feature_ldsbankcount32,
|
|
&feature_movrel,
|
|
&feature_trigReducedRange,
|
|
&feature_wavefrontsize64,
|
|
&feature_localmemorysize32768,
|
|
&feature_fp64,
|
|
&feature_noSramEccSupport,
|
|
&feature_mimgR128,
|
|
},
|
|
};
|
|
|
|
pub const cpus = &[_]*const Cpu {
|
|
&cpu_bonaire,
|
|
&cpu_carrizo,
|
|
&cpu_fiji,
|
|
&cpu_generic,
|
|
&cpu_genericHsa,
|
|
&cpu_gfx1010,
|
|
&cpu_gfx1011,
|
|
&cpu_gfx1012,
|
|
&cpu_gfx600,
|
|
&cpu_gfx601,
|
|
&cpu_gfx700,
|
|
&cpu_gfx701,
|
|
&cpu_gfx702,
|
|
&cpu_gfx703,
|
|
&cpu_gfx704,
|
|
&cpu_gfx801,
|
|
&cpu_gfx802,
|
|
&cpu_gfx803,
|
|
&cpu_gfx810,
|
|
&cpu_gfx900,
|
|
&cpu_gfx902,
|
|
&cpu_gfx904,
|
|
&cpu_gfx906,
|
|
&cpu_gfx908,
|
|
&cpu_gfx909,
|
|
&cpu_hainan,
|
|
&cpu_hawaii,
|
|
&cpu_iceland,
|
|
&cpu_kabini,
|
|
&cpu_kaveri,
|
|
&cpu_mullins,
|
|
&cpu_oland,
|
|
&cpu_pitcairn,
|
|
&cpu_polaris10,
|
|
&cpu_polaris11,
|
|
&cpu_stoney,
|
|
&cpu_tahiti,
|
|
&cpu_tonga,
|
|
&cpu_verde,
|
|
};
|