ひでみのアイデア帳

くだらないことなんだけど、忘れないために・・・

SYnverll実装状況

自分の書くソースコードだと意外とLLVMの命令を使ってないんだなぁ。

http://llvm.org/docs/LangRef.html

項目 内容
Version 3.8
Update 2015/10/28

Instruction Reference

Terminator Instructions

命令名 実装 備考
ret
br
switch ×
indirectbr ×
invoke ×
resume ×
catchpad ×
catchendpad ×
catchret ×
cleanupendpad ×
cleanupret ×
terminatepad ×
unreachable ×

Binary Operations

命令名 実装 備考
add $singedの対応が必要
fadd ×
sub $singedの対応が必要
fsub ×
mul
fmul ×
udiv ×
sdiv 簡易実装、$signedの対応が必要
fdiv ×
urem ×
srem × 除算の剰余、$signedの対応が必要
frem ×

Bitwise Binary Operations

命令名 実装 備考
shl 仮実装
lshr 仮実装
ashr 仮実装
and
or
xor

Vector Operations

命令名 実装 備考
extractelement ×
insertelement ×
shufflevector ×

Aggregate Operations

命令名 実装 備考
extractvalue ×
insertvalue ×

Memory Access and Addressing Operations

命令名 実装 備考
alloca 外部メモリ化(一元メモリ化)
load 外部メモリI/Fに接続
store 外部メモリI/Fに接続
fence ×
cmpxchg ×
atomicrmw ×
getelementptr

Conversion Operations

命令名 実装 備考
trunc 簡易実装
zext 簡易実装
sext 簡易実装
fptrunc ×
fpext ×
fptoui ×
fptosi ×
uitofp ×
sitofp ×
ptrtoint ×
inttoptr ×
bitcast ×
addrspacecast ×

Other Operations

命令名 実装 備考
icmp
fcmp ×
phi
select
call
va_arg ×
landingpad ×
cleanuppad ×

Intrinsic Functions

Variable Argument Handling Intrinsics

命令名 実装 備考
llvm.va_start 無視
llvm.va_end 無視
llvm.va_copy ×

Accurate Garbage Collection Intrinsics

命令名 実装 備考
llvm.gcroot ×
llvm.gcread ×
llvm.gcwrite ×

Code Generator Intrinsics

命令名 実装 備考
llvm.returnaddress ×
llvm.frameaddress ×
llvm.localescape ×
llvm.localrecovers ×
llvm.read_register ×
llvm.write_registers ×
llvm.stacksave ×
llvm.stackrestore ×
llvm.prefetch ×
llvm.pcmarker ×
llvm.readcyclecounter ×
llvm.clear_cache ×
llvm.instrprof_increment ×

Standard C Library Intrinsics

命令名 実装 備考
llvm.memcpy × 外部I/Fに接続
llvm.memmove ×
llvm.memset.*s ×
llvm.sqrt.* ×
llvm.powi.* ×
llvm.sin.* ×
llvm.cos.* ×
llvm.pow.* ×
llvm.exp.* ×
llvm.exp2.* ×
llvm.log.* ×
llvm.log10.* ×
llvm.log2.* ×
llvm.fma.* ×
llvm.fabs.* ×
llvm.minnum.* ×
llvm.maxnum.* ×
llvm.copysign.* ×
llvm.floor.* ×
llvm.ceil.* ×
llvm.trunc.* ×
llvm.rint.* ×
llvm.nearbyint.* ×
llvm.round.* ×

Bit Manipulation Intrinsics

命令名 実装 備考
llvm.bswap.*s ×
llvm.ctpop.* ×
llvm.ctlz.* ×
llvm.cttz.* ×

Arithmetic with Overflow Intrinsics

命令名 実装 備考
llvm.sadd.with.overflow.*s ×
llvm.uadd.with.overflow.*s ×
llvm.ssub.with.overflow.*s ×
llvm.usub.with.overflow.*s ×
llvm.smul.with.overflow.*s ×
llvm.umul.with.overflow.*s ×

Specialised Arithmetic Intrinsics

命令名 実装 備考
llvm.canonicalize.* ×
llvm.fmuladd.* ×
llvm.uabsdiff.* ×
llvm.sabsdiff.*s ×

Half Precision Floating Point Intrinsics

命令名 実装 備考
llvm.convert.to.fp16 ×
llvm.convert.from.fp16 ×

Debugger Intrinsics

Exception Handling Intrinsics

Trampoline Intrinsics

命令名 実装 備考
llvm.init.trampoline ×
llvm.adjust.trampoline ×

Masked Vector Load and Store Intrinsics

命令名 実装 備考
llvm.masked.load.*s ×
llvm.masked.store.*s ×

Masked Vector Gather and Scatter Intrinsics

命令名 実装 備考
llvm.masked.gather.*s ×
llvm.masked.scatter.*s ×

Memory Use Markers

命令名 実装 備考
llvm.lifetime.start 無視
llvm.lifetime.end 無視
llvm.invariant.start ×
llvm.invariant.end ×
llvm.invariant.group.barrier ×

General Intrinsics

命令名 実装 備考
llvm.var.annotation ×
llvm.ptr.annotation.* ×
llvm.annotation.* ×
llvm.trap ×
llvm.debugtrap ×
llvm.stackprotector ×
llvm.stackprotectorcheck ×
llvm.objectsize ×
llvm.expect ×
llvm.assume ×
llvm.bitset.test ×
llvm.donothing ×