LLVM 22.0.0git
NVPTXSelectionDAGInfo.h
Go to the documentation of this file.
1//===----------------------------------------------------------------------===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef LLVM_LIB_TARGET_NVPTX_NVPTXSELECTIONDAGINFO_H
10#define LLVM_LIB_TARGET_NVPTX_NVPTXSELECTIONDAGINFO_H
11
13
14#define GET_SDNODE_ENUM
15#include "NVPTXGenSDNodeInfo.inc"
16
17namespace llvm {
18namespace NVPTXISD {
19
20enum NodeType : unsigned {
21 SETP_F16X2 = GENERATED_OPCODE_END,
24
26
27 /// These nodes are used to lower atomic instructions with i128 type. They are
28 /// similar to the generic nodes, but the input and output values are split
29 /// into two 64-bit values.
30 /// ValLo, ValHi, OUTCHAIN = ATOMIC_CMP_SWAP_B128(INCHAIN, ptr, cmpLo, cmpHi,
31 /// swapLo, swapHi)
32 /// ValLo, ValHi, OUTCHAIN = ATOMIC_SWAP_B128(INCHAIN, ptr, amtLo, amtHi)
35
39 LDUV2, // LDU.v2
40 LDUV4, // LDU.v4
45};
46
47} // namespace NVPTXISD
48
50public:
52
54
55 const char *getTargetNodeName(unsigned Opcode) const override;
56
57 bool isTargetMemoryOpcode(unsigned Opcode) const override;
58
59 void verifyTargetNode(const SelectionDAG &DAG,
60 const SDNode *N) const override;
61};
62
63} // namespace llvm
64
65#endif // LLVM_LIB_TARGET_NVPTX_NVPTXSELECTIONDAGINFO_H
bool isTargetMemoryOpcode(unsigned Opcode) const override
Returns true if a node with the given target-specific opcode has a memory operand.
const char * getTargetNodeName(unsigned Opcode) const override
Returns the name of the given target-specific opcode, suitable for debug printing.
void verifyTargetNode(const SelectionDAG &DAG, const SDNode *N) const override
Checks that the given target-specific node is valid. Aborts if it is not.
Represents one node in the SelectionDAG.
SelectionDAGGenTargetInfo(const SDNodeInfo &GenNodeInfo)
This is used to represent a portion of an LLVM function in a low-level Data Dependence DAG representa...
@ ATOMIC_CMP_SWAP_B128
These nodes are used to lower atomic instructions with i128 type.
This is an optimization pass for GlobalISel generic memory operations.
#define N