|  | // RUN: llvm-tblgen -gen-disassembler -I %p/../../include %s | FileCheck %s | 
|  |  | 
|  | // Check that we don't generate invalid code of the form "( && Cond2)" when | 
|  | // emitting AssemblerPredicate conditions. In the example below, the invalid | 
|  | // code would be: "return ( && (Bits & arch::AssemblerCondition2));". | 
|  |  | 
|  | include "llvm/Target/Target.td" | 
|  |  | 
|  | def archInstrInfo : InstrInfo { } | 
|  |  | 
|  | def arch : Target { | 
|  | let InstructionSet = archInstrInfo; | 
|  | } | 
|  |  | 
|  | def Pred1 : Predicate<"Condition1">; | 
|  | def Pred2 : Predicate<"Condition2">, | 
|  | AssemblerPredicate<"AssemblerCondition2">; | 
|  |  | 
|  | def foo : Instruction { | 
|  | let Size = 2; | 
|  | let OutOperandList = (outs); | 
|  | let InOperandList = (ins); | 
|  | field bits<16> Inst; | 
|  | let Inst = 0xAAAA; | 
|  | let AsmString = "foo"; | 
|  | field bits<16> SoftFail = 0; | 
|  | // This is the important bit: | 
|  | let Predicates = [Pred1, Pred2]; | 
|  | } | 
|  |  | 
|  | // CHECK: return (Bits[arch::AssemblerCondition2]); |