| OLD | NEW |
| 1 //===-- X86ISelLowering.h - X86 DAG Lowering Interface ----------*- C++ -*-===// | 1 //===-- X86ISelLowering.h - X86 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 X86 uses to lower LLVM code into a | 10 // This file defines the interfaces that X86 uses to lower LLVM code into a |
| (...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 230 /// approximation. Note that these typically require refinement | 230 /// approximation. Note that these typically require refinement |
| 231 /// in order to obtain suitable precision. | 231 /// in order to obtain suitable precision. |
| 232 FRSQRT, FRCP, | 232 FRSQRT, FRCP, |
| 233 | 233 |
| 234 // TLSADDR - Thread Local Storage. | 234 // TLSADDR - Thread Local Storage. |
| 235 TLSADDR, | 235 TLSADDR, |
| 236 | 236 |
| 237 // TLSBASEADDR - Thread Local Storage. A call to get the start address | 237 // TLSBASEADDR - Thread Local Storage. A call to get the start address |
| 238 // of the TLS block for the current module. | 238 // of the TLS block for the current module. |
| 239 TLSBASEADDR, | 239 TLSBASEADDR, |
| 240 // @LOCALMOD-BEGIN |
| 241 // TLSADDR_LE - Thread Local Storage. (Local Exec Model) |
| 242 TLSADDR_LE, |
| 243 |
| 244 // TLSADDR_IE - Thread Local Storage. (Initial Exec Model) |
| 245 TLSADDR_IE, |
| 246 |
| 247 // THREAD_POINTER_FROM_GS - Read thread pointer from %gs:0 on x86-32. |
| 248 THREAD_POINTER_FROM_GS, |
| 249 // @LOCALMOD-END |
| 240 | 250 |
| 241 // TLSCALL - Thread Local Storage. When calling to an OS provided | 251 // TLSCALL - Thread Local Storage. When calling to an OS provided |
| 242 // thunk at the address from an earlier relocation. | 252 // thunk at the address from an earlier relocation. |
| 243 TLSCALL, | 253 TLSCALL, |
| 244 | 254 |
| 245 // EH_RETURN - Exception Handling helpers. | 255 // EH_RETURN - Exception Handling helpers. |
| 246 EH_RETURN, | 256 EH_RETURN, |
| 247 | 257 |
| 248 // EH_SJLJ_SETJMP - SjLj exception handling setjmp. | 258 // EH_SJLJ_SETJMP - SjLj exception handling setjmp. |
| 249 EH_SJLJ_SETJMP, | 259 EH_SJLJ_SETJMP, |
| (...skipping 569 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 819 | 829 |
| 820 protected: | 830 protected: |
| 821 std::pair<const TargetRegisterClass*, uint8_t> | 831 std::pair<const TargetRegisterClass*, uint8_t> |
| 822 findRepresentativeClass(MVT VT) const override; | 832 findRepresentativeClass(MVT VT) const override; |
| 823 | 833 |
| 824 private: | 834 private: |
| 825 /// Keep a pointer to the X86Subtarget around so that we can | 835 /// Keep a pointer to the X86Subtarget around so that we can |
| 826 /// make the right decision when generating code for different targets. | 836 /// make the right decision when generating code for different targets. |
| 827 const X86Subtarget *Subtarget; | 837 const X86Subtarget *Subtarget; |
| 828 const DataLayout *TD; | 838 const DataLayout *TD; |
| 839 // @LOCALMOD - This is essentially a revert of r167104 |
| 840 /// X86StackPtr - X86 physical register used as stack ptr. |
| 841 unsigned X86StackPtr; |
| 829 | 842 |
| 830 /// Used to store the TargetOptions so that we don't waste time resetting | 843 /// Used to store the TargetOptions so that we don't waste time resetting |
| 831 /// the operation actions unless we have to. | 844 /// the operation actions unless we have to. |
| 832 TargetOptions TO; | 845 TargetOptions TO; |
| 833 | 846 |
| 834 /// Select between SSE or x87 floating point ops. | 847 /// Select between SSE or x87 floating point ops. |
| 835 /// When SSE is available, use it for f32 operations. | 848 /// When SSE is available, use it for f32 operations. |
| 836 /// When SSE2 is available, use it for f64 operations. | 849 /// When SSE2 is available, use it for f64 operations. |
| 837 bool X86ScalarSSEf32; | 850 bool X86ScalarSSEf32; |
| 838 bool X86ScalarSSEf64; | 851 bool X86ScalarSSEf64; |
| (...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 995 | 1008 |
| 996 MachineBasicBlock *EmitLoweredSelect(MachineInstr *I, | 1009 MachineBasicBlock *EmitLoweredSelect(MachineInstr *I, |
| 997 MachineBasicBlock *BB) const; | 1010 MachineBasicBlock *BB) const; |
| 998 | 1011 |
| 999 MachineBasicBlock *EmitLoweredWinAlloca(MachineInstr *MI, | 1012 MachineBasicBlock *EmitLoweredWinAlloca(MachineInstr *MI, |
| 1000 MachineBasicBlock *BB) const; | 1013 MachineBasicBlock *BB) const; |
| 1001 | 1014 |
| 1002 MachineBasicBlock *EmitLoweredSegAlloca(MachineInstr *MI, | 1015 MachineBasicBlock *EmitLoweredSegAlloca(MachineInstr *MI, |
| 1003 MachineBasicBlock *BB) const; | 1016 MachineBasicBlock *BB) const; |
| 1004 | 1017 |
| 1018 // @LOCALMOD-BEGIN |
| 1019 MachineBasicBlock *EmitLoweredThreadPointerFromGs( |
| 1020 MachineInstr *MI, |
| 1021 MachineBasicBlock *BB) const; |
| 1022 // @LOCALMOD-END |
| 1023 |
| 1005 MachineBasicBlock *EmitLoweredTLSCall(MachineInstr *MI, | 1024 MachineBasicBlock *EmitLoweredTLSCall(MachineInstr *MI, |
| 1006 MachineBasicBlock *BB) const; | 1025 MachineBasicBlock *BB) const; |
| 1007 | 1026 |
| 1008 MachineBasicBlock *emitLoweredTLSAddr(MachineInstr *MI, | 1027 MachineBasicBlock *emitLoweredTLSAddr(MachineInstr *MI, |
| 1009 MachineBasicBlock *BB) const; | 1028 MachineBasicBlock *BB) const; |
| 1010 | 1029 |
| 1011 MachineBasicBlock *emitEHSjLjSetJmp(MachineInstr *MI, | 1030 MachineBasicBlock *emitEHSjLjSetJmp(MachineInstr *MI, |
| 1012 MachineBasicBlock *MBB) const; | 1031 MachineBasicBlock *MBB) const; |
| 1013 | 1032 |
| 1014 MachineBasicBlock *emitEHSjLjLongJmp(MachineInstr *MI, | 1033 MachineBasicBlock *emitEHSjLjLongJmp(MachineInstr *MI, |
| (...skipping 25 matching lines...) Expand all Loading... |
| 1040 unsigned &RefinementSteps) const override; | 1059 unsigned &RefinementSteps) const override; |
| 1041 }; | 1060 }; |
| 1042 | 1061 |
| 1043 namespace X86 { | 1062 namespace X86 { |
| 1044 FastISel *createFastISel(FunctionLoweringInfo &funcInfo, | 1063 FastISel *createFastISel(FunctionLoweringInfo &funcInfo, |
| 1045 const TargetLibraryInfo *libInfo); | 1064 const TargetLibraryInfo *libInfo); |
| 1046 } | 1065 } |
| 1047 } | 1066 } |
| 1048 | 1067 |
| 1049 #endif // X86ISELLOWERING_H | 1068 #endif // X86ISELLOWERING_H |
| OLD | NEW |