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