diff --git a/CMakeLists.txt b/CMakeLists.txt
index b77fda4155ac2a0d539b3dc7a5cdf08309c8669a..9a417f4f28d091dfd9329c51880be13cb2b5f496 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -250,6 +250,14 @@ else()
 endif()
 mark_as_advanced ( WALBERLA_CXX_COMPILER_IS_MPI_WRAPPER )
 
+# Check for intel llvm compiler
+if( CMAKE_CXX_COMPILER MATCHES "icx" OR CMAKE_CXX_COMPILER_ARG1 MATCHES "icx" )
+   option ( WALBERLA_CXX_COMPILER_IS_INTELLLVM "Use Intel LLVM compiler" ON  )
+else()
+   option ( WALBERLA_CXX_COMPILER_IS_INTELLLVM "Use Intel LLVM compiler" OFF  )
+endif()
+mark_as_advanced ( WALBERLA_CXX_COMPILER_IS_INTELLLVM )
+
 ############################################################################################################################
 
 
@@ -428,7 +436,7 @@ if ( WALBERLA_BUILD_WITH_FASTMATH )
         add_flag( CMAKE_CXX_FLAGS "/fp:fast" )
     endif()
 else()
-   if( CMAKE_CXX_COMPILER_ID MATCHES IntelLLVM )
+   if( WALBERLA_CXX_COMPILER_IS_INTELLLVM )
       add_flag( CMAKE_CXX_FLAGS "-fp-model=precise")
    endif()
 endif()
@@ -1038,7 +1046,7 @@ if ( WALBERLA_BUILD_WITH_OPENMP )
         endif()
     endif()
 
-    if( CMAKE_CXX_COMPILER_ID MATCHES Clang OR CMAKE_CXX_COMPILER_ID MATCHES IntelLLVM )
+    if( WALBERLA_CXX_COMPILER_IS_CLANG OR WALBERLA_CXX_COMPILER_IS_INTELLLVM )
        # check for bug in combination with OpenMP and sign conversion https://bugs.llvm.org/show_bug.cgi?id=48387
        try_compile( WALBERLA_CLANG_OPENMP_BUG "${CMAKE_CURRENT_BINARY_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/cmake/TestClangOpenMPBug.cpp"
              COMPILE_DEFINITIONS -Werror )
diff --git a/tests/core/CMakeLists.txt b/tests/core/CMakeLists.txt
index e0cf5fc72511dcee12f2dceae55ebf5166af85da..798a0b89d36c0db03ba53ff00dd79937f9b2a9a7 100644
--- a/tests/core/CMakeLists.txt
+++ b/tests/core/CMakeLists.txt
@@ -199,7 +199,7 @@ waLBerla_compile_test( FILES GridGeneratorTest.cpp )
 waLBerla_execute_test( NAME GridGeneratorTest )
 
 #TODO: find fix for this test with intel OneApi compiler
-if(NOT CMAKE_CXX_COMPILER_ID MATCHES IntelLLVM )
+if(NOT WALBERLA_CXX_COMPILER_IS_INTELLLVM )
    waLBerla_compile_test( FILES MemoryUsage.cpp )
    waLBerla_execute_test( NAME MemoryUsage )
 endif()