diff options
Diffstat (limited to 'lib/Target/WebAssembly/WebAssemblyISelLowering.h')
| -rw-r--r-- | lib/Target/WebAssembly/WebAssemblyISelLowering.h | 25 | 
1 files changed, 17 insertions, 8 deletions
diff --git a/lib/Target/WebAssembly/WebAssemblyISelLowering.h b/lib/Target/WebAssembly/WebAssemblyISelLowering.h index 79819493ac6a2..59f4230ed8895 100644 --- a/lib/Target/WebAssembly/WebAssemblyISelLowering.h +++ b/lib/Target/WebAssembly/WebAssemblyISelLowering.h @@ -29,21 +29,22 @@ enum NodeType : unsigned {  #undef HANDLE_NODETYPE  }; -}  // end namespace WebAssemblyISD +} // end namespace WebAssemblyISD  class WebAssemblySubtarget;  class WebAssemblyTargetMachine;  class WebAssemblyTargetLowering final : public TargetLowering { - public: +public:    WebAssemblyTargetLowering(const TargetMachine &TM,                              const WebAssemblySubtarget &STI); - private: +private:    /// Keep a pointer to the WebAssemblySubtarget around so that we can make the    /// right decision when generating code for different targets.    const WebAssemblySubtarget *Subtarget; +  AtomicExpansionKind shouldExpandAtomicRMWInIR(AtomicRMWInst *) const override;    FastISel *createFastISel(FunctionLoweringInfo &FuncInfo,                             const TargetLibraryInfo *LibInfo) const override;    bool isOffsetFoldingLegal(const GlobalAddressSDNode *GA) const override; @@ -52,9 +53,9 @@ class WebAssemblyTargetLowering final : public TargetLowering {    EmitInstrWithCustomInserter(MachineInstr &MI,                                MachineBasicBlock *MBB) const override;    const char *getTargetNodeName(unsigned Opcode) const override; -  std::pair<unsigned, const TargetRegisterClass *> getRegForInlineAsmConstraint( -      const TargetRegisterInfo *TRI, StringRef Constraint, -      MVT VT) const override; +  std::pair<unsigned, const TargetRegisterClass *> +  getRegForInlineAsmConstraint(const TargetRegisterInfo *TRI, +                               StringRef Constraint, MVT VT) const override;    bool isCheapToSpeculateCttz() const override;    bool isCheapToSpeculateCtlz() const override;    bool isLegalAddressingMode(const DataLayout &DL, const AddrMode &AM, Type *Ty, @@ -66,6 +67,9 @@ class WebAssemblyTargetLowering final : public TargetLowering {    EVT getSetCCResultType(const DataLayout &DL, LLVMContext &Context,                           EVT VT) const override; +  bool getTgtMemIntrinsic(IntrinsicInfo &Info, const CallInst &I, +                          MachineFunction &MF, +                          unsigned Intrinsic) const override;    SDValue LowerCall(CallLoweringInfo &CLI,                      SmallVectorImpl<SDValue> &InVals) const override; @@ -94,13 +98,18 @@ class WebAssemblyTargetLowering final : public TargetLowering {    SDValue LowerVASTART(SDValue Op, SelectionDAG &DAG) const;    SDValue LowerCopyToReg(SDValue Op, SelectionDAG &DAG) const;    SDValue LowerINTRINSIC_WO_CHAIN(SDValue Op, SelectionDAG &DAG) const; +  SDValue LowerINTRINSIC_VOID(SDValue Op, SelectionDAG &DAG) const; +  SDValue LowerSIGN_EXTEND_INREG(SDValue Op, SelectionDAG &DAG) const; +  SDValue LowerVECTOR_SHUFFLE(SDValue Op, SelectionDAG &DAG) const; +  SDValue LowerAccessVectorElement(SDValue Op, SelectionDAG &DAG) const; +  SDValue LowerShift(SDValue Op, SelectionDAG &DAG) const;  };  namespace WebAssembly {  FastISel *createFastISel(FunctionLoweringInfo &funcInfo,                           const TargetLibraryInfo *libInfo); -}  // end namespace WebAssembly +} // end namespace WebAssembly -}  // end namespace llvm +} // end namespace llvm  #endif  | 
