-fveclib= allows users to choose a vectorized libm so that loops containing math functions are vectorized. This is implemented as much as possible in the same way as in clang. The driver test in veclib.f90 is copied from the clang test.
155 lines
3.1 KiB
CMake
155 lines
3.1 KiB
CMake
set(LLVM_LINK_COMPONENTS
|
|
AggressiveInstCombine
|
|
Analysis
|
|
BitReader
|
|
BitWriter
|
|
CodeGenTypes
|
|
Core
|
|
Coroutines
|
|
Coverage
|
|
Demangle
|
|
Extensions
|
|
FrontendDriver
|
|
FrontendHLSL
|
|
FrontendOpenMP
|
|
FrontendOffloading
|
|
HIPStdPar
|
|
IPO
|
|
IRPrinter
|
|
IRReader
|
|
InstCombine
|
|
Instrumentation
|
|
LTO
|
|
Linker
|
|
MC
|
|
ObjCARCOpts
|
|
Object
|
|
Passes
|
|
ProfileData
|
|
ScalarOpts
|
|
Support
|
|
Target
|
|
TargetParser
|
|
TransformUtils
|
|
)
|
|
|
|
# Workaround for MSVC ARM64 performance regression:
|
|
# https://developercommunity.visualstudio.com/t/Compiling-a-specific-code-for-ARM64-with/10444970
|
|
# Since /O1 and /O2 represent a set of optimizations,
|
|
# our goal is to disable the /Og flag while retaining the other optimizations from the /O1|/O2 set
|
|
if(MSVC AND NOT CMAKE_CXX_COMPILER_ID MATCHES Clang
|
|
AND MSVC_VERSION VERSION_GREATER_EQUAL 1932
|
|
AND CMAKE_SYSTEM_PROCESSOR MATCHES "ARM64")
|
|
|
|
string(TOUPPER "${CMAKE_BUILD_TYPE}" uppercase_CMAKE_BUILD_TYPE)
|
|
string(REGEX MATCHALL "/[Oo][12]" opt_flags "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${uppercase_CMAKE_BUILD_TYPE}}")
|
|
if (opt_flags)
|
|
if(opt_flags MATCHES "1$")
|
|
set(opt_flags "/Od;/Os;/Oy;/Ob2;/GF;/Gy")
|
|
elseif (opt_flags MATCHES "2$")
|
|
set(opt_flags "/Od;/Oi;/Ot;/Oy;/Ob2;/GF;/Gy")
|
|
endif()
|
|
set_source_files_properties(CGBuiltin.cpp PROPERTIES COMPILE_OPTIONS "${opt_flags}")
|
|
endif()
|
|
endif()
|
|
|
|
add_clang_library(clangCodeGen
|
|
ABIInfo.cpp
|
|
ABIInfoImpl.cpp
|
|
BackendUtil.cpp
|
|
CGAtomic.cpp
|
|
CGBlocks.cpp
|
|
CGBuiltin.cpp
|
|
CGCUDANV.cpp
|
|
CGCUDARuntime.cpp
|
|
CGCXX.cpp
|
|
CGCXXABI.cpp
|
|
CGCall.cpp
|
|
CGClass.cpp
|
|
CGCleanup.cpp
|
|
CGCoroutine.cpp
|
|
CGDebugInfo.cpp
|
|
CGDecl.cpp
|
|
CGDeclCXX.cpp
|
|
CGException.cpp
|
|
CGExpr.cpp
|
|
CGExprAgg.cpp
|
|
CGExprCXX.cpp
|
|
CGExprComplex.cpp
|
|
CGExprConstant.cpp
|
|
CGExprScalar.cpp
|
|
CGGPUBuiltin.cpp
|
|
CGHLSLRuntime.cpp
|
|
CGLoopInfo.cpp
|
|
CGNonTrivialStruct.cpp
|
|
CGObjC.cpp
|
|
CGObjCGNU.cpp
|
|
CGObjCMac.cpp
|
|
CGObjCRuntime.cpp
|
|
CGOpenCLRuntime.cpp
|
|
CGOpenMPRuntime.cpp
|
|
CGOpenMPRuntimeGPU.cpp
|
|
CGRecordLayoutBuilder.cpp
|
|
CGStmt.cpp
|
|
CGStmtOpenMP.cpp
|
|
CGVTT.cpp
|
|
CGVTables.cpp
|
|
CodeGenABITypes.cpp
|
|
CodeGenAction.cpp
|
|
CodeGenFunction.cpp
|
|
CodeGenModule.cpp
|
|
CodeGenPGO.cpp
|
|
CodeGenTBAA.cpp
|
|
CodeGenTypes.cpp
|
|
ConstantInitBuilder.cpp
|
|
CoverageMappingGen.cpp
|
|
ItaniumCXXABI.cpp
|
|
LinkInModulesPass.cpp
|
|
MacroPPCallbacks.cpp
|
|
MicrosoftCXXABI.cpp
|
|
ModuleBuilder.cpp
|
|
ObjectFilePCHContainerOperations.cpp
|
|
PatternInit.cpp
|
|
SanitizerMetadata.cpp
|
|
SwiftCallingConv.cpp
|
|
TargetInfo.cpp
|
|
Targets/AArch64.cpp
|
|
Targets/AMDGPU.cpp
|
|
Targets/ARC.cpp
|
|
Targets/ARM.cpp
|
|
Targets/AVR.cpp
|
|
Targets/BPF.cpp
|
|
Targets/CSKY.cpp
|
|
Targets/Hexagon.cpp
|
|
Targets/Lanai.cpp
|
|
Targets/LoongArch.cpp
|
|
Targets/M68k.cpp
|
|
Targets/MSP430.cpp
|
|
Targets/Mips.cpp
|
|
Targets/NVPTX.cpp
|
|
Targets/PNaCl.cpp
|
|
Targets/PPC.cpp
|
|
Targets/RISCV.cpp
|
|
Targets/SPIR.cpp
|
|
Targets/Sparc.cpp
|
|
Targets/SystemZ.cpp
|
|
Targets/TCE.cpp
|
|
Targets/VE.cpp
|
|
Targets/WebAssembly.cpp
|
|
Targets/X86.cpp
|
|
Targets/XCore.cpp
|
|
VarBypassDetector.cpp
|
|
|
|
DEPENDS
|
|
intrinsics_gen
|
|
ClangDriverOptions
|
|
|
|
LINK_LIBS
|
|
clangAST
|
|
clangAnalysis
|
|
clangBasic
|
|
clangFrontend
|
|
clangLex
|
|
clangSerialization
|
|
)
|