| // RUN: llvm-tblgen -gen-asm-writer -I %p/../../include %s | FileCheck %s | 
 |  | 
 | include "llvm/Target/Target.td" | 
 |  | 
 | def ArchInstrInfo : InstrInfo { } | 
 |  | 
 | def Arch : Target { | 
 |   let InstructionSet = ArchInstrInfo; | 
 | } | 
 |  | 
 | def R0 : Register<"r0">; | 
 | def Reg : RegisterClass<"Reg", [i32], 0, (add R0)>; | 
 |  | 
 | def IntOperand: Operand<i32>; | 
 |  | 
 | def PCRelOperand : Operand<i32> { | 
 |   let OperandType = "OPERAND_PCREL"; | 
 | } | 
 |  | 
 | def foo : Instruction { | 
 |   let OutOperandList = (outs); | 
 |   let InOperandList = (ins Reg:$reg, IntOperand:$imm); | 
 |   let AsmString = "foo $reg, $imm"; | 
 | } | 
 |  | 
 | def bar : Instruction { | 
 |   let OutOperandList = (outs); | 
 |   let InOperandList = (ins Reg:$reg, PCRelOperand:$imm); | 
 |   let AsmString = "bar $reg, $imm"; | 
 | } | 
 |  | 
 | // CHECK:      ArchInstPrinter::printInstruction( | 
 | // CHECK:      // bar, foo | 
 | // CHECK-NEXT: printOperand(MI, 0, O); | 
 | // CHECK:      // foo | 
 | // CHECK-NEXT: printOperand(MI, 1, O); | 
 | // CHECK:      // bar | 
 | // CHECK-NEXT: printOperand(MI, Address, 1, O); |