X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=include%2Fllvm%2FInstruction.def;h=e603c1257ef13f44287fb76d8bae70e8a24998e4;hb=104cf9e02b0ed94d4173869a598af6c6972a8660;hp=d0df5382415d8fb179223455502eea3315f33b87;hpb=99584c69b66550424f7b961bbdfa13cf5f086bfd;p=oota-llvm.git diff --git a/include/llvm/Instruction.def b/include/llvm/Instruction.def index d0df5382415..e603c1257ef 100644 --- a/include/llvm/Instruction.def +++ b/include/llvm/Instruction.def @@ -1,4 +1,11 @@ -//===-- llvm/Instruction.def - File that describes Instructions --*- C++ -*--=// +//===-- llvm/Instruction.def - File that describes Instructions -*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// // // This file contains descriptions of the various LLVM instructions. This is // used as a central place for enumerating the different instructions and @@ -8,8 +15,8 @@ // NOTE: NO INCLUDE GUARD DESIRED! -// Provide definitions of macros so that users of this file don't have to define -// everything to use it... +// Provide definitions of macros so that users of this file do not have to +// define everything to use it... // #ifndef FIRST_TERM_INST #define FIRST_TERM_INST(num) @@ -25,20 +32,6 @@ #define LAST_TERM_INST(num) #endif -#ifndef FIRST_UNARY_INST -#define FIRST_UNARY_INST(num) -#endif -#ifndef HANDLE_UNARY_INST -#ifndef HANDLE_INST -#define HANDLE_UNARY_INST(num, opcode, Class) -#else -#define HANDLE_UNARY_INST(num, opcode, Class) HANDLE_INST(num, opcode, Class) -#endif -#endif -#ifndef LAST_UNARY_INST -#define LAST_UNARY_INST(num) -#endif - #ifndef FIRST_BINARY_INST #define FIRST_BINARY_INST(num) #endif @@ -67,6 +60,20 @@ #define LAST_MEMORY_INST(num) #endif +#ifndef FIRST_CAST_INST +#define FIRST_CAST_INST(num) +#endif +#ifndef HANDLE_CAST_INST +#ifndef HANDLE_INST +#define HANDLE_CAST_INST(num, opcode, Class) +#else +#define HANDLE_CAST_INST(num, opcode, Class) HANDLE_INST(num, opcode, Class) +#endif +#endif +#ifndef LAST_CAST_INST +#define LAST_CAST_INST(num) +#endif + #ifndef FIRST_OTHER_INST #define FIRST_OTHER_INST(num) #endif @@ -87,70 +94,88 @@ // instructions for it to be a well formed basic block. // FIRST_TERM_INST ( 1) -HANDLE_TERM_INST ( 1, Ret , ReturnInst) -HANDLE_TERM_INST ( 2, Br , BranchInst) -HANDLE_TERM_INST ( 3, Switch, SwitchInst) -HANDLE_TERM_INST ( 4, Invoke, InvokeInst) - LAST_TERM_INST ( 4) - -// The single unary instruction... a binary inverse. - FIRST_UNARY_INST ( 5) -HANDLE_UNARY_INST ( 5, Not , GenericUnaryInst) - LAST_UNARY_INST ( 5) +HANDLE_TERM_INST ( 1, Ret , ReturnInst) +HANDLE_TERM_INST ( 2, Br , BranchInst) +HANDLE_TERM_INST ( 3, Switch , SwitchInst) +HANDLE_TERM_INST ( 4, Invoke , InvokeInst) +HANDLE_TERM_INST ( 5, Unwind , UnwindInst) +HANDLE_TERM_INST ( 6, Unreachable, UnreachableInst) + LAST_TERM_INST ( 6) // Standard binary operators... - FIRST_BINARY_INST( 6) -HANDLE_BINARY_INST( 6, Add , GenericBinaryInst) -HANDLE_BINARY_INST( 7, Sub , GenericBinaryInst) -HANDLE_BINARY_INST( 8, Mul , GenericBinaryInst) -HANDLE_BINARY_INST( 9, Div , GenericBinaryInst) -HANDLE_BINARY_INST(10, Rem , GenericBinaryInst) - -// Logical operators... -HANDLE_BINARY_INST(11, And , GenericBinaryInst) -HANDLE_BINARY_INST(12, Or , GenericBinaryInst) -HANDLE_BINARY_INST(13, Xor , GenericBinaryInst) - -// Binary comparison operators... -HANDLE_BINARY_INST(14, SetEQ , SetCondInst) -HANDLE_BINARY_INST(15, SetNE , SetCondInst) -HANDLE_BINARY_INST(16, SetLE , SetCondInst) -HANDLE_BINARY_INST(17, SetGE , SetCondInst) -HANDLE_BINARY_INST(18, SetLT , SetCondInst) -HANDLE_BINARY_INST(19, SetGT , SetCondInst) - LAST_BINARY_INST(19) + FIRST_BINARY_INST( 7) +HANDLE_BINARY_INST( 7, Add , BinaryOperator) +HANDLE_BINARY_INST( 8, FAdd , BinaryOperator) +HANDLE_BINARY_INST( 9, Sub , BinaryOperator) +HANDLE_BINARY_INST(10, FSub , BinaryOperator) +HANDLE_BINARY_INST(11, Mul , BinaryOperator) +HANDLE_BINARY_INST(12, FMul , BinaryOperator) +HANDLE_BINARY_INST(13, UDiv , BinaryOperator) +HANDLE_BINARY_INST(14, SDiv , BinaryOperator) +HANDLE_BINARY_INST(15, FDiv , BinaryOperator) +HANDLE_BINARY_INST(16, URem , BinaryOperator) +HANDLE_BINARY_INST(17, SRem , BinaryOperator) +HANDLE_BINARY_INST(18, FRem , BinaryOperator) + +// Logical operators (integer operands) +HANDLE_BINARY_INST(19, Shl , BinaryOperator) // Shift left (logical) +HANDLE_BINARY_INST(20, LShr , BinaryOperator) // Shift right (logical) +HANDLE_BINARY_INST(21, AShr , BinaryOperator) // Shift right (arithmetic) +HANDLE_BINARY_INST(22, And , BinaryOperator) +HANDLE_BINARY_INST(23, Or , BinaryOperator) +HANDLE_BINARY_INST(24, Xor , BinaryOperator) + LAST_BINARY_INST(24) // Memory operators... - FIRST_MEMORY_INST(20) -HANDLE_MEMORY_INST(20, Malloc, MallocInst) // Heap management instructions -HANDLE_MEMORY_INST(21, Free , FreeInst ) -HANDLE_MEMORY_INST(22, Alloca, AllocaInst) // Stack management -HANDLE_MEMORY_INST(23, Load , LoadInst ) // Memory manipulation instrs -HANDLE_MEMORY_INST(24, Store , StoreInst ) -HANDLE_MEMORY_INST(25, GetElementPtr, GetElementPtrInst) - LAST_MEMORY_INST(25) + FIRST_MEMORY_INST(25) +HANDLE_MEMORY_INST(25, Malloc, MallocInst) // Heap management instructions +HANDLE_MEMORY_INST(26, Free , FreeInst ) +HANDLE_MEMORY_INST(27, Alloca, AllocaInst) // Stack management +HANDLE_MEMORY_INST(28, Load , LoadInst ) // Memory manipulation instrs +HANDLE_MEMORY_INST(29, Store , StoreInst ) +HANDLE_MEMORY_INST(30, GetElementPtr, GetElementPtrInst) + LAST_MEMORY_INST(30) + +// Cast operators ... +// NOTE: The order matters here because CastInst::isEliminableCastPair +// NOTE: (see Instructions.cpp) encodes a table based on this ordering. + FIRST_CAST_INST(31) +HANDLE_CAST_INST(31, Trunc , TruncInst ) // Truncate integers +HANDLE_CAST_INST(32, ZExt , ZExtInst ) // Zero extend integers +HANDLE_CAST_INST(33, SExt , SExtInst ) // Sign extend integers +HANDLE_CAST_INST(34, FPToUI , FPToUIInst ) // floating point -> UInt +HANDLE_CAST_INST(35, FPToSI , FPToSIInst ) // floating point -> SInt +HANDLE_CAST_INST(36, UIToFP , UIToFPInst ) // UInt -> floating point +HANDLE_CAST_INST(37, SIToFP , SIToFPInst ) // SInt -> floating point +HANDLE_CAST_INST(38, FPTrunc , FPTruncInst ) // Truncate floating point +HANDLE_CAST_INST(39, FPExt , FPExtInst ) // Extend floating point +HANDLE_CAST_INST(40, PtrToInt, PtrToIntInst) // Pointer -> Integer +HANDLE_CAST_INST(41, IntToPtr, IntToPtrInst) // Integer -> Pointer +HANDLE_CAST_INST(42, BitCast , BitCastInst ) // Type cast + LAST_CAST_INST(42) // Other operators... - FIRST_OTHER_INST(26) -HANDLE_OTHER_INST(26, PHINode, PHINode ) // PHI node instruction -HANDLE_OTHER_INST(27, Cast , CastInst ) // Type cast -HANDLE_OTHER_INST(28, Call , CallInst ) // Call a function - -HANDLE_OTHER_INST(29, Shl , ShiftInst ) // Shift operations -HANDLE_OTHER_INST(30, Shr , ShiftInst ) - -HANDLE_OTHER_INST(31, UserOp1, Instruction) // May be used internally in a pass -HANDLE_OTHER_INST(32, UserOp2, Instruction) - LAST_OTHER_INST(32) + FIRST_OTHER_INST(43) +HANDLE_OTHER_INST(43, ICmp , ICmpInst ) // Integer comparison instruction +HANDLE_OTHER_INST(44, FCmp , FCmpInst ) // Floating point comparison instr. +HANDLE_OTHER_INST(45, PHI , PHINode ) // PHI node instruction +HANDLE_OTHER_INST(46, Call , CallInst ) // Call a function +HANDLE_OTHER_INST(47, Select , SelectInst ) // select instruction +HANDLE_OTHER_INST(48, UserOp1, Instruction) // May be used internally in a pass +HANDLE_OTHER_INST(49, UserOp2, Instruction) // Internal to passes only +HANDLE_OTHER_INST(50, VAArg , VAArgInst ) // vaarg instruction +HANDLE_OTHER_INST(51, ExtractElement, ExtractElementInst)// extract from vector +HANDLE_OTHER_INST(52, InsertElement, InsertElementInst) // insert into vector +HANDLE_OTHER_INST(53, ShuffleVector, ShuffleVectorInst) // shuffle two vectors. +HANDLE_OTHER_INST(54, ExtractValue, ExtractValueInst)// extract from aggregate +HANDLE_OTHER_INST(55, InsertValue, InsertValueInst) // insert into aggregate + + LAST_OTHER_INST(55) #undef FIRST_TERM_INST #undef HANDLE_TERM_INST #undef LAST_TERM_INST -#undef FIRST_UNARY_INST -#undef HANDLE_UNARY_INST -#undef LAST_UNARY_INST - #undef FIRST_BINARY_INST #undef HANDLE_BINARY_INST #undef LAST_BINARY_INST @@ -159,6 +184,10 @@ HANDLE_OTHER_INST(32, UserOp2, Instruction) #undef HANDLE_MEMORY_INST #undef LAST_MEMORY_INST +#undef FIRST_CAST_INST +#undef HANDLE_CAST_INST +#undef LAST_CAST_INST + #undef FIRST_OTHER_INST #undef HANDLE_OTHER_INST #undef LAST_OTHER_INST