diff options
Diffstat (limited to 'gcc/testsuite')
57 files changed, 681 insertions, 666 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index dd5ccac..6964114 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,158 @@ +2025-10-16 David Malcolm <dmalcolm@redhat.com> + + * gcc.dg/plugin/diagnostic_plugin_test_graphs.cc + (report_diag_with_graphs): Port from set_attr to set_property. + +2025-10-15 Andrew MacLeod <amacleod@redhat.com> + + PR tree-optimization/121468 + PR tree-optimization/121206 + PR tree-optimization/122200 + * gcc.dg/pr121468.c: New. + * gcc.dg/pr122200.c: New. + +2025-10-15 Richard Earnshaw <rearnsha@arm.com> + + PR target/118460 + * gcc.target/arm/armv8_2-fp16-move-1.c: Adjust expected output. + * gcc.target/arm/armv8_2-fp16-move-2.c: Likewise. + +2025-10-15 Andrew Pinski <andrew.pinski@oss.qualcomm.com> + + PR tree-optimization/122037 + * gcc.dg/tree-ssa/vla-1.c: New test. + +2025-10-15 Alice Carlotti <alice.carlotti@arm.com> + + * gcc.target/aarch64/acle/rwsr-armv8p9.c: Fix incorrect encoding. + +2025-10-15 Sebastian Pop <spop@nvidia.com> + + * gcc.dg/autopar/runtime-auto.c: New test. + +2025-10-15 Christophe Lyon <christophe.lyon@linaro.org> + + PR target/122189 + * gcc.target/arm/mve/intrinsics/vadcq-check-carry.c: New test. + * gcc.target/arm/mve/intrinsics/vadcq_m_s32.c: Adjust instructions + order. + * gcc.target/arm/mve/intrinsics/vadcq_m_u32.c: Likewise. + * gcc.target/arm/mve/intrinsics/vsbcq_m_s32.c: Likewise. + * gcc.target/arm/mve/intrinsics/vsbcq_m_u32.c: Likewise. + +2025-10-15 Roger Sayle <roger@nextmovesoftware.com> + + PR rtl-optimization/122266 + * gcc.target/i386/pr122266.c: New test case. + +2025-10-14 Patrick Palka <ppalka@redhat.com> + + PR c++/122192 + * g++.dg/template/dependent-base6.C: Verify mem-initializer-id + qualified name lookup is type-only too. + +2025-10-14 Tamar Christina <tamar.christina@arm.com> + + PR tree-optimization/121949 + * gcc.dg/vect/pr121949_1.c: New test. + * gcc.dg/vect/pr121949_2.c: New test. + * gcc.dg/vect/pr121949_3.c: New test. + +2025-10-14 Richard Biener <rguenther@suse.de> + + * gcc.dg/vect/pr120687-1.c: Adjust. + * gcc.dg/vect/pr120687-2.c: Likewise. + * gcc.dg/vect/pr120687-3.c: Likewise. + +2025-10-14 Haochen Jiang <haochen.jiang@intel.com> + + * g++.dg/other/i386-2.C: Remove AMX-TRANSPOSE test. + * g++.dg/other/i386-3.C: Ditto. + * gcc.target/i386/amx-check.h: Ditto. + * gcc.target/i386/amxmovrs-asmatt-1.c: Ditto. + * gcc.target/i386/amxmovrs-asmintel-1.c: Ditto. + * gcc.target/i386/funcspec-56.inc: Ditto. + * gcc.target/i386/sse-12.c: Ditto. + * gcc.target/i386/sse-13.c: Ditto. + * gcc.target/i386/sse-14.c: Ditto. + * gcc.target/i386/sse-22.c: Ditto. + * gcc.target/i386/sse-23.c: Ditto. + * lib/target-supports.exp: Ditto. + * gcc.target/i386/amxmovrs-2rpntlvwrs-2.c: Removed. + * gcc.target/i386/amxtranspose-2rpntlvw-2.c: Removed. + * gcc.target/i386/amxtranspose-asmatt-1.c: Removed. + * gcc.target/i386/amxtranspose-asmintel-1.c: Removed. + * gcc.target/i386/amxtranspose-conjtcmmimfp16ps-2.c: Removed. + * gcc.target/i386/amxtranspose-conjtfp16-2.c: Removed. + * gcc.target/i386/amxtranspose-tcmmimfp16ps-2.c: Removed. + * gcc.target/i386/amxtranspose-tcmmrlfp16ps-2.c: Removed. + * gcc.target/i386/amxtranspose-tdpbf16ps-2.c: Removed. + * gcc.target/i386/amxtranspose-tdpfp16ps-2.c: Removed. + * gcc.target/i386/amxtranspose-tmmultf32ps-2.c: Removed. + * gcc.target/i386/amxtranspose-transposed-2.c: Removed. + +2025-10-14 Andrew Pinski <andrew.pinski@oss.qualcomm.com> + + PR tree-optimization/122178 + * g++.dg/tree-ssa/cselim-1.C: New test. + +2025-10-14 Zhongyao Chen <chenzhongyao.hit@gmail.com> + + * gcc.target/riscv/predef-profiles-1.c: New test for __riscv_rvi20u64. + * gcc.target/riscv/predef-profiles-2.c: New test for __riscv_rvi20u32. + * gcc.target/riscv/predef-profiles-3.c: New test for __riscv_rva20u64. + * gcc.target/riscv/predef-profiles-4.c: New test for __riscv_rva22u64. + * gcc.target/riscv/predef-profiles-5.c: New test for __riscv_rva23u64. + * gcc.target/riscv/predef-profiles-6.c: New test for __riscv_rva23s64. + * gcc.target/riscv/predef-profiles-7.c: New test for __riscv_rvb23u64. + * gcc.target/riscv/predef-profiles-8.c: New test for __riscv_rvb23s64. + +2025-10-13 Eric Botcazou <ebotcazou@adacore.com> + + * gcc.dg/cpp/cpp.exp: Process .i files. + * gcc.dg/cpp/pr36674.i: Pass -Wno-implicit-int. + * gcc.dg/cpp/escape-3.i: New test. + +2025-10-13 Shreya Munnangi <smunnangi1@ventanamicro.com> + + PR target/120811 + * gcc.target/riscv/add-synthesis-1.c: Adjust const to fit in range. + * gcc.target/riscv/pr120811.c: Add new test case. + * gcc.target/riscv/sum-of-two-s12-const-1.c: Adjust const to fit in range. + +2025-10-13 Jeff Law <jlaw@ventanamicro.com> + + PR target/120674 + * gcc.target/riscv/pr120674.c: New test. + +2025-10-13 Jakub Jelinek <jakub@redhat.com> + + PR c++/122228 + * g++.dg/cpp1y/func_constexpr3.C: New test. + +2025-10-13 Gaius Mulley <gaiusmod2@gmail.com> + + PR modula2/122241 + * gm2/iso/fail/badconst.mod: New test. + * gm2/iso/fail/badtype.mod: New test. + * gm2/iso/fail/badvar.mod: New test. + +2025-10-13 Alex Coplan <alex.coplan@arm.com> + + PR tree-optimization/121772 + * gcc.target/aarch64/torture/pr121772.c: Add -fchecking to + dg-options. + +2025-10-13 Robin Dapp <rdapp@ventanamicro.com> + + PR target/118019 + * gcc.target/riscv/rvv/autovec/pr118019-2.c: New test. + +2025-10-13 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/121191 + * gfortran.dg/pdt_59.f03: New test. + 2025-10-12 Nathaniel Shead <nathanieloshead@gmail.com> PR c++/122163 diff --git a/gcc/testsuite/g++.dg/other/i386-2.C b/gcc/testsuite/g++.dg/other/i386-2.C index 88252ad..d4c73f5 100644 --- a/gcc/testsuite/g++.dg/other/i386-2.C +++ b/gcc/testsuite/g++.dg/other/i386-2.C @@ -1,5 +1,5 @@ /* { dg-do compile { target i?86-*-* x86_64-*-* } } */ -/* { dg-options "-O -pedantic-errors -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt -msha -mxsavec -mxsaves -mclflushopt -mclwb -mmwaitx -mclzero -mpku -msgx -mrdpid -mgfni -mpconfig -mwbnoinvd -menqcmd -mavx512vp2intersect -mserialize -mtsxldtrk -mamx-tile -mamx-int8 -mamx-bf16 -mkl -mwidekl -mavxvnni -mavxifma -mavxvnniint8 -mavxneconvert -mcmpccxadd -mamx-fp16 -mprefetchi -mraoint -mamx-complex -mavxvnniint16 -msm3 -msha512 -msm4 -mavx10.2 -mamx-avx512 -mamx-tf32 -mamx-transpose -mamx-fp8 -mmovrs -mamx-movrs" } */ +/* { dg-options "-O -pedantic-errors -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt -msha -mxsavec -mxsaves -mclflushopt -mclwb -mmwaitx -mclzero -mpku -msgx -mrdpid -mgfni -mpconfig -mwbnoinvd -menqcmd -mavx512vp2intersect -mserialize -mtsxldtrk -mamx-tile -mamx-int8 -mamx-bf16 -mkl -mwidekl -mavxvnni -mavxifma -mavxvnniint8 -mavxneconvert -mcmpccxadd -mamx-fp16 -mprefetchi -mraoint -mamx-complex -mavxvnniint16 -msm3 -msha512 -msm4 -mavx10.2 -mamx-avx512 -mamx-tf32 -mamx-fp8 -mmovrs -mamx-movrs" } */ /* { dg-skip-if "requires hosted libstdc++ for cstdlib malloc" { ! hostedlib } } */ /* Test that {,x,e,p,t,s,w,a,b,i}mmintrin.h, mm3dnow.h, fma4intrin.h, diff --git a/gcc/testsuite/g++.dg/other/i386-3.C b/gcc/testsuite/g++.dg/other/i386-3.C index a234e4f..e925607 100644 --- a/gcc/testsuite/g++.dg/other/i386-3.C +++ b/gcc/testsuite/g++.dg/other/i386-3.C @@ -1,5 +1,5 @@ /* { dg-do compile { target i?86-*-* x86_64-*-* } } */ -/* { dg-options "-O -fkeep-inline-functions -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt -msha -mxsavec -mxsaves -mclflushopt -mclwb -mmwaitx -mclzero -mpku -msgx -mrdpid -mgfni -mpconfig -mwbnoinvd -menqcmd -mavx512vp2intersect -mserialize -mtsxldtrk -mamx-tile -mamx-int8 -mamx-bf16 -mkl -mwidekl -mavxvnni -mavxifma -mavxvnniint8 -mavxneconvert -mcmpccxadd -mamx-fp16 -mprefetchi -mraoint -mamx-complex -mavxvnniint16 -msm3 -msha512 -msm4 -mavx10.2 -mamx-avx512 -mamx-tf32 -mamx-transpose -mamx-fp8 -mmovrs -mamx-movrs" } */ +/* { dg-options "-O -fkeep-inline-functions -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt -msha -mxsavec -mxsaves -mclflushopt -mclwb -mmwaitx -mclzero -mpku -msgx -mrdpid -mgfni -mpconfig -mwbnoinvd -menqcmd -mavx512vp2intersect -mserialize -mtsxldtrk -mamx-tile -mamx-int8 -mamx-bf16 -mkl -mwidekl -mavxvnni -mavxifma -mavxvnniint8 -mavxneconvert -mcmpccxadd -mamx-fp16 -mprefetchi -mraoint -mamx-complex -mavxvnniint16 -msm3 -msha512 -msm4 -mavx10.2 -mamx-avx512 -mamx-tf32 -mamx-fp8 -mmovrs -mamx-movrs" } */ /* { dg-skip-if "requires hosted libstdc++ for cstdlib malloc" { ! hostedlib } } */ /* Test that {,x,e,p,t,s,w,a,b,i}mmintrin.h, mm3dnow.h, fma4intrin.h, diff --git a/gcc/testsuite/g++.dg/template/dependent-base6.C b/gcc/testsuite/g++.dg/template/dependent-base6.C index b4bc5c2..9f2a7a2 100644 --- a/gcc/testsuite/g++.dg/template/dependent-base6.C +++ b/gcc/testsuite/g++.dg/template/dependent-base6.C @@ -8,5 +8,7 @@ struct A { struct S1 : A::B { }; // OK -template<class T> struct S2 : T::B { }; // OK, used to fail +template<class T> struct S2 : T::B { // OK, used to fail + S2() : T::B() { } // Also OK +}; template struct S2<A>; diff --git a/gcc/testsuite/g++.dg/tree-ssa/cselim-1.C b/gcc/testsuite/g++.dg/tree-ssa/cselim-1.C new file mode 100644 index 0000000..a621945 --- /dev/null +++ b/gcc/testsuite/g++.dg/tree-ssa/cselim-1.C @@ -0,0 +1,37 @@ +/* { dg-do compile { target c++11 } } */ +/* { dg-options "-O2 -fdump-tree-phiopt1-details -fdump-tree-optimized" } */ +/* PR tree-optimization/122178 */ +/* cselim/cselim-limited should be able to handle clobbers. */ + +#include <new> + +struct s1 +{ + bool t; +}; + +void f(s1 *a, bool b) +{ + if (b) + { + a = new(a)s1{1}; + } + else + { + a = new(a)s1{0}; + } +} + +/* + The above should be optimized in phiopt1 to: + *a = {CLOBBER(bob)}; + a->t = b; + */ + + +/* { dg-final { scan-tree-dump-times "factoring out stores" 1 "phiopt1" } } */ +/* { dg-final { scan-tree-dump-times "factoring out clobber" 1 "phiopt1" } } */ +/* { dg-final { scan-tree-dump-times " converted to straightline code" 1 "phiopt1" } } */ +/* { dg-final { scan-tree-dump-not "if " "phiopt1" } } */ +/* { dg-final { scan-tree-dump-not "if " "optimized" } } */ + diff --git a/gcc/testsuite/gcc.dg/autopar/runtime-auto.c b/gcc/testsuite/gcc.dg/autopar/runtime-auto.c new file mode 100644 index 0000000..c1a3131 --- /dev/null +++ b/gcc/testsuite/gcc.dg/autopar/runtime-auto.c @@ -0,0 +1,53 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -ftree-parallelize-loops -fdump-tree-parloops2-details" } */ + +void abort (void); + +#define N 1000 + +int a[N], b[N], c[N]; + +void +test_parallel_loop (void) +{ + int i; + + /* This loop should be auto-parallelized when -ftree-parallelize-loops + (without =number) is used for runtime thread detection via OMP_NUM_THREADS. */ + for (i = 0; i < N; i++) + a[i] = b[i] + c[i]; +} + +int +main (void) +{ + int i; + + for (i = 0; i < N; i++) + { + b[i] = i; + c[i] = i * 2; + } + + test_parallel_loop (); + + for (i = 0; i < N; i++) + { + if (a[i] != b[i] + c[i]) + abort (); + } + + return 0; +} + +/* Check that the loop is parallelized with runtime thread detection. */ +/* { dg-final { scan-tree-dump "parallelizing" "parloops2" } } */ + +/* Check that "#pragma omp parallel" is generated. */ +/* { dg-final { scan-tree-dump "pragma omp parallel" "parloops2" } } */ + +/* Check that instead of generating a num_threads(x) clause, the compiler calls + "__builtin_omp_get_num_threads" that will set the number of threads at + program execution time. */ +/* { dg-final { scan-tree-dump "__builtin_omp_get_num_threads" "parloops2" } } */ + diff --git a/gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_graphs.cc b/gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_graphs.cc index 7398a29..8ba576e 100644 --- a/gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_graphs.cc +++ b/gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_graphs.cc @@ -210,9 +210,8 @@ report_diag_with_graphs (location_t loc) g->set_description (desc); auto a = std::make_unique<diagnostic_node> (*g, "a"); auto b = std::make_unique<diagnostic_node> (*g, "b"); -#define KEY_PREFIX "/placeholder-prefix/" - b->set_attr (KEY_PREFIX, "color", "red"); -#undef KEY_PREFIX + const json::string_property color ("/placeholder-prefix/color"); + b->set_property (color, "red"); auto c = std::make_unique<diagnostic_node> (*g, "c"); c->set_label ("I am a node label"); diff --git a/gcc/testsuite/gcc.dg/pr121468.c b/gcc/testsuite/gcc.dg/pr121468.c new file mode 100644 index 0000000..07df274 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr121468.c @@ -0,0 +1,30 @@ +/* { dg-do compile } */ +/* { dg-options "-Os" } */ +int e, f, n; +static int a () { return e; } +void b () { while (a()); } +static int d () { return e; } +static void g (int h) { + if (e) + c: + if (d()) + goto i; + do { + if (f) + goto c; + goto k; + i: + h = 2147483647; + k: + e = 2147483646; + e = 6 + e; + do { + b (); + } while (1784828957 / f + e + (808 + h) > 0); + } while (1 % h); +} +void m () { g (-2); } +int main () { + if (n) + g (-1); +} diff --git a/gcc/testsuite/gcc.dg/pr122200.c b/gcc/testsuite/gcc.dg/pr122200.c new file mode 100644 index 0000000..cd770fc --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr122200.c @@ -0,0 +1,23 @@ +/* { dg-do compile } */ +/* { dg-options "-O3" } */ +/* { dg-additional-options "-mavx" { target { x86_64-*-* i?86-*-* } } } */ + + +int a, b; + +void f(float g[][5]) { + int c; + + for (c = 0; c != a; c++) + g[1][c] = c; + + for (int d; d; d++) + for (int e = 1; e != b; e++) { + for (c = 0; c != a; c++) { + g[0][1] = 1; + + if (g[1][c]) + g[1][c] = 1; + } + } +} diff --git a/gcc/testsuite/gcc.dg/torture/int-bwise-opt-1.c b/gcc/testsuite/gcc.dg/torture/int-bwise-opt-1.c new file mode 100644 index 0000000..ceea95b --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/int-bwise-opt-1.c @@ -0,0 +1,32 @@ +/* { dg-do compile } */ + +/* PR tree-optimization/122296 */ + +typedef unsigned type1; +typedef unsigned __attribute__((vector_size(sizeof(unsigned) ))) type2; +type1 g(type1 a, type1 b) +{ + type1 c = a == b; + type1 d = (a|b) == 0; + return c & d; +} + +type1 f(type1 a, type1 b) +{ + type1 c = a != b; + type1 d = (a|b) != 0; + return c | d; +} +type2 g2(type2 a, type2 b) +{ + type2 c = a == b; + type2 d = (a|b) == 0; + return c & d; +} + +type2 f2(type2 a, type2 b) +{ + type2 c = a != b; + type2 d = (a|b) != 0; + return c | d; +} diff --git a/gcc/testsuite/gcc.dg/tree-ssa/int-bwise-opt-vect01.c b/gcc/testsuite/gcc.dg/tree-ssa/int-bwise-opt-vect01.c new file mode 100644 index 0000000..bdcdbcc --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/int-bwise-opt-vect01.c @@ -0,0 +1,17 @@ +/* { dg-do compile } */ +/* { dg-options "-O1 -fdump-tree-forwprop1 -fdump-tree-optimized" } */ + +/* PR tree-optimization/122296 */ + +typedef unsigned type1 __attribute__((vector_size(sizeof(unsigned)))); + +type1 f(type1 a, type1 b) +{ + type1 c = a == b; + type1 d = (a|b) != 0; + return c | d; +} + +/* { dg-final { scan-tree-dump-not "VEC_COND_EXPR " "optimized" } } */ +/* { dg-final { scan-tree-dump-not "VEC_COND_EXPR " "forwprop1" } } */ + diff --git a/gcc/testsuite/gcc.dg/tree-ssa/vla-1.c b/gcc/testsuite/gcc.dg/tree-ssa/vla-1.c new file mode 100644 index 0000000..37b7514 --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/vla-1.c @@ -0,0 +1,15 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fdump-tree-optimized -fdump-tree-cddce1-details" } */ +/* PR tree-optimization/122037 */ + +void bar1 (char *, int) __attribute__((noreturn)); +void foo1 (int size) +{ + char temp[size]; + temp[size-1] = '\0'; + bar1 (temp, size); +} + +/* The call to __builtin_stack_save should have been removed. */ +/* { dg-final { scan-tree-dump "Deleting : __builtin_stack_save" "cddce1" } } */ +/* { dg-final { scan-tree-dump-not "__builtin_stack_save " "optimized" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/pr120687-1.c b/gcc/testsuite/gcc.dg/vect/pr120687-1.c index ce9cf63..ac684c0 100644 --- a/gcc/testsuite/gcc.dg/vect/pr120687-1.c +++ b/gcc/testsuite/gcc.dg/vect/pr120687-1.c @@ -11,6 +11,6 @@ frd (unsigned *p, unsigned *lastone) return sum; } -/* { dg-final { scan-tree-dump "reduction: detected reduction chain" "vect" } } */ +/* { dg-final { scan-tree-dump "Starting SLP discovery of reduction chain" "vect" } } */ /* { dg-final { scan-tree-dump-not "SLP discovery of reduction chain failed" "vect" } } */ /* { dg-final { scan-tree-dump "optimized: loop vectorized" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/pr120687-2.c b/gcc/testsuite/gcc.dg/vect/pr120687-2.c index dfc6dc7..25f0355 100644 --- a/gcc/testsuite/gcc.dg/vect/pr120687-2.c +++ b/gcc/testsuite/gcc.dg/vect/pr120687-2.c @@ -12,6 +12,6 @@ frd (float *p, float *lastone) return sum; } -/* { dg-final { scan-tree-dump "reduction: detected reduction chain" "vect" } } */ +/* { dg-final { scan-tree-dump "Starting SLP discovery of reduction chain" "vect" } } */ /* { dg-final { scan-tree-dump-not "SLP discovery of reduction chain failed" "vect" } } */ /* { dg-final { scan-tree-dump "optimized: loop vectorized" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/pr120687-3.c b/gcc/testsuite/gcc.dg/vect/pr120687-3.c index f20a66a..31a6c94 100644 --- a/gcc/testsuite/gcc.dg/vect/pr120687-3.c +++ b/gcc/testsuite/gcc.dg/vect/pr120687-3.c @@ -11,6 +11,6 @@ frd (float *p, float *lastone) return sum; } -/* { dg-final { scan-tree-dump "reduction: detected reduction chain" "vect" } } */ +/* { dg-final { scan-tree-dump "Starting SLP discovery of reduction chain" "vect" } } */ /* { dg-final { scan-tree-dump-not "SLP discovery of reduction chain failed" "vect" } } */ /* { dg-final { scan-tree-dump "optimized: loop vectorized" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/pr121949_1.c b/gcc/testsuite/gcc.dg/vect/pr121949_1.c new file mode 100644 index 0000000..9e8d41e --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/pr121949_1.c @@ -0,0 +1,45 @@ +#ifndef TYPE +#define TYPE short +#define MAX 16 +#define IV_TYPE char +#endif + +#include "tree-vect.h" + +__attribute__((noipa)) +void f(TYPE* acc) +{ + for (IV_TYPE row = 0; row < MAX; ++row) + acc[row] = acc[row] << row; +} + +__attribute__((noipa)) +void g(TYPE* acc) +{ +#pragma GCC novector + for (IV_TYPE row = 0; row < MAX; ++row) + acc[row] = acc[row] << row; +} + +int main () +{ + + check_vect (); + + TYPE acc1[MAX] = {}; + TYPE acc2[MAX] = {}; +#pragma GCC novector + for (int i = 0; i < MAX; i++) + acc1[i] = acc2[i] = i; + + f (acc1); + f (acc2); + +#pragma GCC novector + for (int i = 0; i < MAX; i++) + if (acc1[i] != acc2[i]) + __builtin_abort (); +} + +/* { dg-final { scan-tree-dump "LOOP VECTORIZED" "vect" { target { vect_var_shift && vect_int } } } } */ +/* { dg-final { scan-tree-dump "vect_recog_over_widening_pattern: detected" "vect" { target { vect_var_shift && vect_int } } } } */ diff --git a/gcc/testsuite/gcc.dg/vect/pr121949_2.c b/gcc/testsuite/gcc.dg/vect/pr121949_2.c new file mode 100644 index 0000000..f448eb6 --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/pr121949_2.c @@ -0,0 +1,45 @@ +#ifndef TYPE +#define TYPE int +#define MAX 32 +#define IV_TYPE short +#endif + +#include "tree-vect.h" + +__attribute__((noipa)) +void f(TYPE* acc) +{ + for (IV_TYPE row = 0; row < MAX; ++row) + acc[row] = acc[row] << row; +} + +__attribute__((noipa)) +void g(TYPE* acc) +{ +#pragma GCC novector + for (IV_TYPE row = 0; row < MAX; ++row) + acc[row] = acc[row] << row; +} + +int main () +{ + + check_vect (); + + TYPE acc1[MAX] = {}; + TYPE acc2[MAX] = {}; +#pragma GCC novector + for (int i = 0; i < MAX; i++) + acc1[i] = acc2[i] = i; + + f (acc1); + f (acc2); + +#pragma GCC novector + for (int i = 0; i < MAX; i++) + if (acc1[i] != acc2[i]) + __builtin_abort (); +} + +/* { dg-final { scan-tree-dump "LOOP VECTORIZED" "vect" { target { vect_var_shift && vect_int } } } } */ +/* { dg-final { scan-tree-dump-not "vect_recog_over_widening_pattern: detected" "vect" { target { vect_var_shift && vect_int } } } } */ diff --git a/gcc/testsuite/gcc.dg/vect/pr121949_3.c b/gcc/testsuite/gcc.dg/vect/pr121949_3.c new file mode 100644 index 0000000..b7e6a3d --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/pr121949_3.c @@ -0,0 +1,45 @@ +#ifndef TYPE +#define TYPE long long +#define MAX 64 +#define IV_TYPE int +#endif + +#include "tree-vect.h" + +__attribute__((noipa)) +void f(TYPE* acc) +{ + for (IV_TYPE row = 0; row < MAX; ++row) + acc[row] = acc[row] << row; +} + +__attribute__((noipa)) +void g(TYPE* acc) +{ +#pragma GCC novector + for (IV_TYPE row = 0; row < MAX; ++row) + acc[row] = acc[row] << row; +} + +int main () +{ + + check_vect (); + + TYPE acc1[MAX] = {}; + TYPE acc2[MAX] = {}; +#pragma GCC novector + for (int i = 0; i < MAX; i++) + acc1[i] = acc2[i] = i; + + f (acc1); + f (acc2); + +#pragma GCC novector + for (int i = 0; i < MAX; i++) + if (acc1[i] != acc2[i]) + __builtin_abort (); +} + +/* { dg-final { scan-tree-dump "LOOP VECTORIZED" "vect" { target { vect_var_shift && vect_int } } } } */ +/* { dg-final { scan-tree-dump "vect_recog_vector_vector_shift_pattern: detected" "vect" { target { vect_var_shift && vect_int } } } } */ diff --git a/gcc/testsuite/gcc.target/aarch64/acle/rwsr-armv8p9.c b/gcc/testsuite/gcc.target/aarch64/acle/rwsr-armv8p9.c index c49fbb5..1ff51de 100644 --- a/gcc/testsuite/gcc.target/aarch64/acle/rwsr-armv8p9.c +++ b/gcc/testsuite/gcc.target/aarch64/acle/rwsr-armv8p9.c @@ -72,7 +72,7 @@ readwrite_armv8p9a_sysregs (long long int a) a = __arm_rsr64 ("pmicfiltr_el0"); /* { { dg-final { scan-assembler "mrs\tx0, s3_3_c9_c6_0" } } */ a = __arm_rsr64 ("pmicntr_el0"); /* { { dg-final { scan-assembler "mrs\tx0, s3_3_c9_c4_0" } } */ a = __arm_rsr64 ("pmicntsvr_el1"); /* { { dg-final { scan-assembler "mrs\tx0, s2_0_c14_c12_0" } } */ - a = __arm_rsr64 ("pmsdsfr_el1"); /* { { dg-final { scan-assembler "mrs\tx0, s3_4_c9_c10_4" } } */ + a = __arm_rsr64 ("pmsdsfr_el1"); /* { { dg-final { scan-assembler "mrs\tx0, s3_0_c9_c10_4" } } */ a = __arm_rsr64 ("pmsscr_el1"); /* { { dg-final { scan-assembler "mrs\tx0, s3_0_c9_c13_3" } } */ a = __arm_rsr64 ("pmuacr_el1"); /* { { dg-final { scan-assembler "mrs\tx0, s3_0_c9_c14_4" } } */ a = __arm_rsr64 ("por_el0"); /* { { dg-final { scan-assembler "mrs\tx0, s3_3_c10_c2_4" } } */ diff --git a/gcc/testsuite/gcc.target/arm/armv8_2-fp16-move-1.c b/gcc/testsuite/gcc.target/arm/armv8_2-fp16-move-1.c index 444c4a3..02d7b51 100644 --- a/gcc/testsuite/gcc.target/arm/armv8_2-fp16-move-1.c +++ b/gcc/testsuite/gcc.target/arm/armv8_2-fp16-move-1.c @@ -134,8 +134,8 @@ test_select_8 (__fp16 a, __fp16 b, __fp16 c) } /* { dg-final { scan-assembler-times {vseleq\.f16\ts[0-9]+, s[0-9]+, s[0-9]+} 4 } } */ -/* { dg-final { scan-assembler-times {vselgt\.f16\ts[0-9]+, s[0-9]+, s[0-9]+} 1 } } */ -/* { dg-final { scan-assembler-times {vselge\.f16\ts[0-9]+, s[0-9]+, s[0-9]+} 1 } } */ +/* { dg-final { scan-assembler-times {vselgt\.f16\ts[0-9]+, s[0-9]+, s[0-9]+} 2 } } */ +/* { dg-final { scan-assembler-times {vselge\.f16\ts[0-9]+, s[0-9]+, s[0-9]+} 2 } } */ /* { dg-final { scan-assembler-not {vmov\.f16} } } */ diff --git a/gcc/testsuite/gcc.target/arm/armv8_2-fp16-move-2.c b/gcc/testsuite/gcc.target/arm/armv8_2-fp16-move-2.c index dff57ac..a249d71 100644 --- a/gcc/testsuite/gcc.target/arm/armv8_2-fp16-move-2.c +++ b/gcc/testsuite/gcc.target/arm/armv8_2-fp16-move-2.c @@ -8,4 +8,4 @@ test_select (__fp16 a, __fp16 b, __fp16 c) { return (a < b) ? b : c; } -/* { dg-final { scan-assembler "bx?(mi|pl)" } } */ +/* { dg-final { scan-assembler "vselgt\.f16\t" } } */ diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq-check-carry.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq-check-carry.c new file mode 100644 index 0000000..3a9b8de --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq-check-carry.c @@ -0,0 +1,48 @@ +/* { dg-do run } */ +/* { dg-require-effective-target arm_v8_1m_mve_ok } */ +/* { dg-require-effective-target arm_mve_hw } */ +/* { dg-options "-O2" } */ +/* { dg-add-options arm_v8_1m_mve } */ + +#include "arm_mve.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#include <inttypes.h> +#include <stdio.h> + +__attribute((noinline)) void print_uint32x4_t(const char *name, uint32x4_t val) +{ + printf("%s: %u, %u, %u, %u\n", + name, + vgetq_lane_u32(val, 0), + vgetq_lane_u32(val, 1), + vgetq_lane_u32(val, 2), + vgetq_lane_u32(val, 3)); +} + +void __attribute__ ((noinline)) test_2(void) +{ + uint32x4_t v12, v18, v108; + unsigned v17 = 0; + v12 = vdupq_n_u32(1); + v18 = vadcq_u32(v12, v12, &v17); + v17 = 1; + v108 = vadcq_u32(v12, v12, &v17); + print_uint32x4_t("v108", v108); +} + +int main() +{ + test_2(); + return 0; +} + +#ifdef __cplusplus +} +#endif + +/* { dg-output "v108: 3, 2, 2, 2" } */ +/* { dg-final { scan-assembler-times {\tvmrs\t(?:ip|fp|r[0-9]+), FPSCR_nzcvqc} 3 } } */ diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq_m_s32.c index 0d4cb77..c5a5878 100644 --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq_m_s32.c +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq_m_s32.c @@ -14,12 +14,12 @@ extern "C" { ** ... ** vmrs (?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?: @.*|) ** ... +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) +** ... ** bfi (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29, #1(?: @.*|) ** ... ** vmsr FPSCR_nzcvqc, (?:ip|fp|r[0-9]+)(?: @.*|) ** ... -** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -** ... ** vpst(?: @.*|) ** ... ** vadct.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) @@ -41,12 +41,12 @@ foo (int32x4_t inactive, int32x4_t a, int32x4_t b, unsigned *carry, mve_pred16_t ** ... ** vmrs (?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?: @.*|) ** ... +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) +** ... ** bfi (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29, #1(?: @.*|) ** ... ** vmsr FPSCR_nzcvqc, (?:ip|fp|r[0-9]+)(?: @.*|) ** ... -** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -** ... ** vpst(?: @.*|) ** ... ** vadct.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq_m_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq_m_u32.c index a0ba682..23908a4 100644 --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq_m_u32.c +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq_m_u32.c @@ -14,12 +14,12 @@ extern "C" { ** ... ** vmrs (?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?: @.*|) ** ... +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) +** ... ** bfi (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29, #1(?: @.*|) ** ... ** vmsr FPSCR_nzcvqc, (?:ip|fp|r[0-9]+)(?: @.*|) ** ... -** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -** ... ** vpst(?: @.*|) ** ... ** vadct.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) @@ -41,12 +41,12 @@ foo (uint32x4_t inactive, uint32x4_t a, uint32x4_t b, unsigned *carry, mve_pred1 ** ... ** vmrs (?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?: @.*|) ** ... +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) +** ... ** bfi (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29, #1(?: @.*|) ** ... ** vmsr FPSCR_nzcvqc, (?:ip|fp|r[0-9]+)(?: @.*|) ** ... -** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -** ... ** vpst(?: @.*|) ** ... ** vadct.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbcq_m_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbcq_m_s32.c index 7a33261..940e2ed 100644 --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbcq_m_s32.c +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbcq_m_s32.c @@ -14,12 +14,12 @@ extern "C" { ** ... ** vmrs (?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?: @.*|) ** ... +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) +** ... ** bfi (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29, #1(?: @.*|) ** ... ** vmsr FPSCR_nzcvqc, (?:ip|fp|r[0-9]+)(?: @.*|) ** ... -** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -** ... ** vpst(?: @.*|) ** ... ** vsbct.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) @@ -41,12 +41,12 @@ foo (int32x4_t inactive, int32x4_t a, int32x4_t b, unsigned *carry, mve_pred16_t ** ... ** vmrs (?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?: @.*|) ** ... +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) +** ... ** bfi (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29, #1(?: @.*|) ** ... ** vmsr FPSCR_nzcvqc, (?:ip|fp|r[0-9]+)(?: @.*|) ** ... -** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -** ... ** vpst(?: @.*|) ** ... ** vsbct.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbcq_m_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbcq_m_u32.c index 6090219..478b938 100644 --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbcq_m_u32.c +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbcq_m_u32.c @@ -14,12 +14,12 @@ extern "C" { ** ... ** vmrs (?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?: @.*|) ** ... +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) +** ... ** bfi (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29, #1(?: @.*|) ** ... ** vmsr FPSCR_nzcvqc, (?:ip|fp|r[0-9]+)(?: @.*|) ** ... -** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -** ... ** vpst(?: @.*|) ** ... ** vsbct.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) @@ -41,12 +41,12 @@ foo (uint32x4_t inactive, uint32x4_t a, uint32x4_t b, unsigned *carry, mve_pred1 ** ... ** vmrs (?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?: @.*|) ** ... +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) +** ... ** bfi (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29, #1(?: @.*|) ** ... ** vmsr FPSCR_nzcvqc, (?:ip|fp|r[0-9]+)(?: @.*|) ** ... -** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) -** ... ** vpst(?: @.*|) ** ... ** vsbct.i32 q[0-9]+, q[0-9]+, q[0-9]+(?: @.*|) diff --git a/gcc/testsuite/gcc.target/i386/amx-check.h b/gcc/testsuite/gcc.target/i386/amx-check.h index 0addb5b..c43a955 100644 --- a/gcc/testsuite/gcc.target/i386/amx-check.h +++ b/gcc/testsuite/gcc.target/i386/amx-check.h @@ -260,9 +260,6 @@ main () #ifdef AMX_TF32 && __builtin_cpu_supports ("amx-tf32") #endif -#ifdef AMX_TRANSPOSE - && __builtin_cpu_supports ("amx-transpose") -#endif #ifdef AMX_FP8 && __builtin_cpu_supports ("amx-fp8") #endif diff --git a/gcc/testsuite/gcc.target/i386/amxmovrs-2rpntlvwrs-2.c b/gcc/testsuite/gcc.target/i386/amxmovrs-2rpntlvwrs-2.c deleted file mode 100644 index 0093ef7..0000000 --- a/gcc/testsuite/gcc.target/i386/amxmovrs-2rpntlvwrs-2.c +++ /dev/null @@ -1,58 +0,0 @@ -/* { dg-do run { target { ! ia32 } } } */ -/* { dg-require-effective-target amx_movrs } */ -/* { dg-require-effective-target amx_transpose } */ -/* { dg-require-effective-target avx512fp16 } */ -/* { dg-options "-O2 -mamx-movrs -mamx-transpose -mavx512fp16 -mavx512bf16" } */ -#define AMX_MOVRS -#define AMX_TRANSPOSE -#define DO_TEST test_amx_movrs_t2rpntlvwrs -void test_amx_movrs_t2rpntlvwrs (); -#include "amx-helper.h" - -#define init_pair_tile_reg_and_src_z_t(tmm_num, src, buffer, ztype, wtype) \ -{ \ - init_pair_tile_src (tmm_num, &src, buffer, ztype); \ - _tile_2rpntlvwz##ztype##rs##wtype (tmm_num, buffer, _STRIDE); \ -} - -void test_amx_movrs_t2rpntlvwrs () -{ - __tilecfg_u cfg; - __tilepair src; - __tile ref_0, ref_1; - uint8_t buffer[2048]; - int i; - - init_tile_config (&cfg); - - for (i = 0; i < 2048; i++) - buffer[i] = i % 256; - - /* Check t2rpntlvwz0rs. */ - init_pair_tile_reg_and_src_z_t (0, src, buffer, 0,); - _tile_stored (0, ref_0.buf, _STRIDE); - _tile_stored (1, ref_1.buf, _STRIDE); - if (!check_pair_tile_register (&ref_0, &ref_1, &src)) - abort (); - - /* Check t2rpntlvwz1rs. */ - init_pair_tile_reg_and_src_z_t (0, src, buffer, 1,); - _tile_stored (0, ref_0.buf, _STRIDE); - _tile_stored (1, ref_1.buf, _STRIDE); - if (!check_pair_tile_register (&ref_0, &ref_1, &src)) - abort (); - - /* Check t2rpntlvwz0t1rs. */ - init_pair_tile_reg_and_src_z_t (0, src, buffer, 0, t1); - _tile_stored (0, ref_0.buf, _STRIDE); - _tile_stored (1, ref_1.buf, _STRIDE); - if (!check_pair_tile_register (&ref_0, &ref_1, &src)) - abort (); - - /* Check t2rpntlvwz1t1rs. */ - init_pair_tile_reg_and_src_z_t (0, src, buffer, 1, t1); - _tile_stored (0, ref_0.buf, _STRIDE); - _tile_stored (1, ref_1.buf, _STRIDE); - if (!check_pair_tile_register (&ref_0, &ref_1, &src)) - abort (); -} diff --git a/gcc/testsuite/gcc.target/i386/amxmovrs-asmatt-1.c b/gcc/testsuite/gcc.target/i386/amxmovrs-asmatt-1.c index d99a97f..339550b 100644 --- a/gcc/testsuite/gcc.target/i386/amxmovrs-asmatt-1.c +++ b/gcc/testsuite/gcc.target/i386/amxmovrs-asmatt-1.c @@ -1,11 +1,7 @@ /* { dg-do compile { target { ! ia32 } } } */ -/* { dg-options "-O2 -mamx-movrs -mamx-transpose" } */ +/* { dg-options "-O2 -mamx-movrs" } */ /* { dg-final { scan-assembler "tileloaddrs\[ \\t]+\[^\n\]*\(%\[a-z0-9\]*\,%\[a-z0-9\]*\,\[124\]\)+\[^\n\]*%tmm\[0-9\]" } } */ /* { dg-final { scan-assembler "tileloaddrst1\[ \\t]+\[^\n\]*\(%\[a-z0-9]*\,%\[a-z0-9\]*\,\[124\]\)+\[^\n\]*%tmm\[0-9\]" } } */ -/* { dg-final { scan-assembler "t2rpntlvwz0rs\[ \\t]+\[^\n\]*\(%\[a-z0-9\]*\,%\[a-z0-9\]*\,\[124\]\)+\[^\n\]*%tmm\[0-9\]" } } */ -/* { dg-final { scan-assembler "t2rpntlvwz0rst1\[ \\t]+\[^\n\]*\(%\[a-z0-9\]*\,%\[a-z0-9\]*\,\[124\]\)+\[^\n\]*%tmm\[0-9\]" } } */ -/* { dg-final { scan-assembler "t2rpntlvwz1rs\[ \\t]+\[^\n\]*\(%\[a-z0-9\]*\,%\[a-z0-9\]*\,\[124\]\)+\[^\n\]*%tmm\[0-9\]" } } */ -/* { dg-final { scan-assembler "t2rpntlvwz1rst1\[ \\t]+\[^\n\]*\(%\[a-z0-9\]*\,%\[a-z0-9\]*\,\[124\]\)+\[^\n\]*%tmm\[0-9\]" } } */ #include <immintrin.h> extern const void* base; @@ -20,8 +16,4 @@ void TEST() { _tile_loaddrs (TMM1, base, stride); _tile_loaddrst1 (TMM1, base, stride); - _tile_2rpntlvwz0rs (TMM0, base, stride); - _tile_2rpntlvwz0rst1 (TMM1, base, stride); - _tile_2rpntlvwz1rs (TMM2, base, stride); - _tile_2rpntlvwz1rst1 (TMM3, base, stride); } diff --git a/gcc/testsuite/gcc.target/i386/amxmovrs-asmintel-1.c b/gcc/testsuite/gcc.target/i386/amxmovrs-asmintel-1.c index 6a33986..6a522b5 100644 --- a/gcc/testsuite/gcc.target/i386/amxmovrs-asmintel-1.c +++ b/gcc/testsuite/gcc.target/i386/amxmovrs-asmintel-1.c @@ -1,12 +1,8 @@ /* { dg-do compile { target { ! ia32 } } } */ /* { dg-require-effective-target masm_intel } */ -/* { dg-options "-O2 -mamx-movrs -mamx-transpose -masm=intel" } */ +/* { dg-options "-O2 -mamx-movrs -masm=intel" } */ /* { dg-final { scan-assembler-times "tileloaddrs\[ \\t]%tmm\[0-9\]" 1 } } */ /* { dg-final { scan-assembler-times "tileloaddrst1\[ \\t]%tmm\[0-9\]" 1 } } */ -/* { dg-final { scan-assembler "t2rpntlvwz0rs\[ \\t]%tmm\[0-9\]" } } */ -/* { dg-final { scan-assembler "t2rpntlvwz0rst1\[ \\t]%tmm\[0-9\]" } } */ -/* { dg-final { scan-assembler "t2rpntlvwz1rs\[ \\t]%tmm\[0-9\]" } } */ -/* { dg-final { scan-assembler "t2rpntlvwz1rst1\[ \\t]%tmm\[0-9\]" } } */ #include <immintrin.h> extern const void* base; @@ -21,8 +17,4 @@ void TEST() { _tile_loaddrs (TMM1, base, stride); _tile_loaddrst1 (TMM1, base, stride); - _tile_2rpntlvwz0rs (TMM0, base, stride); - _tile_2rpntlvwz0rst1 (TMM1, base, stride); - _tile_2rpntlvwz1rs (TMM2, base, stride); - _tile_2rpntlvwz1rst1 (TMM3, base, stride); } diff --git a/gcc/testsuite/gcc.target/i386/amxtranspose-2rpntlvw-2.c b/gcc/testsuite/gcc.target/i386/amxtranspose-2rpntlvw-2.c deleted file mode 100644 index 2d01827..0000000 --- a/gcc/testsuite/gcc.target/i386/amxtranspose-2rpntlvw-2.c +++ /dev/null @@ -1,54 +0,0 @@ -/* { dg-do run { target { ! ia32 } } } */ -/* { dg-require-effective-target amx_transpose } */ -/* { dg-options "-O2 -mamx-transpose" } */ -#define AMX_TRANSPOSE -#define DO_TEST test_amx_transpose_t2rpntlvw -void test_amx_transpose_t2rpntlvw (); -#include "amx-helper.h" -#define init_pair_tile_reg_and_src_z_t(tmm_num, src, buffer, ztype, wtype) \ -{ \ - init_pair_tile_src (tmm_num, &src, buffer, ztype); \ - _tile_2rpntlvwz##ztype##wtype (tmm_num, buffer, _STRIDE); \ -} - -void test_amx_transpose_t2rpntlvw () -{ - __tilecfg_u cfg; - __tilepair src; - __tile ref_0, ref_1; - uint8_t buffer[2048]; - int i; - - init_tile_config (&cfg); - - for (i = 0; i < 2048; i++) - buffer[i] = i % 256; - - /* Check t2rpntlvwz0. */ - init_pair_tile_reg_and_src_z_t (0, src, buffer, 0,); - _tile_stored (0, ref_0.buf, _STRIDE); - _tile_stored (1, ref_1.buf, _STRIDE); - if (!check_pair_tile_register (&ref_0, &ref_1, &src)) - abort (); - - /* Check t2rpntlvwz1. */ - init_pair_tile_reg_and_src_z_t (0, src, buffer, 1,); - _tile_stored (0, ref_0.buf, _STRIDE); - _tile_stored (1, ref_1.buf, _STRIDE); - if (!check_pair_tile_register (&ref_0, &ref_1, &src)) - abort (); - - /* Check t2rpntlvwz0t1. */ - init_pair_tile_reg_and_src_z_t (0, src, buffer, 0, t1); - _tile_stored (0, ref_0.buf, _STRIDE); - _tile_stored (1, ref_1.buf, _STRIDE); - if (!check_pair_tile_register (&ref_0, &ref_1, &src)) - abort (); - - /* Check t2rpntlvwz1t1. */ - init_pair_tile_reg_and_src_z_t (0, src, buffer, 1, t1); - _tile_stored (0, ref_0.buf, _STRIDE); - _tile_stored (1, ref_1.buf, _STRIDE); - if (!check_pair_tile_register (&ref_0, &ref_1, &src)) - abort (); -} diff --git a/gcc/testsuite/gcc.target/i386/amxtranspose-asmatt-1.c b/gcc/testsuite/gcc.target/i386/amxtranspose-asmatt-1.c deleted file mode 100644 index a970f5d..0000000 --- a/gcc/testsuite/gcc.target/i386/amxtranspose-asmatt-1.c +++ /dev/null @@ -1,39 +0,0 @@ -/* { dg-do compile { target { ! ia32 } } } */ -/* { dg-options "-O2 -mamx-transpose -mamx-bf16 -mamx-complex -mamx-fp16 -mamx-tf32" } */ -/* { dg-final { scan-assembler "ttdpbf16ps\[ \\t]+\[^\n\]*%tmm3+\[^\n\]*%tmm2+\[^\n\]*%tmm1" } } */ -/* { dg-final { scan-assembler "ttdpfp16ps\[ \\t]+\[^\n\]*%tmm3+\[^\n\]*%tmm2+\[^\n\]*%tmm1" } } */ -/* { dg-final { scan-assembler "ttransposed\[ \\t]+\[^\n\]*%tmm2+\[^\n\]*%tmm1" } } */ -/* { dg-final { scan-assembler "t2rpntlvwz0\[ \\t]+\[^\n\]*\\(%\[a-z0-9]*\,%\[a-z0-9\]*\,\[124\]\\)+\[^\n\]*%tmm\[0-9\]" } } */ -/* { dg-final { scan-assembler "t2rpntlvwz0t1\[ \\t]+\[^\n\]*\\(%\[a-z0-9]*\,%\[a-z0-9\]*\,\[124\]\\)+\[^\n\]*%tmm\[0-9\]" } } */ -/* { dg-final { scan-assembler "t2rpntlvwz1\[ \\t]+\[^\n\]*\\(%\[a-z0-9]*\,%\[a-z0-9\]*\,\[124\]\\)+\[^\n\]*%tmm\[0-9\]" } } */ -/* { dg-final { scan-assembler "t2rpntlvwz1t1\[ \\t]+\[^\n\]*\\(%\[a-z0-9]*\,%\[a-z0-9\]*\,\[124\]\\)+\[^\n\]*%tmm\[0-9\]" } } */ -/* { dg-final { scan-assembler "tconjtcmmimfp16ps\[ \\t]+\[^\n\]*%tmm3+\[^\n\]*%tmm2+\[^\n\]*%tmm1" } } */ -/* { dg-final { scan-assembler "tconjtfp16\[ \\t]+\[^\n\]*%tmm2+\[^\n\]*%tmm1" } } */ -/* { dg-final { scan-assembler "ttcmmimfp16ps\[ \\t]+\[^\n\]*%tmm3+\[^\n\]*%tmm2+\[^\n\]*%tmm1" } } */ -/* { dg-final { scan-assembler "ttcmmrlfp16ps\[ \\t]+\[^\n\]*%tmm3+\[^\n\]*%tmm2+\[^\n\]*%tmm1" } } */ -/* { dg-final { scan-assembler "ttmmultf32ps\[ \\t]+\[^\n\]*%tmm3+\[^\n\]*%tmm2+\[^\n\]*%tmm1" } } */ -#include <immintrin.h> - -extern const void* base; -extern const int stride; - -#define TMM0 0 -#define TMM1 1 -#define TMM2 2 -#define TMM3 3 - -void TEST() -{ - _tile_tdpbf16ps (TMM1, TMM2, TMM3); - _tile_tdpfp16ps (TMM1, TMM2, TMM3); - _tile_transposed (TMM1, TMM2); - _tile_2rpntlvwz0 (TMM0, base, stride); - _tile_2rpntlvwz0t1 (TMM1, base, stride); - _tile_2rpntlvwz1 (TMM2, base, stride); - _tile_2rpntlvwz1t1 (TMM3, base, stride); - _tile_conjtcmmimfp16ps (TMM1, TMM2, TMM3); - _tile_conjtfp16 (TMM1, TMM2); - _tile_tcmmimfp16ps (TMM1, TMM2, TMM3); - _tile_tcmmrlfp16ps (TMM1, TMM2, TMM3); - _tile_tmmultf32ps (TMM1, TMM2, TMM3); -} diff --git a/gcc/testsuite/gcc.target/i386/amxtranspose-asmintel-1.c b/gcc/testsuite/gcc.target/i386/amxtranspose-asmintel-1.c deleted file mode 100644 index 2cf73ae..0000000 --- a/gcc/testsuite/gcc.target/i386/amxtranspose-asmintel-1.c +++ /dev/null @@ -1,35 +0,0 @@ -/* { dg-do compile { target { ! ia32 } } } */ -/* { dg-require-effective-target masm_intel } */ -/* { dg-options "-O2 -mamx-transpose -mamx-bf16 -mamx-complex -mamx-fp16 -mamx-tf32 -masm=intel" } */ -/* { dg-final { scan-assembler "ttdpbf16ps\[ \\t]+\[^\n\]*%tmm1+\[^\n\]*%tmm2+\[^\n\]*%tmm3" } } */ -/* { dg-final { scan-assembler "ttdpfp16ps\[ \\t]+\[^\n\]*%tmm1+\[^\n\]*%tmm2+\[^\n\]*%tmm3" } } */ -/* { dg-final { scan-assembler "ttransposed\[ \\t]+\[^\n\]*%tmm1+\[^\n\]*%tmm2" } } */ -/* { dg-final { scan-assembler "t2rpntlvwz0\[ \\t]%tmm\[0-9\]" } } */ -/* { dg-final { scan-assembler "t2rpntlvwz0t1\[ \\t]%tmm\[0-9\]" } } */ -/* { dg-final { scan-assembler "t2rpntlvwz1\[ \\t]%tmm\[0-9\]" } } */ -/* { dg-final { scan-assembler "t2rpntlvwz1t1\[ \\t]%tmm\[0-9\]" } } */ -/* { dg-final { scan-assembler "tconjtcmmimfp16ps\[ \\t]+\[^\n\]*%tmm1+\[^\n\]*%tmm2+\[^\n\]*%tmm3" } } */ -/* { dg-final { scan-assembler "tconjtfp16\[ \\t]+\[^\n\]*%tmm1+\[^\n\]*%tmm2" } } */ -/* { dg-final { scan-assembler "ttcmmimfp16ps\[ \\t]+\[^\n\]*%tmm1+\[^\n\]*%tmm2+\[^\n\]*%tmm3" } } */ -/* { dg-final { scan-assembler "ttcmmrlfp16ps\[ \\t]+\[^\n\]*%tmm1+\[^\n\]*%tmm2+\[^\n\]*%tmm3" } } */ -/* { dg-final { scan-assembler "ttmmultf32ps\[ \\t]+\[^\n\]*%tmm1+\[^\n\]*%tmm2+\[^\n\]*%tmm3" } } */ -#include <immintrin.h> - -extern const void* base; -extern const int stride; - -void TEST() -{ - _tile_tdpbf16ps (1, 2, 3); - _tile_tdpfp16ps (1, 2, 3); - _tile_transposed (1, 2); - _tile_2rpntlvwz0 (5, base, stride); - _tile_2rpntlvwz0t1 (4, base, stride); - _tile_2rpntlvwz1 (3, base, stride); - _tile_2rpntlvwz1t1 (2, base, stride); - _tile_conjtcmmimfp16ps (1, 2, 3); - _tile_conjtfp16 (1, 2); - _tile_tcmmimfp16ps (1, 2, 3); - _tile_tcmmrlfp16ps (1, 2, 3); - _tile_tmmultf32ps (1, 2, 3); -} diff --git a/gcc/testsuite/gcc.target/i386/amxtranspose-conjtcmmimfp16ps-2.c b/gcc/testsuite/gcc.target/i386/amxtranspose-conjtcmmimfp16ps-2.c deleted file mode 100644 index 159867d..0000000 --- a/gcc/testsuite/gcc.target/i386/amxtranspose-conjtcmmimfp16ps-2.c +++ /dev/null @@ -1,55 +0,0 @@ -/* { dg-do run { target { ! ia32 } } } */ -/* { dg-require-effective-target amx_transpose } */ -/* { dg-require-effective-target amx_complex } */ -/* { dg-require-effective-target avx512fp16 } */ -/* { dg-options "-O2 -mamx-transpose -mamx-complex -mavx512fp16" } */ -#define AMX_TRANSPOSE -#define AMX_COMPLEX -#define DO_TEST test_amx_transpose_conjtcmmimfp16ps -void test_amx_transpose_conjtcmmimfp16ps (); -#include "amx-helper.h" - -void calc_matrix_conjtcmmimfp16ps (__tile *dst, __tile *src1, __tile *src2) -{ - uint16_t *src1_buf = (uint16_t *) src1->buf; - uint16_t *src2_buf = (uint16_t *) src2->buf; - float *dst_buf = (float *) dst->buf; - - int K = src1->rows; - int M = src1->colsb / 4; - int N = src2->colsb / 4; - int m, k, n, t; - - for (m = 0; m < M; m++) - for (k = 0; k < K; k++) - for (n = 0; n < N; n++) - for (t = 0; t < 2; t+=2) - dst_buf[m * N + n] += - (make_fp16_f32(src1_buf[k * 2 * M + 2 * m + t]) * - make_fp16_f32(src2_buf[k * 2 * N + 2 * n + t + 1])) - - (make_fp16_f32(src1_buf[k * 2 * M + 2 * m + t + 1]) * - make_fp16_f32(src2_buf[k * 2 * N + 2 * n + t])); -} - -void test_amx_transpose_conjtcmmimfp16ps () -{ - __tilecfg_u cfg; - __tile dst, dst_ref, src1, src2; - uint8_t tmp_dst_buf[1024], tmp_dst_zero_buf[1024]; - - init_fp16_max_tile_buffer (tmp_dst_buf); - init_fp16_max_tile_zero_buffer (tmp_dst_zero_buf); - - init_tile_config (&cfg); - init_tile_reg_and_src_with_buffer (1, dst, tmp_dst_zero_buf); - init_tile_reg_and_src_with_buffer (2, src1, tmp_dst_buf); - init_tile_reg_and_src_with_buffer (3, src2, tmp_dst_buf); - - calc_matrix_conjtcmmimfp16ps (&dst, &src1, &src2); - - _tile_conjtcmmimfp16ps (1, 2, 3); - _tile_stored (1, dst_ref.buf, _STRIDE); - - if (!check_tile_register (&dst_ref, &dst)) - abort (); -} diff --git a/gcc/testsuite/gcc.target/i386/amxtranspose-conjtfp16-2.c b/gcc/testsuite/gcc.target/i386/amxtranspose-conjtfp16-2.c deleted file mode 100644 index 710d76a..0000000 --- a/gcc/testsuite/gcc.target/i386/amxtranspose-conjtfp16-2.c +++ /dev/null @@ -1,48 +0,0 @@ -/* { dg-do run { target { ! ia32 } } } */ -/* { dg-require-effective-target amx_transpose } */ -/* { dg-require-effective-target amx_complex } */ -/* { dg-require-effective-target avx512fp16 } */ -/* { dg-options "-O2 -mamx-transpose -mamx-complex -mavx512fp16" } */ -#define AMX_TRANSPOSE -#define AMX_COMPLEX -#define DO_TEST test_amx_transpose_conjtfp16 -void test_amx_transpose_conjtfp16 (); -#include "amx-helper.h" - -void calc_matrix_conjtfp16 (__tile *dst, __tile *src) -{ - uint16_t *src_buf = (uint16_t *) src->buf; - float *dst_buf = (float *) dst->buf; - - int M = dst->rows; - int N = dst->colsb / 4; - int i, j, t; - - for (i = 0; i < M; i++) - for (j = 0; j < N; j++) - for (t = 0; t < 2; t+=2) - { - dst_buf[i * 2 * N + 2 * j + t] = src_buf[j * 2 * M + 2 * i + t]; - dst_buf[i * 2 * N + 2 * j + t + 1] = -src_buf[j * 2 * M + 2 * i + t + 1]; - } -} - -void test_amx_transpose_conjtfp16 () -{ - __tilecfg_u cfg; - __tile src, dst, ref; - uint8_t tmp_dst_buf[1024]; - - init_fp16_max_tile_buffer (tmp_dst_buf); - init_tile_config (&cfg); - init_tile_reg_and_src_with_buffer (1, dst, tmp_dst_buf); - init_tile_reg_and_src_with_buffer (2, src, tmp_dst_buf); - - /* Check tconjtfp16. */ - calc_matrix_conjtfp16 (&dst, &src); - _tile_conjtfp16 (1, 2); - _tile_stored (1, ref.buf, _STRIDE); - - if (!check_tile_register (&ref, &dst)) - abort (); -} diff --git a/gcc/testsuite/gcc.target/i386/amxtranspose-tcmmimfp16ps-2.c b/gcc/testsuite/gcc.target/i386/amxtranspose-tcmmimfp16ps-2.c deleted file mode 100644 index e2a0f10..0000000 --- a/gcc/testsuite/gcc.target/i386/amxtranspose-tcmmimfp16ps-2.c +++ /dev/null @@ -1,55 +0,0 @@ -/* { dg-do run { target { ! ia32 } } } */ -/* { dg-require-effective-target amx_transpose } */ -/* { dg-require-effective-target amx_complex } */ -/* { dg-require-effective-target avx512fp16 } */ -/* { dg-options "-O2 -mamx-transpose -mamx-complex -mavx512fp16" } */ -#define AMX_TRANSPOSE -#define AMX_COMPLEX -#define DO_TEST test_amx_transpose_tcmmimfp16ps -void test_amx_transpose_tcmmimfp16ps (); -#include "amx-helper.h" - -void calc_matrix_tcmmimfp16ps (__tile *dst, __tile *src1, __tile *src2) -{ - uint16_t *src1_buf = (uint16_t *) src1->buf; - uint16_t *src2_buf = (uint16_t *) src2->buf; - float *dst_buf = (float *) dst->buf; - - int K = src1->rows; - int M = src1->colsb / 4; - int N = src2->colsb / 4; - int m, k, n, t; - - for (m = 0; m < M; m++) - for (k = 0; k < K; k++) - for (n = 0; n < N; n++) - for (t = 0; t < 2; t+=2) - dst_buf[m * N + n] += - (make_fp16_f32(src1_buf[k * 2 * M + 2 * m + t]) * - make_fp16_f32(src2_buf[k * 2 * N + 2 * n + t + 1])) + - (make_fp16_f32(src1_buf[k * 2 * M + 2 * m + t + 1]) * - make_fp16_f32(src2_buf[k * 2 * N + 2 * n + t])); -} - -void test_amx_transpose_tcmmimfp16ps () -{ - __tilecfg_u cfg; - __tile dst, dst_ref, src1, src2; - uint8_t tmp_dst_buf[1024], tmp_dst_zero_buf[1024]; - - init_fp16_max_tile_buffer (tmp_dst_buf); - init_fp16_max_tile_zero_buffer (tmp_dst_zero_buf); - - init_tile_config (&cfg); - init_tile_reg_and_src_with_buffer (1, dst, tmp_dst_zero_buf); - init_tile_reg_and_src_with_buffer (2, src1, tmp_dst_buf); - init_tile_reg_and_src_with_buffer (3, src2, tmp_dst_buf); - - calc_matrix_tcmmimfp16ps (&dst, &src1, &src2); - - _tile_tcmmimfp16ps (1, 2, 3); - _tile_stored (1, dst_ref.buf, _STRIDE); - - if (!check_tile_register (&dst_ref, &dst)) - abort (); -} diff --git a/gcc/testsuite/gcc.target/i386/amxtranspose-tcmmrlfp16ps-2.c b/gcc/testsuite/gcc.target/i386/amxtranspose-tcmmrlfp16ps-2.c deleted file mode 100644 index b09186c..0000000 --- a/gcc/testsuite/gcc.target/i386/amxtranspose-tcmmrlfp16ps-2.c +++ /dev/null @@ -1,55 +0,0 @@ -/* { dg-do run { target { ! ia32 } } } */ -/* { dg-require-effective-target amx_transpose } */ -/* { dg-require-effective-target amx_complex } */ -/* { dg-require-effective-target avx512fp16 } */ -/* { dg-options "-O2 -mamx-transpose -mamx-complex -mavx512fp16" } */ -#define AMX_TRANSPOSE -#define AMX_COMPLEX -#define DO_TEST test_amx_transpose_tcmmrlfp16ps -void test_amx_transpose_tcmmrlfp16ps (); -#include "amx-helper.h" - -void calc_matrix_tcmmrlfp16ps (__tile *dst, __tile *src1, __tile *src2) -{ - uint16_t *src1_buf = (uint16_t *) src1->buf; - uint16_t *src2_buf = (uint16_t *) src2->buf; - float *dst_buf = (float *) dst->buf; - - int K = src1->rows; - int M = src1->colsb / 4; - int N = src2->colsb / 4; - int m, k, n, t; - - for (m = 0; m < M; m++) - for (k = 0; k < K; k++) - for (n = 0; n < N; n++) - for (t = 0; t < 2; t+=2) - dst_buf[m * N + n] += - (make_fp16_f32(src1_buf[k * 2 * M + 2 * m + t]) * - make_fp16_f32(src2_buf[k * 2 * N + 2 * n + t])) - - (make_fp16_f32(src1_buf[k * 2 * M + 2 * m + t + 1]) * - make_fp16_f32(src2_buf[k * 2 * N + 2 * n + t + 1])); -} - -void test_amx_transpose_tcmmrlfp16ps () -{ - __tilecfg_u cfg; - __tile dst, dst_ref, src1, src2; - uint8_t tmp_dst_buf[1024], tmp_dst_zero_buf[1024]; - - init_fp16_max_tile_buffer (tmp_dst_buf); - init_fp16_max_tile_zero_buffer (tmp_dst_zero_buf); - - init_tile_config (&cfg); - init_tile_reg_and_src_with_buffer (1, dst, tmp_dst_zero_buf); - init_tile_reg_and_src_with_buffer (2, src1, tmp_dst_buf); - init_tile_reg_and_src_with_buffer (3, src2, tmp_dst_buf); - - calc_matrix_tcmmrlfp16ps (&dst, &src1, &src2); - - _tile_tcmmrlfp16ps (1, 2, 3); - _tile_stored (1, dst_ref.buf, _STRIDE); - - if (!check_tile_register (&dst_ref, &dst)) - abort (); -} diff --git a/gcc/testsuite/gcc.target/i386/amxtranspose-tdpbf16ps-2.c b/gcc/testsuite/gcc.target/i386/amxtranspose-tdpbf16ps-2.c deleted file mode 100644 index 6a3226b..0000000 --- a/gcc/testsuite/gcc.target/i386/amxtranspose-tdpbf16ps-2.c +++ /dev/null @@ -1,53 +0,0 @@ -/* { dg-do run { target { ! ia32 } } } */ -/* { dg-require-effective-target amx_transpose } */ -/* { dg-require-effective-target amx_bf16 } */ -/* { dg-options "-O2 -mamx-transpose -mamx-bf16 -mavx512bf16" } */ -#define AMX_TRANSPOSE -#define AMX_BF16 -#define DO_TEST test_amx_transpose_tdpbf16ps -void test_amx_transpose_tdpbf16ps (); -#include "amx-helper.h" - -void calc_matrix_tdpbf16ps(__tile *dst, __tile *src1, __tile *src2) -{ - uint16_t *src1_buf = (uint16_t *) src1->buf; - uint16_t *src2_buf = (uint16_t *) src2->buf; - float *dst_buf = (float *) dst->buf; - - int K = src1->rows; - int M = src1->colsb / 4; - int N = src2->colsb / 4; - int m, k, n, t; - - for (m = 0; m < M; m++) - for (k = 0; k < K; k++) - for (n = 0; n < N; n++) - for (t = 0; t < 2; t+=2) - dst_buf[m * N + n] += - (make_bf16_f32 (src1_buf[k * 2 * M + 2 * m + t]) * - make_bf16_f32 (src2_buf[k * 2 * N + 2 * n + t])) + - (make_bf16_f32 (src1_buf[k * 2 * M + 2 * m + t + 1]) * - make_bf16_f32 (src2_buf[k * 2 * N + 2 * n + t + 1])); -} - -void test_amx_transpose_tdpbf16ps () -{ - __tilecfg_u cfg; - __tile dst, dst_ref, src1, src2; - uint8_t tmp_dst_buf[1024]; - - init_bf16_max_tile_buffer (tmp_dst_buf); - - init_tile_config (&cfg); - init_tile_reg_and_src_with_buffer (1, dst, tmp_dst_buf); - init_tile_reg_and_src_with_buffer (2, src1, tmp_dst_buf); - init_tile_reg_and_src_with_buffer (3, src2, tmp_dst_buf); - - calc_matrix_tdpbf16ps (&dst, &src1, &src2); - - _tile_tdpbf16ps (1, 2, 3); - _tile_stored (1, dst_ref.buf, _STRIDE); - - if (!check_float_tile_register (&dst_ref, &dst)) - abort (); -} diff --git a/gcc/testsuite/gcc.target/i386/amxtranspose-tdpfp16ps-2.c b/gcc/testsuite/gcc.target/i386/amxtranspose-tdpfp16ps-2.c deleted file mode 100644 index 83c3715..0000000 --- a/gcc/testsuite/gcc.target/i386/amxtranspose-tdpfp16ps-2.c +++ /dev/null @@ -1,55 +0,0 @@ -/* { dg-do run { target { ! ia32 } } } */ -/* { dg-require-effective-target amx_transpose } */ -/* { dg-require-effective-target amx_fp16 } */ -/* { dg-require-effective-target avx512fp16 } */ -/* { dg-options "-O2 -mamx-transpose -mamx-fp16 -mavx512fp16" } */ -#define AMX_TRANSPOSE -#define AMX_FP16 -#define DO_TEST test_amx_transpose_tdpfp16ps -void test_amx_transpose_tdpfp16ps (); -#include "amx-helper.h" - -void calc_matrix_tdpfp16ps(__tile *dst, __tile *src1, __tile *src2) -{ - uint16_t *src1_buf = (uint16_t *) src1->buf; - uint16_t *src2_buf = (uint16_t *) src2->buf; - float *dst_buf = (float *) dst->buf; - - int K = src1->rows; - int M = src1->colsb / 4; - int N = src2->colsb / 4; - int m, k, n, t; - - for (m = 0; m < M; m++) - for (k = 0; k < K; k++) - for (n = 0; n < N; n++) - for (t = 0; t < 2; t+=2) - dst_buf[m * N + n] += - (make_fp16_f32 (src1_buf[k * 2 * M + 2 * m + t]) * - make_fp16_f32 (src2_buf[k * 2 * N + 2 * n + t])) + - (make_fp16_f32 (src1_buf[k * 2 * M + 2 * m + t + 1]) * - make_fp16_f32 (src2_buf[k * 2 * N + 2 * n + t + 1])); -} - -void test_amx_transpose_tdpfp16ps () -{ - __tilecfg_u cfg; - __tile dst, dst_ref, src1, src2; - uint8_t tmp_dst_buf[1024], tmp_dst_zero_buf[1024]; - - init_fp16_max_tile_buffer (tmp_dst_buf); - init_fp16_max_tile_zero_buffer(tmp_dst_zero_buf); - - init_tile_config (&cfg); - init_tile_reg_and_src_with_buffer (1, dst, tmp_dst_zero_buf); - init_tile_reg_and_src_with_buffer (2, src1, tmp_dst_buf); - init_tile_reg_and_src_with_buffer (3, src2, tmp_dst_buf); - - calc_matrix_tdpfp16ps (&dst, &src1, &src2); - - _tile_tdpfp16ps (1, 2, 3); - _tile_stored (1, dst_ref.buf, _STRIDE); - - if (!check_float_tile_register (&dst_ref, &dst)) - abort (); -} diff --git a/gcc/testsuite/gcc.target/i386/amxtranspose-tmmultf32ps-2.c b/gcc/testsuite/gcc.target/i386/amxtranspose-tmmultf32ps-2.c deleted file mode 100644 index 44166c1..0000000 --- a/gcc/testsuite/gcc.target/i386/amxtranspose-tmmultf32ps-2.c +++ /dev/null @@ -1,51 +0,0 @@ -/* { dg-do run { target { ! ia32 } } } */ -/* { dg-require-effective-target amx_transpose } */ -/* { dg-require-effective-target amx_tf32 } */ -/* { dg-options "-O2 -mamx-transpose -mamx-tf32" } */ -#define AMX_TRANSPOSE -#define AMX_TF32 -#define DO_TEST test_amx_transpose_tmmultf32ps -void test_amx_transpose_tmmultf32ps(); -#include "amx-helper.h" - -void calc_matrix_tmmultf32ps(__tile *dst, __tile *src1, __tile *src2) -{ - float *src1_buf = (float *) src1->buf; - float *src2_buf = (float *) src2->buf; - float *dst_buf = (float *) dst->buf; - - int K = src1->rows; - int M = src1->colsb / 4; - int N = src2->colsb / 4; - int m, n, k; - - for (m = 0; m < M; m++) - for (k = 0; k < K; k++) - for (n = 0; n < N; n++) - dst_buf[m * N + n] += - zero_lower_mantissa_bits_fp32 (silence_snan_fp32 (src1_buf[k * M + m])) * - zero_lower_mantissa_bits_fp32 (silence_snan_fp32 (src2_buf[k * N + n])); - -} - -void test_amx_transpose_tmmultf32ps () -{ - __tilecfg_u cfg; - __tile dst, dst_ref, src1, src2; - uint8_t tmp_dst_buf[1024]; - - init_fp32_max_tile_buffer (tmp_dst_buf); - - init_tile_config (&cfg); - init_tile_reg_and_src_with_buffer (1, dst, tmp_dst_buf); - init_tile_reg_and_src_with_buffer (2, src1, tmp_dst_buf); - init_tile_reg_and_src_with_buffer (3, src2, tmp_dst_buf); - - calc_matrix_tmmultf32ps (&dst, &src1, &src2); - - _tile_tmmultf32ps (1, 2, 3); - _tile_stored (1, dst_ref.buf, _STRIDE); - - if (!check_tile_register (&dst_ref, &dst)) - abort (); -} diff --git a/gcc/testsuite/gcc.target/i386/amxtranspose-transposed-2.c b/gcc/testsuite/gcc.target/i386/amxtranspose-transposed-2.c deleted file mode 100644 index 73c709c..0000000 --- a/gcc/testsuite/gcc.target/i386/amxtranspose-transposed-2.c +++ /dev/null @@ -1,39 +0,0 @@ -/* { dg-do run { target { ! ia32 } } } */ -/* { dg-require-effective-target amx_transpose } */ -/* { dg-options "-O2 -mamx-transpose" } */ -#define AMX_TRANSPOSE -#define DO_TEST test_amx_transpose_transposed -void test_amx_transpose_transposed (); -#include "amx-helper.h" - -void calc_matrix_ttransposed (__tile *dst, __tile *src) -{ - uint32_t *src_buf = (uint32_t *) src->buf; - uint32_t *dst_buf = (uint32_t *) dst->buf; - - int M = src->rows; - int N = src->colsb / 4; - int i, j; - - for (i = 0; i < M; i++) - for (j = 0; j < N; j++) - dst_buf[j * M + i] = (uint32_t) src_buf[i * N + j]; -} - -void test_amx_transpose_transposed () -{ - __tilecfg_u cfg; - __tile src, dst, ref; - - init_tile_config (&cfg); - init_tile_reg_and_src (1, dst); - init_tile_reg_and_src (2, src); - - /* Check ttransposed. */ - calc_matrix_ttransposed (&dst, &src); - _tile_transposed (1, 2); - _tile_stored (1, ref.buf, _STRIDE); - - if (!check_tile_register (&ref, &dst)) - abort (); -} diff --git a/gcc/testsuite/gcc.target/i386/funcspec-56.inc b/gcc/testsuite/gcc.target/i386/funcspec-56.inc index e462ead..3d9af7a 100644 --- a/gcc/testsuite/gcc.target/i386/funcspec-56.inc +++ b/gcc/testsuite/gcc.target/i386/funcspec-56.inc @@ -90,7 +90,6 @@ extern void test_user_msr (void) __attribute__((__target__("usermsr"))); extern void test_avx10_2 (void) __attribute__((__target__("avx10.2"))); extern void test_amx_avx512 (void) __attribute__((__target__("amx-avx512"))); extern void test_amx_tf32 (void) __attribute__((__target__("amx-tf32"))); -extern void test_amx_transpose (void) __attribute__((__target__("amx-transpose"))); extern void test_amx_fp8 (void) __attribute__((__target__("amx-fp8"))); extern void test_movrs (void) __attribute__((__target__("movrs"))); extern void test_amx_movrs (void) __attribute__((__target__("amx-movrs"))); @@ -185,7 +184,6 @@ extern void test_no_user_msr (void) __attribute__((__target__("no-usermsr"))); extern void test_no_avx10_2 (void) __attribute__((__target__("no-avx10.2"))); extern void test_no_amx_avx512 (void) __attribute__((__target__("no-amx-avx512"))); extern void test_no_amx_tf32 (void) __attribute__((__target__("no-amx-tf32"))); -extern void test_no_amx_transpose (void) __attribute__((__target__("no-amx-transpose"))); extern void test_no_amx_fp8 (void) __attribute__((__target__("no-amx-fp8"))); extern void test_no_movrs (void) __attribute__((__target__("no-movrs"))); extern void test_no_amx_movrs (void) __attribute__((__target__("no-amx-movrs"))); diff --git a/gcc/testsuite/gcc.target/i386/pr122266.c b/gcc/testsuite/gcc.target/i386/pr122266.c new file mode 100644 index 0000000..4e31a6a --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr122266.c @@ -0,0 +1,10 @@ +/* { dg-do compile { target int128 } } */ +/* { dg-options "-O2" } */ + +signed __int128 foo(signed __int128 x) { + signed __int128 t = x >> 127; + return ((x^t)>>1)^t; +} + +/* { dg-final { scan-assembler-times "xorq" 4 } } */ +/* { dg-final { scan-assembler-times "sarq" 2 } } */ diff --git a/gcc/testsuite/gcc.target/i386/sse-12.c b/gcc/testsuite/gcc.target/i386/sse-12.c index cabccb0..fc406b0 100644 --- a/gcc/testsuite/gcc.target/i386/sse-12.c +++ b/gcc/testsuite/gcc.target/i386/sse-12.c @@ -3,7 +3,7 @@ popcntintrin.h gfniintrin.h and mm_malloc.h are usable with -O -std=c89 -pedantic-errors. */ /* { dg-do compile } */ -/* { dg-options "-O -std=c89 -pedantic-errors -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt -msha -mxsavec -mxsaves -mclflushopt -mclwb -mmwaitx -mclzero -mpku -msgx -mrdpid -mgfni -mpconfig -mwbnoinvd -menqcmd -mavx512vp2intersect -mserialize -mtsxldtrk -mamx-tile -mamx-int8 -mamx-bf16 -mkl -mwidekl -mavxvnni -mavxifma -mavxvnniint8 -mavxneconvert -mamx-fp16 -mraoint -mamx-complex -mavxvnniint16 -msm3 -msha512 -msm4 -mavx10.2 -mamx-avx512 -mamx-tf32 -mamx-transpose -mamx-fp8 -mmovrs -mamx-movrs" } */ +/* { dg-options "-O -std=c89 -pedantic-errors -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt -msha -mxsavec -mxsaves -mclflushopt -mclwb -mmwaitx -mclzero -mpku -msgx -mrdpid -mgfni -mpconfig -mwbnoinvd -menqcmd -mavx512vp2intersect -mserialize -mtsxldtrk -mamx-tile -mamx-int8 -mamx-bf16 -mkl -mwidekl -mavxvnni -mavxifma -mavxvnniint8 -mavxneconvert -mamx-fp16 -mraoint -mamx-complex -mavxvnniint16 -msm3 -msha512 -msm4 -mavx10.2 -mamx-avx512 -mamx-tf32 -mamx-fp8 -mmovrs -mamx-movrs" } */ #include <x86intrin.h> diff --git a/gcc/testsuite/gcc.target/i386/sse-13.c b/gcc/testsuite/gcc.target/i386/sse-13.c index 189e19e..7541956 100644 --- a/gcc/testsuite/gcc.target/i386/sse-13.c +++ b/gcc/testsuite/gcc.target/i386/sse-13.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O2 -Werror-implicit-function-declaration -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt -msha -mxsavec -mxsaves -mclflushopt -mavx512vp2intersect -mclwb -mmwaitx -mclzero -mpku -msgx -mrdpid -mgfni -mpconfig -mwbnoinvd -menqcmd -mserialize -mtsxldtrk -mamx-tile -mamx-int8 -mamx-bf16 -mkl -mwidekl -mavxvnni -mavxifma -mavxvnniint8 -mavxneconvert -mcmpccxadd -mamx-fp16 -mprefetchi -mraoint -mamx-complex -mavxvnniint16 -msm3 -msha512 -msm4 -mavx10.2 -mamx-avx512 -mamx-tf32 -mamx-transpose -mamx-fp8 -mmovrs -mamx-movrs" } */ +/* { dg-options "-O2 -Werror-implicit-function-declaration -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt -msha -mxsavec -mxsaves -mclflushopt -mavx512vp2intersect -mclwb -mmwaitx -mclzero -mpku -msgx -mrdpid -mgfni -mpconfig -mwbnoinvd -menqcmd -mserialize -mtsxldtrk -mamx-tile -mamx-int8 -mamx-bf16 -mkl -mwidekl -mavxvnni -mavxifma -mavxvnniint8 -mavxneconvert -mcmpccxadd -mamx-fp16 -mprefetchi -mraoint -mamx-complex -mavxvnniint16 -msm3 -msha512 -msm4 -mavx10.2 -mamx-avx512 -mamx-tf32 -mamx-fp8 -mmovrs -mamx-movrs" } */ /* { dg-add-options bind_pic_locally } */ #include <mm_malloc.h> diff --git a/gcc/testsuite/gcc.target/i386/sse-14.c b/gcc/testsuite/gcc.target/i386/sse-14.c index f3b7c112..1e86c75 100644 --- a/gcc/testsuite/gcc.target/i386/sse-14.c +++ b/gcc/testsuite/gcc.target/i386/sse-14.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O0 -Werror-implicit-function-declaration -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt -msha -mxsavec -mxsaves -mclflushopt -mclwb -mmwaitx -mclzero -mpku -msgx -mrdpid -mgfni -mpconfig -mwbnoinvd -menqcmd -mavx512vp2intersect -mserialize -mtsxldtrk -mamx-tile -mamx-int8 -mamx-bf16 -mkl -mwidekl -mavxvnni -mavxifma -mavxvnniint8 -mavxneconvert -mamx-fp16 -mraoint -mamx-complex -mavxvnniint16 -msm3 -msha512 -msm4 -mavx10.2 -mamx-avx512 -mamx-tf32 -mamx-transpose -mamx-fp8 -mmovrs -mamx-movrs" } */ +/* { dg-options "-O0 -Werror-implicit-function-declaration -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt -msha -mxsavec -mxsaves -mclflushopt -mclwb -mmwaitx -mclzero -mpku -msgx -mrdpid -mgfni -mpconfig -mwbnoinvd -menqcmd -mavx512vp2intersect -mserialize -mtsxldtrk -mamx-tile -mamx-int8 -mamx-bf16 -mkl -mwidekl -mavxvnni -mavxifma -mavxvnniint8 -mavxneconvert -mamx-fp16 -mraoint -mamx-complex -mavxvnniint16 -msm3 -msha512 -msm4 -mavx10.2 -mamx-avx512 -mamx-tf32 -mamx-fp8 -mmovrs -mamx-movrs" } */ /* { dg-add-options bind_pic_locally } */ #include <mm_malloc.h> diff --git a/gcc/testsuite/gcc.target/i386/sse-22.c b/gcc/testsuite/gcc.target/i386/sse-22.c index 0cb0368..418fe23 100644 --- a/gcc/testsuite/gcc.target/i386/sse-22.c +++ b/gcc/testsuite/gcc.target/i386/sse-22.c @@ -103,7 +103,7 @@ #ifndef DIFFERENT_PRAGMAS -#pragma GCC target ("sse4a,3dnow,avx,avx2,fma4,xop,aes,pclmul,popcnt,abm,lzcnt,bmi,bmi2,tbm,lwp,fsgsbase,rdrnd,f16c,rtm,rdseed,prfchw,adx,fxsr,xsaveopt,sha,gfni,avx512vp2intersect,serialize,tsxldtrk,amx-tile,amx-int8,amx-bf16,kl,widekl,avxvnni,avxifma,avxvnniint8,avxneconvert,amx-fp16,raoint,amx-complex,avxvnniint16,sm3,sha512,sm4,avx10.2,amx-avx512,amx-tf32,amx-transpose,amx-fp8,movrs,amx-movrs") +#pragma GCC target ("sse4a,3dnow,avx,avx2,fma4,xop,aes,pclmul,popcnt,abm,lzcnt,bmi,bmi2,tbm,lwp,fsgsbase,rdrnd,f16c,rtm,rdseed,prfchw,adx,fxsr,xsaveopt,sha,gfni,avx512vp2intersect,serialize,tsxldtrk,amx-tile,amx-int8,amx-bf16,kl,widekl,avxvnni,avxifma,avxvnniint8,avxneconvert,amx-fp16,raoint,amx-complex,avxvnniint16,sm3,sha512,sm4,avx10.2,amx-avx512,amx-tf32,amx-fp8,movrs,amx-movrs") #endif /* Following intrinsics require immediate arguments. They @@ -220,7 +220,7 @@ test_4 (_mm_cmpestrz, int, __m128i, int, __m128i, int, 1) /* immintrin.h (AVX/AVX2/RDRND/FSGSBASE/F16C/RTM/AVX512F/SHA) */ #ifdef DIFFERENT_PRAGMAS -#pragma GCC target ("avx,avx2,rdrnd,fsgsbase,f16c,rtm,sha,gfni,avx512vp2intersect,serialize,tsxldtrk,amx-tile,amx-int8,amx-bf16,kl,widekl,avxvnni,avxifma,avxvnniint8,avxneconvert,amx-fp16,raoint,amx-complex,avxvnniint16,sm3,sha512,sm4,avx10.2,amx-avx512,amx-tf32,amx-transpose,amx-fp8,movrs,amx-movrs") +#pragma GCC target ("avx,avx2,rdrnd,fsgsbase,f16c,rtm,sha,gfni,avx512vp2intersect,serialize,tsxldtrk,amx-tile,amx-int8,amx-bf16,kl,widekl,avxvnni,avxifma,avxvnniint8,avxneconvert,amx-fp16,raoint,amx-complex,avxvnniint16,sm3,sha512,sm4,avx10.2,amx-avx512,amx-tf32,amx-fp8,movrs,amx-movrs") #endif #include <immintrin.h> test_1 (_cvtss_sh, unsigned short, float, 1) diff --git a/gcc/testsuite/gcc.target/i386/sse-23.c b/gcc/testsuite/gcc.target/i386/sse-23.c index 95db1f7..f9b0613 100644 --- a/gcc/testsuite/gcc.target/i386/sse-23.c +++ b/gcc/testsuite/gcc.target/i386/sse-23.c @@ -895,6 +895,6 @@ #define __builtin_ia32_minmaxsh_mask_round(A, B, C, D, E, F) __builtin_ia32_minmaxsh_mask_round (A, B, 100, D, E, 4) #define __builtin_ia32_minmaxss_mask_round(A, B, C, D, E, F) __builtin_ia32_minmaxss_mask_round (A, B, 100, D, E, 4) -#pragma GCC target ("sse4a,3dnow,avx,avx2,fma4,xop,aes,pclmul,popcnt,abm,lzcnt,bmi,bmi2,tbm,lwp,fsgsbase,rdrnd,f16c,fma,rtm,rdseed,prfchw,adx,fxsr,xsaveopt,sha,xsavec,xsaves,clflushopt,clwb,mwaitx,clzero,pku,sgx,rdpid,gfni,vpclmulqdq,pconfig,wbnoinvd,enqcmd,avx512vp2intersect,serialize,tsxldtrk,amx-tile,amx-int8,amx-bf16,kl,widekl,avxvnni,avxifma,avxvnniint8,avxneconvert,cmpccxadd,amx-fp16,prefetchi,raoint,amx-complex,avxvnniint16,sm3,sha512,sm4,avx10.2,amx-avx512,amx-tf32,amx-transpose,amx-fp8,movrs,amx-movrs") +#pragma GCC target ("sse4a,3dnow,avx,avx2,fma4,xop,aes,pclmul,popcnt,abm,lzcnt,bmi,bmi2,tbm,lwp,fsgsbase,rdrnd,f16c,fma,rtm,rdseed,prfchw,adx,fxsr,xsaveopt,sha,xsavec,xsaves,clflushopt,clwb,mwaitx,clzero,pku,sgx,rdpid,gfni,vpclmulqdq,pconfig,wbnoinvd,enqcmd,avx512vp2intersect,serialize,tsxldtrk,amx-tile,amx-int8,amx-bf16,kl,widekl,avxvnni,avxifma,avxvnniint8,avxneconvert,cmpccxadd,amx-fp16,prefetchi,raoint,amx-complex,avxvnniint16,sm3,sha512,sm4,avx10.2,amx-avx512,amx-tf32,amx-fp8,movrs,amx-movrs") #include <x86intrin.h> diff --git a/gcc/testsuite/gcc.target/riscv/predef-profiles-1.c b/gcc/testsuite/gcc.target/riscv/predef-profiles-1.c new file mode 100644 index 0000000..5fc17ab --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/predef-profiles-1.c @@ -0,0 +1,11 @@ +/* { dg-do compile } */ +/* { dg-options "-march=rvi20u64 -mabi=lp64" } */ + +int main () { + +#ifndef __riscv_rvi20u64 +#error "__riscv_rvi20u64" +#endif + + return 0; +}
\ No newline at end of file diff --git a/gcc/testsuite/gcc.target/riscv/predef-profiles-2.c b/gcc/testsuite/gcc.target/riscv/predef-profiles-2.c new file mode 100644 index 0000000..86f2771 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/predef-profiles-2.c @@ -0,0 +1,11 @@ +/* { dg-do compile } */ +/* { dg-options "-march=rvi20u32 -mabi=ilp32" } */ + +int main () { + +#ifndef __riscv_rvi20u32 +#error "__riscv_rvi20u32" +#endif + + return 0; +}
\ No newline at end of file diff --git a/gcc/testsuite/gcc.target/riscv/predef-profiles-3.c b/gcc/testsuite/gcc.target/riscv/predef-profiles-3.c new file mode 100644 index 0000000..7787549 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/predef-profiles-3.c @@ -0,0 +1,11 @@ +/* { dg-do compile } */ +/* { dg-options "-march=rva20u64 -mabi=lp64d" } */ + +int main () { + +#ifndef __riscv_rva20u64 +#error "__riscv_rva20u64" +#endif + + return 0; +}
\ No newline at end of file diff --git a/gcc/testsuite/gcc.target/riscv/predef-profiles-4.c b/gcc/testsuite/gcc.target/riscv/predef-profiles-4.c new file mode 100644 index 0000000..abb20b7 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/predef-profiles-4.c @@ -0,0 +1,11 @@ +/* { dg-do compile } */ +/* { dg-options "-march=rva22u64 -mabi=lp64d" } */ + +int main () { + +#ifndef __riscv_rva22u64 +#error "__riscv_rva22u64" +#endif + + return 0; +}
\ No newline at end of file diff --git a/gcc/testsuite/gcc.target/riscv/predef-profiles-5.c b/gcc/testsuite/gcc.target/riscv/predef-profiles-5.c new file mode 100644 index 0000000..0840cdc --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/predef-profiles-5.c @@ -0,0 +1,11 @@ +/* { dg-do compile } */ +/* { dg-options "-march=rva23u64 -mabi=lp64d" } */ + +int main () { + +#ifndef __riscv_rva23u64 +#error "__riscv_rva23u64" +#endif + + return 0; +}
\ No newline at end of file diff --git a/gcc/testsuite/gcc.target/riscv/predef-profiles-6.c b/gcc/testsuite/gcc.target/riscv/predef-profiles-6.c new file mode 100644 index 0000000..7159780 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/predef-profiles-6.c @@ -0,0 +1,11 @@ +/* { dg-do compile } */ +/* { dg-options "-march=rva23s64 -mabi=lp64d" } */ + +int main () { + +#ifndef __riscv_rva23s64 +#error "__riscv_rva23s64" +#endif + + return 0; +}
\ No newline at end of file diff --git a/gcc/testsuite/gcc.target/riscv/predef-profiles-7.c b/gcc/testsuite/gcc.target/riscv/predef-profiles-7.c new file mode 100644 index 0000000..1366159 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/predef-profiles-7.c @@ -0,0 +1,11 @@ +/* { dg-do compile } */ +/* { dg-options "-march=rvb23u64 -mabi=lp64d" } */ + +int main () { + +#ifndef __riscv_rvb23u64 +#error "__riscv_rvb23u64" +#endif + + return 0; +}
\ No newline at end of file diff --git a/gcc/testsuite/gcc.target/riscv/predef-profiles-8.c b/gcc/testsuite/gcc.target/riscv/predef-profiles-8.c new file mode 100644 index 0000000..c0c5003 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/predef-profiles-8.c @@ -0,0 +1,11 @@ +/* { dg-do compile } */ +/* { dg-options "-march=rvb23s64 -mabi=lp64d" } */ + +int main () { + +#ifndef __riscv_rvb23s64 +#error "__riscv_rvb23s64" +#endif + + return 0; +}
\ No newline at end of file diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp index 1acfb37..4ee8d12 100644 --- a/gcc/testsuite/lib/target-supports.exp +++ b/gcc/testsuite/lib/target-supports.exp @@ -11238,17 +11238,6 @@ proc check_effective_target_amx_tf32 { } { } "-mamx-tf32" ] } -# Return 1 if amx-transpose instructions can be compiled. -proc check_effective_target_amx_transpose { } { - return [check_no_compiler_messages amx_transpose object { - void - foo () - { - __asm__ volatile ("ttransposed\t%%tmm1, %%tmm2" ::); - } - } "-mamx-transpose" ] -} - # Return 1 if amx-fp8 instructions can be compiled. proc check_effective_target_amx_fp8 { } { return [check_no_compiler_messages amx_fp8 object { |