| // RUN: llvm-tblgen -gen-instr-info -I %p/../../include %s | FileCheck %s | 
 |  | 
 | // CHECK: ABCForm_A | 
 | // CHECK-NOT: ABCForm_A | 
 |  | 
 | // | 
 | // include Target.td for InstrMapping class and define minimally required objects | 
 | // | 
 |  | 
 | include "llvm/Target/Target.td" | 
 |  | 
 | class DFVReg<string n> : Register<n> { | 
 |   let Namespace = "DFV"; | 
 | } | 
 |  | 
 | def R0 : DFVReg<"r0">; | 
 | def DFVRegClass : RegisterClass<"DFV",[i32],0,(add R0)>; | 
 | def DFVInstrInfo : InstrInfo; | 
 |  | 
 | def DFVTest : Target { | 
 |   let InstructionSet = DFVInstrInfo; | 
 | } | 
 |  | 
 | // | 
 | // Define a number of a InstrMappings with repeated ValueCol fields | 
 | // | 
 |  | 
 | class ABCRel; | 
 |  | 
 | def getAFormFromBForm : InstrMapping { | 
 |   let FilterClass = "ABCRel"; | 
 |   let RowFields = ["BaseName"]; | 
 |   let ColFields = ["ABCForm"]; | 
 |   let KeyCol = ["B"]; | 
 |   let ValueCols = [["A"]]; | 
 | } | 
 |  | 
 | def getAFormFromCForm : InstrMapping { | 
 |   let FilterClass = "ABCRel"; | 
 |   let RowFields = ["BaseName"]; | 
 |   let ColFields = ["ABCForm"]; | 
 |   let KeyCol = ["C"]; | 
 |   let ValueCols = [["A"]]; | 
 | } | 
 |  | 
 | def getAFormFromDForm : InstrMapping { | 
 |   let FilterClass = "ABCRel"; | 
 |   let RowFields = ["BaseName"]; | 
 |   let ColFields = ["ABCForm"]; | 
 |   let KeyCol = ["D"]; | 
 |   let ValueCols = [["A"]]; | 
 | } | 
 |  | 
 | def getAFormFromEForm : InstrMapping { | 
 |   let FilterClass = "ABCRel"; | 
 |   let RowFields = ["BaseName"]; | 
 |   let ColFields = ["ABCForm"]; | 
 |   let KeyCol = ["E"]; | 
 |   let ValueCols = [["A"]]; | 
 | } | 
 |  | 
 | class I : Instruction { | 
 |   let Namespace = "DFV"; | 
 |   let OutOperandList = (outs); | 
 |   let InOperandList = (ins); | 
 |  | 
 |   string BaseName = ""; | 
 |   string ABCForm = ""; | 
 | } | 
 |  | 
 | class isAForm { string ABCForm = "A"; } | 
 | class isBForm { string ABCForm = "B"; } | 
 | class isCForm { string ABCForm = "C"; } | 
 | class isDForm { string ABCForm = "D"; } | 
 | class isEForm { string ABCForm = "E"; } | 
 |  | 
 | let BaseName = "0" in { | 
 |   def A0 : I, ABCRel, isAForm; | 
 |   def B0 : I, ABCRel, isBForm; | 
 |   def C0 : I, ABCRel, isCForm; | 
 |   def D0 : I, ABCRel, isDForm; | 
 |   def E0 : I, ABCRel, isEForm; | 
 | } | 
 |  |