This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug target/83240] x86_64 vectorized sqrt of denormal yields -inf when DAZ=0


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83240

--- Comment #4 from Marc Glisse <glisse at gcc dot gnu.org> ---
(this PR is vaguely related to PR 57974)

Unrelated, but I am surprised we don't end up computing at compile-time in this
example. We vectorize sqrt before unrolling the first loop and getting the
constants. And by the time we see

  a[0] = 1.00000003593912982384429052190829644815948084413615813091e-36;
  a[1] = 9.99999991097578965450144252348949782882164643167775990862e-38;
  a[2] = 9.99999935045640392457461415399766451285519391957298315801e-39;
  a[3] = 1.0000002153053332574208756001456831092687456480096866911e-39;
  vect__5.2_42 = MEM[(float *)&a];
  vect__6.3_39 = SQRT (vect__5.2_42);

it is too late for SLP to create a constant vector. Store merging merges the
stores by pairs, not good enough, and anyway this is the end of the pipeline,
we wouldn't have any passes left to optimize the result.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]