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

このWIKIを編集するにはパスワード入力が必要です

認証パスワード