/src/build/lib/Target/Sparc/SparcGenSearchableTables.inc
Line | Count | Source (jump to first uncovered line) |
1 | | #ifdef GET_ASITagsList_DECL |
2 | | const ASITag *lookupASITagByEncoding(uint8_t Encoding); |
3 | | const ASITag *lookupASITagByAltName(StringRef AltName); |
4 | | const ASITag *lookupASITagByName(StringRef Name); |
5 | | #endif |
6 | | |
7 | | #ifdef GET_ASITagsList_IMPL |
8 | | constexpr ASITag ASITagsList[] = { |
9 | | { "ASI_N", "ASI_NUCLEUS", 0x4 }, // 0 |
10 | | { "ASI_N_L", "ASI_NUCLEUS_LITTLE", 0xC }, // 1 |
11 | | { "ASI_AIUP", "ASI_AS_IF_USER_PRIMARY", 0x10 }, // 2 |
12 | | { "ASI_AIUS", "ASI_AS_IF_USER_SECONDARY", 0x11 }, // 3 |
13 | | { "ASI_AIUP_L", "ASI_AS_IF_USER_PRIMARY_LITTLE", 0x18 }, // 4 |
14 | | { "ASI_AIUS_L", "ASI_AS_IF_USER_SECONDARY_LITTLE", 0x19 }, // 5 |
15 | | { "ASI_P", "ASI_PRIMARY", 0x80 }, // 6 |
16 | | { "ASI_S", "ASI_SECONDARY", 0x81 }, // 7 |
17 | | { "ASI_PNF", "ASI_PRIMARY_NOFAULT", 0x82 }, // 8 |
18 | | { "ASI_SNF", "ASI_SECONDARY_NOFAULT", 0x83 }, // 9 |
19 | | { "ASI_P_L", "ASI_PRIMARY_LITTLE", 0x88 }, // 10 |
20 | | { "ASI_S_L", "ASI_SECONDARY_LITTLE", 0x89 }, // 11 |
21 | | { "ASI_PNF_L", "ASI_PRIMARY_NOFAULT_LITTLE", 0x8A }, // 12 |
22 | | { "ASI_SNF_L", "ASI_SECONDARY_NOFAULT_LITTLE", 0x8B }, // 13 |
23 | | }; |
24 | | |
25 | 0 | const ASITag *lookupASITagByEncoding(uint8_t Encoding) { |
26 | 0 | struct KeyType { |
27 | 0 | uint8_t Encoding; |
28 | 0 | }; |
29 | 0 | KeyType Key = {Encoding}; |
30 | 0 | auto Table = ArrayRef(ASITagsList); |
31 | 0 | auto Idx = std::lower_bound(Table.begin(), Table.end(), Key, |
32 | 0 | [](const ASITag &LHS, const KeyType &RHS) { |
33 | 0 | if (LHS.Encoding < RHS.Encoding) |
34 | 0 | return true; |
35 | 0 | if (LHS.Encoding > RHS.Encoding) |
36 | 0 | return false; |
37 | 0 | return false; |
38 | 0 | }); |
39 | |
|
40 | 0 | if (Idx == Table.end() || |
41 | 0 | Key.Encoding != Idx->Encoding) |
42 | 0 | return nullptr; |
43 | 0 | return &*Idx; |
44 | 0 | } |
45 | | |
46 | 0 | const ASITag *lookupASITagByAltName(StringRef AltName) { |
47 | 0 | struct IndexType { |
48 | 0 | const char * AltName; |
49 | 0 | unsigned _index; |
50 | 0 | }; |
51 | 0 | static const struct IndexType Index[] = { |
52 | 0 | { "ASI_AS_IF_USER_PRIMARY", 2 }, |
53 | 0 | { "ASI_AS_IF_USER_PRIMARY_LITTLE", 4 }, |
54 | 0 | { "ASI_AS_IF_USER_SECONDARY", 3 }, |
55 | 0 | { "ASI_AS_IF_USER_SECONDARY_LITTLE", 5 }, |
56 | 0 | { "ASI_NUCLEUS", 0 }, |
57 | 0 | { "ASI_NUCLEUS_LITTLE", 1 }, |
58 | 0 | { "ASI_PRIMARY", 6 }, |
59 | 0 | { "ASI_PRIMARY_LITTLE", 10 }, |
60 | 0 | { "ASI_PRIMARY_NOFAULT", 8 }, |
61 | 0 | { "ASI_PRIMARY_NOFAULT_LITTLE", 12 }, |
62 | 0 | { "ASI_SECONDARY", 7 }, |
63 | 0 | { "ASI_SECONDARY_LITTLE", 11 }, |
64 | 0 | { "ASI_SECONDARY_NOFAULT", 9 }, |
65 | 0 | { "ASI_SECONDARY_NOFAULT_LITTLE", 13 }, |
66 | 0 | }; |
67 | |
|
68 | 0 | struct KeyType { |
69 | 0 | std::string AltName; |
70 | 0 | }; |
71 | 0 | KeyType Key = {AltName.upper()}; |
72 | 0 | auto Table = ArrayRef(Index); |
73 | 0 | auto Idx = std::lower_bound(Table.begin(), Table.end(), Key, |
74 | 0 | [](const IndexType &LHS, const KeyType &RHS) { |
75 | 0 | int CmpAltName = StringRef(LHS.AltName).compare(RHS.AltName); |
76 | 0 | if (CmpAltName < 0) return true; |
77 | 0 | if (CmpAltName > 0) return false; |
78 | 0 | return false; |
79 | 0 | }); |
80 | |
|
81 | 0 | if (Idx == Table.end() || |
82 | 0 | Key.AltName != Idx->AltName) |
83 | 0 | return nullptr; |
84 | 0 | return &ASITagsList[Idx->_index]; |
85 | 0 | } |
86 | | |
87 | 0 | const ASITag *lookupASITagByName(StringRef Name) { |
88 | 0 | struct IndexType { |
89 | 0 | const char * Name; |
90 | 0 | unsigned _index; |
91 | 0 | }; |
92 | 0 | static const struct IndexType Index[] = { |
93 | 0 | { "ASI_AIUP", 2 }, |
94 | 0 | { "ASI_AIUP_L", 4 }, |
95 | 0 | { "ASI_AIUS", 3 }, |
96 | 0 | { "ASI_AIUS_L", 5 }, |
97 | 0 | { "ASI_N", 0 }, |
98 | 0 | { "ASI_N_L", 1 }, |
99 | 0 | { "ASI_P", 6 }, |
100 | 0 | { "ASI_PNF", 8 }, |
101 | 0 | { "ASI_PNF_L", 12 }, |
102 | 0 | { "ASI_P_L", 10 }, |
103 | 0 | { "ASI_S", 7 }, |
104 | 0 | { "ASI_SNF", 9 }, |
105 | 0 | { "ASI_SNF_L", 13 }, |
106 | 0 | { "ASI_S_L", 11 }, |
107 | 0 | }; |
108 | |
|
109 | 0 | struct KeyType { |
110 | 0 | std::string Name; |
111 | 0 | }; |
112 | 0 | KeyType Key = {Name.upper()}; |
113 | 0 | auto Table = ArrayRef(Index); |
114 | 0 | auto Idx = std::lower_bound(Table.begin(), Table.end(), Key, |
115 | 0 | [](const IndexType &LHS, const KeyType &RHS) { |
116 | 0 | int CmpName = StringRef(LHS.Name).compare(RHS.Name); |
117 | 0 | if (CmpName < 0) return true; |
118 | 0 | if (CmpName > 0) return false; |
119 | 0 | return false; |
120 | 0 | }); |
121 | |
|
122 | 0 | if (Idx == Table.end() || |
123 | 0 | Key.Name != Idx->Name) |
124 | 0 | return nullptr; |
125 | 0 | return &ASITagsList[Idx->_index]; |
126 | 0 | } |
127 | | #endif |
128 | | |
129 | | #undef GET_ASITagsList_DECL |
130 | | #undef GET_ASITagsList_IMPL |