Closed
Bug 786995
Opened 12 years ago
Closed 12 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•12 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•12 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•12 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•12 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•12 years ago
|
Attachment #656836 -
Flags: review?(ted.mielczarek) → review+
Assignee | ||
Comment 5•12 years ago
|
||
Comment 6•12 years ago
|
||
Status: NEW → RESOLVED
Closed: 12 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla18
Updated•7 years ago
|
Product: Core → Firefox Build System
You need to log in
before you can comment on or make changes to this bug.
Description
•