| OLD | NEW |
| 1 //===-- ARMISelLowering.h - ARM DAG Lowering Interface ----------*- C++ -*-===// | 1 //===-- ARMISelLowering.h - ARM DAG Lowering Interface ----------*- C++ -*-===// |
| 2 // | 2 // |
| 3 // The LLVM Compiler Infrastructure | 3 // The LLVM Compiler Infrastructure |
| 4 // | 4 // |
| 5 // This file is distributed under the University of Illinois Open Source | 5 // This file is distributed under the University of Illinois Open Source |
| 6 // License. See LICENSE.TXT for details. | 6 // License. See LICENSE.TXT for details. |
| 7 // | 7 // |
| 8 //===----------------------------------------------------------------------===// | 8 //===----------------------------------------------------------------------===// |
| 9 // | 9 // |
| 10 // This file defines the interfaces that ARM uses to lower LLVM code into a | 10 // This file defines the interfaces that ARM uses to lower LLVM code into a |
| 11 // selection DAG. | 11 // selection DAG. |
| 12 // | 12 // |
| 13 //===----------------------------------------------------------------------===// | 13 //===----------------------------------------------------------------------===// |
| 14 | 14 |
| 15 #ifndef LLVM_LIB_TARGET_ARM_ARMISELLOWERING_H | 15 #ifndef LLVM_LIB_TARGET_ARM_ARMISELLOWERING_H |
| 16 #define LLVM_LIB_TARGET_ARM_ARMISELLOWERING_H | 16 #define LLVM_LIB_TARGET_ARM_ARMISELLOWERING_H |
| 17 | 17 |
| 18 #include "MCTargetDesc/ARMBaseInfo.h" | 18 #include "MCTargetDesc/ARMBaseInfo.h" |
| 19 #include "llvm/CodeGen/CallingConvLower.h" | 19 #include "llvm/CodeGen/CallingConvLower.h" |
| 20 #include "llvm/CodeGen/SelectionDAG.h" | 20 #include "llvm/CodeGen/SelectionDAG.h" |
| 21 #include "llvm/Support/CommandLine.h" // @LOCALMOD |
| 21 #include "llvm/Target/TargetLowering.h" | 22 #include "llvm/Target/TargetLowering.h" |
| 22 #include <vector> | 23 #include <vector> |
| 23 | 24 |
| 24 namespace llvm { | 25 namespace llvm { |
| 25 class ARMConstantPoolValue; | 26 class ARMConstantPoolValue; |
| 26 class ARMSubtarget; | 27 class ARMSubtarget; |
| 27 | 28 |
| 28 namespace ARMISD { | 29 namespace ARMISD { |
| 29 // ARM Specific DAG Nodes | 30 // ARM Specific DAG Nodes |
| 30 enum NodeType { | 31 enum NodeType { |
| 31 // Start the numbering where the builtin ops and target ops leave off. | 32 // Start the numbering where the builtin ops and target ops leave off. |
| 32 FIRST_NUMBER = ISD::BUILTIN_OP_END, | 33 FIRST_NUMBER = ISD::BUILTIN_OP_END, |
| 33 | 34 |
| 34 Wrapper, // Wrapper - A wrapper node for TargetConstantPool, | 35 Wrapper, // Wrapper - A wrapper node for TargetConstantPool, |
| 35 // TargetExternalSymbol, and TargetGlobalAddress. | 36 // TargetExternalSymbol, and TargetGlobalAddress. |
| 36 WrapperPIC, // WrapperPIC - A wrapper node for TargetGlobalAddress in | 37 WrapperPIC, // WrapperPIC - A wrapper node for TargetGlobalAddress in |
| 37 // PIC mode. | 38 // PIC mode. |
| 38 WrapperJT, // WrapperJT - A wrapper node for TargetJumpTable | 39 WrapperJT, // WrapperJT - A wrapper node for TargetJumpTable |
| 39 | 40 // @LOCALMOD-START |
| 41 WrapperJT2, // like WrapperJT but without the UID |
| 42 WrapperGOT, // A Wrapper node for GOT addresses |
| 43 EH_RETURN, // For LowerEH_RETURN |
| 44 // @LOCALMOD-END |
| 40 // Add pseudo op to model memcpy for struct byval. | 45 // Add pseudo op to model memcpy for struct byval. |
| 41 COPY_STRUCT_BYVAL, | 46 COPY_STRUCT_BYVAL, |
| 42 | 47 |
| 43 CALL, // Function call. | 48 CALL, // Function call. |
| 44 CALL_PRED, // Function call that's predicable. | 49 CALL_PRED, // Function call that's predicable. |
| 45 CALL_NOLINK, // Function call with branch not branch-and-link. | 50 CALL_NOLINK, // Function call with branch not branch-and-link. |
| 46 tCALL, // Thumb function call. | 51 tCALL, // Thumb function call. |
| 47 BRCOND, // Conditional branch. | 52 BRCOND, // Conditional branch. |
| 48 BR_JT, // Jumptable branch. | 53 BR_JT, // Jumptable branch. |
| 49 BR2_JT, // Jumptable branch (2 level - jumptable entry is a jump). | 54 BR2_JT, // Jumptable branch (2 level - jumptable entry is a jump). |
| (...skipping 412 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 462 SDValue LowerBlockAddress(SDValue Op, SelectionDAG &DAG) const; | 467 SDValue LowerBlockAddress(SDValue Op, SelectionDAG &DAG) const; |
| 463 SDValue LowerGlobalAddressDarwin(SDValue Op, SelectionDAG &DAG) const; | 468 SDValue LowerGlobalAddressDarwin(SDValue Op, SelectionDAG &DAG) const; |
| 464 SDValue LowerGlobalAddressELF(SDValue Op, SelectionDAG &DAG) const; | 469 SDValue LowerGlobalAddressELF(SDValue Op, SelectionDAG &DAG) const; |
| 465 SDValue LowerGlobalAddressWindows(SDValue Op, SelectionDAG &DAG) const; | 470 SDValue LowerGlobalAddressWindows(SDValue Op, SelectionDAG &DAG) const; |
| 466 SDValue LowerGlobalTLSAddress(SDValue Op, SelectionDAG &DAG) const; | 471 SDValue LowerGlobalTLSAddress(SDValue Op, SelectionDAG &DAG) const; |
| 467 SDValue LowerToTLSGeneralDynamicModel(GlobalAddressSDNode *GA, | 472 SDValue LowerToTLSGeneralDynamicModel(GlobalAddressSDNode *GA, |
| 468 SelectionDAG &DAG) const; | 473 SelectionDAG &DAG) const; |
| 469 SDValue LowerToTLSExecModels(GlobalAddressSDNode *GA, | 474 SDValue LowerToTLSExecModels(GlobalAddressSDNode *GA, |
| 470 SelectionDAG &DAG, | 475 SelectionDAG &DAG, |
| 471 TLSModel::Model model) const; | 476 TLSModel::Model model) const; |
| 477 // @LOCALMOD-START |
| 478 SDValue LowerJumpTable(SDValue Op, SelectionDAG &DAG) const; |
| 479 SDValue LowerEH_RETURN(SDValue Op, SelectionDAG &DAG) const; |
| 480 // @LOCALMOD-END |
| 481 |
| 472 SDValue LowerGLOBAL_OFFSET_TABLE(SDValue Op, SelectionDAG &DAG) const; | 482 SDValue LowerGLOBAL_OFFSET_TABLE(SDValue Op, SelectionDAG &DAG) const; |
| 473 SDValue LowerBR_JT(SDValue Op, SelectionDAG &DAG) const; | 483 SDValue LowerBR_JT(SDValue Op, SelectionDAG &DAG) const; |
| 474 SDValue LowerXALUO(SDValue Op, SelectionDAG &DAG) const; | 484 SDValue LowerXALUO(SDValue Op, SelectionDAG &DAG) const; |
| 475 SDValue LowerSELECT(SDValue Op, SelectionDAG &DAG) const; | 485 SDValue LowerSELECT(SDValue Op, SelectionDAG &DAG) const; |
| 476 SDValue LowerSELECT_CC(SDValue Op, SelectionDAG &DAG) const; | 486 SDValue LowerSELECT_CC(SDValue Op, SelectionDAG &DAG) const; |
| 477 SDValue LowerBR_CC(SDValue Op, SelectionDAG &DAG) const; | 487 SDValue LowerBR_CC(SDValue Op, SelectionDAG &DAG) const; |
| 478 SDValue LowerFCOPYSIGN(SDValue Op, SelectionDAG &DAG) const; | 488 SDValue LowerFCOPYSIGN(SDValue Op, SelectionDAG &DAG) const; |
| 479 SDValue LowerRETURNADDR(SDValue Op, SelectionDAG &DAG) const; | 489 SDValue LowerRETURNADDR(SDValue Op, SelectionDAG &DAG) const; |
| 480 SDValue LowerFRAMEADDR(SDValue Op, SelectionDAG &DAG) const; | 490 SDValue LowerFRAMEADDR(SDValue Op, SelectionDAG &DAG) const; |
| 481 SDValue LowerShiftRightParts(SDValue Op, SelectionDAG &DAG) const; | 491 SDValue LowerShiftRightParts(SDValue Op, SelectionDAG &DAG) const; |
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 611 enum NEONModImmType { | 621 enum NEONModImmType { |
| 612 VMOVModImm, | 622 VMOVModImm, |
| 613 VMVNModImm, | 623 VMVNModImm, |
| 614 OtherModImm | 624 OtherModImm |
| 615 }; | 625 }; |
| 616 | 626 |
| 617 namespace ARM { | 627 namespace ARM { |
| 618 FastISel *createFastISel(FunctionLoweringInfo &funcInfo, | 628 FastISel *createFastISel(FunctionLoweringInfo &funcInfo, |
| 619 const TargetLibraryInfo *libInfo); | 629 const TargetLibraryInfo *libInfo); |
| 620 } | 630 } |
| 631 |
| 632 // @LOCALMOD-START |
| 633 extern cl::opt<bool> EnableARMAEABIFunctions; |
| 634 // @LOCALMOD-END |
| 621 } | 635 } |
| 622 | 636 |
| 623 #endif // ARMISELLOWERING_H | 637 #endif // ARMISELLOWERING_H |
| OLD | NEW |