Mercurial > hg > CbC > CbC_llvm
comparison include/llvm/IR/Instruction.def @ 95:afa8332a0e37 LLVM3.8
LLVM 3.8
author | Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 13 Oct 2015 17:48:58 +0900 |
parents | 95c75e76d11b |
children | 7d135dc70f03 |
comparison
equal
deleted
inserted
replaced
84:f3e34b893a5f | 95:afa8332a0e37 |
---|---|
1 //===-- llvm/Instruction.def - File that describes Instructions -*- C++ -*-===// | 1 //===-- llvm/Instruction.def - File that describes Instructions -*- C++ -*-===// |
2 // | 2 // |
3 // The LLVM Compiler Infrastructure | 3 // The LLVM Compiler Infrastructure |
4 // | 4 // |
5 // This file is distributed under the University of Illinois Open Source | 5 // This file is distributed under the University of Illinois Open Source |
6 // License. See LICENSE.TXT for details. | 6 // License. See LICENSE.TXT for details. |
7 // | 7 // |
8 //===----------------------------------------------------------------------===// | 8 //===----------------------------------------------------------------------===// |
9 // | 9 // |
10 // This file contains descriptions of the various LLVM instructions. This is | 10 // This file contains descriptions of the various LLVM instructions. This is |
11 // used as a central place for enumerating the different instructions and | 11 // used as a central place for enumerating the different instructions and |
12 // should eventually be the place to put comments about the instructions. | 12 // should eventually be the place to put comments about the instructions. |
13 // | 13 // |
14 //===----------------------------------------------------------------------===// | 14 //===----------------------------------------------------------------------===// |
15 | 15 |
16 // NOTE: NO INCLUDE GUARD DESIRED! | 16 // NOTE: NO INCLUDE GUARD DESIRED! |
17 | 17 |
18 // Provide definitions of macros so that users of this file do not have to | 18 // Provide definitions of macros so that users of this file do not have to |
19 // define everything to use it... | 19 // define everything to use it... |
20 // | 20 // |
21 #ifndef FIRST_TERM_INST | 21 #ifndef FIRST_TERM_INST |
22 #define FIRST_TERM_INST(num) | 22 #define FIRST_TERM_INST(num) |
23 #endif | 23 #endif |
85 #endif | 85 #endif |
86 #endif | 86 #endif |
87 #ifndef LAST_OTHER_INST | 87 #ifndef LAST_OTHER_INST |
88 #define LAST_OTHER_INST(num) | 88 #define LAST_OTHER_INST(num) |
89 #endif | 89 #endif |
90 | |
91 | 90 |
92 // Terminator Instructions - These instructions are used to terminate a basic | 91 // Terminator Instructions - These instructions are used to terminate a basic |
93 // block of the program. Every basic block must end with one of these | 92 // block of the program. Every basic block must end with one of these |
94 // instructions for it to be a well formed basic block. | 93 // instructions for it to be a well formed basic block. |
95 // | 94 // |
96 FIRST_TERM_INST ( 1) | 95 FIRST_TERM_INST ( 1) |
97 HANDLE_TERM_INST ( 1, Ret , ReturnInst) | 96 HANDLE_TERM_INST ( 1, Ret , ReturnInst) |
98 HANDLE_TERM_INST ( 2, Br , BranchInst) | 97 HANDLE_TERM_INST ( 2, Br , BranchInst) |
99 HANDLE_TERM_INST ( 3, Switch , SwitchInst) | 98 HANDLE_TERM_INST ( 3, Switch , SwitchInst) |
100 HANDLE_TERM_INST ( 4, IndirectBr , IndirectBrInst) | 99 HANDLE_TERM_INST ( 4, IndirectBr , IndirectBrInst) |
101 HANDLE_TERM_INST ( 5, Invoke , InvokeInst) | 100 HANDLE_TERM_INST ( 5, Invoke , InvokeInst) |
102 HANDLE_TERM_INST ( 6, Resume , ResumeInst) | 101 HANDLE_TERM_INST ( 6, Resume , ResumeInst) |
103 HANDLE_TERM_INST ( 7, Unreachable, UnreachableInst) | 102 HANDLE_TERM_INST ( 7, Unreachable , UnreachableInst) |
104 LAST_TERM_INST ( 7) | 103 HANDLE_TERM_INST ( 8, CleanupRet , CleanupReturnInst) |
104 HANDLE_TERM_INST ( 9, CatchRet , CatchReturnInst) | |
105 HANDLE_TERM_INST (10, CatchPad , CatchPadInst) | |
106 HANDLE_TERM_INST (11, TerminatePad , TerminatePadInst) | |
107 HANDLE_TERM_INST (12, CatchEndPad , CatchEndPadInst) | |
108 HANDLE_TERM_INST (13, CleanupEndPad , CleanupEndPadInst) | |
109 LAST_TERM_INST (13) | |
105 | 110 |
106 // Standard binary operators... | 111 // Standard binary operators... |
107 FIRST_BINARY_INST( 8) | 112 FIRST_BINARY_INST(14) |
108 HANDLE_BINARY_INST( 8, Add , BinaryOperator) | 113 HANDLE_BINARY_INST(14, Add , BinaryOperator) |
109 HANDLE_BINARY_INST( 9, FAdd , BinaryOperator) | 114 HANDLE_BINARY_INST(15, FAdd , BinaryOperator) |
110 HANDLE_BINARY_INST(10, Sub , BinaryOperator) | 115 HANDLE_BINARY_INST(16, Sub , BinaryOperator) |
111 HANDLE_BINARY_INST(11, FSub , BinaryOperator) | 116 HANDLE_BINARY_INST(17, FSub , BinaryOperator) |
112 HANDLE_BINARY_INST(12, Mul , BinaryOperator) | 117 HANDLE_BINARY_INST(18, Mul , BinaryOperator) |
113 HANDLE_BINARY_INST(13, FMul , BinaryOperator) | 118 HANDLE_BINARY_INST(19, FMul , BinaryOperator) |
114 HANDLE_BINARY_INST(14, UDiv , BinaryOperator) | 119 HANDLE_BINARY_INST(20, UDiv , BinaryOperator) |
115 HANDLE_BINARY_INST(15, SDiv , BinaryOperator) | 120 HANDLE_BINARY_INST(21, SDiv , BinaryOperator) |
116 HANDLE_BINARY_INST(16, FDiv , BinaryOperator) | 121 HANDLE_BINARY_INST(22, FDiv , BinaryOperator) |
117 HANDLE_BINARY_INST(17, URem , BinaryOperator) | 122 HANDLE_BINARY_INST(23, URem , BinaryOperator) |
118 HANDLE_BINARY_INST(18, SRem , BinaryOperator) | 123 HANDLE_BINARY_INST(24, SRem , BinaryOperator) |
119 HANDLE_BINARY_INST(19, FRem , BinaryOperator) | 124 HANDLE_BINARY_INST(25, FRem , BinaryOperator) |
120 | 125 |
121 // Logical operators (integer operands) | 126 // Logical operators (integer operands) |
122 HANDLE_BINARY_INST(20, Shl , BinaryOperator) // Shift left (logical) | 127 HANDLE_BINARY_INST(26, Shl , BinaryOperator) // Shift left (logical) |
123 HANDLE_BINARY_INST(21, LShr , BinaryOperator) // Shift right (logical) | 128 HANDLE_BINARY_INST(27, LShr , BinaryOperator) // Shift right (logical) |
124 HANDLE_BINARY_INST(22, AShr , BinaryOperator) // Shift right (arithmetic) | 129 HANDLE_BINARY_INST(28, AShr , BinaryOperator) // Shift right (arithmetic) |
125 HANDLE_BINARY_INST(23, And , BinaryOperator) | 130 HANDLE_BINARY_INST(29, And , BinaryOperator) |
126 HANDLE_BINARY_INST(24, Or , BinaryOperator) | 131 HANDLE_BINARY_INST(30, Or , BinaryOperator) |
127 HANDLE_BINARY_INST(25, Xor , BinaryOperator) | 132 HANDLE_BINARY_INST(31, Xor , BinaryOperator) |
128 LAST_BINARY_INST(25) | 133 LAST_BINARY_INST(31) |
129 | 134 |
130 // Memory operators... | 135 // Memory operators... |
131 FIRST_MEMORY_INST(26) | 136 FIRST_MEMORY_INST(32) |
132 HANDLE_MEMORY_INST(26, Alloca, AllocaInst) // Stack management | 137 HANDLE_MEMORY_INST(32, Alloca, AllocaInst) // Stack management |
133 HANDLE_MEMORY_INST(27, Load , LoadInst ) // Memory manipulation instrs | 138 HANDLE_MEMORY_INST(33, Load , LoadInst ) // Memory manipulation instrs |
134 HANDLE_MEMORY_INST(28, Store , StoreInst ) | 139 HANDLE_MEMORY_INST(34, Store , StoreInst ) |
135 HANDLE_MEMORY_INST(29, GetElementPtr, GetElementPtrInst) | 140 HANDLE_MEMORY_INST(35, GetElementPtr, GetElementPtrInst) |
136 HANDLE_MEMORY_INST(30, Fence , FenceInst ) | 141 HANDLE_MEMORY_INST(36, Fence , FenceInst ) |
137 HANDLE_MEMORY_INST(31, AtomicCmpXchg , AtomicCmpXchgInst ) | 142 HANDLE_MEMORY_INST(37, AtomicCmpXchg , AtomicCmpXchgInst ) |
138 HANDLE_MEMORY_INST(32, AtomicRMW , AtomicRMWInst ) | 143 HANDLE_MEMORY_INST(38, AtomicRMW , AtomicRMWInst ) |
139 LAST_MEMORY_INST(32) | 144 LAST_MEMORY_INST(38) |
140 | 145 |
141 // Cast operators ... | 146 // Cast operators ... |
142 // NOTE: The order matters here because CastInst::isEliminableCastPair | 147 // NOTE: The order matters here because CastInst::isEliminableCastPair |
143 // NOTE: (see Instructions.cpp) encodes a table based on this ordering. | 148 // NOTE: (see Instructions.cpp) encodes a table based on this ordering. |
144 FIRST_CAST_INST(33) | 149 FIRST_CAST_INST(39) |
145 HANDLE_CAST_INST(33, Trunc , TruncInst ) // Truncate integers | 150 HANDLE_CAST_INST(39, Trunc , TruncInst ) // Truncate integers |
146 HANDLE_CAST_INST(34, ZExt , ZExtInst ) // Zero extend integers | 151 HANDLE_CAST_INST(40, ZExt , ZExtInst ) // Zero extend integers |
147 HANDLE_CAST_INST(35, SExt , SExtInst ) // Sign extend integers | 152 HANDLE_CAST_INST(41, SExt , SExtInst ) // Sign extend integers |
148 HANDLE_CAST_INST(36, FPToUI , FPToUIInst ) // floating point -> UInt | 153 HANDLE_CAST_INST(42, FPToUI , FPToUIInst ) // floating point -> UInt |
149 HANDLE_CAST_INST(37, FPToSI , FPToSIInst ) // floating point -> SInt | 154 HANDLE_CAST_INST(43, FPToSI , FPToSIInst ) // floating point -> SInt |
150 HANDLE_CAST_INST(38, UIToFP , UIToFPInst ) // UInt -> floating point | 155 HANDLE_CAST_INST(44, UIToFP , UIToFPInst ) // UInt -> floating point |
151 HANDLE_CAST_INST(39, SIToFP , SIToFPInst ) // SInt -> floating point | 156 HANDLE_CAST_INST(45, SIToFP , SIToFPInst ) // SInt -> floating point |
152 HANDLE_CAST_INST(40, FPTrunc , FPTruncInst ) // Truncate floating point | 157 HANDLE_CAST_INST(46, FPTrunc , FPTruncInst ) // Truncate floating point |
153 HANDLE_CAST_INST(41, FPExt , FPExtInst ) // Extend floating point | 158 HANDLE_CAST_INST(47, FPExt , FPExtInst ) // Extend floating point |
154 HANDLE_CAST_INST(42, PtrToInt, PtrToIntInst) // Pointer -> Integer | 159 HANDLE_CAST_INST(48, PtrToInt, PtrToIntInst) // Pointer -> Integer |
155 HANDLE_CAST_INST(43, IntToPtr, IntToPtrInst) // Integer -> Pointer | 160 HANDLE_CAST_INST(49, IntToPtr, IntToPtrInst) // Integer -> Pointer |
156 HANDLE_CAST_INST(44, BitCast , BitCastInst ) // Type cast | 161 HANDLE_CAST_INST(50, BitCast , BitCastInst ) // Type cast |
157 HANDLE_CAST_INST(45, AddrSpaceCast, AddrSpaceCastInst) // addrspace cast | 162 HANDLE_CAST_INST(51, AddrSpaceCast, AddrSpaceCastInst) // addrspace cast |
158 LAST_CAST_INST(45) | 163 LAST_CAST_INST(51) |
159 | 164 |
160 // Other operators... | 165 // Other operators... |
161 FIRST_OTHER_INST(46) | 166 FIRST_OTHER_INST(52) |
162 HANDLE_OTHER_INST(46, ICmp , ICmpInst ) // Integer comparison instruction | 167 HANDLE_OTHER_INST(52, ICmp , ICmpInst ) // Integer comparison instruction |
163 HANDLE_OTHER_INST(47, FCmp , FCmpInst ) // Floating point comparison instr. | 168 HANDLE_OTHER_INST(53, FCmp , FCmpInst ) // Floating point comparison instr. |
164 HANDLE_OTHER_INST(48, PHI , PHINode ) // PHI node instruction | 169 HANDLE_OTHER_INST(54, PHI , PHINode ) // PHI node instruction |
165 HANDLE_OTHER_INST(49, Call , CallInst ) // Call a function | 170 HANDLE_OTHER_INST(55, Call , CallInst ) // Call a function |
166 HANDLE_OTHER_INST(50, Select , SelectInst ) // select instruction | 171 HANDLE_OTHER_INST(56, Select , SelectInst ) // select instruction |
167 HANDLE_OTHER_INST(51, UserOp1, Instruction) // May be used internally in a pass | 172 HANDLE_OTHER_INST(57, UserOp1, Instruction) // May be used internally in a pass |
168 HANDLE_OTHER_INST(52, UserOp2, Instruction) // Internal to passes only | 173 HANDLE_OTHER_INST(58, UserOp2, Instruction) // Internal to passes only |
169 HANDLE_OTHER_INST(53, VAArg , VAArgInst ) // vaarg instruction | 174 HANDLE_OTHER_INST(59, VAArg , VAArgInst ) // vaarg instruction |
170 HANDLE_OTHER_INST(54, ExtractElement, ExtractElementInst)// extract from vector | 175 HANDLE_OTHER_INST(60, ExtractElement, ExtractElementInst)// extract from vector |
171 HANDLE_OTHER_INST(55, InsertElement, InsertElementInst) // insert into vector | 176 HANDLE_OTHER_INST(61, InsertElement, InsertElementInst) // insert into vector |
172 HANDLE_OTHER_INST(56, ShuffleVector, ShuffleVectorInst) // shuffle two vectors. | 177 HANDLE_OTHER_INST(62, ShuffleVector, ShuffleVectorInst) // shuffle two vectors. |
173 HANDLE_OTHER_INST(57, ExtractValue, ExtractValueInst)// extract from aggregate | 178 HANDLE_OTHER_INST(63, ExtractValue, ExtractValueInst)// extract from aggregate |
174 HANDLE_OTHER_INST(58, InsertValue, InsertValueInst) // insert into aggregate | 179 HANDLE_OTHER_INST(64, InsertValue, InsertValueInst) // insert into aggregate |
175 HANDLE_OTHER_INST(59, LandingPad, LandingPadInst) // Landing pad instruction. | 180 HANDLE_OTHER_INST(65, LandingPad, LandingPadInst) // Landing pad instruction. |
176 LAST_OTHER_INST(59) | 181 HANDLE_OTHER_INST(66, CleanupPad, CleanupPadInst) |
182 LAST_OTHER_INST(66) | |
177 | 183 |
178 #undef FIRST_TERM_INST | 184 #undef FIRST_TERM_INST |
179 #undef HANDLE_TERM_INST | 185 #undef HANDLE_TERM_INST |
180 #undef LAST_TERM_INST | 186 #undef LAST_TERM_INST |
181 | 187 |