rs6000: Add the __dmr1024 opaque type.

The changes have been bootstrapped and regression tested on
powerpc64le-linux.

Register __dmr1024 as a new 1024-bit opaque built-in type, following
the same pattern as the existing __vector_pair (OOmode) and
__vector_quad (XOmode) opaque types.  __dmr1024 uses TDOmode, which
was already added in a previous commit ("rs6000: Add TDOmode
support"), and is intended to hold the contents of a Dense Math
Register (DMR) when the Dense Math Facility (-mdense-math) is
enabled.

2026-07-22  Manjunath Matti  <mmatti@linux.ibm.com>

gcc/
	* config/rs6000/rs6000.h (RS6000_BTI_dmr1024): New enumerator.
	(RS6000_BTI_ptr_dmr1024): New enumerator.
	(dmr1024_type_node): New macro.
	(ptr_dmr1024_type_node): New macro.
	* config/rs6000/rs6000-builtin.cc (rs6000_type_string): Handle
	dmr1024_type_node.
	(rs6000_init_builtins): Register the __dmr1024 opaque type and
	its pointer-to-const variant, with 512-bit alignment.
	* config/rs6000/rs6000.cc (rs6000_mangle_type): Handle
	dmr1024_type_node.
	(rs6000_invalid_conversion): Reject conversions to/from TDOmode.
	(rs6000_opaque_type_invalid_use_p): Gate __vector_quad and
	__vector_pair on TARGET_MMA and __dmr1024 on TARGET_DMF
	independently, and require -mdense-math for __dmr1024.

gcc/testsuite/
	* gcc.target/powerpc/dmr1024-alignment.c: New test case.
	* gcc.target/powerpc/dmr1024-compile.c: Likewise.
	* gcc.target/powerpc/dmr1024-invalid-use-1.c: Likewise.
	* gcc.target/powerpc/dmr1024-invalid-use-2.c: Likewise.
	* gcc.target/powerpc/dmf-no-mma.c: Likewise.
8 files changed