[LLVMdev] pattern problem with comparison and select
Heikki Kultala
hkultala at cs.tut.fi
Sat Nov 12 10:42:35 PST 2011
I tried to add a isel pattern [(set I32Regs:$dest, (select (seteq I32Regs:$op1, I32Regs:$op1), I32Regs:$op3, I32Regs:$op4))] for my instruction.
I get an error message
"Could not infer all types in a pattern!"
Above the error message it prints error message line containing the name of my op and
(set I32Regs:i32:$dest, (select:i32 (setcc:{i1:i8:i16:i32:i64} I32Regs:i32:$op1, I32Regs:i32:$op1), I32Regs:i32:$op3, I32Regs:i32:$op4))
So it seems it's somehow confused about the type of the setcc operation?
in out backend condition values/predicates are of i1 type
(getSetCCResultType() return llvm::MVT::i1)
and my backend uses setcc/select, not select_cc.
More information about the llvm-dev
mailing list