1//===-- HexagonSelectionDAGInfo.cpp - Hexagon SelectionDAG Info -----------===// 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 implements the HexagonSelectionDAGInfo class. 11// 12//===----------------------------------------------------------------------===// 13 14#define DEBUG_TYPE "hexagon-selectiondag-info" 15#include "HexagonTargetMachine.h" 16using namespace llvm; 17 18bool llvm::flag_aligned_memcpy; 19 20HexagonSelectionDAGInfo::HexagonSelectionDAGInfo(const HexagonTargetMachine 21 &TM) 22 : TargetSelectionDAGInfo(TM) { 23} 24 25HexagonSelectionDAGInfo::~HexagonSelectionDAGInfo() { 26} 27 28SDValue 29HexagonSelectionDAGInfo:: 30EmitTargetCodeForMemcpy(SelectionDAG &DAG, DebugLoc dl, SDValue Chain, 31 SDValue Dst, SDValue Src, SDValue Size, unsigned Align, 32 bool isVolatile, bool AlwaysInline, 33 MachinePointerInfo DstPtrInfo, 34 MachinePointerInfo SrcPtrInfo) const { 35 flag_aligned_memcpy = false; 36 if ((Align & 0x3) == 0) { 37 ConstantSDNode *ConstantSize = dyn_cast<ConstantSDNode>(Size); 38 if (ConstantSize) { 39 uint64_t SizeVal = ConstantSize->getZExtValue(); 40 if ((SizeVal > 32) && ((SizeVal % 8) == 0)) 41 flag_aligned_memcpy = true; 42 } 43 } 44 45 return SDValue(); 46} 47