diff --git a/libc/cmake/modules/LLVMLibCCheckCpuFeatures.cmake b/libc/cmake/modules/LLVMLibCCheckCpuFeatures.cmake --- a/libc/cmake/modules/LLVMLibCCheckCpuFeatures.cmake +++ b/libc/cmake/modules/LLVMLibCCheckCpuFeatures.cmake @@ -14,6 +14,8 @@ set(LIBC_COMPILE_OPTIONS_NATIVE -march=native) elseif(${LIBC_TARGET_ARCHITECTURE_IS_AARCH64}) set(LIBC_COMPILE_OPTIONS_NATIVE -mcpu=native) +elseif(${LIBC_TARGET_ARCHITECTURE_IS_RISCV64}) + set(ALL_CPU_FEATURES FMA) endif() # Making sure ALL_CPU_FEATURES is sorted. diff --git a/libc/cmake/modules/LLVMLibCFlagRules.cmake b/libc/cmake/modules/LLVMLibCFlagRules.cmake --- a/libc/cmake/modules/LLVMLibCFlagRules.cmake +++ b/libc/cmake/modules/LLVMLibCFlagRules.cmake @@ -134,11 +134,6 @@ set(ROUND_OPT_FLAG "ROUND_OPT") # Skip FMA_OPT flag for targets that don't support fma. -if(NOT(LIBC_TARGET_ARCHITECTURE_IS_X86 AND (LIBC_CPU_FEATURES MATCHES "FMA"))) +if(NOT LIBC_CPU_FEATURES MATCHES "FMA") set(SKIP_FLAG_EXPANSION_FMA_OPT TRUE) endif() - -# Skip ROUND_OPT flag for targets that don't support SSE 4.2. -if(NOT(LIBC_TARGET_ARCHITECTURE_IS_X86 AND (LIBC_CPU_FEATURES MATCHES "SSE4_2"))) - set(SKIP_FLAG_EXPANSION_ROUND_OPT TRUE) -endif() diff --git a/libc/cmake/modules/LLVMLibCObjectRules.cmake b/libc/cmake/modules/LLVMLibCObjectRules.cmake --- a/libc/cmake/modules/LLVMLibCObjectRules.cmake +++ b/libc/cmake/modules/LLVMLibCObjectRules.cmake @@ -38,7 +38,7 @@ list(APPEND compile_options "-Wstrict-prototypes") list(APPEND compile_options "-Wthread-safety") endif() - if(ADD_FMA_FLAG) + if(ADD_FMA_FLAG AND LIBC_TARGET_ARCHITECTURE_IS_X86) list(APPEND compile_options "-mavx2") list(APPEND compile_options "-mfma") endif() @@ -48,7 +48,7 @@ elseif(MSVC) list(APPEND compile_options "/EHs-c-") list(APPEND compile_options "/GR-") - if(ADD_FMA_FLAG) + if(ADD_FMA_FLAG AND LIBC_TARGET_ARCHITECTURE_IS_X86) list(APPEND compile_options "/arch:AVX2") endif() endif()