Add SSE2 and SSE4.1 limited builds.
As the machines we test on get fancier and fancier, we're losing
coverage of older instruction sets. This adds a flag to skip
CPU detection, and two new builds to test SSE2 and SSE4.1.
Change-Id: Ie28518b30860f90c80f71020e64e3696a7047021
Reviewed-on: https://skia-review.googlesource.com/c/skcms/+/213849
Commit-Queue: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Auto-Submit: Mike Klein <mtklein@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
diff --git a/build.ninja b/build.ninja
index 0310e1f..f2eb262 100644
--- a/build.ninja
+++ b/build.ninja
@@ -2,6 +2,8 @@
subninja build/clang
subninja build/clang.O0
+subninja build/clang.sse2
+subninja build/clang.sse41
subninja build/clang.avx512
subninja build/clang.lsan
subninja build/clang.m32
diff --git a/build/clang.sse2 b/build/clang.sse2
new file mode 100644
index 0000000..f26ec79
--- /dev/null
+++ b/build/clang.sse2
@@ -0,0 +1,4 @@
+mode = .sse2
+extra_cflags = -msse2 -mno-sse3 -mno-ssse3 -mno-sse4.1 -DSKCMS_NO_RUNTIME_CPU_DETECTION
+include build/clang
+
diff --git a/build/clang.sse41 b/build/clang.sse41
new file mode 100644
index 0000000..20c4ed6
--- /dev/null
+++ b/build/clang.sse41
@@ -0,0 +1,4 @@
+mode = .sse41
+extra_cflags = -msse4.1 -DSKCMS_NO_RUNTIME_CPU_DETECTION
+include build/clang
+
diff --git a/skcms.cc b/skcms.cc
index 3d97dd1..2a68439 100644
--- a/skcms.cc
+++ b/skcms.cc
@@ -1875,6 +1875,7 @@
// Now, instantiate any other versions of run_program() we may want for runtime detection.
#if !defined(SKCMS_PORTABLE) && \
+ !defined(SKCMS_NO_RUNTIME_CPU_DETECTION) && \
(( defined(__clang__) && __clang_major__ >= 5) || \
(!defined(__clang__) && defined(__GNUC__))) \
&& defined(__x86_64__)