2015-04-07 20:10:11 +08:00
|
|
|
// 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];
|
|
|
|
}
|
|
|
|
|
2015-05-26 18:47:10 +08:00
|
|
|
// CHECK: return (Bits[arch::AssemblerCondition2]);
|