[gcc(refs/users/wschmidt/heads/builtins7)] rs6000: Write output to the vector definition include file

William Schmidt wschmidt@gcc.gnu.org
Sun Mar 7 16:44:44 GMT 2021


https://gcc.gnu.org/g:7c9625978437fef4bc431bf0ace4cfa6fbc80a04

commit 7c9625978437fef4bc431bf0ace4cfa6fbc80a04
Author: Bill Schmidt <wschmidt@linux.ibm.com>
Date:   Wed Mar 3 16:33:52 2021 -0600

    rs6000: Write output to the vector definition include file
    
    2021-03-03  Bill Schmidt  <wschmidt@linux.ibm.com>
    
    gcc/
            * config/rs6000/rs6000-gen-builtins.c (write_defines_file):
            Implement.

Diff:
---
 gcc/config/rs6000/rs6000-gen-builtins.c | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/gcc/config/rs6000/rs6000-gen-builtins.c b/gcc/config/rs6000/rs6000-gen-builtins.c
index c2fa94f374d..d6f03e66f3d 100644
--- a/gcc/config/rs6000/rs6000-gen-builtins.c
+++ b/gcc/config/rs6000/rs6000-gen-builtins.c
@@ -2029,6 +2029,33 @@ write_init_file ()
 static int
 write_defines_file ()
 {
+  fprintf (defines_file, "#ifndef _RS6000_VECDEFINES_H\n");
+  fprintf (defines_file, "#define _RS6000_VECDEFINES_H 1\n\n");
+  fprintf (defines_file, "#if defined(_ARCH_PPC64) && defined (_ARCH_PWR9)\n");
+  fprintf (defines_file, "  #define _ARCH_PPC64_PWR9 1\n");
+  fprintf (defines_file, "#endif\n\n");
+  for (int i = 0; i < num_ovld_stanzas; i++)
+    if (strcmp (ovld_stanzas[i].extern_name, "SKIP"))
+      {
+	if (ovld_stanzas[i].ifdef)
+	  fprintf (defines_file, "#ifdef %s\n", ovld_stanzas[i].ifdef);
+	fprintf (defines_file, "#define %s %s\n",
+		 ovld_stanzas[i].extern_name,
+		 ovld_stanzas[i].intern_name);
+	if (ovld_stanzas[i].ifdef)
+	  fprintf (defines_file, "#endif\n");
+      }
+
+  /* Write some temporary defines to use until we make the switch.  */
+  fprintf (defines_file, "\n/* #### TEMPORARY ####  */\n");
+  fprintf (defines_file,
+	   "#define __builtin_vec_splat_s8 __builtin_altivec_vspltisb\n");
+  fprintf (defines_file,
+	   "#define __builtin_vec_splat_s16 __builtin_altivec_vspltish\n");
+  fprintf (defines_file,
+	   "#define __builtin_vec_splat_s32 __builtin_altivec_vspltisw\n");
+
+  fprintf (defines_file, "\n#endif\n");
   return 1;
 }


More information about the Gcc-cvs mailing list