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

WIP: bisect MSVC error #1151

Closed
wants to merge 8 commits into from
Closed

WIP: bisect MSVC error #1151

wants to merge 8 commits into from

Conversation

illwieckz
Copy link
Member

I'm just using this PR to trigger appveyor build and bisect an MSVC compilation error.

@illwieckz illwieckz marked this pull request as draft May 16, 2024 14:43
- split compiler builtins and code that can be considered as architeture intrinsics
- group compiler-specific code
@illwieckz illwieckz force-pushed the illwieckz/bisect-msvc branch 2 times, most recently from 23bd10b to 37cae1d Compare May 16, 2024 15:21
This introduces the USE_ARCH_INTRINSICS CMake option. It is enabled by
default.

Disabling it is meant to disable custom asm code and usage of intrinsincs
functions for the target platform in the Dæmon code base, it may also be
used by games built with the Dæmon common code base.

It is not meant to disable asm or intrinsincs usage in third-party libraries.

It is not meant to prevent the compiler to use such intrinsics in its
optimization passes.

It is not meant to disable the compiler flags we set to tell the compiler
to try to use such intrinsics in its optimization passes. For this, one
should disable USE_CPU_RECOMMENDED_FEATURES instead.

For obvious reason the asm code in the BREAKPOINT() implementation is not
meant to be disabled by USE_ARCH_INTRINSICS.

The macro syntax is: DAEMON_ARCH_INTRINSICS_(architecture)[_extension]

Examples:

- DAEMON_ARCH_INTRINSICS_i686: i686 specific code, including asm code.
- DAEMON_ARCH_INTRINSICS_i686_sse: i686 SSE specific code.
- DAEMON_ARCH_INTRINSICS_i686_sse2: i686 SSE2 specific code.

If a platform inherits feature from an parent platform, the parent
platform name is used. For example on amd64, the definition enabling
SSE code is DAEMON_ARCH_INTRINSICS_i686_sse, enabling SSE code on both
i686 with SSE and amd64 platforms. and both DAEMON_ARCH_INTRINSICS_amd64
and DAEMON_ARCH_INTRINSICS_i686 are available.
This introduces USE_COMPILER_BUILTINS CMake option. It is enabled
by default.

Disabling it is meant to test the unknown compiler code.
@illwieckz illwieckz closed this May 25, 2024
@illwieckz illwieckz deleted the illwieckz/bisect-msvc branch May 25, 2024 20:56
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

Successfully merging this pull request may close these issues.

None yet

1 participant