X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FVMCore%2FConstantFold.h;h=e12f27a7cb1ead40b9e0805e7b638937f52dd2c2;hb=4903c15b7d92802a4f0f28928a89bb4c0d5e212f;hp=e8580c429051a5c94cfd0910852bdec44afb873d;hpb=bb90a7aa7bf71311046ccc9f277e5f76cc082722;p=oota-llvm.git diff --git a/lib/VMCore/ConstantFold.h b/lib/VMCore/ConstantFold.h index e8580c42905..e12f27a7cb1 100644 --- a/lib/VMCore/ConstantFold.h +++ b/lib/VMCore/ConstantFold.h @@ -2,8 +2,8 @@ // // 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 is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // @@ -11,15 +11,15 @@ // interfaces are used by the ConstantExpr::get* methods to automatically fold // constants when possible. // -// These operators may return a null object if I don't know how to perform the -// specified operation on the specified constant types. +// These operators may return a null object if they don't know how to perform +// the specified operation on the specified constant types. // //===----------------------------------------------------------------------===// #ifndef CONSTANTFOLDING_H #define CONSTANTFOLDING_H -#include +#include "llvm/ADT/ArrayRef.h" namespace llvm { class Value; @@ -27,16 +27,30 @@ namespace llvm { class Type; // Constant fold various types of instruction... - Constant *ConstantFoldCastInstruction(const Constant *V, const Type *DestTy); - Constant *ConstantFoldSelectInstruction(const Constant *Cond, - const Constant *V1, - const Constant *V2); - Constant *ConstantFoldExtractElementInstruction(const Constant *Val, - const Constant *Idx); - Constant *ConstantFoldBinaryInstruction(unsigned Opcode, const Constant *V1, - const Constant *V2); - Constant *ConstantFoldGetElementPtr(const Constant *C, - const std::vector &IdxList); + Constant *ConstantFoldCastInstruction( + unsigned opcode, ///< The opcode of the cast + Constant *V, ///< The source constant + Type *DestTy ///< The destination type + ); + Constant *ConstantFoldSelectInstruction(Constant *Cond, + Constant *V1, Constant *V2); + Constant *ConstantFoldExtractElementInstruction(Constant *Val, Constant *Idx); + Constant *ConstantFoldInsertElementInstruction(Constant *Val, Constant *Elt, + Constant *Idx); + Constant *ConstantFoldShuffleVectorInstruction(Constant *V1, Constant *V2, + Constant *Mask); + Constant *ConstantFoldExtractValueInstruction(Constant *Agg, + ArrayRef Idxs); + Constant *ConstantFoldInsertValueInstruction(Constant *Agg, Constant *Val, + ArrayRef Idxs); + Constant *ConstantFoldBinaryInstruction(unsigned Opcode, Constant *V1, + Constant *V2); + Constant *ConstantFoldCompareInstruction(unsigned short predicate, + Constant *C1, Constant *C2); + Constant *ConstantFoldGetElementPtr(Constant *C, bool inBounds, + ArrayRef Idxs); + Constant *ConstantFoldGetElementPtr(Constant *C, bool inBounds, + ArrayRef Idxs); } // End llvm namespace #endif