public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH] Fix builtin attributes on powerpc
@ 2009-10-01 18:58 Michael Meissner
  2009-10-01 19:01 ` Andrew Pinski
  2009-10-13 13:36 ` David Edelsohn
  0 siblings, 2 replies; 15+ messages in thread
From: Michael Meissner @ 2009-10-01 18:58 UTC (permalink / raw)
  To: gcc-patches, dje.gcc, jakub

[-- Attachment #1: Type: text/plain, Size: 1131 bytes --]

I tried to get this in by yesterday, but I had some server issues, and I
couldn't get the tests run until today.

In working with Jakub on a backport of the power7 patches to the Red Hat 4.4
branch, we found some problems in running spec.  The problem turned out to that
the vectorized math functions had different declaration attributes than the
scalar versions of the functions.  In doing further investigation, it turned
out that we weren't setting any attributes for any builtin functions.  This
patch fixes the attributes for the Altivec (VMX) and VSX builtins.  I have not
done the spe and paired builtins in this patch, but that can be easily done
later.

I did the usual boostrap and make check with no regressions.

Is this acceptable to checkin under stage 3 as a backend change?

I do think that long term we should move the backend builtins into the machine
independent like I mentioned in my RFA patch, but I ran out time for the 4.5
time frame:
http://gcc.gnu.org/ml/gcc-patches/2009-09/msg01820.html

-- 
Michael Meissner, IBM
4 Technology Place Drive, MS 2203A, Westford, MA, 01886, USA
meissner@linux.vnet.ibm.com

[-- Attachment #2: gcc-power7.patch82 --]
[-- Type: text/plain, Size: 90978 bytes --]

[gcc]
2009-09-30  Michael Meissner  <meissner@linux.vnet.ibm.com>

	* config/rs6000/t-rs6000 (TM_H): Add rs6000-builtin.def.

	* config/rs6000/rs6000-builtin.def: New file, abstract creating
	the builtin enums and the flags to set on the declaration to one
	file, using macros.

	* config/rs6000/rs6000.c (builtin_classify): New array that maps
	builtin to the flags to set in the declaration.
	(def_builtin): Set the appropriate builtin flags in the
	declaration.

	* config/rs6000/rs6000.h (enum rs6000_btc): New enumeration giving
	the different types of builtins that are supported.
	(enum rs6000_builtins): Move enum identifiers to the file
	rs6000-builtin.def.

[gcc/testsuite]
2009-09-30  Michael Meissner  <meissner@linux.vnet.ibm.com>

	* gcc.target/powerpc/altivec-4.c (b): Use VMX result to eliminate
	warnings.
	* g++.dg/ext/altivec-2.C (main): Ditto.

Index: gcc/config/rs6000/t-rs6000
===================================================================
--- gcc/config/rs6000/t-rs6000	(revision 152338)
+++ gcc/config/rs6000/t-rs6000	(working copy)
@@ -19,6 +19,8 @@
 # along with GCC; see the file COPYING3.  If not see
 # <http://www.gnu.org/licenses/>.
 
+TM_H += $(srcdir)/config/rs6000/rs6000-builtin.def
+
 rs6000.o: $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
   $(RTL_H) $(REGS_H) hard-reg-set.h \
   real.h insn-config.h conditions.h insn-attr.h flags.h $(RECOG_H) \
Index: gcc/config/rs6000/rs6000-builtin.def
===================================================================
--- gcc/config/rs6000/rs6000-builtin.def	(revision 0)
+++ gcc/config/rs6000/rs6000-builtin.def	(revision 0)
@@ -0,0 +1,990 @@
+/* Builtin functions for rs6000/powerpc.
+   Copyright (C) 2009
+   Free Software Foundation, Inc.
+   Contributed by Michael Meissner (meissner@linux.vnet.ibm.com)
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify it
+   under the terms of the GNU General Public License as published
+   by the Free Software Foundation; either version 3, or (at your
+   option) any later version.
+
+   GCC is distributed in the hope that it will be useful, but WITHOUT
+   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
+   License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+/* Before including this file, two macros must be defined:
+   RS6000_BUILTIN	 -- 2 arguments, the enum name, and classification
+   RS6000_BUILTIN_EQUATE -- 2 arguments, enum name and value */
+
+/* AltiVec builtins.  */
+RS6000_BUILTIN(ALTIVEC_BUILTIN_ST_INTERNAL_4si,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_LD_INTERNAL_4si,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_ST_INTERNAL_8hi,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_LD_INTERNAL_8hi,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_ST_INTERNAL_16qi,	RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_LD_INTERNAL_16qi,	RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_ST_INTERNAL_4sf,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_LD_INTERNAL_4sf,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VADDUBM,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VADDUHM,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VADDUWM,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VADDFP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VADDCUW,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VADDUBS,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VADDSBS,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VADDUHS,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VADDSHS,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VADDUWS,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VADDSWS,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VAND,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VANDC,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VAVGUB,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VAVGSB,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VAVGUH,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VAVGSH,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VAVGUW,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VAVGSW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCFUX,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCFSX,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCTSXS,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCTUXS,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPBFP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPEQUB,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPEQUH,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPEQUW,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPEQFP,		RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPGEFP,		RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPGTUB,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPGTSB,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPGTUH,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPGTSH,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPGTUW,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPGTSW,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPGTFP,		RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEXPTEFP,		RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VLOGEFP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMADDFP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMAXUB,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMAXSB,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMAXUH,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMAXSH,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMAXUW,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMAXSW,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMAXFP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMHADDSHS,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMHRADDSHS,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMLADDUHM,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMRGHB,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMRGHH,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMRGHW,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMRGLB,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMRGLH,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMRGLW,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMSUMUBM,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMSUMMBM,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMSUMUHM,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMSUMSHM,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMSUMUHS,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMSUMSHS,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMINUB,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMINSB,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMINUH,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMINSH,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMINUW,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMINSW,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMINFP,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMULEUB,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMULEUB_UNS,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMULESB,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMULEUH,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMULEUH_UNS,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMULESH,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMULOUB,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMULOUB_UNS,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMULOSB,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMULOUH,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMULOUH_UNS,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMULOSH,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VNMSUBFP,		RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VNOR,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VOR,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSEL_2DF,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSEL_2DI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSEL_4SI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSEL_4SF,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSEL_8HI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSEL_16QI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSEL_2DI_UNS,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSEL_4SI_UNS,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSEL_8HI_UNS,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSEL_16QI_UNS,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPERM_2DF,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPERM_2DI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPERM_4SI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPERM_4SF,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPERM_8HI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPERM_16QI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPERM_2DI_UNS,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPERM_4SI_UNS,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPERM_8HI_UNS,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPERM_16QI_UNS,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPKUHUM,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPKUWUM,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPKPX,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPKUHSS,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPKSHSS,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPKUWSS,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPKSWSS,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPKUHUS,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPKSHUS,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPKUWUS,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPKSWUS,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VREFP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VRFIM,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VRFIN,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VRFIP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VRFIZ,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VRLB,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VRLH,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VRLW,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VRSQRTEFP,		RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSLB,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSLH,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSLW,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSL,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSLO,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSPLTB,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSPLTH,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSPLTW,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSPLTISB,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSPLTISH,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSPLTISW,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSRB,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSRH,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSRW,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSRAB,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSRAH,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSRAW,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSR,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSRO,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSUBUBM,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSUBUHM,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSUBUWM,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSUBFP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSUBCUW,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSUBUBS,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSUBSBS,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSUBUHS,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSUBSHS,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSUBUWS,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSUBSWS,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSUM4UBS,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSUM4SBS,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSUM4SHS,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSUM2SWS,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSUMSWS,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VXOR,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSLDOI_16QI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSLDOI_8HI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSLDOI_4SI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSLDOI_4SF,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VUPKHSB,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VUPKHPX,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VUPKHSH,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VUPKLSB,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VUPKLPX,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VUPKLSH,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_MTVSCR,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_MFVSCR,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_DSSALL,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_DSS,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_LVSL,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_LVSR,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_DSTT,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_DSTST,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_DSTSTT,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_DST,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_LVEBX,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_LVEHX,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_LVEWX,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_LVXL,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_LVX,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_STVX,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_LVLX,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_LVLXL,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_LVRX,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_LVRXL,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_STVEBX,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_STVEHX,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_STVEWX,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_STVXL,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_STVLX,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_STVLXL,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_STVRX,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_STVRXL,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPBFP_P,		RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPEQFP_P,		RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPEQUB_P,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPEQUH_P,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPEQUW_P,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPGEFP_P,		RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPGTFP_P,		RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPGTSB_P,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPGTSH_P,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPGTSW_P,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPGTUB_P,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPGTUH_P,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPGTUW_P,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_ABSS_V4SI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_ABSS_V8HI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_ABSS_V16QI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_ABS_V4SI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_ABS_V4SF,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_ABS_V8HI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_ABS_V16QI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_MASK_FOR_LOAD,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_MASK_FOR_STORE,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_INIT_V4SI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_INIT_V8HI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_INIT_V16QI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_INIT_V4SF,		RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SET_V4SI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SET_V8HI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SET_V16QI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SET_V4SF,		RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_EXT_V4SI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_EXT_V8HI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_EXT_V16QI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_EXT_V4SF,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_COPYSIGN_V4SF,		RS6000_BTC_CONST)
+
+/* Altivec overloaded builtins.  */
+/* For now, don't set the classification for overloaded functions.
+   The function should be converted to the type specific instruction
+   before we get to the point about classifying the builtin type.  */
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPEQ_P,		RS6000_BTC_MISC)
+RS6000_BUILTIN_EQUATE(ALTIVEC_BUILTIN_OVERLOADED_FIRST,
+		      ALTIVEC_BUILTIN_VCMPEQ_P)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPGT_P,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPGE_P,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_ABS,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_ABSS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_ADD,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_ADDC,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_ADDS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_AND,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_ANDC,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_AVG,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_EXTRACT,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_CEIL,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_CMPB,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_CMPEQ,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_CMPEQUB,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_CMPEQUH,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_CMPEQUW,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_CMPGE,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_CMPGT,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_CMPLE,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_CMPLT,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_COPYSIGN,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_CTF,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_CTS,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_CTU,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_DST,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_DSTST,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_DSTSTT,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_DSTT,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_EXPTE,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_FLOOR,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_LD,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_LDE,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_LDL,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_LOGE,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_LVEBX,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_LVEHX,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_LVEWX,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_LVLX,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_LVLXL,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_LVRX,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_LVRXL,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_LVSL,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_LVSR,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_MADD,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_MADDS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_MAX,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_MERGEH,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_MERGEL,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_MIN,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_MLADD,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_MPERM,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_MRADDS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_MRGHB,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_MRGHH,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_MRGHW,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_MRGLB,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_MRGLH,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_MRGLW,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_MSUM,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_MSUMS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_MTVSCR,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_MULE,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_MULO,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_NEARBYINT,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_NMSUB,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_NOR,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_OR,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_PACK,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_PACKPX,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_PACKS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_PACKSU,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_PERM,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_RE,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_RL,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_RINT,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_ROUND,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_RSQRTE,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SEL,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SL,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SLD,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SLL,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SLO,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SPLAT,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SPLAT_S16,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SPLAT_S32,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SPLAT_S8,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SPLAT_U16,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SPLAT_U32,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SPLAT_U8,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SPLTB,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SPLTH,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SPLTW,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SQRT,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SR,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SRA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SRL,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SRO,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_ST,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_STE,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_STL,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_STVEBX,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_STVEHX,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_STVEWX,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_STVLX,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_STVLXL,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_STVRX,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_STVRXL,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SUB,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SUBC,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SUBS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SUM2S,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SUM4S,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SUMS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_TRUNC,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_UNPACKH,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_UNPACKL,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VADDFP,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VADDSBS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VADDSHS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VADDSWS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VADDUBM,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VADDUBS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VADDUHM,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VADDUHS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VADDUWM,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VADDUWS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VAVGSB,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VAVGSH,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VAVGSW,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VAVGUB,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VAVGUH,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VAVGUW,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VCFSX,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VCFUX,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VCMPEQFP,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VCMPEQUB,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VCMPEQUH,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VCMPEQUW,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VCMPGTFP,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VCMPGTSB,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VCMPGTSH,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VCMPGTSW,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VCMPGTUB,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VCMPGTUH,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VCMPGTUW,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMAXFP,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMAXSB,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMAXSH,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMAXSW,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMAXUB,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMAXUH,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMAXUW,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMINFP,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMINSB,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMINSH,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMINSW,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMINUB,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMINUH,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMINUW,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMRGHB,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMRGHH,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMRGHW,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMRGLB,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMRGLH,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMRGLW,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMSUMMBM,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMSUMSHM,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMSUMSHS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMSUMUBM,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMSUMUHM,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMSUMUHS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMULESB,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMULESH,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMULEUB,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMULEUH,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMULOSB,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMULOSH,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMULOUB,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMULOUH,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VPKSHSS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VPKSHUS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VPKSWSS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VPKSWUS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VPKUHUM,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VPKUHUS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VPKUWUM,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VPKUWUS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VRLB,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VRLH,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VRLW,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSLB,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSLH,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSLW,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSPLTB,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSPLTH,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSPLTW,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSRAB,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSRAH,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSRAW,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSRB,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSRH,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSRW,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSUBFP,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSUBSBS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSUBSHS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSUBSWS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSUBUBM,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSUBUBS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSUBUHM,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSUBUHS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSUBUWM,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSUBUWS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSUM4SBS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSUM4SHS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSUM4UBS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VUPKHPX,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VUPKHSB,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VUPKHSH,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VUPKLPX,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VUPKLSB,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VUPKLSH,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_XOR,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_STEP,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_PROMOTE,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_INSERT,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SPLATS,		RS6000_BTC_MISC)
+RS6000_BUILTIN_EQUATE(ALTIVEC_BUILTIN_OVERLOADED_LAST,
+		      ALTIVEC_BUILTIN_VEC_SPLATS)
+
+/* SPE builtins.  */
+RS6000_BUILTIN(SPE_BUILTIN_EVADDW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVAND,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVANDC,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVDIVWS,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVDIVWU,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVEQV,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSADD,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSDIV,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSMUL,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSSUB,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLDDX,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLDHX,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLDWX,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLHHESPLATX,		RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLHHOSSPLATX,		RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLHHOUSPLATX,		RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLWHEX,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLWHOSX,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLWHOUX,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLWHSPLATX,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLWWSPLATX,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMERGEHI,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMERGEHILO,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMERGELO,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMERGELOHI,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHEGSMFAA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHEGSMFAN,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHEGSMIAA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHEGSMIAN,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHEGUMIAA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHEGUMIAN,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHESMF,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHESMFA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHESMFAAW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHESMFANW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHESMI,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHESMIA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHESMIAAW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHESMIANW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHESSF,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHESSFA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHESSFAAW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHESSFANW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHESSIAAW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHESSIANW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHEUMI,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHEUMIA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHEUMIAAW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHEUMIANW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHEUSIAAW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHEUSIANW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOGSMFAA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOGSMFAN,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOGSMIAA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOGSMIAN,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOGUMIAA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOGUMIAN,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOSMF,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOSMFA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOSMFAAW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOSMFANW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOSMI,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOSMIA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOSMIAAW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOSMIANW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOSSF,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOSSFA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOSSFAAW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOSSFANW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOSSIAAW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOSSIANW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOUMI,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOUMIA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOUMIAAW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOUMIANW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOUSIAAW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOUSIANW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHSMF,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHSMFA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHSMI,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHSMIA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHSSF,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHSSFA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHUMI,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHUMIA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWLSMIAAW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWLSMIANW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWLSSIAAW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWLSSIANW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWLUMI,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWLUMIA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWLUMIAAW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWLUMIANW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWLUSIAAW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWLUSIANW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWSMF,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWSMFA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWSMFAA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWSMFAN,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWSMI,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWSMIA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWSMIAA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWSMIAN,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHSSFAA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWSSF,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWSSFA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWSSFAA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWSSFAN,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWUMI,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWUMIA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWUMIAA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWUMIAN,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVNAND,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVNOR,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVOR,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVORC,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVRLW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSLW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSRWS,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSRWU,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSTDDX,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSTDHX,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSTDWX,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSTWHEX,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSTWHOX,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSTWWEX,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSTWWOX,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSUBFW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVXOR,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVABS,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVADDSMIAAW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVADDSSIAAW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVADDUMIAAW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVADDUSIAAW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVCNTLSW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVCNTLZW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVEXTSB,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVEXTSH,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSABS,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSCFSF,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSCFSI,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSCFUF,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSCFUI,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSCTSF,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSCTSI,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSCTSIZ,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSCTUF,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSCTUI,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSCTUIZ,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSNABS,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSNEG,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMRA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVNEG,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVRNDW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSUBFSMIAAW,		RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSUBFSSIAAW,		RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSUBFUMIAAW,		RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSUBFUSIAAW,		RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVADDIW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLDD,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLDH,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLDW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLHHESPLAT,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLHHOSSPLAT,		RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLHHOUSPLAT,		RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLWHE,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLWHOS,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLWHOU,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLWHSPLAT,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLWWSPLAT,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVRLWI,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSLWI,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSRWIS,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSRWIU,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSTDD,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSTDH,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSTDW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSTWHE,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSTWHO,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSTWWE,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSTWWO,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSUBIFW,			RS6000_BTC_MISC)
+
+  /* Compares.  */
+RS6000_BUILTIN(SPE_BUILTIN_EVCMPEQ,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVCMPGTS,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVCMPGTU,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVCMPLTS,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVCMPLTU,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSCMPEQ,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSCMPGT,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSCMPLT,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSTSTEQ,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSTSTGT,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSTSTLT,			RS6000_BTC_MISC)
+
+/* EVSEL compares.  */
+RS6000_BUILTIN(SPE_BUILTIN_EVSEL_CMPEQ,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSEL_CMPGTS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSEL_CMPGTU,		RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSEL_CMPLTS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSEL_CMPLTU,		RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSEL_FSCMPEQ,		RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSEL_FSCMPGT,		RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSEL_FSCMPLT,		RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSEL_FSTSTEQ,		RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSEL_FSTSTGT,		RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSEL_FSTSTLT,		RS6000_BTC_MISC)
+
+RS6000_BUILTIN(SPE_BUILTIN_EVSPLATFI,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSPLATI,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHSSMAA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHSMFAA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHSMIAA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHUSIAA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHUMIAA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHSSFAN,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHSSIAN,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHSMFAN,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHSMIAN,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHUSIAN,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHUMIAN,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHGSSFAA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHGSMFAA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHGSMIAA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHGUMIAA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHGSSFAN,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHGSMFAN,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHGSMIAN,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHGUMIAN,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_MTSPEFSCR,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_MFSPEFSCR,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_BRINC,			RS6000_BTC_MISC)
+
+/* PAIRED builtins.  */
+RS6000_BUILTIN(PAIRED_BUILTIN_DIVV2SF3,			RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_ABSV2SF2,			RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_NEGV2SF2,			RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_SQRTV2SF2,		RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_ADDV2SF3,			RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_SUBV2SF3,			RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_RESV2SF2,			RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_MULV2SF3,			RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_MSUB,			RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_MADD,			RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_NMSUB,			RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_NMADD,			RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_NABSV2SF2,		RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_SUM0,			RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_SUM1,			RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_MULS0,			RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_MULS1,			RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_MERGE00,			RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_MERGE01,			RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_MERGE10,			RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_MERGE11,			RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_MADDS0,			RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_MADDS1,			RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_STX,			RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_LX,			RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_SELV2SF4,			RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_CMPU0,			RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_CMPU1,			RS6000_BTC_MISC)
+
+  /* VSX builtins.  */
+RS6000_BUILTIN(VSX_BUILTIN_LXSDX,			RS6000_BTC_MISC)
+RS6000_BUILTIN(VSX_BUILTIN_LXVD2X,			RS6000_BTC_MISC)
+RS6000_BUILTIN(VSX_BUILTIN_LXVDSX,			RS6000_BTC_MISC)
+RS6000_BUILTIN(VSX_BUILTIN_LXVW4X,			RS6000_BTC_MISC)
+RS6000_BUILTIN(VSX_BUILTIN_STXSDX,			RS6000_BTC_MISC)
+RS6000_BUILTIN(VSX_BUILTIN_STXVD2X,			RS6000_BTC_MISC)
+RS6000_BUILTIN(VSX_BUILTIN_STXVW4X,			RS6000_BTC_MISC)
+RS6000_BUILTIN(VSX_BUILTIN_XSABSDP,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XSADDDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSCMPODP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSCMPUDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSCPSGNDP,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XSCVDPSP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSCVDPSXDS,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSCVDPSXWS,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSCVDPUXDS,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSCVDPUXWS,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSCVSPDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSCVSXDDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSCVUXDDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSDIVDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSMADDADP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSMADDMDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSMAXDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSMINDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSMOVDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSMSUBADP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSMSUBMDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSMULDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSNABSDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSNEGDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSNMADDADP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSNMADDMDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSNMSUBADP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSNMSUBMDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSRDPI,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSRDPIC,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSRDPIM,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSRDPIP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSRDPIZ,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSREDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSRSQRTEDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSSQRTDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSSUBDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_CPSGNDP,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_CPSGNSP,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XSTDIVDP_FE,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSTDIVDP_FG,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSTSQRTDP_FE,		RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSTSQRTDP_FG,		RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVABSDP,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XVABSSP,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XVADDDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVADDSP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCMPEQDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCMPEQSP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCMPGEDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCMPGESP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCMPGTDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCMPGTSP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCMPEQDP_P,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCMPEQSP_P,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCMPGEDP_P,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCMPGESP_P,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCMPGTDP_P,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCMPGTSP_P,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCPSGNDP,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XVCPSGNSP,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XVCVDPSP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCVDPSXDS,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCVDPSXWS,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCVDPUXDS,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCVDPUXDS_UNS,		RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCVDPUXWS,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCVSPDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCVSPSXDS,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCVSPSXWS,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCVSPUXDS,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCVSPUXWS,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCVSXDDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCVSXDSP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCVSXWDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCVSXWSP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCVUXDDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCVUXDDP_UNS,		RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCVUXDSP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCVUXWDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCVUXWSP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVDIVDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVDIVSP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVMADDDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVMADDSP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVMAXDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVMAXSP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVMINDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVMINSP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVMSUBDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVMSUBSP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVMULDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVMULSP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVNABSDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVNABSSP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVNEGDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVNEGSP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVNMADDDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVNMADDSP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVNMSUBDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVNMSUBSP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVRDPI,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVRDPIC,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVRDPIM,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVRDPIP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVRDPIZ,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVREDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVRESP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVRSPI,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVRSPIC,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVRSPIM,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVRSPIP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVRSPIZ,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVRSQRTEDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVRSQRTESP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVSQRTDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVSQRTSP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVSUBDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVSUBSP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVTDIVDP_FE,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVTDIVDP_FG,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVTDIVSP_FE,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVTDIVSP_FG,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVTSQRTDP_FE,		RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVTSQRTDP_FG,		RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVTSQRTSP_FE,		RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVTSQRTSP_FG,		RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XXSEL_2DI,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXSEL_2DF,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXSEL_4SI,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXSEL_4SF,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXSEL_8HI,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXSEL_16QI,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXSEL_2DI_UNS,		RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXSEL_4SI_UNS,		RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXSEL_8HI_UNS,		RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXSEL_16QI_UNS,		RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_VPERM_2DI,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_VPERM_2DF,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_VPERM_4SI,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_VPERM_4SF,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_VPERM_8HI,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_VPERM_16QI,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_VPERM_2DI_UNS,		RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_VPERM_4SI_UNS,		RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_VPERM_8HI_UNS,		RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_VPERM_16QI_UNS,		RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXPERMDI_2DF,		RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXPERMDI_2DI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXPERMDI_4SF,		RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXPERMDI_4SI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXPERMDI_8HI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXPERMDI_16QI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_CONCAT_2DF,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_CONCAT_2DI,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_SET_2DF,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_SET_2DI,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_SPLAT_2DF,			RS6000_BTC_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_SPLAT_2DI,			RS6000_BTC_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XXMRGHW_4SF,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXMRGHW_4SI,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXMRGLW_4SF,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXMRGLW_4SI,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXSLDWI_16QI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXSLDWI_8HI,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXSLDWI_4SI,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXSLDWI_4SF,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXSLDWI_2DI,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXSLDWI_2DF,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_VEC_INIT_V2DF,		RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_VEC_INIT_V2DI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_VEC_SET_V2DF,		RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_VEC_SET_V2DI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_VEC_EXT_V2DF,		RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_VEC_EXT_V2DI,		RS6000_BTC_CONST)
+
+/* VSX overloaded builtins, add the overloaded functions not present in
+   Altivec.  */
+RS6000_BUILTIN(VSX_BUILTIN_VEC_MUL,			RS6000_BTC_MISC)
+RS6000_BUILTIN_EQUATE(VSX_BUILTIN_OVERLOADED_FIRST,
+		      VSX_BUILTIN_VEC_MUL)
+RS6000_BUILTIN(VSX_BUILTIN_VEC_MSUB,			RS6000_BTC_MISC)
+RS6000_BUILTIN(VSX_BUILTIN_VEC_NMADD,			RS6000_BTC_MISC)
+RS6000_BUILTIN(VSX_BUITLIN_VEC_NMSUB,			RS6000_BTC_MISC)
+RS6000_BUILTIN(VSX_BUILTIN_VEC_DIV,			RS6000_BTC_MISC)
+RS6000_BUILTIN(VSX_BUILTIN_VEC_XXMRGHW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(VSX_BUILTIN_VEC_XXMRGLW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(VSX_BUILTIN_VEC_XXPERMDI,		RS6000_BTC_MISC)
+RS6000_BUILTIN(VSX_BUILTIN_VEC_XXSLDWI,			RS6000_BTC_MISC)
+RS6000_BUILTIN(VSX_BUILTIN_VEC_XXSPLTD,			RS6000_BTC_MISC)
+RS6000_BUILTIN(VSX_BUILTIN_VEC_XXSPLTW,			RS6000_BTC_MISC)
+RS6000_BUILTIN_EQUATE(VSX_BUILTIN_OVERLOADED_LAST,
+		      VSX_BUILTIN_VEC_XXSPLTW)
+
+/* Combined VSX/Altivec builtins.  */
+RS6000_BUILTIN(VECTOR_BUILTIN_FLOAT_V4SI_V4SF,		RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VECTOR_BUILTIN_UNSFLOAT_V4SI_V4SF,	RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VECTOR_BUILTIN_FIX_V4SF_V4SI,		RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VECTOR_BUILTIN_FIXUNS_V4SF_V4SI,		RS6000_BTC_FP_PURE)
+
+/* Power7 builtins, that aren't VSX instructions.  */
+RS6000_BUILTIN(POWER7_BUILTIN_BPERMD,			RS6000_BTC_CONST)
+
+/* Miscellaneous builtins.  */
+RS6000_BUILTIN(RS6000_BUILTIN_RECIP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(RS6000_BUILTIN_RECIPF,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(RS6000_BUILTIN_RSQRTF,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(RS6000_BUILTIN_BSWAP_HI,			RS6000_BTC_CONST)
Index: gcc/config/rs6000/rs6000.c
===================================================================
--- gcc/config/rs6000/rs6000.c	(revision 152338)
+++ gcc/config/rs6000/rs6000.c	(working copy)
@@ -798,6 +798,21 @@ struct processor_costs power7_cost = {
 };
 
 \f
+/* Table that classifies rs6000 builtin functions (pure, const, etc.).  */
+#undef RS6000_BUILTIN
+#undef RS6000_BUILTIN_EQUATE
+#define RS6000_BUILTIN(NAME, TYPE) TYPE,
+#define RS6000_BUILTIN_EQUATE(NAME, VALUE)
+
+static const enum rs6000_btc builtin_classify[(int)RS6000_BUILTIN_COUNT] =
+{
+#include "rs6000-builtin.def"
+};
+
+#undef RS6000_BUILTIN
+#undef RS6000_BUILTIN_EQUATE
+
+\f
 static bool rs6000_function_ok_for_sibcall (tree, tree);
 static const char *rs6000_invalid_within_doloop (const_rtx);
 static bool rs6000_legitimate_address_p (enum machine_mode, rtx, bool);
@@ -8465,13 +8480,54 @@ def_builtin (int mask, const char *name,
 {
   if ((mask & target_flags) || TARGET_PAIRED_FLOAT)
     {
+      tree t;
       if (rs6000_builtin_decls[code])
 	fatal_error ("internal error: builtin function to %s already processed.",
 		     name);
 
-      rs6000_builtin_decls[code] =
+      rs6000_builtin_decls[code] = t =
         add_builtin_function (name, type, code, BUILT_IN_MD,
 			      NULL, NULL_TREE);
+
+      gcc_assert (code >= 0 && code < (int)RS6000_BUILTIN_COUNT);
+      switch (builtin_classify[code])
+	{
+	default:
+	  gcc_unreachable ();
+
+	  /* assume builtin can do anything.  */
+	case RS6000_BTC_MISC:
+	  break;
+
+	  /* const function, function only depends on the inputs.  */
+	case RS6000_BTC_CONST:
+	  TREE_CONSTANT (t) = 1;
+	  TREE_NOTHROW (t) = 1;
+	  break;
+
+	  /* pure function, function can read global memory.  */
+	case RS6000_BTC_PURE:
+	  DECL_PURE_P (t) = 1;
+	  TREE_NOTHROW (t) = 1;
+	  break;
+
+	  /* Function is a math function.  If rounding mode is on, then treat
+	     the function as not reading global memory, but it can have
+	     arbitrary side effects.  If it is off, then assume the function is
+	     a const function.  This mimics the ATTR_MATHFN_FPROUNDING
+	     attribute in builtin-attribute.def that is used for the math
+	     functions. */
+	case RS6000_BTC_FP_PURE:
+	  TREE_NOTHROW (t) = 1;
+	  if (flag_rounding_math)
+	    {
+	      DECL_PURE_P (t) = 1;
+	      DECL_IS_NOVOPS (t) = 1;
+	    }
+	  else
+	    TREE_CONSTANT (t) = 1;
+	  break;
+	}
     }
 }
 
Index: gcc/config/rs6000/rs6000.h
===================================================================
--- gcc/config/rs6000/rs6000.h	(revision 152338)
+++ gcc/config/rs6000/rs6000.h	(working copy)
@@ -2412,964 +2412,31 @@ extern int optimize;
 extern int flag_expensive_optimizations;
 extern int frame_pointer_needed;
 
-enum rs6000_builtins
+/* Classification of the builtin functions to properly set the declaration tree
+   flags.  */
+enum rs6000_btc
 {
-  /* AltiVec builtins.  */
-  ALTIVEC_BUILTIN_ST_INTERNAL_4si,
-  ALTIVEC_BUILTIN_LD_INTERNAL_4si,
-  ALTIVEC_BUILTIN_ST_INTERNAL_8hi,
-  ALTIVEC_BUILTIN_LD_INTERNAL_8hi,
-  ALTIVEC_BUILTIN_ST_INTERNAL_16qi,
-  ALTIVEC_BUILTIN_LD_INTERNAL_16qi,
-  ALTIVEC_BUILTIN_ST_INTERNAL_4sf,
-  ALTIVEC_BUILTIN_LD_INTERNAL_4sf,
-  ALTIVEC_BUILTIN_VADDUBM,
-  ALTIVEC_BUILTIN_VADDUHM,
-  ALTIVEC_BUILTIN_VADDUWM,
-  ALTIVEC_BUILTIN_VADDFP,
-  ALTIVEC_BUILTIN_VADDCUW,
-  ALTIVEC_BUILTIN_VADDUBS,
-  ALTIVEC_BUILTIN_VADDSBS,
-  ALTIVEC_BUILTIN_VADDUHS,
-  ALTIVEC_BUILTIN_VADDSHS,
-  ALTIVEC_BUILTIN_VADDUWS,
-  ALTIVEC_BUILTIN_VADDSWS,
-  ALTIVEC_BUILTIN_VAND,
-  ALTIVEC_BUILTIN_VANDC,
-  ALTIVEC_BUILTIN_VAVGUB,
-  ALTIVEC_BUILTIN_VAVGSB,
-  ALTIVEC_BUILTIN_VAVGUH,
-  ALTIVEC_BUILTIN_VAVGSH,
-  ALTIVEC_BUILTIN_VAVGUW,
-  ALTIVEC_BUILTIN_VAVGSW,
-  ALTIVEC_BUILTIN_VCFUX,
-  ALTIVEC_BUILTIN_VCFSX,
-  ALTIVEC_BUILTIN_VCTSXS,
-  ALTIVEC_BUILTIN_VCTUXS,
-  ALTIVEC_BUILTIN_VCMPBFP,
-  ALTIVEC_BUILTIN_VCMPEQUB,
-  ALTIVEC_BUILTIN_VCMPEQUH,
-  ALTIVEC_BUILTIN_VCMPEQUW,
-  ALTIVEC_BUILTIN_VCMPEQFP,
-  ALTIVEC_BUILTIN_VCMPGEFP,
-  ALTIVEC_BUILTIN_VCMPGTUB,
-  ALTIVEC_BUILTIN_VCMPGTSB,
-  ALTIVEC_BUILTIN_VCMPGTUH,
-  ALTIVEC_BUILTIN_VCMPGTSH,
-  ALTIVEC_BUILTIN_VCMPGTUW,
-  ALTIVEC_BUILTIN_VCMPGTSW,
-  ALTIVEC_BUILTIN_VCMPGTFP,
-  ALTIVEC_BUILTIN_VEXPTEFP,
-  ALTIVEC_BUILTIN_VLOGEFP,
-  ALTIVEC_BUILTIN_VMADDFP,
-  ALTIVEC_BUILTIN_VMAXUB,
-  ALTIVEC_BUILTIN_VMAXSB,
-  ALTIVEC_BUILTIN_VMAXUH,
-  ALTIVEC_BUILTIN_VMAXSH,
-  ALTIVEC_BUILTIN_VMAXUW,
-  ALTIVEC_BUILTIN_VMAXSW,
-  ALTIVEC_BUILTIN_VMAXFP,
-  ALTIVEC_BUILTIN_VMHADDSHS,
-  ALTIVEC_BUILTIN_VMHRADDSHS,
-  ALTIVEC_BUILTIN_VMLADDUHM,
-  ALTIVEC_BUILTIN_VMRGHB,
-  ALTIVEC_BUILTIN_VMRGHH,
-  ALTIVEC_BUILTIN_VMRGHW,
-  ALTIVEC_BUILTIN_VMRGLB,
-  ALTIVEC_BUILTIN_VMRGLH,
-  ALTIVEC_BUILTIN_VMRGLW,
-  ALTIVEC_BUILTIN_VMSUMUBM,
-  ALTIVEC_BUILTIN_VMSUMMBM,
-  ALTIVEC_BUILTIN_VMSUMUHM,
-  ALTIVEC_BUILTIN_VMSUMSHM,
-  ALTIVEC_BUILTIN_VMSUMUHS,
-  ALTIVEC_BUILTIN_VMSUMSHS,
-  ALTIVEC_BUILTIN_VMINUB,
-  ALTIVEC_BUILTIN_VMINSB,
-  ALTIVEC_BUILTIN_VMINUH,
-  ALTIVEC_BUILTIN_VMINSH,
-  ALTIVEC_BUILTIN_VMINUW,
-  ALTIVEC_BUILTIN_VMINSW,
-  ALTIVEC_BUILTIN_VMINFP,
-  ALTIVEC_BUILTIN_VMULEUB,
-  ALTIVEC_BUILTIN_VMULEUB_UNS,
-  ALTIVEC_BUILTIN_VMULESB,
-  ALTIVEC_BUILTIN_VMULEUH,
-  ALTIVEC_BUILTIN_VMULEUH_UNS,
-  ALTIVEC_BUILTIN_VMULESH,
-  ALTIVEC_BUILTIN_VMULOUB,
-  ALTIVEC_BUILTIN_VMULOUB_UNS,
-  ALTIVEC_BUILTIN_VMULOSB,
-  ALTIVEC_BUILTIN_VMULOUH,
-  ALTIVEC_BUILTIN_VMULOUH_UNS,
-  ALTIVEC_BUILTIN_VMULOSH,
-  ALTIVEC_BUILTIN_VNMSUBFP,
-  ALTIVEC_BUILTIN_VNOR,
-  ALTIVEC_BUILTIN_VOR,
-  ALTIVEC_BUILTIN_VSEL_2DF,		/* needed for VSX */
-  ALTIVEC_BUILTIN_VSEL_2DI,		/* needed for VSX */
-  ALTIVEC_BUILTIN_VSEL_4SI,
-  ALTIVEC_BUILTIN_VSEL_4SF,
-  ALTIVEC_BUILTIN_VSEL_8HI,
-  ALTIVEC_BUILTIN_VSEL_16QI,
-  ALTIVEC_BUILTIN_VSEL_2DI_UNS,
-  ALTIVEC_BUILTIN_VSEL_4SI_UNS,
-  ALTIVEC_BUILTIN_VSEL_8HI_UNS,
-  ALTIVEC_BUILTIN_VSEL_16QI_UNS,
-  ALTIVEC_BUILTIN_VPERM_2DF,		/* needed for VSX */
-  ALTIVEC_BUILTIN_VPERM_2DI,		/* needed for VSX */
-  ALTIVEC_BUILTIN_VPERM_4SI,
-  ALTIVEC_BUILTIN_VPERM_4SF,
-  ALTIVEC_BUILTIN_VPERM_8HI,
-  ALTIVEC_BUILTIN_VPERM_16QI,
-  ALTIVEC_BUILTIN_VPERM_2DI_UNS,
-  ALTIVEC_BUILTIN_VPERM_4SI_UNS,
-  ALTIVEC_BUILTIN_VPERM_8HI_UNS,
-  ALTIVEC_BUILTIN_VPERM_16QI_UNS,
-  ALTIVEC_BUILTIN_VPKUHUM,
-  ALTIVEC_BUILTIN_VPKUWUM,
-  ALTIVEC_BUILTIN_VPKPX,
-  ALTIVEC_BUILTIN_VPKUHSS,
-  ALTIVEC_BUILTIN_VPKSHSS,
-  ALTIVEC_BUILTIN_VPKUWSS,
-  ALTIVEC_BUILTIN_VPKSWSS,
-  ALTIVEC_BUILTIN_VPKUHUS,
-  ALTIVEC_BUILTIN_VPKSHUS,
-  ALTIVEC_BUILTIN_VPKUWUS,
-  ALTIVEC_BUILTIN_VPKSWUS,
-  ALTIVEC_BUILTIN_VREFP,
-  ALTIVEC_BUILTIN_VRFIM,
-  ALTIVEC_BUILTIN_VRFIN,
-  ALTIVEC_BUILTIN_VRFIP,
-  ALTIVEC_BUILTIN_VRFIZ,
-  ALTIVEC_BUILTIN_VRLB,
-  ALTIVEC_BUILTIN_VRLH,
-  ALTIVEC_BUILTIN_VRLW,
-  ALTIVEC_BUILTIN_VRSQRTEFP,
-  ALTIVEC_BUILTIN_VSLB,
-  ALTIVEC_BUILTIN_VSLH,
-  ALTIVEC_BUILTIN_VSLW,
-  ALTIVEC_BUILTIN_VSL,
-  ALTIVEC_BUILTIN_VSLO,
-  ALTIVEC_BUILTIN_VSPLTB,
-  ALTIVEC_BUILTIN_VSPLTH,
-  ALTIVEC_BUILTIN_VSPLTW,
-  ALTIVEC_BUILTIN_VSPLTISB,
-  ALTIVEC_BUILTIN_VSPLTISH,
-  ALTIVEC_BUILTIN_VSPLTISW,
-  ALTIVEC_BUILTIN_VSRB,
-  ALTIVEC_BUILTIN_VSRH,
-  ALTIVEC_BUILTIN_VSRW,
-  ALTIVEC_BUILTIN_VSRAB,
-  ALTIVEC_BUILTIN_VSRAH,
-  ALTIVEC_BUILTIN_VSRAW,
-  ALTIVEC_BUILTIN_VSR,
-  ALTIVEC_BUILTIN_VSRO,
-  ALTIVEC_BUILTIN_VSUBUBM,
-  ALTIVEC_BUILTIN_VSUBUHM,
-  ALTIVEC_BUILTIN_VSUBUWM,
-  ALTIVEC_BUILTIN_VSUBFP,
-  ALTIVEC_BUILTIN_VSUBCUW,
-  ALTIVEC_BUILTIN_VSUBUBS,
-  ALTIVEC_BUILTIN_VSUBSBS,
-  ALTIVEC_BUILTIN_VSUBUHS,
-  ALTIVEC_BUILTIN_VSUBSHS,
-  ALTIVEC_BUILTIN_VSUBUWS,
-  ALTIVEC_BUILTIN_VSUBSWS,
-  ALTIVEC_BUILTIN_VSUM4UBS,
-  ALTIVEC_BUILTIN_VSUM4SBS,
-  ALTIVEC_BUILTIN_VSUM4SHS,
-  ALTIVEC_BUILTIN_VSUM2SWS,
-  ALTIVEC_BUILTIN_VSUMSWS,
-  ALTIVEC_BUILTIN_VXOR,
-  ALTIVEC_BUILTIN_VSLDOI_16QI,
-  ALTIVEC_BUILTIN_VSLDOI_8HI,
-  ALTIVEC_BUILTIN_VSLDOI_4SI,
-  ALTIVEC_BUILTIN_VSLDOI_4SF,
-  ALTIVEC_BUILTIN_VUPKHSB,
-  ALTIVEC_BUILTIN_VUPKHPX,
-  ALTIVEC_BUILTIN_VUPKHSH,
-  ALTIVEC_BUILTIN_VUPKLSB,
-  ALTIVEC_BUILTIN_VUPKLPX,
-  ALTIVEC_BUILTIN_VUPKLSH,
-  ALTIVEC_BUILTIN_MTVSCR,
-  ALTIVEC_BUILTIN_MFVSCR,
-  ALTIVEC_BUILTIN_DSSALL,
-  ALTIVEC_BUILTIN_DSS,
-  ALTIVEC_BUILTIN_LVSL,
-  ALTIVEC_BUILTIN_LVSR,
-  ALTIVEC_BUILTIN_DSTT,
-  ALTIVEC_BUILTIN_DSTST,
-  ALTIVEC_BUILTIN_DSTSTT,
-  ALTIVEC_BUILTIN_DST,
-  ALTIVEC_BUILTIN_LVEBX,
-  ALTIVEC_BUILTIN_LVEHX,
-  ALTIVEC_BUILTIN_LVEWX,
-  ALTIVEC_BUILTIN_LVXL,
-  ALTIVEC_BUILTIN_LVX,
-  ALTIVEC_BUILTIN_STVX,
-  ALTIVEC_BUILTIN_LVLX,
-  ALTIVEC_BUILTIN_LVLXL,
-  ALTIVEC_BUILTIN_LVRX,
-  ALTIVEC_BUILTIN_LVRXL,
-  ALTIVEC_BUILTIN_STVEBX,
-  ALTIVEC_BUILTIN_STVEHX,
-  ALTIVEC_BUILTIN_STVEWX,
-  ALTIVEC_BUILTIN_STVXL,
-  ALTIVEC_BUILTIN_STVLX,
-  ALTIVEC_BUILTIN_STVLXL,
-  ALTIVEC_BUILTIN_STVRX,
-  ALTIVEC_BUILTIN_STVRXL,
-  ALTIVEC_BUILTIN_VCMPBFP_P,
-  ALTIVEC_BUILTIN_VCMPEQFP_P,
-  ALTIVEC_BUILTIN_VCMPEQUB_P,
-  ALTIVEC_BUILTIN_VCMPEQUH_P,
-  ALTIVEC_BUILTIN_VCMPEQUW_P,
-  ALTIVEC_BUILTIN_VCMPGEFP_P,
-  ALTIVEC_BUILTIN_VCMPGTFP_P,
-  ALTIVEC_BUILTIN_VCMPGTSB_P,
-  ALTIVEC_BUILTIN_VCMPGTSH_P,
-  ALTIVEC_BUILTIN_VCMPGTSW_P,
-  ALTIVEC_BUILTIN_VCMPGTUB_P,
-  ALTIVEC_BUILTIN_VCMPGTUH_P,
-  ALTIVEC_BUILTIN_VCMPGTUW_P,
-  ALTIVEC_BUILTIN_ABSS_V4SI,
-  ALTIVEC_BUILTIN_ABSS_V8HI,
-  ALTIVEC_BUILTIN_ABSS_V16QI,
-  ALTIVEC_BUILTIN_ABS_V4SI,
-  ALTIVEC_BUILTIN_ABS_V4SF,
-  ALTIVEC_BUILTIN_ABS_V8HI,
-  ALTIVEC_BUILTIN_ABS_V16QI,
-  ALTIVEC_BUILTIN_MASK_FOR_LOAD,
-  ALTIVEC_BUILTIN_MASK_FOR_STORE,
-  ALTIVEC_BUILTIN_VEC_INIT_V4SI,
-  ALTIVEC_BUILTIN_VEC_INIT_V8HI,
-  ALTIVEC_BUILTIN_VEC_INIT_V16QI,
-  ALTIVEC_BUILTIN_VEC_INIT_V4SF,
-  ALTIVEC_BUILTIN_VEC_SET_V4SI,
-  ALTIVEC_BUILTIN_VEC_SET_V8HI,
-  ALTIVEC_BUILTIN_VEC_SET_V16QI,
-  ALTIVEC_BUILTIN_VEC_SET_V4SF,
-  ALTIVEC_BUILTIN_VEC_EXT_V4SI,
-  ALTIVEC_BUILTIN_VEC_EXT_V8HI,
-  ALTIVEC_BUILTIN_VEC_EXT_V16QI,
-  ALTIVEC_BUILTIN_VEC_EXT_V4SF,
-  ALTIVEC_BUILTIN_COPYSIGN_V4SF,
-
-  /* Altivec overloaded builtins.  */
-  ALTIVEC_BUILTIN_VCMPEQ_P,
-  ALTIVEC_BUILTIN_OVERLOADED_FIRST = ALTIVEC_BUILTIN_VCMPEQ_P,
-  ALTIVEC_BUILTIN_VCMPGT_P,
-  ALTIVEC_BUILTIN_VCMPGE_P,
-  ALTIVEC_BUILTIN_VEC_ABS,
-  ALTIVEC_BUILTIN_VEC_ABSS,
-  ALTIVEC_BUILTIN_VEC_ADD,
-  ALTIVEC_BUILTIN_VEC_ADDC,
-  ALTIVEC_BUILTIN_VEC_ADDS,
-  ALTIVEC_BUILTIN_VEC_AND,
-  ALTIVEC_BUILTIN_VEC_ANDC,
-  ALTIVEC_BUILTIN_VEC_AVG,
-  ALTIVEC_BUILTIN_VEC_EXTRACT,
-  ALTIVEC_BUILTIN_VEC_CEIL,
-  ALTIVEC_BUILTIN_VEC_CMPB,
-  ALTIVEC_BUILTIN_VEC_CMPEQ,
-  ALTIVEC_BUILTIN_VEC_CMPEQUB,
-  ALTIVEC_BUILTIN_VEC_CMPEQUH,
-  ALTIVEC_BUILTIN_VEC_CMPEQUW,
-  ALTIVEC_BUILTIN_VEC_CMPGE,
-  ALTIVEC_BUILTIN_VEC_CMPGT,
-  ALTIVEC_BUILTIN_VEC_CMPLE,
-  ALTIVEC_BUILTIN_VEC_CMPLT,
-  ALTIVEC_BUILTIN_VEC_COPYSIGN,
-  ALTIVEC_BUILTIN_VEC_CTF,
-  ALTIVEC_BUILTIN_VEC_CTS,
-  ALTIVEC_BUILTIN_VEC_CTU,
-  ALTIVEC_BUILTIN_VEC_DST,
-  ALTIVEC_BUILTIN_VEC_DSTST,
-  ALTIVEC_BUILTIN_VEC_DSTSTT,
-  ALTIVEC_BUILTIN_VEC_DSTT,
-  ALTIVEC_BUILTIN_VEC_EXPTE,
-  ALTIVEC_BUILTIN_VEC_FLOOR,
-  ALTIVEC_BUILTIN_VEC_LD,
-  ALTIVEC_BUILTIN_VEC_LDE,
-  ALTIVEC_BUILTIN_VEC_LDL,
-  ALTIVEC_BUILTIN_VEC_LOGE,
-  ALTIVEC_BUILTIN_VEC_LVEBX,
-  ALTIVEC_BUILTIN_VEC_LVEHX,
-  ALTIVEC_BUILTIN_VEC_LVEWX,
-  ALTIVEC_BUILTIN_VEC_LVLX,
-  ALTIVEC_BUILTIN_VEC_LVLXL,
-  ALTIVEC_BUILTIN_VEC_LVRX,
-  ALTIVEC_BUILTIN_VEC_LVRXL,
-  ALTIVEC_BUILTIN_VEC_LVSL,
-  ALTIVEC_BUILTIN_VEC_LVSR,
-  ALTIVEC_BUILTIN_VEC_MADD,
-  ALTIVEC_BUILTIN_VEC_MADDS,
-  ALTIVEC_BUILTIN_VEC_MAX,
-  ALTIVEC_BUILTIN_VEC_MERGEH,
-  ALTIVEC_BUILTIN_VEC_MERGEL,
-  ALTIVEC_BUILTIN_VEC_MIN,
-  ALTIVEC_BUILTIN_VEC_MLADD,
-  ALTIVEC_BUILTIN_VEC_MPERM,
-  ALTIVEC_BUILTIN_VEC_MRADDS,
-  ALTIVEC_BUILTIN_VEC_MRGHB,
-  ALTIVEC_BUILTIN_VEC_MRGHH,
-  ALTIVEC_BUILTIN_VEC_MRGHW,
-  ALTIVEC_BUILTIN_VEC_MRGLB,
-  ALTIVEC_BUILTIN_VEC_MRGLH,
-  ALTIVEC_BUILTIN_VEC_MRGLW,
-  ALTIVEC_BUILTIN_VEC_MSUM,
-  ALTIVEC_BUILTIN_VEC_MSUMS,
-  ALTIVEC_BUILTIN_VEC_MTVSCR,
-  ALTIVEC_BUILTIN_VEC_MULE,
-  ALTIVEC_BUILTIN_VEC_MULO,
-  ALTIVEC_BUILTIN_VEC_NEARBYINT,
-  ALTIVEC_BUILTIN_VEC_NMSUB,
-  ALTIVEC_BUILTIN_VEC_NOR,
-  ALTIVEC_BUILTIN_VEC_OR,
-  ALTIVEC_BUILTIN_VEC_PACK,
-  ALTIVEC_BUILTIN_VEC_PACKPX,
-  ALTIVEC_BUILTIN_VEC_PACKS,
-  ALTIVEC_BUILTIN_VEC_PACKSU,
-  ALTIVEC_BUILTIN_VEC_PERM,
-  ALTIVEC_BUILTIN_VEC_RE,
-  ALTIVEC_BUILTIN_VEC_RL,
-  ALTIVEC_BUILTIN_VEC_RINT,
-  ALTIVEC_BUILTIN_VEC_ROUND,
-  ALTIVEC_BUILTIN_VEC_RSQRTE,
-  ALTIVEC_BUILTIN_VEC_SEL,
-  ALTIVEC_BUILTIN_VEC_SL,
-  ALTIVEC_BUILTIN_VEC_SLD,
-  ALTIVEC_BUILTIN_VEC_SLL,
-  ALTIVEC_BUILTIN_VEC_SLO,
-  ALTIVEC_BUILTIN_VEC_SPLAT,
-  ALTIVEC_BUILTIN_VEC_SPLAT_S16,
-  ALTIVEC_BUILTIN_VEC_SPLAT_S32,
-  ALTIVEC_BUILTIN_VEC_SPLAT_S8,
-  ALTIVEC_BUILTIN_VEC_SPLAT_U16,
-  ALTIVEC_BUILTIN_VEC_SPLAT_U32,
-  ALTIVEC_BUILTIN_VEC_SPLAT_U8,
-  ALTIVEC_BUILTIN_VEC_SPLTB,
-  ALTIVEC_BUILTIN_VEC_SPLTH,
-  ALTIVEC_BUILTIN_VEC_SPLTW,
-  ALTIVEC_BUILTIN_VEC_SQRT,
-  ALTIVEC_BUILTIN_VEC_SR,
-  ALTIVEC_BUILTIN_VEC_SRA,
-  ALTIVEC_BUILTIN_VEC_SRL,
-  ALTIVEC_BUILTIN_VEC_SRO,
-  ALTIVEC_BUILTIN_VEC_ST,
-  ALTIVEC_BUILTIN_VEC_STE,
-  ALTIVEC_BUILTIN_VEC_STL,
-  ALTIVEC_BUILTIN_VEC_STVEBX,
-  ALTIVEC_BUILTIN_VEC_STVEHX,
-  ALTIVEC_BUILTIN_VEC_STVEWX,
-  ALTIVEC_BUILTIN_VEC_STVLX,
-  ALTIVEC_BUILTIN_VEC_STVLXL,
-  ALTIVEC_BUILTIN_VEC_STVRX,
-  ALTIVEC_BUILTIN_VEC_STVRXL,
-  ALTIVEC_BUILTIN_VEC_SUB,
-  ALTIVEC_BUILTIN_VEC_SUBC,
-  ALTIVEC_BUILTIN_VEC_SUBS,
-  ALTIVEC_BUILTIN_VEC_SUM2S,
-  ALTIVEC_BUILTIN_VEC_SUM4S,
-  ALTIVEC_BUILTIN_VEC_SUMS,
-  ALTIVEC_BUILTIN_VEC_TRUNC,
-  ALTIVEC_BUILTIN_VEC_UNPACKH,
-  ALTIVEC_BUILTIN_VEC_UNPACKL,
-  ALTIVEC_BUILTIN_VEC_VADDFP,
-  ALTIVEC_BUILTIN_VEC_VADDSBS,
-  ALTIVEC_BUILTIN_VEC_VADDSHS,
-  ALTIVEC_BUILTIN_VEC_VADDSWS,
-  ALTIVEC_BUILTIN_VEC_VADDUBM,
-  ALTIVEC_BUILTIN_VEC_VADDUBS,
-  ALTIVEC_BUILTIN_VEC_VADDUHM,
-  ALTIVEC_BUILTIN_VEC_VADDUHS,
-  ALTIVEC_BUILTIN_VEC_VADDUWM,
-  ALTIVEC_BUILTIN_VEC_VADDUWS,
-  ALTIVEC_BUILTIN_VEC_VAVGSB,
-  ALTIVEC_BUILTIN_VEC_VAVGSH,
-  ALTIVEC_BUILTIN_VEC_VAVGSW,
-  ALTIVEC_BUILTIN_VEC_VAVGUB,
-  ALTIVEC_BUILTIN_VEC_VAVGUH,
-  ALTIVEC_BUILTIN_VEC_VAVGUW,
-  ALTIVEC_BUILTIN_VEC_VCFSX,
-  ALTIVEC_BUILTIN_VEC_VCFUX,
-  ALTIVEC_BUILTIN_VEC_VCMPEQFP,
-  ALTIVEC_BUILTIN_VEC_VCMPEQUB,
-  ALTIVEC_BUILTIN_VEC_VCMPEQUH,
-  ALTIVEC_BUILTIN_VEC_VCMPEQUW,
-  ALTIVEC_BUILTIN_VEC_VCMPGTFP,
-  ALTIVEC_BUILTIN_VEC_VCMPGTSB,
-  ALTIVEC_BUILTIN_VEC_VCMPGTSH,
-  ALTIVEC_BUILTIN_VEC_VCMPGTSW,
-  ALTIVEC_BUILTIN_VEC_VCMPGTUB,
-  ALTIVEC_BUILTIN_VEC_VCMPGTUH,
-  ALTIVEC_BUILTIN_VEC_VCMPGTUW,
-  ALTIVEC_BUILTIN_VEC_VMAXFP,
-  ALTIVEC_BUILTIN_VEC_VMAXSB,
-  ALTIVEC_BUILTIN_VEC_VMAXSH,
-  ALTIVEC_BUILTIN_VEC_VMAXSW,
-  ALTIVEC_BUILTIN_VEC_VMAXUB,
-  ALTIVEC_BUILTIN_VEC_VMAXUH,
-  ALTIVEC_BUILTIN_VEC_VMAXUW,
-  ALTIVEC_BUILTIN_VEC_VMINFP,
-  ALTIVEC_BUILTIN_VEC_VMINSB,
-  ALTIVEC_BUILTIN_VEC_VMINSH,
-  ALTIVEC_BUILTIN_VEC_VMINSW,
-  ALTIVEC_BUILTIN_VEC_VMINUB,
-  ALTIVEC_BUILTIN_VEC_VMINUH,
-  ALTIVEC_BUILTIN_VEC_VMINUW,
-  ALTIVEC_BUILTIN_VEC_VMRGHB,
-  ALTIVEC_BUILTIN_VEC_VMRGHH,
-  ALTIVEC_BUILTIN_VEC_VMRGHW,
-  ALTIVEC_BUILTIN_VEC_VMRGLB,
-  ALTIVEC_BUILTIN_VEC_VMRGLH,
-  ALTIVEC_BUILTIN_VEC_VMRGLW,
-  ALTIVEC_BUILTIN_VEC_VMSUMMBM,
-  ALTIVEC_BUILTIN_VEC_VMSUMSHM,
-  ALTIVEC_BUILTIN_VEC_VMSUMSHS,
-  ALTIVEC_BUILTIN_VEC_VMSUMUBM,
-  ALTIVEC_BUILTIN_VEC_VMSUMUHM,
-  ALTIVEC_BUILTIN_VEC_VMSUMUHS,
-  ALTIVEC_BUILTIN_VEC_VMULESB,
-  ALTIVEC_BUILTIN_VEC_VMULESH,
-  ALTIVEC_BUILTIN_VEC_VMULEUB,
-  ALTIVEC_BUILTIN_VEC_VMULEUH,
-  ALTIVEC_BUILTIN_VEC_VMULOSB,
-  ALTIVEC_BUILTIN_VEC_VMULOSH,
-  ALTIVEC_BUILTIN_VEC_VMULOUB,
-  ALTIVEC_BUILTIN_VEC_VMULOUH,
-  ALTIVEC_BUILTIN_VEC_VPKSHSS,
-  ALTIVEC_BUILTIN_VEC_VPKSHUS,
-  ALTIVEC_BUILTIN_VEC_VPKSWSS,
-  ALTIVEC_BUILTIN_VEC_VPKSWUS,
-  ALTIVEC_BUILTIN_VEC_VPKUHUM,
-  ALTIVEC_BUILTIN_VEC_VPKUHUS,
-  ALTIVEC_BUILTIN_VEC_VPKUWUM,
-  ALTIVEC_BUILTIN_VEC_VPKUWUS,
-  ALTIVEC_BUILTIN_VEC_VRLB,
-  ALTIVEC_BUILTIN_VEC_VRLH,
-  ALTIVEC_BUILTIN_VEC_VRLW,
-  ALTIVEC_BUILTIN_VEC_VSLB,
-  ALTIVEC_BUILTIN_VEC_VSLH,
-  ALTIVEC_BUILTIN_VEC_VSLW,
-  ALTIVEC_BUILTIN_VEC_VSPLTB,
-  ALTIVEC_BUILTIN_VEC_VSPLTH,
-  ALTIVEC_BUILTIN_VEC_VSPLTW,
-  ALTIVEC_BUILTIN_VEC_VSRAB,
-  ALTIVEC_BUILTIN_VEC_VSRAH,
-  ALTIVEC_BUILTIN_VEC_VSRAW,
-  ALTIVEC_BUILTIN_VEC_VSRB,
-  ALTIVEC_BUILTIN_VEC_VSRH,
-  ALTIVEC_BUILTIN_VEC_VSRW,
-  ALTIVEC_BUILTIN_VEC_VSUBFP,
-  ALTIVEC_BUILTIN_VEC_VSUBSBS,
-  ALTIVEC_BUILTIN_VEC_VSUBSHS,
-  ALTIVEC_BUILTIN_VEC_VSUBSWS,
-  ALTIVEC_BUILTIN_VEC_VSUBUBM,
-  ALTIVEC_BUILTIN_VEC_VSUBUBS,
-  ALTIVEC_BUILTIN_VEC_VSUBUHM,
-  ALTIVEC_BUILTIN_VEC_VSUBUHS,
-  ALTIVEC_BUILTIN_VEC_VSUBUWM,
-  ALTIVEC_BUILTIN_VEC_VSUBUWS,
-  ALTIVEC_BUILTIN_VEC_VSUM4SBS,
-  ALTIVEC_BUILTIN_VEC_VSUM4SHS,
-  ALTIVEC_BUILTIN_VEC_VSUM4UBS,
-  ALTIVEC_BUILTIN_VEC_VUPKHPX,
-  ALTIVEC_BUILTIN_VEC_VUPKHSB,
-  ALTIVEC_BUILTIN_VEC_VUPKHSH,
-  ALTIVEC_BUILTIN_VEC_VUPKLPX,
-  ALTIVEC_BUILTIN_VEC_VUPKLSB,
-  ALTIVEC_BUILTIN_VEC_VUPKLSH,
-  ALTIVEC_BUILTIN_VEC_XOR,
-  ALTIVEC_BUILTIN_VEC_STEP,
-  ALTIVEC_BUILTIN_VEC_PROMOTE,
-  ALTIVEC_BUILTIN_VEC_INSERT,
-  ALTIVEC_BUILTIN_VEC_SPLATS,
-  ALTIVEC_BUILTIN_OVERLOADED_LAST = ALTIVEC_BUILTIN_VEC_SPLATS,
-
-  /* SPE builtins.  */
-  SPE_BUILTIN_EVADDW,
-  SPE_BUILTIN_EVAND,
-  SPE_BUILTIN_EVANDC,
-  SPE_BUILTIN_EVDIVWS,
-  SPE_BUILTIN_EVDIVWU,
-  SPE_BUILTIN_EVEQV,
-  SPE_BUILTIN_EVFSADD,
-  SPE_BUILTIN_EVFSDIV,
-  SPE_BUILTIN_EVFSMUL,
-  SPE_BUILTIN_EVFSSUB,
-  SPE_BUILTIN_EVLDDX,
-  SPE_BUILTIN_EVLDHX,
-  SPE_BUILTIN_EVLDWX,
-  SPE_BUILTIN_EVLHHESPLATX,
-  SPE_BUILTIN_EVLHHOSSPLATX,
-  SPE_BUILTIN_EVLHHOUSPLATX,
-  SPE_BUILTIN_EVLWHEX,
-  SPE_BUILTIN_EVLWHOSX,
-  SPE_BUILTIN_EVLWHOUX,
-  SPE_BUILTIN_EVLWHSPLATX,
-  SPE_BUILTIN_EVLWWSPLATX,
-  SPE_BUILTIN_EVMERGEHI,
-  SPE_BUILTIN_EVMERGEHILO,
-  SPE_BUILTIN_EVMERGELO,
-  SPE_BUILTIN_EVMERGELOHI,
-  SPE_BUILTIN_EVMHEGSMFAA,
-  SPE_BUILTIN_EVMHEGSMFAN,
-  SPE_BUILTIN_EVMHEGSMIAA,
-  SPE_BUILTIN_EVMHEGSMIAN,
-  SPE_BUILTIN_EVMHEGUMIAA,
-  SPE_BUILTIN_EVMHEGUMIAN,
-  SPE_BUILTIN_EVMHESMF,
-  SPE_BUILTIN_EVMHESMFA,
-  SPE_BUILTIN_EVMHESMFAAW,
-  SPE_BUILTIN_EVMHESMFANW,
-  SPE_BUILTIN_EVMHESMI,
-  SPE_BUILTIN_EVMHESMIA,
-  SPE_BUILTIN_EVMHESMIAAW,
-  SPE_BUILTIN_EVMHESMIANW,
-  SPE_BUILTIN_EVMHESSF,
-  SPE_BUILTIN_EVMHESSFA,
-  SPE_BUILTIN_EVMHESSFAAW,
-  SPE_BUILTIN_EVMHESSFANW,
-  SPE_BUILTIN_EVMHESSIAAW,
-  SPE_BUILTIN_EVMHESSIANW,
-  SPE_BUILTIN_EVMHEUMI,
-  SPE_BUILTIN_EVMHEUMIA,
-  SPE_BUILTIN_EVMHEUMIAAW,
-  SPE_BUILTIN_EVMHEUMIANW,
-  SPE_BUILTIN_EVMHEUSIAAW,
-  SPE_BUILTIN_EVMHEUSIANW,
-  SPE_BUILTIN_EVMHOGSMFAA,
-  SPE_BUILTIN_EVMHOGSMFAN,
-  SPE_BUILTIN_EVMHOGSMIAA,
-  SPE_BUILTIN_EVMHOGSMIAN,
-  SPE_BUILTIN_EVMHOGUMIAA,
-  SPE_BUILTIN_EVMHOGUMIAN,
-  SPE_BUILTIN_EVMHOSMF,
-  SPE_BUILTIN_EVMHOSMFA,
-  SPE_BUILTIN_EVMHOSMFAAW,
-  SPE_BUILTIN_EVMHOSMFANW,
-  SPE_BUILTIN_EVMHOSMI,
-  SPE_BUILTIN_EVMHOSMIA,
-  SPE_BUILTIN_EVMHOSMIAAW,
-  SPE_BUILTIN_EVMHOSMIANW,
-  SPE_BUILTIN_EVMHOSSF,
-  SPE_BUILTIN_EVMHOSSFA,
-  SPE_BUILTIN_EVMHOSSFAAW,
-  SPE_BUILTIN_EVMHOSSFANW,
-  SPE_BUILTIN_EVMHOSSIAAW,
-  SPE_BUILTIN_EVMHOSSIANW,
-  SPE_BUILTIN_EVMHOUMI,
-  SPE_BUILTIN_EVMHOUMIA,
-  SPE_BUILTIN_EVMHOUMIAAW,
-  SPE_BUILTIN_EVMHOUMIANW,
-  SPE_BUILTIN_EVMHOUSIAAW,
-  SPE_BUILTIN_EVMHOUSIANW,
-  SPE_BUILTIN_EVMWHSMF,
-  SPE_BUILTIN_EVMWHSMFA,
-  SPE_BUILTIN_EVMWHSMI,
-  SPE_BUILTIN_EVMWHSMIA,
-  SPE_BUILTIN_EVMWHSSF,
-  SPE_BUILTIN_EVMWHSSFA,
-  SPE_BUILTIN_EVMWHUMI,
-  SPE_BUILTIN_EVMWHUMIA,
-  SPE_BUILTIN_EVMWLSMIAAW,
-  SPE_BUILTIN_EVMWLSMIANW,
-  SPE_BUILTIN_EVMWLSSIAAW,
-  SPE_BUILTIN_EVMWLSSIANW,
-  SPE_BUILTIN_EVMWLUMI,
-  SPE_BUILTIN_EVMWLUMIA,
-  SPE_BUILTIN_EVMWLUMIAAW,
-  SPE_BUILTIN_EVMWLUMIANW,
-  SPE_BUILTIN_EVMWLUSIAAW,
-  SPE_BUILTIN_EVMWLUSIANW,
-  SPE_BUILTIN_EVMWSMF,
-  SPE_BUILTIN_EVMWSMFA,
-  SPE_BUILTIN_EVMWSMFAA,
-  SPE_BUILTIN_EVMWSMFAN,
-  SPE_BUILTIN_EVMWSMI,
-  SPE_BUILTIN_EVMWSMIA,
-  SPE_BUILTIN_EVMWSMIAA,
-  SPE_BUILTIN_EVMWSMIAN,
-  SPE_BUILTIN_EVMWHSSFAA,
-  SPE_BUILTIN_EVMWSSF,
-  SPE_BUILTIN_EVMWSSFA,
-  SPE_BUILTIN_EVMWSSFAA,
-  SPE_BUILTIN_EVMWSSFAN,
-  SPE_BUILTIN_EVMWUMI,
-  SPE_BUILTIN_EVMWUMIA,
-  SPE_BUILTIN_EVMWUMIAA,
-  SPE_BUILTIN_EVMWUMIAN,
-  SPE_BUILTIN_EVNAND,
-  SPE_BUILTIN_EVNOR,
-  SPE_BUILTIN_EVOR,
-  SPE_BUILTIN_EVORC,
-  SPE_BUILTIN_EVRLW,
-  SPE_BUILTIN_EVSLW,
-  SPE_BUILTIN_EVSRWS,
-  SPE_BUILTIN_EVSRWU,
-  SPE_BUILTIN_EVSTDDX,
-  SPE_BUILTIN_EVSTDHX,
-  SPE_BUILTIN_EVSTDWX,
-  SPE_BUILTIN_EVSTWHEX,
-  SPE_BUILTIN_EVSTWHOX,
-  SPE_BUILTIN_EVSTWWEX,
-  SPE_BUILTIN_EVSTWWOX,
-  SPE_BUILTIN_EVSUBFW,
-  SPE_BUILTIN_EVXOR,
-  SPE_BUILTIN_EVABS,
-  SPE_BUILTIN_EVADDSMIAAW,
-  SPE_BUILTIN_EVADDSSIAAW,
-  SPE_BUILTIN_EVADDUMIAAW,
-  SPE_BUILTIN_EVADDUSIAAW,
-  SPE_BUILTIN_EVCNTLSW,
-  SPE_BUILTIN_EVCNTLZW,
-  SPE_BUILTIN_EVEXTSB,
-  SPE_BUILTIN_EVEXTSH,
-  SPE_BUILTIN_EVFSABS,
-  SPE_BUILTIN_EVFSCFSF,
-  SPE_BUILTIN_EVFSCFSI,
-  SPE_BUILTIN_EVFSCFUF,
-  SPE_BUILTIN_EVFSCFUI,
-  SPE_BUILTIN_EVFSCTSF,
-  SPE_BUILTIN_EVFSCTSI,
-  SPE_BUILTIN_EVFSCTSIZ,
-  SPE_BUILTIN_EVFSCTUF,
-  SPE_BUILTIN_EVFSCTUI,
-  SPE_BUILTIN_EVFSCTUIZ,
-  SPE_BUILTIN_EVFSNABS,
-  SPE_BUILTIN_EVFSNEG,
-  SPE_BUILTIN_EVMRA,
-  SPE_BUILTIN_EVNEG,
-  SPE_BUILTIN_EVRNDW,
-  SPE_BUILTIN_EVSUBFSMIAAW,
-  SPE_BUILTIN_EVSUBFSSIAAW,
-  SPE_BUILTIN_EVSUBFUMIAAW,
-  SPE_BUILTIN_EVSUBFUSIAAW,
-  SPE_BUILTIN_EVADDIW,
-  SPE_BUILTIN_EVLDD,
-  SPE_BUILTIN_EVLDH,
-  SPE_BUILTIN_EVLDW,
-  SPE_BUILTIN_EVLHHESPLAT,
-  SPE_BUILTIN_EVLHHOSSPLAT,
-  SPE_BUILTIN_EVLHHOUSPLAT,
-  SPE_BUILTIN_EVLWHE,
-  SPE_BUILTIN_EVLWHOS,
-  SPE_BUILTIN_EVLWHOU,
-  SPE_BUILTIN_EVLWHSPLAT,
-  SPE_BUILTIN_EVLWWSPLAT,
-  SPE_BUILTIN_EVRLWI,
-  SPE_BUILTIN_EVSLWI,
-  SPE_BUILTIN_EVSRWIS,
-  SPE_BUILTIN_EVSRWIU,
-  SPE_BUILTIN_EVSTDD,
-  SPE_BUILTIN_EVSTDH,
-  SPE_BUILTIN_EVSTDW,
-  SPE_BUILTIN_EVSTWHE,
-  SPE_BUILTIN_EVSTWHO,
-  SPE_BUILTIN_EVSTWWE,
-  SPE_BUILTIN_EVSTWWO,
-  SPE_BUILTIN_EVSUBIFW,
-
-  /* Compares.  */
-  SPE_BUILTIN_EVCMPEQ,
-  SPE_BUILTIN_EVCMPGTS,
-  SPE_BUILTIN_EVCMPGTU,
-  SPE_BUILTIN_EVCMPLTS,
-  SPE_BUILTIN_EVCMPLTU,
-  SPE_BUILTIN_EVFSCMPEQ,
-  SPE_BUILTIN_EVFSCMPGT,
-  SPE_BUILTIN_EVFSCMPLT,
-  SPE_BUILTIN_EVFSTSTEQ,
-  SPE_BUILTIN_EVFSTSTGT,
-  SPE_BUILTIN_EVFSTSTLT,
-
-  /* EVSEL compares.  */
-  SPE_BUILTIN_EVSEL_CMPEQ,
-  SPE_BUILTIN_EVSEL_CMPGTS,
-  SPE_BUILTIN_EVSEL_CMPGTU,
-  SPE_BUILTIN_EVSEL_CMPLTS,
-  SPE_BUILTIN_EVSEL_CMPLTU,
-  SPE_BUILTIN_EVSEL_FSCMPEQ,
-  SPE_BUILTIN_EVSEL_FSCMPGT,
-  SPE_BUILTIN_EVSEL_FSCMPLT,
-  SPE_BUILTIN_EVSEL_FSTSTEQ,
-  SPE_BUILTIN_EVSEL_FSTSTGT,
-  SPE_BUILTIN_EVSEL_FSTSTLT,
-
-  SPE_BUILTIN_EVSPLATFI,
-  SPE_BUILTIN_EVSPLATI,
-  SPE_BUILTIN_EVMWHSSMAA,
-  SPE_BUILTIN_EVMWHSMFAA,
-  SPE_BUILTIN_EVMWHSMIAA,
-  SPE_BUILTIN_EVMWHUSIAA,
-  SPE_BUILTIN_EVMWHUMIAA,
-  SPE_BUILTIN_EVMWHSSFAN,
-  SPE_BUILTIN_EVMWHSSIAN,
-  SPE_BUILTIN_EVMWHSMFAN,
-  SPE_BUILTIN_EVMWHSMIAN,
-  SPE_BUILTIN_EVMWHUSIAN,
-  SPE_BUILTIN_EVMWHUMIAN,
-  SPE_BUILTIN_EVMWHGSSFAA,
-  SPE_BUILTIN_EVMWHGSMFAA,
-  SPE_BUILTIN_EVMWHGSMIAA,
-  SPE_BUILTIN_EVMWHGUMIAA,
-  SPE_BUILTIN_EVMWHGSSFAN,
-  SPE_BUILTIN_EVMWHGSMFAN,
-  SPE_BUILTIN_EVMWHGSMIAN,
-  SPE_BUILTIN_EVMWHGUMIAN,
-  SPE_BUILTIN_MTSPEFSCR,
-  SPE_BUILTIN_MFSPEFSCR,
-  SPE_BUILTIN_BRINC,
-
-  /* PAIRED builtins.  */
-  PAIRED_BUILTIN_DIVV2SF3,
-  PAIRED_BUILTIN_ABSV2SF2,
-  PAIRED_BUILTIN_NEGV2SF2,
-  PAIRED_BUILTIN_SQRTV2SF2,
-  PAIRED_BUILTIN_ADDV2SF3,
-  PAIRED_BUILTIN_SUBV2SF3,
-  PAIRED_BUILTIN_RESV2SF2,
-  PAIRED_BUILTIN_MULV2SF3,
-  PAIRED_BUILTIN_MSUB,
-  PAIRED_BUILTIN_MADD,
-  PAIRED_BUILTIN_NMSUB,
-  PAIRED_BUILTIN_NMADD,
-  PAIRED_BUILTIN_NABSV2SF2,
-  PAIRED_BUILTIN_SUM0,
-  PAIRED_BUILTIN_SUM1,
-  PAIRED_BUILTIN_MULS0,
-  PAIRED_BUILTIN_MULS1,
-  PAIRED_BUILTIN_MERGE00,
-  PAIRED_BUILTIN_MERGE01,
-  PAIRED_BUILTIN_MERGE10,
-  PAIRED_BUILTIN_MERGE11,
-  PAIRED_BUILTIN_MADDS0,
-  PAIRED_BUILTIN_MADDS1,
-  PAIRED_BUILTIN_STX,
-  PAIRED_BUILTIN_LX,
-  PAIRED_BUILTIN_SELV2SF4,
-  PAIRED_BUILTIN_CMPU0,
-  PAIRED_BUILTIN_CMPU1,
-
-  RS6000_BUILTIN_RECIP,
-  RS6000_BUILTIN_RECIPF,
-  RS6000_BUILTIN_RSQRTF,
-  RS6000_BUILTIN_BSWAP_HI,
-
-  /* VSX builtins.  */
-  VSX_BUILTIN_LXSDX,
-  VSX_BUILTIN_LXVD2X,
-  VSX_BUILTIN_LXVDSX,
-  VSX_BUILTIN_LXVW4X,
-  VSX_BUILTIN_STXSDX,
-  VSX_BUILTIN_STXVD2X,
-  VSX_BUILTIN_STXVW4X,
-  VSX_BUILTIN_XSABSDP,
-  VSX_BUILTIN_XSADDDP,
-  VSX_BUILTIN_XSCMPODP,
-  VSX_BUILTIN_XSCMPUDP,
-  VSX_BUILTIN_XSCPSGNDP,
-  VSX_BUILTIN_XSCVDPSP,
-  VSX_BUILTIN_XSCVDPSXDS,
-  VSX_BUILTIN_XSCVDPSXWS,
-  VSX_BUILTIN_XSCVDPUXDS,
-  VSX_BUILTIN_XSCVDPUXWS,
-  VSX_BUILTIN_XSCVSPDP,
-  VSX_BUILTIN_XSCVSXDDP,
-  VSX_BUILTIN_XSCVUXDDP,
-  VSX_BUILTIN_XSDIVDP,
-  VSX_BUILTIN_XSMADDADP,
-  VSX_BUILTIN_XSMADDMDP,
-  VSX_BUILTIN_XSMAXDP,
-  VSX_BUILTIN_XSMINDP,
-  VSX_BUILTIN_XSMOVDP,
-  VSX_BUILTIN_XSMSUBADP,
-  VSX_BUILTIN_XSMSUBMDP,
-  VSX_BUILTIN_XSMULDP,
-  VSX_BUILTIN_XSNABSDP,
-  VSX_BUILTIN_XSNEGDP,
-  VSX_BUILTIN_XSNMADDADP,
-  VSX_BUILTIN_XSNMADDMDP,
-  VSX_BUILTIN_XSNMSUBADP,
-  VSX_BUILTIN_XSNMSUBMDP,
-  VSX_BUILTIN_XSRDPI,
-  VSX_BUILTIN_XSRDPIC,
-  VSX_BUILTIN_XSRDPIM,
-  VSX_BUILTIN_XSRDPIP,
-  VSX_BUILTIN_XSRDPIZ,
-  VSX_BUILTIN_XSREDP,
-  VSX_BUILTIN_XSRSQRTEDP,
-  VSX_BUILTIN_XSSQRTDP,
-  VSX_BUILTIN_XSSUBDP,
-  VSX_BUILTIN_CPSGNDP,
-  VSX_BUILTIN_CPSGNSP,
-  VSX_BUILTIN_XSTDIVDP_FE,
-  VSX_BUILTIN_XSTDIVDP_FG,
-  VSX_BUILTIN_XSTSQRTDP_FE,
-  VSX_BUILTIN_XSTSQRTDP_FG,
-  VSX_BUILTIN_XVABSDP,
-  VSX_BUILTIN_XVABSSP,
-  VSX_BUILTIN_XVADDDP,
-  VSX_BUILTIN_XVADDSP,
-  VSX_BUILTIN_XVCMPEQDP,
-  VSX_BUILTIN_XVCMPEQSP,
-  VSX_BUILTIN_XVCMPGEDP,
-  VSX_BUILTIN_XVCMPGESP,
-  VSX_BUILTIN_XVCMPGTDP,
-  VSX_BUILTIN_XVCMPGTSP,
-  VSX_BUILTIN_XVCMPEQDP_P,
-  VSX_BUILTIN_XVCMPEQSP_P,
-  VSX_BUILTIN_XVCMPGEDP_P,
-  VSX_BUILTIN_XVCMPGESP_P,
-  VSX_BUILTIN_XVCMPGTDP_P,
-  VSX_BUILTIN_XVCMPGTSP_P,
-  VSX_BUILTIN_XVCPSGNDP,
-  VSX_BUILTIN_XVCPSGNSP,
-  VSX_BUILTIN_XVCVDPSP,
-  VSX_BUILTIN_XVCVDPSXDS,
-  VSX_BUILTIN_XVCVDPSXWS,
-  VSX_BUILTIN_XVCVDPUXDS,
-  VSX_BUILTIN_XVCVDPUXDS_UNS,
-  VSX_BUILTIN_XVCVDPUXWS,
-  VSX_BUILTIN_XVCVSPDP,
-  VSX_BUILTIN_XVCVSPSXDS,
-  VSX_BUILTIN_XVCVSPSXWS,
-  VSX_BUILTIN_XVCVSPUXDS,
-  VSX_BUILTIN_XVCVSPUXWS,
-  VSX_BUILTIN_XVCVSXDDP,
-  VSX_BUILTIN_XVCVSXDSP,
-  VSX_BUILTIN_XVCVSXWDP,
-  VSX_BUILTIN_XVCVSXWSP,
-  VSX_BUILTIN_XVCVUXDDP,
-  VSX_BUILTIN_XVCVUXDDP_UNS,
-  VSX_BUILTIN_XVCVUXDSP,
-  VSX_BUILTIN_XVCVUXWDP,
-  VSX_BUILTIN_XVCVUXWSP,
-  VSX_BUILTIN_XVDIVDP,
-  VSX_BUILTIN_XVDIVSP,
-  VSX_BUILTIN_XVMADDDP,
-  VSX_BUILTIN_XVMADDSP,
-  VSX_BUILTIN_XVMAXDP,
-  VSX_BUILTIN_XVMAXSP,
-  VSX_BUILTIN_XVMINDP,
-  VSX_BUILTIN_XVMINSP,
-  VSX_BUILTIN_XVMSUBDP,
-  VSX_BUILTIN_XVMSUBSP,
-  VSX_BUILTIN_XVMULDP,
-  VSX_BUILTIN_XVMULSP,
-  VSX_BUILTIN_XVNABSDP,
-  VSX_BUILTIN_XVNABSSP,
-  VSX_BUILTIN_XVNEGDP,
-  VSX_BUILTIN_XVNEGSP,
-  VSX_BUILTIN_XVNMADDDP,
-  VSX_BUILTIN_XVNMADDSP,
-  VSX_BUILTIN_XVNMSUBDP,
-  VSX_BUILTIN_XVNMSUBSP,
-  VSX_BUILTIN_XVRDPI,
-  VSX_BUILTIN_XVRDPIC,
-  VSX_BUILTIN_XVRDPIM,
-  VSX_BUILTIN_XVRDPIP,
-  VSX_BUILTIN_XVRDPIZ,
-  VSX_BUILTIN_XVREDP,
-  VSX_BUILTIN_XVRESP,
-  VSX_BUILTIN_XVRSPI,
-  VSX_BUILTIN_XVRSPIC,
-  VSX_BUILTIN_XVRSPIM,
-  VSX_BUILTIN_XVRSPIP,
-  VSX_BUILTIN_XVRSPIZ,
-  VSX_BUILTIN_XVRSQRTEDP,
-  VSX_BUILTIN_XVRSQRTESP,
-  VSX_BUILTIN_XVSQRTDP,
-  VSX_BUILTIN_XVSQRTSP,
-  VSX_BUILTIN_XVSUBDP,
-  VSX_BUILTIN_XVSUBSP,
-  VSX_BUILTIN_XVTDIVDP_FE,
-  VSX_BUILTIN_XVTDIVDP_FG,
-  VSX_BUILTIN_XVTDIVSP_FE,
-  VSX_BUILTIN_XVTDIVSP_FG,
-  VSX_BUILTIN_XVTSQRTDP_FE,
-  VSX_BUILTIN_XVTSQRTDP_FG,
-  VSX_BUILTIN_XVTSQRTSP_FE,
-  VSX_BUILTIN_XVTSQRTSP_FG,
-  VSX_BUILTIN_XXSEL_2DI,
-  VSX_BUILTIN_XXSEL_2DF,
-  VSX_BUILTIN_XXSEL_4SI,
-  VSX_BUILTIN_XXSEL_4SF,
-  VSX_BUILTIN_XXSEL_8HI,
-  VSX_BUILTIN_XXSEL_16QI,
-  VSX_BUILTIN_XXSEL_2DI_UNS,
-  VSX_BUILTIN_XXSEL_4SI_UNS,
-  VSX_BUILTIN_XXSEL_8HI_UNS,
-  VSX_BUILTIN_XXSEL_16QI_UNS,
-  VSX_BUILTIN_VPERM_2DI,
-  VSX_BUILTIN_VPERM_2DF,
-  VSX_BUILTIN_VPERM_4SI,
-  VSX_BUILTIN_VPERM_4SF,
-  VSX_BUILTIN_VPERM_8HI,
-  VSX_BUILTIN_VPERM_16QI,
-  VSX_BUILTIN_VPERM_2DI_UNS,
-  VSX_BUILTIN_VPERM_4SI_UNS,
-  VSX_BUILTIN_VPERM_8HI_UNS,
-  VSX_BUILTIN_VPERM_16QI_UNS,
-  VSX_BUILTIN_XXPERMDI_2DF,
-  VSX_BUILTIN_XXPERMDI_2DI,
-  VSX_BUILTIN_XXPERMDI_4SF,
-  VSX_BUILTIN_XXPERMDI_4SI,
-  VSX_BUILTIN_XXPERMDI_8HI,
-  VSX_BUILTIN_XXPERMDI_16QI,
-  VSX_BUILTIN_CONCAT_2DF,
-  VSX_BUILTIN_CONCAT_2DI,
-  VSX_BUILTIN_SET_2DF,
-  VSX_BUILTIN_SET_2DI,
-  VSX_BUILTIN_SPLAT_2DF,
-  VSX_BUILTIN_SPLAT_2DI,
-  VSX_BUILTIN_XXMRGHW_4SF,
-  VSX_BUILTIN_XXMRGHW_4SI,
-  VSX_BUILTIN_XXMRGLW_4SF,
-  VSX_BUILTIN_XXMRGLW_4SI,
-  VSX_BUILTIN_XXSLDWI_16QI,
-  VSX_BUILTIN_XXSLDWI_8HI,
-  VSX_BUILTIN_XXSLDWI_4SI,
-  VSX_BUILTIN_XXSLDWI_4SF,
-  VSX_BUILTIN_XXSLDWI_2DI,
-  VSX_BUILTIN_XXSLDWI_2DF,
-  VSX_BUILTIN_VEC_INIT_V2DF,
-  VSX_BUILTIN_VEC_INIT_V2DI,
-  VSX_BUILTIN_VEC_SET_V2DF,
-  VSX_BUILTIN_VEC_SET_V2DI,
-  VSX_BUILTIN_VEC_EXT_V2DF,
-  VSX_BUILTIN_VEC_EXT_V2DI,
-
-  /* VSX overloaded builtins, add the overloaded functions not present in
-     Altivec.  */
-  VSX_BUILTIN_VEC_MUL,
-  VSX_BUILTIN_OVERLOADED_FIRST = VSX_BUILTIN_VEC_MUL,
-  VSX_BUILTIN_VEC_MSUB,
-  VSX_BUILTIN_VEC_NMADD,
-  VSX_BUITLIN_VEC_NMSUB,
-  VSX_BUILTIN_VEC_DIV,
-  VSX_BUILTIN_VEC_XXMRGHW,
-  VSX_BUILTIN_VEC_XXMRGLW,
-  VSX_BUILTIN_VEC_XXPERMDI,
-  VSX_BUILTIN_VEC_XXSLDWI,
-  VSX_BUILTIN_VEC_XXSPLTD,
-  VSX_BUILTIN_VEC_XXSPLTW,
-  VSX_BUILTIN_OVERLOADED_LAST = VSX_BUILTIN_VEC_XXSPLTW,
+  RS6000_BTC_MISC,		/* assume builtin can do anything */
+  RS6000_BTC_CONST,		/* builtin is a 'const' function.  */
+  RS6000_BTC_PURE,		/* builtin is a 'pure' function.  */
+  RS6000_BTC_FP_PURE		/* builtin is 'pure' if rounding math.  */
+};
 
-  /* Combined VSX/Altivec builtins.  */
-  VECTOR_BUILTIN_FLOAT_V4SI_V4SF,
-  VECTOR_BUILTIN_UNSFLOAT_V4SI_V4SF,
-  VECTOR_BUILTIN_FIX_V4SF_V4SI,
-  VECTOR_BUILTIN_FIXUNS_V4SF_V4SI,
+#undef RS6000_BUILTIN
+#undef RS6000_BUILTIN_EQUATE
+#define RS6000_BUILTIN(NAME, TYPE) NAME,
+#define RS6000_BUILTIN_EQUATE(NAME, VALUE) NAME = VALUE,
 
-  /* Power7 builtins, that aren't VSX instructions.  */
-  POWER7_BUILTIN_BPERMD,
+enum rs6000_builtins
+{
+#include "rs6000-builtin.def"
 
   RS6000_BUILTIN_COUNT
 };
 
+#undef RS6000_BUILTIN
+#undef RS6000_BUILTIN_EQUATE
+
 enum rs6000_builtin_type_index
 {
   RS6000_BTI_NOT_OPAQUE,
Index: gcc/testsuite/gcc.target/powerpc/altivec-4.c
===================================================================
--- gcc/testsuite/gcc.target/powerpc/altivec-4.c	(revision 152338)
+++ gcc/testsuite/gcc.target/powerpc/altivec-4.c	(working copy)
@@ -4,7 +4,7 @@
 
 #define vector __attribute__((vector_size(16)))
 
-static int vector x, y;
+static int vector x, y, z;
 
 static vector signed int i,j;
 static vector signed short s,t;
@@ -20,7 +20,7 @@ static int int1, int2;
 void
 b()
 {
-  __builtin_altivec_vadduwm (x, y);
+  z = __builtin_altivec_vadduwm (x, y);
 
   /* Make sure the predicates accept correct argument types.  */
   
Index: gcc/testsuite/g++.dg/ext/altivec-2.C
===================================================================
--- gcc/testsuite/g++.dg/ext/altivec-2.C	(revision 152338)
+++ gcc/testsuite/g++.dg/ext/altivec-2.C	(working copy)
@@ -7,6 +7,8 @@
 
 #include <altivec.h>
 
+vector unsigned char use_lvsl;
+
 int main (int argc, const char * argv[])
 {
   int i = 0;
@@ -17,7 +19,7 @@ int main (int argc, const char * argv[])
   vec_dst(&cv, i, 0);
   v = vec_ld(0, &cv);	
   v = vec_lde(0, &cf);
-  vec_lvsl(0, &cf);
+  use_lvsl = vec_lvsl(0, &cf);
   
   return 0;
 }

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH] Fix builtin attributes on powerpc
  2009-10-01 18:58 [PATCH] Fix builtin attributes on powerpc Michael Meissner
@ 2009-10-01 19:01 ` Andrew Pinski
  2009-10-01 19:14   ` Michael Meissner
  2009-10-13 13:36 ` David Edelsohn
  1 sibling, 1 reply; 15+ messages in thread
From: Andrew Pinski @ 2009-10-01 19:01 UTC (permalink / raw)
  To: Michael Meissner, gcc-patches, dje.gcc, jakub

This fixes PR 23983.

Thanks,
Andrew Pinski

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH] Fix builtin attributes on powerpc
  2009-10-01 19:01 ` Andrew Pinski
@ 2009-10-01 19:14   ` Michael Meissner
  0 siblings, 0 replies; 15+ messages in thread
From: Michael Meissner @ 2009-10-01 19:14 UTC (permalink / raw)
  To: Andrew Pinski; +Cc: Michael Meissner, gcc-patches, dje.gcc, jakub

On Thu, Oct 01, 2009 at 12:01:04PM -0700, Andrew Pinski wrote:
> This fixes PR 23983.

Though in looking at 23983, I suspect I may need to change the flags for the
saturated instructions in my patch.

-- 
Michael Meissner, IBM
4 Technology Place Drive, MS 2203A, Westford, MA, 01886, USA
meissner@linux.vnet.ibm.com

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH] Fix builtin attributes on powerpc
  2009-10-01 18:58 [PATCH] Fix builtin attributes on powerpc Michael Meissner
  2009-10-01 19:01 ` Andrew Pinski
@ 2009-10-13 13:36 ` David Edelsohn
  2009-10-13 20:40   ` Michael Meissner
  1 sibling, 1 reply; 15+ messages in thread
From: David Edelsohn @ 2009-10-13 13:36 UTC (permalink / raw)
  To: Michael Meissner, gcc-patches, Jakub Jelinek

On Thu, Oct 1, 2009 at 2:57 PM, Michael Meissner
<meissner@linux.vnet.ibm.com> wrote:
> I tried to get this in by yesterday, but I had some server issues, and I
> couldn't get the tests run until today.
>
> In working with Jakub on a backport of the power7 patches to the Red Hat 4.4
> branch, we found some problems in running spec.  The problem turned out to that
> the vectorized math functions had different declaration attributes than the
> scalar versions of the functions.  In doing further investigation, it turned
> out that we weren't setting any attributes for any builtin functions.  This
> patch fixes the attributes for the Altivec (VMX) and VSX builtins.  I have not
> done the spe and paired builtins in this patch, but that can be easily done
> later.
>
> I did the usual boostrap and make check with no regressions.
>
> Is this acceptable to checkin under stage 3 as a backend change?

If this is the design that the community wants to use in all backends,
it is fine with me.

I think MAX_RS6000_BUILTINS is more consistent with the naming
convention in the rest of GCC than RS6000_BUILTIN_COUNT.

The patch is okay.

Thanks, David

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH] Fix builtin attributes on powerpc
  2009-10-13 13:36 ` David Edelsohn
@ 2009-10-13 20:40   ` Michael Meissner
  2009-10-14  0:02     ` David Edelsohn
  0 siblings, 1 reply; 15+ messages in thread
From: Michael Meissner @ 2009-10-13 20:40 UTC (permalink / raw)
  To: David Edelsohn; +Cc: Michael Meissner, gcc-patches, Jakub Jelinek

On Tue, Oct 13, 2009 at 09:30:28AM -0400, David Edelsohn wrote:
> On Thu, Oct 1, 2009 at 2:57 PM, Michael Meissner
> <meissner@linux.vnet.ibm.com> wrote:
> > I tried to get this in by yesterday, but I had some server issues, and I
> > couldn't get the tests run until today.
> >
> > In working with Jakub on a backport of the power7 patches to the Red Hat 4.4
> > branch, we found some problems in running spec.  The problem turned out to that
> > the vectorized math functions had different declaration attributes than the
> > scalar versions of the functions.  In doing further investigation, it turned
> > out that we weren't setting any attributes for any builtin functions.  This
> > patch fixes the attributes for the Altivec (VMX) and VSX builtins.  I have not
> > done the spe and paired builtins in this patch, but that can be easily done
> > later.
> >
> > I did the usual boostrap and make check with no regressions.
> >
> > Is this acceptable to checkin under stage 3 as a backend change?
> 
> If this is the design that the community wants to use in all backends,
> it is fine with me.

It is too late for GCC 4.5 to do things in a common fashion.  The real solution
is to move the backend builtins into the main builtins.  I had some patches to
allow backends to optionally do this, and when 4.6 opens up we can explore
this.

However, I'm trying to fix the problem right now, and so this particular
solution is limited to just to tie the definition of the builtin enum and flags
together in one place, rather than having a separate switch statement that is
problematical, because you have to edit stuff in multiple places.  We already
have the problem between the rs6000.h, rs6000.c, and rs6000-c.c files that each
have some knowledge of builtins (and overloaded builtins make it even worse).

> I think MAX_RS6000_BUILTINS is more consistent with the naming
> convention in the rest of GCC than RS6000_BUILTIN_COUNT.

I agree MAX_RS6000_BUILTINS is more consistant, but RS6000_BUILTIN_COUNT is
what was originally used, so I didn't change that.

> The patch is okay.

Ok.

-- 
Michael Meissner, IBM
4 Technology Place Drive, MS 2203A, Westford, MA, 01886, USA
meissner@linux.vnet.ibm.com

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH] Fix builtin attributes on powerpc
  2009-10-13 20:40   ` Michael Meissner
@ 2009-10-14  0:02     ` David Edelsohn
  2009-10-14  9:58       ` Richard Guenther
  2009-10-14 15:21       ` Michael Meissner
  0 siblings, 2 replies; 15+ messages in thread
From: David Edelsohn @ 2009-10-14  0:02 UTC (permalink / raw)
  To: Michael Meissner, gcc-patches, Jakub Jelinek

On Tue, Oct 13, 2009 at 4:25 PM, Michael Meissner
<meissner@linux.vnet.ibm.com> wrote:

> It is too late for GCC 4.5 to do things in a common fashion.  The real solution
> is to move the backend builtins into the main builtins.  I had some patches to
> allow backends to optionally do this, and when 4.6 opens up we can explore
> this.

The question is whether Jakub and other GCC port maintainers agree
that this is the direction to go in the future, not that it is
implemented in all targets for GCC 4.5.  I want to see some consensus
before this patch is committed.

> I agree MAX_RS6000_BUILTINS is more consistant, but RS6000_BUILTIN_COUNT is
> what was originally used, so I didn't change that.

Please make the change as part of the patch.

Thanks, David

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH] Fix builtin attributes on powerpc
  2009-10-14  0:02     ` David Edelsohn
@ 2009-10-14  9:58       ` Richard Guenther
  2009-10-14 15:21       ` Michael Meissner
  1 sibling, 0 replies; 15+ messages in thread
From: Richard Guenther @ 2009-10-14  9:58 UTC (permalink / raw)
  To: David Edelsohn; +Cc: Michael Meissner, gcc-patches, Jakub Jelinek

On Wed, Oct 14, 2009 at 2:02 AM, David Edelsohn <dje.gcc@gmail.com> wrote:
> On Tue, Oct 13, 2009 at 4:25 PM, Michael Meissner
> <meissner@linux.vnet.ibm.com> wrote:
>
>> It is too late for GCC 4.5 to do things in a common fashion.  The real solution
>> is to move the backend builtins into the main builtins.  I had some patches to
>> allow backends to optionally do this, and when 4.6 opens up we can explore
>> this.
>
> The question is whether Jakub and other GCC port maintainers agree
> that this is the direction to go in the future, not that it is
> implemented in all targets for GCC 4.5.  I want to see some consensus
> before this patch is committed.

I don't see the particular advantage of merging the regular and target builtins
into one namespace.  I do see a good reason to provide means to define
and initialize target builtins like regular builtins - with a .def file.  For
target builtins there should be the possibility to group them according to
-mXXX flags and to lazily initialize them.

Richard.

>> I agree MAX_RS6000_BUILTINS is more consistant, but RS6000_BUILTIN_COUNT is
>> what was originally used, so I didn't change that.
>
> Please make the change as part of the patch.
>
> Thanks, David
>

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH] Fix builtin attributes on powerpc
  2009-10-14  0:02     ` David Edelsohn
  2009-10-14  9:58       ` Richard Guenther
@ 2009-10-14 15:21       ` Michael Meissner
  2009-10-14 16:19         ` Richard Guenther
  2009-10-14 20:08         ` David Edelsohn
  1 sibling, 2 replies; 15+ messages in thread
From: Michael Meissner @ 2009-10-14 15:21 UTC (permalink / raw)
  To: David Edelsohn; +Cc: Michael Meissner, gcc-patches, Jakub Jelinek

On Tue, Oct 13, 2009 at 08:02:04PM -0400, David Edelsohn wrote:
> On Tue, Oct 13, 2009 at 4:25 PM, Michael Meissner
> <meissner@linux.vnet.ibm.com> wrote:
> 
> > It is too late for GCC 4.5 to do things in a common fashion.  The real solution
> > is to move the backend builtins into the main builtins.  I had some patches to
> > allow backends to optionally do this, and when 4.6 opens up we can explore
> > this.
> 
> The question is whether Jakub and other GCC port maintainers agree
> that this is the direction to go in the future, not that it is
> implemented in all targets for GCC 4.5.  I want to see some consensus
> before this patch is committed.
> 
> > I agree MAX_RS6000_BUILTINS is more consistant, but RS6000_BUILTIN_COUNT is
> > what was originally used, so I didn't change that.
> 
> Please make the change as part of the patch.

Unfortunately, I'm not sure I can do all of this in the time remaining.  I
suspect it will take at least 5 days of time to build the infrastructure to do
what rth and richi have asked for.  The goals as I see it are:

  1) Move the creation of the MD builtins to be part of the normal builtin
     creation, in a seamless fashion without forcing the backends to have a
     flag day changing their builtin handling (originally from rth).  Part of
     this was done in this RFC patch that provided the new infrastructure:
     http://gcc.gnu.org/ml/gcc-patches/2009-09/msg01820.html

  2) Allow for lazy creation of the trees for builtin functions and types
     (originally from richi).  I know where the places that need to be modified
     are, but it will involve changes in both the front ends and middle end to
     do this.  This will take some amount of time to get right.

  3) Move all of the rs6000 builtins (the various bdesc tables in rs6000.c) to
     this new scheme.  Just due to the number of builtins that exist in the
     rs6000 backend, this will take some time to make sure all of the types,
     etc. are properly created.

  4) Then possibly get x86, arm, etc. to move to the new scheme.

However, I can't do #3 until at least the infrastructure changes are in place,
and given we are in stage 3 right now, I don't think this is the time for doing
it.  Thus the 2 different patches that I have submitted are a stopgap measure
for the 4.5 time frame, until the infrastructure is done in the 4.6 time frame.
One patch is just a big switch statement that identifies the problematical
builtins, and the second patch just creates a .def file to define both the enum
id, and attributes to use.  To me they are semantically identical, and I can
easily go back to the switch statement if the issue is the creation of a new
file is the issue.

Right now, I have several codegen issues in the power7 code that need to be
fixed before 4.5 goes out, and I judge that these are more important than
getting the attributes correct, given the 4.4 backport has worked around the
problem that started this set of patches.

I can spend the odd hour here and there making the patch more acceptable, but I
don't feel I can spend the week or two of time right now doing the scheme the
right way so that it won't have to be reworked in the 4.6 time frame and
possibly send out 4.5 where several benchmarks are getting miscompiled.  It
would be nice to get the power backend to have pairity with the x86 to at least
set NOTHROW and READONLY where appropriate.

I wish I had known about the issue earlier and could have gotten the
infrastructure in before stage1 closed, but that's the breaks.

-- 
Michael Meissner, IBM
4 Technology Place Drive, MS 2203A, Westford, MA, 01886, USA
meissner@linux.vnet.ibm.com

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH] Fix builtin attributes on powerpc
  2009-10-14 15:21       ` Michael Meissner
@ 2009-10-14 16:19         ` Richard Guenther
  2009-10-14 20:08         ` David Edelsohn
  1 sibling, 0 replies; 15+ messages in thread
From: Richard Guenther @ 2009-10-14 16:19 UTC (permalink / raw)
  To: Michael Meissner, David Edelsohn, gcc-patches, Jakub Jelinek

On Wed, Oct 14, 2009 at 5:15 PM, Michael Meissner
<meissner@linux.vnet.ibm.com> wrote:
> On Tue, Oct 13, 2009 at 08:02:04PM -0400, David Edelsohn wrote:
>> On Tue, Oct 13, 2009 at 4:25 PM, Michael Meissner
>> <meissner@linux.vnet.ibm.com> wrote:
>>
>> > It is too late for GCC 4.5 to do things in a common fashion.  The real solution
>> > is to move the backend builtins into the main builtins.  I had some patches to
>> > allow backends to optionally do this, and when 4.6 opens up we can explore
>> > this.
>>
>> The question is whether Jakub and other GCC port maintainers agree
>> that this is the direction to go in the future, not that it is
>> implemented in all targets for GCC 4.5.  I want to see some consensus
>> before this patch is committed.
>>
>> > I agree MAX_RS6000_BUILTINS is more consistant, but RS6000_BUILTIN_COUNT is
>> > what was originally used, so I didn't change that.
>>
>> Please make the change as part of the patch.
>
> Unfortunately, I'm not sure I can do all of this in the time remaining.  I
> suspect it will take at least 5 days of time to build the infrastructure to do
> what rth and richi have asked for.  The goals as I see it are:
>
>  1) Move the creation of the MD builtins to be part of the normal builtin
>     creation, in a seamless fashion without forcing the backends to have a
>     flag day changing their builtin handling (originally from rth).  Part of
>     this was done in this RFC patch that provided the new infrastructure:
>     http://gcc.gnu.org/ml/gcc-patches/2009-09/msg01820.html
>
>  2) Allow for lazy creation of the trees for builtin functions and types
>     (originally from richi).  I know where the places that need to be modified
>     are, but it will involve changes in both the front ends and middle end to
>     do this.  This will take some amount of time to get right.
>
>  3) Move all of the rs6000 builtins (the various bdesc tables in rs6000.c) to
>     this new scheme.  Just due to the number of builtins that exist in the
>     rs6000 backend, this will take some time to make sure all of the types,
>     etc. are properly created.
>
>  4) Then possibly get x86, arm, etc. to move to the new scheme.
>
> However, I can't do #3 until at least the infrastructure changes are in place,
> and given we are in stage 3 right now, I don't think this is the time for doing
> it.  Thus the 2 different patches that I have submitted are a stopgap measure

Well, I agree.  This is not something for stage3.

Richard.

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH] Fix builtin attributes on powerpc
  2009-10-14 15:21       ` Michael Meissner
  2009-10-14 16:19         ` Richard Guenther
@ 2009-10-14 20:08         ` David Edelsohn
  2009-10-14 22:21           ` Michael Meissner
  2009-10-15 20:59           ` [PATCH, committed] PR target/23983, fix " Michael Meissner
  1 sibling, 2 replies; 15+ messages in thread
From: David Edelsohn @ 2009-10-14 20:08 UTC (permalink / raw)
  To: Michael Meissner, gcc-patches, Jakub Jelinek

On Wed, Oct 14, 2009 at 11:15 AM, Michael Meissner
<meissner@linux.vnet.ibm.com> wrote:

> Unfortunately, I'm not sure I can do all of this in the time remaining.  I
> suspect it will take at least 5 days of time to build the infrastructure to do
> what rth and richi have asked for.  The goals as I see it are:
>
>  1) Move the creation of the MD builtins to be part of the normal builtin
>     creation, in a seamless fashion without forcing the backends to have a
>     flag day changing their builtin handling (originally from rth).  Part of
>     this was done in this RFC patch that provided the new infrastructure:
>     http://gcc.gnu.org/ml/gcc-patches/2009-09/msg01820.html
>
>  2) Allow for lazy creation of the trees for builtin functions and types
>     (originally from richi).  I know where the places that need to be modified
>     are, but it will involve changes in both the front ends and middle end to
>     do this.  This will take some amount of time to get right.
>
>  3) Move all of the rs6000 builtins (the various bdesc tables in rs6000.c) to
>     this new scheme.  Just due to the number of builtins that exist in the
>     rs6000 backend, this will take some time to make sure all of the types,
>     etc. are properly created.
>
>  4) Then possibly get x86, arm, etc. to move to the new scheme.
>
> However, I can't do #3 until at least the infrastructure changes are in place,
> and given we are in stage 3 right now, I don't think this is the time for doing
> it.  Thus the 2 different patches that I have submitted are a stopgap measure
> for the 4.5 time frame, until the infrastructure is done in the 4.6 time frame.
> One patch is just a big switch statement that identifies the problematical
> builtins, and the second patch just creates a .def file to define both the enum
> id, and attributes to use.  To me they are semantically identical, and I can
> easily go back to the switch statement if the issue is the creation of a new
> file is the issue.
>
> Right now, I have several codegen issues in the power7 code that need to be
> fixed before 4.5 goes out, and I judge that these are more important than
> getting the attributes correct, given the 4.4 backport has worked around the
> problem that started this set of patches.
>
> I can spend the odd hour here and there making the patch more acceptable, but I
> don't feel I can spend the week or two of time right now doing the scheme the
> right way so that it won't have to be reworked in the 4.6 time frame and
> possibly send out 4.5 where several benchmarks are getting miscompiled.  It
> would be nice to get the power backend to have pairity with the x86 to at least
> set NOTHROW and READONLY where appropriate.
>
> I wish I had known about the issue earlier and could have gotten the
> infrastructure in before stage1 closed, but that's the breaks.

I am not asking for the design to be implemented for all ports and I
am not asking that the entire design be implemented for the rs6000
port.  I want to make sure that the interim patch for 4.5 is
consistent with the direction the community wants to take for 4.6 so
that we do not end up maintaining a special hack indefinitely.

David

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH] Fix builtin attributes on powerpc
  2009-10-14 20:08         ` David Edelsohn
@ 2009-10-14 22:21           ` Michael Meissner
  2009-10-15 20:59           ` [PATCH, committed] PR target/23983, fix " Michael Meissner
  1 sibling, 0 replies; 15+ messages in thread
From: Michael Meissner @ 2009-10-14 22:21 UTC (permalink / raw)
  To: David Edelsohn; +Cc: Michael Meissner, gcc-patches, Jakub Jelinek

On Wed, Oct 14, 2009 at 03:58:02PM -0400, David Edelsohn wrote:
> I am not asking for the design to be implemented for all ports and I
> am not asking that the entire design be implemented for the rs6000
> port.  I want to make sure that the interim patch for 4.5 is
> consistent with the direction the community wants to take for 4.6 so
> that we do not end up maintaining a special hack indefinitely.

Maybe I was unclear.  It is my anticipation that once the new infrastructure
goes in, we will immediately move the current patches to that infrastructure.
I.e. it isn't a permanent thing, just something for this release.  I just don't
have the time to go through all 900 or so builtins and get all of the files
right for the calling sequences in addition to setting the flags right.  That
would be disruptive at this point.

-- 
Michael Meissner, IBM
4 Technology Place Drive, MS 2203A, Westford, MA, 01886, USA
meissner@linux.vnet.ibm.com

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [PATCH, committed] PR target/23983, fix builtin attributes on powerpc
  2009-10-14 20:08         ` David Edelsohn
  2009-10-14 22:21           ` Michael Meissner
@ 2009-10-15 20:59           ` Michael Meissner
  2009-10-19 22:24             ` Jakub Jelinek
  1 sibling, 1 reply; 15+ messages in thread
From: Michael Meissner @ 2009-10-15 20:59 UTC (permalink / raw)
  To: David Edelsohn, gcc-patches, Jakub Jelinek, Andrew Pinski
  Cc: Michael Meissner, gcc-patches, Jakub Jelinek

[-- Attachment #1: Type: text/plain, Size: 667 bytes --]

I just committed the following patch.  When I was doing a backport of the vsx
changes to 4.3, I noticed that I had not updated the copyright years for two of
the files I checked in July, so I updated these as well.

Also, I noticed Ben E. added a new a2.md file, and I added it to the
MD_INCLUDES variable.

I did bootstrap these patches for C, C++, and Fortran.  I didn't do a make
check today, but I did it on previous days (the build machine I normally use is
being updated right now, and the backup machine didn't have all of the rpms
installed).

-- 
Michael Meissner, IBM
4 Technology Place Drive, MS 2203A, Westford, MA, 01886, USA
meissner@linux.vnet.ibm.com

[-- Attachment #2: gcc-power7.patch83 --]
[-- Type: text/plain, Size: 92776 bytes --]

[gcc]
2009-10-15  Michael Meissner  <meissner@linux.vnet.ibm.com>

	PR target/23983
	* config/rs6000/predicates.md: Update copyright year.
	* config/rs6000/altivec.md: Ditto.
	
	* config/rs6000/t-rs6000 (TM_H): Add rs6000-builtin.def.
	(MD_INCLUDES): Add a2.md.
	
	* config/rs6000/rs6000.c (rs6000_builtin_decls): Change
	RS6000_BUILTIN_COUNT to MAX_RS6000_BUILTINS.
	(builtin_classify): New static vector to classify various builtins
	to get the tree attributes correct.
	(def_builtin): Set the attributes of builtins based on what the
	builtin does (i.e. memory operation, floating point, saturation
	need special attributes, others are pure functions).

	* config/rs6000/rs6000.h (enum rs6000_btc): New enum to classify
	the builtins.
	(enum rs6000_builtins): Include rs6000-builtin.def to define the
	builtins.  Change the end marker to MAX_RS6000_BUILTINS from
	RS6000_BUILTIN_COUNT.
	(rs6000_builtin_decls): Change RS6000_BUILTIN_COUNT to
	MAX_RS6000_BUILTINS.

	* config/rs6000/rs6000-builtin.def: New file that combines the
	builtin enumeration name and attributes.

[gcc/testsuite]
2009-10-15  Michael Meissner  <meissner@linux.vnet.ibm.com>

	PR target/23983
	* gcc.target/powerpc/altivec-4.c (b): Make sure altivec builtin
	result used.
	* g++.dg/ext/altivec-2.C (main): Ditto.

Index: gcc/config/rs6000/predicates.md
===================================================================
--- gcc/config/rs6000/predicates.md	(revision 152864)
+++ gcc/config/rs6000/predicates.md	(working copy)
@@ -1,5 +1,5 @@
 ;; Predicate definitions for POWER and PowerPC.
-;; Copyright (C) 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+;; Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
 ;;
 ;; This file is part of GCC.
 ;;
Index: gcc/config/rs6000/t-rs6000
===================================================================
--- gcc/config/rs6000/t-rs6000	(revision 152864)
+++ gcc/config/rs6000/t-rs6000	(working copy)
@@ -19,6 +19,8 @@
 # along with GCC; see the file COPYING3.  If not see
 # <http://www.gnu.org/licenses/>.
 
+TM_H += $(srcdir)/config/rs6000/rs6000-builtin.def
+
 rs6000.o: $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
   $(RTL_H) $(REGS_H) hard-reg-set.h \
   real.h insn-config.h conditions.h insn-attr.h flags.h $(RECOG_H) \
@@ -56,6 +58,7 @@ MD_INCLUDES = $(srcdir)/config/rs6000/ri
 	$(srcdir)/config/rs6000/power7.md \
 	$(srcdir)/config/rs6000/cell.md \
 	$(srcdir)/config/rs6000/xfpu.md \
+	$(srcdir)/config/rs6000/a2.md \
 	$(srcdir)/config/rs6000/predicates.md \
 	$(srcdir)/config/rs6000/constraints.md \
 	$(srcdir)/config/rs6000/darwin.md \
Index: gcc/config/rs6000/rs6000-builtin.def
===================================================================
--- gcc/config/rs6000/rs6000-builtin.def	(revision 0)
+++ gcc/config/rs6000/rs6000-builtin.def	(revision 0)
@@ -0,0 +1,990 @@
+/* Builtin functions for rs6000/powerpc.
+   Copyright (C) 2009
+   Free Software Foundation, Inc.
+   Contributed by Michael Meissner (meissner@linux.vnet.ibm.com)
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify it
+   under the terms of the GNU General Public License as published
+   by the Free Software Foundation; either version 3, or (at your
+   option) any later version.
+
+   GCC is distributed in the hope that it will be useful, but WITHOUT
+   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
+   License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+/* Before including this file, two macros must be defined:
+   RS6000_BUILTIN	 -- 2 arguments, the enum name, and classification
+   RS6000_BUILTIN_EQUATE -- 2 arguments, enum name and value */
+
+/* AltiVec builtins.  */
+RS6000_BUILTIN(ALTIVEC_BUILTIN_ST_INTERNAL_4si,		RS6000_BTC_MEM)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_LD_INTERNAL_4si,		RS6000_BTC_MEM)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_ST_INTERNAL_8hi,		RS6000_BTC_MEM)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_LD_INTERNAL_8hi,		RS6000_BTC_MEM)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_ST_INTERNAL_16qi,	RS6000_BTC_MEM)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_LD_INTERNAL_16qi,	RS6000_BTC_MEM)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_ST_INTERNAL_4sf,		RS6000_BTC_MEM)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_LD_INTERNAL_4sf,		RS6000_BTC_MEM)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VADDUBM,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VADDUHM,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VADDUWM,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VADDFP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VADDCUW,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VADDUBS,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VADDSBS,			RS6000_BTC_SAT)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VADDUHS,			RS6000_BTC_SAT)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VADDSHS,			RS6000_BTC_SAT)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VADDUWS,			RS6000_BTC_SAT)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VADDSWS,			RS6000_BTC_SAT)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VAND,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VANDC,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VAVGUB,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VAVGSB,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VAVGUH,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VAVGSH,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VAVGUW,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VAVGSW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCFUX,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCFSX,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCTSXS,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCTUXS,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPBFP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPEQUB,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPEQUH,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPEQUW,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPEQFP,		RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPGEFP,		RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPGTUB,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPGTSB,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPGTUH,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPGTSH,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPGTUW,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPGTSW,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPGTFP,		RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEXPTEFP,		RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VLOGEFP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMADDFP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMAXUB,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMAXSB,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMAXUH,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMAXSH,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMAXUW,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMAXSW,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMAXFP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMHADDSHS,		RS6000_BTC_SAT)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMHRADDSHS,		RS6000_BTC_SAT)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMLADDUHM,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMRGHB,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMRGHH,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMRGHW,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMRGLB,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMRGLH,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMRGLW,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMSUMUBM,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMSUMMBM,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMSUMUHM,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMSUMSHM,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMSUMUHS,		RS6000_BTC_SAT)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMSUMSHS,		RS6000_BTC_SAT)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMINUB,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMINSB,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMINUH,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMINSH,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMINUW,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMINSW,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMINFP,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMULEUB,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMULEUB_UNS,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMULESB,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMULEUH,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMULEUH_UNS,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMULESH,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMULOUB,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMULOUB_UNS,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMULOSB,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMULOUH,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMULOUH_UNS,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VMULOSH,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VNMSUBFP,		RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VNOR,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VOR,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSEL_2DF,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSEL_2DI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSEL_4SI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSEL_4SF,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSEL_8HI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSEL_16QI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSEL_2DI_UNS,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSEL_4SI_UNS,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSEL_8HI_UNS,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSEL_16QI_UNS,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPERM_2DF,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPERM_2DI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPERM_4SI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPERM_4SF,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPERM_8HI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPERM_16QI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPERM_2DI_UNS,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPERM_4SI_UNS,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPERM_8HI_UNS,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPERM_16QI_UNS,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPKUHUM,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPKUWUM,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPKPX,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPKUHSS,			RS6000_BTC_SAT)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPKSHSS,			RS6000_BTC_SAT)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPKUWSS,			RS6000_BTC_SAT)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPKSWSS,			RS6000_BTC_SAT)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPKUHUS,			RS6000_BTC_SAT)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPKSHUS,			RS6000_BTC_SAT)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPKUWUS,			RS6000_BTC_SAT)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VPKSWUS,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VREFP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VRFIM,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VRFIN,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VRFIP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VRFIZ,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VRLB,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VRLH,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VRLW,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VRSQRTEFP,		RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSLB,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSLH,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSLW,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSL,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSLO,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSPLTB,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSPLTH,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSPLTW,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSPLTISB,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSPLTISH,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSPLTISW,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSRB,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSRH,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSRW,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSRAB,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSRAH,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSRAW,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSR,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSRO,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSUBUBM,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSUBUHM,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSUBUWM,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSUBFP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSUBCUW,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSUBUBS,			RS6000_BTC_SAT)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSUBSBS,			RS6000_BTC_SAT)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSUBUHS,			RS6000_BTC_SAT)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSUBSHS,			RS6000_BTC_SAT)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSUBUWS,			RS6000_BTC_SAT)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSUBSWS,			RS6000_BTC_SAT)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSUM4UBS,		RS6000_BTC_SAT)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSUM4SBS,		RS6000_BTC_SAT)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSUM4SHS,		RS6000_BTC_SAT)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSUM2SWS,		RS6000_BTC_SAT)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSUMSWS,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VXOR,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSLDOI_16QI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSLDOI_8HI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSLDOI_4SI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VSLDOI_4SF,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VUPKHSB,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VUPKHPX,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VUPKHSH,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VUPKLSB,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VUPKLPX,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VUPKLSH,			RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_MTVSCR,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_MFVSCR,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_DSSALL,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_DSS,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_LVSL,			RS6000_BTC_MEM)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_LVSR,			RS6000_BTC_MEM)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_DSTT,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_DSTST,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_DSTSTT,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_DST,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_LVEBX,			RS6000_BTC_MEM)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_LVEHX,			RS6000_BTC_MEM)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_LVEWX,			RS6000_BTC_MEM)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_LVXL,			RS6000_BTC_MEM)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_LVX,			RS6000_BTC_MEM)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_STVX,			RS6000_BTC_MEM)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_LVLX,			RS6000_BTC_MEM)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_LVLXL,			RS6000_BTC_MEM)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_LVRX,			RS6000_BTC_MEM)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_LVRXL,			RS6000_BTC_MEM)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_STVEBX,			RS6000_BTC_MEM)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_STVEHX,			RS6000_BTC_MEM)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_STVEWX,			RS6000_BTC_MEM)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_STVXL,			RS6000_BTC_MEM)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_STVLX,			RS6000_BTC_MEM)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_STVLXL,			RS6000_BTC_MEM)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_STVRX,			RS6000_BTC_MEM)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_STVRXL,			RS6000_BTC_MEM)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPBFP_P,		RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPEQFP_P,		RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPEQUB_P,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPEQUH_P,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPEQUW_P,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPGEFP_P,		RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPGTFP_P,		RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPGTSB_P,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPGTSH_P,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPGTSW_P,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPGTUB_P,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPGTUH_P,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPGTUW_P,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_ABSS_V4SI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_ABSS_V8HI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_ABSS_V16QI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_ABS_V4SI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_ABS_V4SF,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_ABS_V8HI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_ABS_V16QI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_MASK_FOR_LOAD,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_MASK_FOR_STORE,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_INIT_V4SI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_INIT_V8HI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_INIT_V16QI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_INIT_V4SF,		RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SET_V4SI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SET_V8HI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SET_V16QI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SET_V4SF,		RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_EXT_V4SI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_EXT_V8HI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_EXT_V16QI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_EXT_V4SF,		RS6000_BTC_CONST)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_COPYSIGN_V4SF,		RS6000_BTC_CONST)
+
+/* Altivec overloaded builtins.  */
+/* For now, don't set the classification for overloaded functions.
+   The function should be converted to the type specific instruction
+   before we get to the point about classifying the builtin type.  */
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPEQ_P,		RS6000_BTC_MISC)
+RS6000_BUILTIN_EQUATE(ALTIVEC_BUILTIN_OVERLOADED_FIRST,
+		      ALTIVEC_BUILTIN_VCMPEQ_P)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPGT_P,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VCMPGE_P,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_ABS,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_ABSS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_ADD,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_ADDC,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_ADDS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_AND,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_ANDC,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_AVG,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_EXTRACT,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_CEIL,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_CMPB,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_CMPEQ,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_CMPEQUB,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_CMPEQUH,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_CMPEQUW,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_CMPGE,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_CMPGT,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_CMPLE,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_CMPLT,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_COPYSIGN,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_CTF,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_CTS,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_CTU,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_DST,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_DSTST,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_DSTSTT,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_DSTT,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_EXPTE,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_FLOOR,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_LD,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_LDE,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_LDL,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_LOGE,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_LVEBX,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_LVEHX,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_LVEWX,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_LVLX,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_LVLXL,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_LVRX,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_LVRXL,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_LVSL,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_LVSR,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_MADD,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_MADDS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_MAX,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_MERGEH,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_MERGEL,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_MIN,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_MLADD,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_MPERM,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_MRADDS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_MRGHB,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_MRGHH,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_MRGHW,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_MRGLB,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_MRGLH,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_MRGLW,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_MSUM,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_MSUMS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_MTVSCR,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_MULE,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_MULO,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_NEARBYINT,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_NMSUB,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_NOR,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_OR,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_PACK,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_PACKPX,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_PACKS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_PACKSU,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_PERM,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_RE,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_RL,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_RINT,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_ROUND,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_RSQRTE,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SEL,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SL,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SLD,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SLL,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SLO,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SPLAT,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SPLAT_S16,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SPLAT_S32,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SPLAT_S8,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SPLAT_U16,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SPLAT_U32,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SPLAT_U8,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SPLTB,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SPLTH,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SPLTW,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SQRT,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SR,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SRA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SRL,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SRO,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_ST,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_STE,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_STL,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_STVEBX,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_STVEHX,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_STVEWX,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_STVLX,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_STVLXL,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_STVRX,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_STVRXL,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SUB,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SUBC,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SUBS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SUM2S,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SUM4S,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SUMS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_TRUNC,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_UNPACKH,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_UNPACKL,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VADDFP,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VADDSBS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VADDSHS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VADDSWS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VADDUBM,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VADDUBS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VADDUHM,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VADDUHS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VADDUWM,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VADDUWS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VAVGSB,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VAVGSH,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VAVGSW,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VAVGUB,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VAVGUH,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VAVGUW,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VCFSX,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VCFUX,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VCMPEQFP,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VCMPEQUB,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VCMPEQUH,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VCMPEQUW,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VCMPGTFP,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VCMPGTSB,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VCMPGTSH,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VCMPGTSW,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VCMPGTUB,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VCMPGTUH,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VCMPGTUW,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMAXFP,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMAXSB,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMAXSH,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMAXSW,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMAXUB,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMAXUH,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMAXUW,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMINFP,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMINSB,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMINSH,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMINSW,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMINUB,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMINUH,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMINUW,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMRGHB,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMRGHH,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMRGHW,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMRGLB,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMRGLH,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMRGLW,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMSUMMBM,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMSUMSHM,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMSUMSHS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMSUMUBM,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMSUMUHM,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMSUMUHS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMULESB,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMULESH,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMULEUB,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMULEUH,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMULOSB,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMULOSH,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMULOUB,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VMULOUH,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VPKSHSS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VPKSHUS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VPKSWSS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VPKSWUS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VPKUHUM,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VPKUHUS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VPKUWUM,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VPKUWUS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VRLB,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VRLH,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VRLW,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSLB,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSLH,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSLW,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSPLTB,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSPLTH,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSPLTW,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSRAB,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSRAH,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSRAW,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSRB,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSRH,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSRW,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSUBFP,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSUBSBS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSUBSHS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSUBSWS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSUBUBM,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSUBUBS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSUBUHM,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSUBUHS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSUBUWM,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSUBUWS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSUM4SBS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSUM4SHS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VSUM4UBS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VUPKHPX,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VUPKHSB,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VUPKHSH,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VUPKLPX,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VUPKLSB,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_VUPKLSH,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_XOR,			RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_STEP,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_PROMOTE,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_INSERT,		RS6000_BTC_MISC)
+RS6000_BUILTIN(ALTIVEC_BUILTIN_VEC_SPLATS,		RS6000_BTC_MISC)
+RS6000_BUILTIN_EQUATE(ALTIVEC_BUILTIN_OVERLOADED_LAST,
+		      ALTIVEC_BUILTIN_VEC_SPLATS)
+
+/* SPE builtins.  */
+RS6000_BUILTIN(SPE_BUILTIN_EVADDW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVAND,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVANDC,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVDIVWS,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVDIVWU,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVEQV,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSADD,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSDIV,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSMUL,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSSUB,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLDDX,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLDHX,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLDWX,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLHHESPLATX,		RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLHHOSSPLATX,		RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLHHOUSPLATX,		RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLWHEX,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLWHOSX,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLWHOUX,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLWHSPLATX,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLWWSPLATX,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMERGEHI,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMERGEHILO,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMERGELO,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMERGELOHI,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHEGSMFAA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHEGSMFAN,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHEGSMIAA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHEGSMIAN,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHEGUMIAA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHEGUMIAN,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHESMF,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHESMFA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHESMFAAW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHESMFANW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHESMI,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHESMIA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHESMIAAW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHESMIANW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHESSF,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHESSFA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHESSFAAW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHESSFANW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHESSIAAW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHESSIANW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHEUMI,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHEUMIA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHEUMIAAW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHEUMIANW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHEUSIAAW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHEUSIANW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOGSMFAA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOGSMFAN,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOGSMIAA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOGSMIAN,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOGUMIAA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOGUMIAN,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOSMF,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOSMFA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOSMFAAW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOSMFANW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOSMI,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOSMIA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOSMIAAW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOSMIANW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOSSF,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOSSFA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOSSFAAW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOSSFANW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOSSIAAW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOSSIANW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOUMI,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOUMIA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOUMIAAW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOUMIANW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOUSIAAW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMHOUSIANW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHSMF,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHSMFA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHSMI,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHSMIA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHSSF,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHSSFA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHUMI,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHUMIA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWLSMIAAW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWLSMIANW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWLSSIAAW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWLSSIANW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWLUMI,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWLUMIA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWLUMIAAW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWLUMIANW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWLUSIAAW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWLUSIANW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWSMF,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWSMFA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWSMFAA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWSMFAN,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWSMI,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWSMIA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWSMIAA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWSMIAN,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHSSFAA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWSSF,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWSSFA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWSSFAA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWSSFAN,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWUMI,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWUMIA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWUMIAA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWUMIAN,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVNAND,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVNOR,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVOR,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVORC,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVRLW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSLW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSRWS,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSRWU,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSTDDX,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSTDHX,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSTDWX,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSTWHEX,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSTWHOX,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSTWWEX,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSTWWOX,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSUBFW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVXOR,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVABS,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVADDSMIAAW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVADDSSIAAW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVADDUMIAAW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVADDUSIAAW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVCNTLSW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVCNTLZW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVEXTSB,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVEXTSH,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSABS,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSCFSF,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSCFSI,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSCFUF,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSCFUI,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSCTSF,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSCTSI,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSCTSIZ,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSCTUF,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSCTUI,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSCTUIZ,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSNABS,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSNEG,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMRA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVNEG,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVRNDW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSUBFSMIAAW,		RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSUBFSSIAAW,		RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSUBFUMIAAW,		RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSUBFUSIAAW,		RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVADDIW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLDD,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLDH,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLDW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLHHESPLAT,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLHHOSSPLAT,		RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLHHOUSPLAT,		RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLWHE,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLWHOS,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLWHOU,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLWHSPLAT,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVLWWSPLAT,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVRLWI,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSLWI,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSRWIS,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSRWIU,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSTDD,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSTDH,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSTDW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSTWHE,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSTWHO,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSTWWE,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSTWWO,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSUBIFW,			RS6000_BTC_MISC)
+
+  /* Compares.  */
+RS6000_BUILTIN(SPE_BUILTIN_EVCMPEQ,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVCMPGTS,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVCMPGTU,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVCMPLTS,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVCMPLTU,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSCMPEQ,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSCMPGT,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSCMPLT,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSTSTEQ,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSTSTGT,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVFSTSTLT,			RS6000_BTC_MISC)
+
+/* EVSEL compares.  */
+RS6000_BUILTIN(SPE_BUILTIN_EVSEL_CMPEQ,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSEL_CMPGTS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSEL_CMPGTU,		RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSEL_CMPLTS,		RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSEL_CMPLTU,		RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSEL_FSCMPEQ,		RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSEL_FSCMPGT,		RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSEL_FSCMPLT,		RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSEL_FSTSTEQ,		RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSEL_FSTSTGT,		RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSEL_FSTSTLT,		RS6000_BTC_MISC)
+
+RS6000_BUILTIN(SPE_BUILTIN_EVSPLATFI,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVSPLATI,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHSSMAA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHSMFAA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHSMIAA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHUSIAA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHUMIAA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHSSFAN,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHSSIAN,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHSMFAN,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHSMIAN,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHUSIAN,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHUMIAN,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHGSSFAA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHGSMFAA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHGSMIAA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHGUMIAA,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHGSSFAN,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHGSMFAN,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHGSMIAN,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_EVMWHGUMIAN,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_MTSPEFSCR,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_MFSPEFSCR,			RS6000_BTC_MISC)
+RS6000_BUILTIN(SPE_BUILTIN_BRINC,			RS6000_BTC_MISC)
+
+/* PAIRED builtins.  */
+RS6000_BUILTIN(PAIRED_BUILTIN_DIVV2SF3,			RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_ABSV2SF2,			RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_NEGV2SF2,			RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_SQRTV2SF2,		RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_ADDV2SF3,			RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_SUBV2SF3,			RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_RESV2SF2,			RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_MULV2SF3,			RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_MSUB,			RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_MADD,			RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_NMSUB,			RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_NMADD,			RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_NABSV2SF2,		RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_SUM0,			RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_SUM1,			RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_MULS0,			RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_MULS1,			RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_MERGE00,			RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_MERGE01,			RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_MERGE10,			RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_MERGE11,			RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_MADDS0,			RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_MADDS1,			RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_STX,			RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_LX,			RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_SELV2SF4,			RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_CMPU0,			RS6000_BTC_MISC)
+RS6000_BUILTIN(PAIRED_BUILTIN_CMPU1,			RS6000_BTC_MISC)
+
+  /* VSX builtins.  */
+RS6000_BUILTIN(VSX_BUILTIN_LXSDX,			RS6000_BTC_MEM)
+RS6000_BUILTIN(VSX_BUILTIN_LXVD2X,			RS6000_BTC_MEM)
+RS6000_BUILTIN(VSX_BUILTIN_LXVDSX,			RS6000_BTC_MEM)
+RS6000_BUILTIN(VSX_BUILTIN_LXVW4X,			RS6000_BTC_MEM)
+RS6000_BUILTIN(VSX_BUILTIN_STXSDX,			RS6000_BTC_MEM)
+RS6000_BUILTIN(VSX_BUILTIN_STXVD2X,			RS6000_BTC_MEM)
+RS6000_BUILTIN(VSX_BUILTIN_STXVW4X,			RS6000_BTC_MEM)
+RS6000_BUILTIN(VSX_BUILTIN_XSABSDP,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XSADDDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSCMPODP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSCMPUDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSCPSGNDP,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XSCVDPSP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSCVDPSXDS,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSCVDPSXWS,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSCVDPUXDS,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSCVDPUXWS,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSCVSPDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSCVSXDDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSCVUXDDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSDIVDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSMADDADP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSMADDMDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSMAXDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSMINDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSMOVDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSMSUBADP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSMSUBMDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSMULDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSNABSDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSNEGDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSNMADDADP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSNMADDMDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSNMSUBADP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSNMSUBMDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSRDPI,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSRDPIC,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSRDPIM,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSRDPIP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSRDPIZ,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSREDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSRSQRTEDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSSQRTDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSSUBDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_CPSGNDP,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_CPSGNSP,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XSTDIVDP_FE,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSTDIVDP_FG,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSTSQRTDP_FE,		RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XSTSQRTDP_FG,		RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVABSDP,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XVABSSP,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XVADDDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVADDSP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCMPEQDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCMPEQSP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCMPGEDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCMPGESP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCMPGTDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCMPGTSP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCMPEQDP_P,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCMPEQSP_P,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCMPGEDP_P,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCMPGESP_P,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCMPGTDP_P,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCMPGTSP_P,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCPSGNDP,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XVCPSGNSP,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XVCVDPSP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCVDPSXDS,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCVDPSXWS,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCVDPUXDS,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCVDPUXDS_UNS,		RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCVDPUXWS,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCVSPDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCVSPSXDS,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCVSPSXWS,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCVSPUXDS,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCVSPUXWS,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCVSXDDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCVSXDSP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCVSXWDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCVSXWSP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCVUXDDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCVUXDDP_UNS,		RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCVUXDSP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCVUXWDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVCVUXWSP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVDIVDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVDIVSP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVMADDDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVMADDSP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVMAXDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVMAXSP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVMINDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVMINSP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVMSUBDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVMSUBSP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVMULDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVMULSP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVNABSDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVNABSSP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVNEGDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVNEGSP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVNMADDDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVNMADDSP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVNMSUBDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVNMSUBSP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVRDPI,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVRDPIC,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVRDPIM,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVRDPIP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVRDPIZ,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVREDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVRESP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVRSPI,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVRSPIC,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVRSPIM,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVRSPIP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVRSPIZ,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVRSQRTEDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVRSQRTESP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVSQRTDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVSQRTSP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVSUBDP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVSUBSP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVTDIVDP_FE,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVTDIVDP_FG,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVTDIVSP_FE,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVTDIVSP_FG,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVTSQRTDP_FE,		RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVTSQRTDP_FG,		RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVTSQRTSP_FE,		RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XVTSQRTSP_FG,		RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XXSEL_2DI,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXSEL_2DF,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXSEL_4SI,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXSEL_4SF,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXSEL_8HI,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXSEL_16QI,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXSEL_2DI_UNS,		RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXSEL_4SI_UNS,		RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXSEL_8HI_UNS,		RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXSEL_16QI_UNS,		RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_VPERM_2DI,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_VPERM_2DF,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_VPERM_4SI,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_VPERM_4SF,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_VPERM_8HI,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_VPERM_16QI,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_VPERM_2DI_UNS,		RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_VPERM_4SI_UNS,		RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_VPERM_8HI_UNS,		RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_VPERM_16QI_UNS,		RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXPERMDI_2DF,		RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXPERMDI_2DI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXPERMDI_4SF,		RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXPERMDI_4SI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXPERMDI_8HI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXPERMDI_16QI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_CONCAT_2DF,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_CONCAT_2DI,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_SET_2DF,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_SET_2DI,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_SPLAT_2DF,			RS6000_BTC_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_SPLAT_2DI,			RS6000_BTC_PURE)
+RS6000_BUILTIN(VSX_BUILTIN_XXMRGHW_4SF,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXMRGHW_4SI,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXMRGLW_4SF,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXMRGLW_4SI,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXSLDWI_16QI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXSLDWI_8HI,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXSLDWI_4SI,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXSLDWI_4SF,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXSLDWI_2DI,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_XXSLDWI_2DF,			RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_VEC_INIT_V2DF,		RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_VEC_INIT_V2DI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_VEC_SET_V2DF,		RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_VEC_SET_V2DI,		RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_VEC_EXT_V2DF,		RS6000_BTC_CONST)
+RS6000_BUILTIN(VSX_BUILTIN_VEC_EXT_V2DI,		RS6000_BTC_CONST)
+
+/* VSX overloaded builtins, add the overloaded functions not present in
+   Altivec.  */
+RS6000_BUILTIN(VSX_BUILTIN_VEC_MUL,			RS6000_BTC_MISC)
+RS6000_BUILTIN_EQUATE(VSX_BUILTIN_OVERLOADED_FIRST,
+		      VSX_BUILTIN_VEC_MUL)
+RS6000_BUILTIN(VSX_BUILTIN_VEC_MSUB,			RS6000_BTC_MISC)
+RS6000_BUILTIN(VSX_BUILTIN_VEC_NMADD,			RS6000_BTC_MISC)
+RS6000_BUILTIN(VSX_BUITLIN_VEC_NMSUB,			RS6000_BTC_MISC)
+RS6000_BUILTIN(VSX_BUILTIN_VEC_DIV,			RS6000_BTC_MISC)
+RS6000_BUILTIN(VSX_BUILTIN_VEC_XXMRGHW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(VSX_BUILTIN_VEC_XXMRGLW,			RS6000_BTC_MISC)
+RS6000_BUILTIN(VSX_BUILTIN_VEC_XXPERMDI,		RS6000_BTC_MISC)
+RS6000_BUILTIN(VSX_BUILTIN_VEC_XXSLDWI,			RS6000_BTC_MISC)
+RS6000_BUILTIN(VSX_BUILTIN_VEC_XXSPLTD,			RS6000_BTC_MISC)
+RS6000_BUILTIN(VSX_BUILTIN_VEC_XXSPLTW,			RS6000_BTC_MISC)
+RS6000_BUILTIN_EQUATE(VSX_BUILTIN_OVERLOADED_LAST,
+		      VSX_BUILTIN_VEC_XXSPLTW)
+
+/* Combined VSX/Altivec builtins.  */
+RS6000_BUILTIN(VECTOR_BUILTIN_FLOAT_V4SI_V4SF,		RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VECTOR_BUILTIN_UNSFLOAT_V4SI_V4SF,	RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VECTOR_BUILTIN_FIX_V4SF_V4SI,		RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(VECTOR_BUILTIN_FIXUNS_V4SF_V4SI,		RS6000_BTC_FP_PURE)
+
+/* Power7 builtins, that aren't VSX instructions.  */
+RS6000_BUILTIN(POWER7_BUILTIN_BPERMD,			RS6000_BTC_CONST)
+
+/* Miscellaneous builtins.  */
+RS6000_BUILTIN(RS6000_BUILTIN_RECIP,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(RS6000_BUILTIN_RECIPF,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(RS6000_BUILTIN_RSQRTF,			RS6000_BTC_FP_PURE)
+RS6000_BUILTIN(RS6000_BUILTIN_BSWAP_HI,			RS6000_BTC_CONST)
Index: gcc/config/rs6000/rs6000.c
===================================================================
--- gcc/config/rs6000/rs6000.c	(revision 152864)
+++ gcc/config/rs6000/rs6000.c	(working copy)
@@ -836,6 +836,21 @@ struct processor_costs ppca2_cost = {
 };
 
 \f
+/* Table that classifies rs6000 builtin functions (pure, const, etc.).  */
+#undef RS6000_BUILTIN
+#undef RS6000_BUILTIN_EQUATE
+#define RS6000_BUILTIN(NAME, TYPE) TYPE,
+#define RS6000_BUILTIN_EQUATE(NAME, VALUE)
+
+static const enum rs6000_btc builtin_classify[(int)RS6000_BUILTIN_COUNT] =
+{
+#include "rs6000-builtin.def"
+};
+
+#undef RS6000_BUILTIN
+#undef RS6000_BUILTIN_EQUATE
+
+\f
 static bool rs6000_function_ok_for_sibcall (tree, tree);
 static const char *rs6000_invalid_within_doloop (const_rtx);
 static bool rs6000_legitimate_address_p (enum machine_mode, rtx, bool);
@@ -8494,13 +8509,54 @@ def_builtin (int mask, const char *name,
 {
   if ((mask & target_flags) || TARGET_PAIRED_FLOAT)
     {
+      tree t;
       if (rs6000_builtin_decls[code])
 	fatal_error ("internal error: builtin function to %s already processed.",
 		     name);
 
-      rs6000_builtin_decls[code] =
+      rs6000_builtin_decls[code] = t =
         add_builtin_function (name, type, code, BUILT_IN_MD,
 			      NULL, NULL_TREE);
+
+      gcc_assert (code >= 0 && code < (int)RS6000_BUILTIN_COUNT);
+      switch (builtin_classify[code])
+	{
+	default:
+	  gcc_unreachable ();
+
+	  /* assume builtin can do anything.  */
+	case RS6000_BTC_MISC:
+	  break;
+
+	  /* const function, function only depends on the inputs.  */
+	case RS6000_BTC_CONST:
+	  TREE_CONSTANT (t) = 1;
+	  TREE_NOTHROW (t) = 1;
+	  break;
+
+	  /* pure function, function can read global memory.  */
+	case RS6000_BTC_PURE:
+	  DECL_PURE_P (t) = 1;
+	  TREE_NOTHROW (t) = 1;
+	  break;
+
+	  /* Function is a math function.  If rounding mode is on, then treat
+	     the function as not reading global memory, but it can have
+	     arbitrary side effects.  If it is off, then assume the function is
+	     a const function.  This mimics the ATTR_MATHFN_FPROUNDING
+	     attribute in builtin-attribute.def that is used for the math
+	     functions. */
+	case RS6000_BTC_FP_PURE:
+	  TREE_NOTHROW (t) = 1;
+	  if (flag_rounding_math)
+	    {
+	      DECL_PURE_P (t) = 1;
+	      DECL_IS_NOVOPS (t) = 1;
+	    }
+	  else
+	    TREE_CONSTANT (t) = 1;
+	  break;
+	}
     }
 }
 
Index: gcc/config/rs6000/rs6000.h
===================================================================
--- gcc/config/rs6000/rs6000.h	(revision 152864)
+++ gcc/config/rs6000/rs6000.h	(working copy)
@@ -2424,964 +2424,35 @@ extern int optimize;
 extern int flag_expensive_optimizations;
 extern int frame_pointer_needed;
 
-enum rs6000_builtins
+/* Classification of the builtin functions to properly set the declaration tree
+   flags.  */
+enum rs6000_btc
 {
-  /* AltiVec builtins.  */
-  ALTIVEC_BUILTIN_ST_INTERNAL_4si,
-  ALTIVEC_BUILTIN_LD_INTERNAL_4si,
-  ALTIVEC_BUILTIN_ST_INTERNAL_8hi,
-  ALTIVEC_BUILTIN_LD_INTERNAL_8hi,
-  ALTIVEC_BUILTIN_ST_INTERNAL_16qi,
-  ALTIVEC_BUILTIN_LD_INTERNAL_16qi,
-  ALTIVEC_BUILTIN_ST_INTERNAL_4sf,
-  ALTIVEC_BUILTIN_LD_INTERNAL_4sf,
-  ALTIVEC_BUILTIN_VADDUBM,
-  ALTIVEC_BUILTIN_VADDUHM,
-  ALTIVEC_BUILTIN_VADDUWM,
-  ALTIVEC_BUILTIN_VADDFP,
-  ALTIVEC_BUILTIN_VADDCUW,
-  ALTIVEC_BUILTIN_VADDUBS,
-  ALTIVEC_BUILTIN_VADDSBS,
-  ALTIVEC_BUILTIN_VADDUHS,
-  ALTIVEC_BUILTIN_VADDSHS,
-  ALTIVEC_BUILTIN_VADDUWS,
-  ALTIVEC_BUILTIN_VADDSWS,
-  ALTIVEC_BUILTIN_VAND,
-  ALTIVEC_BUILTIN_VANDC,
-  ALTIVEC_BUILTIN_VAVGUB,
-  ALTIVEC_BUILTIN_VAVGSB,
-  ALTIVEC_BUILTIN_VAVGUH,
-  ALTIVEC_BUILTIN_VAVGSH,
-  ALTIVEC_BUILTIN_VAVGUW,
-  ALTIVEC_BUILTIN_VAVGSW,
-  ALTIVEC_BUILTIN_VCFUX,
-  ALTIVEC_BUILTIN_VCFSX,
-  ALTIVEC_BUILTIN_VCTSXS,
-  ALTIVEC_BUILTIN_VCTUXS,
-  ALTIVEC_BUILTIN_VCMPBFP,
-  ALTIVEC_BUILTIN_VCMPEQUB,
-  ALTIVEC_BUILTIN_VCMPEQUH,
-  ALTIVEC_BUILTIN_VCMPEQUW,
-  ALTIVEC_BUILTIN_VCMPEQFP,
-  ALTIVEC_BUILTIN_VCMPGEFP,
-  ALTIVEC_BUILTIN_VCMPGTUB,
-  ALTIVEC_BUILTIN_VCMPGTSB,
-  ALTIVEC_BUILTIN_VCMPGTUH,
-  ALTIVEC_BUILTIN_VCMPGTSH,
-  ALTIVEC_BUILTIN_VCMPGTUW,
-  ALTIVEC_BUILTIN_VCMPGTSW,
-  ALTIVEC_BUILTIN_VCMPGTFP,
-  ALTIVEC_BUILTIN_VEXPTEFP,
-  ALTIVEC_BUILTIN_VLOGEFP,
-  ALTIVEC_BUILTIN_VMADDFP,
-  ALTIVEC_BUILTIN_VMAXUB,
-  ALTIVEC_BUILTIN_VMAXSB,
-  ALTIVEC_BUILTIN_VMAXUH,
-  ALTIVEC_BUILTIN_VMAXSH,
-  ALTIVEC_BUILTIN_VMAXUW,
-  ALTIVEC_BUILTIN_VMAXSW,
-  ALTIVEC_BUILTIN_VMAXFP,
-  ALTIVEC_BUILTIN_VMHADDSHS,
-  ALTIVEC_BUILTIN_VMHRADDSHS,
-  ALTIVEC_BUILTIN_VMLADDUHM,
-  ALTIVEC_BUILTIN_VMRGHB,
-  ALTIVEC_BUILTIN_VMRGHH,
-  ALTIVEC_BUILTIN_VMRGHW,
-  ALTIVEC_BUILTIN_VMRGLB,
-  ALTIVEC_BUILTIN_VMRGLH,
-  ALTIVEC_BUILTIN_VMRGLW,
-  ALTIVEC_BUILTIN_VMSUMUBM,
-  ALTIVEC_BUILTIN_VMSUMMBM,
-  ALTIVEC_BUILTIN_VMSUMUHM,
-  ALTIVEC_BUILTIN_VMSUMSHM,
-  ALTIVEC_BUILTIN_VMSUMUHS,
-  ALTIVEC_BUILTIN_VMSUMSHS,
-  ALTIVEC_BUILTIN_VMINUB,
-  ALTIVEC_BUILTIN_VMINSB,
-  ALTIVEC_BUILTIN_VMINUH,
-  ALTIVEC_BUILTIN_VMINSH,
-  ALTIVEC_BUILTIN_VMINUW,
-  ALTIVEC_BUILTIN_VMINSW,
-  ALTIVEC_BUILTIN_VMINFP,
-  ALTIVEC_BUILTIN_VMULEUB,
-  ALTIVEC_BUILTIN_VMULEUB_UNS,
-  ALTIVEC_BUILTIN_VMULESB,
-  ALTIVEC_BUILTIN_VMULEUH,
-  ALTIVEC_BUILTIN_VMULEUH_UNS,
-  ALTIVEC_BUILTIN_VMULESH,
-  ALTIVEC_BUILTIN_VMULOUB,
-  ALTIVEC_BUILTIN_VMULOUB_UNS,
-  ALTIVEC_BUILTIN_VMULOSB,
-  ALTIVEC_BUILTIN_VMULOUH,
-  ALTIVEC_BUILTIN_VMULOUH_UNS,
-  ALTIVEC_BUILTIN_VMULOSH,
-  ALTIVEC_BUILTIN_VNMSUBFP,
-  ALTIVEC_BUILTIN_VNOR,
-  ALTIVEC_BUILTIN_VOR,
-  ALTIVEC_BUILTIN_VSEL_2DF,		/* needed for VSX */
-  ALTIVEC_BUILTIN_VSEL_2DI,		/* needed for VSX */
-  ALTIVEC_BUILTIN_VSEL_4SI,
-  ALTIVEC_BUILTIN_VSEL_4SF,
-  ALTIVEC_BUILTIN_VSEL_8HI,
-  ALTIVEC_BUILTIN_VSEL_16QI,
-  ALTIVEC_BUILTIN_VSEL_2DI_UNS,
-  ALTIVEC_BUILTIN_VSEL_4SI_UNS,
-  ALTIVEC_BUILTIN_VSEL_8HI_UNS,
-  ALTIVEC_BUILTIN_VSEL_16QI_UNS,
-  ALTIVEC_BUILTIN_VPERM_2DF,		/* needed for VSX */
-  ALTIVEC_BUILTIN_VPERM_2DI,		/* needed for VSX */
-  ALTIVEC_BUILTIN_VPERM_4SI,
-  ALTIVEC_BUILTIN_VPERM_4SF,
-  ALTIVEC_BUILTIN_VPERM_8HI,
-  ALTIVEC_BUILTIN_VPERM_16QI,
-  ALTIVEC_BUILTIN_VPERM_2DI_UNS,
-  ALTIVEC_BUILTIN_VPERM_4SI_UNS,
-  ALTIVEC_BUILTIN_VPERM_8HI_UNS,
-  ALTIVEC_BUILTIN_VPERM_16QI_UNS,
-  ALTIVEC_BUILTIN_VPKUHUM,
-  ALTIVEC_BUILTIN_VPKUWUM,
-  ALTIVEC_BUILTIN_VPKPX,
-  ALTIVEC_BUILTIN_VPKUHSS,
-  ALTIVEC_BUILTIN_VPKSHSS,
-  ALTIVEC_BUILTIN_VPKUWSS,
-  ALTIVEC_BUILTIN_VPKSWSS,
-  ALTIVEC_BUILTIN_VPKUHUS,
-  ALTIVEC_BUILTIN_VPKSHUS,
-  ALTIVEC_BUILTIN_VPKUWUS,
-  ALTIVEC_BUILTIN_VPKSWUS,
-  ALTIVEC_BUILTIN_VREFP,
-  ALTIVEC_BUILTIN_VRFIM,
-  ALTIVEC_BUILTIN_VRFIN,
-  ALTIVEC_BUILTIN_VRFIP,
-  ALTIVEC_BUILTIN_VRFIZ,
-  ALTIVEC_BUILTIN_VRLB,
-  ALTIVEC_BUILTIN_VRLH,
-  ALTIVEC_BUILTIN_VRLW,
-  ALTIVEC_BUILTIN_VRSQRTEFP,
-  ALTIVEC_BUILTIN_VSLB,
-  ALTIVEC_BUILTIN_VSLH,
-  ALTIVEC_BUILTIN_VSLW,
-  ALTIVEC_BUILTIN_VSL,
-  ALTIVEC_BUILTIN_VSLO,
-  ALTIVEC_BUILTIN_VSPLTB,
-  ALTIVEC_BUILTIN_VSPLTH,
-  ALTIVEC_BUILTIN_VSPLTW,
-  ALTIVEC_BUILTIN_VSPLTISB,
-  ALTIVEC_BUILTIN_VSPLTISH,
-  ALTIVEC_BUILTIN_VSPLTISW,
-  ALTIVEC_BUILTIN_VSRB,
-  ALTIVEC_BUILTIN_VSRH,
-  ALTIVEC_BUILTIN_VSRW,
-  ALTIVEC_BUILTIN_VSRAB,
-  ALTIVEC_BUILTIN_VSRAH,
-  ALTIVEC_BUILTIN_VSRAW,
-  ALTIVEC_BUILTIN_VSR,
-  ALTIVEC_BUILTIN_VSRO,
-  ALTIVEC_BUILTIN_VSUBUBM,
-  ALTIVEC_BUILTIN_VSUBUHM,
-  ALTIVEC_BUILTIN_VSUBUWM,
-  ALTIVEC_BUILTIN_VSUBFP,
-  ALTIVEC_BUILTIN_VSUBCUW,
-  ALTIVEC_BUILTIN_VSUBUBS,
-  ALTIVEC_BUILTIN_VSUBSBS,
-  ALTIVEC_BUILTIN_VSUBUHS,
-  ALTIVEC_BUILTIN_VSUBSHS,
-  ALTIVEC_BUILTIN_VSUBUWS,
-  ALTIVEC_BUILTIN_VSUBSWS,
-  ALTIVEC_BUILTIN_VSUM4UBS,
-  ALTIVEC_BUILTIN_VSUM4SBS,
-  ALTIVEC_BUILTIN_VSUM4SHS,
-  ALTIVEC_BUILTIN_VSUM2SWS,
-  ALTIVEC_BUILTIN_VSUMSWS,
-  ALTIVEC_BUILTIN_VXOR,
-  ALTIVEC_BUILTIN_VSLDOI_16QI,
-  ALTIVEC_BUILTIN_VSLDOI_8HI,
-  ALTIVEC_BUILTIN_VSLDOI_4SI,
-  ALTIVEC_BUILTIN_VSLDOI_4SF,
-  ALTIVEC_BUILTIN_VUPKHSB,
-  ALTIVEC_BUILTIN_VUPKHPX,
-  ALTIVEC_BUILTIN_VUPKHSH,
-  ALTIVEC_BUILTIN_VUPKLSB,
-  ALTIVEC_BUILTIN_VUPKLPX,
-  ALTIVEC_BUILTIN_VUPKLSH,
-  ALTIVEC_BUILTIN_MTVSCR,
-  ALTIVEC_BUILTIN_MFVSCR,
-  ALTIVEC_BUILTIN_DSSALL,
-  ALTIVEC_BUILTIN_DSS,
-  ALTIVEC_BUILTIN_LVSL,
-  ALTIVEC_BUILTIN_LVSR,
-  ALTIVEC_BUILTIN_DSTT,
-  ALTIVEC_BUILTIN_DSTST,
-  ALTIVEC_BUILTIN_DSTSTT,
-  ALTIVEC_BUILTIN_DST,
-  ALTIVEC_BUILTIN_LVEBX,
-  ALTIVEC_BUILTIN_LVEHX,
-  ALTIVEC_BUILTIN_LVEWX,
-  ALTIVEC_BUILTIN_LVXL,
-  ALTIVEC_BUILTIN_LVX,
-  ALTIVEC_BUILTIN_STVX,
-  ALTIVEC_BUILTIN_LVLX,
-  ALTIVEC_BUILTIN_LVLXL,
-  ALTIVEC_BUILTIN_LVRX,
-  ALTIVEC_BUILTIN_LVRXL,
-  ALTIVEC_BUILTIN_STVEBX,
-  ALTIVEC_BUILTIN_STVEHX,
-  ALTIVEC_BUILTIN_STVEWX,
-  ALTIVEC_BUILTIN_STVXL,
-  ALTIVEC_BUILTIN_STVLX,
-  ALTIVEC_BUILTIN_STVLXL,
-  ALTIVEC_BUILTIN_STVRX,
-  ALTIVEC_BUILTIN_STVRXL,
-  ALTIVEC_BUILTIN_VCMPBFP_P,
-  ALTIVEC_BUILTIN_VCMPEQFP_P,
-  ALTIVEC_BUILTIN_VCMPEQUB_P,
-  ALTIVEC_BUILTIN_VCMPEQUH_P,
-  ALTIVEC_BUILTIN_VCMPEQUW_P,
-  ALTIVEC_BUILTIN_VCMPGEFP_P,
-  ALTIVEC_BUILTIN_VCMPGTFP_P,
-  ALTIVEC_BUILTIN_VCMPGTSB_P,
-  ALTIVEC_BUILTIN_VCMPGTSH_P,
-  ALTIVEC_BUILTIN_VCMPGTSW_P,
-  ALTIVEC_BUILTIN_VCMPGTUB_P,
-  ALTIVEC_BUILTIN_VCMPGTUH_P,
-  ALTIVEC_BUILTIN_VCMPGTUW_P,
-  ALTIVEC_BUILTIN_ABSS_V4SI,
-  ALTIVEC_BUILTIN_ABSS_V8HI,
-  ALTIVEC_BUILTIN_ABSS_V16QI,
-  ALTIVEC_BUILTIN_ABS_V4SI,
-  ALTIVEC_BUILTIN_ABS_V4SF,
-  ALTIVEC_BUILTIN_ABS_V8HI,
-  ALTIVEC_BUILTIN_ABS_V16QI,
-  ALTIVEC_BUILTIN_MASK_FOR_LOAD,
-  ALTIVEC_BUILTIN_MASK_FOR_STORE,
-  ALTIVEC_BUILTIN_VEC_INIT_V4SI,
-  ALTIVEC_BUILTIN_VEC_INIT_V8HI,
-  ALTIVEC_BUILTIN_VEC_INIT_V16QI,
-  ALTIVEC_BUILTIN_VEC_INIT_V4SF,
-  ALTIVEC_BUILTIN_VEC_SET_V4SI,
-  ALTIVEC_BUILTIN_VEC_SET_V8HI,
-  ALTIVEC_BUILTIN_VEC_SET_V16QI,
-  ALTIVEC_BUILTIN_VEC_SET_V4SF,
-  ALTIVEC_BUILTIN_VEC_EXT_V4SI,
-  ALTIVEC_BUILTIN_VEC_EXT_V8HI,
-  ALTIVEC_BUILTIN_VEC_EXT_V16QI,
-  ALTIVEC_BUILTIN_VEC_EXT_V4SF,
-  ALTIVEC_BUILTIN_COPYSIGN_V4SF,
-
-  /* Altivec overloaded builtins.  */
-  ALTIVEC_BUILTIN_VCMPEQ_P,
-  ALTIVEC_BUILTIN_OVERLOADED_FIRST = ALTIVEC_BUILTIN_VCMPEQ_P,
-  ALTIVEC_BUILTIN_VCMPGT_P,
-  ALTIVEC_BUILTIN_VCMPGE_P,
-  ALTIVEC_BUILTIN_VEC_ABS,
-  ALTIVEC_BUILTIN_VEC_ABSS,
-  ALTIVEC_BUILTIN_VEC_ADD,
-  ALTIVEC_BUILTIN_VEC_ADDC,
-  ALTIVEC_BUILTIN_VEC_ADDS,
-  ALTIVEC_BUILTIN_VEC_AND,
-  ALTIVEC_BUILTIN_VEC_ANDC,
-  ALTIVEC_BUILTIN_VEC_AVG,
-  ALTIVEC_BUILTIN_VEC_EXTRACT,
-  ALTIVEC_BUILTIN_VEC_CEIL,
-  ALTIVEC_BUILTIN_VEC_CMPB,
-  ALTIVEC_BUILTIN_VEC_CMPEQ,
-  ALTIVEC_BUILTIN_VEC_CMPEQUB,
-  ALTIVEC_BUILTIN_VEC_CMPEQUH,
-  ALTIVEC_BUILTIN_VEC_CMPEQUW,
-  ALTIVEC_BUILTIN_VEC_CMPGE,
-  ALTIVEC_BUILTIN_VEC_CMPGT,
-  ALTIVEC_BUILTIN_VEC_CMPLE,
-  ALTIVEC_BUILTIN_VEC_CMPLT,
-  ALTIVEC_BUILTIN_VEC_COPYSIGN,
-  ALTIVEC_BUILTIN_VEC_CTF,
-  ALTIVEC_BUILTIN_VEC_CTS,
-  ALTIVEC_BUILTIN_VEC_CTU,
-  ALTIVEC_BUILTIN_VEC_DST,
-  ALTIVEC_BUILTIN_VEC_DSTST,
-  ALTIVEC_BUILTIN_VEC_DSTSTT,
-  ALTIVEC_BUILTIN_VEC_DSTT,
-  ALTIVEC_BUILTIN_VEC_EXPTE,
-  ALTIVEC_BUILTIN_VEC_FLOOR,
-  ALTIVEC_BUILTIN_VEC_LD,
-  ALTIVEC_BUILTIN_VEC_LDE,
-  ALTIVEC_BUILTIN_VEC_LDL,
-  ALTIVEC_BUILTIN_VEC_LOGE,
-  ALTIVEC_BUILTIN_VEC_LVEBX,
-  ALTIVEC_BUILTIN_VEC_LVEHX,
-  ALTIVEC_BUILTIN_VEC_LVEWX,
-  ALTIVEC_BUILTIN_VEC_LVLX,
-  ALTIVEC_BUILTIN_VEC_LVLXL,
-  ALTIVEC_BUILTIN_VEC_LVRX,
-  ALTIVEC_BUILTIN_VEC_LVRXL,
-  ALTIVEC_BUILTIN_VEC_LVSL,
-  ALTIVEC_BUILTIN_VEC_LVSR,
-  ALTIVEC_BUILTIN_VEC_MADD,
-  ALTIVEC_BUILTIN_VEC_MADDS,
-  ALTIVEC_BUILTIN_VEC_MAX,
-  ALTIVEC_BUILTIN_VEC_MERGEH,
-  ALTIVEC_BUILTIN_VEC_MERGEL,
-  ALTIVEC_BUILTIN_VEC_MIN,
-  ALTIVEC_BUILTIN_VEC_MLADD,
-  ALTIVEC_BUILTIN_VEC_MPERM,
-  ALTIVEC_BUILTIN_VEC_MRADDS,
-  ALTIVEC_BUILTIN_VEC_MRGHB,
-  ALTIVEC_BUILTIN_VEC_MRGHH,
-  ALTIVEC_BUILTIN_VEC_MRGHW,
-  ALTIVEC_BUILTIN_VEC_MRGLB,
-  ALTIVEC_BUILTIN_VEC_MRGLH,
-  ALTIVEC_BUILTIN_VEC_MRGLW,
-  ALTIVEC_BUILTIN_VEC_MSUM,
-  ALTIVEC_BUILTIN_VEC_MSUMS,
-  ALTIVEC_BUILTIN_VEC_MTVSCR,
-  ALTIVEC_BUILTIN_VEC_MULE,
-  ALTIVEC_BUILTIN_VEC_MULO,
-  ALTIVEC_BUILTIN_VEC_NEARBYINT,
-  ALTIVEC_BUILTIN_VEC_NMSUB,
-  ALTIVEC_BUILTIN_VEC_NOR,
-  ALTIVEC_BUILTIN_VEC_OR,
-  ALTIVEC_BUILTIN_VEC_PACK,
-  ALTIVEC_BUILTIN_VEC_PACKPX,
-  ALTIVEC_BUILTIN_VEC_PACKS,
-  ALTIVEC_BUILTIN_VEC_PACKSU,
-  ALTIVEC_BUILTIN_VEC_PERM,
-  ALTIVEC_BUILTIN_VEC_RE,
-  ALTIVEC_BUILTIN_VEC_RL,
-  ALTIVEC_BUILTIN_VEC_RINT,
-  ALTIVEC_BUILTIN_VEC_ROUND,
-  ALTIVEC_BUILTIN_VEC_RSQRTE,
-  ALTIVEC_BUILTIN_VEC_SEL,
-  ALTIVEC_BUILTIN_VEC_SL,
-  ALTIVEC_BUILTIN_VEC_SLD,
-  ALTIVEC_BUILTIN_VEC_SLL,
-  ALTIVEC_BUILTIN_VEC_SLO,
-  ALTIVEC_BUILTIN_VEC_SPLAT,
-  ALTIVEC_BUILTIN_VEC_SPLAT_S16,
-  ALTIVEC_BUILTIN_VEC_SPLAT_S32,
-  ALTIVEC_BUILTIN_VEC_SPLAT_S8,
-  ALTIVEC_BUILTIN_VEC_SPLAT_U16,
-  ALTIVEC_BUILTIN_VEC_SPLAT_U32,
-  ALTIVEC_BUILTIN_VEC_SPLAT_U8,
-  ALTIVEC_BUILTIN_VEC_SPLTB,
-  ALTIVEC_BUILTIN_VEC_SPLTH,
-  ALTIVEC_BUILTIN_VEC_SPLTW,
-  ALTIVEC_BUILTIN_VEC_SQRT,
-  ALTIVEC_BUILTIN_VEC_SR,
-  ALTIVEC_BUILTIN_VEC_SRA,
-  ALTIVEC_BUILTIN_VEC_SRL,
-  ALTIVEC_BUILTIN_VEC_SRO,
-  ALTIVEC_BUILTIN_VEC_ST,
-  ALTIVEC_BUILTIN_VEC_STE,
-  ALTIVEC_BUILTIN_VEC_STL,
-  ALTIVEC_BUILTIN_VEC_STVEBX,
-  ALTIVEC_BUILTIN_VEC_STVEHX,
-  ALTIVEC_BUILTIN_VEC_STVEWX,
-  ALTIVEC_BUILTIN_VEC_STVLX,
-  ALTIVEC_BUILTIN_VEC_STVLXL,
-  ALTIVEC_BUILTIN_VEC_STVRX,
-  ALTIVEC_BUILTIN_VEC_STVRXL,
-  ALTIVEC_BUILTIN_VEC_SUB,
-  ALTIVEC_BUILTIN_VEC_SUBC,
-  ALTIVEC_BUILTIN_VEC_SUBS,
-  ALTIVEC_BUILTIN_VEC_SUM2S,
-  ALTIVEC_BUILTIN_VEC_SUM4S,
-  ALTIVEC_BUILTIN_VEC_SUMS,
-  ALTIVEC_BUILTIN_VEC_TRUNC,
-  ALTIVEC_BUILTIN_VEC_UNPACKH,
-  ALTIVEC_BUILTIN_VEC_UNPACKL,
-  ALTIVEC_BUILTIN_VEC_VADDFP,
-  ALTIVEC_BUILTIN_VEC_VADDSBS,
-  ALTIVEC_BUILTIN_VEC_VADDSHS,
-  ALTIVEC_BUILTIN_VEC_VADDSWS,
-  ALTIVEC_BUILTIN_VEC_VADDUBM,
-  ALTIVEC_BUILTIN_VEC_VADDUBS,
-  ALTIVEC_BUILTIN_VEC_VADDUHM,
-  ALTIVEC_BUILTIN_VEC_VADDUHS,
-  ALTIVEC_BUILTIN_VEC_VADDUWM,
-  ALTIVEC_BUILTIN_VEC_VADDUWS,
-  ALTIVEC_BUILTIN_VEC_VAVGSB,
-  ALTIVEC_BUILTIN_VEC_VAVGSH,
-  ALTIVEC_BUILTIN_VEC_VAVGSW,
-  ALTIVEC_BUILTIN_VEC_VAVGUB,
-  ALTIVEC_BUILTIN_VEC_VAVGUH,
-  ALTIVEC_BUILTIN_VEC_VAVGUW,
-  ALTIVEC_BUILTIN_VEC_VCFSX,
-  ALTIVEC_BUILTIN_VEC_VCFUX,
-  ALTIVEC_BUILTIN_VEC_VCMPEQFP,
-  ALTIVEC_BUILTIN_VEC_VCMPEQUB,
-  ALTIVEC_BUILTIN_VEC_VCMPEQUH,
-  ALTIVEC_BUILTIN_VEC_VCMPEQUW,
-  ALTIVEC_BUILTIN_VEC_VCMPGTFP,
-  ALTIVEC_BUILTIN_VEC_VCMPGTSB,
-  ALTIVEC_BUILTIN_VEC_VCMPGTSH,
-  ALTIVEC_BUILTIN_VEC_VCMPGTSW,
-  ALTIVEC_BUILTIN_VEC_VCMPGTUB,
-  ALTIVEC_BUILTIN_VEC_VCMPGTUH,
-  ALTIVEC_BUILTIN_VEC_VCMPGTUW,
-  ALTIVEC_BUILTIN_VEC_VMAXFP,
-  ALTIVEC_BUILTIN_VEC_VMAXSB,
-  ALTIVEC_BUILTIN_VEC_VMAXSH,
-  ALTIVEC_BUILTIN_VEC_VMAXSW,
-  ALTIVEC_BUILTIN_VEC_VMAXUB,
-  ALTIVEC_BUILTIN_VEC_VMAXUH,
-  ALTIVEC_BUILTIN_VEC_VMAXUW,
-  ALTIVEC_BUILTIN_VEC_VMINFP,
-  ALTIVEC_BUILTIN_VEC_VMINSB,
-  ALTIVEC_BUILTIN_VEC_VMINSH,
-  ALTIVEC_BUILTIN_VEC_VMINSW,
-  ALTIVEC_BUILTIN_VEC_VMINUB,
-  ALTIVEC_BUILTIN_VEC_VMINUH,
-  ALTIVEC_BUILTIN_VEC_VMINUW,
-  ALTIVEC_BUILTIN_VEC_VMRGHB,
-  ALTIVEC_BUILTIN_VEC_VMRGHH,
-  ALTIVEC_BUILTIN_VEC_VMRGHW,
-  ALTIVEC_BUILTIN_VEC_VMRGLB,
-  ALTIVEC_BUILTIN_VEC_VMRGLH,
-  ALTIVEC_BUILTIN_VEC_VMRGLW,
-  ALTIVEC_BUILTIN_VEC_VMSUMMBM,
-  ALTIVEC_BUILTIN_VEC_VMSUMSHM,
-  ALTIVEC_BUILTIN_VEC_VMSUMSHS,
-  ALTIVEC_BUILTIN_VEC_VMSUMUBM,
-  ALTIVEC_BUILTIN_VEC_VMSUMUHM,
-  ALTIVEC_BUILTIN_VEC_VMSUMUHS,
-  ALTIVEC_BUILTIN_VEC_VMULESB,
-  ALTIVEC_BUILTIN_VEC_VMULESH,
-  ALTIVEC_BUILTIN_VEC_VMULEUB,
-  ALTIVEC_BUILTIN_VEC_VMULEUH,
-  ALTIVEC_BUILTIN_VEC_VMULOSB,
-  ALTIVEC_BUILTIN_VEC_VMULOSH,
-  ALTIVEC_BUILTIN_VEC_VMULOUB,
-  ALTIVEC_BUILTIN_VEC_VMULOUH,
-  ALTIVEC_BUILTIN_VEC_VPKSHSS,
-  ALTIVEC_BUILTIN_VEC_VPKSHUS,
-  ALTIVEC_BUILTIN_VEC_VPKSWSS,
-  ALTIVEC_BUILTIN_VEC_VPKSWUS,
-  ALTIVEC_BUILTIN_VEC_VPKUHUM,
-  ALTIVEC_BUILTIN_VEC_VPKUHUS,
-  ALTIVEC_BUILTIN_VEC_VPKUWUM,
-  ALTIVEC_BUILTIN_VEC_VPKUWUS,
-  ALTIVEC_BUILTIN_VEC_VRLB,
-  ALTIVEC_BUILTIN_VEC_VRLH,
-  ALTIVEC_BUILTIN_VEC_VRLW,
-  ALTIVEC_BUILTIN_VEC_VSLB,
-  ALTIVEC_BUILTIN_VEC_VSLH,
-  ALTIVEC_BUILTIN_VEC_VSLW,
-  ALTIVEC_BUILTIN_VEC_VSPLTB,
-  ALTIVEC_BUILTIN_VEC_VSPLTH,
-  ALTIVEC_BUILTIN_VEC_VSPLTW,
-  ALTIVEC_BUILTIN_VEC_VSRAB,
-  ALTIVEC_BUILTIN_VEC_VSRAH,
-  ALTIVEC_BUILTIN_VEC_VSRAW,
-  ALTIVEC_BUILTIN_VEC_VSRB,
-  ALTIVEC_BUILTIN_VEC_VSRH,
-  ALTIVEC_BUILTIN_VEC_VSRW,
-  ALTIVEC_BUILTIN_VEC_VSUBFP,
-  ALTIVEC_BUILTIN_VEC_VSUBSBS,
-  ALTIVEC_BUILTIN_VEC_VSUBSHS,
-  ALTIVEC_BUILTIN_VEC_VSUBSWS,
-  ALTIVEC_BUILTIN_VEC_VSUBUBM,
-  ALTIVEC_BUILTIN_VEC_VSUBUBS,
-  ALTIVEC_BUILTIN_VEC_VSUBUHM,
-  ALTIVEC_BUILTIN_VEC_VSUBUHS,
-  ALTIVEC_BUILTIN_VEC_VSUBUWM,
-  ALTIVEC_BUILTIN_VEC_VSUBUWS,
-  ALTIVEC_BUILTIN_VEC_VSUM4SBS,
-  ALTIVEC_BUILTIN_VEC_VSUM4SHS,
-  ALTIVEC_BUILTIN_VEC_VSUM4UBS,
-  ALTIVEC_BUILTIN_VEC_VUPKHPX,
-  ALTIVEC_BUILTIN_VEC_VUPKHSB,
-  ALTIVEC_BUILTIN_VEC_VUPKHSH,
-  ALTIVEC_BUILTIN_VEC_VUPKLPX,
-  ALTIVEC_BUILTIN_VEC_VUPKLSB,
-  ALTIVEC_BUILTIN_VEC_VUPKLSH,
-  ALTIVEC_BUILTIN_VEC_XOR,
-  ALTIVEC_BUILTIN_VEC_STEP,
-  ALTIVEC_BUILTIN_VEC_PROMOTE,
-  ALTIVEC_BUILTIN_VEC_INSERT,
-  ALTIVEC_BUILTIN_VEC_SPLATS,
-  ALTIVEC_BUILTIN_OVERLOADED_LAST = ALTIVEC_BUILTIN_VEC_SPLATS,
-
-  /* SPE builtins.  */
-  SPE_BUILTIN_EVADDW,
-  SPE_BUILTIN_EVAND,
-  SPE_BUILTIN_EVANDC,
-  SPE_BUILTIN_EVDIVWS,
-  SPE_BUILTIN_EVDIVWU,
-  SPE_BUILTIN_EVEQV,
-  SPE_BUILTIN_EVFSADD,
-  SPE_BUILTIN_EVFSDIV,
-  SPE_BUILTIN_EVFSMUL,
-  SPE_BUILTIN_EVFSSUB,
-  SPE_BUILTIN_EVLDDX,
-  SPE_BUILTIN_EVLDHX,
-  SPE_BUILTIN_EVLDWX,
-  SPE_BUILTIN_EVLHHESPLATX,
-  SPE_BUILTIN_EVLHHOSSPLATX,
-  SPE_BUILTIN_EVLHHOUSPLATX,
-  SPE_BUILTIN_EVLWHEX,
-  SPE_BUILTIN_EVLWHOSX,
-  SPE_BUILTIN_EVLWHOUX,
-  SPE_BUILTIN_EVLWHSPLATX,
-  SPE_BUILTIN_EVLWWSPLATX,
-  SPE_BUILTIN_EVMERGEHI,
-  SPE_BUILTIN_EVMERGEHILO,
-  SPE_BUILTIN_EVMERGELO,
-  SPE_BUILTIN_EVMERGELOHI,
-  SPE_BUILTIN_EVMHEGSMFAA,
-  SPE_BUILTIN_EVMHEGSMFAN,
-  SPE_BUILTIN_EVMHEGSMIAA,
-  SPE_BUILTIN_EVMHEGSMIAN,
-  SPE_BUILTIN_EVMHEGUMIAA,
-  SPE_BUILTIN_EVMHEGUMIAN,
-  SPE_BUILTIN_EVMHESMF,
-  SPE_BUILTIN_EVMHESMFA,
-  SPE_BUILTIN_EVMHESMFAAW,
-  SPE_BUILTIN_EVMHESMFANW,
-  SPE_BUILTIN_EVMHESMI,
-  SPE_BUILTIN_EVMHESMIA,
-  SPE_BUILTIN_EVMHESMIAAW,
-  SPE_BUILTIN_EVMHESMIANW,
-  SPE_BUILTIN_EVMHESSF,
-  SPE_BUILTIN_EVMHESSFA,
-  SPE_BUILTIN_EVMHESSFAAW,
-  SPE_BUILTIN_EVMHESSFANW,
-  SPE_BUILTIN_EVMHESSIAAW,
-  SPE_BUILTIN_EVMHESSIANW,
-  SPE_BUILTIN_EVMHEUMI,
-  SPE_BUILTIN_EVMHEUMIA,
-  SPE_BUILTIN_EVMHEUMIAAW,
-  SPE_BUILTIN_EVMHEUMIANW,
-  SPE_BUILTIN_EVMHEUSIAAW,
-  SPE_BUILTIN_EVMHEUSIANW,
-  SPE_BUILTIN_EVMHOGSMFAA,
-  SPE_BUILTIN_EVMHOGSMFAN,
-  SPE_BUILTIN_EVMHOGSMIAA,
-  SPE_BUILTIN_EVMHOGSMIAN,
-  SPE_BUILTIN_EVMHOGUMIAA,
-  SPE_BUILTIN_EVMHOGUMIAN,
-  SPE_BUILTIN_EVMHOSMF,
-  SPE_BUILTIN_EVMHOSMFA,
-  SPE_BUILTIN_EVMHOSMFAAW,
-  SPE_BUILTIN_EVMHOSMFANW,
-  SPE_BUILTIN_EVMHOSMI,
-  SPE_BUILTIN_EVMHOSMIA,
-  SPE_BUILTIN_EVMHOSMIAAW,
-  SPE_BUILTIN_EVMHOSMIANW,
-  SPE_BUILTIN_EVMHOSSF,
-  SPE_BUILTIN_EVMHOSSFA,
-  SPE_BUILTIN_EVMHOSSFAAW,
-  SPE_BUILTIN_EVMHOSSFANW,
-  SPE_BUILTIN_EVMHOSSIAAW,
-  SPE_BUILTIN_EVMHOSSIANW,
-  SPE_BUILTIN_EVMHOUMI,
-  SPE_BUILTIN_EVMHOUMIA,
-  SPE_BUILTIN_EVMHOUMIAAW,
-  SPE_BUILTIN_EVMHOUMIANW,
-  SPE_BUILTIN_EVMHOUSIAAW,
-  SPE_BUILTIN_EVMHOUSIANW,
-  SPE_BUILTIN_EVMWHSMF,
-  SPE_BUILTIN_EVMWHSMFA,
-  SPE_BUILTIN_EVMWHSMI,
-  SPE_BUILTIN_EVMWHSMIA,
-  SPE_BUILTIN_EVMWHSSF,
-  SPE_BUILTIN_EVMWHSSFA,
-  SPE_BUILTIN_EVMWHUMI,
-  SPE_BUILTIN_EVMWHUMIA,
-  SPE_BUILTIN_EVMWLSMIAAW,
-  SPE_BUILTIN_EVMWLSMIANW,
-  SPE_BUILTIN_EVMWLSSIAAW,
-  SPE_BUILTIN_EVMWLSSIANW,
-  SPE_BUILTIN_EVMWLUMI,
-  SPE_BUILTIN_EVMWLUMIA,
-  SPE_BUILTIN_EVMWLUMIAAW,
-  SPE_BUILTIN_EVMWLUMIANW,
-  SPE_BUILTIN_EVMWLUSIAAW,
-  SPE_BUILTIN_EVMWLUSIANW,
-  SPE_BUILTIN_EVMWSMF,
-  SPE_BUILTIN_EVMWSMFA,
-  SPE_BUILTIN_EVMWSMFAA,
-  SPE_BUILTIN_EVMWSMFAN,
-  SPE_BUILTIN_EVMWSMI,
-  SPE_BUILTIN_EVMWSMIA,
-  SPE_BUILTIN_EVMWSMIAA,
-  SPE_BUILTIN_EVMWSMIAN,
-  SPE_BUILTIN_EVMWHSSFAA,
-  SPE_BUILTIN_EVMWSSF,
-  SPE_BUILTIN_EVMWSSFA,
-  SPE_BUILTIN_EVMWSSFAA,
-  SPE_BUILTIN_EVMWSSFAN,
-  SPE_BUILTIN_EVMWUMI,
-  SPE_BUILTIN_EVMWUMIA,
-  SPE_BUILTIN_EVMWUMIAA,
-  SPE_BUILTIN_EVMWUMIAN,
-  SPE_BUILTIN_EVNAND,
-  SPE_BUILTIN_EVNOR,
-  SPE_BUILTIN_EVOR,
-  SPE_BUILTIN_EVORC,
-  SPE_BUILTIN_EVRLW,
-  SPE_BUILTIN_EVSLW,
-  SPE_BUILTIN_EVSRWS,
-  SPE_BUILTIN_EVSRWU,
-  SPE_BUILTIN_EVSTDDX,
-  SPE_BUILTIN_EVSTDHX,
-  SPE_BUILTIN_EVSTDWX,
-  SPE_BUILTIN_EVSTWHEX,
-  SPE_BUILTIN_EVSTWHOX,
-  SPE_BUILTIN_EVSTWWEX,
-  SPE_BUILTIN_EVSTWWOX,
-  SPE_BUILTIN_EVSUBFW,
-  SPE_BUILTIN_EVXOR,
-  SPE_BUILTIN_EVABS,
-  SPE_BUILTIN_EVADDSMIAAW,
-  SPE_BUILTIN_EVADDSSIAAW,
-  SPE_BUILTIN_EVADDUMIAAW,
-  SPE_BUILTIN_EVADDUSIAAW,
-  SPE_BUILTIN_EVCNTLSW,
-  SPE_BUILTIN_EVCNTLZW,
-  SPE_BUILTIN_EVEXTSB,
-  SPE_BUILTIN_EVEXTSH,
-  SPE_BUILTIN_EVFSABS,
-  SPE_BUILTIN_EVFSCFSF,
-  SPE_BUILTIN_EVFSCFSI,
-  SPE_BUILTIN_EVFSCFUF,
-  SPE_BUILTIN_EVFSCFUI,
-  SPE_BUILTIN_EVFSCTSF,
-  SPE_BUILTIN_EVFSCTSI,
-  SPE_BUILTIN_EVFSCTSIZ,
-  SPE_BUILTIN_EVFSCTUF,
-  SPE_BUILTIN_EVFSCTUI,
-  SPE_BUILTIN_EVFSCTUIZ,
-  SPE_BUILTIN_EVFSNABS,
-  SPE_BUILTIN_EVFSNEG,
-  SPE_BUILTIN_EVMRA,
-  SPE_BUILTIN_EVNEG,
-  SPE_BUILTIN_EVRNDW,
-  SPE_BUILTIN_EVSUBFSMIAAW,
-  SPE_BUILTIN_EVSUBFSSIAAW,
-  SPE_BUILTIN_EVSUBFUMIAAW,
-  SPE_BUILTIN_EVSUBFUSIAAW,
-  SPE_BUILTIN_EVADDIW,
-  SPE_BUILTIN_EVLDD,
-  SPE_BUILTIN_EVLDH,
-  SPE_BUILTIN_EVLDW,
-  SPE_BUILTIN_EVLHHESPLAT,
-  SPE_BUILTIN_EVLHHOSSPLAT,
-  SPE_BUILTIN_EVLHHOUSPLAT,
-  SPE_BUILTIN_EVLWHE,
-  SPE_BUILTIN_EVLWHOS,
-  SPE_BUILTIN_EVLWHOU,
-  SPE_BUILTIN_EVLWHSPLAT,
-  SPE_BUILTIN_EVLWWSPLAT,
-  SPE_BUILTIN_EVRLWI,
-  SPE_BUILTIN_EVSLWI,
-  SPE_BUILTIN_EVSRWIS,
-  SPE_BUILTIN_EVSRWIU,
-  SPE_BUILTIN_EVSTDD,
-  SPE_BUILTIN_EVSTDH,
-  SPE_BUILTIN_EVSTDW,
-  SPE_BUILTIN_EVSTWHE,
-  SPE_BUILTIN_EVSTWHO,
-  SPE_BUILTIN_EVSTWWE,
-  SPE_BUILTIN_EVSTWWO,
-  SPE_BUILTIN_EVSUBIFW,
-
-  /* Compares.  */
-  SPE_BUILTIN_EVCMPEQ,
-  SPE_BUILTIN_EVCMPGTS,
-  SPE_BUILTIN_EVCMPGTU,
-  SPE_BUILTIN_EVCMPLTS,
-  SPE_BUILTIN_EVCMPLTU,
-  SPE_BUILTIN_EVFSCMPEQ,
-  SPE_BUILTIN_EVFSCMPGT,
-  SPE_BUILTIN_EVFSCMPLT,
-  SPE_BUILTIN_EVFSTSTEQ,
-  SPE_BUILTIN_EVFSTSTGT,
-  SPE_BUILTIN_EVFSTSTLT,
-
-  /* EVSEL compares.  */
-  SPE_BUILTIN_EVSEL_CMPEQ,
-  SPE_BUILTIN_EVSEL_CMPGTS,
-  SPE_BUILTIN_EVSEL_CMPGTU,
-  SPE_BUILTIN_EVSEL_CMPLTS,
-  SPE_BUILTIN_EVSEL_CMPLTU,
-  SPE_BUILTIN_EVSEL_FSCMPEQ,
-  SPE_BUILTIN_EVSEL_FSCMPGT,
-  SPE_BUILTIN_EVSEL_FSCMPLT,
-  SPE_BUILTIN_EVSEL_FSTSTEQ,
-  SPE_BUILTIN_EVSEL_FSTSTGT,
-  SPE_BUILTIN_EVSEL_FSTSTLT,
-
-  SPE_BUILTIN_EVSPLATFI,
-  SPE_BUILTIN_EVSPLATI,
-  SPE_BUILTIN_EVMWHSSMAA,
-  SPE_BUILTIN_EVMWHSMFAA,
-  SPE_BUILTIN_EVMWHSMIAA,
-  SPE_BUILTIN_EVMWHUSIAA,
-  SPE_BUILTIN_EVMWHUMIAA,
-  SPE_BUILTIN_EVMWHSSFAN,
-  SPE_BUILTIN_EVMWHSSIAN,
-  SPE_BUILTIN_EVMWHSMFAN,
-  SPE_BUILTIN_EVMWHSMIAN,
-  SPE_BUILTIN_EVMWHUSIAN,
-  SPE_BUILTIN_EVMWHUMIAN,
-  SPE_BUILTIN_EVMWHGSSFAA,
-  SPE_BUILTIN_EVMWHGSMFAA,
-  SPE_BUILTIN_EVMWHGSMIAA,
-  SPE_BUILTIN_EVMWHGUMIAA,
-  SPE_BUILTIN_EVMWHGSSFAN,
-  SPE_BUILTIN_EVMWHGSMFAN,
-  SPE_BUILTIN_EVMWHGSMIAN,
-  SPE_BUILTIN_EVMWHGUMIAN,
-  SPE_BUILTIN_MTSPEFSCR,
-  SPE_BUILTIN_MFSPEFSCR,
-  SPE_BUILTIN_BRINC,
-
-  /* PAIRED builtins.  */
-  PAIRED_BUILTIN_DIVV2SF3,
-  PAIRED_BUILTIN_ABSV2SF2,
-  PAIRED_BUILTIN_NEGV2SF2,
-  PAIRED_BUILTIN_SQRTV2SF2,
-  PAIRED_BUILTIN_ADDV2SF3,
-  PAIRED_BUILTIN_SUBV2SF3,
-  PAIRED_BUILTIN_RESV2SF2,
-  PAIRED_BUILTIN_MULV2SF3,
-  PAIRED_BUILTIN_MSUB,
-  PAIRED_BUILTIN_MADD,
-  PAIRED_BUILTIN_NMSUB,
-  PAIRED_BUILTIN_NMADD,
-  PAIRED_BUILTIN_NABSV2SF2,
-  PAIRED_BUILTIN_SUM0,
-  PAIRED_BUILTIN_SUM1,
-  PAIRED_BUILTIN_MULS0,
-  PAIRED_BUILTIN_MULS1,
-  PAIRED_BUILTIN_MERGE00,
-  PAIRED_BUILTIN_MERGE01,
-  PAIRED_BUILTIN_MERGE10,
-  PAIRED_BUILTIN_MERGE11,
-  PAIRED_BUILTIN_MADDS0,
-  PAIRED_BUILTIN_MADDS1,
-  PAIRED_BUILTIN_STX,
-  PAIRED_BUILTIN_LX,
-  PAIRED_BUILTIN_SELV2SF4,
-  PAIRED_BUILTIN_CMPU0,
-  PAIRED_BUILTIN_CMPU1,
-
-  RS6000_BUILTIN_RECIP,
-  RS6000_BUILTIN_RECIPF,
-  RS6000_BUILTIN_RSQRTF,
-  RS6000_BUILTIN_BSWAP_HI,
-
-  /* VSX builtins.  */
-  VSX_BUILTIN_LXSDX,
-  VSX_BUILTIN_LXVD2X,
-  VSX_BUILTIN_LXVDSX,
-  VSX_BUILTIN_LXVW4X,
-  VSX_BUILTIN_STXSDX,
-  VSX_BUILTIN_STXVD2X,
-  VSX_BUILTIN_STXVW4X,
-  VSX_BUILTIN_XSABSDP,
-  VSX_BUILTIN_XSADDDP,
-  VSX_BUILTIN_XSCMPODP,
-  VSX_BUILTIN_XSCMPUDP,
-  VSX_BUILTIN_XSCPSGNDP,
-  VSX_BUILTIN_XSCVDPSP,
-  VSX_BUILTIN_XSCVDPSXDS,
-  VSX_BUILTIN_XSCVDPSXWS,
-  VSX_BUILTIN_XSCVDPUXDS,
-  VSX_BUILTIN_XSCVDPUXWS,
-  VSX_BUILTIN_XSCVSPDP,
-  VSX_BUILTIN_XSCVSXDDP,
-  VSX_BUILTIN_XSCVUXDDP,
-  VSX_BUILTIN_XSDIVDP,
-  VSX_BUILTIN_XSMADDADP,
-  VSX_BUILTIN_XSMADDMDP,
-  VSX_BUILTIN_XSMAXDP,
-  VSX_BUILTIN_XSMINDP,
-  VSX_BUILTIN_XSMOVDP,
-  VSX_BUILTIN_XSMSUBADP,
-  VSX_BUILTIN_XSMSUBMDP,
-  VSX_BUILTIN_XSMULDP,
-  VSX_BUILTIN_XSNABSDP,
-  VSX_BUILTIN_XSNEGDP,
-  VSX_BUILTIN_XSNMADDADP,
-  VSX_BUILTIN_XSNMADDMDP,
-  VSX_BUILTIN_XSNMSUBADP,
-  VSX_BUILTIN_XSNMSUBMDP,
-  VSX_BUILTIN_XSRDPI,
-  VSX_BUILTIN_XSRDPIC,
-  VSX_BUILTIN_XSRDPIM,
-  VSX_BUILTIN_XSRDPIP,
-  VSX_BUILTIN_XSRDPIZ,
-  VSX_BUILTIN_XSREDP,
-  VSX_BUILTIN_XSRSQRTEDP,
-  VSX_BUILTIN_XSSQRTDP,
-  VSX_BUILTIN_XSSUBDP,
-  VSX_BUILTIN_CPSGNDP,
-  VSX_BUILTIN_CPSGNSP,
-  VSX_BUILTIN_XSTDIVDP_FE,
-  VSX_BUILTIN_XSTDIVDP_FG,
-  VSX_BUILTIN_XSTSQRTDP_FE,
-  VSX_BUILTIN_XSTSQRTDP_FG,
-  VSX_BUILTIN_XVABSDP,
-  VSX_BUILTIN_XVABSSP,
-  VSX_BUILTIN_XVADDDP,
-  VSX_BUILTIN_XVADDSP,
-  VSX_BUILTIN_XVCMPEQDP,
-  VSX_BUILTIN_XVCMPEQSP,
-  VSX_BUILTIN_XVCMPGEDP,
-  VSX_BUILTIN_XVCMPGESP,
-  VSX_BUILTIN_XVCMPGTDP,
-  VSX_BUILTIN_XVCMPGTSP,
-  VSX_BUILTIN_XVCMPEQDP_P,
-  VSX_BUILTIN_XVCMPEQSP_P,
-  VSX_BUILTIN_XVCMPGEDP_P,
-  VSX_BUILTIN_XVCMPGESP_P,
-  VSX_BUILTIN_XVCMPGTDP_P,
-  VSX_BUILTIN_XVCMPGTSP_P,
-  VSX_BUILTIN_XVCPSGNDP,
-  VSX_BUILTIN_XVCPSGNSP,
-  VSX_BUILTIN_XVCVDPSP,
-  VSX_BUILTIN_XVCVDPSXDS,
-  VSX_BUILTIN_XVCVDPSXWS,
-  VSX_BUILTIN_XVCVDPUXDS,
-  VSX_BUILTIN_XVCVDPUXDS_UNS,
-  VSX_BUILTIN_XVCVDPUXWS,
-  VSX_BUILTIN_XVCVSPDP,
-  VSX_BUILTIN_XVCVSPSXDS,
-  VSX_BUILTIN_XVCVSPSXWS,
-  VSX_BUILTIN_XVCVSPUXDS,
-  VSX_BUILTIN_XVCVSPUXWS,
-  VSX_BUILTIN_XVCVSXDDP,
-  VSX_BUILTIN_XVCVSXDSP,
-  VSX_BUILTIN_XVCVSXWDP,
-  VSX_BUILTIN_XVCVSXWSP,
-  VSX_BUILTIN_XVCVUXDDP,
-  VSX_BUILTIN_XVCVUXDDP_UNS,
-  VSX_BUILTIN_XVCVUXDSP,
-  VSX_BUILTIN_XVCVUXWDP,
-  VSX_BUILTIN_XVCVUXWSP,
-  VSX_BUILTIN_XVDIVDP,
-  VSX_BUILTIN_XVDIVSP,
-  VSX_BUILTIN_XVMADDDP,
-  VSX_BUILTIN_XVMADDSP,
-  VSX_BUILTIN_XVMAXDP,
-  VSX_BUILTIN_XVMAXSP,
-  VSX_BUILTIN_XVMINDP,
-  VSX_BUILTIN_XVMINSP,
-  VSX_BUILTIN_XVMSUBDP,
-  VSX_BUILTIN_XVMSUBSP,
-  VSX_BUILTIN_XVMULDP,
-  VSX_BUILTIN_XVMULSP,
-  VSX_BUILTIN_XVNABSDP,
-  VSX_BUILTIN_XVNABSSP,
-  VSX_BUILTIN_XVNEGDP,
-  VSX_BUILTIN_XVNEGSP,
-  VSX_BUILTIN_XVNMADDDP,
-  VSX_BUILTIN_XVNMADDSP,
-  VSX_BUILTIN_XVNMSUBDP,
-  VSX_BUILTIN_XVNMSUBSP,
-  VSX_BUILTIN_XVRDPI,
-  VSX_BUILTIN_XVRDPIC,
-  VSX_BUILTIN_XVRDPIM,
-  VSX_BUILTIN_XVRDPIP,
-  VSX_BUILTIN_XVRDPIZ,
-  VSX_BUILTIN_XVREDP,
-  VSX_BUILTIN_XVRESP,
-  VSX_BUILTIN_XVRSPI,
-  VSX_BUILTIN_XVRSPIC,
-  VSX_BUILTIN_XVRSPIM,
-  VSX_BUILTIN_XVRSPIP,
-  VSX_BUILTIN_XVRSPIZ,
-  VSX_BUILTIN_XVRSQRTEDP,
-  VSX_BUILTIN_XVRSQRTESP,
-  VSX_BUILTIN_XVSQRTDP,
-  VSX_BUILTIN_XVSQRTSP,
-  VSX_BUILTIN_XVSUBDP,
-  VSX_BUILTIN_XVSUBSP,
-  VSX_BUILTIN_XVTDIVDP_FE,
-  VSX_BUILTIN_XVTDIVDP_FG,
-  VSX_BUILTIN_XVTDIVSP_FE,
-  VSX_BUILTIN_XVTDIVSP_FG,
-  VSX_BUILTIN_XVTSQRTDP_FE,
-  VSX_BUILTIN_XVTSQRTDP_FG,
-  VSX_BUILTIN_XVTSQRTSP_FE,
-  VSX_BUILTIN_XVTSQRTSP_FG,
-  VSX_BUILTIN_XXSEL_2DI,
-  VSX_BUILTIN_XXSEL_2DF,
-  VSX_BUILTIN_XXSEL_4SI,
-  VSX_BUILTIN_XXSEL_4SF,
-  VSX_BUILTIN_XXSEL_8HI,
-  VSX_BUILTIN_XXSEL_16QI,
-  VSX_BUILTIN_XXSEL_2DI_UNS,
-  VSX_BUILTIN_XXSEL_4SI_UNS,
-  VSX_BUILTIN_XXSEL_8HI_UNS,
-  VSX_BUILTIN_XXSEL_16QI_UNS,
-  VSX_BUILTIN_VPERM_2DI,
-  VSX_BUILTIN_VPERM_2DF,
-  VSX_BUILTIN_VPERM_4SI,
-  VSX_BUILTIN_VPERM_4SF,
-  VSX_BUILTIN_VPERM_8HI,
-  VSX_BUILTIN_VPERM_16QI,
-  VSX_BUILTIN_VPERM_2DI_UNS,
-  VSX_BUILTIN_VPERM_4SI_UNS,
-  VSX_BUILTIN_VPERM_8HI_UNS,
-  VSX_BUILTIN_VPERM_16QI_UNS,
-  VSX_BUILTIN_XXPERMDI_2DF,
-  VSX_BUILTIN_XXPERMDI_2DI,
-  VSX_BUILTIN_XXPERMDI_4SF,
-  VSX_BUILTIN_XXPERMDI_4SI,
-  VSX_BUILTIN_XXPERMDI_8HI,
-  VSX_BUILTIN_XXPERMDI_16QI,
-  VSX_BUILTIN_CONCAT_2DF,
-  VSX_BUILTIN_CONCAT_2DI,
-  VSX_BUILTIN_SET_2DF,
-  VSX_BUILTIN_SET_2DI,
-  VSX_BUILTIN_SPLAT_2DF,
-  VSX_BUILTIN_SPLAT_2DI,
-  VSX_BUILTIN_XXMRGHW_4SF,
-  VSX_BUILTIN_XXMRGHW_4SI,
-  VSX_BUILTIN_XXMRGLW_4SF,
-  VSX_BUILTIN_XXMRGLW_4SI,
-  VSX_BUILTIN_XXSLDWI_16QI,
-  VSX_BUILTIN_XXSLDWI_8HI,
-  VSX_BUILTIN_XXSLDWI_4SI,
-  VSX_BUILTIN_XXSLDWI_4SF,
-  VSX_BUILTIN_XXSLDWI_2DI,
-  VSX_BUILTIN_XXSLDWI_2DF,
-  VSX_BUILTIN_VEC_INIT_V2DF,
-  VSX_BUILTIN_VEC_INIT_V2DI,
-  VSX_BUILTIN_VEC_SET_V2DF,
-  VSX_BUILTIN_VEC_SET_V2DI,
-  VSX_BUILTIN_VEC_EXT_V2DF,
-  VSX_BUILTIN_VEC_EXT_V2DI,
-
-  /* VSX overloaded builtins, add the overloaded functions not present in
-     Altivec.  */
-  VSX_BUILTIN_VEC_MUL,
-  VSX_BUILTIN_OVERLOADED_FIRST = VSX_BUILTIN_VEC_MUL,
-  VSX_BUILTIN_VEC_MSUB,
-  VSX_BUILTIN_VEC_NMADD,
-  VSX_BUITLIN_VEC_NMSUB,
-  VSX_BUILTIN_VEC_DIV,
-  VSX_BUILTIN_VEC_XXMRGHW,
-  VSX_BUILTIN_VEC_XXMRGLW,
-  VSX_BUILTIN_VEC_XXPERMDI,
-  VSX_BUILTIN_VEC_XXSLDWI,
-  VSX_BUILTIN_VEC_XXSPLTD,
-  VSX_BUILTIN_VEC_XXSPLTW,
-  VSX_BUILTIN_OVERLOADED_LAST = VSX_BUILTIN_VEC_XXSPLTW,
+  RS6000_BTC_MISC,		/* assume builtin can do anything */
+  RS6000_BTC_CONST,		/* builtin is a 'const' function.  */
+  RS6000_BTC_PURE,		/* builtin is a 'pure' function.  */
+  RS6000_BTC_FP_PURE		/* builtin is 'pure' if rounding math.  */
+};
 
-  /* Combined VSX/Altivec builtins.  */
-  VECTOR_BUILTIN_FLOAT_V4SI_V4SF,
-  VECTOR_BUILTIN_UNSFLOAT_V4SI_V4SF,
-  VECTOR_BUILTIN_FIX_V4SF_V4SI,
-  VECTOR_BUILTIN_FIXUNS_V4SF_V4SI,
+/* Convenience macros to document the instruction type.  */
+#define RS6000_BTC_MEM	RS6000_BTC_MISC	/* load/store touches memory */
+#define RS6000_BTC_SAT	RS6000_BTC_MISC	/* VMX saturate sets VSCR register */
+
+#undef RS6000_BUILTIN
+#undef RS6000_BUILTIN_EQUATE
+#define RS6000_BUILTIN(NAME, TYPE) NAME,
+#define RS6000_BUILTIN_EQUATE(NAME, VALUE) NAME = VALUE,
 
-  /* Power7 builtins, that aren't VSX instructions.  */
-  POWER7_BUILTIN_BPERMD,
+enum rs6000_builtins
+{
+#include "rs6000-builtin.def"
 
   RS6000_BUILTIN_COUNT
 };
 
+#undef RS6000_BUILTIN
+#undef RS6000_BUILTIN_EQUATE
+
 enum rs6000_builtin_type_index
 {
   RS6000_BTI_NOT_OPAQUE,
Index: gcc/config/rs6000/altivec.md
===================================================================
--- gcc/config/rs6000/altivec.md	(revision 152864)
+++ gcc/config/rs6000/altivec.md	(working copy)
@@ -1,5 +1,5 @@
 ;; AltiVec patterns.
-;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008
+;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
 ;; Free Software Foundation, Inc.
 ;; Contributed by Aldy Hernandez (aldy@quesejoda.com)
 
Index: gcc/testsuite/gcc.target/powerpc/altivec-4.c
===================================================================
--- gcc/testsuite/gcc.target/powerpc/altivec-4.c	(revision 152864)
+++ gcc/testsuite/gcc.target/powerpc/altivec-4.c	(working copy)
@@ -4,7 +4,7 @@
 
 #define vector __attribute__((vector_size(16)))
 
-static int vector x, y;
+static int vector x, y, z;
 
 static vector signed int i,j;
 static vector signed short s,t;
@@ -20,7 +20,7 @@ static int int1, int2;
 void
 b()
 {
-  __builtin_altivec_vadduwm (x, y);
+  z = __builtin_altivec_vadduwm (x, y);
 
   /* Make sure the predicates accept correct argument types.  */
   
Index: gcc/testsuite/g++.dg/ext/altivec-2.C
===================================================================
--- gcc/testsuite/g++.dg/ext/altivec-2.C	(revision 152864)
+++ gcc/testsuite/g++.dg/ext/altivec-2.C	(working copy)
@@ -7,6 +7,8 @@
 
 #include <altivec.h>
 
+vector unsigned char use_lvsl;
+
 int main (int argc, const char * argv[])
 {
   int i = 0;
@@ -17,7 +19,7 @@ int main (int argc, const char * argv[])
   vec_dst(&cv, i, 0);
   v = vec_ld(0, &cv);	
   v = vec_lde(0, &cf);
-  vec_lvsl(0, &cf);
+  use_lvsl = vec_lvsl(0, &cf);
   
   return 0;
 }

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH, committed] PR target/23983, fix builtin attributes on  powerpc
  2009-10-15 20:59           ` [PATCH, committed] PR target/23983, fix " Michael Meissner
@ 2009-10-19 22:24             ` Jakub Jelinek
  2009-10-20 16:29               ` Jakub Jelinek
  0 siblings, 1 reply; 15+ messages in thread
From: Jakub Jelinek @ 2009-10-19 22:24 UTC (permalink / raw)
  To: Michael Meissner, David Edelsohn, gcc-patches

On Thu, Oct 15, 2009 at 04:56:48PM -0400, Michael Meissner wrote:
> I just committed the following patch.  When I was doing a backport of the vsx
> changes to 4.3, I noticed that I had not updated the copyright years for two of
> the files I checked in July, so I updated these as well.

This sets the wrong bit for RS6000_BTC_CONST - __attribute__((const))
functions have TREE_READONLY set on the decl, instead of TREE_CONSTANT, and
that's e.g. what flags_from_decl_or_type is testing.

Untested so far...

2009-10-19  Jakub Jelinek  <jakub@redhat.com>

	* config/rs6000/rs6000.c (def_builtin): Set TREE_READONLY instead
	of TREE_CONSTANT.

--- gcc/config/rs6000/rs6000.c	2009-10-15 23:23:25.000000000 +0200
+++ gcc/config/rs6000/rs6000.c	2009-10-19 23:51:26.000000000 +0200
@@ -8530,7 +8530,7 @@ def_builtin (int mask, const char *name,
 
 	  /* const function, function only depends on the inputs.  */
 	case RS6000_BTC_CONST:
-	  TREE_CONSTANT (t) = 1;
+	  TREE_READONLY (t) = 1;
 	  TREE_NOTHROW (t) = 1;
 	  break;
 
@@ -8554,7 +8554,7 @@ def_builtin (int mask, const char *name,
 	      DECL_IS_NOVOPS (t) = 1;
 	    }
 	  else
-	    TREE_CONSTANT (t) = 1;
+	    TREE_READONLY (t) = 1;
 	  break;
 	}
     }


	Jakub

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH, committed] PR target/23983, fix builtin attributes on  powerpc
  2009-10-19 22:24             ` Jakub Jelinek
@ 2009-10-20 16:29               ` Jakub Jelinek
  2009-10-20 17:56                 ` David Edelsohn
  0 siblings, 1 reply; 15+ messages in thread
From: Jakub Jelinek @ 2009-10-20 16:29 UTC (permalink / raw)
  To: David Edelsohn; +Cc: Michael Meissner, gcc-patches

On Tue, Oct 20, 2009 at 12:06:16AM +0200, Jakub Jelinek wrote:
> On Thu, Oct 15, 2009 at 04:56:48PM -0400, Michael Meissner wrote:
> > I just committed the following patch.  When I was doing a backport of the vsx
> > changes to 4.3, I noticed that I had not updated the copyright years for two of
> > the files I checked in July, so I updated these as well.
> 
> This sets the wrong bit for RS6000_BTC_CONST - __attribute__((const))
> functions have TREE_READONLY set on the decl, instead of TREE_CONSTANT, and
> that's e.g. what flags_from_decl_or_type is testing.
> 
> Untested so far...
> 
> 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
> 
> 	* config/rs6000/rs6000.c (def_builtin): Set TREE_READONLY instead
> 	of TREE_CONSTANT.

Bootstrapped/regtested fine on powerpc64-linux/trunk (--with-cpu=default32,
-m32/-m64 testing) and in 4.4-RH branch backport (both powerpc64-linux
--with-cpu=default32 and --with-cpu=default64).

Ok for trunk?

> --- gcc/config/rs6000/rs6000.c	2009-10-15 23:23:25.000000000 +0200
> +++ gcc/config/rs6000/rs6000.c	2009-10-19 23:51:26.000000000 +0200
> @@ -8530,7 +8530,7 @@ def_builtin (int mask, const char *name,
>  
>  	  /* const function, function only depends on the inputs.  */
>  	case RS6000_BTC_CONST:
> -	  TREE_CONSTANT (t) = 1;
> +	  TREE_READONLY (t) = 1;
>  	  TREE_NOTHROW (t) = 1;
>  	  break;
>  
> @@ -8554,7 +8554,7 @@ def_builtin (int mask, const char *name,
>  	      DECL_IS_NOVOPS (t) = 1;
>  	    }
>  	  else
> -	    TREE_CONSTANT (t) = 1;
> +	    TREE_READONLY (t) = 1;
>  	  break;
>  	}
>      }

	Jakub

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH, committed] PR target/23983, fix builtin attributes on   powerpc
  2009-10-20 16:29               ` Jakub Jelinek
@ 2009-10-20 17:56                 ` David Edelsohn
  0 siblings, 0 replies; 15+ messages in thread
From: David Edelsohn @ 2009-10-20 17:56 UTC (permalink / raw)
  To: Jakub Jelinek; +Cc: Michael Meissner, gcc-patches

On Tue, Oct 20, 2009 at 12:21 PM, Jakub Jelinek <jakub@redhat.com> wrote:

>> 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
>>
>>       * config/rs6000/rs6000.c (def_builtin): Set TREE_READONLY instead
>>       of TREE_CONSTANT.
>
> Bootstrapped/regtested fine on powerpc64-linux/trunk (--with-cpu=default32,
> -m32/-m64 testing) and in 4.4-RH branch backport (both powerpc64-linux
> --with-cpu=default32 and --with-cpu=default64).
>
> Ok for trunk?

Yes, okay.  Thanks for catching this!

I am so glad that meaning of flags in the IL is self-evident ... not.

Thanks, David

^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2009-10-20 17:51 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-10-01 18:58 [PATCH] Fix builtin attributes on powerpc Michael Meissner
2009-10-01 19:01 ` Andrew Pinski
2009-10-01 19:14   ` Michael Meissner
2009-10-13 13:36 ` David Edelsohn
2009-10-13 20:40   ` Michael Meissner
2009-10-14  0:02     ` David Edelsohn
2009-10-14  9:58       ` Richard Guenther
2009-10-14 15:21       ` Michael Meissner
2009-10-14 16:19         ` Richard Guenther
2009-10-14 20:08         ` David Edelsohn
2009-10-14 22:21           ` Michael Meissner
2009-10-15 20:59           ` [PATCH, committed] PR target/23983, fix " Michael Meissner
2009-10-19 22:24             ` Jakub Jelinek
2009-10-20 16:29               ` Jakub Jelinek
2009-10-20 17:56                 ` David Edelsohn

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).