SystemZSelectionDAGInfo.h revision 276479
1103285Sikob//===-- SystemZSelectionDAGInfo.h - SystemZ SelectionDAG Info ---*- C++ -*-===//
2122526Ssimokawa//
3122526Ssimokawa//                     The LLVM Compiler Infrastructure
4103285Sikob//
5103285Sikob// This file is distributed under the University of Illinois Open Source
6103285Sikob// License. See LICENSE.TXT for details.
7103285Sikob//
8103285Sikob//===----------------------------------------------------------------------===//
9103285Sikob//
10103285Sikob// This file defines the SystemZ subclass for TargetSelectionDAGInfo.
11103285Sikob//
12103285Sikob//===----------------------------------------------------------------------===//
13103285Sikob
14103285Sikob#ifndef SYSTEMZSELECTIONDAGINFO_H
15103285Sikob#define SYSTEMZSELECTIONDAGINFO_H
16103285Sikob
17103285Sikob#include "llvm/Target/TargetSelectionDAGInfo.h"
18103285Sikob
19103285Sikobnamespace llvm {
20103285Sikob
21103285Sikobclass SystemZTargetMachine;
22103285Sikob
23103285Sikobclass SystemZSelectionDAGInfo : public TargetSelectionDAGInfo {
24103285Sikobpublic:
25103285Sikob  explicit SystemZSelectionDAGInfo(const DataLayout &DL);
26103285Sikob  ~SystemZSelectionDAGInfo();
27103285Sikob
28103285Sikob  SDValue EmitTargetCodeForMemcpy(SelectionDAG &DAG, SDLoc DL, SDValue Chain,
29103285Sikob                                  SDValue Dst, SDValue Src,
30103285Sikob                                  SDValue Size, unsigned Align,
31103285Sikob                                  bool IsVolatile, bool AlwaysInline,
32103285Sikob                                  MachinePointerInfo DstPtrInfo,
33103285Sikob                                  MachinePointerInfo SrcPtrInfo) const override;
34103285Sikob
35103285Sikob  SDValue EmitTargetCodeForMemset(SelectionDAG &DAG, SDLoc DL,
36103285Sikob                                  SDValue Chain, SDValue Dst, SDValue Byte,
37103285Sikob                                  SDValue Size, unsigned Align, bool IsVolatile,
38103285Sikob                                  MachinePointerInfo DstPtrInfo) const override;
39103285Sikob
40103285Sikob  std::pair<SDValue, SDValue>
41103285Sikob  EmitTargetCodeForMemcmp(SelectionDAG &DAG, SDLoc DL, SDValue Chain,
42127468Ssimokawa                          SDValue Src1, SDValue Src2, SDValue Size,
43103285Sikob                          MachinePointerInfo Op1PtrInfo,
44103285Sikob                          MachinePointerInfo Op2PtrInfo) const override;
45103285Sikob
46127468Ssimokawa  std::pair<SDValue, SDValue>
47117126Sscottl  EmitTargetCodeForMemchr(SelectionDAG &DAG, SDLoc DL, SDValue Chain,
48117126Sscottl                          SDValue Src, SDValue Char, SDValue Length,
49117732Ssimokawa                          MachinePointerInfo SrcPtrInfo) const override;
50103285Sikob
51127468Ssimokawa  std::pair<SDValue, SDValue>
52112136Ssimokawa  EmitTargetCodeForStrcpy(SelectionDAG &DAG, SDLoc DL, SDValue Chain,
53112136Ssimokawa                          SDValue Dest, SDValue Src,
54103285Sikob                          MachinePointerInfo DestPtrInfo,
55127468Ssimokawa                          MachinePointerInfo SrcPtrInfo,
56127468Ssimokawa                          bool isStpcpy) const override;
57127468Ssimokawa
58127468Ssimokawa  std::pair<SDValue, SDValue>
59127468Ssimokawa  EmitTargetCodeForStrcmp(SelectionDAG &DAG, SDLoc DL, SDValue Chain,
60127468Ssimokawa                          SDValue Src1, SDValue Src2,
61127468Ssimokawa                          MachinePointerInfo Op1PtrInfo,
62127468Ssimokawa                          MachinePointerInfo Op2PtrInfo) const override;
63127468Ssimokawa
64127468Ssimokawa  std::pair<SDValue, SDValue>
65127468Ssimokawa  EmitTargetCodeForStrlen(SelectionDAG &DAG, SDLoc DL, SDValue Chain,
66127468Ssimokawa                          SDValue Src,
67127468Ssimokawa                          MachinePointerInfo SrcPtrInfo) const override;
68127468Ssimokawa
69127468Ssimokawa  std::pair<SDValue, SDValue>
70103285Sikob  EmitTargetCodeForStrnlen(SelectionDAG &DAG, SDLoc DL, SDValue Chain,
71103285Sikob                           SDValue Src, SDValue MaxLength,
72103285Sikob                           MachinePointerInfo SrcPtrInfo) const override;
73103285Sikob};
74103285Sikob
75103285Sikob} // end namespace llvm
76103285Sikob
77103285Sikob#endif
78103285Sikob