aprantl created this revision.
aprantl added reviewers: jasonmolenda, jingham.
Herald added a subscriber: llvm-commits.

I found a cheap and cross-platform way of detecting whether the target supports 
AVX2.


Repository:
  rL LLVM

https://reviews.llvm.org/D41962

Files:
  
packages/Python/lldbsuite/test/functionalities/register/intel_avx/TestYMMRegister.py
  packages/Python/lldbsuite/test/functionalities/register/intel_avx/main.c


Index: packages/Python/lldbsuite/test/functionalities/register/intel_avx/main.c
===================================================================
--- packages/Python/lldbsuite/test/functionalities/register/intel_avx/main.c
+++ packages/Python/lldbsuite/test/functionalities/register/intel_avx/main.c
@@ -17,6 +17,8 @@
     ymmvalues[i] = (val << 24) | (val << 16) | (val << 8) | val;
   }
 
+  static volatile unsigned haveAVX2;
+  haveAVX2 = __builtin_cpu_supports("avx2");
   unsigned int ymmallones = 0xFFFFFFFF;
   __asm__("int3;"
           "vbroadcastss %1, %%ymm0;"
Index: 
packages/Python/lldbsuite/test/functionalities/register/intel_avx/TestYMMRegister.py
===================================================================
--- 
packages/Python/lldbsuite/test/functionalities/register/intel_avx/TestYMMRegister.py
+++ 
packages/Python/lldbsuite/test/functionalities/register/intel_avx/TestYMMRegister.py
@@ -51,6 +51,10 @@
                 break
         self.assertTrue(matched, STOPPED_DUE_TO_SIGNAL)
 
+        # Detect AVX2 support and early exit otherwise.
+        if self.frame().FindVariable("haveAVX2").GetValue() == 0:
+          return False
+
         if self.getArchitecture() == 'x86_64':
             register_range = 16
         else:


Index: packages/Python/lldbsuite/test/functionalities/register/intel_avx/main.c
===================================================================
--- packages/Python/lldbsuite/test/functionalities/register/intel_avx/main.c
+++ packages/Python/lldbsuite/test/functionalities/register/intel_avx/main.c
@@ -17,6 +17,8 @@
     ymmvalues[i] = (val << 24) | (val << 16) | (val << 8) | val;
   }
 
+  static volatile unsigned haveAVX2;
+  haveAVX2 = __builtin_cpu_supports("avx2");
   unsigned int ymmallones = 0xFFFFFFFF;
   __asm__("int3;"
           "vbroadcastss %1, %%ymm0;"
Index: packages/Python/lldbsuite/test/functionalities/register/intel_avx/TestYMMRegister.py
===================================================================
--- packages/Python/lldbsuite/test/functionalities/register/intel_avx/TestYMMRegister.py
+++ packages/Python/lldbsuite/test/functionalities/register/intel_avx/TestYMMRegister.py
@@ -51,6 +51,10 @@
                 break
         self.assertTrue(matched, STOPPED_DUE_TO_SIGNAL)
 
+        # Detect AVX2 support and early exit otherwise.
+        if self.frame().FindVariable("haveAVX2").GetValue() == 0:
+          return False
+
         if self.getArchitecture() == 'x86_64':
             register_range = 16
         else:
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to