blob: 246fa3e5e6565ee7b4666c20780d680cd4a7a36d [file] [log] [blame]
Richard Sandifordd131ff82013-07-08 09:35:23 +00001//===-- 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
Benjamin Kramera7c40ef2014-08-13 16:26:38 +000014#ifndef LLVM_LIB_TARGET_SYSTEMZ_SYSTEMZSELECTIONDAGINFO_H
15#define LLVM_LIB_TARGET_SYSTEMZ_SYSTEMZSELECTIONDAGINFO_H
Richard Sandifordd131ff82013-07-08 09:35:23 +000016
17#include "llvm/Target/TargetSelectionDAGInfo.h"
18
19namespace llvm {
20
21class SystemZTargetMachine;
22
23class SystemZSelectionDAGInfo : public TargetSelectionDAGInfo {
24public:
Mehdi Amini157e5a62015-07-09 02:10:08 +000025 explicit SystemZSelectionDAGInfo() = default;
Richard Sandifordd131ff82013-07-08 09:35:23 +000026
Richard Sandifordd131ff82013-07-08 09:35:23 +000027 SDValue EmitTargetCodeForMemcpy(SelectionDAG &DAG, SDLoc DL, SDValue Chain,
28 SDValue Dst, SDValue Src,
29 SDValue Size, unsigned Align,
30 bool IsVolatile, bool AlwaysInline,
31 MachinePointerInfo DstPtrInfo,
Craig Topper73156022014-03-02 09:09:27 +000032 MachinePointerInfo SrcPtrInfo) const override;
Richard Sandiford47660c12013-07-09 09:32:42 +000033
Richard Sandifordb4d67b52014-03-06 12:03:36 +000034 SDValue EmitTargetCodeForMemset(SelectionDAG &DAG, SDLoc DL,
35 SDValue Chain, SDValue Dst, SDValue Byte,
36 SDValue Size, unsigned Align, bool IsVolatile,
37 MachinePointerInfo DstPtrInfo) const override;
Richard Sandiford564681c2013-08-12 10:28:10 +000038
Richard Sandifordb4d67b52014-03-06 12:03:36 +000039 std::pair<SDValue, SDValue>
Richard Sandiford564681c2013-08-12 10:28:10 +000040 EmitTargetCodeForMemcmp(SelectionDAG &DAG, SDLoc DL, SDValue Chain,
41 SDValue Src1, SDValue Src2, SDValue Size,
42 MachinePointerInfo Op1PtrInfo,
Craig Topper73156022014-03-02 09:09:27 +000043 MachinePointerInfo Op2PtrInfo) const override;
Richard Sandifordca232712013-08-16 11:21:54 +000044
Richard Sandifordb4d67b52014-03-06 12:03:36 +000045 std::pair<SDValue, SDValue>
Richard Sandiford6f6d5512013-08-20 09:38:48 +000046 EmitTargetCodeForMemchr(SelectionDAG &DAG, SDLoc DL, SDValue Chain,
47 SDValue Src, SDValue Char, SDValue Length,
Craig Topper73156022014-03-02 09:09:27 +000048 MachinePointerInfo SrcPtrInfo) const override;
Richard Sandiford6f6d5512013-08-20 09:38:48 +000049
Richard Sandifordb4d67b52014-03-06 12:03:36 +000050 std::pair<SDValue, SDValue>
Richard Sandifordbb83a502013-08-16 11:29:37 +000051 EmitTargetCodeForStrcpy(SelectionDAG &DAG, SDLoc DL, SDValue Chain,
52 SDValue Dest, SDValue Src,
53 MachinePointerInfo DestPtrInfo,
54 MachinePointerInfo SrcPtrInfo,
Craig Topper73156022014-03-02 09:09:27 +000055 bool isStpcpy) const override;
Richard Sandifordbb83a502013-08-16 11:29:37 +000056
Richard Sandifordb4d67b52014-03-06 12:03:36 +000057 std::pair<SDValue, SDValue>
Richard Sandifordca232712013-08-16 11:21:54 +000058 EmitTargetCodeForStrcmp(SelectionDAG &DAG, SDLoc DL, SDValue Chain,
59 SDValue Src1, SDValue Src2,
60 MachinePointerInfo Op1PtrInfo,
Craig Topper73156022014-03-02 09:09:27 +000061 MachinePointerInfo Op2PtrInfo) const override;
Richard Sandiford0dec06a2013-08-16 11:41:43 +000062
Richard Sandifordb4d67b52014-03-06 12:03:36 +000063 std::pair<SDValue, SDValue>
Richard Sandiford0dec06a2013-08-16 11:41:43 +000064 EmitTargetCodeForStrlen(SelectionDAG &DAG, SDLoc DL, SDValue Chain,
Craig Topper73156022014-03-02 09:09:27 +000065 SDValue Src,
66 MachinePointerInfo SrcPtrInfo) const override;
Richard Sandiford0dec06a2013-08-16 11:41:43 +000067
Richard Sandifordb4d67b52014-03-06 12:03:36 +000068 std::pair<SDValue, SDValue>
Richard Sandiford0dec06a2013-08-16 11:41:43 +000069 EmitTargetCodeForStrnlen(SelectionDAG &DAG, SDLoc DL, SDValue Chain,
70 SDValue Src, SDValue MaxLength,
Craig Topper73156022014-03-02 09:09:27 +000071 MachinePointerInfo SrcPtrInfo) const override;
Richard Sandifordd131ff82013-07-08 09:35:23 +000072};
73
Richard Sandifordc2312692014-03-06 10:38:30 +000074} // end namespace llvm
Richard Sandifordd131ff82013-07-08 09:35:23 +000075
76#endif