mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-10-31 08:16:47 +00:00 
			
		
		
		
	More CellSPU files... more to follow.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44559 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
		
							
								
								
									
										64
									
								
								lib/Target/CellSPU/SPU.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										64
									
								
								lib/Target/CellSPU/SPU.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,64 @@ | |||||||
|  | //===-- SPU.h - Top-level interface for Cell SPU Target ----------*- C++ -*-==// | ||||||
|  | // | ||||||
|  | //                     The LLVM Compiler Infrastructure | ||||||
|  | // | ||||||
|  | // This file was developed by a team from the Computer Systems Research | ||||||
|  | // Department at The Aerospace Corporation. | ||||||
|  | // | ||||||
|  | // See README.txt for details. | ||||||
|  | // | ||||||
|  | //===----------------------------------------------------------------------===// | ||||||
|  | // | ||||||
|  | // This file contains the entry points for global functions defined in the LLVM | ||||||
|  | // Cell SPU back-end. | ||||||
|  | // | ||||||
|  | //===----------------------------------------------------------------------===// | ||||||
|  |  | ||||||
|  | #ifndef LLVM_TARGET_IBMCELLSPU_H | ||||||
|  | #define LLVM_TARGET_IBMCELLSPU_H | ||||||
|  |  | ||||||
|  | #include <iosfwd> | ||||||
|  |  | ||||||
|  | namespace llvm { | ||||||
|  |   class SPUTargetMachine; | ||||||
|  |   class FunctionPass; | ||||||
|  |  | ||||||
|  |   FunctionPass *createSPUISelDag(SPUTargetMachine &TM); | ||||||
|  |   FunctionPass *createSPUAsmPrinterPass(std::ostream &o, SPUTargetMachine &tm); | ||||||
|  |  | ||||||
|  |   /* Utility functions/predicates/etc used all over the place: */ | ||||||
|  |   //! Predicate test for a signed 10-bit value | ||||||
|  |   /*! | ||||||
|  |     \param Value The input value to be tested | ||||||
|  |  | ||||||
|  |     This predicate tests for a signed 10-bit value, returning the 10-bit value | ||||||
|  |     as a short if true. | ||||||
|  |    */ | ||||||
|  |   inline bool isS10Constant(short Value) { | ||||||
|  |     int SExtValue = ((int) Value << (32 - 10)) >> (32 - 10); | ||||||
|  |     return ((Value > 0 && Value <= (1 << 9) - 1) | ||||||
|  | 	    || (Value < 0 && (short) SExtValue == Value)); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   inline bool isS10Constant(int Value) { | ||||||
|  |     return (Value >= -(1 << 9) && Value <= (1 << 9) - 1); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   inline bool isS10Constant(uint32_t Value) { | ||||||
|  |     return (Value <= ((1 << 9) - 1)); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   inline bool isS10Constant(int64_t Value) { | ||||||
|  |     return (Value >= -(1 << 9) && Value <= (1 << 9) - 1); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   inline bool isS10Constant(uint64_t Value) { | ||||||
|  |     return (Value <= ((1 << 9) - 1)); | ||||||
|  |   } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // Defines symbolic names for the SPU instructions. | ||||||
|  | // | ||||||
|  | #include "SPUGenInstrNames.inc" | ||||||
|  |  | ||||||
|  | #endif /* LLVM_TARGET_IBMCELLSPU_H */ | ||||||
							
								
								
									
										61
									
								
								lib/Target/CellSPU/SPU.td
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								lib/Target/CellSPU/SPU.td
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,61 @@ | |||||||
|  | //===- SPU.td - Describe the STI Cell SPU Target Machine ----*- tablegen -*-===// | ||||||
|  | //  | ||||||
|  | //                     The LLVM Compiler Infrastructure | ||||||
|  | // | ||||||
|  | // | ||||||
|  | // This file was developed by a team from the Computer Systems Research | ||||||
|  | // Department at The Aerospace Corporation. | ||||||
|  | // | ||||||
|  | // See README.txt for details. | ||||||
|  | //===----------------------------------------------------------------------===// | ||||||
|  | // | ||||||
|  | // This is the top level entry point for the STI Cell SPU target machine. | ||||||
|  | // | ||||||
|  | //===----------------------------------------------------------------------===// | ||||||
|  |  | ||||||
|  | // Get the target-independent interfaces which we are implementing. | ||||||
|  | // | ||||||
|  | include "../Target.td" | ||||||
|  |  | ||||||
|  | //===----------------------------------------------------------------------===// | ||||||
|  | // Register File Description | ||||||
|  | //===----------------------------------------------------------------------===// | ||||||
|  |  | ||||||
|  | include "SPURegisterInfo.td" | ||||||
|  |  | ||||||
|  | //===----------------------------------------------------------------------===// | ||||||
|  | // Instruction formats, instructions | ||||||
|  | //===----------------------------------------------------------------------===// | ||||||
|  |  | ||||||
|  | include "SPUNodes.td" | ||||||
|  | include "SPUOperands.td" | ||||||
|  | include "SPUSchedule.td" | ||||||
|  | include "SPUInstrFormats.td" | ||||||
|  | include "SPUInstrInfo.td" | ||||||
|  |  | ||||||
|  | //===----------------------------------------------------------------------===// | ||||||
|  | // Subtarget features: | ||||||
|  | //===----------------------------------------------------------------------===// | ||||||
|  |  | ||||||
|  | def DefaultProc: SubtargetFeature<"", "ProcDirective", "SPU::DEFAULT_PROC", "">; | ||||||
|  | def LargeMemFeature: | ||||||
|  |   SubtargetFeature<"large_mem","UseLargeMem", "true", | ||||||
|  |                    "Use large (>256) LSA memory addressing [default = false]">; | ||||||
|  |  | ||||||
|  | def SPURev0 : Processor<"v0", SPUItineraries, [DefaultProc]>; | ||||||
|  |  | ||||||
|  | //===----------------------------------------------------------------------===// | ||||||
|  | // Calling convention: | ||||||
|  | //===----------------------------------------------------------------------===// | ||||||
|  |  | ||||||
|  | include "SPUCallingConv.td" | ||||||
|  |  | ||||||
|  | // Target: | ||||||
|  |  | ||||||
|  | def SPUInstrInfo : InstrInfo { | ||||||
|  |   let isLittleEndianEncoding = 1; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | def SPU : Target { | ||||||
|  |   let InstructionSet = SPUInstrInfo; | ||||||
|  | } | ||||||
		Reference in New Issue
	
	Block a user