> +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

Reply via email to