Commit 3e0ec4cd authored by Henrik Gramner's avatar Henrik Gramner

build: Enable SSE2 by default on x86-32

parent 75558f8b
Pipeline #7096 passed with stages
in 9 minutes and 40 seconds
...@@ -180,7 +180,8 @@ endif ...@@ -180,7 +180,8 @@ endif
# Compiler flags that should be set # Compiler flags that should be set
# But when the compiler does not supports them # But when the compiler does not supports them
# it is not an error and silently tolerated # it is not an error and silently tolerated
optional_arguments += [ if cc.get_id() != 'msvc'
optional_arguments += [
'-Wundef', '-Wundef',
'-Werror=vla', '-Werror=vla',
'-Wno-maybe-uninitialized', '-Wno-maybe-uninitialized',
...@@ -188,8 +189,14 @@ optional_arguments += [ ...@@ -188,8 +189,14 @@ optional_arguments += [
'-Wno-unused-parameter', '-Wno-unused-parameter',
'-Werror=missing-prototypes', '-Werror=missing-prototypes',
'-Wshorten-64-to-32', '-Wshorten-64-to-32',
] ]
if cc.get_id() == 'msvc' if host_machine.cpu_family() == 'x86'
optional_arguments += [
'-msse2',
'-mfpmath=sse',
]
endif
else
optional_arguments += [ optional_arguments += [
'-wd4028', # parameter different from declaration '-wd4028', # parameter different from declaration
'-wd4996' # use of POSIX functions '-wd4996' # use of POSIX functions
......
  • Where is the rationale documented? x86 target on FreeBSD, NetBSD and OpenBSD doesn't have SSE2 enabled by default. Forcing SSE2 may lead to a crash on a subset of CPUs supported on those platforms.

    CC @brad

  • If you don't have SSE2 in your CPU, you should just disable all assembly, I believe.

    If your CPU does not have SSE2, you will not be able to decode AV1, I believe. Your CPU is from many years ago and won't be able to run fast enough, even for very small resolutions.

  • It improves performance by a decent amount. SSE2 was introduced with the Pentium 4 in 2000, nobody is going to do AV1 decoding on a 20 year old Pentium III.

    https://store.steampowered.com/hwsurvey/ shows that 100.00% of users have SSE2 fwiw.

  • As it is OpenBSD cannot enable assembly due to register pressure and this is becoming more common with other OS's. So it's a moot point.

  • Poor register allocation behavior of the compiler only impacts inline assembly, which we do not use outside of tests, so I don't see how that is relevant.

    Edited by Henrik Gramner
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment