[InstCombine] Signed saturation patterns
[llvm-core.git] / lib / Target / SystemZ / SystemZSelectionDAGInfo.h
blob7d63bae83cf33ad23bb7503d3d332d54be9b7f3b
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.
11 //===----------------------------------------------------------------------===//
13 #ifndef LLVM_LIB_TARGET_SYSTEMZ_SYSTEMZSELECTIONDAGINFO_H
14 #define LLVM_LIB_TARGET_SYSTEMZ_SYSTEMZSELECTIONDAGINFO_H
16 #include "llvm/CodeGen/SelectionDAGTargetInfo.h"
18 namespace llvm {
20 class SystemZTargetMachine;
22 class SystemZSelectionDAGInfo : public SelectionDAGTargetInfo {
23 public:
24 explicit SystemZSelectionDAGInfo() = default;
26 SDValue EmitTargetCodeForMemcpy(SelectionDAG &DAG, const SDLoc &DL,
27 SDValue Chain, SDValue Dst, SDValue Src,
28 SDValue Size, unsigned Align, bool IsVolatile,
29 bool AlwaysInline,
30 MachinePointerInfo DstPtrInfo,
31 MachinePointerInfo SrcPtrInfo) const override;
33 SDValue EmitTargetCodeForMemset(SelectionDAG &DAG, const SDLoc &DL,
34 SDValue Chain, SDValue Dst, SDValue Byte,
35 SDValue Size, unsigned Align, bool IsVolatile,
36 MachinePointerInfo DstPtrInfo) const override;
38 std::pair<SDValue, SDValue>
39 EmitTargetCodeForMemcmp(SelectionDAG &DAG, const SDLoc &DL, SDValue Chain,
40 SDValue Src1, SDValue Src2, SDValue Size,
41 MachinePointerInfo Op1PtrInfo,
42 MachinePointerInfo Op2PtrInfo) const override;
44 std::pair<SDValue, SDValue>
45 EmitTargetCodeForMemchr(SelectionDAG &DAG, const SDLoc &DL, SDValue Chain,
46 SDValue Src, SDValue Char, SDValue Length,
47 MachinePointerInfo SrcPtrInfo) const override;
49 std::pair<SDValue, SDValue> EmitTargetCodeForStrcpy(
50 SelectionDAG &DAG, const SDLoc &DL, SDValue Chain, SDValue Dest,
51 SDValue Src, MachinePointerInfo DestPtrInfo,
52 MachinePointerInfo SrcPtrInfo, bool isStpcpy) const override;
54 std::pair<SDValue, SDValue>
55 EmitTargetCodeForStrcmp(SelectionDAG &DAG, const SDLoc &DL, SDValue Chain,
56 SDValue Src1, SDValue Src2,
57 MachinePointerInfo Op1PtrInfo,
58 MachinePointerInfo Op2PtrInfo) const override;
60 std::pair<SDValue, SDValue>
61 EmitTargetCodeForStrlen(SelectionDAG &DAG, const SDLoc &DL, SDValue Chain,
62 SDValue Src,
63 MachinePointerInfo SrcPtrInfo) const override;
65 std::pair<SDValue, SDValue>
66 EmitTargetCodeForStrnlen(SelectionDAG &DAG, const SDLoc &DL, SDValue Chain,
67 SDValue Src, SDValue MaxLength,
68 MachinePointerInfo SrcPtrInfo) const override;
71 } // end namespace llvm
73 #endif