ARMISelDAGToDAG.cpp (207618) | ARMISelDAGToDAG.cpp (207631) |
---|---|
1//===-- ARMISelDAGToDAG.cpp - A dag to dag inst selector for ARM ----------===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// --- 13 unchanged lines hidden (view full) --- 22#include "llvm/LLVMContext.h" 23#include "llvm/CodeGen/MachineFrameInfo.h" 24#include "llvm/CodeGen/MachineFunction.h" 25#include "llvm/CodeGen/MachineInstrBuilder.h" 26#include "llvm/CodeGen/SelectionDAG.h" 27#include "llvm/CodeGen/SelectionDAGISel.h" 28#include "llvm/Target/TargetLowering.h" 29#include "llvm/Target/TargetOptions.h" | 1//===-- ARMISelDAGToDAG.cpp - A dag to dag inst selector for ARM ----------===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// --- 13 unchanged lines hidden (view full) --- 22#include "llvm/LLVMContext.h" 23#include "llvm/CodeGen/MachineFrameInfo.h" 24#include "llvm/CodeGen/MachineFunction.h" 25#include "llvm/CodeGen/MachineInstrBuilder.h" 26#include "llvm/CodeGen/SelectionDAG.h" 27#include "llvm/CodeGen/SelectionDAGISel.h" 28#include "llvm/Target/TargetLowering.h" 29#include "llvm/Target/TargetOptions.h" |
30#include "llvm/Support/CommandLine.h" |
|
30#include "llvm/Support/Compiler.h" 31#include "llvm/Support/Debug.h" 32#include "llvm/Support/ErrorHandling.h" 33#include "llvm/Support/raw_ostream.h" 34 35using namespace llvm; 36 | 31#include "llvm/Support/Compiler.h" 32#include "llvm/Support/Debug.h" 33#include "llvm/Support/ErrorHandling.h" 34#include "llvm/Support/raw_ostream.h" 35 36using namespace llvm; 37 |
38static cl::opt<bool> 39UseRegSeq("neon-reg-sequence", cl::Hidden, 40 cl::desc("Use reg_sequence to model ld / st of multiple neon regs")); 41 |
|
37//===--------------------------------------------------------------------===// 38/// ARMDAGToDAGISel - ARM specific code to select ARM machine 39/// instructions for SelectionDAG operations. 40/// 41namespace { 42class ARMDAGToDAGISel : public SelectionDAGISel { 43 ARMBaseTargetMachine &TM; 44 --- 889 unchanged lines hidden (view full) --- 934 935 return NULL; 936} 937 938/// PairDRegs - Insert a pair of double registers into an implicit def to 939/// form a quad register. 940SDNode *ARMDAGToDAGISel::PairDRegs(EVT VT, SDValue V0, SDValue V1) { 941 DebugLoc dl = V0.getNode()->getDebugLoc(); | 42//===--------------------------------------------------------------------===// 43/// ARMDAGToDAGISel - ARM specific code to select ARM machine 44/// instructions for SelectionDAG operations. 45/// 46namespace { 47class ARMDAGToDAGISel : public SelectionDAGISel { 48 ARMBaseTargetMachine &TM; 49 --- 889 unchanged lines hidden (view full) --- 939 940 return NULL; 941} 942 943/// PairDRegs - Insert a pair of double registers into an implicit def to 944/// form a quad register. 945SDNode *ARMDAGToDAGISel::PairDRegs(EVT VT, SDValue V0, SDValue V1) { 946 DebugLoc dl = V0.getNode()->getDebugLoc(); |
942 SDValue Undef = 943 SDValue(CurDAG->getMachineNode(TargetOpcode::IMPLICIT_DEF, dl, VT), 0); | |
944 SDValue SubReg0 = CurDAG->getTargetConstant(ARM::DSUBREG_0, MVT::i32); 945 SDValue SubReg1 = CurDAG->getTargetConstant(ARM::DSUBREG_1, MVT::i32); | 947 SDValue SubReg0 = CurDAG->getTargetConstant(ARM::DSUBREG_0, MVT::i32); 948 SDValue SubReg1 = CurDAG->getTargetConstant(ARM::DSUBREG_1, MVT::i32); |
949 if (UseRegSeq) { 950 const SDValue Ops[] = { V0, SubReg0, V1, SubReg1 }; 951 return CurDAG->getMachineNode(TargetOpcode::REG_SEQUENCE, dl, VT, Ops, 4); 952 } 953 SDValue Undef = 954 SDValue(CurDAG->getMachineNode(TargetOpcode::IMPLICIT_DEF, dl, VT), 0); |
|
946 SDNode *Pair = CurDAG->getMachineNode(TargetOpcode::INSERT_SUBREG, dl, 947 VT, Undef, V0, SubReg0); 948 return CurDAG->getMachineNode(TargetOpcode::INSERT_SUBREG, dl, 949 VT, SDValue(Pair, 0), V1, SubReg1); 950} 951 952/// GetNEONSubregVT - Given a type for a 128-bit NEON vector, return the type 953/// for a 64-bit subregister of the vector. --- 1035 unchanged lines hidden --- | 955 SDNode *Pair = CurDAG->getMachineNode(TargetOpcode::INSERT_SUBREG, dl, 956 VT, Undef, V0, SubReg0); 957 return CurDAG->getMachineNode(TargetOpcode::INSERT_SUBREG, dl, 958 VT, SDValue(Pair, 0), V1, SubReg1); 959} 960 961/// GetNEONSubregVT - Given a type for a 128-bit NEON vector, return the type 962/// for a 64-bit subregister of the vector. --- 1035 unchanged lines hidden --- |