PPCISelLowering.h (193574) | PPCISelLowering.h (195340) |
---|---|
1//===-- PPCISelLowering.h - PPC32 DAG Lowering Interface --------*- C++ -*-===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// --- 68 unchanged lines hidden (view full) --- 77 /// EXTSW_32 - This is the EXTSW instruction for use with "32-bit" 78 /// registers. 79 EXTSW_32, 80 81 /// STD_32 - This is the STD instruction for use with "32-bit" registers. 82 STD_32, 83 84 /// CALL - A direct function call. | 1//===-- PPCISelLowering.h - PPC32 DAG Lowering Interface --------*- C++ -*-===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// --- 68 unchanged lines hidden (view full) --- 77 /// EXTSW_32 - This is the EXTSW instruction for use with "32-bit" 78 /// registers. 79 EXTSW_32, 80 81 /// STD_32 - This is the STD instruction for use with "32-bit" registers. 82 STD_32, 83 84 /// CALL - A direct function call. |
85 CALL_Macho, CALL_ELF, | 85 CALL_Darwin, CALL_SVR4, |
86 87 /// CHAIN,FLAG = MTCTR(VAL, CHAIN[, INFLAG]) - Directly corresponds to a 88 /// MTCTR instruction. 89 MTCTR, 90 91 /// CHAIN,FLAG = BCTRL(CHAIN, INFLAG) - Directly corresponds to a 92 /// BCTRL instruction. | 86 87 /// CHAIN,FLAG = MTCTR(VAL, CHAIN[, INFLAG]) - Directly corresponds to a 88 /// MTCTR instruction. 89 MTCTR, 90 91 /// CHAIN,FLAG = BCTRL(CHAIN, INFLAG) - Directly corresponds to a 92 /// BCTRL instruction. |
93 BCTRL_Macho, BCTRL_ELF, | 93 BCTRL_Darwin, BCTRL_SVR4, |
94 95 /// Return with a flag operand, matched by 'blr' 96 RET_FLAG, 97 98 /// R32 = MFCR(CRREG, INFLAG) - Represents the MFCR/MFOCRF instructions. 99 /// This copies the bits corresponding to the specified CRREG into the 100 /// resultant GPR. Bits corresponding to other CR regs are undefined. 101 MFCR, --- 116 unchanged lines hidden (view full) --- 218 class PPCTargetLowering : public TargetLowering { 219 int VarArgsFrameIndex; // FrameIndex for start of varargs area. 220 int VarArgsStackOffset; // StackOffset for start of stack 221 // arguments. 222 unsigned VarArgsNumGPR; // Index of the first unused integer 223 // register for parameter passing. 224 unsigned VarArgsNumFPR; // Index of the first unused double 225 // register for parameter passing. | 94 95 /// Return with a flag operand, matched by 'blr' 96 RET_FLAG, 97 98 /// R32 = MFCR(CRREG, INFLAG) - Represents the MFCR/MFOCRF instructions. 99 /// This copies the bits corresponding to the specified CRREG into the 100 /// resultant GPR. Bits corresponding to other CR regs are undefined. 101 MFCR, --- 116 unchanged lines hidden (view full) --- 218 class PPCTargetLowering : public TargetLowering { 219 int VarArgsFrameIndex; // FrameIndex for start of varargs area. 220 int VarArgsStackOffset; // StackOffset for start of stack 221 // arguments. 222 unsigned VarArgsNumGPR; // Index of the first unused integer 223 // register for parameter passing. 224 unsigned VarArgsNumFPR; // Index of the first unused double 225 // register for parameter passing. |
226 int ReturnAddrIndex; // FrameIndex for return slot. | |
227 const PPCSubtarget &PPCSubTarget; 228 public: 229 explicit PPCTargetLowering(PPCTargetMachine &TM); 230 231 /// getTargetNodeName() - This method returns the name of a target specific 232 /// DAG node. 233 virtual const char *getTargetNodeName(unsigned Opcode) const; 234 --- 96 unchanged lines hidden (view full) --- 331 /// IsEligibleForTailCallOptimization - Check whether the call is eligible 332 /// for tail call optimization. Target which want to do tail call 333 /// optimization should implement this function. 334 virtual bool IsEligibleForTailCallOptimization(CallSDNode *TheCall, 335 SDValue Ret, 336 SelectionDAG &DAG) const; 337 338 virtual bool isOffsetFoldingLegal(const GlobalAddressSDNode *GA) const; | 226 const PPCSubtarget &PPCSubTarget; 227 public: 228 explicit PPCTargetLowering(PPCTargetMachine &TM); 229 230 /// getTargetNodeName() - This method returns the name of a target specific 231 /// DAG node. 232 virtual const char *getTargetNodeName(unsigned Opcode) const; 233 --- 96 unchanged lines hidden (view full) --- 330 /// IsEligibleForTailCallOptimization - Check whether the call is eligible 331 /// for tail call optimization. Target which want to do tail call 332 /// optimization should implement this function. 333 virtual bool IsEligibleForTailCallOptimization(CallSDNode *TheCall, 334 SDValue Ret, 335 SelectionDAG &DAG) const; 336 337 virtual bool isOffsetFoldingLegal(const GlobalAddressSDNode *GA) const; |
338 339 virtual MVT getOptimalMemOpType(uint64_t Size, unsigned Align, 340 bool isSrcConst, bool isSrcStr, 341 SelectionDAG &DAG) const; |
|
339 | 342 |
343 /// getFunctionAlignment - Return the Log2 alignment of this function. 344 virtual unsigned getFunctionAlignment(const Function *F) const; 345 |
|
340 private: 341 SDValue getFramePointerFrameIndex(SelectionDAG & DAG) const; 342 SDValue getReturnAddrFrameIndex(SelectionDAG & DAG) const; 343 344 SDValue EmitTailCallLoadFPAndRetAddr(SelectionDAG & DAG, 345 int SPDiff, 346 SDValue Chain, 347 SDValue &LROpOut, 348 SDValue &FPOpOut, | 346 private: 347 SDValue getFramePointerFrameIndex(SelectionDAG & DAG) const; 348 SDValue getReturnAddrFrameIndex(SelectionDAG & DAG) const; 349 350 SDValue EmitTailCallLoadFPAndRetAddr(SelectionDAG & DAG, 351 int SPDiff, 352 SDValue Chain, 353 SDValue &LROpOut, 354 SDValue &FPOpOut, |
355 bool isDarwinABI, |
|
349 DebugLoc dl); 350 351 SDValue LowerRETURNADDR(SDValue Op, SelectionDAG &DAG); 352 SDValue LowerFRAMEADDR(SDValue Op, SelectionDAG &DAG); 353 SDValue LowerConstantPool(SDValue Op, SelectionDAG &DAG); 354 SDValue LowerGlobalAddress(SDValue Op, SelectionDAG &DAG); 355 SDValue LowerGlobalTLSAddress(SDValue Op, SelectionDAG &DAG); 356 SDValue LowerJumpTable(SDValue Op, SelectionDAG &DAG); 357 SDValue LowerSETCC(SDValue Op, SelectionDAG &DAG); 358 SDValue LowerTRAMPOLINE(SDValue Op, SelectionDAG &DAG); 359 SDValue LowerVASTART(SDValue Op, SelectionDAG &DAG, 360 int VarArgsFrameIndex, int VarArgsStackOffset, 361 unsigned VarArgsNumGPR, unsigned VarArgsNumFPR, 362 const PPCSubtarget &Subtarget); 363 SDValue LowerVAARG(SDValue Op, SelectionDAG &DAG, int VarArgsFrameIndex, 364 int VarArgsStackOffset, unsigned VarArgsNumGPR, 365 unsigned VarArgsNumFPR, const PPCSubtarget &Subtarget); | 356 DebugLoc dl); 357 358 SDValue LowerRETURNADDR(SDValue Op, SelectionDAG &DAG); 359 SDValue LowerFRAMEADDR(SDValue Op, SelectionDAG &DAG); 360 SDValue LowerConstantPool(SDValue Op, SelectionDAG &DAG); 361 SDValue LowerGlobalAddress(SDValue Op, SelectionDAG &DAG); 362 SDValue LowerGlobalTLSAddress(SDValue Op, SelectionDAG &DAG); 363 SDValue LowerJumpTable(SDValue Op, SelectionDAG &DAG); 364 SDValue LowerSETCC(SDValue Op, SelectionDAG &DAG); 365 SDValue LowerTRAMPOLINE(SDValue Op, SelectionDAG &DAG); 366 SDValue LowerVASTART(SDValue Op, SelectionDAG &DAG, 367 int VarArgsFrameIndex, int VarArgsStackOffset, 368 unsigned VarArgsNumGPR, unsigned VarArgsNumFPR, 369 const PPCSubtarget &Subtarget); 370 SDValue LowerVAARG(SDValue Op, SelectionDAG &DAG, int VarArgsFrameIndex, 371 int VarArgsStackOffset, unsigned VarArgsNumGPR, 372 unsigned VarArgsNumFPR, const PPCSubtarget &Subtarget); |
366 SDValue LowerFORMAL_ARGUMENTS(SDValue Op, SelectionDAG &DAG, 367 int &VarArgsFrameIndex, 368 int &VarArgsStackOffset, 369 unsigned &VarArgsNumGPR, 370 unsigned &VarArgsNumFPR, 371 const PPCSubtarget &Subtarget); 372 SDValue LowerCALL(SDValue Op, SelectionDAG &DAG, 373 const PPCSubtarget &Subtarget, TargetMachine &TM); | 373 SDValue LowerFORMAL_ARGUMENTS_SVR4(SDValue Op, SelectionDAG &DAG, 374 int &VarArgsFrameIndex, 375 int &VarArgsStackOffset, 376 unsigned &VarArgsNumGPR, 377 unsigned &VarArgsNumFPR, 378 const PPCSubtarget &Subtarget); 379 SDValue LowerFORMAL_ARGUMENTS_Darwin(SDValue Op, SelectionDAG &DAG, 380 int &VarArgsFrameIndex, 381 const PPCSubtarget &Subtarget); 382 SDValue LowerCALL_Darwin(SDValue Op, SelectionDAG &DAG, 383 const PPCSubtarget &Subtarget, TargetMachine &TM); 384 SDValue LowerCALL_SVR4(SDValue Op, SelectionDAG &DAG, 385 const PPCSubtarget &Subtarget, TargetMachine &TM); |
374 SDValue LowerRET(SDValue Op, SelectionDAG &DAG, TargetMachine &TM); 375 SDValue LowerSTACKRESTORE(SDValue Op, SelectionDAG &DAG, 376 const PPCSubtarget &Subtarget); 377 SDValue LowerDYNAMIC_STACKALLOC(SDValue Op, SelectionDAG &DAG, 378 const PPCSubtarget &Subtarget); 379 SDValue LowerSELECT_CC(SDValue Op, SelectionDAG &DAG); 380 SDValue LowerFP_TO_INT(SDValue Op, SelectionDAG &DAG, DebugLoc dl); 381 SDValue LowerSINT_TO_FP(SDValue Op, SelectionDAG &DAG); --- 13 unchanged lines hidden --- | 386 SDValue LowerRET(SDValue Op, SelectionDAG &DAG, TargetMachine &TM); 387 SDValue LowerSTACKRESTORE(SDValue Op, SelectionDAG &DAG, 388 const PPCSubtarget &Subtarget); 389 SDValue LowerDYNAMIC_STACKALLOC(SDValue Op, SelectionDAG &DAG, 390 const PPCSubtarget &Subtarget); 391 SDValue LowerSELECT_CC(SDValue Op, SelectionDAG &DAG); 392 SDValue LowerFP_TO_INT(SDValue Op, SelectionDAG &DAG, DebugLoc dl); 393 SDValue LowerSINT_TO_FP(SDValue Op, SelectionDAG &DAG); --- 13 unchanged lines hidden --- |