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