1 //===-- llvm/lib/Target/NVPTX/NVPTXLowerAggrCopies.h ------------*- 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 contains the declaration of the NVIDIA specific lowering of 11 // aggregate copies 12 // 13 //===----------------------------------------------------------------------===// 14 15 #ifndef NVPTX_LOWER_AGGR_COPIES_H 16 #define NVPTX_LOWER_AGGR_COPIES_H 17 18 #include "llvm/Pass.h" 19 #include "llvm/CodeGen/MachineFunctionAnalysis.h" 20 #include "llvm/Target/TargetData.h" 21 22 namespace llvm { 23 24 // actual analysis class, which is a functionpass 25 struct NVPTXLowerAggrCopies : public FunctionPass { 26 static char ID; 27 NVPTXLowerAggrCopiesNVPTXLowerAggrCopies28 NVPTXLowerAggrCopies() : FunctionPass(ID) {} 29 getAnalysisUsageNVPTXLowerAggrCopies30 void getAnalysisUsage(AnalysisUsage &AU) const { 31 AU.addRequired<TargetData>(); 32 AU.addPreserved<MachineFunctionAnalysis>(); 33 } 34 35 virtual bool runOnFunction(Function &F); 36 37 static const unsigned MaxAggrCopySize = 128; 38 getPassNameNVPTXLowerAggrCopies39 virtual const char *getPassName() const { 40 return "Lower aggregate copies/intrinsics into loops"; 41 } 42 }; 43 44 extern FunctionPass *createLowerAggrCopies(); 45 } 46 47 #endif 48