LLVM  13.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 
20 class SystemZTargetMachine;
21 
23 public:
24  explicit SystemZSelectionDAGInfo() = default;
25 
27  SDValue Chain, SDValue Dst, SDValue Src,
28  SDValue Size, Align Alignment,
29  bool IsVolatile, bool AlwaysInline,
30  MachinePointerInfo DstPtrInfo,
31  MachinePointerInfo SrcPtrInfo) const override;
32 
34  SDValue Chain, SDValue Dst, SDValue Byte,
35  SDValue Size, Align Alignment,
36  bool IsVolatile,
37  MachinePointerInfo DstPtrInfo) const override;
38 
39  std::pair<SDValue, SDValue>
41  SDValue Src1, SDValue Src2, SDValue Size,
42  MachinePointerInfo Op1PtrInfo,
43  MachinePointerInfo Op2PtrInfo) const override;
44 
45  std::pair<SDValue, SDValue>
47  SDValue Src, SDValue Char, SDValue Length,
48  MachinePointerInfo SrcPtrInfo) const override;
49 
50  std::pair<SDValue, SDValue> EmitTargetCodeForStrcpy(
51  SelectionDAG &DAG, const SDLoc &DL, SDValue Chain, SDValue Dest,
52  SDValue Src, MachinePointerInfo DestPtrInfo,
53  MachinePointerInfo SrcPtrInfo, bool isStpcpy) const override;
54 
55  std::pair<SDValue, SDValue>
57  SDValue Src1, SDValue Src2,
58  MachinePointerInfo Op1PtrInfo,
59  MachinePointerInfo Op2PtrInfo) const override;
60 
61  std::pair<SDValue, SDValue>
63  SDValue Src,
64  MachinePointerInfo SrcPtrInfo) const override;
65 
66  std::pair<SDValue, SDValue>
68  SDValue Src, SDValue MaxLength,
69  MachinePointerInfo SrcPtrInfo) const override;
70 };
71 
72 } // end namespace llvm
73 
74 #endif
llvm::Check::Size
@ Size
Definition: FileCheck.h:73
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:231
llvm
Definition: AllocatorList.h:23
llvm::SDLoc
Wrapper class for IR location info (IR ordering and DebugLoc) to be passed into SDNode creation funct...
Definition: SelectionDAGNodes.h:1078
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:269
llvm::SelectionDAG
This is used to represent a portion of an LLVM function in a low-level Data Dependence DAG representa...
Definition: SelectionDAG.h:216
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:221
llvm::SystemZSelectionDAGInfo::EmitTargetCodeForStrlen
std::pair< SDValue, SDValue > EmitTargetCodeForStrlen(SelectionDAG &DAG, const SDLoc &DL, SDValue Chain, SDValue Src, MachinePointerInfo SrcPtrInfo) const override
Definition: SystemZSelectionDAGInfo.cpp:262
llvm::MachinePointerInfo
This class contains a discriminated union of information about pointers in memory operands,...
Definition: MachineMemOperand.h:37
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:195
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:48
llvm::AMDGPU::HSAMD::Kernel::Arg::Key::IsVolatile
constexpr char IsVolatile[]
Key for Kernel::Arg::Metadata::mIsVolatile.
Definition: AMDGPUMetadata.h:194
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:180
llvm::SDValue
Unlike LLVM values, Selection DAG nodes may return multiple values as the result of a computation.
Definition: SelectionDAGNodes.h:138
SelectionDAGTargetInfo.h
llvm::SystemZSelectionDAGInfo
Definition: SystemZSelectionDAGInfo.h:22
llvm::SystemZSelectionDAGInfo::SystemZSelectionDAGInfo
SystemZSelectionDAGInfo()=default
llvm::SystemZSelectionDAGInfo::EmitTargetCodeForMemset
SDValue EmitTargetCodeForMemset(SelectionDAG &DAG, const SDLoc &DL, SDValue Chain, SDValue Dst, SDValue Byte, SDValue Size, Align Alignment, bool IsVolatile, MachinePointerInfo DstPtrInfo) const override
Emit target-specific code that performs a memset.
Definition: SystemZSelectionDAGInfo.cpp:75