[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