1//===- IntrinsicEmitter.h - Generate intrinsic information ------*- 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 tablegen backend emits information about intrinsic functions. 11// 12//===----------------------------------------------------------------------===// 13 14#ifndef INTRINSIC_EMITTER_H 15#define INTRINSIC_EMITTER_H 16 17#include "CodeGenIntrinsics.h" 18#include "llvm/TableGen/TableGenBackend.h" 19 20namespace llvm { 21 class IntrinsicEmitter : public TableGenBackend { 22 RecordKeeper &Records; 23 bool TargetOnly; 24 std::string TargetPrefix; 25 26 public: 27 IntrinsicEmitter(RecordKeeper &R, bool T = false) 28 : Records(R), TargetOnly(T) {} 29 30 void run(raw_ostream &OS); 31 32 void EmitPrefix(raw_ostream &OS); 33 34 void EmitEnumInfo(const std::vector<CodeGenIntrinsic> &Ints, 35 raw_ostream &OS); 36 37 void EmitFnNameRecognizer(const std::vector<CodeGenIntrinsic> &Ints, 38 raw_ostream &OS); 39 void EmitIntrinsicToNameTable(const std::vector<CodeGenIntrinsic> &Ints, 40 raw_ostream &OS); 41 void EmitIntrinsicToOverloadTable(const std::vector<CodeGenIntrinsic> &Ints, 42 raw_ostream &OS); 43 void EmitVerifier(const std::vector<CodeGenIntrinsic> &Ints, 44 raw_ostream &OS); 45 void EmitGenerator(const std::vector<CodeGenIntrinsic> &Ints, 46 raw_ostream &OS); 47 void EmitAttributes(const std::vector<CodeGenIntrinsic> &Ints, 48 raw_ostream &OS); 49 void EmitModRefBehavior(const std::vector<CodeGenIntrinsic> &Ints, 50 raw_ostream &OS); 51 void EmitIntrinsicToGCCBuiltinMap(const std::vector<CodeGenIntrinsic> &Ints, 52 raw_ostream &OS); 53 void EmitSuffix(raw_ostream &OS); 54 }; 55 56} // End llvm namespace 57 58#endif 59 60 61 62