LLVM API Documentation
00001 //===-- SparcV9BurgISel.h ---------------------------------------*- C++ -*-===// 00002 // 00003 // The LLVM Compiler Infrastructure 00004 // 00005 // This file was developed by the LLVM research group and is distributed under 00006 // the University of Illinois Open Source License. See LICENSE.TXT for details. 00007 // 00008 //===----------------------------------------------------------------------===// 00009 // 00010 // Global functions exposed by the BURG-based instruction selector 00011 // for the SparcV9 target. 00012 // 00013 //===----------------------------------------------------------------------===// 00014 00015 #ifndef SPARCV9BURGISEL_H 00016 #define SPARCV9BURGISEL_H 00017 00018 //#include "llvm/DerivedTypes.h" 00019 //#include "llvm/Instruction.h" 00020 //#include "SparcV9Internals.h" 00021 00022 namespace llvm { 00023 00024 class Constant; 00025 class Instruction; 00026 class TargetMachine; 00027 class Function; 00028 class Value; 00029 class MachineInstr; 00030 class MachineCodeForInstruction; 00031 class FunctionPass; 00032 00033 /// ConstantMayNotFitInImmedField - Test if this constant may not fit in the 00034 /// immediate field of the machine instructions (probably) generated for this 00035 /// instruction. 00036 /// 00037 bool ConstantMayNotFitInImmedField (const Constant *CV, const Instruction *I); 00038 00039 /// CreateCodeToLoadConst - Create an instruction sequence to put the 00040 /// constant `val' into the virtual register `dest'. `val' may be a Constant 00041 /// or a GlobalValue, viz., the constant address of a global variable or 00042 /// function. The generated instructions are returned in `mvec'. Any temp. 00043 /// registers (TmpInstruction) created are recorded in mcfi. 00044 /// 00045 void CreateCodeToLoadConst (const TargetMachine &target, Function *F, 00046 Value *val, Instruction *dest, std::vector<MachineInstr*> &mvec, 00047 MachineCodeForInstruction &mcfi); 00048 00049 /// createSparcV9BurgInstSelector - Creates and returns a new SparcV9 00050 /// BURG-based instruction selection pass. 00051 /// 00052 FunctionPass *createSparcV9BurgInstSelector(TargetMachine &TM); 00053 00054 } // End llvm namespace 00055 00056 #endif