Re: [PATCH,rs6000] PR79395: Fix compile error with -mcpu=power9 and -mno-vsx and __builtin_vec_cmpne_p

2017-03-02 Thread Bill Schmidt
Fixed as r245849.  Thanks...

-- Bill

Bill Schmidt, Ph.D.
GCC for Linux on Power
Linux on Power Toolchain
IBM Linux Technology Center
wschm...@linux.vnet.ibm.com

> On Mar 2, 2017, at 11:33 AM, Bill Schmidt  wrote:
> 
> Hi Andreas,
> 
> We discovered the problem this morning in-house and are working on a patch.
> 
> -- Bill
> 
> Bill Schmidt, Ph.D.
> GCC for Linux on Power
> Linux on Power Toolchain
> IBM Linux Technology Center
> wschm...@linux.vnet.ibm.com
> 
>> On Mar 2, 2017, at 11:25 AM, Andreas Schwab  wrote:
>> 
>> ../../gcc/config/rs6000/vector.md:721:14: error: 'operands[3]' is used 
>> uninitialized in this function [-Werror=uninitialized]
>> 
>>UNSPEC_PREDICATE))
>>~^
>> ../../gcc/config/rs6000/vector.md: In function 'rtx_def* 
>> gen_vector_ne_v8hi_p(rtx, rtx, rtx)':
>> ../../gcc/config/rs6000/vector.md:721:14: error: 'operands[3]' is used 
>> uninitialized in this function [-Werror=uninitialized]
>>UNSPEC_PREDICATE))
>>~^
>> ../../gcc/config/rs6000/vector.md: In function 'rtx_def* 
>> gen_vector_ne_v16qi_p(rtx, rtx, rtx)':
>> ../../gcc/config/rs6000/vector.md:721:14: error: 'operands[3]' is used 
>> uninitialized in this function [-Werror=uninitialized]
>>UNSPEC_PREDICATE))
>>~^
>> ../../gcc/config/rs6000/vector.md: In function 'rtx_def* 
>> gen_vector_ae_v4si_p(rtx, rtx, rtx)':
>> ../../gcc/config/rs6000/vector.md:743:14: error: 'operands[3]' is used 
>> uninitialized in this function [-Werror=uninitialized]
>> [(match_operand:VI 1 "vlogical_operand")
>> ^
>> ../../gcc/config/rs6000/vector.md: In function 'rtx_def* 
>> gen_vector_ae_v8hi_p(rtx, rtx, rtx)':
>> ../../gcc/config/rs6000/vector.md:743:14: error: 'operands[3]' is used 
>> uninitialized in this function [-Werror=uninitialized]
>> [(match_operand:VI 1 "vlogical_operand")
>> ^
>> ../../gcc/config/rs6000/vector.md: In function 'rtx_def* 
>> gen_vector_ae_v16qi_p(rtx, rtx, rtx)':
>> ../../gcc/config/rs6000/vector.md:743:14: error: 'operands[3]' is used 
>> uninitialized in this function [-Werror=uninitialized]
>> [(match_operand:VI 1 "vlogical_operand")
>> ^
>> ../../gcc/config/rs6000/vector.md: In function 'rtx_def* 
>> gen_vector_ne_v2di_p(rtx, rtx, rtx)':
>> ../../gcc/config/rs6000/vector.md:784:14: error: 'operands[3]' is used 
>> uninitialized in this function [-Werror=uninitialized]
>>  [(parallel
>> ^
>> ../../gcc/config/rs6000/vector.md: In function 'rtx_def* 
>> gen_vector_ae_v2di_p(rtx, rtx, rtx)':
>> ../../gcc/config/rs6000/vector.md:810:14: error: 'operands[3]' is used 
>> uninitialized in this function [-Werror=uninitialized]
>>[(set (reg:CC CR6_REGNO)
>>~^
>> ../../gcc/config/rs6000/vector.md: In function 'rtx_def* 
>> gen_vector_ne_v4sf_p(rtx, rtx, rtx)':
>> ../../gcc/config/rs6000/vector.md:832:14: error: 'operands[3]' is used 
>> uninitialized in this function [-Werror=uninitialized]
>>[(set (reg:CC CR6_REGNO)
>>~^
>> ../../gcc/config/rs6000/vector.md: In function 'rtx_def* 
>> gen_vector_ne_v2df_p(rtx, rtx, rtx)':
>> ../../gcc/config/rs6000/vector.md:832:14: error: 'operands[3]' is used 
>> uninitialized in this function [-Werror=uninitialized]
>>[(set (reg:CC CR6_REGNO)
>>~^
>> ../../gcc/config/rs6000/vector.md: In function 'rtx_def* 
>> gen_vector_ae_v4sf_p(rtx, rtx, rtx)':
>> ../../gcc/config/rs6000/vector.md:857:14: error: 'operands[3]' is used 
>> uninitialized in this function [-Werror=uninitialized]
>>   (gt:VEC_A (match_dup 1)
>>~^
>> ../../gcc/config/rs6000/vector.md: In function 'rtx_def* 
>> gen_vector_ae_v2df_p(rtx, rtx, rtx)':
>> ../../gcc/config/rs6000/vector.md:857:14: error: 'operands[3]' is used 
>> uninitialized in this function [-Werror=uninitialized]
>>   (gt:VEC_A (match_dup 1)
>>~^
>> ../../gcc/config/rs6000/vsx.md: In function 'rtx_def* 
>> gen_vsx_tsqrtdf2_fg(rtx, rtx)':
>> ../../gcc/config/rs6000/vsx.md:1402:14: error: 'operands[2]' is used 
>> uninitialized in this function [-Werror=uninitialized]
>>   (set (match_operand:SI 0 "gpc_reg_operand" "")
>>~^
>> ../../gcc/config/rs6000/vsx.md: In function 'rtx_def* 
>> gen_vsx_tsqrtv4sf2_fg(rtx, rtx)':
>> ../../gcc/config/rs6000/vsx.md:1402:14: error: 'operands[2]' is used 
>> uninitialized in this function [-Werror=uninitialized]
>>   (set (match_operand:SI 0 "gpc_reg_operand" "")
>>~^
>> ../../gcc/config/rs6000/vsx.md: In function 'rtx_def* 
>> gen_vsx_tsqrtv2df2_fg(rtx, rtx)':
>> ../../gcc/config/rs6000/vsx.md:1402:14: error: 'operands[2]' is used 
>> uninitialized in this function [-Werror=uninitialized]
>>   (set (match_operand:SI 0 "gpc_reg_operand" "")
>>~^
>> 

Re: [PATCH,rs6000] PR79395: Fix compile error with -mcpu=power9 and -mno-vsx and __builtin_vec_cmpne_p

2017-03-02 Thread Bill Schmidt
Hi Andreas,

We discovered the problem this morning in-house and are working on a patch.

-- Bill

Bill Schmidt, Ph.D.
GCC for Linux on Power
Linux on Power Toolchain
IBM Linux Technology Center
wschm...@linux.vnet.ibm.com

> On Mar 2, 2017, at 11:25 AM, Andreas Schwab  wrote:
> 
> ../../gcc/config/rs6000/vector.md:721:14: error: 'operands[3]' is used 
> uninitialized in this function [-Werror=uninitialized]
> 
> UNSPEC_PREDICATE))
> ~^
> ../../gcc/config/rs6000/vector.md: In function 'rtx_def* 
> gen_vector_ne_v8hi_p(rtx, rtx, rtx)':
> ../../gcc/config/rs6000/vector.md:721:14: error: 'operands[3]' is used 
> uninitialized in this function [-Werror=uninitialized]
> UNSPEC_PREDICATE))
> ~^
> ../../gcc/config/rs6000/vector.md: In function 'rtx_def* 
> gen_vector_ne_v16qi_p(rtx, rtx, rtx)':
> ../../gcc/config/rs6000/vector.md:721:14: error: 'operands[3]' is used 
> uninitialized in this function [-Werror=uninitialized]
> UNSPEC_PREDICATE))
> ~^
> ../../gcc/config/rs6000/vector.md: In function 'rtx_def* 
> gen_vector_ae_v4si_p(rtx, rtx, rtx)':
> ../../gcc/config/rs6000/vector.md:743:14: error: 'operands[3]' is used 
> uninitialized in this function [-Werror=uninitialized]
>  [(match_operand:VI 1 "vlogical_operand")
>  ^
> ../../gcc/config/rs6000/vector.md: In function 'rtx_def* 
> gen_vector_ae_v8hi_p(rtx, rtx, rtx)':
> ../../gcc/config/rs6000/vector.md:743:14: error: 'operands[3]' is used 
> uninitialized in this function [-Werror=uninitialized]
>  [(match_operand:VI 1 "vlogical_operand")
>  ^
> ../../gcc/config/rs6000/vector.md: In function 'rtx_def* 
> gen_vector_ae_v16qi_p(rtx, rtx, rtx)':
> ../../gcc/config/rs6000/vector.md:743:14: error: 'operands[3]' is used 
> uninitialized in this function [-Werror=uninitialized]
>  [(match_operand:VI 1 "vlogical_operand")
>  ^
> ../../gcc/config/rs6000/vector.md: In function 'rtx_def* 
> gen_vector_ne_v2di_p(rtx, rtx, rtx)':
> ../../gcc/config/rs6000/vector.md:784:14: error: 'operands[3]' is used 
> uninitialized in this function [-Werror=uninitialized]
>   [(parallel
>  ^
> ../../gcc/config/rs6000/vector.md: In function 'rtx_def* 
> gen_vector_ae_v2di_p(rtx, rtx, rtx)':
> ../../gcc/config/rs6000/vector.md:810:14: error: 'operands[3]' is used 
> uninitialized in this function [-Werror=uninitialized]
> [(set (reg:CC CR6_REGNO)
> ~^
> ../../gcc/config/rs6000/vector.md: In function 'rtx_def* 
> gen_vector_ne_v4sf_p(rtx, rtx, rtx)':
> ../../gcc/config/rs6000/vector.md:832:14: error: 'operands[3]' is used 
> uninitialized in this function [-Werror=uninitialized]
> [(set (reg:CC CR6_REGNO)
> ~^
> ../../gcc/config/rs6000/vector.md: In function 'rtx_def* 
> gen_vector_ne_v2df_p(rtx, rtx, rtx)':
> ../../gcc/config/rs6000/vector.md:832:14: error: 'operands[3]' is used 
> uninitialized in this function [-Werror=uninitialized]
> [(set (reg:CC CR6_REGNO)
> ~^
> ../../gcc/config/rs6000/vector.md: In function 'rtx_def* 
> gen_vector_ae_v4sf_p(rtx, rtx, rtx)':
> ../../gcc/config/rs6000/vector.md:857:14: error: 'operands[3]' is used 
> uninitialized in this function [-Werror=uninitialized]
>(gt:VEC_A (match_dup 1)
> ~^
> ../../gcc/config/rs6000/vector.md: In function 'rtx_def* 
> gen_vector_ae_v2df_p(rtx, rtx, rtx)':
> ../../gcc/config/rs6000/vector.md:857:14: error: 'operands[3]' is used 
> uninitialized in this function [-Werror=uninitialized]
>(gt:VEC_A (match_dup 1)
> ~^
> ../../gcc/config/rs6000/vsx.md: In function 'rtx_def* 
> gen_vsx_tsqrtdf2_fg(rtx, rtx)':
> ../../gcc/config/rs6000/vsx.md:1402:14: error: 'operands[2]' is used 
> uninitialized in this function [-Werror=uninitialized]
>(set (match_operand:SI 0 "gpc_reg_operand" "")
> ~^
> ../../gcc/config/rs6000/vsx.md: In function 'rtx_def* 
> gen_vsx_tsqrtv4sf2_fg(rtx, rtx)':
> ../../gcc/config/rs6000/vsx.md:1402:14: error: 'operands[2]' is used 
> uninitialized in this function [-Werror=uninitialized]
>(set (match_operand:SI 0 "gpc_reg_operand" "")
> ~^
> ../../gcc/config/rs6000/vsx.md: In function 'rtx_def* 
> gen_vsx_tsqrtv2df2_fg(rtx, rtx)':
> ../../gcc/config/rs6000/vsx.md:1402:14: error: 'operands[2]' is used 
> uninitialized in this function [-Werror=uninitialized]
>(set (match_operand:SI 0 "gpc_reg_operand" "")
> ~^
> ../../gcc/config/rs6000/vsx.md: In function 'rtx_def* 
> gen_vsx_tsqrtdf2_fe(rtx, rtx)':
> ../../gcc/config/rs6000/vsx.md:1415:14: error: 'operands[2]' is used 
> uninitialized in this function [-Werror=uninitialized]
>   "xtsqrt %0,%x1"
> ~^
> ../../gcc/config/rs6000/vsx.md: In function 'rtx_def* 
> gen_vsx_tsqrtv4sf2_fe(rtx, rtx)':
> 

Re: [PATCH,rs6000] PR79395: Fix compile error with -mcpu=power9 and -mno-vsx and __builtin_vec_cmpne_p

2017-03-02 Thread Andreas Schwab
../../gcc/config/rs6000/vector.md:721:14: error: 'operands[3]' is used 
uninitialized in this function [-Werror=uninitialized]

 UNSPEC_PREDICATE))
 ~^
../../gcc/config/rs6000/vector.md: In function 'rtx_def* 
gen_vector_ne_v8hi_p(rtx, rtx, rtx)':
../../gcc/config/rs6000/vector.md:721:14: error: 'operands[3]' is used 
uninitialized in this function [-Werror=uninitialized]
 UNSPEC_PREDICATE))
 ~^
../../gcc/config/rs6000/vector.md: In function 'rtx_def* 
gen_vector_ne_v16qi_p(rtx, rtx, rtx)':
../../gcc/config/rs6000/vector.md:721:14: error: 'operands[3]' is used 
uninitialized in this function [-Werror=uninitialized]
 UNSPEC_PREDICATE))
 ~^
../../gcc/config/rs6000/vector.md: In function 'rtx_def* 
gen_vector_ae_v4si_p(rtx, rtx, rtx)':
../../gcc/config/rs6000/vector.md:743:14: error: 'operands[3]' is used 
uninitialized in this function [-Werror=uninitialized]
  [(match_operand:VI 1 "vlogical_operand")
  ^
../../gcc/config/rs6000/vector.md: In function 'rtx_def* 
gen_vector_ae_v8hi_p(rtx, rtx, rtx)':
../../gcc/config/rs6000/vector.md:743:14: error: 'operands[3]' is used 
uninitialized in this function [-Werror=uninitialized]
  [(match_operand:VI 1 "vlogical_operand")
  ^
../../gcc/config/rs6000/vector.md: In function 'rtx_def* 
gen_vector_ae_v16qi_p(rtx, rtx, rtx)':
../../gcc/config/rs6000/vector.md:743:14: error: 'operands[3]' is used 
uninitialized in this function [-Werror=uninitialized]
  [(match_operand:VI 1 "vlogical_operand")
  ^
../../gcc/config/rs6000/vector.md: In function 'rtx_def* 
gen_vector_ne_v2di_p(rtx, rtx, rtx)':
../../gcc/config/rs6000/vector.md:784:14: error: 'operands[3]' is used 
uninitialized in this function [-Werror=uninitialized]
   [(parallel
  ^
../../gcc/config/rs6000/vector.md: In function 'rtx_def* 
gen_vector_ae_v2di_p(rtx, rtx, rtx)':
../../gcc/config/rs6000/vector.md:810:14: error: 'operands[3]' is used 
uninitialized in this function [-Werror=uninitialized]
 [(set (reg:CC CR6_REGNO)
 ~^
../../gcc/config/rs6000/vector.md: In function 'rtx_def* 
gen_vector_ne_v4sf_p(rtx, rtx, rtx)':
../../gcc/config/rs6000/vector.md:832:14: error: 'operands[3]' is used 
uninitialized in this function [-Werror=uninitialized]
 [(set (reg:CC CR6_REGNO)
 ~^
../../gcc/config/rs6000/vector.md: In function 'rtx_def* 
gen_vector_ne_v2df_p(rtx, rtx, rtx)':
../../gcc/config/rs6000/vector.md:832:14: error: 'operands[3]' is used 
uninitialized in this function [-Werror=uninitialized]
 [(set (reg:CC CR6_REGNO)
 ~^
../../gcc/config/rs6000/vector.md: In function 'rtx_def* 
gen_vector_ae_v4sf_p(rtx, rtx, rtx)':
../../gcc/config/rs6000/vector.md:857:14: error: 'operands[3]' is used 
uninitialized in this function [-Werror=uninitialized]
(gt:VEC_A (match_dup 1)
 ~^
../../gcc/config/rs6000/vector.md: In function 'rtx_def* 
gen_vector_ae_v2df_p(rtx, rtx, rtx)':
../../gcc/config/rs6000/vector.md:857:14: error: 'operands[3]' is used 
uninitialized in this function [-Werror=uninitialized]
(gt:VEC_A (match_dup 1)
 ~^
../../gcc/config/rs6000/vsx.md: In function 'rtx_def* gen_vsx_tsqrtdf2_fg(rtx, 
rtx)':
../../gcc/config/rs6000/vsx.md:1402:14: error: 'operands[2]' is used 
uninitialized in this function [-Werror=uninitialized]
(set (match_operand:SI 0 "gpc_reg_operand" "")
 ~^
../../gcc/config/rs6000/vsx.md: In function 'rtx_def* 
gen_vsx_tsqrtv4sf2_fg(rtx, rtx)':
../../gcc/config/rs6000/vsx.md:1402:14: error: 'operands[2]' is used 
uninitialized in this function [-Werror=uninitialized]
(set (match_operand:SI 0 "gpc_reg_operand" "")
 ~^
../../gcc/config/rs6000/vsx.md: In function 'rtx_def* 
gen_vsx_tsqrtv2df2_fg(rtx, rtx)':
../../gcc/config/rs6000/vsx.md:1402:14: error: 'operands[2]' is used 
uninitialized in this function [-Werror=uninitialized]
(set (match_operand:SI 0 "gpc_reg_operand" "")
 ~^
../../gcc/config/rs6000/vsx.md: In function 'rtx_def* gen_vsx_tsqrtdf2_fe(rtx, 
rtx)':
../../gcc/config/rs6000/vsx.md:1415:14: error: 'operands[2]' is used 
uninitialized in this function [-Werror=uninitialized]
   "xtsqrt %0,%x1"
 ~^
../../gcc/config/rs6000/vsx.md: In function 'rtx_def* 
gen_vsx_tsqrtv4sf2_fe(rtx, rtx)':
../../gcc/config/rs6000/vsx.md:1415:14: error: 'operands[2]' is used 
uninitialized in this function [-Werror=uninitialized]
   "xtsqrt %0,%x1"
 ~^
../../gcc/config/rs6000/vsx.md: In function 'rtx_def* 
gen_vsx_tsqrtv2df2_fe(rtx, rtx)':
../../gcc/config/rs6000/vsx.md:1415:14: error: 'operands[2]' is used 
uninitialized in this function [-Werror=uninitialized]
   "xtsqrt %0,%x1"
 ~^

Andreas.

-- 
Andreas Schwab, 

Re: [PATCH,rs6000] PR79395: Fix compile error with -mcpu=power9 and -mno-vsx and __builtin_vec_cmpne_p

2017-02-28 Thread Segher Boessenkool
Hi Kelvin,

On Tue, Feb 28, 2017 at 03:46:20PM -0700, Kelvin Nilsen wrote:
> PR 79395 reports a problem that arises when the preprocessor believes
> that the target supports Power9 but the gcc compiler believes that
> Power9 is not supported.
> 
> This patch addresses this inconsistency by introducing a new
> preprocessor macro named __POWER9_VECTOR__ which is automatically
> defined if the current gcc configuration, as adjusted by gcc command
> line options, supports Power9.  Previously, certain macro definitions
> that were supplied in altivec.h were conditioned upon the _ARCH_PWR9
> macro, which represents statically whether the compiler can support
> Power9, but ignores any command-line options that might disable the
> Power9 support in this run of the compiler.  Also addressed in this
> patch is elimination of the xvcmpnesp and xvcmpnedp instructions, which
> are not currently supported.  

I don't like this much at all.  We should not have command line options
to disable random instructions.  In a sane world we could just test for
_ARCH_PWR9 and VSX instead of having this error-prone combinatorial
explosion of macros.

> This patch has been demonstrated to fix the problems identified in the
> test case mentioned in the PR 79395 report.
> 
> This patch has been bootstrapped and tested on
> powerpc64le-unknown-linux with no regressions.
> 
> Is this ok for trunk?

Okay.  Some trivial comments:


>   PR target/79395
>   * config/rs6000/altivec.h (vec_ctz and others): Change the
>   preprocessor macro that controls conditional compilation from
>   _ARCH_PWR9 to __POWER9_VECTOR.

It is __POWER9_VECTOR__.

>   (vec_all_ne): Change macro definition to use a power9-specific
>   expansion under #ifdef __POWER9_VECTOR CONTROL (instead of
>   _ARCH_PWR9 control).

Same; and you don't want to SHOUT control I think ;-)

>   * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Add
>   support for predefined __POWER9_VECTOR__ macro to indicate that
>   Power9 instruction selection is enabled.
>   (altivec_overloaded_builtins): Remove extraneous
>   ALTIVEC_BUILTIN_VEC_CMPNE entry for overloaded 

Trailing space.

>   Power9 for impelmentations of vec_cmpne.  Change the signature for

s/impel/imple/

> @@ -521,9 +521,9 @@ __altivec_scalar_pred(vec_all_nez,
>  __altivec_scalar_pred(vec_any_eqz,
>__builtin_vec_vcmpnez_p (__CR6_LT_REV, a1, a2))
>  __altivec_scalar_pred(vec_all_ne,
> -  __builtin_vec_vcmpne_p (__CR6_LT, a1, a2))
> +   __builtin_vec_allne_p (a1, a2))
>  __altivec_scalar_pred(vec_any_eq,
> -  __builtin_vec_vcmpne_p (__CR6_LT_REV, a1, a2))
> +   __builtin_vec_anyeq_p (a1, a2))
>  #endif

Please indent these the same as the surrounding code.

Thanks,


Segher


[PATCH,rs6000] PR79395: Fix compile error with -mcpu=power9 and -mno-vsx and __builtin_vec_cmpne_p

2017-02-28 Thread Kelvin Nilsen

PR 79395 reports a problem that arises when the preprocessor believes
that the target supports Power9 but the gcc compiler believes that
Power9 is not supported.

This patch addresses this inconsistency by introducing a new
preprocessor macro named __POWER9_VECTOR__ which is automatically
defined if the current gcc configuration, as adjusted by gcc command
line options, supports Power9.  Previously, certain macro definitions
that were supplied in altivec.h were conditioned upon the _ARCH_PWR9
macro, which represents statically whether the compiler can support
Power9, but ignores any command-line options that might disable the
Power9 support in this run of the compiler.  Also addressed in this
patch is elimination of the xvcmpnesp and xvcmpnedp instructions, which
are not currently supported.  

This patch has been demonstrated to fix the problems identified in the
test case mentioned in the PR 79395 report.

This patch has been bootstrapped and tested on
powerpc64le-unknown-linux with no regressions.

Is this ok for trunk?

gcc/ChangeLog:

2017-02-28  Kelvin Nilsen  

PR target/79395
* config/rs6000/altivec.h (vec_ctz and others): Change the
preprocessor macro that controls conditional compilation from
_ARCH_PWR9 to __POWER9_VECTOR.
(vec_all_ne): Change parameterization of __altivec_scalar_pred
macro expansion under preprocessor #ifdef __POWER9_VECTOR__
control (instead of _ARCH_PWR9 control) so that template
definition uses power9-specific function.
(vec_any_eq): Likewise.
(vec_all_ne): Change macro definition to use a power9-specific
expansion under #ifdef __POWER9_VECTOR CONTROL (instead of
_ARCH_PWR9 control).
(vec_any_eq) Likewise.
* config/rs6000/rs6000-builtin.def (CMPNEF): Remove BU_P9V_AV_2
expansion for CMPNEF to remove support for xvcmpnesp instruction.
(CMPNED): Remove BU_P9V_AV2 expansion for CMPNED to remove
support for xvcmpnedp instruction.
(VCMPNEB_P): Replace BU_P9V_AV_P macro expansion with BU_P9V_AV_2
macro expansion so that Power9 implementation of vec_all_ne does
not use the AltiVec predicate framework.
(VCMPNEH_P): Likewise.
(VCMPNEW_P): Likewise.
(VCMPNED_P): Likewise.
(VCMPNEFP_P): Likewise.
(VCMPNEDP_P): Likewise.
(VCMPAEB_P): Add BU_P9V_AV_2 macro expansion to change
implementation of vec_any_eq to not use AltiVec predicate
framework.
(VCMPAEH_P): Likewise.
(VCMPAEW_P): Likewise.
(VCMPAED_P): Likewise.
(VCMPAEFP_P): Likewise.
(VCMPAEDP_P): Likewise.
(VCMPNE_P): Replace BU_P9V_OVERLOAD_P macro expansion with
BU_P9V_OVERLOAD_2 so that Power9 implementation of vec_all_ne does
not use the AltiVec predicate framework.
(VCMPAE_P): Add BU_P9V_OVERLOAD_2 macro to change implementation
of vec_any_eq to not use AltiVec predicate framework.
* config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Add
support for predefined __POWER9_VECTOR__ macro to indicate that
Power9 instruction selection is enabled.
(altivec_overloaded_builtins): Remove extraneous
ALTIVEC_BUILTIN_VEC_CMPNE entry for overloaded 
function argument types RS6000_BTI_bool_V16QI and
RS6000_BTI_bool_V16QI.  Remove erroneous ALTIVEC_BUILTIN_VEC_CMPNE
entry for overloaded function argument types RS6000_BTI_bool_V4SI
andRS6000_BTI_bool_V4SI, mapping to P9V_BUILTIN_CMPNEB.  Remove
two entries mapping to P9V_BUITIN_CMPNED and one entry mapping to
P9V_BUILTIN_CMPNEF to force use of instructions not specific to
Power9 for impelmentations of vec_cmpne.  Change the signature for
all definitions of the overloaded P9V_BUILTIN_VEC_CMPNE_P function
(representing vec_all_ne) to remove the previously described first
argument of type RS6000_BTI_INTSI, as this was an artifact of
reliance on the AltiVec predicate framework, which is no longer
used in the implementation of these functions.  Add
P9V_BUILTIN_VEC_VCMPAE_P entries (representing the vec_anyeq
function) to match all of the P9V_BUILTIN_VEC_VCMNE_P entries
since, unlike the AltiVec predicate framework implementation, we
do not share function descriptors between vec_alle and vec_anyeq.
(altivec_resolve_overloaded_builtin): Add SFmode and DFmode to the
set of modes that receive special treatment even when
TARGET_P9_VECTOR is true.  The special treatment emits code that
does not depend on Power9 instructions.
* config/rs6000/vector.md (vector_ne__p): Change this
define_expand to not rely on AltiVec predicate framework.
(vector_ae_p): New define_expand to represent vec_any_eq
function.
(vector_ne_v2di_p): Change this define_expand to