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_VE_VESELECTIONDAGINFO_H
10#define LLVM_LIB_TARGET_VE_VESELECTIONDAGINFO_H
11
12#include "llvm/CodeGen/SelectionDAGTargetInfo.h"
13
14#define GET_SDNODE_ENUM
15#include "VEGenSDNodeInfo.inc"
16
17namespace llvm {
18namespace VEISD {
19
20enum NodeType : unsigned {
21 GLOBAL_BASE_REG = GENERATED_OPCODE_END, // Global base reg for PIC.
22
23 // Annotation as a wrapper. LEGALAVL(VL) means that VL refers to 64bit of
24 // data, whereas the raw EVL coming in from VP nodes always refers to number
25 // of elements, regardless of their size.
26 LEGALAVL,
27};
28
29} // namespace VEISD
30
31class VESelectionDAGInfo : public SelectionDAGGenTargetInfo {
32public:
33 VESelectionDAGInfo();
34
35 ~VESelectionDAGInfo() override;
36
37 const char *getTargetNodeName(unsigned Opcode) const override;
38
39 void verifyTargetNode(const SelectionDAG &DAG,
40 const SDNode *N) const override;
41};
42
43} // namespace llvm
44
45#endif // LLVM_LIB_TARGET_VE_VESELECTIONDAGINFO_H
46