//===-- llvm/Instruction.def - File that describes Instructions -*- C++ -*-===//
// 
//                     The LLVM Compiler Infrastructure
//
// This file was developed by the LLVM research group and 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 
// should eventually be the place to put comments about the instructions.
//
//===----------------------------------------------------------------------===//

// NOTE: NO INCLUDE GUARD DESIRED!

// Provide definitions of macros so that users of this file don't have to define
// everything to use it...
//
#ifndef FIRST_TERM_INST
#define FIRST_TERM_INST(num)
#endif
#ifndef HANDLE_TERM_INST
#ifndef HANDLE_INST
#define HANDLE_TERM_INST(num, opcode, Class)
#else
#define HANDLE_TERM_INST(num, opcode, Class) HANDLE_INST(num, opcode, Class)
#endif
#endif
#ifndef LAST_TERM_INST
#define LAST_TERM_INST(num)
#endif

#ifndef FIRST_BINARY_INST
#define FIRST_BINARY_INST(num)
#endif
#ifndef HANDLE_BINARY_INST
#ifndef HANDLE_INST
#define HANDLE_BINARY_INST(num, opcode, instclass)
#else
#define HANDLE_BINARY_INST(num, opcode, Class) HANDLE_INST(num, opcode, Class)
#endif
#endif
#ifndef LAST_BINARY_INST
#define LAST_BINARY_INST(num)
#endif

#ifndef FIRST_MEMORY_INST
#define FIRST_MEMORY_INST(num)
#endif
#ifndef HANDLE_MEMORY_INST
#ifndef HANDLE_INST
#define HANDLE_MEMORY_INST(num, opcode, Class)
#else
#define HANDLE_MEMORY_INST(num, opcode, Class) HANDLE_INST(num, opcode, Class)
#endif
#endif
#ifndef LAST_MEMORY_INST
#define LAST_MEMORY_INST(num)
#endif

#ifndef FIRST_OTHER_INST
#define FIRST_OTHER_INST(num)
#endif
#ifndef HANDLE_OTHER_INST
#ifndef HANDLE_INST
#define HANDLE_OTHER_INST(num, opcode, Class)
#else
#define HANDLE_OTHER_INST(num, opcode, Class) HANDLE_INST(num, opcode, Class)
#endif
#endif
#ifndef LAST_OTHER_INST
#define LAST_OTHER_INST(num)
#endif


// Terminator Instructions - These instructions are used to terminate a basic
// block of the program.   Every basic block must end with one of these
// 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)
HANDLE_TERM_INST  ( 5, Unwind, UnwindInst)
  LAST_TERM_INST  ( 5)

// Standard binary operators...
 FIRST_BINARY_INST( 6)
HANDLE_BINARY_INST( 6, Add   , BinaryOperator)
HANDLE_BINARY_INST( 7, Sub   , BinaryOperator)
HANDLE_BINARY_INST( 8, Mul   , BinaryOperator)
HANDLE_BINARY_INST( 9, Div   , BinaryOperator)
HANDLE_BINARY_INST(10, Rem   , BinaryOperator)

// Logical operators...
HANDLE_BINARY_INST(11, And   , BinaryOperator)
HANDLE_BINARY_INST(12, Or    , BinaryOperator)
HANDLE_BINARY_INST(13, Xor   , BinaryOperator)

// 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)

// 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)

// Other operators...
 FIRST_OTHER_INST(26)
HANDLE_OTHER_INST(26, PHI    , 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, VANext , VANextInst )  // vanext instruction
HANDLE_OTHER_INST(32, VAArg  , VAArgInst  )  // vaarg  instruction

HANDLE_OTHER_INST(33, UserOp1, Instruction)  // May be used internally in a pass
HANDLE_OTHER_INST(34, UserOp2, Instruction)
  LAST_OTHER_INST(34)

#undef  FIRST_TERM_INST
#undef HANDLE_TERM_INST
#undef   LAST_TERM_INST

#undef  FIRST_BINARY_INST
#undef HANDLE_BINARY_INST
#undef   LAST_BINARY_INST

#undef  FIRST_MEMORY_INST
#undef HANDLE_MEMORY_INST
#undef   LAST_MEMORY_INST

#undef  FIRST_OTHER_INST
#undef HANDLE_OTHER_INST
#undef   LAST_OTHER_INST

#ifdef HANDLE_INST
#undef HANDLE_INST
#endif
