// RUN: not llvm-tblgen -gen-disassembler -I %p/../../../include %s -o - 2>%t // RUN: FileCheck %s < %t include "llvm/Target/Target.td" def MyTargetISA : InstrInfo; def MyTarget : Target { let InstructionSet = MyTargetISA; } def R0 : Register<"r0"> { let Namespace = "MyTarget"; } def GPR32 : RegisterClass<"MyTarget", [i32], 32, (add R0)>; def X0 : Register<"x0"> { let Namespace = "MyTarget"; } def GPR64 : RegisterClass<"MyTarget", [i64], 64, (add X0)>; class I Pat> : Instruction { let Namespace = "MyTarget"; let OutOperandList = OOps; let InOperandList = IOps; let Pattern = Pat; let Size = 4; bits<32> Inst; bits<32> SoftFail; } // Assume there is a 2 bit encoding for the dst and src register. def A : I<(outs GPR32:$dst), (ins GPR32:$src1), []> { bits<2> dst; bits<2> src1; let Inst{31...4} = 0; let Inst{1...0} = dst; let Inst{3...2} = src1; } def B : I<(outs GPR32:$dst), (ins GPR32:$src1), []> { bits<2> dst; bits<2> src1; let Inst{31...4} = 0; let Inst{1...0} = dst; let Inst{3...2} = src1; } def C : I<(outs GPR64:$dst), (ins GPR64:$src1), []> { bits<2> dst; bits<2> src1; let Inst{31...4} = 1; let Inst{1...0} = dst; let Inst{3...2} = src1; } def D : I<(outs GPR64:$dst), (ins GPR64:$src1), []> { bits<2> dst; bits<2> src1; let Inst{31...4} = 1; let Inst{1...0} = dst; let Inst{3...2} = src1; } // CHECK: Decoding Conflict: // CHECK: ................................ // CHECK: 0000000000000000000000000000.... // CHECK: 0000000000000000000000000000____ A // CHECK: 0000000000000000000000000000____ B // CHECK: Decoding Conflict: // CHECK: ................................ // CHECK: 0000000000000000000000000001.... // CHECK: 0000000000000000000000000001____ C // CHECK: 0000000000000000000000000001____ D // CHECK: Decoding conflict encountered