Closed
Bug 786995
Opened 11 years ago
Closed 11 years ago
configure should check for SSSE3 support in the whole toolchain
Categories
(Firefox Build System :: General, defect)
Tracking
(Not tracked)
RESOLVED
FIXED
mozilla18
People
(Reporter: gaston, Assigned: gaston)
References
Details
Attachments
(1 file)
2.19 KB,
patch
|
ted
:
review+
|
Details | Diff | Splinter Review |
Followup to bug 759683, i've tried building m-c on OpenBSD with gcc 4.6 and it bails out when building the skia SSSE3 file with : /home/landry/src/mozilla-central/gfx/skia/src/opts/SkBitmapProcState_opts_SSSE3.cpp {standard input}: Assembler messages: {standard input}:283: Error: no such instruction: `pmaddubsw %xmm2,%xmm3' {standard input}:400: Error: no such instruction: `pmaddubsw %xmm0,%xmm1' {standard input}:544: Error: no such instruction: `pmaddubsw %xmm0,%xmm1' {standard input}:806: Error: no such instruction: `pmaddubsw %xmm1,%xmm4' {standard input}:880: Error: no such instruction: `pmaddubsw %xmm1,%xmm4' {standard input}:982: Error: no such instruction: `pmaddubsw %xmm0,%xmm1' {standard input}:1058: Error: no such instruction: `pmaddubsw %xmm0,%xmm1' {standard input}:1212: Error: no such instruction: `pmaddubsw %xmm0,%xmm1' Of course our as from binutils 2.15 doesnt support pmaddubsw. sigh. The configure test setting HAVE_COMPILER_FLAG_MSSSE3 only checks if the compiler itself supports -mssse3, but not the whole toolchain. SIGH. Doing a configure test as : # include <tmmintrin.h> int main(){ __m128i a0, a1; _mm_maddubs_epi16(a0, a1); } succeeds with eg++ -mssse3 so i don't know how to actually test for the support of pmaddubsw in as..
Assignee | ||
Comment 1•11 years ago
|
||
As what was done in bug 778414 to test for @unwind sections, maybe a configure test doing : echo '.text\npmaddubsw %xmm2,%xmm3' > foo.s && gcc -mssse3 foo.s in addition to check that the compiler itself support -mssse3 might do the trick. Here with my as 2.15 it bails out nicely with foo.s: Assembler messages: foo.s:2: Error: no such instruction: `pmaddubsw %xmm2,%xmm3' Can someone check what it does on a more decent/recent binutils/as ?
Comment 2•11 years ago
|
||
Works for me (after tweaking the commandline slightly) with: gcc-4.6.real (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3 GNU ld (GNU Binutils for Ubuntu) 2.22
Assignee | ||
Comment 3•11 years ago
|
||
SkBitmapProcState_opts_SSSE3.cpp builds fine with clang 3.1 too, as does the foo.s test. So would that be okay to change the define HAVE_COMPILER_FLAG_MSSSE3 to HAVE_TOOLCHAIN_SUPPORT_MSSSE3 (if needed) and use that snippet as a test for proper ssse3 support ?
Assignee | ||
Comment 4•11 years ago
|
||
This seems to do the trick here, i'm getting 'no' for gcc 4.6/as 2.15 and 'yes' for clang 3.1 and its builtin as. The key change is - AC_TRY_COMPILE(,,AC_MSG_RESULT([yes]) + AC_TRY_COMPILE([asm ("pmaddubsw %xmm2,%xmm3");],,AC_MSG_RESULT([yes]) Builds whole m-c fine with clang, currently building with gcc 4.6.
Assignee: nobody → landry
Attachment #656836 -
Flags: review?(ted.mielczarek)
Updated•11 years ago
|
Attachment #656836 -
Flags: review?(ted.mielczarek) → review+
Assignee | ||
Comment 5•11 years ago
|
||
https://hg.mozilla.org/integration/mozilla-inbound/rev/7d0ccb757860
Comment 6•11 years ago
|
||
https://hg.mozilla.org/mozilla-central/rev/7d0ccb757860
Status: NEW → RESOLVED
Closed: 11 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla18
Updated•6 years ago
|
Product: Core → Firefox Build System
You need to log in
before you can comment on or make changes to this bug.
Description
•