Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(646)

Side by Side Diff: lib/Target/X86/X86ISelLowering.h

Issue 3661004: x86-64 va_arg (Closed) Base URL: http://llvm.org/svn/llvm-project/llvm/trunk/
Patch Set: long double doesn't work how I thought Created 10 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « include/llvm/CodeGen/MachineInstrBuilder.h ('k') | lib/Target/X86/X86ISelLowering.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
OLDNEW
« no previous file with comments | « include/llvm/CodeGen/MachineInstrBuilder.h ('k') | lib/Target/X86/X86ISelLowering.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698