LLVM 23.0.0git
AMDGPUSelectionDAGInfo.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_AMDGPU_AMDGPUSELECTIONDAGINFO_H
10#define LLVM_LIB_TARGET_AMDGPU_AMDGPUSELECTIONDAGINFO_H
11
13
14#define GET_SDNODE_ENUM
15#include "AMDGPUGenSDNodeInfo.inc"
16
17namespace llvm {
18namespace AMDGPUISD {
19
20enum NodeType : unsigned {
21 // Convert a unswizzled wave uniform stack address to an address compatible
22 // with a vector offset for use in stack access.
23 WAVE_ADDRESS = GENERATED_OPCODE_END,
24
31
32 /// This node is for VLIW targets and it is used to represent a vector
33 /// that is stored in consecutive registers with the same channel.
34 /// For example:
35 /// |X |Y|Z|W|
36 /// T0|v.x| | | |
37 /// T1|v.y| | | |
38 /// T2|v.z| | | |
39 /// T3|v.w| | | |
41
43};
44
45} // namespace AMDGPUISD
46
48public:
50
52
53 bool disableGenericCombines(CodeGenOptLevel OptLevel) const override {
54 // Disable generic DAG combines at -O0 to preserve debuggability.
55 // This prevents optimizations like constant reassociation that would
56 // eliminate intermediate instructions users want to step through.
57 return OptLevel == CodeGenOptLevel::None;
58 }
59
60 const char *getTargetNodeName(unsigned Opcode) const override;
61
62 void verifyTargetNode(const SelectionDAG &DAG,
63 const SDNode *N) const override;
64};
65
66} // namespace llvm
67
68#endif // LLVM_LIB_TARGET_AMDGPU_AMDGPUSELECTIONDAGINFO_H
void verifyTargetNode(const SelectionDAG &DAG, const SDNode *N) const override
Checks that the given target-specific node is valid. Aborts if it is not.
const char * getTargetNodeName(unsigned Opcode) const override
Returns the name of the given target-specific opcode, suitable for debug printing.
bool disableGenericCombines(CodeGenOptLevel OptLevel) const override
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...
@ BUILD_VERTICAL_VECTOR
This node is for VLIW targets and it is used to represent a vector that is stored in consecutive regi...
This is an optimization pass for GlobalISel generic memory operations.
CodeGenOptLevel
Code generation optimization level.
Definition CodeGen.h:82
#define N