File indexing completed on 2026-05-10 08:44:28
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014 #ifndef LLVM_SUPPORT_CODEGEN_H
0015 #define LLVM_SUPPORT_CODEGEN_H
0016
0017 #include <cstdint>
0018 #include <optional>
0019
0020 namespace llvm {
0021
0022
0023 namespace Reloc {
0024
0025 enum Model { Static, PIC_, DynamicNoPIC, ROPI, RWPI, ROPI_RWPI };
0026 }
0027
0028
0029 namespace CodeModel {
0030
0031 enum Model { Tiny, Small, Kernel, Medium, Large };
0032 }
0033
0034 namespace PICLevel {
0035
0036 enum Level { NotPIC=0, SmallPIC=1, BigPIC=2 };
0037 }
0038
0039 namespace PIELevel {
0040 enum Level { Default=0, Small=1, Large=2 };
0041 }
0042
0043
0044 namespace TLSModel {
0045 enum Model {
0046 GeneralDynamic,
0047 LocalDynamic,
0048 InitialExec,
0049 LocalExec
0050 };
0051 }
0052
0053
0054 enum class CodeGenOptLevel {
0055 None = 0,
0056 Less = 1,
0057 Default = 2,
0058 Aggressive = 3
0059 };
0060
0061 namespace CodeGenOpt {
0062
0063
0064
0065 inline std::optional<CodeGenOptLevel> getLevel(int OL) {
0066 if (OL < 0 || OL > 3)
0067 return std::nullopt;
0068 return static_cast<CodeGenOptLevel>(OL);
0069 }
0070
0071
0072
0073 inline std::optional<CodeGenOptLevel> parseLevel(char C) {
0074 if (C < '0')
0075 return std::nullopt;
0076 return getLevel(static_cast<int>(C - '0'));
0077 }
0078 }
0079
0080
0081
0082
0083 enum class CodeGenFileType {
0084 AssemblyFile,
0085 ObjectFile,
0086 Null
0087 };
0088
0089
0090 enum class FramePointerKind { None, NonLeaf, All, Reserved };
0091
0092
0093 namespace ZeroCallUsedRegs {
0094 const unsigned ONLY_USED = 1U << 1;
0095 const unsigned ONLY_GPR = 1U << 2;
0096 const unsigned ONLY_ARG = 1U << 3;
0097
0098 enum class ZeroCallUsedRegsKind : unsigned int {
0099
0100 Skip = 1U << 0,
0101
0102 UsedGPRArg = ONLY_USED | ONLY_GPR | ONLY_ARG,
0103
0104 UsedGPR = ONLY_USED | ONLY_GPR,
0105
0106 UsedArg = ONLY_USED | ONLY_ARG,
0107
0108 Used = ONLY_USED,
0109
0110 AllGPRArg = ONLY_GPR | ONLY_ARG,
0111
0112 AllGPR = ONLY_GPR,
0113
0114 AllArg = ONLY_ARG,
0115
0116 All = 0,
0117 };
0118 }
0119
0120 enum class UWTableKind {
0121 None = 0,
0122 Sync = 1,
0123 Async = 2,
0124 Default = 2,
0125 };
0126
0127 enum class FunctionReturnThunksKind : unsigned int {
0128 Keep = 0,
0129 Extern = 1,
0130 Invalid = 2,
0131 };
0132
0133 }
0134
0135 #endif