Skip to content

Commit 28c407f

Browse files
committed
WebAssembly (BR_IF removed)
1 parent e20b47e commit 28c407f

File tree

6 files changed

+48
-97
lines changed

6 files changed

+48
-97
lines changed

llvm/lib/Target/WebAssembly/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ tablegen(LLVM WebAssemblyGenFastISel.inc -gen-fast-isel)
1010
tablegen(LLVM WebAssemblyGenInstrInfo.inc -gen-instr-info)
1111
tablegen(LLVM WebAssemblyGenMCCodeEmitter.inc -gen-emitter)
1212
tablegen(LLVM WebAssemblyGenRegisterInfo.inc -gen-register-info)
13+
tablegen(LLVM WebAssemblyGenSDNodeInfo.inc -gen-sd-node-info)
1314
tablegen(LLVM WebAssemblyGenSubtargetInfo.inc -gen-subtarget)
1415

1516
add_public_tablegen_target(WebAssemblyCommonTableGen)

llvm/lib/Target/WebAssembly/WebAssemblyISD.def

Lines changed: 0 additions & 61 deletions
This file was deleted.

llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -867,20 +867,6 @@ MachineBasicBlock *WebAssemblyTargetLowering::EmitInstrWithCustomInserter(
867867
}
868868
}
869869

870-
const char *
871-
WebAssemblyTargetLowering::getTargetNodeName(unsigned Opcode) const {
872-
switch (static_cast<WebAssemblyISD::NodeType>(Opcode)) {
873-
case WebAssemblyISD::FIRST_NUMBER:
874-
break;
875-
#define HANDLE_NODETYPE(NODE) \
876-
case WebAssemblyISD::NODE: \
877-
return "WebAssemblyISD::" #NODE;
878-
#include "WebAssemblyISD.def"
879-
#undef HANDLE_NODETYPE
880-
}
881-
return nullptr;
882-
}
883-
884870
std::pair<unsigned, const TargetRegisterClass *>
885871
WebAssemblyTargetLowering::getRegForInlineAsmConstraint(
886872
const TargetRegisterInfo *TRI, StringRef Constraint, MVT VT) const {
@@ -1727,7 +1713,7 @@ SDValue WebAssemblyTargetLowering::LowerLoad(SDValue Op,
17271713
SDValue Idx = DAG.getTargetConstant(*Local, Base, MVT::i32);
17281714
EVT LocalVT = LN->getValueType(0);
17291715
SDValue LocalGet = DAG.getNode(WebAssemblyISD::LOCAL_GET, DL, LocalVT,
1730-
{LN->getChain(), Idx});
1716+
{LN->getChain(), Idx});
17311717
SDValue Result = DAG.getMergeValues({LocalGet, LN->getChain()}, DL);
17321718
assert(Result->getNumValues() == 2 && "Loads must carry a chain!");
17331719
return Result;

llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.h

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,6 @@
1919

2020
namespace llvm {
2121

22-
namespace WebAssemblyISD {
23-
24-
enum NodeType : unsigned {
25-
FIRST_NUMBER = ISD::BUILTIN_OP_END,
26-
#define HANDLE_NODETYPE(NODE) NODE,
27-
#include "WebAssemblyISD.def"
28-
#undef HANDLE_NODETYPE
29-
};
30-
31-
} // end namespace WebAssemblyISD
32-
3322
class WebAssemblySubtarget;
3423

3524
class WebAssemblyTargetLowering final : public TargetLowering {
@@ -53,7 +42,6 @@ class WebAssemblyTargetLowering final : public TargetLowering {
5342
MachineBasicBlock *
5443
EmitInstrWithCustomInserter(MachineInstr &MI,
5544
MachineBasicBlock *MBB) const override;
56-
const char *getTargetNodeName(unsigned Opcode) const override;
5745
std::pair<unsigned, const TargetRegisterClass *>
5846
getRegForInlineAsmConstraint(const TargetRegisterInfo *TRI,
5947
StringRef Constraint, MVT VT) const override;

llvm/lib/Target/WebAssembly/WebAssemblySelectionDAGInfo.cpp

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,23 +11,44 @@
1111
///
1212
//===----------------------------------------------------------------------===//
1313

14+
#include "WebAssemblySelectionDAGInfo.h"
1415
#include "WebAssemblyTargetMachine.h"
16+
17+
#define GET_SDNODE_DESC
18+
#include "WebAssemblyGenSDNodeInfo.inc"
19+
1520
using namespace llvm;
1621

1722
#define DEBUG_TYPE "wasm-selectiondag-info"
1823

24+
WebAssemblySelectionDAGInfo::WebAssemblySelectionDAGInfo()
25+
: SelectionDAGGenTargetInfo(WebAssemblyGenSDNodeInfo) {}
26+
1927
WebAssemblySelectionDAGInfo::~WebAssemblySelectionDAGInfo() = default; // anchor
2028

21-
bool WebAssemblySelectionDAGInfo::isTargetMemoryOpcode(unsigned Opcode) const {
29+
const char *
30+
WebAssemblySelectionDAGInfo::getTargetNodeName(unsigned Opcode) const {
2231
switch (static_cast<WebAssemblyISD::NodeType>(Opcode)) {
32+
case WebAssemblyISD::CALL:
33+
return "WebAssemblyISD::CALL";
34+
case WebAssemblyISD::RET_CALL:
35+
return "WebAssemblyISD::RET_CALL";
36+
}
37+
38+
return SelectionDAGGenTargetInfo::getTargetNodeName(Opcode);
39+
}
40+
41+
void WebAssemblySelectionDAGInfo::verifyTargetNode(const SelectionDAG &DAG,
42+
const SDNode *N) const {
43+
switch (N->getOpcode()) {
2344
default:
24-
return false;
25-
case WebAssemblyISD::GLOBAL_GET:
26-
case WebAssemblyISD::GLOBAL_SET:
27-
case WebAssemblyISD::TABLE_GET:
28-
case WebAssemblyISD::TABLE_SET:
29-
return true;
45+
break;
46+
case WebAssemblyISD::LOCAL_GET:
47+
// invalid number of results; expected 2, got 1
48+
return;
3049
}
50+
51+
SelectionDAGGenTargetInfo::verifyTargetNode(DAG, N);
3152
}
3253

3354
SDValue WebAssemblySelectionDAGInfo::EmitTargetCodeForMemcpy(

llvm/lib/Target/WebAssembly/WebAssemblySelectionDAGInfo.h

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,29 @@
1717

1818
#include "llvm/CodeGen/SelectionDAGTargetInfo.h"
1919

20+
#define GET_SDNODE_ENUM
21+
#include "WebAssemblyGenSDNodeInfo.inc"
22+
2023
namespace llvm {
24+
namespace WebAssemblyISD {
25+
26+
enum NodeType : unsigned {
27+
CALL = GENERATED_OPCODE_END,
28+
RET_CALL,
29+
};
2130

22-
class WebAssemblySelectionDAGInfo final : public SelectionDAGTargetInfo {
31+
} // namespace WebAssemblyISD
32+
33+
class WebAssemblySelectionDAGInfo final : public SelectionDAGGenTargetInfo {
2334
public:
35+
WebAssemblySelectionDAGInfo();
36+
2437
~WebAssemblySelectionDAGInfo() override;
2538

26-
bool isTargetMemoryOpcode(unsigned Opcode) const override;
39+
const char *getTargetNodeName(unsigned Opcode) const override;
40+
41+
void verifyTargetNode(const SelectionDAG &DAG,
42+
const SDNode *N) const override;
2743

2844
SDValue EmitTargetCodeForMemcpy(SelectionDAG &DAG, const SDLoc &dl,
2945
SDValue Chain, SDValue Op1, SDValue Op2,

0 commit comments

Comments
 (0)