> +def X86cmp_new : SDNode<"X86ISD::CMP_NEW" , SDTX86CmpTest>;
X86ISD::CMP_NEW SelectionDAG nodes return an i32 flags value, however the corresponding X86cmp_new pattern-matching nodes use SDTX86CmpTest, which has no result values. Is this intentional? If so, how is the discrepancy handled? > +def : Pat<(parallel (X86cmp_new GR8:$src1, 0), (implicit EFLAGS)), > + (NEW_TEST8rr GR8:$src1, GR8:$src1)>; In the SelectionDAG IR, an SDNode can return multiple results. However, in this GCC-RTL-like pattern langauge, where many things are supposed to directly correspond to SelectionDAG counterparts, nodes can return at most one result. They must be grouped together in a parallel to represent operations that have multiple results. It seems like this will result in more discrepancies. Am I misunderstanding something? Dan -- Dan Gohman, Cray Inc. _______________________________________________ llvm-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
