nir: replace GCC unroll with an option that works on GCC < 8.0
authorMarek Olšák <marek.olsak@amd.com>
Wed, 26 Feb 2020 21:57:37 +0000 (16:57 -0500)
committerMarek Olšák <marek.olsak@amd.com>
Fri, 28 Feb 2020 03:53:12 +0000 (22:53 -0500)
Reviewed-by: Eric Anholt <eric@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3970>

src/compiler/nir/nir_range_analysis.c

index fdce434054c52dd858d74bed1dcb94cd30103f22..548123be4cef74b2a63cee62c7ae4e354d52872e 100644 (file)
@@ -220,17 +220,23 @@ analyze_constant(const struct nir_alu_instr *instr, unsigned src,
 
 
 #if defined(__clang__)
-/* clang wants _Pragma("unroll X") */
-#define pragma_unroll_5 _Pragma("unroll 5")
-#define pragma_unroll_7 _Pragma("unroll 7")
+   /* clang wants _Pragma("unroll X") */
+   #define pragma_unroll_5 _Pragma("unroll 5")
+   #define pragma_unroll_7 _Pragma("unroll 7")
 /* gcc wants _Pragma("GCC unroll X") */
 #elif defined(__GNUC__)
-#define pragma_unroll_5 _Pragma("GCC unroll 5")
-#define pragma_unroll_7 _Pragma("GCC unroll 7")
+   #if __GNUC__ >= 8
+      #define pragma_unroll_5 _Pragma("GCC unroll 5")
+      #define pragma_unroll_7 _Pragma("GCC unroll 7")
+   #else
+      #pragma GCC optimize ("unroll-loops")
+      #define pragma_unroll_5
+      #define pragma_unroll_7
+   #endif
 #else
-/* MSVC doesn't have C99's _Pragma() */
-#define pragma_unroll_5
-#define pragma_unroll_7
+   /* MSVC doesn't have C99's _Pragma() */
+   #define pragma_unroll_5
+   #define pragma_unroll_7
 #endif