Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions llvm/lib/Target/WebAssembly/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ tablegen(LLVM WebAssemblyGenFastISel.inc -gen-fast-isel)
tablegen(LLVM WebAssemblyGenInstrInfo.inc -gen-instr-info)
tablegen(LLVM WebAssemblyGenMCCodeEmitter.inc -gen-emitter)
tablegen(LLVM WebAssemblyGenRegisterInfo.inc -gen-register-info)
tablegen(LLVM WebAssemblyGenSDNodeInfo.inc -gen-sd-node-info)
tablegen(LLVM WebAssemblyGenSubtargetInfo.inc -gen-subtarget)

add_public_tablegen_target(WebAssemblyCommonTableGen)
Expand Down
64 changes: 0 additions & 64 deletions llvm/lib/Target/WebAssembly/WebAssemblyISD.def

This file was deleted.

21 changes: 2 additions & 19 deletions llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -942,20 +942,6 @@ MachineBasicBlock *WebAssemblyTargetLowering::EmitInstrWithCustomInserter(
}
}

const char *
WebAssemblyTargetLowering::getTargetNodeName(unsigned Opcode) const {
switch (static_cast<WebAssemblyISD::NodeType>(Opcode)) {
case WebAssemblyISD::FIRST_NUMBER:
break;
#define HANDLE_NODETYPE(NODE) \
case WebAssemblyISD::NODE: \
return "WebAssemblyISD::" #NODE;
#include "WebAssemblyISD.def"
#undef HANDLE_NODETYPE
}
return nullptr;
}

std::pair<unsigned, const TargetRegisterClass *>
WebAssemblyTargetLowering::getRegForInlineAsmConstraint(
const TargetRegisterInfo *TRI, StringRef Constraint, MVT VT) const {
Expand Down Expand Up @@ -1830,11 +1816,8 @@ SDValue WebAssemblyTargetLowering::LowerLoad(SDValue Op,

SDValue Idx = DAG.getTargetConstant(*Local, Base, MVT::i32);
EVT LocalVT = LN->getValueType(0);
SDValue LocalGet = DAG.getNode(WebAssemblyISD::LOCAL_GET, DL, LocalVT,
{LN->getChain(), Idx});
SDValue Result = DAG.getMergeValues({LocalGet, LN->getChain()}, DL);
assert(Result->getNumValues() == 2 && "Loads must carry a chain!");
return Result;
return DAG.getNode(WebAssemblyISD::LOCAL_GET, DL, {LocalVT, MVT::Other},
{LN->getChain(), Idx});
}

if (WebAssembly::isWasmVarAddressSpace(LN->getAddressSpace()))
Expand Down
12 changes: 0 additions & 12 deletions llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,17 +19,6 @@

namespace llvm {

namespace WebAssemblyISD {

enum NodeType : unsigned {
FIRST_NUMBER = ISD::BUILTIN_OP_END,
#define HANDLE_NODETYPE(NODE) NODE,
#include "WebAssemblyISD.def"
#undef HANDLE_NODETYPE
};

} // end namespace WebAssemblyISD

class WebAssemblySubtarget;

class WebAssemblyTargetLowering final : public TargetLowering {
Expand All @@ -53,7 +42,6 @@ class WebAssemblyTargetLowering final : public TargetLowering {
MachineBasicBlock *
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;
Expand Down
24 changes: 16 additions & 8 deletions llvm/lib/Target/WebAssembly/WebAssemblySelectionDAGInfo.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,23 +11,31 @@
///
//===----------------------------------------------------------------------===//

#include "WebAssemblySelectionDAGInfo.h"
#include "WebAssemblyTargetMachine.h"

#define GET_SDNODE_DESC
#include "WebAssemblyGenSDNodeInfo.inc"

using namespace llvm;

#define DEBUG_TYPE "wasm-selectiondag-info"

WebAssemblySelectionDAGInfo::WebAssemblySelectionDAGInfo()
: SelectionDAGGenTargetInfo(WebAssemblyGenSDNodeInfo) {}

WebAssemblySelectionDAGInfo::~WebAssemblySelectionDAGInfo() = default; // anchor

bool WebAssemblySelectionDAGInfo::isTargetMemoryOpcode(unsigned Opcode) const {
const char *
WebAssemblySelectionDAGInfo::getTargetNodeName(unsigned Opcode) const {
switch (static_cast<WebAssemblyISD::NodeType>(Opcode)) {
default:
return false;
case WebAssemblyISD::GLOBAL_GET:
case WebAssemblyISD::GLOBAL_SET:
case WebAssemblyISD::TABLE_GET:
case WebAssemblyISD::TABLE_SET:
return true;
case WebAssemblyISD::CALL:
return "WebAssemblyISD::CALL";
case WebAssemblyISD::RET_CALL:
return "WebAssemblyISD::RET_CALL";
}

return SelectionDAGGenTargetInfo::getTargetNodeName(Opcode);
}

SDValue WebAssemblySelectionDAGInfo::EmitTargetCodeForMemcpy(
Expand Down
17 changes: 15 additions & 2 deletions llvm/lib/Target/WebAssembly/WebAssemblySelectionDAGInfo.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,26 @@

#include "llvm/CodeGen/SelectionDAGTargetInfo.h"

#define GET_SDNODE_ENUM
#include "WebAssemblyGenSDNodeInfo.inc"

namespace llvm {
namespace WebAssemblyISD {

enum NodeType : unsigned {
CALL = GENERATED_OPCODE_END,
RET_CALL,
};

class WebAssemblySelectionDAGInfo final : public SelectionDAGTargetInfo {
} // namespace WebAssemblyISD

class WebAssemblySelectionDAGInfo final : public SelectionDAGGenTargetInfo {
public:
WebAssemblySelectionDAGInfo();

~WebAssemblySelectionDAGInfo() override;

bool isTargetMemoryOpcode(unsigned Opcode) const override;
const char *getTargetNodeName(unsigned Opcode) const override;

SDValue EmitTargetCodeForMemcpy(SelectionDAG &DAG, const SDLoc &dl,
SDValue Chain, SDValue Op1, SDValue Op2,
Expand Down
Loading