This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH, rs6000] Canonicalize split for unordered vector compares
- From: Bill Schmidt <wschmidt at linux dot vnet dot ibm dot com>
- To: gcc-patches at gcc dot gnu dot org
- Cc: dje dot gcc at gmail dot com
- Date: Mon, 24 Feb 2014 20:13:43 -0600
- Subject: [PATCH, rs6000] Canonicalize split for unordered vector compares
- Authentication-results: sourceware.org; auth=none
Hi,
The pattern *vector_unordered<mode> performs a split that's intended to
match the nor<mode>3 pattern. However, it doesn't use the proper
canonical form, so the resulting insn isn't recognized. This patch
changes the split to use the canonical form.
Bootstrapped and tested on powerpc64{,le}-unknown-linux-gnu with no
regressions. Is this ok for trunk?
Thanks,
Bill
2014-02-24 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
* config/rs6000/vector.md (*vector_unordered<mode>): Change split
to use canonical form for nor<mode>3.
Index: gcc/config/rs6000/vector.md
===================================================================
--- gcc/config/rs6000/vector.md (revision 208062)
+++ gcc/config/rs6000/vector.md (working copy)
@@ -608,8 +608,8 @@
(ge:VEC_F (match_dup 2)
(match_dup 1)))
(set (match_dup 0)
- (not:VEC_F (ior:VEC_F (match_dup 3)
- (match_dup 4))))]
+ (and:VEC_F (not:VEC_F (match_dup 3))
+ (not:VEC_F (match_dup 4))))]
"
{
operands[3] = gen_reg_rtx (<MODE>mode);