1b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum//===-- HexagonSelectionDAGInfo.cpp - Hexagon SelectionDAG Info -----------===//
2b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum//
3b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum//                     The LLVM Compiler Infrastructure
4b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum//
5b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum// This file is distributed under the University of Illinois Open Source
6b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum// License. See LICENSE.TXT for details.
7b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum//
8b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum//===----------------------------------------------------------------------===//
9b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum//
10b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum// This file implements the HexagonSelectionDAGInfo class.
11b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum//
12b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum//===----------------------------------------------------------------------===//
13b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum
14b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum#define DEBUG_TYPE "hexagon-selectiondag-info"
15b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum#include "HexagonTargetMachine.h"
16b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicumusing namespace llvm;
17b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum
18b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicumbool llvm::flag_aligned_memcpy;
19b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum
20b4b54153ad760c69a00a08531abef4ed434a5092Tony LinthicumHexagonSelectionDAGInfo::HexagonSelectionDAGInfo(const HexagonTargetMachine
21b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum                                                 &TM)
22b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum  : TargetSelectionDAGInfo(TM) {
23b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum}
24b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum
25b4b54153ad760c69a00a08531abef4ed434a5092Tony LinthicumHexagonSelectionDAGInfo::~HexagonSelectionDAGInfo() {
26b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum}
27b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum
28b4b54153ad760c69a00a08531abef4ed434a5092Tony LinthicumSDValue
29b4b54153ad760c69a00a08531abef4ed434a5092Tony LinthicumHexagonSelectionDAGInfo::
30b4b54153ad760c69a00a08531abef4ed434a5092Tony LinthicumEmitTargetCodeForMemcpy(SelectionDAG &DAG, DebugLoc dl, SDValue Chain,
31b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum                        SDValue Dst, SDValue Src, SDValue Size, unsigned Align,
32b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum                        bool isVolatile, bool AlwaysInline,
33b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum                        MachinePointerInfo DstPtrInfo,
34b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum                        MachinePointerInfo SrcPtrInfo) const {
35b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum  flag_aligned_memcpy = false;
36b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum  if ((Align & 0x3) == 0) {
37b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum    ConstantSDNode *ConstantSize = dyn_cast<ConstantSDNode>(Size);
38b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum    if (ConstantSize) {
39b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum      uint64_t SizeVal = ConstantSize->getZExtValue();
40b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum      if ((SizeVal > 32) && ((SizeVal % 8) == 0))
41b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum        flag_aligned_memcpy = true;
42b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum    }
43b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum  }
44b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum
45b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum  return SDValue();
46b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum}
47