Back to home page

EIC code displayed by LXR

 
 

    


Warning, /include/llvm/TargetParser/PPCTargetParser.def is written in an unsupported language. File is not indexed.

0001 //===- PPCTargetParser.def - PPC target parsing defines ---------*- C++ -*-===//
0002 //
0003 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
0004 // See https://llvm.org/LICENSE.txt for license information.
0005 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
0006 //
0007 //===----------------------------------------------------------------------===//
0008 //
0009 // This file provides defines to build up the PPC target parser's logic.
0010 //
0011 //===----------------------------------------------------------------------===//
0012 
0013 // NOTE: NO INCLUDE GUARD DESIRED!
0014 
0015 #ifdef PPC_TGT_PARSER_UNDEF_MACROS
0016 #undef PPC_LNX_FEATURE
0017 #undef PPC_CPU
0018 #undef PPC_FAWORD_HWCAP
0019 #undef PPC_FAWORD_HWCAP2
0020 #undef PPC_FAWORD_CPUID
0021 #undef PPC_HWCAP_OFFSET_LE32
0022 #undef PPC_HWCAP_OFFSET_LE64
0023 #undef PPC_HWCAP_OFFSET_BE32
0024 #undef PPC_HWCAP_OFFSET_BE64
0025 #undef PPC_HWCAP2_OFFSET_LE32
0026 #undef PPC_HWCAP2_OFFSET_LE64
0027 #undef PPC_HWCAP2_OFFSET_BE32
0028 #undef PPC_HWCAP2_OFFSET_BE64
0029 #undef PPC_CPUID_OFFSET_LE32
0030 #undef PPC_CPUID_OFFSET_LE64
0031 #undef PPC_CPUID_OFFSET_BE32
0032 #undef PPC_CPUID_OFFSET_BE64
0033 #undef BUILTIN_PPC_TRUE
0034 #undef BUILTIN_PPC_FALSE
0035 #undef USE_SYS_CONF
0036 #undef SYS_CALL
0037 #undef BUILTIN_PPC_UNSUPPORTED
0038 #undef AIX_SYSCON_IMPL_IDX
0039 #undef AIX_PPC7_VALUE
0040 #undef AIX_PPC8_VALUE
0041 #undef AIX_PPC9_VALUE
0042 #undef AIX_PPC10_VALUE
0043 #undef AIX_PPC11_VALUE
0044 #else
0045 #ifndef PPC_LNX_FEATURE
0046 #define PPC_LNX_FEATURE(NAME, DESC, ENUMNAME, ENUMVAL, HWCAPN)
0047 #endif
0048 #ifndef PPC_CPU
0049 #define PPC_CPU(Name, Linux_SUPPORT_METHOD, LinuxID, AIX_SUPPORT_METHOD, AIXID)
0050 #endif
0051 #ifndef PPC_FAWORD_HWCAP
0052 #define PPC_FAWORD_HWCAP 1
0053 #endif
0054 #ifndef PPC_FAWORD_HWCAP2
0055 #define PPC_FAWORD_HWCAP2 2
0056 #endif
0057 #ifndef PPC_FAWORD_CPUID
0058 #define PPC_FAWORD_CPUID 3
0059 #endif
0060 
0061 // PPC CPUs
0062 //
0063 // The value of SUPPORT_METHOD can be:
0064 //   BUILTIN_PPC_TRUE : feature supported
0065 //   BUILTIN_PPC_FALSE : feature not supported
0066 //   USE_SYS_CONF : return value depends on comparing VALUE with the specified
0067 //                  data member of _system_configuration at INDEX, where the
0068 //                  data member is masked by Mask.
0069 //   SYS_CALL : return value depends on comparing a VALUE with the return value
0070 //              of calling `getsystemcfg` with the parameter INDEX, which is
0071 //              then masked by Mask.
0072 //
0073 // USE_SYS_CONF is only a methond supported on AIX.
0074 //
0075 // Supported SUPPORT_METHOD values.
0076 #define BUILTIN_PPC_TRUE 1
0077 #define BUILTIN_PPC_FALSE 0
0078 #define USE_SYS_CONF 2
0079 #define SYS_CALL 3
0080 #define BUILTIN_PPC_UNSUPPORTED 4
0081 
0082 #define AIX_SYSCON_IMPL_IDX 1
0083 
0084 #define AIX_PPC7_VALUE 0x00008000
0085 #define AIX_PPC8_VALUE 0x00010000
0086 #define AIX_PPC9_VALUE 0x00020000
0087 #define AIX_PPC10_VALUE 0x00040000
0088 #define AIX_PPC11_VALUE 0x00080000
0089 
0090 // __builtin_cpu_is() and __builtin_cpu_supports() are supported only on Power7 and up on AIX.
0091 // PPC_CPU(Name, Linux_SUPPORT_METHOD, LinuxID, AIX_SUPPORT_METHOD, AIXID)
0092 PPC_CPU("generic",BUILTIN_PPC_UNSUPPORTED,0,BUILTIN_PPC_UNSUPPORTED,0)
0093 PPC_CPU("440",SYS_CALL,42,BUILTIN_PPC_FALSE,0)
0094 PPC_CPU("440fp",SYS_CALL,42,BUILTIN_PPC_FALSE,0)
0095 PPC_CPU("ppc440",SYS_CALL,42,BUILTIN_PPC_FALSE,0)
0096 PPC_CPU("450",BUILTIN_PPC_UNSUPPORTED,0,BUILTIN_PPC_UNSUPPORTED,0)
0097 PPC_CPU("601",BUILTIN_PPC_UNSUPPORTED,0,BUILTIN_PPC_UNSUPPORTED,0)
0098 PPC_CPU("602",BUILTIN_PPC_UNSUPPORTED,0,BUILTIN_PPC_UNSUPPORTED,0)
0099 PPC_CPU("603",BUILTIN_PPC_UNSUPPORTED,0,BUILTIN_PPC_UNSUPPORTED,0)
0100 PPC_CPU("603e",BUILTIN_PPC_UNSUPPORTED,0,BUILTIN_PPC_UNSUPPORTED,0)
0101 PPC_CPU("603ev",BUILTIN_PPC_UNSUPPORTED,0,BUILTIN_PPC_UNSUPPORTED,0)
0102 PPC_CPU("604",BUILTIN_PPC_UNSUPPORTED,0,BUILTIN_PPC_UNSUPPORTED,0)
0103 PPC_CPU("604e",BUILTIN_PPC_UNSUPPORTED,0,BUILTIN_PPC_UNSUPPORTED,0)
0104 PPC_CPU("620",BUILTIN_PPC_UNSUPPORTED,0,BUILTIN_PPC_UNSUPPORTED,0)
0105 PPC_CPU("630",BUILTIN_PPC_UNSUPPORTED,0,BUILTIN_PPC_UNSUPPORTED,0)
0106 PPC_CPU("g3",BUILTIN_PPC_UNSUPPORTED,0,BUILTIN_PPC_UNSUPPORTED,0)
0107 PPC_CPU("7400",BUILTIN_PPC_UNSUPPORTED,0,BUILTIN_PPC_UNSUPPORTED,0)
0108 PPC_CPU("g4",BUILTIN_PPC_UNSUPPORTED,0,BUILTIN_PPC_UNSUPPORTED,0)
0109 PPC_CPU("7450",BUILTIN_PPC_UNSUPPORTED,0,BUILTIN_PPC_UNSUPPORTED,0)
0110 PPC_CPU("g4+",BUILTIN_PPC_UNSUPPORTED,0,BUILTIN_PPC_UNSUPPORTED,0)
0111 PPC_CPU("750",BUILTIN_PPC_UNSUPPORTED,0,BUILTIN_PPC_UNSUPPORTED,0)
0112 PPC_CPU("8548",BUILTIN_PPC_UNSUPPORTED,0,BUILTIN_PPC_UNSUPPORTED,0)
0113 PPC_CPU("ppc405",SYS_CALL,41,BUILTIN_PPC_FALSE,0)
0114 PPC_CPU("ppc464",SYS_CALL,43,BUILTIN_PPC_FALSE,0)
0115 PPC_CPU("ppc476",SYS_CALL,44,BUILTIN_PPC_FALSE,0)
0116 PPC_CPU("970",SYS_CALL,33,BUILTIN_PPC_FALSE,0)
0117 PPC_CPU("ppc970",SYS_CALL,33,BUILTIN_PPC_FALSE,0)
0118 PPC_CPU("g5",BUILTIN_PPC_UNSUPPORTED,0,BUILTIN_PPC_UNSUPPORTED,0)
0119 PPC_CPU("a2",SYS_CALL,40,BUILTIN_PPC_FALSE,0)
0120 PPC_CPU("ppca2",SYS_CALL,40,BUILTIN_PPC_FALSE,0)
0121 PPC_CPU("ppc-cell-be",SYS_CALL,37,BUILTIN_PPC_FALSE,0)
0122 PPC_CPU("e500",BUILTIN_PPC_UNSUPPORTED,0,BUILTIN_PPC_UNSUPPORTED,0)
0123 PPC_CPU("e500mc",BUILTIN_PPC_UNSUPPORTED,0,BUILTIN_PPC_UNSUPPORTED,0)
0124 PPC_CPU("e5500",BUILTIN_PPC_UNSUPPORTED,0,BUILTIN_PPC_UNSUPPORTED,0)
0125 PPC_CPU("power3",BUILTIN_PPC_UNSUPPORTED,0,BUILTIN_PPC_UNSUPPORTED,0)
0126 PPC_CPU("pwr3",BUILTIN_PPC_UNSUPPORTED,0,BUILTIN_PPC_UNSUPPORTED,0)
0127 PPC_CPU("pwr4",SYS_CALL,32,BUILTIN_PPC_FALSE,0)
0128 PPC_CPU("power4",SYS_CALL,32,BUILTIN_PPC_FALSE,0)
0129 PPC_CPU("pwr5",SYS_CALL,34,BUILTIN_PPC_FALSE,0)
0130 PPC_CPU("power5",SYS_CALL,34,BUILTIN_PPC_FALSE,0)
0131 PPC_CPU("pwr5+",SYS_CALL,35,BUILTIN_PPC_FALSE,0)
0132 PPC_CPU("power5+",SYS_CALL,35,BUILTIN_PPC_FALSE,0)
0133 PPC_CPU("pwr5x",BUILTIN_PPC_UNSUPPORTED,0,BUILTIN_PPC_UNSUPPORTED,0)
0134 PPC_CPU("power5x",BUILTIN_PPC_UNSUPPORTED,0,BUILTIN_PPC_UNSUPPORTED,0)
0135 PPC_CPU("pwr6",SYS_CALL,36,BUILTIN_PPC_FALSE,0)
0136 PPC_CPU("power6",SYS_CALL,36,BUILTIN_PPC_FALSE,0)
0137 PPC_CPU("pwr6x",SYS_CALL,38,BUILTIN_PPC_FALSE,0)
0138 PPC_CPU("power6x",SYS_CALL,38,BUILTIN_PPC_FALSE,0)
0139 PPC_CPU("pwr7",SYS_CALL,39,USE_SYS_CONF,AIX_PPC7_VALUE)
0140 PPC_CPU("power7",SYS_CALL,39,USE_SYS_CONF,AIX_PPC7_VALUE)
0141 PPC_CPU("pwr8",SYS_CALL,45,USE_SYS_CONF,AIX_PPC8_VALUE)
0142 PPC_CPU("power8",SYS_CALL,45,USE_SYS_CONF,AIX_PPC8_VALUE)
0143 PPC_CPU("pwr9",SYS_CALL,46,USE_SYS_CONF,AIX_PPC9_VALUE)
0144 PPC_CPU("power9",SYS_CALL,46,USE_SYS_CONF,AIX_PPC9_VALUE)
0145 PPC_CPU("pwr10",SYS_CALL,47,USE_SYS_CONF,AIX_PPC10_VALUE)
0146 PPC_CPU("power10",SYS_CALL,47,USE_SYS_CONF,AIX_PPC10_VALUE)
0147 PPC_CPU("pwr11",SYS_CALL,48,USE_SYS_CONF,AIX_PPC11_VALUE)
0148 PPC_CPU("power11",SYS_CALL,48,USE_SYS_CONF,AIX_PPC11_VALUE)
0149 PPC_CPU("powerpc",BUILTIN_PPC_UNSUPPORTED,0,BUILTIN_PPC_UNSUPPORTED,0)
0150 PPC_CPU("ppc",BUILTIN_PPC_UNSUPPORTED,0,BUILTIN_PPC_UNSUPPORTED,0)
0151 PPC_CPU("ppc32",BUILTIN_PPC_UNSUPPORTED,0,BUILTIN_PPC_UNSUPPORTED,0)
0152 PPC_CPU("powerpc64",BUILTIN_PPC_UNSUPPORTED,0,BUILTIN_PPC_UNSUPPORTED,0)
0153 PPC_CPU("ppc64",BUILTIN_PPC_UNSUPPORTED,0,BUILTIN_PPC_UNSUPPORTED,0)
0154 PPC_CPU("powerpc64le",BUILTIN_PPC_UNSUPPORTED,0,BUILTIN_PPC_UNSUPPORTED,0)
0155 PPC_CPU("ppc64le",BUILTIN_PPC_UNSUPPORTED,0,BUILTIN_PPC_UNSUPPORTED,0)
0156 PPC_CPU("future",BUILTIN_PPC_UNSUPPORTED,0,BUILTIN_PPC_UNSUPPORTED,0)
0157 #undef PPC_CPU
0158 
0159 // PPC features on Linux:
0160 //
0161 // PPC_LNX_FEATURE(Name, Description, EnumName, BitMask, PPC_FAWORD_WORD)
0162 PPC_LNX_FEATURE("4xxmac","4xx CPU has a Multiply Accumulator",PPCF_4XXMAC,0x02000000,PPC_FAWORD_HWCAP)
0163 PPC_LNX_FEATURE("altivec","CPU has a SIMD/Vector Unit",PPCF_ALTIVEC,0x10000000,PPC_FAWORD_HWCAP)
0164 PPC_LNX_FEATURE("arch_2_05","CPU supports ISA 205 (eg, POWER6)",PPCF_ARCH205,0x00001000,PPC_FAWORD_HWCAP)
0165 PPC_LNX_FEATURE("arch_2_06","CPU supports ISA 206 (eg, POWER7)",PPCF_ARCH206,0x00000100,PPC_FAWORD_HWCAP)
0166 PPC_LNX_FEATURE("arch_2_07","CPU supports ISA 207 (eg, POWER8)",PPCF_ARCH207,0x80000000,PPC_FAWORD_HWCAP2)
0167 PPC_LNX_FEATURE("arch_3_00","CPU supports ISA 30 (eg, POWER9)",PPCF_ARCH30,0x00800000,PPC_FAWORD_HWCAP2)
0168 PPC_LNX_FEATURE("arch_3_1","CPU supports ISA 31 (eg, POWER10)",PPCF_ARCH31,0x00040000,PPC_FAWORD_HWCAP2)
0169 PPC_LNX_FEATURE("archpmu","CPU supports the set of compatible performance monitoring events",PPCF_ARCHPMU,0x00000040,PPC_FAWORD_HWCAP)
0170 PPC_LNX_FEATURE("booke","CPU supports the Embedded ISA category",PPCF_BOOKE,0x00008000,PPC_FAWORD_HWCAP)
0171 PPC_LNX_FEATURE("cellbe","CPU has a CELL broadband engine",PPCF_CELLBE,0x00010000,PPC_FAWORD_HWCAP)
0172 PPC_LNX_FEATURE("darn","CPU supports the darn (deliver a random number) instruction",PPCF_DARN,0x00200000,PPC_FAWORD_HWCAP2)
0173 PPC_LNX_FEATURE("dfp","CPU has a decimal floating point unit",PPCF_DFP,0x00000400,PPC_FAWORD_HWCAP)
0174 PPC_LNX_FEATURE("dscr","CPU supports the data stream control register",PPCF_DSCR,0x20000000,PPC_FAWORD_HWCAP2)
0175 PPC_LNX_FEATURE("ebb","CPU supports event base branching",PPCF_EBB,0x10000000,PPC_FAWORD_HWCAP2)
0176 PPC_LNX_FEATURE("efpdouble","CPU has a SPE double precision floating point unit",PPCF_EFPDOUBLE,0x00200000,PPC_FAWORD_HWCAP)
0177 PPC_LNX_FEATURE("efpsingle","CPU has a SPE single precision floating point unit",PPCF_EFPSINGLE,0x00400000,PPC_FAWORD_HWCAP)
0178 PPC_LNX_FEATURE("fpu","CPU has a floating point unit",PPCF_FPU,0x08000000,PPC_FAWORD_HWCAP)
0179 PPC_LNX_FEATURE("htm","CPU has hardware transaction memory instructions",PPCF_HTM,0x40000000,PPC_FAWORD_HWCAP2)
0180 PPC_LNX_FEATURE("htm-nosc","Kernel aborts hardware transactions when a syscall is made",PPCF_HTM_NOSC,0x01000000,PPC_FAWORD_HWCAP2)
0181 PPC_LNX_FEATURE("htm-no-suspend","CPU supports hardware transaction memory but does not support the tsuspend instruction.",PPCF_HTM_NO_SUSPEND,0x00080000,PPC_FAWORD_HWCAP2)
0182 PPC_LNX_FEATURE("ic_snoop","CPU supports icache snooping capabilities",PPCF_IC_SNOOP,0x00002000,PPC_FAWORD_HWCAP)
0183 PPC_LNX_FEATURE("ieee128","CPU supports 128-bit IEEE binary floating point instructions",PPCF_IEEE128,0x00400000,PPC_FAWORD_HWCAP2)
0184 PPC_LNX_FEATURE("isel","CPU supports the integer select instruction",PPCF_ISEL,0x08000000,PPC_FAWORD_HWCAP2)
0185 PPC_LNX_FEATURE("mma","CPU supports the matrix-multiply assist instructions",PPCF_MMA,0x00020000,PPC_FAWORD_HWCAP2)
0186 PPC_LNX_FEATURE("mmu","CPU has a memory management unit",PPCF_MMU,0x04000000,PPC_FAWORD_HWCAP)
0187 PPC_LNX_FEATURE("notb","CPU does not have a timebase (eg, 601 and 403gx)",PPCF_NOTB,0x00100000,PPC_FAWORD_HWCAP)
0188 PPC_LNX_FEATURE("pa6t","CPU supports the PA Semi 6T CORE ISA",PPCF_PA6T,0x00000800,PPC_FAWORD_HWCAP)
0189 PPC_LNX_FEATURE("power4","CPU supports ISA 200 (eg, POWER4)",PPCF_POWER4,0x00080000,PPC_FAWORD_HWCAP)
0190 PPC_LNX_FEATURE("power5","CPU supports ISA 202 (eg, POWER5)",PPCF_POWER5,0x00040000,PPC_FAWORD_HWCAP)
0191 PPC_LNX_FEATURE("power5+","CPU supports ISA 203 (eg, POWER5+)",PPCF_POWER5P,0x00020000,PPC_FAWORD_HWCAP)
0192 PPC_LNX_FEATURE("power6x","CPU supports ISA 205 (eg, POWER6) extended opcodes mffgpr and mftgpr.",PPCF_POWER6X,0x00000200,PPC_FAWORD_HWCAP)
0193 PPC_LNX_FEATURE("ppc32","CPU supports 32-bit mode execution",PPCF_PPC32,0x80000000,PPC_FAWORD_HWCAP)
0194 PPC_LNX_FEATURE("ppc601","CPU supports the old POWER ISA (eg, 601)",PPCF_PPC601,0x20000000,PPC_FAWORD_HWCAP)
0195 PPC_LNX_FEATURE("ppc64","CPU supports 64-bit mode execution",PPCF_PPC64,0x40000000,PPC_FAWORD_HWCAP)
0196 PPC_LNX_FEATURE("ppcle","CPU supports a little-endian mode that uses address swizzling",PPCF_PPCLE,0x00000001,PPC_FAWORD_HWCAP)
0197 PPC_LNX_FEATURE("scv","Kernel supports system call vectored",PPCF_SCV,0x00100000,PPC_FAWORD_HWCAP2)
0198 PPC_LNX_FEATURE("smt","CPU support simultaneous multi-threading",PPCF_SMT,0x00004000,PPC_FAWORD_HWCAP)
0199 PPC_LNX_FEATURE("spe","CPU has a signal processing extension unit",PPCF_SPE,0x00800000,PPC_FAWORD_HWCAP)
0200 PPC_LNX_FEATURE("tar","CPU supports the target address register",PPCF_TAR,0x04000000,PPC_FAWORD_HWCAP2)
0201 PPC_LNX_FEATURE("true_le","CPU supports true little-endian mode",PPCF_TRUE_LE,0x00000002,PPC_FAWORD_HWCAP)
0202 PPC_LNX_FEATURE("ucache","CPU has unified I/D cache",PPCF_UCACHE,0x01000000,PPC_FAWORD_HWCAP)
0203 PPC_LNX_FEATURE("vcrypto","CPU supports the vector cryptography instructions",PPCF_VCRYPTO,0x02000000,PPC_FAWORD_HWCAP2)
0204 PPC_LNX_FEATURE("vsx","CPU supports the vector-scalar extension",PPCF_VSX,0x00000080,PPC_FAWORD_HWCAP)
0205 
0206 #ifdef PPC_LNX_DEFINE_OFFSETS
0207 #  define PPC_HWCAP_OFFSET_LE32 -0x703C
0208 #  define PPC_HWCAP_OFFSET_LE64 -0x7064
0209 #  define PPC_HWCAP_OFFSET_BE32 -0x7040
0210 #  define PPC_HWCAP_OFFSET_BE64 -0x7068
0211 #  define PPC_HWCAP2_OFFSET_LE32 -0x7040
0212 #  define PPC_HWCAP2_OFFSET_LE64 -0x7068
0213 #  define PPC_HWCAP2_OFFSET_BE32 -0x703C
0214 #  define PPC_HWCAP2_OFFSET_BE64 -0x7064
0215 #  define PPC_CPUID_OFFSET_LE32 -0x7034
0216 #  define PPC_CPUID_OFFSET_LE64 -0x705C
0217 #  define PPC_CPUID_OFFSET_BE32 -0x7034
0218 #  define PPC_CPUID_OFFSET_BE64 -0x705C
0219 #endif
0220 #undef PPC_LNX_DEFINE_OFFSETS
0221 #undef PPC_LNX_FEATURE
0222 
0223 // PPC features on AIX
0224 //
0225 // Definition of the following values are found in the AIX header
0226 // file: </usr/include/sys/systemcfg.h>.
0227 #ifndef AIX_POWERPC_USE_SYS_CONF
0228   #define AIX_POWERPC_USE_SYS_CONF
0229   #define AIX_SYSCON_CACHE_IDX 5
0230   #define AIX_SYSCON_SMT_IDX 44
0231   #define AIX_SYSCON_VMX_IDX 46
0232   #define AIX_SYSCON_DFP_IDX  53
0233 
0234   #define SYS_CALL_TM_VER   59
0235   #define SYS_CALL_MMA_VER  62
0236 #endif
0237 
0238 #ifndef PPC_AIX_FEATURE
0239 #define PPC_AIX_FEATURE(NAME,DESC,SUPPORT_METHOD,INDEX,MASK,COMPARE_OP,VALUE)
0240 #endif
0241 
0242 PPC_AIX_FEATURE("4xxmac","4xx CPU has a Multiply Accumulator",BUILTIN_PPC_FALSE,0,0,CmpInst::Predicate(),0)
0243 PPC_AIX_FEATURE("altivec","CPU has a SIMD/Vector Unit",USE_SYS_CONF,AIX_SYSCON_VMX_IDX,0,ICmpInst::ICMP_UGT,0)
0244 PPC_AIX_FEATURE("arch_2_05","CPU supports ISA 205 (eg, POWER6)",BUILTIN_PPC_TRUE,0,0,CmpInst::Predicate(),0)
0245 PPC_AIX_FEATURE("arch_2_06","CPU supports ISA 206 (eg, POWER7)",USE_SYS_CONF,AIX_SYSCON_IMPL_IDX,0,ICmpInst::ICMP_UGE,AIX_PPC7_VALUE)
0246 PPC_AIX_FEATURE("arch_2_07","CPU supports ISA 207 (eg, POWER8)",USE_SYS_CONF,AIX_SYSCON_IMPL_IDX,0,ICmpInst::ICMP_UGE,AIX_PPC8_VALUE)
0247 PPC_AIX_FEATURE("arch_3_00","CPU supports ISA 30 (eg, POWER9)", USE_SYS_CONF,AIX_SYSCON_IMPL_IDX,0,ICmpInst::ICMP_UGE,AIX_PPC9_VALUE)
0248 PPC_AIX_FEATURE("arch_3_1","CPU supports ISA 31 (eg, POWER10)", USE_SYS_CONF,AIX_SYSCON_IMPL_IDX,0,ICmpInst::ICMP_UGE,AIX_PPC10_VALUE)
0249 PPC_AIX_FEATURE("booke","CPU supports the Embedded ISA category",BUILTIN_PPC_FALSE,0,0,CmpInst::Predicate(),0)
0250 PPC_AIX_FEATURE("cellbe","CPU has a CELL broadband engine",BUILTIN_PPC_FALSE,0,0,CmpInst::Predicate(),0)
0251 PPC_AIX_FEATURE("darn","CPU supports the darn (deliver a random number) instruction",USE_SYS_CONF,AIX_SYSCON_IMPL_IDX,0,ICmpInst::ICMP_UGE,AIX_PPC9_VALUE)
0252 PPC_AIX_FEATURE("dfp","CPU has a decimal floating point unit",USE_SYS_CONF,AIX_SYSCON_DFP_IDX,0,ICmpInst::ICMP_NE,0)
0253 PPC_AIX_FEATURE("dscr","CPU supports the data stream control register",USE_SYS_CONF,AIX_SYSCON_IMPL_IDX,0,ICmpInst::ICMP_UGE,AIX_PPC8_VALUE)
0254 PPC_AIX_FEATURE("ebb","CPU supports event base branching",USE_SYS_CONF,AIX_SYSCON_IMPL_IDX,0,ICmpInst::ICMP_UGE,AIX_PPC8_VALUE)
0255 PPC_AIX_FEATURE("efpsingle","CPU has a SPE single precision floating point unit",BUILTIN_PPC_FALSE,0,0,CmpInst::Predicate(),0)
0256 PPC_AIX_FEATURE("efpdouble","CPU has a SPE double precision floating point unit",BUILTIN_PPC_FALSE,0,0,CmpInst::Predicate(),0)
0257 PPC_AIX_FEATURE("fpu","CPU has a floating point unit",BUILTIN_PPC_TRUE,0,0,CmpInst::Predicate(),0)
0258 PPC_AIX_FEATURE("htm","CPU has hardware transaction memory instructions",SYS_CALL,SYS_CALL_TM_VER,0,ICmpInst::ICMP_UGT,0)
0259 PPC_AIX_FEATURE("isel","CPU supports the integer select instruction",BUILTIN_PPC_TRUE,0,0,CmpInst::Predicate(),0)
0260 PPC_AIX_FEATURE("mma","CPU supports the matrix-multiply assist instructions",SYS_CALL,SYS_CALL_MMA_VER,0,ICmpInst::ICMP_UGT,0)
0261 PPC_AIX_FEATURE("mmu","CPU has a memory management unit",BUILTIN_PPC_TRUE,0,0,CmpInst::Predicate(),0)
0262 PPC_AIX_FEATURE("pa6t","CPU supports the PA Semi 6T CORE ISA",BUILTIN_PPC_FALSE,0,0,CmpInst::Predicate(),0)
0263 PPC_AIX_FEATURE("power4","CPU supports ISA 200 (eg, POWER4)",BUILTIN_PPC_TRUE,0,0,CmpInst::Predicate(),0)
0264 PPC_AIX_FEATURE("power5","CPU supports ISA 202 (eg, POWER5)",BUILTIN_PPC_TRUE,0,0,CmpInst::Predicate(),0)
0265 PPC_AIX_FEATURE("power5+","CPU supports ISA 203 (eg, POWER5+)",BUILTIN_PPC_TRUE,0,0,CmpInst::Predicate(),0)
0266 PPC_AIX_FEATURE("power6x","CPU supports ISA 205 (eg, POWER6)",BUILTIN_PPC_FALSE,0,0,CmpInst::Predicate(),0)
0267 PPC_AIX_FEATURE("ppc32","CPU supports 32-bit mode execution",BUILTIN_PPC_TRUE,0,0,CmpInst::Predicate(),0)
0268 PPC_AIX_FEATURE("ppc601","CPU supports the old POWER ISA (eg, 601)",BUILTIN_PPC_FALSE,0,0,CmpInst::Predicate(),0)
0269 PPC_AIX_FEATURE("ppc64","CPU supports 64-bit mode execution",BUILTIN_PPC_TRUE,0,0,CmpInst::Predicate(),0)
0270 PPC_AIX_FEATURE("ppcle","CPU supports a little-endian mode that uses address swizzling",BUILTIN_PPC_FALSE,0,0,CmpInst::Predicate(),0)
0271 PPC_AIX_FEATURE("smt","CPU supports simultaneous multi-threading",USE_SYS_CONF,AIX_SYSCON_SMT_IDX,0x3,ICmpInst::ICMP_EQ,0x3)
0272 PPC_AIX_FEATURE("spe","CPU has a signal processing extension unit",BUILTIN_PPC_FALSE,0,0,CmpInst::Predicate(),0)
0273 PPC_AIX_FEATURE("tar","CPU supports the target address register",USE_SYS_CONF,AIX_SYSCON_IMPL_IDX,0,ICmpInst::ICMP_UGE,AIX_PPC8_VALUE)
0274 PPC_AIX_FEATURE("true_le","CPU supports true little-endian mode",BUILTIN_PPC_TRUE,0,0,CmpInst::Predicate(),0)
0275 PPC_AIX_FEATURE("ucache","CPU has unified I/D cache",USE_SYS_CONF,AIX_SYSCON_CACHE_IDX,0x00000002,ICmpInst::ICMP_EQ,0x00000002)
0276 PPC_AIX_FEATURE("vsx","CPU supports the vector-scalar extension",USE_SYS_CONF,AIX_SYSCON_VMX_IDX,0,ICmpInst::ICMP_UGT,1)
0277 #undef PPC_AIX_FEATURE
0278 
0279 // PPC_SYSTEMCONFIG_TYPE defines the IR data structure of kernel variable
0280 // `_system_configuration`, that is found in the AIX OS header file: </usr/include/sys/systemcfg.h>.
0281 #ifndef PPC_SYSTEMCONFIG_TYPE
0282 #define PPC_SYSTEMCONFIG_TYPE \
0283 Int32Ty, Int32Ty, Int32Ty, Int32Ty, Int32Ty, Int32Ty, \
0284 Int32Ty, Int32Ty, Int32Ty, Int32Ty, Int32Ty, Int32Ty, \
0285 Int32Ty, Int32Ty, Int32Ty, Int32Ty, Int32Ty, Int32Ty, \
0286 Int32Ty, Int32Ty, Int32Ty, Int32Ty, Int32Ty, Int32Ty, \
0287 Int32Ty, Int32Ty, Int32Ty, Int32Ty, Int32Ty, Int32Ty, \
0288 Int32Ty, Int32Ty, Int64Ty, Int32Ty, Int32Ty, Int32Ty, \
0289 Int32Ty, Int64Ty, Int64Ty, Int64Ty, Int64Ty, Int32Ty, \
0290 Int32Ty, Int32Ty, Int32Ty, Int32Ty, Int32Ty, Int64Ty, \
0291 Int32Ty, Int8Ty, Int8Ty, Int8Ty, Int8Ty, Int32Ty, \
0292 Int32Ty, Int16Ty, Int16Ty, llvm::ArrayType::get(Int32Ty,3), Int32Ty
0293 #endif
0294 
0295 #endif // !PPC_TGT_PARSER_UNDEF_MACROS