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 19 namespace llvm { 20 21 class SystemZTargetMachine; 22 23 class SystemZSelectionDAGInfo : public TargetSelectionDAGInfo { 24 public: 25 explicit SystemZSelectionDAGInfo(const DataLayout &DL); 26 ~SystemZSelectionDAGInfo(); 27 28 SDValue EmitTargetCodeForMemcpy(SelectionDAG &DAG, SDLoc DL, SDValue Chain, 29 SDValue Dst, SDValue Src, 30 SDValue Size, unsigned Align, 31 bool IsVolatile, bool AlwaysInline, 32 MachinePointerInfo DstPtrInfo, 33 MachinePointerInfo SrcPtrInfo) const override; 34 35 SDValue EmitTargetCodeForMemset(SelectionDAG &DAG, SDLoc DL, 36 SDValue Chain, SDValue Dst, SDValue Byte, 37 SDValue Size, unsigned Align, bool IsVolatile, 38 MachinePointerInfo DstPtrInfo) const override; 39 40 std::pair<SDValue, SDValue> 41 EmitTargetCodeForMemcmp(SelectionDAG &DAG, SDLoc DL, SDValue Chain, 42 SDValue Src1, SDValue Src2, SDValue Size, 43 MachinePointerInfo Op1PtrInfo, 44 MachinePointerInfo Op2PtrInfo) const override; 45 46 std::pair<SDValue, SDValue> 47 EmitTargetCodeForMemchr(SelectionDAG &DAG, SDLoc DL, SDValue Chain, 48 SDValue Src, SDValue Char, SDValue Length, 49 MachinePointerInfo SrcPtrInfo) const override; 50 51 std::pair<SDValue, SDValue> 52 EmitTargetCodeForStrcpy(SelectionDAG &DAG, SDLoc DL, SDValue Chain, 53 SDValue Dest, SDValue Src, 54 MachinePointerInfo DestPtrInfo, 55 MachinePointerInfo SrcPtrInfo, 56 bool isStpcpy) const override; 57 58 std::pair<SDValue, SDValue> 59 EmitTargetCodeForStrcmp(SelectionDAG &DAG, SDLoc DL, SDValue Chain, 60 SDValue Src1, SDValue Src2, 61 MachinePointerInfo Op1PtrInfo, 62 MachinePointerInfo Op2PtrInfo) const override; 63 64 std::pair<SDValue, SDValue> 65 EmitTargetCodeForStrlen(SelectionDAG &DAG, SDLoc DL, SDValue Chain, 66 SDValue Src, 67 MachinePointerInfo SrcPtrInfo) const override; 68 69 std::pair<SDValue, SDValue> 70 EmitTargetCodeForStrnlen(SelectionDAG &DAG, SDLoc DL, SDValue Chain, 71 SDValue Src, SDValue MaxLength, 72 MachinePointerInfo SrcPtrInfo) const override; 73 }; 74 75 } // end namespace llvm 76 77 #endif 78