diff --git a/common/src/framebuffer.c b/common/src/framebuffer.c index d7b7a93fa..a8233d821 100644 --- a/common/src/framebuffer.c +++ b/common/src/framebuffer.c @@ -225,8 +225,12 @@ static bool framebuffer_write_sse4_1(FrameBuffer * frame, return true; } -#pragma GCC push_options -#pragma GCC target ("avx2") +#ifdef __clang__ + #pragma clang attribute push (__attribute__((target("avx2"))), apply_to=function) +#else + #pragma GCC push_options + #pragma GCC target ("avx2") +#endif bool framebuffer_write_avx2(FrameBuffer * frame, const void * restrict src, size_t size) { @@ -303,7 +307,11 @@ bool framebuffer_write_avx2(FrameBuffer * frame, return true; } -#pragma GCC pop_options +#ifdef __clang__ + #pragma clang attribute pop +#else + #pragma GCC pop_options +#endif static bool _framebuffer_write(FrameBuffer * frame, const void * restrict src, size_t size) diff --git a/common/src/rects.c b/common/src/rects.c index 996ca1d23..c8a69cf05 100644 --- a/common/src/rects.c +++ b/common/src/rects.c @@ -314,8 +314,12 @@ static void rectCopyUnaligned_memcpy(uint8_t * dst, const uint8_t * src, } } -#pragma GCC push_options -#pragma GCC target ("avx2") +#ifdef __clang__ + #pragma clang attribute push (__attribute__((target("avx"))), apply_to=function) +#else + #pragma GCC push_options + #pragma GCC target ("avx") +#endif static void rectCopyUnaligned_avx(uint8_t * dst, const uint8_t * src, int ystart, int yend, int dx, int dstPitch, int srcPitch, int width) { @@ -338,7 +342,11 @@ static void rectCopyUnaligned_avx(uint8_t * dst, const uint8_t * src, dst += dstPitch; } } -#pragma GCC pop_options +#ifdef __clang__ + #pragma clang attribute pop +#else + #pragma GCC pop_options +#endif static void _rectCopyUnaligned(uint8_t * dst, const uint8_t * src, int ystart, int yend, int dx, int dstPitch, int srcPitch, int width)