https://gcc.gnu.org/g:e7863b53e0af67bc07089b74d8d5b5ca62a6270a
commit r16-9221-ge7863b53e0af67bc07089b74d8d5b5ca62a6270a Author: Kishan Parmar <[email protected]> Date: Tue Jun 23 11:17:21 2026 +0530 rs6000: Add future-altivec builtin stanza predicate This patch adds infrastructure support for future-altivec as a builtin-stanza predicate for PowerPC. This provides a framework for defining builtins that require both -mcpu=future and -maltivec options. The future-altivec stanza can be used to add AltiVec-specific builtins for future PowerPC ISA extensions. 2026-06-23 Kishan Parmar <[email protected]> gcc/ChangeLog: * config/rs6000/rs6000-builtin.cc (rs6000_invalid_builtin): Handle ENB_FUTURE_ALTIVEC and issue a diagnostic requiring -mcpu=future and -maltivec. (rs6000_builtin_is_supported): Check TARGET_FUTURE && TARGET_ALTIVEC for ENB_FUTURE_ALTIVEC built-ins. * config/rs6000/rs6000-gen-builtins.cc (enum bif_stanza): Add BSTZ_FUTURE_ALTIVEC entry. (stanza_map): Add future-altivec stanza mapping. (enable_string): Add ENB_FUTURE_ALTIVEC. (write_decls): Add ENB_FUTURE_ALTIVEC to the bif_enable enum in the generated header file. (cherry picked from commit 521441173d3efbafaab8a5114b42b28d14b4808b) Diff: --- gcc/config/rs6000/rs6000-builtin.cc | 6 ++++++ gcc/config/rs6000/rs6000-gen-builtins.cc | 10 +++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/gcc/config/rs6000/rs6000-builtin.cc b/gcc/config/rs6000/rs6000-builtin.cc index 8d3ac5f443b7..cf6e77c64a1e 100644 --- a/gcc/config/rs6000/rs6000-builtin.cc +++ b/gcc/config/rs6000/rs6000-builtin.cc @@ -142,6 +142,10 @@ rs6000_invalid_builtin (enum rs6000_gen_builtins fncode) case ENB_FUTURE: error ("%qs requires the %qs option", name, "-mcpu=future"); break; + case ENB_FUTURE_ALTIVEC: + error ("%qs requires the %qs and %qs options", name, "-mcpu=future", + "-maltivec"); + break; default: case ENB_ALWAYS: gcc_unreachable (); @@ -199,6 +203,8 @@ rs6000_builtin_is_supported (enum rs6000_gen_builtins fncode) return TARGET_MMA; case ENB_FUTURE: return TARGET_FUTURE; + case ENB_FUTURE_ALTIVEC: + return TARGET_FUTURE && TARGET_ALTIVEC; default: gcc_unreachable (); } diff --git a/gcc/config/rs6000/rs6000-gen-builtins.cc b/gcc/config/rs6000/rs6000-gen-builtins.cc index 7436404cff58..32c1f4ef83d9 100644 --- a/gcc/config/rs6000/rs6000-gen-builtins.cc +++ b/gcc/config/rs6000/rs6000-gen-builtins.cc @@ -233,6 +233,7 @@ enum bif_stanza BSTZ_P10_64, BSTZ_MMA, BSTZ_FUTURE, + BSTZ_FUTURE_ALTIVEC, NUMBIFSTANZAS }; @@ -267,7 +268,8 @@ static stanza_entry stanza_map[NUMBIFSTANZAS] = { "power10", BSTZ_P10 }, { "power10-64", BSTZ_P10_64 }, { "mma", BSTZ_MMA }, - { "future", BSTZ_FUTURE } + { "future", BSTZ_FUTURE }, + { "future-altivec", BSTZ_FUTURE_ALTIVEC } }; static const char *enable_string[NUMBIFSTANZAS] = @@ -293,7 +295,8 @@ static const char *enable_string[NUMBIFSTANZAS] = "ENB_P10", "ENB_P10_64", "ENB_MMA", - "ENB_FUTURE" + "ENB_FUTURE", + "ENB_FUTURE_ALTIVEC" }; /* Function modifiers provide special handling for const, pure, and fpmath @@ -2253,7 +2256,8 @@ write_decls (void) fprintf (header_file, " ENB_P10,\n"); fprintf (header_file, " ENB_P10_64,\n"); fprintf (header_file, " ENB_MMA,\n"); - fprintf (header_file, " ENB_FUTURE\n"); + fprintf (header_file, " ENB_FUTURE,\n"); + fprintf (header_file, " ENB_FUTURE_ALTIVEC\n"); fprintf (header_file, "};\n\n"); fprintf (header_file, "#define PPC_MAXRESTROPNDS 3\n");
