While doing some work on power8, I wanted to make sure that for existing
systems, I was generating the same code. So I built some code and ran it
through various -mcpu= options. When I built a powerpc-linuxpaired
compiler, the compiler has trouble with a simple loop that should be
vectorized. I traced the code to changes in the vectorizer that required the
predicates for movmismalign* to accept memory operands.
In the main part of the powerpc compiler, we made this change in April, 2011,
but we missed the paired floating point support, since you need to use special
configuration options to enable paired floating point support.
2011-04-01 Andrew Pinski pins...@gmail.com
Michael Meissner meiss...@linux.vnet.ibm.com
PR target/48262
* config/rs6000/vector.md (movmisalignmode): Allow for memory
operands, as per the specifications.
* config/rs6000/altivec.md (vec_extract_evenv4si): Correct modes.
(vec_extract_evenv4sf): Ditto.
(vec_extract_evenv8hi): Ditto.
(vec_extract_evenv16qi): Ditto.
(vec_extract_oddv4si): Ditto.
I will do the usual bootstrap/make check tomorrow. Assuming it has no
regressions, can I check this patch it to both the 4.8 branch and trunk?
2013-09-17 Michael Meissner meiss...@linux.vnet.ibm.com
PR target/58452
* config/rs6000/paired.md (movmisalignv2sf): Fix to allow memory
operaands.
Index: gcc/config/rs6000/paired.md
===
--- gcc/config/rs6000/paired.md (revision 202632)
+++ gcc/config/rs6000/paired.md (working copy)
@@ -462,8 +462,8 @@ (define_expand reduc_splus_v2sf
})
(define_expand movmisalignv2sf
- [(set (match_operand:V2SF 0 gpc_reg_operand =f)
-(match_operand:V2SF 1 gpc_reg_operand f))]
+ [(set (match_operand:V2SF 0 nonimmediate_operand )
+(match_operand:V2SF 1 any_operand ))]
TARGET_PAIRED_FLOAT
{
paired_expand_vector_move (operands);
--
Michael Meissner, IBM
IBM, M/S 2506R, 550 King Street, Littleton, MA 01460, USA
email: meiss...@linux.vnet.ibm.com, phone: +1 (978) 899-4797