blob: 06e2e5cf5ac5d80138deacb64df4b3a2e8b01b23 [file] [log] [blame]
Chris Lattner31123262003-08-01 04:38:38 +00001//===- RegisterInfoEmitter.h - Generate a Register File Desc. ---*- C++ -*-===//
Misha Brukman3da94ae2005-04-22 00:00:37 +00002//
John Criswell01d45822003-10-20 20:20:30 +00003// The LLVM Compiler Infrastructure
4//
5// This file was developed by the LLVM research group and is distributed under
6// the University of Illinois Open Source License. See LICENSE.TXT for details.
Misha Brukman3da94ae2005-04-22 00:00:37 +00007//
John Criswell01d45822003-10-20 20:20:30 +00008//===----------------------------------------------------------------------===//
Chris Lattner31123262003-08-01 04:38:38 +00009//
10// This tablegen backend is responsible for emitting a description of a target
11// register file for a code generator. It uses instances of the Register,
12// RegisterAliases, and RegisterClass classes to gather this information.
13//
14//===----------------------------------------------------------------------===//
15
16#ifndef REGISTER_INFO_EMITTER_H
17#define REGISTER_INFO_EMITTER_H
18
Chris Lattner0e5e49e2003-08-06 04:36:35 +000019#include "TableGenBackend.h"
Chris Lattner31123262003-08-01 04:38:38 +000020
Brian Gaeked0fde302003-11-11 22:41:34 +000021namespace llvm {
22
Chris Lattner0e5e49e2003-08-06 04:36:35 +000023class RegisterInfoEmitter : public TableGenBackend {
Chris Lattner31123262003-08-01 04:38:38 +000024 RecordKeeper &Records;
25public:
26 RegisterInfoEmitter(RecordKeeper &R) : Records(R) {}
Misha Brukman3da94ae2005-04-22 00:00:37 +000027
Chris Lattner31123262003-08-01 04:38:38 +000028 // run - Output the register file description, returning true on failure.
29 void run(std::ostream &o);
30
31 // runHeader - Emit a header fragment for the register info emitter.
32 void runHeader(std::ostream &o);
Chris Lattner54d156d2003-08-01 05:59:20 +000033
34 // runEnums - Print out enum values for all of the registers.
35 void runEnums(std::ostream &o);
Chris Lattner31123262003-08-01 04:38:38 +000036};
37
Brian Gaeked0fde302003-11-11 22:41:34 +000038} // End llvm namespace
39
Chris Lattner31123262003-08-01 04:38:38 +000040#endif