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 |