llvm-3.3 includeの差分
LLVMCore
Coreの見どころ
(1) LLVM-IR(Attributes, LinkType)の変更
(2) intrinsicsの変更
(3) Passの追加
(4) Metadataの追加
(5) tdの追加(特にx86やARM)
include/llvm/IR
===============================================================================
Intrinsics
===============================================================================
新規追加
IntrinsicsR600.td
削除
IntrinsicsCellSPU
変更
X86には、rdseed 16/32/64を追加
RTM intrinsicsの GCCBuiltin xtestを追加
Attribute
===============================================================================
修正、追加
NoBuiltin //Callee isn't recognized as a builtin
NoDuplicate //Call cannot be duplicated
Returned //Return value is always equal to this argument
StackProtectStrong
SanitizeAddress
SanitizeThread
SanitizeMemory
CallingConv
===============================================================================
追加
CallingConvに、HiPE
High-Performance Erlang Compiler
Instruction
===============================================================================
VectorSplat
Return a vector value
Instruction.h
setHasUnsafeAlgebra()
setHasNoNaNs()
setHasNoInfs()
setHasNoSignedZeros()
setHasAllowReciprocal()
setFastMathFlags()
FastMathFlags getFastMathFlags() const {
FastMathFlags FMF; FMF.UnsafeAlgebra = hasUnsafeAlgebra(); FMF.NoNaNs = hasNoNaNs(); FMF.NoInfs = hasNoInfs(); FMF.NoSignedZeros = hasNoSignedZeros(); FMF.AllowReciprocal = hasAllowReciprocal(); return FMF;
}
InstCombineで畳み込む
Reciprocol/UnsafeAlgebra
clangでfast-mathモードでコンパイルすると命令にフラグが追加される。
Intrinsicsの修正
llvm_half_tyの追加。f16
Metadata
===============================================================================
MD_dbg
MD_tbaa
MD_prof
MD_fpmath
MD_range
MD_tbaa_struct
MD_invariant_load //MemoryDependenceAnalysis
fpmathは以前からあったけど、今回追加された機能でいろいろとリッチになったのかも
3.3から新規追加
MD_invariant_loadが追加 "invariant.load"
Specialized opaque context conversions.
LLVMContext unwrap/wrap
Operator.h
===============================================================================
UnsafeAlgebra
NoNaNs
NoInfs
NoSignedZeros
AllowReciprocal
accumulateConstantOffset
Accumulate the constant address offset of this GEP if possible
上記はすべてFastMath関連のフラグ。InstCombineで参照して畳み込む
initializePasses
===============================================================================
3.3追加パス
ObjCARCOpots 3.2以前にARC系処理がばらばらだったのを、1つにまとめたものだったはず。
BasicTTIPass
CallGraphPrinterPass
CallGraphViewerPass
DebugIRPass
AddressSanitizerModulePass
MemorySanitizerPass
InlineCostAnalysisPass これはVectorize向けのコスト計算だったかな
PrintBasicBlockPass
NoTTIPass
SLVVectorizerPass 3.3新規追加のSuperword Level Parallelism(gccインスパイア)
削除
PrintDebugInfoPass
MachineLoopRangePass
GCInfoDeleterPass
CodePlacementOptPass
- 最終更新:2013-06-03 00:25:15