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