From a68e32b8e4b4c03c81e3a4b7560d52fef2d16088 Mon Sep 17 00:00:00 2001 From: Richard Sandiford Date: Thu, 13 Mar 2025 12:03:04 +0000 Subject: [PATCH] testsuite: Remove sve/pre_cond_share_1.c [PR115248] gcc.target/aarch64/sve/pre_cond_share_1.c started failing after r15-276-gbed6ec161be8c5ca. However, that was incidental. The test's inner loop is duplicated by -fswitch-loops and that patch happened to change the copy of the loop that was not the original focus of the test. The test was added as part of r14-4713-g4b39aeef594f311e (patch A). Before patch A we had: mask__109.48_201 = vect_distbb_170.43_191 < vect_cst__200; _263 = .COND_MUL (mask__109.48_201, vect_iftmp.45_195, vect_cst__198, { 0.0, ... }); vect_prephitmp_153.50_205 = .VCOND (vect_distbb_170.43_191, { 0.0, ... }, _263, vect_cst__198, 112); which, expanding the .VCOND, is equivalent to: mask__102.46_197 = vect_distbb_170.43_191 >= { 0.0, ... }; mask__109.48_201 = vect_distbb_170.43_191 < vect_cst__200; _263 = .COND_MUL (mask__109.48_201, vect_iftmp.45_195, vect_cst__198, { 0.0, ... }); vect_prephitmp_153.50_205 = mask__102.46_197 ? _263 : vect_cst__198 After patch A we had: mask__102.46_197 = vect_distbb_170.43_191 >= { 0.0, ... }; mask__109.48_201 = vect_distbb_170.43_191 < vect_cst__200; _70 = mask__102.46_197 & mask__109.48_201; vect_prephitmp_153.50_205 = .COND_MUL (_70, vect_iftmp.45_195, vect_cst__198, { 0.0, ... }); But this changes the behaviour when vect_distbb_170.43_191 < { 0.0, ... }. In that case, the original code would pick an else value of vect_cst__198, whereas the new code would pick an else value of { 0.0, ... }. That was fixed in r14-8668-g8123f3ca3fd89103 (PR113607, patch B), but fixing the bug (rightly) reverted the code to the previous output. Patch B therefore XFAILed the thing that patch A was originally testing. Since the test was added for patch A and since patch A seems to generate incorrect code for the test, I think we should just remove it. gcc/testsuite/ PR testsuite/115248 * gcc.target/aarch64/sve/pre_cond_share_1.c: Delete --- .../gcc.target/aarch64/sve/pre_cond_share_1.c | 132 ------------------ 1 file changed, 132 deletions(-) delete mode 100644 gcc/testsuite/gcc.target/aarch64/sve/pre_cond_share_1.c diff --git a/gcc/testsuite/gcc.target/aarch64/sve/pre_cond_share_1.c b/gcc/testsuite/gcc.target/aarch64/sve/pre_cond_share_1.c deleted file mode 100644 index e4f754d739c..00000000000 --- a/gcc/testsuite/gcc.target/aarch64/sve/pre_cond_share_1.c +++ /dev/null @@ -1,132 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-Ofast -fdump-tree-optimized" } */ - -#include -#include -#include -#include - -typedef struct __attribute__((__packed__)) _Atom { - float x, y, z; - int32_t type; -} Atom; - -typedef struct __attribute__((__packed__)) _FFParams { - int32_t hbtype; - float radius; - float hphb; - float elsc; -} FFParams; - -#ifndef PPWI -#define PPWI (64) -#endif - -#ifndef ITERS -#define ITERS 8 -#endif - -#define DIFF_TOLERANCE_PCT 0.025f - -#define POSES_SIZE 393216 -#define PROTEIN_SIZE 938 -#define LIGAND_SIZE 26 -#define FORCEFIELD_SIZE 34 - -#define ZERO 0.0f -#define QUARTER 0.25f -#define HALF 0.5f -#define ONE 1.0f -#define TWO 2.0f -#define FOUR 4.0f -#define CNSTNT 45.0f - -// Energy evaluation parameters -#define HBTYPE_F 70 -#define HBTYPE_E 69 -#define HARDNESS 38.0f -#define NPNPDIST 5.5f -#define NPPDIST 1.0f - -void -fasten_main(size_t group, size_t ntypes, size_t nposes, size_t natlig, size_t natpro, // - const Atom *protein, const Atom *ligand, // - const float *transforms_0, const float *transforms_1, const float *transforms_2, // - const float *transforms_3, const float *transforms_4, const float *transforms_5, // - const FFParams *forcefield, float *energies // -) { - - float etot[PPWI]; - float lpos_x[PPWI]; - - for (int l = 0; l < PPWI; l++) { - etot[l] = 0.f; - lpos_x[l] = 0.f; - } - - // Loop over ligand atoms - for (int il = 0; il < natlig; il++) { - // Load ligand atom data - const Atom l_atom = ligand[il]; - const FFParams l_params = forcefield[l_atom.type]; - const int lhphb_ltz = l_params.hphb < 0.f; - const int lhphb_gtz = l_params.hphb > 0.f; - - // Transform ligand atom - - // Loop over protein atoms - for (int ip = 0; ip < natpro; ip++) { - // Load protein atom data - const Atom p_atom = protein[ip]; - const FFParams p_params = forcefield[p_atom.type]; - - const float radij = p_params.radius + l_params.radius; - const float r_radij = ONE / radij; - - const float elcdst = (p_params.hbtype == HBTYPE_F && l_params.hbtype == HBTYPE_F) ? FOUR - : TWO; - const float elcdst1 = (p_params.hbtype == HBTYPE_F && l_params.hbtype == HBTYPE_F) - ? QUARTER : HALF; - const int type_E = ((p_params.hbtype == HBTYPE_E || l_params.hbtype == HBTYPE_E)); - - const int phphb_ltz = p_params.hphb < 0.f; - const int phphb_gtz = p_params.hphb > 0.f; - const int phphb_nz = p_params.hphb != 0.f; - const float p_hphb = p_params.hphb * (phphb_ltz && lhphb_gtz ? -ONE : ONE); - const float l_hphb = l_params.hphb * (phphb_gtz && lhphb_ltz ? -ONE : ONE); - const float distdslv = (phphb_ltz ? (lhphb_ltz ? NPNPDIST : NPPDIST) : (lhphb_ltz - ? NPPDIST - : -FLT_MAX)); - const float r_distdslv = ONE / distdslv; - - const float chrg_init = l_params.elsc * p_params.elsc; - const float dslv_init = p_hphb + l_hphb; - - for (int l = 0; l < PPWI; l++) { - // Calculate distance between atoms - const float x = lpos_x[l] - p_atom.x; - const float distij = (x * x); - - // Calculate the sum of the sphere radii - const float distbb = distij - radij; - - const int zone1 = (distbb < ZERO); - - // Calculate formal and dipole charge interactions - float chrg_e = chrg_init * ((zone1 ? ONE : (ONE - distbb * elcdst1)) * - (distbb < elcdst ? ONE : ZERO)); - float neg_chrg_e = -fabsf(chrg_e); - chrg_e = type_E ? neg_chrg_e : chrg_e; - etot[l] += chrg_e * CNSTNT; - } - } - } - - // Write result - for (int l = 0; l < PPWI; l++) { - energies[group * PPWI + l] = etot[l] * HALF; - } -} - -/* { dg-final { scan-tree-dump-times {\.COND_MUL} 1 "optimized" } } */ -/* { dg-final { scan-tree-dump-times {\.VCOND} 1 "optimized" { xfail *-*-* } } } */