about summary refs log tree commit diff
path: root/nixpkgs/lib/systems/architectures.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/lib/systems/architectures.nix')
-rw-r--r--nixpkgs/lib/systems/architectures.nix52
1 files changed, 27 insertions, 25 deletions
diff --git a/nixpkgs/lib/systems/architectures.nix b/nixpkgs/lib/systems/architectures.nix
index 287f5be03c45..bfecaec1ae88 100644
--- a/nixpkgs/lib/systems/architectures.nix
+++ b/nixpkgs/lib/systems/architectures.nix
@@ -35,21 +35,21 @@ rec {
     # x86_64 Intel
     default        = [ ];
     westmere       = [ ];
-    sandybridge    = [ "westmere" ];
-    ivybridge      = [ "westmere" "sandybridge" ];
-    haswell        = [ "westmere" "sandybridge" "ivybridge" ];
-    broadwell      = [ "westmere" "sandybridge" "ivybridge" "haswell" ];
-    skylake        = [ "westmere" "sandybridge" "ivybridge" "haswell" "broadwell" ];
-    skylake-avx512 = [ "westmere" "sandybridge" "ivybridge" "haswell" "broadwell" "skylake" ];
+    sandybridge    = [ "westmere"    ] ++ inferiors.westmere;
+    ivybridge      = [ "sandybridge" ] ++ inferiors.sandybridge;
+    haswell        = [ "ivybridge"   ] ++ inferiors.ivybridge;
+    broadwell      = [ "haswell"     ] ++ inferiors.haswell;
+    skylake        = [ "broadwell"   ] ++ inferiors.broadwell;
+    skylake-avx512 = [ "skylake"     ] ++ inferiors.skylake;
     # x86_64 AMD
     btver1         = [ ];
-    btver2         = [ ];
-    bdver1         = [ ];
-    bdver2         = [ ];
-    bdver3         = [ ];
-    bdver4         = [ ];
-    znver1         = [ ];
-    znver2         = [ ];
+    btver2         = [ ]; # TODO: fill this (need testing)
+    bdver1         = [ ]; # TODO: fill this (need testing)
+    bdver2         = [ ]; # TODO: fill this (need testing)
+    bdver3         = [ ]; # TODO: fill this (need testing)
+    bdver4         = [ ]; # TODO: fill this (need testing)
+    znver1         = [ ]; # TODO: fill this (need testing)
+    znver2         = [ ]; # TODO: fill this (need testing)
     # other
     armv5te        = [ ];
     armv6          = [ ];
@@ -59,17 +59,19 @@ rec {
     loongson2f     = [ ];
   };
 
-  predicates = {
-    sse3Support    = x: builtins.elem "sse3"   features.${x};
-    ssse3Support   = x: builtins.elem "ssse3"  features.${x};
-    sse4_1Support  = x: builtins.elem "sse4_1" features.${x};
-    sse4_2Support  = x: builtins.elem "sse4_2" features.${x};
-    sse4_aSupport  = x: builtins.elem "sse4a"  features.${x};
-    avxSupport     = x: builtins.elem "avx"    features.${x};
-    avx2Support    = x: builtins.elem "avx2"   features.${x};
-    avx512Support  = x: builtins.elem "avx512" features.${x};
-    aesSupport     = x: builtins.elem "aes"    features.${x};
-    fmaSupport     = x: builtins.elem "fma"    features.${x};
-    fma4Support    = x: builtins.elem "fma4"   features.${x};
+  predicates = let
+    featureSupport = feature: x: builtins.elem feature features.${x} or [];
+  in {
+    sse3Support    = featureSupport "sse3";
+    ssse3Support   = featureSupport "ssse3";
+    sse4_1Support  = featureSupport "sse4_1";
+    sse4_2Support  = featureSupport "sse4_2";
+    sse4_aSupport  = featureSupport "sse4a";
+    avxSupport     = featureSupport "avx";
+    avx2Support    = featureSupport "avx2";
+    avx512Support  = featureSupport "avx512";
+    aesSupport     = featureSupport "aes";
+    fmaSupport     = featureSupport "fma";
+    fma4Support    = featureSupport "fma4";
   };
 }