LLVM
8.0.1
|
#include "SystemZISelLowering.h"
#include "SystemZCallingConv.h"
#include "SystemZConstantPoolValue.h"
#include "SystemZMachineFunctionInfo.h"
#include "SystemZTargetMachine.h"
#include "llvm/CodeGen/CallingConvLower.h"
#include "llvm/CodeGen/MachineInstrBuilder.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
#include "llvm/CodeGen/TargetLoweringObjectFileImpl.h"
#include "llvm/IR/Intrinsics.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/KnownBits.h"
#include <cctype>
#include "SystemZGenCallingConv.inc"
Go to the source code of this file.
Classes | |
struct | AddressingMode |
Macros | |
#define | DEBUG_TYPE "systemz-lower" |
#define | CONV(X) |
#define | OPCODE(NAME) case SystemZISD::NAME: return "SystemZISD::" #NAME |
Variables | |
static const Permute | PermuteForms [] |
#define CONV | ( | X | ) |
Referenced by CCMaskForCondCode().
#define DEBUG_TYPE "systemz-lower" |
Definition at line 31 of file SystemZISelLowering.cpp.
#define OPCODE | ( | NAME | ) | case SystemZISD::NAME: return "SystemZISD::" #NAME |
Referenced by llvm::SystemZTargetLowering::getTargetNodeName().
|
static |
Definition at line 1948 of file SystemZISelLowering.cpp.
References llvm::dyn_cast(), E, llvm::ISD::FNEG, llvm::SDNode::getOpcode(), I, N, and reverseCCMask().
Referenced by getCmp().
|
static |
Definition at line 1968 of file SystemZISelLowering.cpp.
References llvm::ISD::Constant, llvm::dyn_cast(), E, llvm::SDNode::getOpcode(), llvm::SDNode::getOperand(), I, llvm::MVT::i32, llvm::MVT::i64, N, llvm::ISD::SHL, llvm::ISD::SIGN_EXTEND_INREG, llvm::SDNode::use_begin(), and llvm::SDNode::use_end().
Referenced by getCmp().
|
static |
Definition at line 2215 of file SystemZISelLowering.cpp.
References llvm::ISD::AND, llvm::SelectionDAG::computeKnownBits(), llvm::dyn_cast(), llvm::BitmaskEnumDetail::Mask(), and llvm::KnownBits::Zero.
Referenced by getCmp().
|
static |
Definition at line 1927 of file SystemZISelLowering.cpp.
References llvm::SystemZ::CCMASK_CMP_EQ, llvm::SystemZ::CCMASK_CMP_NE, E, llvm::SelectionDAG::getConstant(), llvm::SDNode::getOpcode(), llvm::SDNode::getOperand(), llvm::SDNode::getValueType(), I, N, and llvm::ISD::SUB.
Referenced by getCmp().
|
static |
Definition at line 2124 of file SystemZISelLowering.cpp.
References llvm::ISD::AND, llvm::SystemZICMP::Any, llvm::SystemZ::CCMASK_CMP_EQ, llvm::SystemZ::CCMASK_CMP_GT, llvm::SystemZ::CCMASK_CMP_LE, llvm::SystemZ::CCMASK_CMP_NE, llvm::SystemZ::CCMASK_TM, llvm::dyn_cast(), llvm::SelectionDAG::getConstant(), getTestUnderMaskCond(), llvm::ConstantSDNode::getZExtValue(), llvm::MVT::i64, isSimpleShift(), llvm::BitmaskEnumDetail::Mask(), llvm::ISD::SHL, llvm::SystemZICMP::SignedOnly, llvm::ISD::SRL, llvm::SystemZISD::TM, and llvm::SystemZICMP::UnsignedOnly.
Referenced by getCmp().
|
static |
Definition at line 1993 of file SystemZISelLowering.cpp.
References llvm::ISD::Constant, llvm::SelectionDAG::getConstant(), llvm::ISD::LOAD, llvm::ISD::SEXTLOAD, llvm::SystemZICMP::SignedOnly, llvm::ISD::TRUNCATE, llvm::SystemZICMP::UnsignedOnly, and llvm::ISD::ZEXTLOAD.
Referenced by getCmp().
|
static |
Definition at line 1763 of file SystemZISelLowering.cpp.
References llvm::SystemZICMP::Any, llvm::SystemZ::CCMASK_CMP_GE, llvm::SystemZ::CCMASK_CMP_GT, llvm::SystemZ::CCMASK_CMP_LT, llvm::ISD::Constant, llvm::SelectionDAG::getConstant(), llvm::SelectionDAG::getExtLoad(), llvm::MVT::i32, llvm::SPII::Load, llvm::ISD::LOAD, llvm::BitmaskEnumDetail::Mask(), llvm::SelectionDAG::ReplaceAllUsesOfValueWith(), llvm::ISD::SEXTLOAD, llvm::SystemZICMP::SignedOnly, llvm::SystemZICMP::UnsignedOnly, and llvm::ISD::ZEXTLOAD.
Referenced by getCmp().
|
static |
Definition at line 1743 of file SystemZISelLowering.cpp.
References llvm::SystemZ::CCMASK_CMP_EQ, llvm::SystemZ::CCMASK_CMP_GE, llvm::SystemZ::CCMASK_CMP_GT, llvm::SystemZ::CCMASK_CMP_LE, llvm::SystemZ::CCMASK_CMP_LT, llvm::dyn_cast(), llvm::SelectionDAG::getConstant(), and llvm::SystemZICMP::UnsignedOnly.
Referenced by getCmp().
|
static |
Definition at line 4230 of file SystemZISelLowering.cpp.
References buildScalarToVector(), llvm::SelectionDAG::getNode(), llvm::SelectionDAG::getUNDEF(), llvm::SDValue::isUndef(), llvm::SystemZISD::MERGE_HIGH, and llvm::SystemZISD::REPLICATE.
Referenced by buildVector().
|
static |
Definition at line 4214 of file SystemZISelLowering.cpp.
References llvm::ISD::Constant, llvm::ISD::ConstantFP, llvm::SelectionDAG::getBuildVector(), llvm::SelectionDAG::getNode(), llvm::SDValue::getOpcode(), llvm::SelectionDAG::getUNDEF(), llvm::EVT::getVectorNumElements(), llvm::SDValue::isUndef(), and llvm::ISD::SCALAR_TO_VECTOR.
Referenced by buildMergeScalars(), and buildVector().
|
static |
Definition at line 4389 of file SystemZISelLowering.cpp.
References assert(), llvm::ISD::BITCAST, llvm::ISD::BUILD_VECTOR, buildMergeScalars(), buildScalarToVector(), llvm::SystemZISD::BYTE_MASK, llvm::ISD::Constant, llvm::ISD::ConstantFP, llvm::ISD::EXTRACT_VECTOR_ELT, llvm::findFirstSet(), llvm::findLastSet(), llvm::SelectionDAG::getBuildVector(), llvm::SelectionDAG::getConstant(), llvm::MVT::getIntegerVT(), llvm::SDValue::getNode(), llvm::SelectionDAG::getNode(), llvm::SDValue::getNumOperands(), llvm::SDValue::getOpcode(), getOpcode(), llvm::SDValue::getOperand(), llvm::SDNode::getOperand(), llvm::EVT::getScalarSizeInBits(), llvm::EVT::getSizeInBits(), llvm::SelectionDAG::getUNDEF(), llvm::SDValue::getValueType(), llvm::EVT::getVectorNumElements(), llvm::MVT::getVectorVT(), llvm::APInt::getZExtValue(), I, llvm::MVT::i32, llvm::ISD::INSERT_VECTOR_ELT, llvm::TargetLoweringBase::isOperationLegal(), isScalarToVector(), llvm::SDValue::isUndef(), isUndef(), joinDwords(), llvm::ISD::LOAD, llvm::Lower, llvm::BitmaskEnumDetail::Mask(), llvm::SystemZISD::MERGE_HIGH, llvm::SystemZISD::REPLICATE, llvm::ISD::SCALAR_TO_VECTOR, llvm::pdb::Single, llvm::SmallVectorBase::size(), llvm::SystemZISD::SPLAT, TII, llvm::ISD::TRUNCATE, tryBuildVectorByteMask(), tryBuildVectorReplicate(), tryBuildVectorShuffle(), llvm::Upper, llvm::MVT::v16i8, llvm::MVT::v2f64, llvm::MVT::v2i64, llvm::MVT::v4f32, and llvm::SystemZ::VectorBits.
|
static |
Definition at line 1236 of file SystemZISelLowering.cpp.
References E, llvm::CCValAssign::getLocInfo(), llvm::CCValAssign::getLocReg(), I, llvm::CCValAssign::Indirect, llvm::CCValAssign::isRegLoc(), Reg, and llvm::SmallVectorBase::size().
Referenced by llvm::SystemZTargetLowering::LowerCall().
|
static |
Definition at line 1718 of file SystemZISelLowering.cpp.
References llvm::SystemZ::CCMASK_CMP_O, llvm::SystemZ::CCMASK_CMP_UO, CONV, EQ, llvm::AArch64CC::GE, llvm::AArch64CC::GT, llvm::AArch64CC::LE, llvm_unreachable, llvm::AArch64CC::LT, llvm::AArch64CC::NE, llvm::ISD::SETO, and llvm::ISD::SETUO.
Referenced by getCmp().
|
static |
Definition at line 6189 of file SystemZISelLowering.cpp.
References llvm::MachineInstr::definesRegister(), llvm::MachineBasicBlock::end(), llvm::MachineInstr::readsRegister(), SI, llvm::MachineBasicBlock::succ_begin(), and llvm::MachineBasicBlock::succ_end().
Referenced by createPHIsForSelects().
Definition at line 3805 of file SystemZISelLowering.cpp.
Referenced by isShlDoublePermute(), and matchPermute().
Definition at line 5618 of file SystemZISelLowering.cpp.
References llvm::SystemZISD::BR_CCMASK, llvm::SystemZ::CCMASK_CMP_EQ, llvm::SystemZ::CCMASK_CMP_GE, llvm::SystemZ::CCMASK_CMP_GT, llvm::SystemZ::CCMASK_CMP_LE, llvm::SystemZ::CCMASK_CMP_LT, llvm::SystemZ::CCMASK_CMP_NE, llvm::SystemZ::CCMASK_ICMP, llvm::dyn_cast(), llvm::SelectionDAG::getConstant(), llvm::SDValue::getNode(), llvm::SelectionDAG::getNode(), llvm::SDNode::getOpcode(), llvm::SDNode::getOperand(), llvm::SDNode::getValueType(), llvm::ConstantSDNode::getZExtValue(), llvm::MVT::i32, llvm::SystemZISD::ICMP, llvm::SystemZISD::IPM, llvm::SystemZ::IPM_CC, llvm::SelectionDAG::isConstantIntBuildVectorOrConstantInt(), llvm::TargetLoweringBase::isTypeLegal(), llvm::EVT::isVector(), llvm::MCID::Select, llvm::SystemZISD::SELECT_CCMASK, llvm::ISD::SHL, llvm::ISD::SRA, and llvm::SelectionDAG::UnrollVectorOp().
|
static |
Definition at line 5947 of file SystemZISelLowering.cpp.
References llvm::SelectionDAG::computeKnownBits(), getDemandedSrcElements(), llvm::SDValue::getOperand(), llvm::KnownBits::One, and llvm::KnownBits::Zero.
Referenced by llvm::SystemZTargetLowering::computeKnownBitsForTargetNode().
|
static |
Definition at line 6058 of file SystemZISelLowering.cpp.
References assert(), llvm::SelectionDAG::ComputeNumSignBits(), getDemandedSrcElements(), llvm::SDValue::getOperand(), llvm::EVT::getScalarSizeInBits(), llvm::SDValue::getScalarValueSizeInBits(), and llvm::SDValue::getValueType().
Referenced by llvm::SystemZTargetLowering::ComputeNumSignBitsForTargetNode().
|
static |
Definition at line 1039 of file SystemZISelLowering.cpp.
References assert(), llvm::ISD::AssertSext, llvm::ISD::AssertZext, llvm::CCValAssign::BCvt, llvm::ISD::BITCAST, llvm::CCValAssign::Full, llvm::SelectionDAG::getBuildVector(), llvm::CCValAssign::getLocInfo(), llvm::CCValAssign::getLocVT(), llvm::SelectionDAG::getNode(), llvm::SelectionDAG::getUNDEF(), llvm::SelectionDAG::getValueType(), llvm::CCValAssign::getValVT(), llvm::MVT::i64, llvm::CCValAssign::isExtInLoc(), llvm::MVT::isVector(), llvm::CCValAssign::SExt, llvm::ISD::TRUNCATE, llvm::MVT::v2i64, and llvm::CCValAssign::ZExt.
Referenced by llvm::SystemZTargetLowering::LowerCall(), and llvm::SystemZTargetLowering::LowerFormalArguments().
|
static |
Definition at line 1068 of file SystemZISelLowering.cpp.
References llvm::CCValAssign::AExt, llvm::ISD::ANY_EXTEND, assert(), llvm::CCValAssign::BCvt, llvm::ISD::BITCAST, llvm::ISD::EXTRACT_VECTOR_ELT, llvm::CCValAssign::Full, llvm::SelectionDAG::getConstant(), llvm::CCValAssign::getLocInfo(), llvm::CCValAssign::getLocVT(), llvm::SelectionDAG::getNode(), llvm::CCValAssign::getValVT(), llvm::MVT::i32, llvm::MVT::i64, llvm::MVT::isVector(), llvm_unreachable, llvm::CCValAssign::SExt, llvm::ISD::SIGN_EXTEND, llvm::MVT::v2i64, llvm::ISD::ZERO_EXTEND, and llvm::CCValAssign::ZExt.
Referenced by llvm::SystemZTargetLowering::LowerCall(), and llvm::SystemZTargetLowering::LowerReturn().
|
static |
Definition at line 6235 of file SystemZISelLowering.cpp.
References llvm::ARM_AM::add, llvm::MachineInstrBuilder::add(), llvm::MachineInstrBuilder::addImm(), llvm::MachineBasicBlock::addLiveIn(), llvm::MachineInstrBuilder::addMBB(), llvm::MachineInstrBuilder::addMemOperand(), llvm::MachineInstr::addOperand(), llvm::MachineInstrBuilder::addReg(), llvm::MachineBasicBlock::addSuccessor(), assert(), llvm::MachineBasicBlock::begin(), llvm::BuildMI(), llvm::SystemZ::CCMASK_3, llvm::SystemZ::CCMASK_ANY, llvm::SystemZ::CCMASK_CMP_NE, llvm::SystemZ::CCMASK_CS, llvm::SystemZ::CCMASK_CS_NE, llvm::SystemZ::CCMASK_ICMP, checkCCKill(), llvm::SystemZISD::CLC, llvm::MachineOperand::CreateReg(), llvm::MachineRegisterInfo::createVirtualRegister(), llvm::RegState::Define, earlyUseOperand(), emitBlockAfter(), llvm::DenseMapBase< DenseMap< KeyT, ValueT, KeyInfoT, BucketT >, KeyT, ValueT, KeyInfoT, BucketT >::end(), llvm::MachineBasicBlock::end(), llvm::MachineBasicBlock::erase(), llvm::MachineInstr::eraseFromParent(), llvm::DenseMapBase< DenseMap< KeyT, ValueT, KeyInfoT, BucketT >, KeyT, ValueT, KeyInfoT, BucketT >::find(), first, forceReg(), llvm::SystemZMC::FP64Regs, llvm::MCInstrInfo::get(), llvm::MachineInstr::getDebugLoc(), llvm::MachineOperand::getImm(), llvm::TargetSubtargetInfo::getInstrInfo(), llvm::MachineInstr::getNumExplicitOperands(), llvm::SystemZInstrInfo::getOpcodeForOffset(), llvm::MachineInstr::getOperand(), llvm::MachineBasicBlock::getParent(), llvm::MachineOperand::getReg(), llvm::MachineRegisterInfo::getRegClass(), llvm::MachineFunction::getRegInfo(), llvm::MachineFunction::getSubtarget(), llvm::SystemZMC::GR64Regs, llvm::TargetFrameLowering::hasFP(), llvm::MipsISD::Hi, I, llvm::MachineOperand::isIdenticalTo(), isSelectPseudo(), llvm::MachineInstr::killsRegister(), llvm::MipsISD::Lo, llvm::MachineInstr::memoperands(), MI, MRI, llvm::SystemZISD::MVC, llvm::SystemZ::PFD_WRITE, Reg, llvm::MachineInstr::registerDefIsDead(), second, llvm::MachineInstr::setDesc(), llvm::MachineOperand::setImm(), splitBlockAfter(), splitBlockBefore(), std::swap(), TII, and llvm::SystemZMC::VR128Regs.
|
static |
Definition at line 70 of file SystemZISelLowering.cpp.
References llvm::MachineOperand::isReg(), and llvm::MachineOperand::setIsKill().
Referenced by createPHIsForSelects().
|
static |
Definition at line 6141 of file SystemZISelLowering.cpp.
References llvm::MachineFunction::CreateMachineBasicBlock(), llvm::MachineBasicBlock::getBasicBlock(), llvm::MachineBasicBlock::getParent(), and llvm::MachineFunction::insert().
Referenced by createPHIsForSelects(), splitBlockAfter(), and splitBlockBefore().
|
static |
Definition at line 2321 of file SystemZISelLowering.cpp.
Referenced by CC_MipsO32_FP64(), getAbsolute(), getCompareCC(), and isMulPowOf2().
|
static |
Definition at line 1700 of file SystemZISelLowering.cpp.
References llvm::SDValue::getNode(), llvm::SelectionDAG::getNode(), llvm::SDValue::getNumOperands(), llvm::SDValue::getOperand(), llvm::SDNode::getVTList(), I, Intr, llvm::SmallVectorTemplateBase< T >::push_back(), and llvm::SmallVectorImpl< T >::reserve().
Referenced by getCCResult().
|
static |
Definition at line 1680 of file SystemZISelLowering.cpp.
References assert(), llvm::SDValue::getNode(), llvm::SelectionDAG::getNode(), llvm::SDValue::getNumOperands(), llvm::SDNode::getNumValues(), llvm::SDValue::getOperand(), llvm::SelectionDAG::getVTList(), I, llvm::MVT::i32, Intr, llvm::MVT::Other, llvm::SmallVectorTemplateBase< T >::push_back(), llvm::SelectionDAG::ReplaceAllUsesOfValueWith(), and llvm::SmallVectorImpl< T >::reserve().
Referenced by getCCResult().
|
static |
Definition at line 2378 of file SystemZISelLowering.cpp.
References llvm::SelectionDAG::getConstant(), llvm::SelectionDAG::getNode(), llvm::MVT::i32, and llvm::SystemZISD::SELECT_CCMASK.
Referenced by llvm::SystemZTargetLowering::LowerOperationWrapper().
|
static |
Definition at line 2434 of file SystemZISelLowering.cpp.
|
static |
Definition at line 6169 of file SystemZISelLowering.cpp.
References llvm::ARM_AM::add, llvm::BuildMI(), llvm::MachineRegisterInfo::createVirtualRegister(), llvm::MachineInstr::getDebugLoc(), llvm::MachineBasicBlock::getParent(), llvm::MachineInstr::getParent(), llvm::MachineOperand::getReg(), llvm::MachineFunction::getRegInfo(), llvm::MachineOperand::isReg(), MRI, and Reg.
Referenced by createPHIsForSelects().
|
static |
Definition at line 2564 of file SystemZISelLowering.cpp.
References C, llvm::SystemZ::CCMASK_CMP_EQ, llvm::SystemZ::CCMASK_CMP_GT, llvm::SystemZ::CCMASK_CMP_LT, llvm::SystemZ::CCMASK_CMP_NE, llvm::ISD::Constant, emitCmp(), getCmp(), llvm::SelectionDAG::getConstant(), llvm::SelectionDAG::getNode(), llvm::SDValue::getOperand(), llvm::SDValue::getValueType(), llvm::MVT::i32, llvm::SystemZISD::IABS, llvm::SystemZISD::ICMP, isAbsolute(), llvm::SystemZISD::SELECT_CCMASK, and llvm::ISD::SUB.
|
static |
Definition at line 3659 of file SystemZISelLowering.cpp.
References assert(), emitIntrinsicWithCC(), emitIntrinsicWithCCAndChain(), llvm::SelectionDAG::getConstant(), llvm::SDValue::getNode(), llvm::SelectionDAG::getNode(), llvm::SDNode::getNumValues(), llvm::SDValue::getOperand(), llvm::SDValue::getValueType(), llvm::SDNode::getVTList(), llvm::MVT::i32, llvm::SystemZISD::IPM, llvm::SystemZ::IPM_CC, isIntrinsicWithCC(), isIntrinsicWithCCAndChain(), llvm::ISD::MERGE_VALUES, llvm::SystemZISD::PERMUTE, llvm::SystemZISD::PERMUTE_DWORDS, llvm::SelectionDAG::ReplaceAllUsesOfValueWith(), llvm::Intrinsic::s390_vpdi, llvm::Intrinsic::s390_vperm, llvm::Intrinsic::s390_vsumb, llvm::Intrinsic::s390_vsumgf, llvm::Intrinsic::s390_vsumgh, llvm::Intrinsic::s390_vsumh, llvm::Intrinsic::s390_vsumqf, llvm::Intrinsic::s390_vsumqg, llvm::Intrinsic::s390_vuphb, llvm::Intrinsic::s390_vuphf, llvm::Intrinsic::s390_vuphh, llvm::Intrinsic::s390_vuplb, llvm::Intrinsic::s390_vuplf, llvm::Intrinsic::s390_vuplhb, llvm::Intrinsic::s390_vuplhf, llvm::Intrinsic::s390_vuplhh, llvm::Intrinsic::s390_vuplhw, llvm::Intrinsic::s390_vupllb, llvm::Intrinsic::s390_vupllf, llvm::Intrinsic::s390_vupllh, llvm::ISD::SRL, llvm::Intrinsic::thread_pointer, llvm::SystemZISD::UNPACK_HIGH, llvm::SystemZISD::UNPACK_LOW, llvm::SystemZISD::UNPACKL_HIGH, llvm::SystemZISD::UNPACKL_LOW, llvm::SystemZ::VectorBytes, and llvm::SystemZISD::VSUM.
|
static |
Definition at line 2266 of file SystemZISelLowering.cpp.
References adjustForFNeg(), adjustForLTGFR(), adjustForRedundantAnd(), adjustForSubtraction(), adjustForTestUnderMask(), adjustICmpTruncate(), adjustSubwordCmp(), adjustZeroCmp(), llvm::SystemZICMP::Any, C, llvm::SystemZ::CCMASK_CMP_EQ, llvm::SystemZ::CCMASK_CMP_NE, llvm::SystemZ::CCMASK_CMP_UO, llvm::SystemZ::CCMASK_FCMP, llvm::SystemZ::CCMASK_ICMP, CCMaskForCondCode(), llvm::ISD::Constant, llvm::SystemZISD::FCMP, getIntrinsicCmp(), llvm::SDNode::getNumValues(), llvm::SDValue::getOpcode(), llvm::SDValue::getResNo(), llvm::SDNode::hasNUsesOfValue(), llvm::SystemZISD::ICMP, llvm::ISD::INTRINSIC_W_CHAIN, llvm::ISD::INTRINSIC_WO_CHAIN, isIntrinsicWithCC(), isIntrinsicWithCCAndChain(), reverseCCMask(), shouldSwapCmpOperands(), llvm::SelectionDAG::SignBitIsZero(), llvm::SystemZICMP::SignedOnly, std::swap(), and llvm::SystemZICMP::UnsignedOnly.
Referenced by getAbsolute(), and INITIALIZE_PASS().
|
static |
Definition at line 5850 of file SystemZISelLowering.cpp.
References assert(), llvm::SDValue::getOpcode(), llvm::SDValue::getOperand(), llvm::SDValue::getValueType(), llvm::EVT::getVectorNumElements(), llvm::APInt::insertBits(), llvm::ISD::INTRINSIC_WO_CHAIN, llvm::EVT::isVector(), llvm::SystemZISD::JOIN_DWORDS, llvm_unreachable, llvm::APInt::lshr(), llvm::APInt::lshrInPlace(), llvm::BitmaskEnumDetail::Mask(), llvm::Intrinsic::s390_vpdi, llvm::Intrinsic::s390_vperm, llvm::Intrinsic::s390_vpklsf, llvm::Intrinsic::s390_vpklsfs, llvm::Intrinsic::s390_vpklsg, llvm::Intrinsic::s390_vpklsgs, llvm::Intrinsic::s390_vpklsh, llvm::Intrinsic::s390_vpklshs, llvm::Intrinsic::s390_vpksf, llvm::Intrinsic::s390_vpksfs, llvm::Intrinsic::s390_vpksg, llvm::Intrinsic::s390_vpksgs, llvm::Intrinsic::s390_vpksh, llvm::Intrinsic::s390_vpkshs, llvm::Intrinsic::s390_vsldb, llvm::Intrinsic::s390_vuphb, llvm::Intrinsic::s390_vuphf, llvm::Intrinsic::s390_vuphh, llvm::Intrinsic::s390_vuplb, llvm::Intrinsic::s390_vuplf, llvm::Intrinsic::s390_vuplhb, llvm::Intrinsic::s390_vuplhf, llvm::Intrinsic::s390_vuplhh, llvm::Intrinsic::s390_vuplhw, llvm::Intrinsic::s390_vupllb, llvm::Intrinsic::s390_vupllf, llvm::Intrinsic::s390_vupllh, llvm::SystemZISD::SELECT_CCMASK, llvm::APInt::setBit(), llvm::APInt::trunc(), and llvm::MVT::v16i8.
Referenced by computeKnownBitsBinOp(), llvm::SystemZTargetLowering::computeKnownBitsForTargetNode(), computeNumSignBitsBinOp(), and llvm::SystemZTargetLowering::ComputeNumSignBitsForTargetNode().
|
static |
Definition at line 4009 of file SystemZISelLowering.cpp.
References llvm::ARM_AM::add, assert(), llvm::ISD::BITCAST, llvm::SelectionDAG::getBuildVector(), llvm::SelectionDAG::getConstant(), llvm::SDValue::getNode(), llvm::SelectionDAG::getNode(), llvm::SDValue::getOpcode(), llvm::SDValue::getOperand(), getPermuteNode(), getShuffleInput(), llvm::EVT::getStoreSize(), llvm::SelectionDAG::getUNDEF(), llvm::SDValue::getValueType(), llvm::EVT::getVectorElementType(), getVPermMask(), llvm::SDValue::hasOneUse(), I, llvm::MVT::i32, isShlDoublePermute(), llvm::SDValue::isUndef(), matchDoublePermute(), matchPermute(), P, llvm::SystemZISD::PERMUTE, llvm::SystemZISD::SHL_DOUBLE, llvm::MVT::v16i8, llvm::ISD::VECTOR_SHUFFLE, and llvm::SystemZ::VectorBytes.
|
static |
Definition at line 2233 of file SystemZISelLowering.cpp.
References C, llvm_unreachable, llvm::ISD::SETEQ, llvm::ISD::SETGE, llvm::ISD::SETGT, llvm::ISD::SETLE, llvm::ISD::SETLT, llvm::ISD::SETNE, llvm::ISD::SETUGE, llvm::ISD::SETUGT, llvm::ISD::SETULE, and llvm::ISD::SETULT.
Referenced by getCmp().
|
static |
Definition at line 621 of file SystemZISelLowering.cpp.
References llvm::Type::isIntegerTy(), and llvm::SystemZISD::MVC.
Referenced by supportedAddressingMode().
|
static |
Definition at line 3980 of file SystemZISelLowering.cpp.
References llvm::ISD::BITCAST, llvm::SelectionDAG::getConstant(), llvm::MVT::getIntegerVT(), llvm::SelectionDAG::getNode(), llvm::MVT::getVectorVT(), llvm::MVT::i32, llvm::SystemZISD::PACK, llvm::SystemZISD::PERMUTE_DWORDS, and llvm::SystemZ::VectorBytes.
Referenced by getGeneralPermuteNode().
|
static |
Definition at line 3929 of file SystemZISelLowering.cpp.
Referenced by getGeneralPermuteNode(), and llvm::SystemZTargetLowering::getTargetNodeName().
|
static |
Definition at line 2032 of file SystemZISelLowering.cpp.
References assert(), llvm::SystemZ::CCMASK_ANY, llvm::SystemZ::CCMASK_CMP_EQ, llvm::SystemZ::CCMASK_CMP_GE, llvm::SystemZ::CCMASK_CMP_GT, llvm::SystemZ::CCMASK_CMP_LE, llvm::SystemZ::CCMASK_CMP_LT, llvm::SystemZ::CCMASK_CMP_NE, llvm::SystemZ::CCMASK_TM_ALL_0, llvm::SystemZ::CCMASK_TM_ALL_1, llvm::SystemZ::CCMASK_TM_MIXED_MSB_0, llvm::SystemZ::CCMASK_TM_MIXED_MSB_1, llvm::SystemZ::CCMASK_TM_MSB_0, llvm::SystemZ::CCMASK_TM_MSB_1, llvm::SystemZ::CCMASK_TM_SOME_0, llvm::SystemZ::CCMASK_TM_SOME_1, llvm::countLeadingZeros(), llvm::countTrailingZeros(), High, llvm::SystemZ::isImmHH(), llvm::SystemZ::isImmHL(), llvm::SystemZ::isImmLH(), llvm::SystemZ::isImmLL(), and llvm::SystemZICMP::SignedOnly.
Referenced by adjustForTestUnderMask().
|
static |
Definition at line 2390 of file SystemZISelLowering.cpp.
References llvm::ISD::SETEQ, llvm::ISD::SETGE, llvm::ISD::SETGT, llvm::ISD::SETOEQ, llvm::ISD::SETOGE, llvm::ISD::SETOGT, llvm::ISD::SETUGT, llvm::SystemZISD::VFCMPE, llvm::SystemZISD::VFCMPH, llvm::SystemZISD::VFCMPHE, llvm::SystemZISD::VICMPE, llvm::SystemZISD::VICMPH, and llvm::SystemZISD::VICMPHL.
Referenced by getVectorComparisonOrInvert().
|
static |
Definition at line 2416 of file SystemZISelLowering.cpp.
References llvm::ISD::getSetCCInverse(), and getVectorComparison().
|
static |
Definition at line 3897 of file SystemZISelLowering.cpp.
References llvm::SDValue::getConstantOperandVal(), llvm::SDValue::getOpcode(), llvm::SDValue::getOperand(), llvm::EVT::getStoreSize(), llvm::SDValue::getValueType(), llvm::EVT::getVectorElementType(), llvm::EVT::getVectorNumElements(), I, llvm::SmallVectorImpl< T >::resize(), and llvm::SystemZISD::SPLAT.
Referenced by getGeneralPermuteNode(), and llvm::SystemZTargetLowering::getTargetNodeName().
Definition at line 57 of file SystemZISelLowering.cpp.
References llvm::EVT::getSimpleVT(), llvm::MVT::i32, llvm::MVT::i64, llvm_unreachable, and llvm::MVT::SimpleTy.
Referenced by lowerGR128Binary().
Definition at line 2553 of file SystemZISelLowering.cpp.
References llvm::ISD::Constant, llvm::SDValue::getOpcode(), llvm::SDValue::getOperand(), llvm::ISD::SIGN_EXTEND, and llvm::ISD::SUB.
Referenced by getAbsolute().
Definition at line 1536 of file SystemZISelLowering.cpp.
References llvm::SystemZ::CCMASK_0, llvm::SystemZ::CCMASK_3, llvm::SystemZ::CCMASK_ANY, llvm::SystemZ::CCMASK_TDC, llvm::SystemZ::CCMASK_VCMP, llvm::SDValue::getOperand(), llvm::SystemZISD::PACKLS_CC, llvm::SystemZISD::PACKS_CC, llvm::Intrinsic::s390_tdc, llvm::Intrinsic::s390_vceqbs, llvm::Intrinsic::s390_vceqfs, llvm::Intrinsic::s390_vceqgs, llvm::Intrinsic::s390_vceqhs, llvm::Intrinsic::s390_vchbs, llvm::Intrinsic::s390_vchfs, llvm::Intrinsic::s390_vchgs, llvm::Intrinsic::s390_vchhs, llvm::Intrinsic::s390_vchlbs, llvm::Intrinsic::s390_vchlfs, llvm::Intrinsic::s390_vchlgs, llvm::Intrinsic::s390_vchlhs, llvm::Intrinsic::s390_vfaebs, llvm::Intrinsic::s390_vfaefs, llvm::Intrinsic::s390_vfaehs, llvm::Intrinsic::s390_vfaezbs, llvm::Intrinsic::s390_vfaezfs, llvm::Intrinsic::s390_vfaezhs, llvm::Intrinsic::s390_vfcedbs, llvm::Intrinsic::s390_vfcesbs, llvm::Intrinsic::s390_vfchdbs, llvm::Intrinsic::s390_vfchedbs, llvm::Intrinsic::s390_vfchesbs, llvm::Intrinsic::s390_vfchsbs, llvm::Intrinsic::s390_vfeebs, llvm::Intrinsic::s390_vfeefs, llvm::Intrinsic::s390_vfeehs, llvm::Intrinsic::s390_vfeezbs, llvm::Intrinsic::s390_vfeezfs, llvm::Intrinsic::s390_vfeezhs, llvm::Intrinsic::s390_vfenebs, llvm::Intrinsic::s390_vfenefs, llvm::Intrinsic::s390_vfenehs, llvm::Intrinsic::s390_vfenezbs, llvm::Intrinsic::s390_vfenezfs, llvm::Intrinsic::s390_vfenezhs, llvm::Intrinsic::s390_vftcidb, llvm::Intrinsic::s390_vftcisb, llvm::Intrinsic::s390_vistrbs, llvm::Intrinsic::s390_vistrfs, llvm::Intrinsic::s390_vistrhs, llvm::Intrinsic::s390_vpklsfs, llvm::Intrinsic::s390_vpklsgs, llvm::Intrinsic::s390_vpklshs, llvm::Intrinsic::s390_vpksfs, llvm::Intrinsic::s390_vpksgs, llvm::Intrinsic::s390_vpkshs, llvm::Intrinsic::s390_vstrcbs, llvm::Intrinsic::s390_vstrcfs, llvm::Intrinsic::s390_vstrchs, llvm::Intrinsic::s390_vstrczbs, llvm::Intrinsic::s390_vstrczfs, llvm::Intrinsic::s390_vstrczhs, llvm::Intrinsic::s390_vtm, llvm::SystemZISD::TDC, llvm::SystemZISD::VFAE_CC, llvm::SystemZISD::VFAEZ_CC, llvm::SystemZISD::VFCMPES, llvm::SystemZISD::VFCMPHES, llvm::SystemZISD::VFCMPHS, llvm::SystemZISD::VFEE_CC, llvm::SystemZISD::VFEEZ_CC, llvm::SystemZISD::VFENE_CC, llvm::SystemZISD::VFENEZ_CC, llvm::SystemZISD::VFTCI, llvm::SystemZISD::VICMPES, llvm::SystemZISD::VICMPHLS, llvm::SystemZISD::VICMPHS, llvm::SystemZISD::VISTR_CC, llvm::SystemZISD::VSTRC_CC, llvm::SystemZISD::VSTRCZ_CC, and llvm::SystemZISD::VTM.
Referenced by llvm::SystemZTargetLowering::computeKnownBitsForTargetNode(), getCCResult(), and getCmp().
Definition at line 1509 of file SystemZISelLowering.cpp.
References llvm::SystemZ::CCMASK_TBEGIN, llvm::SystemZ::CCMASK_TEND, llvm::SDValue::getOperand(), llvm::Intrinsic::s390_tbegin, llvm::Intrinsic::s390_tbegin_nofloat, llvm::Intrinsic::s390_tend, llvm::SystemZISD::TBEGIN, llvm::SystemZISD::TBEGIN_NOFLOAT, and llvm::SystemZISD::TEND.
Referenced by getCCResult(), and getCmp().
Definition at line 1836 of file SystemZISelLowering.cpp.
References llvm::dyn_cast(), llvm::SDValue::getNode(), llvm::MVT::i8, llvm::SPII::Load, llvm::ISD::NON_EXTLOAD, llvm::ISD::SEXTLOAD, llvm::SystemZICMP::SignedOnly, llvm::SystemZICMP::UnsignedOnly, and llvm::ISD::ZEXTLOAD.
Referenced by shouldSwapCmpOperands().
Definition at line 4205 of file SystemZISelLowering.cpp.
References E, llvm::SDValue::getNumOperands(), llvm::SDValue::getOperand(), I, and llvm::SDValue::isUndef().
Referenced by buildVector().
|
static |
Definition at line 6214 of file SystemZISelLowering.cpp.
References llvm::MachineInstr::getOpcode().
Referenced by createPHIsForSelects().
|
static |
Definition at line 3952 of file SystemZISelLowering.cpp.
References chooseShuffleOpNos(), I, and llvm::SystemZ::VectorBytes.
Referenced by getGeneralPermuteNode().
Definition at line 2013 of file SystemZISelLowering.cpp.
References llvm::dyn_cast(), llvm::SDValue::getOperand(), llvm::SDValue::getValueSizeInBits(), and llvm::ConstantSDNode::getZExtValue().
Referenced by adjustForTestUnderMask().
Definition at line 4246 of file SystemZISelLowering.cpp.
References llvm::ISD::ANY_EXTEND, llvm::SelectionDAG::getNode(), llvm::SelectionDAG::getUNDEF(), llvm::MVT::i64, llvm::SDValue::isUndef(), llvm::SystemZISD::JOIN_DWORDS, and llvm::MVT::v2i64.
Referenced by buildVector().
|
static |
Definition at line 2366 of file SystemZISelLowering.cpp.
References llvm::SystemZ::even128(), llvm::SelectionDAG::getNode(), llvm::SelectionDAG::getTargetExtractSubreg(), is32Bit(), llvm::SystemZ::odd128(), and llvm::MVT::Untyped.
|
static |
Definition at line 4911 of file SystemZISelLowering.cpp.
References llvm::ISD::BUILD_PAIR, llvm::SelectionDAG::getNode(), llvm::SelectionDAG::getTargetExtractSubreg(), llvm::MipsISD::Hi, llvm::MVT::i128, llvm::MVT::i64, and llvm::MipsISD::Lo.
Referenced by llvm::SystemZTargetLowering::LowerOperationWrapper().
|
static |
Definition at line 4900 of file SystemZISelLowering.cpp.
References llvm::ISD::EXTRACT_ELEMENT, llvm::SelectionDAG::getIntPtrConstant(), llvm::SelectionDAG::getMachineNode(), llvm::SelectionDAG::getNode(), llvm::MipsISD::Hi, llvm::MVT::i64, llvm::MipsISD::Lo, and llvm::MVT::Untyped.
Referenced by llvm::SystemZTargetLowering::LowerOperationWrapper().
|
static |
Definition at line 2350 of file SystemZISelLowering.cpp.
References llvm::SelectionDAG::getConstant(), llvm::SelectionDAG::getNode(), llvm::MVT::i32, llvm::MVT::i64, llvm::ISD::MUL, llvm::ISD::SRL, and llvm::ISD::TRUNCATE.
|
static |
Definition at line 3865 of file SystemZISelLowering.cpp.
References From, and llvm::SystemZ::VectorBytes.
Referenced by getGeneralPermuteNode(), and matchDoublePermute().
|
static |
Definition at line 3887 of file SystemZISelLowering.cpp.
References matchDoublePermute(), and P.
|
static |
Definition at line 3828 of file SystemZISelLowering.cpp.
References chooseShuffleOpNos(), I, and llvm::SystemZ::VectorBytes.
Referenced by getGeneralPermuteNode(), and matchPermute().
|
static |
Definition at line 3852 of file SystemZISelLowering.cpp.
References matchPermute(), and P.
|
static |
Definition at line 855 of file SystemZISelLowering.cpp.
References assert(), llvm::StringRef::end(), llvm::Failed(), llvm::StringRef::size(), and llvm::StringRef::slice().
Referenced by llvm::SystemZTargetLowering::getRegForInlineAsmConstraint().
Definition at line 1917 of file SystemZISelLowering.cpp.
References llvm::SystemZ::CCMASK_CMP_EQ, llvm::SystemZ::CCMASK_CMP_GT, llvm::SystemZ::CCMASK_CMP_LT, and llvm::SystemZ::CCMASK_CMP_UO.
Referenced by adjustForFNeg(), and getCmp().
Definition at line 1858 of file SystemZISelLowering.cpp.
References llvm::ISD::AND, llvm::ISD::Constant, llvm::dyn_cast(), llvm::MVT::f128, llvm::isInt< 16 >(), isNaturalMemoryOperand(), llvm::isUInt< 16 >(), llvm::ISD::SIGN_EXTEND, llvm::SystemZICMP::SignedOnly, llvm::SystemZICMP::UnsignedOnly, and llvm::ISD::ZERO_EXTEND.
Referenced by getCmp().
|
static |
Definition at line 6150 of file SystemZISelLowering.cpp.
References llvm::MachineBasicBlock::begin(), emitBlockAfter(), llvm::MachineBasicBlock::end(), llvm::MachineBasicBlock::splice(), and llvm::MachineBasicBlock::transferSuccessorsAndUpdatePHIs().
Referenced by createPHIsForSelects().
|
static |
Definition at line 6160 of file SystemZISelLowering.cpp.
References llvm::MachineBasicBlock::begin(), emitBlockAfter(), llvm::MachineBasicBlock::end(), MI, llvm::MachineBasicBlock::splice(), and llvm::MachineBasicBlock::transferSuccessorsAndUpdatePHIs().
Referenced by createPHIsForSelects().
|
static |
Definition at line 637 of file SystemZISelLowering.cpp.
References C, llvm::dyn_cast(), getLoadStoreAddrMode(), llvm::User::getOperand(), llvm::Instruction::getParent(), llvm::Value::getType(), llvm::Value::hasOneUse(), I, llvm::Type::isFloatingPointTy(), llvm::isInt< 16 >(), llvm::isUInt< 16 >(), llvm::Type::isVectorTy(), llvm::Intrinsic::memcpy, llvm::Intrinsic::memmove, llvm::Intrinsic::memset, and llvm::Value::user_begin().
Referenced by llvm::SystemZTargetLowering::isLegalAddressingMode().
|
static |
Definition at line 4266 of file SystemZISelLowering.cpp.
References llvm::ISD::Constant, llvm::ISD::ConstantFP, E, llvm::SDNode::getNumOperands(), llvm::SDValue::getOpcode(), llvm::SDNode::getOperand(), llvm::EVT::getStoreSize(), llvm::SDNode::getValueType(), llvm::EVT::getVectorElementType(), I, and llvm::SDValue::isUndef().
Referenced by buildVector().
|
static |
Definition at line 4297 of file SystemZISelLowering.cpp.
References llvm::ISD::BITCAST, llvm::SelectionDAG::getConstant(), llvm::MVT::getIntegerVT(), llvm::SelectionDAG::getNode(), llvm::MVT::getVectorVT(), llvm::MVT::i32, llvm::isInt< 16 >(), llvm::SystemZISD::REPLICATE, llvm::SignExtend64(), and llvm::SystemZ::VectorBits.
Referenced by buildVector().
|
static |
Definition at line 4339 of file SystemZISelLowering.cpp.
References llvm::ISD::Constant, llvm::SmallVectorBase::empty(), llvm::ISD::EXTRACT_VECTOR_ELT, llvm::SelectionDAG::getBuildVector(), llvm::SDValue::getNode(), llvm::SDValue::getOpcode(), llvm::SDValue::getOperand(), llvm::SDNode::getOperand(), llvm::SelectionDAG::getUNDEF(), llvm::SDNode::getValueType(), llvm::EVT::getVectorNumElements(), I, llvm::SDValue::isUndef(), llvm::SmallVectorTemplateBase< T >::push_back(), llvm::SmallVectorBase::size(), and llvm::ISD::TRUNCATE.
Referenced by buildVector().
Definition at line 1021 of file SystemZISelLowering.cpp.
References llvm::EVT::isVector(), llvm::MVT::isVector(), and llvm::report_fatal_error().
Referenced by VerifyVectorTypes().
|
static |
Definition at line 1026 of file SystemZISelLowering.cpp.
References llvm::SmallVectorBase::size(), and VerifyVectorType().
Referenced by llvm::SystemZTargetLowering::CanLowerReturn(), llvm::SystemZTargetLowering::LowerCall(), llvm::SystemZTargetLowering::LowerFormalArguments(), and llvm::SystemZTargetLowering::LowerReturn().
|
static |
Definition at line 1031 of file SystemZISelLowering.cpp.
References llvm::SmallVectorBase::size(), and VerifyVectorType().
|
static |
Definition at line 3756 of file SystemZISelLowering.cpp.