LLVM  16.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 
18 namespace llvm {
19 
21 public:
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
llvm::SystemZSelectionDAGInfo::EmitTargetCodeForStrcmp
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.
Definition: SystemZSelectionDAGInfo.cpp:224
llvm
This is an optimization pass for GlobalISel generic memory operations.
Definition: AddressRanges.h:18
llvm::SDLoc
Wrapper class for IR location info (IR ordering and DebugLoc) to be passed into SDNode creation funct...
Definition: SelectionDAGNodes.h:1094
llvm::SystemZSelectionDAGInfo::EmitTargetCodeForStrnlen
std::pair< SDValue, SDValue > EmitTargetCodeForStrnlen(SelectionDAG &DAG, const SDLoc &DL, SDValue Chain, SDValue Src, SDValue MaxLength, MachinePointerInfo SrcPtrInfo) const override
Definition: SystemZSelectionDAGInfo.cpp:262
llvm::SystemZSelectionDAGInfo::EmitTargetCodeForMemset
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.
Definition: SystemZSelectionDAGInfo.cpp:88
llvm::SelectionDAG
This is used to represent a portion of an LLVM function in a low-level Data Dependence DAG representa...
Definition: SelectionDAG.h:220
llvm::SelectionDAGTargetInfo
Targets can subclass this to parameterize the SelectionDAG lowering and instruction selection process...
Definition: SelectionDAGTargetInfo.h:31
llvm::Align
This struct is a compact representation of a valid (non-zero power of two) alignment.
Definition: Alignment.h:39
llvm::SystemZSelectionDAGInfo::EmitTargetCodeForStrcpy
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...
Definition: SystemZSelectionDAGInfo.cpp:214
llvm::SystemZSelectionDAGInfo::EmitTargetCodeForStrlen
std::pair< SDValue, SDValue > EmitTargetCodeForStrlen(SelectionDAG &DAG, const SDLoc &DL, SDValue Chain, SDValue Src, MachinePointerInfo SrcPtrInfo) const override
Definition: SystemZSelectionDAGInfo.cpp:255
llvm::MachinePointerInfo
This class contains a discriminated union of information about pointers in memory operands,...
Definition: MachineMemOperand.h:39
llvm::SystemZSelectionDAGInfo::EmitTargetCodeForMemchr
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.
Definition: SystemZSelectionDAGInfo.cpp:188
DL
MachineBasicBlock MachineBasicBlock::iterator DebugLoc DL
Definition: AArch64SLSHardening.cpp:76
llvm::SystemZSelectionDAGInfo::EmitTargetCodeForMemcpy
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.
Definition: SystemZSelectionDAGInfo.cpp:60
llvm::AMDGPU::HSAMD::Kernel::Arg::Key::IsVolatile
constexpr char IsVolatile[]
Key for Kernel::Arg::Metadata::mIsVolatile.
Definition: AMDGPUMetadata.h:199
llvm::SystemZSelectionDAGInfo::EmitTargetCodeForMemcmp
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.
Definition: SystemZSelectionDAGInfo.cpp:172
llvm::SDValue
Unlike LLVM values, Selection DAG nodes may return multiple values as the result of a computation.
Definition: SelectionDAGNodes.h:141
SelectionDAGTargetInfo.h
llvm::SystemZSelectionDAGInfo
Definition: SystemZSelectionDAGInfo.h:20
llvm::SystemZSelectionDAGInfo::SystemZSelectionDAGInfo
SystemZSelectionDAGInfo()=default