break;
case FIXED_CST:
- case POLY_INT_CST:
gcc_unreachable (); /* Not supported in C++. */
break;
case FIXED_CST:
case IDENTIFIER_NODE:
- case POLY_INT_CST:
case SSA_NAME:
case TARGET_MEM_REF:
case TRANSLATION_UNIT_DECL:
break;
case POLY_INT_CST:
- gcc_unreachable (); /* Not supported in C++. */
+ if (streaming_p ())
+ for (unsigned ix = 0; ix != NUM_POLY_INT_COEFFS; ix++)
+ WT (POLY_INT_CST_COEFF (t, ix));
+ break;
case REAL_CST:
if (streaming_p ())
break;
case POLY_INT_CST:
- /* Not suported in C++. */
- return false;
+ for (unsigned ix = 0; ix != NUM_POLY_INT_COEFFS; ix++)
+ RT (POLY_INT_CST_COEFF (t, ix));
+ break;
case REAL_CST:
if (const void *bytes = buf (sizeof (real_value)))
if (streaming_p ())
{
poly_uint64 nunits = TYPE_VECTOR_SUBPARTS (type);
- /* to_constant asserts that only coeff[0] is of interest. */
- wu (static_cast<unsigned HOST_WIDE_INT> (nunits.to_constant ()));
+ for (unsigned ix = 0; ix != NUM_POLY_INT_COEFFS; ix++)
+ wu (nunits.coeffs[ix]);
}
break;
}
case VECTOR_TYPE:
{
- unsigned HOST_WIDE_INT nunits = wu ();
+ poly_uint64 nunits;
+ for (unsigned ix = 0; ix != NUM_POLY_INT_COEFFS; ix++)
+ nunits.coeffs[ix] = wu ();
if (!get_overrun ())
- res = build_vector_type (res, static_cast<poly_int64> (nunits));
+ res = build_vector_type (res, nunits);
}
break;
}
some global trees are lazily created and we don't want that to
mess with our syndrome of fixed trees. */
unsigned crc = 0;
- vec_alloc (fixed_trees, 200);
+ vec_alloc (fixed_trees, 250);
dump () && dump ("+Creating globals");
/* Insert the TRANSLATION_UNIT_DECL. */
dump () && dump ("+%u", v);
}
}
+ /* OS- and machine-specific types are dynamically registered at
+ runtime, so cannot be part of global_tree_arys. */
+ registered_builtin_types && dump ("") && dump ("+\tB:");
+ for (tree t = registered_builtin_types; t; t = TREE_CHAIN (t))
+ {
+ unsigned v = maybe_add_global (TREE_VALUE (t), crc);
+ dump () && dump ("+%u", v);
+ }
global_crc = crc32_unsigned (crc, fixed_trees->length ());
dump ("") && dump ("Created %u unique globals, crc=%x",
fixed_trees->length (), global_crc);
--- /dev/null
+// PR c++/111224
+// { dg-do compile { target aarch64*-*-* } }
+// { dg-require-effective-target aarch64_asm_sve_ok }
+// { dg-additional-options "-fmodules-ts -march=armv8.2-a+sve" }
+
+module;
+
+// We can't do a header unit of this right now because this
+// uses target attributes, that we don't yet support.
+// See also PR c++/108080.
+#include <arm_sve.h>
+
+export module M;
+
+export inline void foo(svbool_t x, svfloat16_t f) {
+ svabs_f16_x(x, f);
+}
--- /dev/null
+// PR c++/98688
+// { dg-do compile { target powerpc*-*-* } }
+// { dg-additional-options "-fmodules-ts -mcpu=power10 -mmma" }
+
+export module mma_foo0;
+
+typedef unsigned char vec_t __attribute__((vector_size(16)));
+
+export void
+foo0 (__vector_quad *dst, vec_t *vec, __vector_pair *pvecp)
+{
+ __vector_quad acc;
+ __vector_pair vecp0 = *pvecp;
+ vec_t vec1 = vec[1];
+
+ __builtin_mma_xvf64ger (&acc, vecp0, vec1);
+ __builtin_mma_xvf64gerpp (&acc, vecp0, vec1);
+ __builtin_mma_xvf64gerpn (&acc, vecp0, vec1);
+ dst[0] = acc;
+}