https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91533
Uroš Bizjak <ubizjak at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |ASSIGNED Last reconfirmed| |2019-08-24 Assignee|unassigned at gcc dot gnu.org |ubizjak at gmail dot com Target Milestone|--- |8.3 Ever confirmed|0 |1 --- Comment #1 from Uroš Bizjak <ubizjak at gmail dot com> --- (In reply to Matthias Kretz from comment #0) > Test case (cf. https://godbolt.org/z/IfL1mF): > > using V [[gnu::vector_size(8)]] = int; > > V f(V a, long double& x) { > a = a < 0 ? -a : a; > x += 1; > return a; > } > > Compile with e.g. `-O2 -march=skylake`. This generates a call to `PABSD mm1, > mm2/m64` but fails to call `EMMS`. It even interleaves the FPU instructions > with the MMX instructions. GCC 10 has a fix, it simply calls `PABSD xmm1, > xmm2/m128`. Yes, I have to backport the fix. MMX patterns should not be named.