| 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 |