003 File Manager
Current Path:
/usr/src/contrib/llvm-project/llvm/lib/Target/VE
usr
/
src
/
contrib
/
llvm-project
/
llvm
/
lib
/
Target
/
VE
/
📁
..
📁
AsmParser
📁
Disassembler
📁
MCTargetDesc
📁
TargetInfo
📄
VE.h
(8.79 KB)
📄
VE.td
(2.21 KB)
📄
VEAsmPrinter.cpp
(12.54 KB)
📄
VECallingConv.td
(3.05 KB)
📄
VEFrameLowering.cpp
(13.39 KB)
📄
VEFrameLowering.h
(3.35 KB)
📄
VEISelDAGToDAG.cpp
(10.27 KB)
📄
VEISelLowering.cpp
(37.14 KB)
📄
VEISelLowering.h
(4.23 KB)
📄
VEInstrFormats.td
(5.53 KB)
📄
VEInstrInfo.cpp
(20.02 KB)
📄
VEInstrInfo.h
(3.35 KB)
📄
VEInstrInfo.td
(80.08 KB)
📄
VEMCInstLower.cpp
(2.83 KB)
📄
VEMachineFunctionInfo.cpp
(469 B)
📄
VEMachineFunctionInfo.h
(1.57 KB)
📄
VERegisterInfo.cpp
(5.07 KB)
📄
VERegisterInfo.h
(1.75 KB)
📄
VERegisterInfo.td
(5.67 KB)
📄
VESubtarget.cpp
(4.04 KB)
📄
VESubtarget.h
(2.38 KB)
📄
VETargetMachine.cpp
(3.23 KB)
📄
VETargetMachine.h
(1.95 KB)
📄
VETargetTransformInfo.h
(1.72 KB)
Editing: VEISelLowering.h
//===-- VEISelLowering.h - VE DAG Lowering Interface ------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // This file defines the interfaces that VE uses to lower LLVM code into a // selection DAG. // //===----------------------------------------------------------------------===// #ifndef LLVM_LIB_TARGET_VE_VEISELLOWERING_H #define LLVM_LIB_TARGET_VE_VEISELLOWERING_H #include "VE.h" #include "llvm/CodeGen/TargetLowering.h" namespace llvm { class VESubtarget; namespace VEISD { enum NodeType : unsigned { FIRST_NUMBER = ISD::BUILTIN_OP_END, Hi, Lo, // Hi/Lo operations, typically on a global address. GETFUNPLT, // load function address through %plt insturction GETTLSADDR, // load address for TLS access GETSTACKTOP, // retrieve address of stack top (first address of // locals and temporaries) CALL, // A call instruction. RET_FLAG, // Return with a flag operand. GLOBAL_BASE_REG, // Global base reg for PIC. }; } class VETargetLowering : public TargetLowering { const VESubtarget *Subtarget; public: VETargetLowering(const TargetMachine &TM, const VESubtarget &STI); const char *getTargetNodeName(unsigned Opcode) const override; MVT getScalarShiftAmountTy(const DataLayout &, EVT) const override { return MVT::i32; } Register getRegisterByName(const char *RegName, LLT VT, const MachineFunction &MF) const override; /// getSetCCResultType - Return the ISD::SETCC ValueType EVT getSetCCResultType(const DataLayout &DL, LLVMContext &Context, EVT VT) const override; SDValue LowerFormalArguments(SDValue Chain, CallingConv::ID CallConv, bool isVarArg, const SmallVectorImpl<ISD::InputArg> &Ins, const SDLoc &dl, SelectionDAG &DAG, SmallVectorImpl<SDValue> &InVals) const override; SDValue LowerCall(TargetLowering::CallLoweringInfo &CLI, SmallVectorImpl<SDValue> &InVals) const override; bool CanLowerReturn(CallingConv::ID CallConv, MachineFunction &MF, bool isVarArg, const SmallVectorImpl<ISD::OutputArg> &ArgsFlags, LLVMContext &Context) const override; SDValue LowerReturn(SDValue Chain, CallingConv::ID CallConv, bool isVarArg, const SmallVectorImpl<ISD::OutputArg> &Outs, const SmallVectorImpl<SDValue> &OutVals, const SDLoc &dl, SelectionDAG &DAG) const override; /// Custom Lower { SDValue LowerOperation(SDValue Op, SelectionDAG &DAG) const override; SDValue LowerVASTART(SDValue Op, SelectionDAG &DAG) const; SDValue LowerVAARG(SDValue Op, SelectionDAG &DAG) const; SDValue LowerBlockAddress(SDValue Op, SelectionDAG &DAG) const; SDValue LowerGlobalAddress(SDValue Op, SelectionDAG &DAG) const; SDValue LowerGlobalTLSAddress(SDValue Op, SelectionDAG &DAG) const; SDValue LowerToTLSGeneralDynamicModel(SDValue Op, SelectionDAG &DAG) const; SDValue lowerDYNAMIC_STACKALLOC(SDValue Op, SelectionDAG &DAG) const; /// } Custom Lower SDValue withTargetFlags(SDValue Op, unsigned TF, SelectionDAG &DAG) const; SDValue makeHiLoPair(SDValue Op, unsigned HiTF, unsigned LoTF, SelectionDAG &DAG) const; SDValue makeAddress(SDValue Op, SelectionDAG &DAG) const; bool isFPImmLegal(const APFloat &Imm, EVT VT, bool ForCodeSize) const override; /// Returns true if the target allows unaligned memory accesses of the /// specified type. bool allowsMisalignedMemoryAccesses(EVT VT, unsigned AS, unsigned Align, MachineMemOperand::Flags Flags, bool *Fast) const override; // Block s/udiv lowering for now bool isIntDivCheap(EVT VT, AttributeList Attr) const override { return true; } bool hasAndNot(SDValue Y) const override; }; } // namespace llvm #endif // VE_ISELLOWERING_H
Upload File
Create Folder