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