zpu: wip eke out some simple instructions for load/store/add
[llvm/zpu.git] / lib / Target / XCore / XCoreInstrFormats.td
blob8002c993270c3439ecce9c9a9e2c7d79cf63b558
1 //===- XCoreInstrFormats.td - XCore Instruction Formats ----*- tablegen -*-===//
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 //===----------------------------------------------------------------------===//
10 //===----------------------------------------------------------------------===//
11 // Instruction format superclass
12 //===----------------------------------------------------------------------===//
13 class InstXCore<dag outs, dag ins, string asmstr, list<dag> pattern>
14     : Instruction {
15   field bits<32> Inst;
17   let Namespace = "XCore";
18   dag OutOperandList = outs;
19   dag InOperandList = ins;
20   let AsmString   = asmstr;
21   let Pattern = pattern;
24 // XCore pseudo instructions format
25 class PseudoInstXCore<dag outs, dag ins, string asmstr, list<dag> pattern>
26    : InstXCore<outs, ins, asmstr, pattern>;
28 //===----------------------------------------------------------------------===//
29 // Instruction formats
30 //===----------------------------------------------------------------------===//
32 class _F3R<dag outs, dag ins, string asmstr, list<dag> pattern>
33     : InstXCore<outs, ins, asmstr, pattern> {
34   let Inst{31-0} = 0;
37 class _FL3R<dag outs, dag ins, string asmstr, list<dag> pattern>
38     : InstXCore<outs, ins, asmstr, pattern> {
39   let Inst{31-0} = 0;
42 class _F2RUS<dag outs, dag ins, string asmstr, list<dag> pattern>
43     : InstXCore<outs, ins, asmstr, pattern> {
44   let Inst{31-0} = 0;
47 class _FL2RUS<dag outs, dag ins, string asmstr, list<dag> pattern>
48     : InstXCore<outs, ins, asmstr, pattern> {
49   let Inst{31-0} = 0;
52 class _FRU6<dag outs, dag ins, string asmstr, list<dag> pattern>
53     : InstXCore<outs, ins, asmstr, pattern> {
54   let Inst{31-0} = 0;
57 class _FLRU6<dag outs, dag ins, string asmstr, list<dag> pattern>
58     : InstXCore<outs, ins, asmstr, pattern> {
59   let Inst{31-0} = 0;
62 class _FU6<dag outs, dag ins, string asmstr, list<dag> pattern>
63     : InstXCore<outs, ins, asmstr, pattern> {
64   let Inst{31-0} = 0;
67 class _FLU6<dag outs, dag ins, string asmstr, list<dag> pattern>
68     : InstXCore<outs, ins, asmstr, pattern> {
69   let Inst{31-0} = 0;
72 class _FU10<dag outs, dag ins, string asmstr, list<dag> pattern>
73     : InstXCore<outs, ins, asmstr, pattern> {
74   let Inst{31-0} = 0;
77 class _FLU10<dag outs, dag ins, string asmstr, list<dag> pattern>
78     : InstXCore<outs, ins, asmstr, pattern> {
79   let Inst{31-0} = 0;
82 class _F2R<dag outs, dag ins, string asmstr, list<dag> pattern>
83     : InstXCore<outs, ins, asmstr, pattern> {
84   let Inst{31-0} = 0;
87 class _FRUS<dag outs, dag ins, string asmstr, list<dag> pattern>
88     : InstXCore<outs, ins, asmstr, pattern> {
89   let Inst{31-0} = 0;
92 class _FL2R<dag outs, dag ins, string asmstr, list<dag> pattern>
93     : InstXCore<outs, ins, asmstr, pattern> {
94   let Inst{31-0} = 0;
97 class _F1R<dag outs, dag ins, string asmstr, list<dag> pattern>
98     : InstXCore<outs, ins, asmstr, pattern> {
99   let Inst{31-0} = 0;
102 class _F0R<dag outs, dag ins, string asmstr, list<dag> pattern>
103     : InstXCore<outs, ins, asmstr, pattern> {
104   let Inst{31-0} = 0;
107 class _L4R<dag outs, dag ins, string asmstr, list<dag> pattern>
108     : InstXCore<outs, ins, asmstr, pattern> {
109   let Inst{31-0} = 0;
112 class _L5R<dag outs, dag ins, string asmstr, list<dag> pattern>
113     : InstXCore<outs, ins, asmstr, pattern> {
114   let Inst{31-0} = 0;
117 class _L6R<dag outs, dag ins, string asmstr, list<dag> pattern>
118     : InstXCore<outs, ins, asmstr, pattern> {
119   let Inst{31-0} = 0;