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

Build failure of TrampolineTest.cpp on non-AVX platform (not needed to build and run OrbitService and Orbit) #4874

Open
illwieckz opened this issue Jun 1, 2024 · 0 comments

Comments

@illwieckz
Copy link
Contributor

illwieckz commented Jun 1, 2024

For the Unvanquished open source game running the Daemon game engine, I'm accustomed to test the engine and the game on a large range of hardware, and this not only includes many GPU brands and models from various generations, it also includes many motherboards with CPUs from various generations. And the older and low-end the hardware is, the most I need to profile the game for performance!

By default conan built Orbit and its dependencies with -march=sandybridge, and then on some system when running OrbitService I got:

./OrbitService
Illegal instruction (core dumped)
[14121.895663] traps: OrbitService[447842] trap invalid opcode ip:5d04f038768c sp:7ffcea928160 error:0 in OrbitService[5d04efaed000+d49000]

Which was annoying, because one can say the older and featureless the hardware is, the more you need to profile your game to make sure it runs fast on it! So a profiling tool not able to profile games on low-end hardware sounded like a missed shot to me.

So what I did is that I edited ${HOME}/.conan/profiles/linux_common to replace -march=sandybridge with -march=x86-64, then ran conan remove -f '*' to prune all the already built dependencies, then deleted the build_default_release folder and ran ./bootstrap-orbit.sh, then I got that build error:

src/UserSpaceInstrumentation/TrampolineTest.cpp: In function ‘int orbit_user_space_instrumentation::CheckM256iParameters(__m256i, __m256i, __m256i, __m256i, __m256i, __m256i, __m256i, __m256i)’:
src/UserSpaceInstrumentation/TrampolineTest.cpp:1033:42: note: the ABI for passing parameters with 32-byte alignment has changed in GCC 4.6
 1033 | extern "C" __attribute__((noinline)) int CheckM256iParameters(__m256i p0, __m256i p1, __m256i p2,
      |                                          ^~~~~~~~~~~~~~~~~~~~
src/UserSpaceInstrumentation/TrampolineTest.cpp: In member function ‘virtual void orbit_user_space_instrumentation::InstrumentFunctionTest_CheckM256iParameters_Test::TestBody()’:
src/UserSpaceInstrumentation/TrampolineTest.cpp:1055:31: warning: AVX vector return without AVX enabled changes the ABI [-Wpsabi]
 1055 |           CheckM256iParameters(_mm256_set1_epi64x(0), _mm256_set1_epi64x(0), _mm256_set1_epi64x(0),
      |           ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 1056 |                                _mm256_set1_epi64x(0), _mm256_set1_epi64x(0), _mm256_set1_epi64x(0),
      |                                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 1057 |                                _mm256_set1_epi64x(0), _mm256_set1_epi64x(0));
      |                                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/lib/gcc/x86_64-linux-gnu/11/include/immintrin.h:43,
                 from orbit/src/UserSpaceInstrumentation/TrampolineTest.cpp:12:
/usr/lib/gcc/x86_64-linux-gnu/11/include/avxintrin.h: In function ‘int orbit_user_space_instrumentation::CheckM256iParameters(__m256i, __m256i, __m256i, __m256i, __m256i, __m256i, __m256i, __m256i)’:
/usr/lib/gcc/x86_64-linux-gnu/11/include/avxintrin.h:558:1: error: inlining failed in call to ‘always_inline’ ‘long long int _mm256_extract_epi64(__m256i, int)’: target specific option mismatch
  558 | _mm256_extract_epi64 (__m256i __X, const int __N)
      | ^~~~~~~~~~~~~~~~~~~~
In file included from orbit/src/UserSpaceInstrumentation/TrampolineTest.cpp:40:
src/UserSpaceInstrumentation/TrampolineTest.cpp:1036:35: note: called from here
 1036 |   ORBIT_CHECK(_mm256_extract_epi64(p0, 0) == 0 && _mm256_extract_epi64(p1, 0) == 0 &&
      |               ~~~~~~~~~~~~~~~~~~~~^~~~~~~
src/OrbitBase/include/OrbitBase/Logging.h:66:50: note: in definition of macro ‘ORBIT_UNLIKELY’
   66 | #define ORBIT_UNLIKELY(cond) __builtin_expect(!!(cond), 0)
      |                                                  ^~~~
src/UserSpaceInstrumentation/TrampolineTest.cpp:1036:3: note: in expansion of macro ‘ORBIT_CHECK’
 1036 |   ORBIT_CHECK(_mm256_extract_epi64(p0, 0) == 0 && _mm256_extract_epi64(p1, 0) == 0 &&
      |   ^~~~~~~~~~~
In file included from /usr/lib/gcc/x86_64-linux-gnu/11/include/immintrin.h:43,
                 from orbit/src/UserSpaceInstrumentation/TrampolineTest.cpp:12:
/usr/lib/gcc/x86_64-linux-gnu/11/include/avxintrin.h:558:1: error: inlining failed in call to ‘always_inline’ ‘long long int _mm256_extract_epi64(__m256i, int)’: target specific option mismatch
  558 | _mm256_extract_epi64 (__m256i __X, const int __N)
      | ^~~~~~~~~~~~~~~~~~~~
In file included from orbit/src/UserSpaceInstrumentation/TrampolineTest.cpp:40:
src/UserSpaceInstrumentation/TrampolineTest.cpp:1036:71: note: called from here
 1036 |   ORBIT_CHECK(_mm256_extract_epi64(p0, 0) == 0 && _mm256_extract_epi64(p1, 0) == 0 &&
      |                                                   ~~~~~~~~~~~~~~~~~~~~^~~~~~~
src/OrbitBase/include/OrbitBase/Logging.h:66:50: note: in definition of macro ‘ORBIT_UNLIKELY’
   66 | #define ORBIT_UNLIKELY(cond) __builtin_expect(!!(cond), 0)
      |                                                  ^~~~
src/UserSpaceInstrumentation/TrampolineTest.cpp:1036:3: note: in expansion of macro ‘ORBIT_CHECK’
 1036 |   ORBIT_CHECK(_mm256_extract_epi64(p0, 0) == 0 && _mm256_extract_epi64(p1, 0) == 0 &&
      |   ^~~~~~~~~~~
In file included from /usr/lib/gcc/x86_64-linux-gnu/11/include/immintrin.h:43,
                 from orbit/src/UserSpaceInstrumentation/TrampolineTest.cpp:12:
/usr/lib/gcc/x86_64-linux-gnu/11/include/avxintrin.h:558:1: error: inlining failed in call to ‘always_inline’ ‘long long int _mm256_extract_epi64(__m256i, int)’: target specific option mismatch
  558 | _mm256_extract_epi64 (__m256i __X, const int __N)
      | ^~~~~~~~~~~~~~~~~~~~
In file included from orbit/src/UserSpaceInstrumentation/TrampolineTest.cpp:40:
src/UserSpaceInstrumentation/TrampolineTest.cpp:1037:35: note: called from here
 1037 |               _mm256_extract_epi64(p2, 0) == 0 && _mm256_extract_epi64(p3, 0) == 0 &&
      |               ~~~~~~~~~~~~~~~~~~~~^~~~~~~
src/OrbitBase/include/OrbitBase/Logging.h:66:50: note: in definition of macro ‘ORBIT_UNLIKELY’
   66 | #define ORBIT_UNLIKELY(cond) __builtin_expect(!!(cond), 0)
      |                                                  ^~~~
src/UserSpaceInstrumentation/TrampolineTest.cpp:1036:3: note: in expansion of macro ‘ORBIT_CHECK’
 1036 |   ORBIT_CHECK(_mm256_extract_epi64(p0, 0) == 0 && _mm256_extract_epi64(p1, 0) == 0 &&
      |   ^~~~~~~~~~~
In file included from /usr/lib/gcc/x86_64-linux-gnu/11/include/immintrin.h:43,
                 from orbit/src/UserSpaceInstrumentation/TrampolineTest.cpp:12:
/usr/lib/gcc/x86_64-linux-gnu/11/include/avxintrin.h:558:1: error: inlining failed in call to ‘always_inline’ ‘long long int _mm256_extract_epi64(__m256i, int)’: target specific option mismatch
  558 | _mm256_extract_epi64 (__m256i __X, const int __N)
      | ^~~~~~~~~~~~~~~~~~~~
In file included from orbit/src/UserSpaceInstrumentation/TrampolineTest.cpp:40:
src/UserSpaceInstrumentation/TrampolineTest.cpp:1037:71: note: called from here
 1037 |               _mm256_extract_epi64(p2, 0) == 0 && _mm256_extract_epi64(p3, 0) == 0 &&
      |                                                   ~~~~~~~~~~~~~~~~~~~~^~~~~~~
src/OrbitBase/include/OrbitBase/Logging.h:66:50: note: in definition of macro ‘ORBIT_UNLIKELY’
   66 | #define ORBIT_UNLIKELY(cond) __builtin_expect(!!(cond), 0)
      |                                                  ^~~~
src/UserSpaceInstrumentation/TrampolineTest.cpp:1036:3: note: in expansion of macro ‘ORBIT_CHECK’
 1036 |   ORBIT_CHECK(_mm256_extract_epi64(p0, 0) == 0 && _mm256_extract_epi64(p1, 0) == 0 &&
      |   ^~~~~~~~~~~
In file included from /usr/lib/gcc/x86_64-linux-gnu/11/include/immintrin.h:43,
                 from orbit/src/UserSpaceInstrumentation/TrampolineTest.cpp:12:
/usr/lib/gcc/x86_64-linux-gnu/11/include/avxintrin.h:558:1: error: inlining failed in call to ‘always_inline’ ‘long long int _mm256_extract_epi64(__m256i, int)’: target specific option mismatch
  558 | _mm256_extract_epi64 (__m256i __X, const int __N)
      | ^~~~~~~~~~~~~~~~~~~~
In file included from orbit/src/UserSpaceInstrumentation/TrampolineTest.cpp:40:
src/UserSpaceInstrumentation/TrampolineTest.cpp:1038:35: note: called from here
 1038 |               _mm256_extract_epi64(p4, 0) == 0 && _mm256_extract_epi64(p5, 0) == 0 &&
      |               ~~~~~~~~~~~~~~~~~~~~^~~~~~~
src/OrbitBase/include/OrbitBase/Logging.h:66:50: note: in definition of macro ‘ORBIT_UNLIKELY’
   66 | #define ORBIT_UNLIKELY(cond) __builtin_expect(!!(cond), 0)
      |                                                  ^~~~
src/UserSpaceInstrumentation/TrampolineTest.cpp:1036:3: note: in expansion of macro ‘ORBIT_CHECK’
 1036 |   ORBIT_CHECK(_mm256_extract_epi64(p0, 0) == 0 && _mm256_extract_epi64(p1, 0) == 0 &&
      |   ^~~~~~~~~~~
In file included from /usr/lib/gcc/x86_64-linux-gnu/11/include/immintrin.h:43,
                 from orbit/src/UserSpaceInstrumentation/TrampolineTest.cpp:12:
/usr/lib/gcc/x86_64-linux-gnu/11/include/avxintrin.h:558:1: error: inlining failed in call to ‘always_inline’ ‘long long int _mm256_extract_epi64(__m256i, int)’: target specific option mismatch
  558 | _mm256_extract_epi64 (__m256i __X, const int __N)
      | ^~~~~~~~~~~~~~~~~~~~
In file included from orbit/src/UserSpaceInstrumentation/TrampolineTest.cpp:40:
src/UserSpaceInstrumentation/TrampolineTest.cpp:1038:71: note: called from here
 1038 |               _mm256_extract_epi64(p4, 0) == 0 && _mm256_extract_epi64(p5, 0) == 0 &&
      |                                                   ~~~~~~~~~~~~~~~~~~~~^~~~~~~
src/OrbitBase/include/OrbitBase/Logging.h:66:50: note: in definition of macro ‘ORBIT_UNLIKELY’
   66 | #define ORBIT_UNLIKELY(cond) __builtin_expect(!!(cond), 0)
      |                                                  ^~~~
src/UserSpaceInstrumentation/TrampolineTest.cpp:1036:3: note: in expansion of macro ‘ORBIT_CHECK’
 1036 |   ORBIT_CHECK(_mm256_extract_epi64(p0, 0) == 0 && _mm256_extract_epi64(p1, 0) == 0 &&
      |   ^~~~~~~~~~~
In file included from /usr/lib/gcc/x86_64-linux-gnu/11/include/immintrin.h:43,
                 from orbit/src/UserSpaceInstrumentation/TrampolineTest.cpp:12:
/usr/lib/gcc/x86_64-linux-gnu/11/include/avxintrin.h:558:1: error: inlining failed in call to ‘always_inline’ ‘long long int _mm256_extract_epi64(__m256i, int)’: target specific option mismatch
  558 | _mm256_extract_epi64 (__m256i __X, const int __N)
      | ^~~~~~~~~~~~~~~~~~~~
In file included from orbit/src/UserSpaceInstrumentation/TrampolineTest.cpp:40:
src/UserSpaceInstrumentation/TrampolineTest.cpp:1039:35: note: called from here
 1039 |               _mm256_extract_epi64(p6, 0) == 0 && _mm256_extract_epi64(p7, 0) == 0);
      |               ~~~~~~~~~~~~~~~~~~~~^~~~~~~
src/OrbitBase/include/OrbitBase/Logging.h:66:50: note: in definition of macro ‘ORBIT_UNLIKELY’
   66 | #define ORBIT_UNLIKELY(cond) __builtin_expect(!!(cond), 0)
      |                                                  ^~~~
src/UserSpaceInstrumentation/TrampolineTest.cpp:1036:3: note: in expansion of macro ‘ORBIT_CHECK’
 1036 |   ORBIT_CHECK(_mm256_extract_epi64(p0, 0) == 0 && _mm256_extract_epi64(p1, 0) == 0 &&
      |   ^~~~~~~~~~~
In file included from /usr/lib/gcc/x86_64-linux-gnu/11/include/immintrin.h:43,
                 from orbit/src/UserSpaceInstrumentation/TrampolineTest.cpp:12:
/usr/lib/gcc/x86_64-linux-gnu/11/include/avxintrin.h:558:1: error: inlining failed in call to ‘always_inline’ ‘long long int _mm256_extract_epi64(__m256i, int)’: target specific option mismatch
  558 | _mm256_extract_epi64 (__m256i __X, const int __N)
      | ^~~~~~~~~~~~~~~~~~~~
In file included from orbit/src/UserSpaceInstrumentation/TrampolineTest.cpp:40:
src/UserSpaceInstrumentation/TrampolineTest.cpp:1039:71: note: called from here
 1039 |               _mm256_extract_epi64(p6, 0) == 0 && _mm256_extract_epi64(p7, 0) == 0);
      |                                                   ~~~~~~~~~~~~~~~~~~~~^~~~~~~
src/OrbitBase/include/OrbitBase/Logging.h:66:50: note: in definition of macro ‘ORBIT_UNLIKELY’
   66 | #define ORBIT_UNLIKELY(cond) __builtin_expect(!!(cond), 0)
      |                                                  ^~~~
src/UserSpaceInstrumentation/TrampolineTest.cpp:1036:3: note: in expansion of macro ‘ORBIT_CHECK’
 1036 |   ORBIT_CHECK(_mm256_extract_epi64(p0, 0) == 0 && _mm256_extract_epi64(p1, 0) == 0 &&
      |   ^~~~~~~~~~~
In file included from /usr/lib/gcc/x86_64-linux-gnu/11/include/immintrin.h:43,
                 from orbit/src/UserSpaceInstrumentation/TrampolineTest.cpp:12:
/usr/lib/gcc/x86_64-linux-gnu/11/include/avxintrin.h:558:1: error: inlining failed in call to ‘always_inline’ ‘long long int _mm256_extract_epi64(__m256i, int)’: target specific option mismatch
  558 | _mm256_extract_epi64 (__m256i __X, const int __N)
      | ^~~~~~~~~~~~~~~~~~~~
In file included from orbit/src/UserSpaceInstrumentation/TrampolineTest.cpp:40:
src/UserSpaceInstrumentation/TrampolineTest.cpp:1036:35: note: called from here
 1036 |   ORBIT_CHECK(_mm256_extract_epi64(p0, 0) == 0 && _mm256_extract_epi64(p1, 0) == 0 &&
      |               ~~~~~~~~~~~~~~~~~~~~^~~~~~~
src/OrbitBase/include/OrbitBase/Logging.h:66:50: note: in definition of macro ‘ORBIT_UNLIKELY’
   66 | #define ORBIT_UNLIKELY(cond) __builtin_expect(!!(cond), 0)
      |                                                  ^~~~
src/UserSpaceInstrumentation/TrampolineTest.cpp:1036:3: note: in expansion of macro ‘ORBIT_CHECK’
 1036 |   ORBIT_CHECK(_mm256_extract_epi64(p0, 0) == 0 && _mm256_extract_epi64(p1, 0) == 0 &&
      |   ^~~~~~~~~~~
In file included from /usr/lib/gcc/x86_64-linux-gnu/11/include/immintrin.h:43,
                 from orbit/src/UserSpaceInstrumentation/TrampolineTest.cpp:12:
/usr/lib/gcc/x86_64-linux-gnu/11/include/avxintrin.h:558:1: error: inlining failed in call to ‘always_inline’ ‘long long int _mm256_extract_epi64(__m256i, int)’: target specific option mismatch
  558 | _mm256_extract_epi64 (__m256i __X, const int __N)
      | ^~~~~~~~~~~~~~~~~~~~
In file included from orbit/src/UserSpaceInstrumentation/TrampolineTest.cpp:40:
src/UserSpaceInstrumentation/TrampolineTest.cpp:1036:71: note: called from here
 1036 |   ORBIT_CHECK(_mm256_extract_epi64(p0, 0) == 0 && _mm256_extract_epi64(p1, 0) == 0 &&
      |                                                   ~~~~~~~~~~~~~~~~~~~~^~~~~~~
src/OrbitBase/include/OrbitBase/Logging.h:66:50: note: in definition of macro ‘ORBIT_UNLIKELY’
   66 | #define ORBIT_UNLIKELY(cond) __builtin_expect(!!(cond), 0)
      |                                                  ^~~~
src/UserSpaceInstrumentation/TrampolineTest.cpp:1036:3: note: in expansion of macro ‘ORBIT_CHECK’
 1036 |   ORBIT_CHECK(_mm256_extract_epi64(p0, 0) == 0 && _mm256_extract_epi64(p1, 0) == 0 &&
      |   ^~~~~~~~~~~
In file included from /usr/lib/gcc/x86_64-linux-gnu/11/include/immintrin.h:43,
                 from orbit/src/UserSpaceInstrumentation/TrampolineTest.cpp:12:
/usr/lib/gcc/x86_64-linux-gnu/11/include/avxintrin.h:558:1: error: inlining failed in call to ‘always_inline’ ‘long long int _mm256_extract_epi64(__m256i, int)’: target specific option mismatch
  558 | _mm256_extract_epi64 (__m256i __X, const int __N)
      | ^~~~~~~~~~~~~~~~~~~~
In file included from orbit/src/UserSpaceInstrumentation/TrampolineTest.cpp:40:
src/UserSpaceInstrumentation/TrampolineTest.cpp:1037:35: note: called from here
 1037 |               _mm256_extract_epi64(p2, 0) == 0 && _mm256_extract_epi64(p3, 0) == 0 &&
      |               ~~~~~~~~~~~~~~~~~~~~^~~~~~~
src/OrbitBase/include/OrbitBase/Logging.h:66:50: note: in definition of macro ‘ORBIT_UNLIKELY’
   66 | #define ORBIT_UNLIKELY(cond) __builtin_expect(!!(cond), 0)
      |                                                  ^~~~
src/UserSpaceInstrumentation/TrampolineTest.cpp:1036:3: note: in expansion of macro ‘ORBIT_CHECK’
 1036 |   ORBIT_CHECK(_mm256_extract_epi64(p0, 0) == 0 && _mm256_extract_epi64(p1, 0) == 0 &&
      |   ^~~~~~~~~~~
In file included from /usr/lib/gcc/x86_64-linux-gnu/11/include/immintrin.h:43,
                 from orbit/src/UserSpaceInstrumentation/TrampolineTest.cpp:12:
/usr/lib/gcc/x86_64-linux-gnu/11/include/avxintrin.h:558:1: error: inlining failed in call to ‘always_inline’ ‘long long int _mm256_extract_epi64(__m256i, int)’: target specific option mismatch
  558 | _mm256_extract_epi64 (__m256i __X, const int __N)
      | ^~~~~~~~~~~~~~~~~~~~
In file included from orbit/src/UserSpaceInstrumentation/TrampolineTest.cpp:40:
src/UserSpaceInstrumentation/TrampolineTest.cpp:1037:71: note: called from here
 1037 |               _mm256_extract_epi64(p2, 0) == 0 && _mm256_extract_epi64(p3, 0) == 0 &&
      |                                                   ~~~~~~~~~~~~~~~~~~~~^~~~~~~
src/OrbitBase/include/OrbitBase/Logging.h:66:50: note: in definition of macro ‘ORBIT_UNLIKELY’
   66 | #define ORBIT_UNLIKELY(cond) __builtin_expect(!!(cond), 0)
      |                                                  ^~~~
src/UserSpaceInstrumentation/TrampolineTest.cpp:1036:3: note: in expansion of macro ‘ORBIT_CHECK’
 1036 |   ORBIT_CHECK(_mm256_extract_epi64(p0, 0) == 0 && _mm256_extract_epi64(p1, 0) == 0 &&
      |   ^~~~~~~~~~~
In file included from /usr/lib/gcc/x86_64-linux-gnu/11/include/immintrin.h:43,
                 from orbit/src/UserSpaceInstrumentation/TrampolineTest.cpp:12:
/usr/lib/gcc/x86_64-linux-gnu/11/include/avxintrin.h:558:1: error: inlining failed in call to ‘always_inline’ ‘long long int _mm256_extract_epi64(__m256i, int)’: target specific option mismatch
  558 | _mm256_extract_epi64 (__m256i __X, const int __N)
      | ^~~~~~~~~~~~~~~~~~~~
In file included from orbit/src/UserSpaceInstrumentation/TrampolineTest.cpp:40:
src/UserSpaceInstrumentation/TrampolineTest.cpp:1038:35: note: called from here
 1038 |               _mm256_extract_epi64(p4, 0) == 0 && _mm256_extract_epi64(p5, 0) == 0 &&
      |               ~~~~~~~~~~~~~~~~~~~~^~~~~~~
src/OrbitBase/include/OrbitBase/Logging.h:66:50: note: in definition of macro ‘ORBIT_UNLIKELY’
   66 | #define ORBIT_UNLIKELY(cond) __builtin_expect(!!(cond), 0)
      |                                                  ^~~~
src/UserSpaceInstrumentation/TrampolineTest.cpp:1036:3: note: in expansion of macro ‘ORBIT_CHECK’
 1036 |   ORBIT_CHECK(_mm256_extract_epi64(p0, 0) == 0 && _mm256_extract_epi64(p1, 0) == 0 &&
      |   ^~~~~~~~~~~
In file included from /usr/lib/gcc/x86_64-linux-gnu/11/include/immintrin.h:43,
                 from orbit/src/UserSpaceInstrumentation/TrampolineTest.cpp:12:
/usr/lib/gcc/x86_64-linux-gnu/11/include/avxintrin.h:558:1: error: inlining failed in call to ‘always_inline’ ‘long long int _mm256_extract_epi64(__m256i, int)’: target specific option mismatch
  558 | _mm256_extract_epi64 (__m256i __X, const int __N)
      | ^~~~~~~~~~~~~~~~~~~~
In file included from orbit/src/UserSpaceInstrumentation/TrampolineTest.cpp:40:
src/UserSpaceInstrumentation/TrampolineTest.cpp:1038:71: note: called from here
 1038 |               _mm256_extract_epi64(p4, 0) == 0 && _mm256_extract_epi64(p5, 0) == 0 &&
      |                                                   ~~~~~~~~~~~~~~~~~~~~^~~~~~~
src/OrbitBase/include/OrbitBase/Logging.h:66:50: note: in definition of macro ‘ORBIT_UNLIKELY’
   66 | #define ORBIT_UNLIKELY(cond) __builtin_expect(!!(cond), 0)
      |                                                  ^~~~
src/UserSpaceInstrumentation/TrampolineTest.cpp:1036:3: note: in expansion of macro ‘ORBIT_CHECK’
 1036 |   ORBIT_CHECK(_mm256_extract_epi64(p0, 0) == 0 && _mm256_extract_epi64(p1, 0) == 0 &&
      |   ^~~~~~~~~~~
In file included from /usr/lib/gcc/x86_64-linux-gnu/11/include/immintrin.h:43,
                 from orbit/src/UserSpaceInstrumentation/TrampolineTest.cpp:12:
/usr/lib/gcc/x86_64-linux-gnu/11/include/avxintrin.h:558:1: error: inlining failed in call to ‘always_inline’ ‘long long int _mm256_extract_epi64(__m256i, int)’: target specific option mismatch
  558 | _mm256_extract_epi64 (__m256i __X, const int __N)
      | ^~~~~~~~~~~~~~~~~~~~
In file included from orbit/src/UserSpaceInstrumentation/TrampolineTest.cpp:40:
src/UserSpaceInstrumentation/TrampolineTest.cpp:1039:35: note: called from here
 1039 |               _mm256_extract_epi64(p6, 0) == 0 && _mm256_extract_epi64(p7, 0) == 0);
      |               ~~~~~~~~~~~~~~~~~~~~^~~~~~~
src/OrbitBase/include/OrbitBase/Logging.h:66:50: note: in definition of macro ‘ORBIT_UNLIKELY’
   66 | #define ORBIT_UNLIKELY(cond) __builtin_expect(!!(cond), 0)
      |                                                  ^~~~
src/UserSpaceInstrumentation/TrampolineTest.cpp:1036:3: note: in expansion of macro ‘ORBIT_CHECK’
 1036 |   ORBIT_CHECK(_mm256_extract_epi64(p0, 0) == 0 && _mm256_extract_epi64(p1, 0) == 0 &&
      |   ^~~~~~~~~~~
In file included from /usr/lib/gcc/x86_64-linux-gnu/11/include/immintrin.h:43,
                 from orbit/src/UserSpaceInstrumentation/TrampolineTest.cpp:12:
/usr/lib/gcc/x86_64-linux-gnu/11/include/avxintrin.h:558:1: error: inlining failed in call to ‘always_inline’ ‘long long int _mm256_extract_epi64(__m256i, int)’: target specific option mismatch
  558 | _mm256_extract_epi64 (__m256i __X, const int __N)
      | ^~~~~~~~~~~~~~~~~~~~
In file included from orbit/src/UserSpaceInstrumentation/TrampolineTest.cpp:40:
src/UserSpaceInstrumentation/TrampolineTest.cpp:1039:71: note: called from here
 1039 |               _mm256_extract_epi64(p6, 0) == 0 && _mm256_extract_epi64(p7, 0) == 0);
      |                                                   ~~~~~~~~~~~~~~~~~~~~^~~~~~~
src/OrbitBase/include/OrbitBase/Logging.h:66:50: note: in definition of macro ‘ORBIT_UNLIKELY’
   66 | #define ORBIT_UNLIKELY(cond) __builtin_expect(!!(cond), 0)
      |                                                  ^~~~
src/UserSpaceInstrumentation/TrampolineTest.cpp:1036:3: note: in expansion of macro ‘ORBIT_CHECK’
 1036 |   ORBIT_CHECK(_mm256_extract_epi64(p0, 0) == 0 && _mm256_extract_epi64(p1, 0) == 0 &&
      |   ^~~~~~~~~~~
gmake[2]: *** [src/UserSpaceInstrumentation/CMakeFiles/UserSpaceInstrumentationTests.dir/build.make:286: src/UserSpaceInstrumentation/CMakeFiles/UserSpaceInstrumentationTests.dir/TrampolineTest.cpp.o] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:3006: src/UserSpaceInstrumentation/CMakeFiles/UserSpaceInstrumentationTests.dir/all] Error 2
gmake: *** [Makefile:146: all] Error 2

Fortunately, this error only affected a test file, so I edited src/UserSpaceInstrumentation/CMakeLists.txt and removed the TrampolineTest.cpp mention, ran ./build.sh et voilà, the build finished (without that test file)!

I could then run the OrbitService on the low-end machine without AVX (even the Orbit client worked, but I prefer to do it remotely when profiling the game on such low-end machine).

So I guess the need is either for TrampolineTest.cpp to skip the AVX things when AVX is not available, or to have a CMake option to skip the building of TrampolineTest.cpp.

@illwieckz illwieckz changed the title Build failure of TrampolineTest.cpp on non-AVX platform (not needed to run OrbitService and Orbit) Build failure of TrampolineTest.cpp on non-AVX platform (not needed to build and run OrbitService and Orbit) Jun 4, 2024
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

1 participant