LLVM 20.0.0git
SystemZSelectionDAGInfo.h
Go to the documentation of this file.
1//===-- SystemZSelectionDAGInfo.h - SystemZ SelectionDAG Info ---*- C++ -*-===//
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// This file defines the SystemZ subclass for SelectionDAGTargetInfo.
10//
11//===----------------------------------------------------------------------===//
12
13#ifndef LLVM_LIB_TARGET_SYSTEMZ_SYSTEMZSELECTIONDAGINFO_H
14#define LLVM_LIB_TARGET_SYSTEMZ_SYSTEMZSELECTIONDAGINFO_H
15
17
18namespace llvm {
19
21public:
22 explicit SystemZSelectionDAGInfo() = default;
23
25 SDValue Chain, SDValue Dst, SDValue Src,
26 SDValue Size, Align Alignment,
27 bool IsVolatile, bool AlwaysInline,
28 MachinePointerInfo DstPtrInfo,
29 MachinePointerInfo SrcPtrInfo) const override;
30
32 SDValue Chain, SDValue Dst, SDValue Byte,
33 SDValue Size, Align Alignment,
34 bool IsVolatile, bool AlwaysInline,
35 MachinePointerInfo DstPtrInfo) const override;
36
37 std::pair<SDValue, SDValue>
39 SDValue Src1, SDValue Src2, SDValue Size,
40 MachinePointerInfo Op1PtrInfo,
41 MachinePointerInfo Op2PtrInfo) const override;
42
43 std::pair<SDValue, SDValue>
45 SDValue Src, SDValue Char, SDValue Length,
46 MachinePointerInfo SrcPtrInfo) const override;
47
48 std::pair<SDValue, SDValue> EmitTargetCodeForStrcpy(
49 SelectionDAG &DAG, const SDLoc &DL, SDValue Chain, SDValue Dest,
50 SDValue Src, MachinePointerInfo DestPtrInfo,
51 MachinePointerInfo SrcPtrInfo, bool isStpcpy) const override;
52
53 std::pair<SDValue, SDValue>
55 SDValue Src1, SDValue Src2,
56 MachinePointerInfo Op1PtrInfo,
57 MachinePointerInfo Op2PtrInfo) const override;
58
59 std::pair<SDValue, SDValue>
61 SDValue Src,
62 MachinePointerInfo SrcPtrInfo) const override;
63
64 std::pair<SDValue, SDValue>
66 SDValue Src, SDValue MaxLength,
67 MachinePointerInfo SrcPtrInfo) const override;
68};
69
70} // end namespace llvm
71
72#endif
MachineBasicBlock MachineBasicBlock::iterator DebugLoc DL
uint64_t Size
Wrapper class for IR location info (IR ordering and DebugLoc) to be passed into SDNode creation funct...
Unlike LLVM values, Selection DAG nodes may return multiple values as the result of a computation.
Targets can subclass this to parameterize the SelectionDAG lowering and instruction selection process...
This is used to represent a portion of an LLVM function in a low-level Data Dependence DAG representa...
Definition: SelectionDAG.h:228
SDValue EmitTargetCodeForMemset(SelectionDAG &DAG, const SDLoc &DL, SDValue Chain, SDValue Dst, SDValue Byte, SDValue Size, Align Alignment, bool IsVolatile, bool AlwaysInline, MachinePointerInfo DstPtrInfo) const override
Emit target-specific code that performs a memset.
std::pair< SDValue, SDValue > EmitTargetCodeForMemchr(SelectionDAG &DAG, const SDLoc &DL, SDValue Chain, SDValue Src, SDValue Char, SDValue Length, MachinePointerInfo SrcPtrInfo) const override
Emit target-specific code that performs a memchr, in cases where that is faster than a libcall.
std::pair< SDValue, SDValue > EmitTargetCodeForStrlen(SelectionDAG &DAG, const SDLoc &DL, SDValue Chain, SDValue Src, MachinePointerInfo SrcPtrInfo) const override
std::pair< SDValue, SDValue > EmitTargetCodeForStrcmp(SelectionDAG &DAG, const SDLoc &DL, SDValue Chain, SDValue Src1, SDValue Src2, MachinePointerInfo Op1PtrInfo, MachinePointerInfo Op2PtrInfo) const override
Emit target-specific code that performs a strcmp, in cases where that is faster than a libcall.
std::pair< SDValue, SDValue > EmitTargetCodeForStrnlen(SelectionDAG &DAG, const SDLoc &DL, SDValue Chain, SDValue Src, SDValue MaxLength, MachinePointerInfo SrcPtrInfo) const override
std::pair< SDValue, SDValue > EmitTargetCodeForStrcpy(SelectionDAG &DAG, const SDLoc &DL, SDValue Chain, SDValue Dest, SDValue Src, MachinePointerInfo DestPtrInfo, MachinePointerInfo SrcPtrInfo, bool isStpcpy) const override
Emit target-specific code that performs a strcpy or stpcpy, in cases where that is faster than a libc...
SDValue EmitTargetCodeForMemcpy(SelectionDAG &DAG, const SDLoc &DL, SDValue Chain, SDValue Dst, SDValue Src, SDValue Size, Align Alignment, bool IsVolatile, bool AlwaysInline, MachinePointerInfo DstPtrInfo, MachinePointerInfo SrcPtrInfo) const override
Emit target-specific code that performs a memcpy.
std::pair< SDValue, SDValue > EmitTargetCodeForMemcmp(SelectionDAG &DAG, const SDLoc &DL, SDValue Chain, SDValue Src1, SDValue Src2, SDValue Size, MachinePointerInfo Op1PtrInfo, MachinePointerInfo Op2PtrInfo) const override
Emit target-specific code that performs a memcmp/bcmp, in cases where that is faster than a libcall.
This is an optimization pass for GlobalISel generic memory operations.
Definition: AddressRanges.h:18
@ Length
Definition: DWP.cpp:480
This struct is a compact representation of a valid (non-zero power of two) alignment.
Definition: Alignment.h:39
This class contains a discriminated union of information about pointers in memory operands,...