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 292 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
303 /// FLD - This instruction implements an extending load to FP stack slots. | 303 /// FLD - This instruction implements an extending load to FP stack slots. |
304 /// This corresponds to the X86::FLD32m / X86::FLD64m. It takes a chain | 304 /// This corresponds to the X86::FLD32m / X86::FLD64m. It takes a chain |
305 /// operand, ptr to load from, and a ValueType node indicating the type | 305 /// operand, ptr to load from, and a ValueType node indicating the type |
306 /// to load to. | 306 /// to load to. |
307 FLD, | 307 FLD, |
308 | 308 |
309 /// FST - This instruction implements a truncating store to FP stack | 309 /// FST - This instruction implements a truncating store to FP stack |
310 /// slots. This corresponds to the X86::FST32m / X86::FST64m. It takes a | 310 /// slots. This corresponds to the X86::FST32m / X86::FST64m. It takes a |
311 /// chain operand, value to store, address, and a ValueType to store it | 311 /// chain operand, value to store, address, and a ValueType to store it |
312 /// as. | 312 /// as. |
313 FST | 313 FST, |
| 314 |
| 315 /// VAARG_64 - This instruction grabs the address of the next argument |
| 316 /// from a va_list. (reads and modifies the va_list in memory) |
| 317 VAARG_64 |
314 | 318 |
315 // WARNING: Do not add anything in the end unless you want the node to | 319 // WARNING: Do not add anything in the end unless you want the node to |
316 // have memop! In fact, starting from ATOMADD64_DAG all opcodes will be | 320 // have memop! In fact, starting from ATOMADD64_DAG all opcodes will be |
317 // thought as target memory ops! | 321 // thought as target memory ops! |
318 }; | 322 }; |
319 } | 323 } |
320 | 324 |
321 /// Define some predicates that are used for node matching. | 325 /// Define some predicates that are used for node matching. |
322 namespace X86 { | 326 namespace X86 { |
323 /// isPSHUFDMask - Return true if the specified VECTOR_SHUFFLE operand | 327 /// isPSHUFDMask - Return true if the specified VECTOR_SHUFFLE operand |
(...skipping 522 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
846 unsigned immOpcH, | 850 unsigned immOpcH, |
847 bool invSrc = false) const; | 851 bool invSrc = false) const; |
848 | 852 |
849 /// Utility function to emit atomic min and max. It takes the min/max | 853 /// Utility function to emit atomic min and max. It takes the min/max |
850 /// instruction to expand, the associated basic block, and the associated | 854 /// instruction to expand, the associated basic block, and the associated |
851 /// cmov opcode for moving the min or max value. | 855 /// cmov opcode for moving the min or max value. |
852 MachineBasicBlock *EmitAtomicMinMaxWithCustomInserter(MachineInstr *BInstr, | 856 MachineBasicBlock *EmitAtomicMinMaxWithCustomInserter(MachineInstr *BInstr, |
853 MachineBasicBlock *BB, | 857 MachineBasicBlock *BB, |
854 unsigned cmovOpc) const; | 858 unsigned cmovOpc) const; |
855 | 859 |
| 860 // Utility function to emit the low-level va_arg code for X86-64. |
| 861 MachineBasicBlock *EmitVAARG64WithCustomInserter( |
| 862 MachineInstr *MI, |
| 863 MachineBasicBlock *MBB) const; |
| 864 |
856 /// Utility function to emit the xmm reg save portion of va_start. | 865 /// Utility function to emit the xmm reg save portion of va_start. |
857 MachineBasicBlock *EmitVAStartSaveXMMRegsWithCustomInserter( | 866 MachineBasicBlock *EmitVAStartSaveXMMRegsWithCustomInserter( |
858 MachineInstr *BInstr, | 867 MachineInstr *BInstr, |
859 MachineBasicBlock *BB) const; | 868 MachineBasicBlock *BB) const; |
860 | 869 |
861 MachineBasicBlock *EmitLoweredSelect(MachineInstr *I, | 870 MachineBasicBlock *EmitLoweredSelect(MachineInstr *I, |
862 MachineBasicBlock *BB) const; | 871 MachineBasicBlock *BB) const; |
863 | 872 |
864 MachineBasicBlock *EmitLoweredMingwAlloca(MachineInstr *MI, | 873 MachineBasicBlock *EmitLoweredMingwAlloca(MachineInstr *MI, |
865 MachineBasicBlock *BB) const; | 874 MachineBasicBlock *BB) const; |
(...skipping 10 matching lines...) Expand all Loading... |
876 SDValue EmitCmp(SDValue Op0, SDValue Op1, unsigned X86CC, | 885 SDValue EmitCmp(SDValue Op0, SDValue Op1, unsigned X86CC, |
877 SelectionDAG &DAG) const; | 886 SelectionDAG &DAG) const; |
878 }; | 887 }; |
879 | 888 |
880 namespace X86 { | 889 namespace X86 { |
881 FastISel *createFastISel(FunctionLoweringInfo &funcInfo); | 890 FastISel *createFastISel(FunctionLoweringInfo &funcInfo); |
882 } | 891 } |
883 } | 892 } |
884 | 893 |
885 #endif // X86ISELLOWERING_H | 894 #endif // X86ISELLOWERING_H |
OLD | NEW |