This is the mail archive of the
mailing list for the GCC project.
Re: Re: (R5900) Implementing Vector Support
- From: Liu Woon Yung <ysai187 at yahoo dot com>
- To: Richard Henderson <rth at redhat dot com>, Gcc Mailing List <gcc at gcc dot gnu dot org>
- Date: Sat, 30 Apr 2016 01:54:39 +0800
- Subject: Re: Re: (R5900) Implementing Vector Support
- Authentication-results: sourceware.org; auth=none
- References: <5702A9FD dot 2070307 at redhat dot com>
Thank you for your input so far. I think that I am starting to have a
clearer picture of things.
Unfortunately, I haven't been able to put together a working system for
the vector comparison stuff.
The second operand is the comparison operator. So given
(set (reg:V4SI x) (eq:V4SI (reg:V4SI y) (reg:V4SI z))
operand 0 is x,
operand 1 is the entire (eq ...) expression,
operand 2 is y,
operand 3 is z.
This is exactly the same as the normal integer cbranch<mode> patterns.
I've done something like that, but GCC still doesn't select the pattern
[(set (match_operand:MMI_VWHB 0 "register_operand" "=d")
(MMI_VCMP_OP:MMI_VWHB (match_operand:MMI_VWHB 1
(match_operand:MMI_VWHB 2 "register_operand" "d")))]
This was based on the one from the s390 port.
If it is worth implementing the vec_cmp patterns, is there an example
for me to refer to?
rs6000 doesn't implement bare comparisons, but only implements the
"vcond" conditional move upon which uses the comparison. Many of the
other targets do the same thing.
Is there a reason why implementing only vcond is preferred?
Thanks and Regards,