diff --git a/src/blt.c b/src/blt.c
index 5ad5a9c..2c552fc 100644
--- a/src/blt.c
+++ b/src/blt.c
@@ -11,7 +11,7 @@ void blt_copy(
     unsigned char* src,
     size_t size)
 {
-#ifdef _MSC_VER
+#if defined(_MSC_VER) || defined(__AVX__)
     if (g_blt_use_avx && !((DWORD)dst % 32) && !((DWORD)src % 32))
     {
         if (size >= 1024 * 4096)
@@ -465,7 +465,7 @@ void blt_clear(
     char color,
     size_t size)
 {
-#ifdef _MSC_VER
+#if defined(_MSC_VER) || defined(__AVX__)
     if (size < 1024 * 100 && g_blt_use_avx && !((DWORD)dst % 32))
     {
         __m256i c0 = _mm256_set1_epi8(color);
diff --git a/src/utils.c b/src/utils.c
index b85bdd6..f219806 100644
--- a/src/utils.c
+++ b/src/utils.c
@@ -40,9 +40,9 @@ BOOL util_is_avx_supported()
         {
             unsigned int xcr0 = 0;
 
-#if defined(_MSC_VER)
+#ifdef _MSC_VER
             xcr0 = (unsigned int)_xgetbv(_XCR_XFEATURE_ENABLED_MASK);
-#else
+#elif __AVX__
             __asm__("xgetbv" : "=a" (xcr0) : "c" (0) : "%edx");
 #endif