Home | History | Annotate | Download | only in IR

Lines Matching full:instruction

1 //===-- llvm/Instruction.h - Instruction class definition -------*- C++ -*-===//
10 // This file contains the declaration of the Instruction class, which is the
31 class Instruction : public User, public ilist_node<Instruction> {
32 void operator=(const Instruction &) LLVM_DELETED_FUNCTION;
33 Instruction(const Instruction &) LLVM_DELETED_FUNCTION;
40 /// indicates whether this instruction has metadata attached to it or not.
45 ~Instruction();
48 /// instruction can only be used by other instructions.
49 Instruction *use_back() { return cast<Instruction>(*use_begin());}
50 const Instruction *use_back() const { return cast<Instruction>(*use_begin());}
66 /// immediately before the specified instruction.
67 void insertBefore(Instruction *InsertPos);
70 /// immediately after the specified instruction.
71 void insertAfter(Instruction *InsertPos);
73 /// moveBefore - Unlink this instruction from its current basic block and
76 void moveBefore(Instruction *MovePos);
82 /// getOpcode() returns a member of one of the enums like Instruction::Add.
126 /// hasMetadata() - Return true if this instruction has any metadata attached
132 /// hasMetadataOtherThanDebugLoc - Return true if this instruction has
138 /// getMetadata - Get the metadata of given kind attached to this Instruction.
145 /// getMetadata - Get the metadata of given kind attached to this Instruction.
152 /// getAllMetadata - Get all metadata attached to this Instruction. The first
174 /// setDebugLoc - Set the debug location information for this instruction.
180 /// Set or clear the unsafe-algebra flag on this instruction, which must be an
185 /// Set or clear the no-nans flag on this instruction, which must be an
190 /// Set or clear the no-infs flag on this instruction, which must be an
195 /// Set or clear the no-signed-zeros flag on this instruction, which must be
200 /// Set or clear the allow-reciprocal flag on this instruction, which must be
206 /// instruction, which must be an operator which supports these flags. See
231 void copyFastMathFlags(const Instruction *I);
253 /// isAssociative - Return true if the instruction is associative:
262 /// isCommutative - Return true if the instruction is commutative:
272 /// isIdempotent - Return true if the instruction is idempotent:
281 /// isNilpotent - Return true if the instruction is nilpotent:
293 /// mayWriteToMemory - Return true if this instruction may modify memory.
297 /// mayReadFromMemory - Return true if this instruction may read memory.
301 /// mayReadOrWriteMemory - Return true if this instruction may read or
308 /// mayThrow - Return true if this instruction may throw an exception.
318 /// mayHaveSideEffects - Return true if the instruction may have side effects.
328 /// clone() - Create a copy of 'this' instruction that is identical in all
330 /// * The instruction has no parent
331 /// * The instruction has no name
333 Instruction *clone() const;
335 /// isIdenticalTo - Return true if the specified instruction is exactly
338 bool isIdenticalTo(const Instruction *I) const;
342 /// under which the instruction's result is undefined.
343 bool isIdenticalToWhenDefined(const Instruction *I) const;
355 /// This function determines if the specified instruction executes the same
360 /// @returns true if the specified instruction is the same operation as
362 /// @brief Determine if one instruction is the same operation as another.
363 bool isSameOperationAs(const Instruction *I, unsigned flags = 0) const;
366 /// instruction in blocks other than the specified block. Note that PHI nodes
384 #include "llvm/IR/Instruction.def"
391 #include "llvm/IR/Instruction.def"
398 #include "llvm/IR/Instruction.def"
405 #include "llvm/IR/Instruction.def"
412 #include "llvm/IR/Instruction.def"
429 friend class SymbolTableListTraits<Instruction, BasicBlock>;
432 // Instruction
433 // SubclassData field of instruction with these members.
445 Instruction(Type *Ty, unsigned iType, Use *Ops, unsigned NumOps,
446 Instruction *InsertBefore = 0);
447 Instruction(Type *Ty, unsigned iType, Use *Ops, unsigned NumOps,
449 virtual Instruction *clone_impl() const = 0;
453 // Instruction* is only 4-byte aligned.
455 class PointerLikeTypeTraits<Instruction*> {
456 typedef Instruction* PT;