1// RUN: llvm-tblgen -gen-disassembler -I %p/../../include %s | FileCheck %s 2 3// Check that we don't generate invalid code of the form "( && Cond2)" when 4// emitting AssemblerPredicate conditions. In the example below, the invalid 5// code would be: "return ( && (Bits & arch::AssemblerCondition2));". 6 7include "llvm/Target/Target.td" 8 9def archInstrInfo : InstrInfo { } 10 11def arch : Target { 12 let InstructionSet = archInstrInfo; 13} 14 15def Pred1 : Predicate<"Condition1">; 16def Pred2 : Predicate<"Condition2">, 17 AssemblerPredicate<"AssemblerCondition2">; 18 19def foo : Instruction { 20 let Size = 2; 21 let OutOperandList = (outs); 22 let InOperandList = (ins); 23 field bits<16> Inst; 24 let Inst = 0xAAAA; 25 let AsmString = "foo"; 26 field bits<16> SoftFail = 0; 27 // This is the important bit: 28 let Predicates = [Pred1, Pred2]; 29} 30 31// CHECK: return (Bits[arch::AssemblerCondition2]); 32