xref: /minix3/external/bsd/llvm/dist/llvm/lib/Target/SystemZ/SystemZSelectionDAGInfo.h (revision 0a6a1f1d05b60e214de2f05a7310ddd1f0e590e7)
1f4a2713aSLionel Sambuc //===-- SystemZSelectionDAGInfo.h - SystemZ SelectionDAG Info ---*- C++ -*-===//
2f4a2713aSLionel Sambuc //
3f4a2713aSLionel Sambuc //                     The LLVM Compiler Infrastructure
4f4a2713aSLionel Sambuc //
5f4a2713aSLionel Sambuc // This file is distributed under the University of Illinois Open Source
6f4a2713aSLionel Sambuc // License. See LICENSE.TXT for details.
7f4a2713aSLionel Sambuc //
8f4a2713aSLionel Sambuc //===----------------------------------------------------------------------===//
9f4a2713aSLionel Sambuc //
10f4a2713aSLionel Sambuc // This file defines the SystemZ subclass for TargetSelectionDAGInfo.
11f4a2713aSLionel Sambuc //
12f4a2713aSLionel Sambuc //===----------------------------------------------------------------------===//
13f4a2713aSLionel Sambuc 
14*0a6a1f1dSLionel Sambuc #ifndef LLVM_LIB_TARGET_SYSTEMZ_SYSTEMZSELECTIONDAGINFO_H
15*0a6a1f1dSLionel Sambuc #define LLVM_LIB_TARGET_SYSTEMZ_SYSTEMZSELECTIONDAGINFO_H
16f4a2713aSLionel Sambuc 
17f4a2713aSLionel Sambuc #include "llvm/Target/TargetSelectionDAGInfo.h"
18f4a2713aSLionel Sambuc 
19f4a2713aSLionel Sambuc namespace llvm {
20f4a2713aSLionel Sambuc 
21f4a2713aSLionel Sambuc class SystemZTargetMachine;
22f4a2713aSLionel Sambuc 
23f4a2713aSLionel Sambuc class SystemZSelectionDAGInfo : public TargetSelectionDAGInfo {
24f4a2713aSLionel Sambuc public:
25*0a6a1f1dSLionel Sambuc   explicit SystemZSelectionDAGInfo(const DataLayout &DL);
26f4a2713aSLionel Sambuc   ~SystemZSelectionDAGInfo();
27f4a2713aSLionel Sambuc 
28f4a2713aSLionel Sambuc   SDValue EmitTargetCodeForMemcpy(SelectionDAG &DAG, SDLoc DL, SDValue Chain,
29f4a2713aSLionel Sambuc                                   SDValue Dst, SDValue Src,
30f4a2713aSLionel Sambuc                                   SDValue Size, unsigned Align,
31f4a2713aSLionel Sambuc                                   bool IsVolatile, bool AlwaysInline,
32f4a2713aSLionel Sambuc                                   MachinePointerInfo DstPtrInfo,
33*0a6a1f1dSLionel Sambuc                                   MachinePointerInfo SrcPtrInfo) const override;
34f4a2713aSLionel Sambuc 
35*0a6a1f1dSLionel Sambuc   SDValue EmitTargetCodeForMemset(SelectionDAG &DAG, SDLoc DL,
36f4a2713aSLionel Sambuc                                   SDValue Chain, SDValue Dst, SDValue Byte,
37f4a2713aSLionel Sambuc                                   SDValue Size, unsigned Align, bool IsVolatile,
38*0a6a1f1dSLionel Sambuc                                   MachinePointerInfo DstPtrInfo) const override;
39f4a2713aSLionel Sambuc 
40*0a6a1f1dSLionel Sambuc   std::pair<SDValue, SDValue>
41f4a2713aSLionel Sambuc   EmitTargetCodeForMemcmp(SelectionDAG &DAG, SDLoc DL, SDValue Chain,
42f4a2713aSLionel Sambuc                           SDValue Src1, SDValue Src2, SDValue Size,
43f4a2713aSLionel Sambuc                           MachinePointerInfo Op1PtrInfo,
44*0a6a1f1dSLionel Sambuc                           MachinePointerInfo Op2PtrInfo) const override;
45f4a2713aSLionel Sambuc 
46*0a6a1f1dSLionel Sambuc   std::pair<SDValue, SDValue>
47f4a2713aSLionel Sambuc   EmitTargetCodeForMemchr(SelectionDAG &DAG, SDLoc DL, SDValue Chain,
48f4a2713aSLionel Sambuc                           SDValue Src, SDValue Char, SDValue Length,
49*0a6a1f1dSLionel Sambuc                           MachinePointerInfo SrcPtrInfo) const override;
50f4a2713aSLionel Sambuc 
51*0a6a1f1dSLionel Sambuc   std::pair<SDValue, SDValue>
52f4a2713aSLionel Sambuc   EmitTargetCodeForStrcpy(SelectionDAG &DAG, SDLoc DL, SDValue Chain,
53f4a2713aSLionel Sambuc                           SDValue Dest, SDValue Src,
54f4a2713aSLionel Sambuc                           MachinePointerInfo DestPtrInfo,
55f4a2713aSLionel Sambuc                           MachinePointerInfo SrcPtrInfo,
56*0a6a1f1dSLionel Sambuc                           bool isStpcpy) const override;
57f4a2713aSLionel Sambuc 
58*0a6a1f1dSLionel Sambuc   std::pair<SDValue, SDValue>
59f4a2713aSLionel Sambuc   EmitTargetCodeForStrcmp(SelectionDAG &DAG, SDLoc DL, SDValue Chain,
60f4a2713aSLionel Sambuc                           SDValue Src1, SDValue Src2,
61f4a2713aSLionel Sambuc                           MachinePointerInfo Op1PtrInfo,
62*0a6a1f1dSLionel Sambuc                           MachinePointerInfo Op2PtrInfo) const override;
63f4a2713aSLionel Sambuc 
64*0a6a1f1dSLionel Sambuc   std::pair<SDValue, SDValue>
65f4a2713aSLionel Sambuc   EmitTargetCodeForStrlen(SelectionDAG &DAG, SDLoc DL, SDValue Chain,
66*0a6a1f1dSLionel Sambuc                           SDValue Src,
67*0a6a1f1dSLionel Sambuc                           MachinePointerInfo SrcPtrInfo) const override;
68f4a2713aSLionel Sambuc 
69*0a6a1f1dSLionel Sambuc   std::pair<SDValue, SDValue>
70f4a2713aSLionel Sambuc   EmitTargetCodeForStrnlen(SelectionDAG &DAG, SDLoc DL, SDValue Chain,
71f4a2713aSLionel Sambuc                            SDValue Src, SDValue MaxLength,
72*0a6a1f1dSLionel Sambuc                            MachinePointerInfo SrcPtrInfo) const override;
73f4a2713aSLionel Sambuc };
74f4a2713aSLionel Sambuc 
75*0a6a1f1dSLionel Sambuc } // end namespace llvm
76f4a2713aSLionel Sambuc 
77f4a2713aSLionel Sambuc #endif
78