# define OPENCL_FUNC_TERM REAL_FUNC_TERM
# define OPENCL_FUNC_TERM_WITH_RETURN(arg) REAL_FUNC_TERM_WITH_RETURN(arg)
-#elif GMX_GPU_OPENCL || GMX_GPU_CUDA
-
-/* GPU support is enabled, so these functions will have real code
- * defined somewhere */
-# define GPU_FUNC_QUALIFIER REAL_FUNC_QUALIFIER
-# define GPU_FUNC_ARGUMENT REAL_FUNC_ARGUMENT
-# define GPU_FUNC_TERM REAL_FUNC_TERM
-# define GPU_FUNC_TERM_WITH_RETURN(arg) REAL_FUNC_TERM_WITH_RETURN(arg)
+#else // Not DOXYGEN
+
+/* GPU support is enabled, so these functions will have real code defined somewhere */
+# if GMX_GPU && !GMX_GPU_SYCL
+# define GPU_FUNC_QUALIFIER REAL_FUNC_QUALIFIER
+# define GPU_FUNC_ARGUMENT REAL_FUNC_ARGUMENT
+# define GPU_FUNC_TERM REAL_FUNC_TERM
+# define GPU_FUNC_TERM_WITH_RETURN(arg) REAL_FUNC_TERM_WITH_RETURN(arg)
+# else
+# define GPU_FUNC_QUALIFIER NULL_FUNC_QUALIFIER
+# define GPU_FUNC_ARGUMENT NULL_FUNC_ARGUMENT
+# define GPU_FUNC_TERM NULL_FUNC_TERM
+# define GPU_FUNC_TERM_WITH_RETURN(arg) NULL_FUNC_TERM_WITH_RETURN(arg)
+#
+# endif
+/* Enable and disable platform-specific function implementations */
# if GMX_GPU_OPENCL
-
-/* OpenCL support is enabled, so CUDA-specific functions need empty
- * implementations, while OpenCL-specific functions will have real
- * code defined somewhere. */
-# define CUDA_FUNC_QUALIFIER NULL_FUNC_QUALIFIER
-# define CUDA_FUNC_ARGUMENT NULL_FUNC_ARGUMENT
-# define CUDA_FUNC_TERM NULL_FUNC_TERM
-# define CUDA_FUNC_TERM_WITH_RETURN(arg) NULL_FUNC_TERM_WITH_RETURN(arg)
# define OPENCL_FUNC_QUALIFIER REAL_FUNC_QUALIFIER
# define OPENCL_FUNC_ARGUMENT REAL_FUNC_ARGUMENT
# define OPENCL_FUNC_TERM REAL_FUNC_TERM
# define OPENCL_FUNC_TERM_WITH_RETURN(arg) REAL_FUNC_TERM_WITH_RETURN(arg)
-
+# else
+# define OPENCL_FUNC_QUALIFIER NULL_FUNC_QUALIFIER
+# define OPENCL_FUNC_ARGUMENT NULL_FUNC_ARGUMENT
+# define OPENCL_FUNC_TERM NULL_FUNC_TERM
+# define OPENCL_FUNC_TERM_WITH_RETURN(arg) NULL_FUNC_TERM_WITH_RETURN(arg)
# endif
-# if GMX_GPU_CUDA
-/* CUDA support is enabled, so OpenCL-specific functions need empty
- * implementations, while CUDA-specific functions will have real
- * code defined somewhere. */
+# if GMX_GPU_CUDA
# define CUDA_FUNC_QUALIFIER REAL_FUNC_QUALIFIER
# define CUDA_FUNC_ARGUMENT REAL_FUNC_ARGUMENT
# define CUDA_FUNC_TERM REAL_FUNC_TERM
# define CUDA_FUNC_TERM_WITH_RETURN(arg) REAL_FUNC_TERM_WITH_RETURN(arg)
-# define OPENCL_FUNC_QUALIFIER NULL_FUNC_QUALIFIER
-# define OPENCL_FUNC_ARGUMENT NULL_FUNC_ARGUMENT
-# define OPENCL_FUNC_TERM NULL_FUNC_TERM
-# define OPENCL_FUNC_TERM_WITH_RETURN(arg) NULL_FUNC_TERM_WITH_RETURN(arg)
-
+# else
+# define CUDA_FUNC_QUALIFIER NULL_FUNC_QUALIFIER
+# define CUDA_FUNC_ARGUMENT NULL_FUNC_ARGUMENT
+# define CUDA_FUNC_TERM NULL_FUNC_TERM
+# define CUDA_FUNC_TERM_WITH_RETURN(arg) NULL_FUNC_TERM_WITH_RETURN(arg)
# endif
-#elif !GMX_GPU || GMX_GPU_SYCL
-
-/* No GPU support is configured, so none of these functions will have
- * real definitions. */
-# define GPU_FUNC_QUALIFIER NULL_FUNC_QUALIFIER
-# define GPU_FUNC_ARGUMENT NULL_FUNC_ARGUMENT
-# define GPU_FUNC_TERM NULL_FUNC_TERM
-# define GPU_FUNC_TERM_WITH_RETURN(arg) NULL_FUNC_TERM_WITH_RETURN(arg)
-# define CUDA_FUNC_QUALIFIER NULL_FUNC_QUALIFIER
-# define CUDA_FUNC_ARGUMENT NULL_FUNC_ARGUMENT
-# define CUDA_FUNC_TERM NULL_FUNC_TERM
-# define CUDA_FUNC_TERM_WITH_RETURN(arg) NULL_FUNC_TERM_WITH_RETURN(arg)
-# define OPENCL_FUNC_QUALIFIER NULL_FUNC_QUALIFIER
-# define OPENCL_FUNC_ARGUMENT NULL_FUNC_ARGUMENT
-# define OPENCL_FUNC_TERM NULL_FUNC_TERM
-# define OPENCL_FUNC_TERM_WITH_RETURN(arg) NULL_FUNC_TERM_WITH_RETURN(arg)
-
-#endif
+#endif // ifdef DOXYGEN
-#endif
+#endif // GMX_GPU_UTILS_MACROS_H