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 |
× |
|