rs6000: Fix ICE with __int128 vector built-ins and -mno-vsx
Fixes an Internal Compiler Error when using __int128 vector built-ins with -mno-vsx on POWER.
This commit resolves an Internal Compiler Error (ICE) that occurred when using __int128 vector built-in functions with the -mno-vsx flag on POWER architectures. The built-ins have been moved to the VSX-specific stanza, ensuring they are only enabled when VSX is supported, and providing a proper diagnostic instead of crashing the compiler.
In Details
Corrects the erroneous gating of __int128 vector built-ins (e.g., __builtin_altivec_vperm_1ti) in rs6000-builtins.def. Previously, these were accessible even when TARGET_VSX was not defined, leading to type demotion to TImode and subsequent ICEs when attempting to use VSX-specific operations. Moving them to the [vsx] stanza gates them correctly behind TARGET_VSX, aligning with other VSX vector built-ins and providing diagnostics for unsupported use.
- Internal Compiler Error (ICE)
- A condition where the compiler encounters an unrecoverable error during its internal processing, leading to a crash. ICEs are typically bugs in the compiler itself.
- VSX
- Vector Scalar Extension, an instruction set extension for PowerPC architectures that provides SIMD (Single Instruction, Multiple Data) capabilities for both floating-point and integer operations.
- __int128
- A GCC extension that provides support for 128-bit integers. When used in a vector context, it refers to vectors holding multiple 128-bit elements.
- TImode
- A GCC internal machine mode representing a 128-bit integer type. When
__int128vector types are not supported, they may be demoted to this mode.