public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/98387] New: GCC >= 6 cannot inline _mm_cmp_ps on SSE targets
@ 2020-12-19 5:36 danielhanchen at gmail dot com
2020-12-19 6:10 ` [Bug target/98387] " danielhanchen at gmail dot com
` (4 more replies)
0 siblings, 5 replies; 6+ messages in thread
From: danielhanchen at gmail dot com @ 2020-12-19 5:36 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98387
Bug ID: 98387
Summary: GCC >= 6 cannot inline _mm_cmp_ps on SSE targets
Product: gcc
Version: 10.2.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: danielhanchen at gmail dot com
Target Milestone: ---
https://gcc.godbolt.org/z/493ead
GCC since version 6.1 cannot inline _mm_cmp_ps on targets supporting only SSE
(Nehalem, Tremont etc). From >= SandyBridge, everything inlines fine.
_mm_cmp_ps is called by using it as a function argument (ie auto function).
All SSE only machines use a jmp to _mm_cmp_ps, but it should be inlined.
O3 ffast-math is also used, and the function is declared inline.
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug target/98387] GCC >= 6 cannot inline _mm_cmp_ps on SSE targets
2020-12-19 5:36 [Bug c++/98387] New: GCC >= 6 cannot inline _mm_cmp_ps on SSE targets danielhanchen at gmail dot com
@ 2020-12-19 6:10 ` danielhanchen at gmail dot com
2020-12-19 14:21 ` hjl.tools at gmail dot com
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: danielhanchen at gmail dot com @ 2020-12-19 6:10 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98387
--- Comment #1 from Daniel Han-Chen <danielhanchen at gmail dot com> ---
Oh I just noticed _mm_cmp_ps isn't actually supported for SSE targets even in
Intel's Intrinsics Guide: [_mm_cmp_ps first was supported in AVX]
https://software.intel.com/sites/landingpage/IntrinsicsGuide/#expand=5236,827,33,5224,447,456,4085,3864,5224,4179,4118,4115,4115,4121,3864,3870,5579,2030,3319,2809,4127,5156,4179,4201,3536,3539,3533,2184,3505,3533,3542,3505,3533,1606,4174,2809,5576,5578,2063,3895,3893,2484,3864,4076,3864,687,689,689,3544,771,1648,1647,5878,5903,743&techs=SSE,SSE2,SSE3,SSSE3,SSE4_1,SSE4_2&text=cmpps
error: inlining failed in call to always_inline '__m128 _mm_cmp_ps(__m128,
__m128, int)': target specific option mismatch
390 | _mm_cmp_ps (__m128 __X, __m128 __Y, const int __P)
_mm_cmp[*]_ps ie _mm_cmpeq_ps and derivatives successfully inline.
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug target/98387] GCC >= 6 cannot inline _mm_cmp_ps on SSE targets
2020-12-19 5:36 [Bug c++/98387] New: GCC >= 6 cannot inline _mm_cmp_ps on SSE targets danielhanchen at gmail dot com
2020-12-19 6:10 ` [Bug target/98387] " danielhanchen at gmail dot com
@ 2020-12-19 14:21 ` hjl.tools at gmail dot com
2020-12-19 14:52 ` danielhanchen at gmail dot com
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: hjl.tools at gmail dot com @ 2020-12-19 14:21 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98387
H.J. Lu <hjl.tools at gmail dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Resolution|--- |INVALID
Status|UNCONFIRMED |RESOLVED
--- Comment #2 from H.J. Lu <hjl.tools at gmail dot com> ---
_mm_cmp_ps is an AVX intrinsic.
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug target/98387] GCC >= 6 cannot inline _mm_cmp_ps on SSE targets
2020-12-19 5:36 [Bug c++/98387] New: GCC >= 6 cannot inline _mm_cmp_ps on SSE targets danielhanchen at gmail dot com
2020-12-19 6:10 ` [Bug target/98387] " danielhanchen at gmail dot com
2020-12-19 14:21 ` hjl.tools at gmail dot com
@ 2020-12-19 14:52 ` danielhanchen at gmail dot com
2020-12-19 18:01 ` hjl.tools at gmail dot com
2020-12-20 2:53 ` danielhanchen at gmail dot com
4 siblings, 0 replies; 6+ messages in thread
From: danielhanchen at gmail dot com @ 2020-12-19 14:52 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98387
--- Comment #3 from Daniel Han-Chen <danielhanchen at gmail dot com> ---
(In reply to H.J. Lu from comment #2)
> _mm_cmp_ps is an AVX intrinsic.
Yep noticed _mm_cmp_ps is only in AVX. The weird part is it actually causes no
errors when used on SSE only targets [ie Nehalem], and GCC continues compiling.
Is this supposed to be normal behaivor?
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug target/98387] GCC >= 6 cannot inline _mm_cmp_ps on SSE targets
2020-12-19 5:36 [Bug c++/98387] New: GCC >= 6 cannot inline _mm_cmp_ps on SSE targets danielhanchen at gmail dot com
` (2 preceding siblings ...)
2020-12-19 14:52 ` danielhanchen at gmail dot com
@ 2020-12-19 18:01 ` hjl.tools at gmail dot com
2020-12-20 2:53 ` danielhanchen at gmail dot com
4 siblings, 0 replies; 6+ messages in thread
From: hjl.tools at gmail dot com @ 2020-12-19 18:01 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98387
--- Comment #4 from H.J. Lu <hjl.tools at gmail dot com> ---
(In reply to Daniel Han-Chen from comment #3)
> (In reply to H.J. Lu from comment #2)
> > _mm_cmp_ps is an AVX intrinsic.
>
> Yep noticed _mm_cmp_ps is only in AVX. The weird part is it actually causes
> no errors when used on SSE only targets [ie Nehalem], and GCC continues
> compiling.
>
> Is this supposed to be normal behaivor?
GCC treats it like an undefined function.
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug target/98387] GCC >= 6 cannot inline _mm_cmp_ps on SSE targets
2020-12-19 5:36 [Bug c++/98387] New: GCC >= 6 cannot inline _mm_cmp_ps on SSE targets danielhanchen at gmail dot com
` (3 preceding siblings ...)
2020-12-19 18:01 ` hjl.tools at gmail dot com
@ 2020-12-20 2:53 ` danielhanchen at gmail dot com
4 siblings, 0 replies; 6+ messages in thread
From: danielhanchen at gmail dot com @ 2020-12-20 2:53 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98387
--- Comment #5 from Daniel Han-Chen <danielhanchen at gmail dot com> ---
(In reply to H.J. Lu from comment #4)
> (In reply to Daniel Han-Chen from comment #3)
> > (In reply to H.J. Lu from comment #2)
> > > _mm_cmp_ps is an AVX intrinsic.
> >
> > Yep noticed _mm_cmp_ps is only in AVX. The weird part is it actually causes
> > no errors when used on SSE only targets [ie Nehalem], and GCC continues
> > compiling.
> >
> > Is this supposed to be normal behaivor?
>
> GCC treats it like an undefined function.
Thanks! Sorry I probably might have asked some really dumb questions. But also
thanks for taking your time in answering them! :) Appreciate it!
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2020-12-20 2:53 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-12-19 5:36 [Bug c++/98387] New: GCC >= 6 cannot inline _mm_cmp_ps on SSE targets danielhanchen at gmail dot com
2020-12-19 6:10 ` [Bug target/98387] " danielhanchen at gmail dot com
2020-12-19 14:21 ` hjl.tools at gmail dot com
2020-12-19 14:52 ` danielhanchen at gmail dot com
2020-12-19 18:01 ` hjl.tools at gmail dot com
2020-12-20 2:53 ` danielhanchen at gmail dot com
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).