Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

strusPattern works on Intel 64-bit CPUs and 32-bit CPUs with SSSE3 only (not SPARC, not ARM) #2

Open
andreasbaumann opened this issue Jun 29, 2016 · 6 comments

Comments

@andreasbaumann
Copy link
Collaborator

andreasbaumann commented Jun 29, 2016

Several reasons:

  • old machines without SSSE3 fail
  • non-Intel architectures like ARM and SPARC are not supported
  • Travis builds fail because there are too many errors and Travis aborts the build:
...
/home/travis/build/andreasbaumann/strusStream/3rdParty/hyperscan/src/nfa/limex_runtime.h:103:46: note: in expansion of macro ‘NFA_EXEC_LIM_SHIFT’
             succ = JOIN(or_, gls_type)(succ, NFA_EXEC_LIM_SHIFT(gls_type, 1)); \
                                              ^

The log length has exceeded the limit of 4 MB (this usually means that the test suite is raising the same exception over and over).

The job has been terminated
  • FreeBSD/OSX: clang issue around some missing builtin-functions:
 Building CXX object src/CMakeFiles/local_rulematch.dir/ruleMatcherAutomaton.cpp.o
/root/strusStream/src/ruleMatcherAutomaton.cpp:153:17: fatal error: use of undeclared identifier
      '__builtin_ia32_pcmpeqd128'; did you mean '__builtin_ia32_pcmpeqd'?
                __v4si cmp0 = __builtin_ia32_pcmpeqd128( event4, eventblkar[ ii + 0]);
                              ^~~~~~~~~~~~~~~~~~~~~~~~~
                              __builtin_ia32_pcmpeqd
/usr/include/clang/3.4.1/mmintrin.h:358:19: note: '__builtin_ia32_pcmpeqd' declared here
    return (__m64)__builtin_ia32_pcmpeqd((__v2si)__m1, (__v2si)__m2);
                  ^
1 error generated.
*** Error code 1

Stop.
@patrickfrey
Copy link
Owner

__builtin_ia32_pcmpeqd128
in ruleMatcherAutomaton.cpp can be replaced.

Meanwhile Workaround: #define STRUS_USE_SSE_SCAN_TRIGGERS in ruleMatcherAutomaton.cpp disable for FreeBSD/OSX.

@andreasbaumann
Copy link
Collaborator Author

andreasbaumann commented Jun 29, 2016

The Travis build issue can be solved by using more relaxed compilation flags for hyperscan.

@andreasbaumann
Copy link
Collaborator Author

Now stuck in:

[ 88%] Building CXX object src/CMakeFiles/local_rulematch.dir/ruleMatcherAutomaton.cpp.o
/root/strusStream/src/ruleMatcherAutomaton.cpp:205:45: fatal error: use of undeclared identifier
      '__builtin_assume_aligned'
        const uint32_t* eventAr = (const uint32_t*)__builtin_assume_aligned( rec.m_eventAr, Event...
                                                   ^
1 error generated.

@patrickfrey
Copy link
Owner

This one fixed also.

@andreasbaumann
Copy link
Collaborator Author

andreasbaumann commented Oct 22, 2016

Travis Ubuntu g++ builds now. After fixing the compilation flags to the genuine hyperscan compilation flags we get almost no warnings anymore. clang and MacOS Travis builds still fail due to too many warnings in Boost.

@andreasbaumann
Copy link
Collaborator Author

There is a problem with clang though:

https://travis-ci.org/andreasbaumann/strusPattern/jobs/169699554

[ 94%] Building CXX object src/CMakeFiles/local_rulematch.dir/ruleMatcherAutomaton.cpp.o
/home/travis/build/andreasbaumann/strusPattern/src/ruleMatcherAutomaton.cpp:170:17: fatal error: 
      use of undeclared identifier '__builtin_ia32_pcmpeqd128'; did you mean
      '__builtin_ia32_pcmpeqd'?
                __v4si cmp0 = __builtin_ia32_pcmpeqd128( event4, eventbl...
                              ^~~~~~~~~~~~~~~~~~~~~~~~~
                              __builtin_ia32_pcmpeqd
/usr/local/clang-3.5.0/bin/../lib/clang/3.5.0/include/mmintrin.h:358:19: note: 
      '__builtin_ia32_pcmpeqd' declared here
    return (__m64)__builtin_ia32_pcmpeqd((__v2si)__m1, (__v2si)__m2);
                  ^
1 error generated.

@andreasbaumann andreasbaumann changed the title builds fail in hyperscan strusPattern works on Intel 64-bit CPUs and 32-bit CPUs with SSSE3 only (not SPARC, not ARM) Apr 6, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants