blob: 50c77fa88ccecccb8ce68c4d7216c4090d231ef3 [file] [log] [blame]
Vedant Kumar74ae9252016-12-01 19:38:50 +00001// RUN: llvm-tblgen -gen-instr-info -I %p/../../include %s | FileCheck %s
2
3// CHECK: ABCForm_A
4// CHECK-NOT: ABCForm_A
5
6//
7// include Target.td for InstrMapping class and define minimally required objects
8//
9
10include "llvm/Target/Target.td"
11
12class DFVReg<string n> : Register<n> {
13 let Namespace = "DFV";
14}
15
16def R0 : DFVReg<"r0">;
17def DFVRegClass : RegisterClass<"DFV",[i32],0,(add R0)>;
18def DFVInstrInfo : InstrInfo;
19
20def DFVTest : Target {
21 let InstructionSet = DFVInstrInfo;
22}
23
24//
25// Define a number of a InstrMappings with repeated ValueCol fields
26//
27
28class ABCRel;
29
30def getAFormFromBForm : InstrMapping {
31 let FilterClass = "ABCRel";
32 let RowFields = ["BaseName"];
33 let ColFields = ["ABCForm"];
34 let KeyCol = ["B"];
35 let ValueCols = [["A"]];
36}
37
38def getAFormFromCForm : InstrMapping {
39 let FilterClass = "ABCRel";
40 let RowFields = ["BaseName"];
41 let ColFields = ["ABCForm"];
42 let KeyCol = ["C"];
43 let ValueCols = [["A"]];
44}
45
46def getAFormFromDForm : InstrMapping {
47 let FilterClass = "ABCRel";
48 let RowFields = ["BaseName"];
49 let ColFields = ["ABCForm"];
50 let KeyCol = ["D"];
51 let ValueCols = [["A"]];
52}
53
54def getAFormFromEForm : InstrMapping {
55 let FilterClass = "ABCRel";
56 let RowFields = ["BaseName"];
57 let ColFields = ["ABCForm"];
58 let KeyCol = ["E"];
59 let ValueCols = [["A"]];
60}
61
62class I : Instruction {
63 let Namespace = "DFV";
64 let OutOperandList = (outs);
65 let InOperandList = (ins);
66
67 string BaseName = "";
68 string ABCForm = "";
69}
70
71class isAForm { string ABCForm = "A"; }
72class isBForm { string ABCForm = "B"; }
73class isCForm { string ABCForm = "C"; }
74class isDForm { string ABCForm = "D"; }
75class isEForm { string ABCForm = "E"; }
76
77let BaseName = "0" in {
78 def A0 : I, ABCRel, isAForm;
79 def B0 : I, ABCRel, isBForm;
80 def C0 : I, ABCRel, isCForm;
81 def D0 : I, ABCRel, isDForm;
82 def E0 : I, ABCRel, isEForm;
83}
84