aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core
diff options
context:
space:
mode:
authorGravatar Cary Clark <caryclark@google.com>2017-02-28 17:18:13 +0000
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-02-28 17:18:24 +0000
commitb26373cfd8151b2fa56bdf532ddcde4919cce09f (patch)
treeaaa2ae20a280651f213fe3c86a3ef0574de11d27 /src/core
parent97042bfd9f4a1ff825a92ac13965b80fd712d4f2 (diff)
Revert "Add AVX-512 detection to SkCpu"
This reverts commit 3c322e23a013e78fcbe0edd7adccd580af8466bc. Reason for revert: crash in SkCpu on Mac Original change's description: > Add AVX-512 detection to SkCpu > > I've added a SKY alias for the five new bits detected on a Skylake Xeon. > > Change-Id: I9f7dd48f4dc866608d81befd061434ca325ef451 > Reviewed-on: https://skia-review.googlesource.com/9043 > Reviewed-by: Herb Derby <herb@google.com> > Commit-Queue: Mike Klein <mtklein@chromium.org> > TBR=mtklein@chromium.org,herb@google.com,reviews@skia.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Change-Id: I3cc06c7e32391e68d6cfe084786b18270cdab631 Reviewed-on: https://skia-review.googlesource.com/9074 Reviewed-by: Cary Clark <caryclark@google.com> Commit-Queue: Cary Clark <caryclark@google.com>
Diffstat (limited to 'src/core')
-rw-r--r--src/core/SkCpu.cpp15
-rw-r--r--src/core/SkCpu.h37
2 files changed, 14 insertions, 38 deletions
diff --git a/src/core/SkCpu.cpp b/src/core/SkCpu.cpp
index 0f89cf603e..5e5b3169c7 100644
--- a/src/core/SkCpu.cpp
+++ b/src/core/SkCpu.cpp
@@ -49,9 +49,7 @@
if (abcd[2] & (1<<19)) { features |= SkCpu::SSE41; }
if (abcd[2] & (1<<20)) { features |= SkCpu::SSE42; }
- uint64_t xcr0 = xgetbv(0);
- if ((abcd[2] & (3<<26)) == (3<<26) // XSAVE + OSXSAVE
- && (xcr0 & (3<<1)) == (3<<1)) { // XMM and YMM state enabled.
+ if ((abcd[2] & (3<<26)) == (3<<26) && (xgetbv(0) & 6) == 6) { // XSAVE + OSXSAVE
if (abcd[2] & (1<<28)) { features |= SkCpu:: AVX; }
if (abcd[2] & (1<<29)) { features |= SkCpu::F16C; }
if (abcd[2] & (1<<12)) { features |= SkCpu:: FMA; }
@@ -60,17 +58,6 @@
if (abcd[1] & (1<<5)) { features |= SkCpu::AVX2; }
if (abcd[1] & (1<<3)) { features |= SkCpu::BMI1; }
if (abcd[1] & (1<<8)) { features |= SkCpu::BMI2; }
-
- if ((xcr0 & (7<<5)) == (7<<5)) { // All ZMM state bits enabled too.
- if (abcd[1] & (1<<16)) { features |= SkCpu::AVX512F; }
- if (abcd[1] & (1<<17)) { features |= SkCpu::AVX512DQ; }
- if (abcd[1] & (1<<21)) { features |= SkCpu::AVX512IFMA; }
- if (abcd[1] & (1<<26)) { features |= SkCpu::AVX512PF; }
- if (abcd[1] & (1<<27)) { features |= SkCpu::AVX512ER; }
- if (abcd[1] & (1<<28)) { features |= SkCpu::AVX512CD; }
- if (abcd[1] & (1<<30)) { features |= SkCpu::AVX512BW; }
- if (abcd[1] & (1<<31)) { features |= SkCpu::AVX512VL; }
- }
}
return features;
}
diff --git a/src/core/SkCpu.h b/src/core/SkCpu.h
index 24428d9781..34c19d2540 100644
--- a/src/core/SkCpu.h
+++ b/src/core/SkCpu.h
@@ -12,32 +12,21 @@
struct SkCpu {
enum {
- SSE1 = 1 << 0,
- SSE2 = 1 << 1,
- SSE3 = 1 << 2,
- SSSE3 = 1 << 3,
- SSE41 = 1 << 4,
- SSE42 = 1 << 5,
- AVX = 1 << 6,
- F16C = 1 << 7,
- FMA = 1 << 8,
- AVX2 = 1 << 9,
- BMI1 = 1 << 10,
- BMI2 = 1 << 11,
+ SSE1 = 1 << 0,
+ SSE2 = 1 << 1,
+ SSE3 = 1 << 2,
+ SSSE3 = 1 << 3,
+ SSE41 = 1 << 4,
+ SSE42 = 1 << 5,
+ AVX = 1 << 6,
+ F16C = 1 << 7,
+ FMA = 1 << 8,
+ AVX2 = 1 << 9,
+ BMI1 = 1 << 10,
+ BMI2 = 1 << 11,
+
// Handy alias for all the cool Haswell+ instructions.
HSW = AVX2 | BMI1 | BMI2 | F16C | FMA,
-
- AVX512F = 1 << 12,
- AVX512DQ = 1 << 13,
- AVX512IFMA = 1 << 14,
- AVX512PF = 1 << 15,
- AVX512ER = 1 << 16,
- AVX512CD = 1 << 17,
- AVX512BW = 1 << 18,
- AVX512VL = 1 << 19,
-
- // Handy alias for all the cool Skylake Xeon+ instructions.
- SKY = AVX512F | AVX512DQ | AVX512CD | AVX512BW | AVX512VL,
};
enum {
NEON = 1 << 0,