LLVM API Documentation

SparcV9BurgISel.h

Go to the documentation of this file.
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