Use capstone to validate precise-output tests (#5780)
Use the capstone library to disassemble precise-output tests, in addition to pretty-printing their vcode.
This commit is contained in:
2
Cargo.lock
generated
2
Cargo.lock
generated
@@ -548,9 +548,11 @@ dependencies = [
|
||||
name = "cranelift-codegen"
|
||||
version = "0.94.0"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"arrayvec",
|
||||
"bincode",
|
||||
"bumpalo",
|
||||
"capstone",
|
||||
"cranelift-bforest",
|
||||
"cranelift-codegen-meta",
|
||||
"cranelift-codegen-shared",
|
||||
|
||||
@@ -20,7 +20,7 @@ harness = false
|
||||
|
||||
[dependencies]
|
||||
cfg-if = "1.0"
|
||||
cranelift-codegen = { workspace = true }
|
||||
cranelift-codegen = { workspace = true, features = ["disas"] }
|
||||
cranelift-entity = { workspace = true }
|
||||
cranelift-interpreter = { workspace = true }
|
||||
cranelift-reader = { workspace = true }
|
||||
|
||||
@@ -14,7 +14,9 @@ edition.workspace = true
|
||||
|
||||
[dependencies]
|
||||
arrayvec = "0.7"
|
||||
anyhow = { workspace = true, optional = true }
|
||||
bumpalo = "3"
|
||||
capstone = { workspace = true, optional = true }
|
||||
cranelift-codegen-shared = { path = "./shared", version = "0.94.0" }
|
||||
cranelift-entity = { workspace = true }
|
||||
cranelift-bforest = { workspace = true }
|
||||
@@ -55,6 +57,10 @@ std = []
|
||||
# compatibility as a no-op.
|
||||
core = []
|
||||
|
||||
# Enable the `to_capstone` method on TargetIsa, for constructing a Capstone
|
||||
# context, and the `disassemble` method on `MachBufferFinalized`.
|
||||
disas = ["anyhow", "capstone"]
|
||||
|
||||
# This enables some additional functions useful for writing tests, but which
|
||||
# can significantly increase the size of the library.
|
||||
testing_hooks = []
|
||||
|
||||
@@ -90,7 +90,7 @@ impl TargetIsa for AArch64Backend {
|
||||
Ok(CompiledCodeStencil {
|
||||
buffer,
|
||||
frame_size,
|
||||
disasm: emit_result.disasm,
|
||||
vcode: emit_result.disasm,
|
||||
value_labels_ranges,
|
||||
sized_stackslot_offsets,
|
||||
dynamic_stackslot_offsets,
|
||||
@@ -195,6 +195,22 @@ impl TargetIsa for AArch64Backend {
|
||||
// 4-byte alignment.
|
||||
32
|
||||
}
|
||||
|
||||
#[cfg(feature = "disas")]
|
||||
fn to_capstone(&self) -> Result<capstone::Capstone, capstone::Error> {
|
||||
use capstone::prelude::*;
|
||||
let mut cs = Capstone::new()
|
||||
.arm64()
|
||||
.mode(arch::arm64::ArchMode::Arm)
|
||||
.build()?;
|
||||
// AArch64 uses inline constants rather than a separate constant pool right now.
|
||||
// Without this option, Capstone will stop disassembling as soon as it sees
|
||||
// an inline constant that is not also a valid instruction. With this option,
|
||||
// Capstone will print a `.byte` directive with the bytes of the inline constant
|
||||
// and continue to the next instruction.
|
||||
cs.set_skipdata(true)?;
|
||||
Ok(cs)
|
||||
}
|
||||
}
|
||||
|
||||
impl fmt::Display for AArch64Backend {
|
||||
|
||||
@@ -307,6 +307,12 @@ pub trait TargetIsa: fmt::Display + Send + Sync {
|
||||
{
|
||||
Arc::new(self)
|
||||
}
|
||||
|
||||
/// Generate a `Capstone` context for disassembling bytecode for this architecture.
|
||||
#[cfg(feature = "disas")]
|
||||
fn to_capstone(&self) -> Result<capstone::Capstone, capstone::Error> {
|
||||
Err(capstone::Error::UnsupportedArch)
|
||||
}
|
||||
}
|
||||
|
||||
/// Methods implemented for free for target ISA!
|
||||
|
||||
@@ -91,7 +91,7 @@ impl TargetIsa for Riscv64Backend {
|
||||
Ok(CompiledCodeStencil {
|
||||
buffer,
|
||||
frame_size,
|
||||
disasm: emit_result.disasm,
|
||||
vcode: emit_result.disasm,
|
||||
value_labels_ranges,
|
||||
sized_stackslot_offsets,
|
||||
dynamic_stackslot_offsets,
|
||||
@@ -169,6 +169,20 @@ impl TargetIsa for Riscv64Backend {
|
||||
fn function_alignment(&self) -> u32 {
|
||||
4
|
||||
}
|
||||
|
||||
#[cfg(feature = "disas")]
|
||||
fn to_capstone(&self) -> Result<capstone::Capstone, capstone::Error> {
|
||||
use capstone::prelude::*;
|
||||
let mut cs = Capstone::new()
|
||||
.riscv()
|
||||
.mode(arch::riscv::ArchMode::RiscV64)
|
||||
.build()?;
|
||||
// Similar to AArch64, RISC-V uses inline constants rather than a separate
|
||||
// constant pool. We want to skip dissasembly over inline constants instead
|
||||
// of stopping on invalid bytes.
|
||||
cs.set_skipdata(true)?;
|
||||
Ok(cs)
|
||||
}
|
||||
}
|
||||
|
||||
impl fmt::Display for Riscv64Backend {
|
||||
|
||||
@@ -87,7 +87,7 @@ impl TargetIsa for S390xBackend {
|
||||
Ok(CompiledCodeStencil {
|
||||
buffer,
|
||||
frame_size,
|
||||
disasm: emit_result.disasm,
|
||||
vcode: emit_result.disasm,
|
||||
value_labels_ranges,
|
||||
sized_stackslot_offsets,
|
||||
dynamic_stackslot_offsets,
|
||||
@@ -170,6 +170,19 @@ impl TargetIsa for S390xBackend {
|
||||
fn function_alignment(&self) -> u32 {
|
||||
4
|
||||
}
|
||||
|
||||
#[cfg(feature = "disas")]
|
||||
fn to_capstone(&self) -> Result<capstone::Capstone, capstone::Error> {
|
||||
use capstone::prelude::*;
|
||||
let mut cs = Capstone::new()
|
||||
.sysz()
|
||||
.mode(arch::sysz::ArchMode::Default)
|
||||
.build()?;
|
||||
|
||||
cs.set_skipdata(true)?;
|
||||
|
||||
Ok(cs)
|
||||
}
|
||||
}
|
||||
|
||||
impl fmt::Display for S390xBackend {
|
||||
|
||||
@@ -84,7 +84,7 @@ impl TargetIsa for X64Backend {
|
||||
Ok(CompiledCodeStencil {
|
||||
buffer,
|
||||
frame_size,
|
||||
disasm: emit_result.disasm,
|
||||
vcode: emit_result.disasm,
|
||||
value_labels_ranges,
|
||||
sized_stackslot_offsets,
|
||||
dynamic_stackslot_offsets,
|
||||
@@ -171,6 +171,16 @@ impl TargetIsa for X64Backend {
|
||||
fn function_alignment(&self) -> u32 {
|
||||
16
|
||||
}
|
||||
|
||||
#[cfg(feature = "disas")]
|
||||
fn to_capstone(&self) -> Result<capstone::Capstone, capstone::Error> {
|
||||
use capstone::prelude::*;
|
||||
Capstone::new()
|
||||
.x86()
|
||||
.mode(arch::x86::ArchMode::Mode64)
|
||||
.syntax(arch::x86::ArchSyntax::Att)
|
||||
.build()
|
||||
}
|
||||
}
|
||||
|
||||
impl fmt::Display for X64Backend {
|
||||
|
||||
@@ -287,7 +287,7 @@ pub struct CompiledCodeBase<T: CompilePhase> {
|
||||
/// Size of stack frame, in bytes.
|
||||
pub frame_size: u32,
|
||||
/// Disassembly, if requested.
|
||||
pub disasm: Option<String>,
|
||||
pub vcode: Option<String>,
|
||||
/// Debug info: value labels to registers/stackslots at code offsets.
|
||||
pub value_labels_ranges: ValueLabelsRanges,
|
||||
/// Debug info: stackslots to stack pointer offsets.
|
||||
@@ -317,7 +317,7 @@ impl CompiledCodeStencil {
|
||||
CompiledCode {
|
||||
buffer: self.buffer.apply_base_srcloc(params.base_srcloc()),
|
||||
frame_size: self.frame_size,
|
||||
disasm: self.disasm,
|
||||
vcode: self.vcode,
|
||||
value_labels_ranges: self.value_labels_ranges,
|
||||
sized_stackslot_offsets: self.sized_stackslot_offsets,
|
||||
dynamic_stackslot_offsets: self.dynamic_stackslot_offsets,
|
||||
@@ -340,6 +340,71 @@ impl<T: CompilePhase> CompiledCodeBase<T> {
|
||||
pub fn code_buffer(&self) -> &[u8] {
|
||||
self.buffer.data()
|
||||
}
|
||||
|
||||
/// Get the disassembly of the buffer, using the given capstone context.
|
||||
#[cfg(feature = "disas")]
|
||||
pub fn disassemble(
|
||||
&self,
|
||||
params: Option<&crate::ir::function::FunctionParameters>,
|
||||
cs: &capstone::Capstone,
|
||||
) -> Result<String, anyhow::Error> {
|
||||
use std::fmt::Write;
|
||||
|
||||
let mut buf = String::new();
|
||||
|
||||
let relocs = self.buffer.relocs();
|
||||
let traps = self.buffer.traps();
|
||||
let labels = self.bb_starts.as_slice();
|
||||
|
||||
let insns = cs.disasm_all(self.buffer.data(), 0x0).map_err(map_caperr)?;
|
||||
for i in insns.iter() {
|
||||
if let Some((n, off)) = labels
|
||||
.iter()
|
||||
.copied()
|
||||
.enumerate()
|
||||
.find(|(_, val)| *val == i.address() as u32)
|
||||
{
|
||||
writeln!(buf, "block{}: ; offset 0x{:x}", n, off)?;
|
||||
}
|
||||
|
||||
write!(buf, " ")?;
|
||||
|
||||
let op_str = i.op_str().unwrap_or("");
|
||||
if let Some(s) = i.mnemonic() {
|
||||
write!(buf, "{}", s)?;
|
||||
if !op_str.is_empty() {
|
||||
write!(buf, " ")?;
|
||||
}
|
||||
}
|
||||
|
||||
write!(buf, "{}", op_str)?;
|
||||
|
||||
let end = i.address() + i.bytes().len() as u64;
|
||||
let contains = |off| i.address() <= off && off < end;
|
||||
|
||||
if let Some(reloc) = relocs.iter().find(|reloc| contains(reloc.offset as u64)) {
|
||||
write!(
|
||||
buf,
|
||||
" ; reloc_external {} {} {}",
|
||||
reloc.kind,
|
||||
reloc.name.display(params),
|
||||
reloc.addend,
|
||||
)?;
|
||||
}
|
||||
|
||||
if let Some(trap) = traps.iter().find(|trap| contains(trap.offset as u64)) {
|
||||
write!(buf, " ; trap: {}", trap.code)?;
|
||||
}
|
||||
|
||||
writeln!(buf)?;
|
||||
}
|
||||
|
||||
return Ok(buf);
|
||||
|
||||
fn map_caperr(err: capstone::Error) -> anyhow::Error {
|
||||
anyhow::format_err!("{}", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Result of compiling a `FunctionStencil`, before applying `FunctionParameters` onto it.
|
||||
|
||||
@@ -10,7 +10,7 @@ publish = false
|
||||
edition.workspace = true
|
||||
|
||||
[dependencies]
|
||||
cranelift-codegen = { workspace = true, features = ["testing_hooks"] }
|
||||
cranelift-codegen = { workspace = true, features = ["testing_hooks", "disas"] }
|
||||
cranelift-frontend = { workspace = true }
|
||||
cranelift-interpreter = { workspace = true }
|
||||
cranelift-native = { workspace = true }
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
test compile precise-output
|
||||
set opt_level=speed
|
||||
set use_egraphs=true
|
||||
set machine_code_cfg_info=true
|
||||
target x86_64
|
||||
|
||||
;; We want to make sure that this compiles successfully, so we are properly
|
||||
@@ -15,6 +16,7 @@ function u0:359(i64) -> i8, i8 system_v {
|
||||
return v3, v4
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; pushq %rbp
|
||||
; movq %rsp, %rbp
|
||||
; block0:
|
||||
@@ -22,4 +24,13 @@ function u0:359(i64) -> i8, i8 system_v {
|
||||
; movq %rbp, %rsp
|
||||
; popq %rbp
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; pushq %rbp
|
||||
; movq %rsp, %rbp
|
||||
; block0: ; offset 0x4
|
||||
; callq 9 ; reloc_external CallPCRel4 u0:521 -4
|
||||
; movq %rbp, %rsp
|
||||
; popq %rbp
|
||||
; retq
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@ function u0:1302(i64) -> i64 system_v {
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; pushq %rbp
|
||||
; movq %rsp, %rbp
|
||||
; block0:
|
||||
@@ -21,4 +22,18 @@ function u0:1302(i64) -> i64 system_v {
|
||||
; movq %rbp, %rsp
|
||||
; popq %rbp
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; pushq %rbp
|
||||
; movq %rsp, %rbp
|
||||
; block0: ; offset 0x4
|
||||
; movq (%rdi), %rax ; trap: heap_oob
|
||||
; movq %rax, %rcx
|
||||
; addq %rdi, %rcx
|
||||
; lock cmpxchgq %rcx, (%rdi) ; trap: heap_oob
|
||||
; jne 7
|
||||
; movq %rdi, %rax
|
||||
; movq %rbp, %rsp
|
||||
; popq %rbp
|
||||
; retq
|
||||
|
||||
|
||||
@@ -10,9 +10,15 @@ block0(v0: i64, v1: i32):
|
||||
return v4
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ldr w0, [x0, w1, SXTW]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ldr w0, [x0, w1, sxtw]
|
||||
; ret
|
||||
|
||||
function %f6(i64, i32) -> i32 {
|
||||
block0(v0: i64, v1: i32):
|
||||
@@ -22,9 +28,15 @@ block0(v0: i64, v1: i32):
|
||||
return v4
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ldr w0, [x0, w1, SXTW]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ldr w0, [x0, w1, sxtw]
|
||||
; ret
|
||||
|
||||
function %f7(i32, i32) -> i32 {
|
||||
block0(v0: i32, v1: i32):
|
||||
@@ -35,10 +47,17 @@ block0(v0: i32, v1: i32):
|
||||
return v5
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; mov w3, w0
|
||||
; ldr w0, [x3, w1, UXTW]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov w3, w0
|
||||
; ldr w0, [x3, w1, uxtw]
|
||||
; ret
|
||||
|
||||
function %f8(i64, i32) -> i32 {
|
||||
block0(v0: i64, v1: i32):
|
||||
@@ -51,12 +70,21 @@ block0(v0: i64, v1: i32):
|
||||
return v7
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; add x3, x0, #68
|
||||
; add x5, x3, x0
|
||||
; add x7, x5, x1, SXTW
|
||||
; ldr w0, [x7, w1, SXTW]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; add x3, x0, #0x44
|
||||
; add x5, x3, x0
|
||||
; add x7, x5, w1, sxtw
|
||||
; ldr w0, [x7, w1, sxtw]
|
||||
; ret
|
||||
|
||||
function %f9(i64, i64, i64) -> i32 {
|
||||
block0(v0: i64, v1: i64, v2: i64):
|
||||
@@ -68,11 +96,19 @@ block0(v0: i64, v1: i64, v2: i64):
|
||||
return v7
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; add x4, x0, x2
|
||||
; add x6, x4, x1
|
||||
; ldr w0, [x6, #48]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; add x4, x0, x2
|
||||
; add x6, x4, x1
|
||||
; ldur w0, [x6, #0x30]
|
||||
; ret
|
||||
|
||||
function %f10(i64, i64, i64) -> i32 {
|
||||
block0(v0: i64, v1: i64, v2: i64):
|
||||
@@ -84,12 +120,21 @@ block0(v0: i64, v1: i64, v2: i64):
|
||||
return v7
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movz x5, #4100
|
||||
; add x5, x5, x1
|
||||
; add x8, x5, x2
|
||||
; ldr w0, [x8, x0]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov x5, #0x1004
|
||||
; add x5, x5, x1
|
||||
; add x8, x5, x2
|
||||
; ldr w0, [x8, x0]
|
||||
; ret
|
||||
|
||||
function %f10() -> i32 {
|
||||
block0:
|
||||
@@ -98,10 +143,17 @@ block0:
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movz x0, #1234
|
||||
; ldr w0, [x0]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov x0, #0x4d2
|
||||
; ldr w0, [x0]
|
||||
; ret
|
||||
|
||||
function %f11(i64) -> i32 {
|
||||
block0(v0: i64):
|
||||
@@ -111,10 +163,17 @@ block0(v0: i64):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; add x2, x0, #8388608
|
||||
; ldr w0, [x2]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; add x2, x0, #0x800, lsl #12
|
||||
; ldr w0, [x2]
|
||||
; ret
|
||||
|
||||
function %f12(i64) -> i32 {
|
||||
block0(v0: i64):
|
||||
@@ -124,10 +183,17 @@ block0(v0: i64):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sub x2, x0, #4
|
||||
; ldr w0, [x2]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; sub x2, x0, #4
|
||||
; ldr w0, [x2]
|
||||
; ret
|
||||
|
||||
function %f13(i64) -> i32 {
|
||||
block0(v0: i64):
|
||||
@@ -137,12 +203,21 @@ block0(v0: i64):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movz w3, #51712
|
||||
; movk w3, w3, #15258, LSL #16
|
||||
; add x4, x3, x0
|
||||
; ldr w0, [x4]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov w3, #0xca00
|
||||
; movk w3, #0x3b9a, lsl #16
|
||||
; add x4, x3, x0
|
||||
; ldr w0, [x4]
|
||||
; ret
|
||||
|
||||
function %f14(i32) -> i32 {
|
||||
block0(v0: i32):
|
||||
@@ -151,10 +226,17 @@ block0(v0: i32):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sxtw x2, w0
|
||||
; ldr w0, [x2]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; sxtw x2, w0
|
||||
; ldr w0, [x2]
|
||||
; ret
|
||||
|
||||
function %f15(i32, i32) -> i32 {
|
||||
block0(v0: i32, v1: i32):
|
||||
@@ -165,10 +247,17 @@ block0(v0: i32, v1: i32):
|
||||
return v5
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sxtw x3, w0
|
||||
; ldr w0, [x3, w1, SXTW]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; sxtw x3, w0
|
||||
; ldr w0, [x3, w1, sxtw]
|
||||
; ret
|
||||
|
||||
function %f18(i64, i64, i64) -> i32 {
|
||||
block0(v0: i64, v1: i64, v2: i64):
|
||||
@@ -178,10 +267,17 @@ block0(v0: i64, v1: i64, v2: i64):
|
||||
return v5
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movn w4, #4097
|
||||
; ldrsh x0, [x4]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov w4, #-0x1002
|
||||
; ldrsh x0, [x4]
|
||||
; ret
|
||||
|
||||
function %f19(i64, i64, i64) -> i32 {
|
||||
block0(v0: i64, v1: i64, v2: i64):
|
||||
@@ -191,10 +287,17 @@ block0(v0: i64, v1: i64, v2: i64):
|
||||
return v5
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movz x4, #4098
|
||||
; ldrsh x0, [x4]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov x4, #0x1002
|
||||
; ldrsh x0, [x4]
|
||||
; ret
|
||||
|
||||
function %f20(i64, i64, i64) -> i32 {
|
||||
block0(v0: i64, v1: i64, v2: i64):
|
||||
@@ -204,11 +307,19 @@ block0(v0: i64, v1: i64, v2: i64):
|
||||
return v5
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movn w4, #4097
|
||||
; sxtw x6, w4
|
||||
; ldrsh x0, [x6]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov w4, #-0x1002
|
||||
; sxtw x6, w4
|
||||
; ldrsh x0, [x6]
|
||||
; ret
|
||||
|
||||
function %f21(i64, i64, i64) -> i32 {
|
||||
block0(v0: i64, v1: i64, v2: i64):
|
||||
@@ -218,11 +329,19 @@ block0(v0: i64, v1: i64, v2: i64):
|
||||
return v5
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movz x4, #4098
|
||||
; sxtw x6, w4
|
||||
; ldrsh x0, [x6]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov x4, #0x1002
|
||||
; sxtw x6, w4
|
||||
; ldrsh x0, [x6]
|
||||
; ret
|
||||
|
||||
function %i128(i64) -> i128 {
|
||||
block0(v0: i64):
|
||||
@@ -231,11 +350,19 @@ block0(v0: i64):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; mov x5, x0
|
||||
; ldp x0, x1, [x5]
|
||||
; stp x0, x1, [x5]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov x5, x0
|
||||
; ldp x0, x1, [x5]
|
||||
; stp x0, x1, [x5]
|
||||
; ret
|
||||
|
||||
function %i128_imm_offset(i64) -> i128 {
|
||||
block0(v0: i64):
|
||||
@@ -244,11 +371,19 @@ block0(v0: i64):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; mov x5, x0
|
||||
; ldp x0, x1, [x5, #16]
|
||||
; stp x0, x1, [x5, #16]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov x5, x0
|
||||
; ldp x0, x1, [x5, #0x10]
|
||||
; stp x0, x1, [x5, #0x10]
|
||||
; ret
|
||||
|
||||
function %i128_imm_offset_large(i64) -> i128 {
|
||||
block0(v0: i64):
|
||||
@@ -257,11 +392,19 @@ block0(v0: i64):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; mov x5, x0
|
||||
; ldp x0, x1, [x5, #504]
|
||||
; stp x0, x1, [x5, #504]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov x5, x0
|
||||
; ldp x0, x1, [x5, #0x1f8]
|
||||
; stp x0, x1, [x5, #0x1f8]
|
||||
; ret
|
||||
|
||||
function %i128_imm_offset_negative_large(i64) -> i128 {
|
||||
block0(v0: i64):
|
||||
@@ -270,11 +413,19 @@ block0(v0: i64):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; mov x5, x0
|
||||
; ldp x0, x1, [x5, #-512]
|
||||
; stp x0, x1, [x5, #-512]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov x5, x0
|
||||
; ldp x0, x1, [x5, #-0x200]
|
||||
; stp x0, x1, [x5, #-0x200]
|
||||
; ret
|
||||
|
||||
function %i128_add_offset(i64) -> i128 {
|
||||
block0(v0: i64):
|
||||
@@ -284,11 +435,19 @@ block0(v0: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; mov x5, x0
|
||||
; ldp x0, x1, [x5, #32]
|
||||
; stp x0, x1, [x5, #32]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov x5, x0
|
||||
; ldp x0, x1, [x5, #0x20]
|
||||
; stp x0, x1, [x5, #0x20]
|
||||
; ret
|
||||
|
||||
function %i128_32bit_sextend_simple(i32) -> i128 {
|
||||
block0(v0: i32):
|
||||
@@ -298,6 +457,7 @@ block0(v0: i32):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sxtw x3, w0
|
||||
; mov x8, x0
|
||||
@@ -305,6 +465,15 @@ block0(v0: i32):
|
||||
; sxtw x4, w8
|
||||
; stp x0, x1, [x4]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; sxtw x3, w0
|
||||
; mov x8, x0
|
||||
; ldp x0, x1, [x3]
|
||||
; sxtw x4, w8
|
||||
; stp x0, x1, [x4]
|
||||
; ret
|
||||
|
||||
function %i128_32bit_sextend(i64, i32) -> i128 {
|
||||
block0(v0: i64, v1: i32):
|
||||
@@ -316,6 +485,7 @@ block0(v0: i64, v1: i32):
|
||||
return v5
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; add x4, x0, x1, SXTW
|
||||
; mov x11, x0
|
||||
@@ -324,4 +494,14 @@ block0(v0: i64, v1: i32):
|
||||
; add x5, x11, x9, SXTW
|
||||
; stp x0, x1, [x5, #24]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; add x4, x0, w1, sxtw
|
||||
; mov x11, x0
|
||||
; mov x9, x1
|
||||
; ldp x0, x1, [x4, #0x18]
|
||||
; add x5, x11, w9, sxtw
|
||||
; stp x0, x1, [x5, #0x18]
|
||||
; ret
|
||||
|
||||
|
||||
@@ -8,9 +8,15 @@ block0(v0: i64, v1: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; add x0, x0, x1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; add x0, x0, x1
|
||||
; ret
|
||||
|
||||
function %f2(i64, i64) -> i64 {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -18,9 +24,15 @@ block0(v0: i64, v1: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sub x0, x0, x1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; sub x0, x0, x1
|
||||
; ret
|
||||
|
||||
function %f3(i64, i64) -> i64 {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -28,9 +40,15 @@ block0(v0: i64, v1: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; madd x0, x0, x1, xzr
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mul x0, x0, x1
|
||||
; ret
|
||||
|
||||
function %f4(i64, i64) -> i64 {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -38,9 +56,15 @@ block0(v0: i64, v1: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; umulh x0, x0, x1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; umulh x0, x0, x1
|
||||
; ret
|
||||
|
||||
function %f5(i64, i64) -> i64 {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -48,9 +72,15 @@ block0(v0: i64, v1: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; smulh x0, x0, x1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; smulh x0, x0, x1
|
||||
; ret
|
||||
|
||||
function %f6(i64, i64) -> i64 {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -58,6 +88,7 @@ block0(v0: i64, v1: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; cbnz x1, 8 ; udf
|
||||
; adds xzr, x1, #1
|
||||
@@ -65,6 +96,17 @@ block0(v0: i64, v1: i64):
|
||||
; b.vc 8 ; udf
|
||||
; sdiv x0, x0, x1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cbnz x1, #8
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: int_divz
|
||||
; cmn x1, #1
|
||||
; ccmp x0, #1, #0, eq
|
||||
; b.vc #0x18
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: int_ovf
|
||||
; sdiv x0, x0, x1
|
||||
; ret
|
||||
|
||||
function %f7(i64) -> i64 {
|
||||
block0(v0: i64):
|
||||
@@ -73,10 +115,17 @@ block0(v0: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movz w2, #2
|
||||
; sdiv x0, x0, x2
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov w2, #2
|
||||
; sdiv x0, x0, x2
|
||||
; ret
|
||||
|
||||
function %f8(i64, i64) -> i64 {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -84,10 +133,18 @@ block0(v0: i64, v1: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; cbnz x1, 8 ; udf
|
||||
; udiv x0, x0, x1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cbnz x1, #8
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: int_divz
|
||||
; udiv x0, x0, x1
|
||||
; ret
|
||||
|
||||
function %f9(i64) -> i64 {
|
||||
block0(v0: i64):
|
||||
@@ -96,10 +153,17 @@ block0(v0: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movz x2, #2
|
||||
; udiv x0, x0, x2
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov x2, #2
|
||||
; udiv x0, x0, x2
|
||||
; ret
|
||||
|
||||
function %f10(i64, i64) -> i64 {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -107,11 +171,20 @@ block0(v0: i64, v1: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; cbnz x1, 8 ; udf
|
||||
; sdiv x4, x0, x1
|
||||
; msub x0, x4, x1, x0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cbnz x1, #8
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: int_divz
|
||||
; sdiv x4, x0, x1
|
||||
; msub x0, x4, x1, x0
|
||||
; ret
|
||||
|
||||
function %f11(i64, i64) -> i64 {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -119,11 +192,20 @@ block0(v0: i64, v1: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; cbnz x1, 8 ; udf
|
||||
; udiv x4, x0, x1
|
||||
; msub x0, x4, x1, x0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cbnz x1, #8
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: int_divz
|
||||
; udiv x4, x0, x1
|
||||
; msub x0, x4, x1, x0
|
||||
; ret
|
||||
|
||||
function %f12(i32, i32) -> i32 {
|
||||
block0(v0: i32, v1: i32):
|
||||
@@ -131,6 +213,7 @@ block0(v0: i32, v1: i32):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sxtw x3, w0
|
||||
; sxtw x5, w1
|
||||
@@ -140,6 +223,19 @@ block0(v0: i32, v1: i32):
|
||||
; b.vc 8 ; udf
|
||||
; sdiv x0, x3, x5
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; sxtw x3, w0
|
||||
; sxtw x5, w1
|
||||
; cbnz x5, #0x10
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: int_divz
|
||||
; cmn w5, #1
|
||||
; ccmp w3, #1, #0, eq
|
||||
; b.vc #0x20
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: int_ovf
|
||||
; sdiv x0, x3, x5
|
||||
; ret
|
||||
|
||||
function %f13(i32) -> i32 {
|
||||
block0(v0: i32):
|
||||
@@ -148,11 +244,19 @@ block0(v0: i32):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sxtw x2, w0
|
||||
; movz w4, #2
|
||||
; sdiv x0, x2, x4
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; sxtw x2, w0
|
||||
; mov w4, #2
|
||||
; sdiv x0, x2, x4
|
||||
; ret
|
||||
|
||||
function %f14(i32, i32) -> i32 {
|
||||
block0(v0: i32, v1: i32):
|
||||
@@ -160,12 +264,22 @@ block0(v0: i32, v1: i32):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; mov w3, w0
|
||||
; mov w5, w1
|
||||
; cbnz x5, 8 ; udf
|
||||
; udiv x0, x3, x5
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov w3, w0
|
||||
; mov w5, w1
|
||||
; cbnz x5, #0x10
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: int_divz
|
||||
; udiv x0, x3, x5
|
||||
; ret
|
||||
|
||||
function %f15(i32) -> i32 {
|
||||
block0(v0: i32):
|
||||
@@ -174,11 +288,19 @@ block0(v0: i32):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; mov w2, w0
|
||||
; movz w4, #2
|
||||
; udiv x0, x2, x4
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov w2, w0
|
||||
; mov w4, #2
|
||||
; udiv x0, x2, x4
|
||||
; ret
|
||||
|
||||
function %f16(i32, i32) -> i32 {
|
||||
block0(v0: i32, v1: i32):
|
||||
@@ -186,6 +308,7 @@ block0(v0: i32, v1: i32):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sxtw x3, w0
|
||||
; sxtw x5, w1
|
||||
@@ -193,6 +316,16 @@ block0(v0: i32, v1: i32):
|
||||
; sdiv x8, x3, x5
|
||||
; msub x0, x8, x5, x3
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; sxtw x3, w0
|
||||
; sxtw x5, w1
|
||||
; cbnz x5, #0x10
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: int_divz
|
||||
; sdiv x8, x3, x5
|
||||
; msub x0, x8, x5, x3
|
||||
; ret
|
||||
|
||||
function %f17(i32, i32) -> i32 {
|
||||
block0(v0: i32, v1: i32):
|
||||
@@ -200,6 +333,7 @@ block0(v0: i32, v1: i32):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; mov w3, w0
|
||||
; mov w5, w1
|
||||
@@ -207,6 +341,16 @@ block0(v0: i32, v1: i32):
|
||||
; udiv x8, x3, x5
|
||||
; msub x0, x8, x5, x3
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov w3, w0
|
||||
; mov w5, w1
|
||||
; cbnz x5, #0x10
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: int_divz
|
||||
; udiv x8, x3, x5
|
||||
; msub x0, x8, x5, x3
|
||||
; ret
|
||||
|
||||
function %f18(i64, i64) -> i64 {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -214,9 +358,15 @@ block0(v0: i64, v1: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; and x0, x0, x1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; and x0, x0, x1
|
||||
; ret
|
||||
|
||||
function %f19(i64, i64) -> i64 {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -224,9 +374,15 @@ block0(v0: i64, v1: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; orr x0, x0, x1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; orr x0, x0, x1
|
||||
; ret
|
||||
|
||||
function %f20(i64, i64) -> i64 {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -234,9 +390,15 @@ block0(v0: i64, v1: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; eor x0, x0, x1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; eor x0, x0, x1
|
||||
; ret
|
||||
|
||||
function %f21(i64, i64) -> i64 {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -244,9 +406,15 @@ block0(v0: i64, v1: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; bic x0, x0, x1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; bic x0, x0, x1
|
||||
; ret
|
||||
|
||||
function %f22(i64, i64) -> i64 {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -254,9 +422,15 @@ block0(v0: i64, v1: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; orn x0, x0, x1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; orn x0, x0, x1
|
||||
; ret
|
||||
|
||||
function %f23(i64, i64) -> i64 {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -264,9 +438,15 @@ block0(v0: i64, v1: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; eon x0, x0, x1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; eon x0, x0, x1
|
||||
; ret
|
||||
|
||||
function %f24(i64, i64) -> i64 {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -274,9 +454,15 @@ block0(v0: i64, v1: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; orn x0, xzr, x0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mvn x0, x0
|
||||
; ret
|
||||
|
||||
function %f25(i32, i32) -> i32 {
|
||||
block0(v0: i32, v1: i32):
|
||||
@@ -286,9 +472,15 @@ block0(v0: i32, v1: i32):
|
||||
return v4
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sub w0, w1, w0, LSL 21
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; sub w0, w1, w0, lsl #21
|
||||
; ret
|
||||
|
||||
function %f26(i32) -> i32 {
|
||||
block0(v0: i32):
|
||||
@@ -297,9 +489,15 @@ block0(v0: i32):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sub w0, w0, #1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; sub w0, w0, #1
|
||||
; ret
|
||||
|
||||
function %f27(i32) -> i32 {
|
||||
block0(v0: i32):
|
||||
@@ -308,9 +506,15 @@ block0(v0: i32):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; add w0, w0, #1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; add w0, w0, #1
|
||||
; ret
|
||||
|
||||
function %f28(i64) -> i64 {
|
||||
block0(v0: i64):
|
||||
@@ -319,9 +523,15 @@ block0(v0: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; add x0, x0, #1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; add x0, x0, #1
|
||||
; ret
|
||||
|
||||
function %f29(i64) -> i64 {
|
||||
block0(v0: i64):
|
||||
@@ -330,10 +540,17 @@ block0(v0: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movz x2, #1
|
||||
; sub x0, xzr, x2
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov x2, #1
|
||||
; neg x0, x2
|
||||
; ret
|
||||
|
||||
function %f30(i8x16) -> i8x16 {
|
||||
block0(v0: i8x16):
|
||||
@@ -342,6 +559,7 @@ block0(v0: i8x16):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movz x2, #1
|
||||
; and w4, w2, #7
|
||||
@@ -349,6 +567,15 @@ block0(v0: i8x16):
|
||||
; dup v16.16b, w6
|
||||
; ushl v0.16b, v0.16b, v16.16b
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov x2, #1
|
||||
; and w4, w2, #7
|
||||
; neg x6, x4
|
||||
; dup v16.16b, w6
|
||||
; ushl v0.16b, v0.16b, v16.16b
|
||||
; ret
|
||||
|
||||
function %add_i128(i128, i128) -> i128 {
|
||||
block0(v0: i128, v1: i128):
|
||||
@@ -356,10 +583,17 @@ block0(v0: i128, v1: i128):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; adds x0, x0, x2
|
||||
; adc x1, x1, x3
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; adds x0, x0, x2
|
||||
; adc x1, x1, x3
|
||||
; ret
|
||||
|
||||
function %sub_i128(i128, i128) -> i128 {
|
||||
block0(v0: i128, v1: i128):
|
||||
@@ -367,10 +601,17 @@ block0(v0: i128, v1: i128):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; subs x0, x0, x2
|
||||
; sbc x1, x1, x3
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; subs x0, x0, x2
|
||||
; sbc x1, x1, x3
|
||||
; ret
|
||||
|
||||
function %mul_i128(i128, i128) -> i128 {
|
||||
block0(v0: i128, v1: i128):
|
||||
@@ -378,12 +619,21 @@ block0(v0: i128, v1: i128):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; umulh x5, x0, x2
|
||||
; madd x7, x0, x3, x5
|
||||
; madd x1, x1, x2, x7
|
||||
; madd x0, x0, x2, xzr
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; umulh x5, x0, x2
|
||||
; madd x7, x0, x3, x5
|
||||
; madd x1, x1, x2, x7
|
||||
; mul x0, x0, x2
|
||||
; ret
|
||||
|
||||
function %add_mul_1(i32, i32, i32) -> i32 {
|
||||
block0(v0: i32, v1: i32, v2: i32):
|
||||
@@ -392,9 +642,15 @@ block0(v0: i32, v1: i32, v2: i32):
|
||||
return v4
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; madd w0, w1, w2, w0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; madd w0, w1, w2, w0
|
||||
; ret
|
||||
|
||||
function %add_mul_2(i32, i32, i32) -> i32 {
|
||||
block0(v0: i32, v1: i32, v2: i32):
|
||||
@@ -403,9 +659,15 @@ block0(v0: i32, v1: i32, v2: i32):
|
||||
return v4
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; madd w0, w1, w2, w0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; madd w0, w1, w2, w0
|
||||
; ret
|
||||
|
||||
function %msub_i32(i32, i32, i32) -> i32 {
|
||||
block0(v0: i32, v1: i32, v2: i32):
|
||||
@@ -414,9 +676,15 @@ block0(v0: i32, v1: i32, v2: i32):
|
||||
return v4
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; msub w0, w1, w2, w0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; msub w0, w1, w2, w0
|
||||
; ret
|
||||
|
||||
function %msub_i64(i64, i64, i64) -> i64 {
|
||||
block0(v0: i64, v1: i64, v2: i64):
|
||||
@@ -425,9 +693,15 @@ block0(v0: i64, v1: i64, v2: i64):
|
||||
return v4
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; msub x0, x1, x2, x0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; msub x0, x1, x2, x0
|
||||
; ret
|
||||
|
||||
function %imul_sub_i32(i32, i32, i32) -> i32 {
|
||||
block0(v0: i32, v1: i32, v2: i32):
|
||||
@@ -436,10 +710,17 @@ block0(v0: i32, v1: i32, v2: i32):
|
||||
return v4
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; madd w5, w1, w2, wzr
|
||||
; sub w0, w5, w0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mul w5, w1, w2
|
||||
; sub w0, w5, w0
|
||||
; ret
|
||||
|
||||
function %imul_sub_i64(i64, i64, i64) -> i64 {
|
||||
block0(v0: i64, v1: i64, v2: i64):
|
||||
@@ -448,10 +729,17 @@ block0(v0: i64, v1: i64, v2: i64):
|
||||
return v4
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; madd x5, x1, x2, xzr
|
||||
; sub x0, x5, x0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mul x5, x1, x2
|
||||
; sub x0, x5, x0
|
||||
; ret
|
||||
|
||||
function %srem_const (i64) -> i64 {
|
||||
block0(v0: i64):
|
||||
@@ -460,11 +748,19 @@ block0(v0: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movz w2, #2
|
||||
; sdiv x4, x0, x2
|
||||
; msub x0, x4, x2, x0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov w2, #2
|
||||
; sdiv x4, x0, x2
|
||||
; msub x0, x4, x2, x0
|
||||
; ret
|
||||
|
||||
function %urem_const (i64) -> i64 {
|
||||
block0(v0: i64):
|
||||
@@ -473,11 +769,19 @@ block0(v0: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movz x2, #2
|
||||
; udiv x4, x0, x2
|
||||
; msub x0, x4, x2, x0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov x2, #2
|
||||
; udiv x4, x0, x2
|
||||
; msub x0, x4, x2, x0
|
||||
; ret
|
||||
|
||||
function %sdiv_minus_one(i64) -> i64 {
|
||||
block0(v0: i64):
|
||||
@@ -486,6 +790,7 @@ block0(v0: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movn x2, #0
|
||||
; adds xzr, x2, #1
|
||||
@@ -493,4 +798,14 @@ block0(v0: i64):
|
||||
; b.vc 8 ; udf
|
||||
; sdiv x0, x0, x2
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov x2, #-1
|
||||
; cmn x2, #1
|
||||
; ccmp x0, #1, #0, eq
|
||||
; b.vc #0x14
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: int_ovf
|
||||
; sdiv x0, x0, x2
|
||||
; ret
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@ block0(v0: i64, v1: i32, v2: i32):
|
||||
return v7
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
; str x28, [sp, #-16]!
|
||||
@@ -27,4 +28,27 @@ block0(v0: i64, v1: i32, v2: i32):
|
||||
; ldr x28, [sp], #16
|
||||
; ldp fp, lr, [sp], #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; str x28, [sp, #-0x10]!
|
||||
; stp x26, x27, [sp, #-0x10]!
|
||||
; stp x24, x25, [sp, #-0x10]!
|
||||
; block0: ; offset 0x14
|
||||
; mov x25, x0
|
||||
; mov x26, x1
|
||||
; mov x28, x2
|
||||
; ldaxr w27, [x25]
|
||||
; cmp x27, x26
|
||||
; b.ne #0x34
|
||||
; stlxr w24, w28, [x25]
|
||||
; cbnz x24, #0x20
|
||||
; cmp w27, w26
|
||||
; cset x0, eq
|
||||
; ldp x24, x25, [sp], #0x10
|
||||
; ldp x26, x27, [sp], #0x10
|
||||
; ldr x28, [sp], #0x10
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; ret
|
||||
|
||||
|
||||
@@ -7,9 +7,15 @@ block0(v0: i64, v1: i64):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ldaddal x1, x3, [x0]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ldaddal x1, x3, [x0]
|
||||
; ret
|
||||
|
||||
function %atomic_rmw_add_i32(i64, i32) {
|
||||
block0(v0: i64, v1: i32):
|
||||
@@ -17,9 +23,15 @@ block0(v0: i64, v1: i32):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ldaddal w1, w3, [x0]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ldaddal w1, w3, [x0]
|
||||
; ret
|
||||
|
||||
function %atomic_rmw_add_i16(i64, i16) {
|
||||
block0(v0: i64, v1: i16):
|
||||
@@ -27,9 +39,15 @@ block0(v0: i64, v1: i16):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ldaddalh w1, w3, [x0]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ldaddalh w1, w3, [x0]
|
||||
; ret
|
||||
|
||||
function %atomic_rmw_add_i8(i64, i8) {
|
||||
block0(v0: i64, v1: i8):
|
||||
@@ -37,9 +55,15 @@ block0(v0: i64, v1: i8):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ldaddalb w1, w3, [x0]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ldaddalb w1, w3, [x0]
|
||||
; ret
|
||||
|
||||
function %atomic_rmw_sub_i64(i64, i64) {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -47,10 +71,17 @@ block0(v0: i64, v1: i64):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sub x3, xzr, x1
|
||||
; ldaddal x3, x5, [x0]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; neg x3, x1
|
||||
; ldaddal x3, x5, [x0]
|
||||
; ret
|
||||
|
||||
function %atomic_rmw_sub_i32(i64, i32) {
|
||||
block0(v0: i64, v1: i32):
|
||||
@@ -58,10 +89,17 @@ block0(v0: i64, v1: i32):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sub w3, wzr, w1
|
||||
; ldaddal w3, w5, [x0]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; neg w3, w1
|
||||
; ldaddal w3, w5, [x0]
|
||||
; ret
|
||||
|
||||
function %atomic_rmw_sub_i16(i64, i16) {
|
||||
block0(v0: i64, v1: i16):
|
||||
@@ -69,10 +107,17 @@ block0(v0: i64, v1: i16):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sub w3, wzr, w1
|
||||
; ldaddalh w3, w5, [x0]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; neg w3, w1
|
||||
; ldaddalh w3, w5, [x0]
|
||||
; ret
|
||||
|
||||
function %atomic_rmw_sub_i8(i64, i8) {
|
||||
block0(v0: i64, v1: i8):
|
||||
@@ -80,10 +125,17 @@ block0(v0: i64, v1: i8):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sub w3, wzr, w1
|
||||
; ldaddalb w3, w5, [x0]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; neg w3, w1
|
||||
; ldaddalb w3, w5, [x0]
|
||||
; ret
|
||||
|
||||
function %atomic_rmw_and_i64(i64, i64) {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -91,10 +143,17 @@ block0(v0: i64, v1: i64):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; eon x3, x1, xzr
|
||||
; ldclral x3, x5, [x0]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; eon x3, x1, xzr
|
||||
; ldclral x3, x5, [x0]
|
||||
; ret
|
||||
|
||||
function %atomic_rmw_and_i32(i64, i32) {
|
||||
block0(v0: i64, v1: i32):
|
||||
@@ -102,10 +161,17 @@ block0(v0: i64, v1: i32):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; eon w3, w1, wzr
|
||||
; ldclral w3, w5, [x0]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; eon w3, w1, wzr
|
||||
; ldclral w3, w5, [x0]
|
||||
; ret
|
||||
|
||||
function %atomic_rmw_and_i16(i64, i16) {
|
||||
block0(v0: i64, v1: i16):
|
||||
@@ -113,10 +179,17 @@ block0(v0: i64, v1: i16):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; eon w3, w1, wzr
|
||||
; ldclralh w3, w5, [x0]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; eon w3, w1, wzr
|
||||
; ldclralh w3, w5, [x0]
|
||||
; ret
|
||||
|
||||
function %atomic_rmw_and_i8(i64, i8) {
|
||||
block0(v0: i64, v1: i8):
|
||||
@@ -124,10 +197,17 @@ block0(v0: i64, v1: i8):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; eon w3, w1, wzr
|
||||
; ldclralb w3, w5, [x0]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; eon w3, w1, wzr
|
||||
; ldclralb w3, w5, [x0]
|
||||
; ret
|
||||
|
||||
function %atomic_rmw_nand_i64(i64, i64) {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -135,6 +215,7 @@ block0(v0: i64, v1: i64):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
; str x28, [sp, #-16]!
|
||||
@@ -149,6 +230,26 @@ block0(v0: i64, v1: i64):
|
||||
; ldr x28, [sp], #16
|
||||
; ldp fp, lr, [sp], #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; str x28, [sp, #-0x10]!
|
||||
; stp x26, x27, [sp, #-0x10]!
|
||||
; stp x24, x25, [sp, #-0x10]!
|
||||
; block0: ; offset 0x14
|
||||
; mov x25, x0
|
||||
; mov x26, x1
|
||||
; ldaxr x27, [x25]
|
||||
; and x28, x27, x26
|
||||
; mvn x28, x28
|
||||
; stlxr w24, x28, [x25]
|
||||
; cbnz x24, #0x1c
|
||||
; ldp x24, x25, [sp], #0x10
|
||||
; ldp x26, x27, [sp], #0x10
|
||||
; ldr x28, [sp], #0x10
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; ret
|
||||
|
||||
function %atomic_rmw_nand_i32(i64, i32) {
|
||||
block0(v0: i64, v1: i32):
|
||||
@@ -156,6 +257,7 @@ block0(v0: i64, v1: i32):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
; str x28, [sp, #-16]!
|
||||
@@ -170,6 +272,26 @@ block0(v0: i64, v1: i32):
|
||||
; ldr x28, [sp], #16
|
||||
; ldp fp, lr, [sp], #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; str x28, [sp, #-0x10]!
|
||||
; stp x26, x27, [sp, #-0x10]!
|
||||
; stp x24, x25, [sp, #-0x10]!
|
||||
; block0: ; offset 0x14
|
||||
; mov x25, x0
|
||||
; mov x26, x1
|
||||
; ldaxr w27, [x25]
|
||||
; and w28, w27, w26
|
||||
; mvn w28, w28
|
||||
; stlxr w24, w28, [x25]
|
||||
; cbnz x24, #0x1c
|
||||
; ldp x24, x25, [sp], #0x10
|
||||
; ldp x26, x27, [sp], #0x10
|
||||
; ldr x28, [sp], #0x10
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; ret
|
||||
|
||||
function %atomic_rmw_nand_i16(i64, i16) {
|
||||
block0(v0: i64, v1: i16):
|
||||
@@ -177,6 +299,7 @@ block0(v0: i64, v1: i16):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
; str x28, [sp, #-16]!
|
||||
@@ -191,6 +314,26 @@ block0(v0: i64, v1: i16):
|
||||
; ldr x28, [sp], #16
|
||||
; ldp fp, lr, [sp], #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; str x28, [sp, #-0x10]!
|
||||
; stp x26, x27, [sp, #-0x10]!
|
||||
; stp x24, x25, [sp, #-0x10]!
|
||||
; block0: ; offset 0x14
|
||||
; mov x25, x0
|
||||
; mov x26, x1
|
||||
; ldaxrh w27, [x25]
|
||||
; and w28, w27, w26
|
||||
; mvn w28, w28
|
||||
; stlxrh w24, w28, [x25]
|
||||
; cbnz x24, #0x1c
|
||||
; ldp x24, x25, [sp], #0x10
|
||||
; ldp x26, x27, [sp], #0x10
|
||||
; ldr x28, [sp], #0x10
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; ret
|
||||
|
||||
function %atomic_rmw_nand_i8(i64, i8) {
|
||||
block0(v0: i64, v1: i8):
|
||||
@@ -198,6 +341,7 @@ block0(v0: i64, v1: i8):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
; str x28, [sp, #-16]!
|
||||
@@ -212,6 +356,26 @@ block0(v0: i64, v1: i8):
|
||||
; ldr x28, [sp], #16
|
||||
; ldp fp, lr, [sp], #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; str x28, [sp, #-0x10]!
|
||||
; stp x26, x27, [sp, #-0x10]!
|
||||
; stp x24, x25, [sp, #-0x10]!
|
||||
; block0: ; offset 0x14
|
||||
; mov x25, x0
|
||||
; mov x26, x1
|
||||
; ldaxrb w27, [x25]
|
||||
; and w28, w27, w26
|
||||
; mvn w28, w28
|
||||
; stlxrb w24, w28, [x25]
|
||||
; cbnz x24, #0x1c
|
||||
; ldp x24, x25, [sp], #0x10
|
||||
; ldp x26, x27, [sp], #0x10
|
||||
; ldr x28, [sp], #0x10
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; ret
|
||||
|
||||
function %atomic_rmw_or_i64(i64, i64) {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -219,9 +383,15 @@ block0(v0: i64, v1: i64):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ldsetal x1, x3, [x0]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ldsetal x1, x3, [x0]
|
||||
; ret
|
||||
|
||||
function %atomic_rmw_or_i32(i64, i32) {
|
||||
block0(v0: i64, v1: i32):
|
||||
@@ -229,9 +399,15 @@ block0(v0: i64, v1: i32):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ldsetal w1, w3, [x0]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ldsetal w1, w3, [x0]
|
||||
; ret
|
||||
|
||||
function %atomic_rmw_or_i16(i64, i16) {
|
||||
block0(v0: i64, v1: i16):
|
||||
@@ -239,9 +415,15 @@ block0(v0: i64, v1: i16):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ldsetalh w1, w3, [x0]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ldsetalh w1, w3, [x0]
|
||||
; ret
|
||||
|
||||
function %atomic_rmw_or_i8(i64, i8) {
|
||||
block0(v0: i64, v1: i8):
|
||||
@@ -249,9 +431,15 @@ block0(v0: i64, v1: i8):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ldsetalb w1, w3, [x0]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ldsetalb w1, w3, [x0]
|
||||
; ret
|
||||
|
||||
function %atomic_rmw_xor_i64(i64, i64) {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -259,9 +447,15 @@ block0(v0: i64, v1: i64):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ldeoral x1, x3, [x0]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ldeoral x1, x3, [x0]
|
||||
; ret
|
||||
|
||||
function %atomic_rmw_xor_i32(i64, i32) {
|
||||
block0(v0: i64, v1: i32):
|
||||
@@ -269,9 +463,15 @@ block0(v0: i64, v1: i32):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ldeoral w1, w3, [x0]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ldeoral w1, w3, [x0]
|
||||
; ret
|
||||
|
||||
function %atomic_rmw_xor_i16(i64, i16) {
|
||||
block0(v0: i64, v1: i16):
|
||||
@@ -279,9 +479,15 @@ block0(v0: i64, v1: i16):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ldeoralh w1, w3, [x0]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ldeoralh w1, w3, [x0]
|
||||
; ret
|
||||
|
||||
function %atomic_rmw_xor_i8(i64, i8) {
|
||||
block0(v0: i64, v1: i8):
|
||||
@@ -289,9 +495,15 @@ block0(v0: i64, v1: i8):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ldeoralb w1, w3, [x0]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ldeoralb w1, w3, [x0]
|
||||
; ret
|
||||
|
||||
function %atomic_rmw_smax_i64(i64, i64) {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -299,9 +511,15 @@ block0(v0: i64, v1: i64):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ldsmaxal x1, x3, [x0]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ldsmaxal x1, x3, [x0]
|
||||
; ret
|
||||
|
||||
function %atomic_rmw_smax_i32(i64, i32) {
|
||||
block0(v0: i64, v1: i32):
|
||||
@@ -309,9 +527,15 @@ block0(v0: i64, v1: i32):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ldsmaxal w1, w3, [x0]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ldsmaxal w1, w3, [x0]
|
||||
; ret
|
||||
|
||||
function %atomic_rmw_smax_i16(i64, i16) {
|
||||
block0(v0: i64, v1: i16):
|
||||
@@ -319,9 +543,15 @@ block0(v0: i64, v1: i16):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ldsmaxalh w1, w3, [x0]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ldsmaxalh w1, w3, [x0]
|
||||
; ret
|
||||
|
||||
function %atomic_rmw_smax_i8(i64, i8) {
|
||||
block0(v0: i64, v1: i8):
|
||||
@@ -329,9 +559,15 @@ block0(v0: i64, v1: i8):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ldsmaxalb w1, w3, [x0]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ldsmaxalb w1, w3, [x0]
|
||||
; ret
|
||||
|
||||
function %atomic_rmw_umax_i64(i64, i64) {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -339,9 +575,15 @@ block0(v0: i64, v1: i64):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ldumaxal x1, x3, [x0]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ldumaxal x1, x3, [x0]
|
||||
; ret
|
||||
|
||||
function %atomic_rmw_umax_i32(i64, i32) {
|
||||
block0(v0: i64, v1: i32):
|
||||
@@ -349,9 +591,15 @@ block0(v0: i64, v1: i32):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ldumaxal w1, w3, [x0]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ldumaxal w1, w3, [x0]
|
||||
; ret
|
||||
|
||||
function %atomic_rmw_umax_i16(i64, i16) {
|
||||
block0(v0: i64, v1: i16):
|
||||
@@ -359,9 +607,15 @@ block0(v0: i64, v1: i16):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ldumaxalh w1, w3, [x0]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ldumaxalh w1, w3, [x0]
|
||||
; ret
|
||||
|
||||
function %atomic_rmw_umax_i8(i64, i8) {
|
||||
block0(v0: i64, v1: i8):
|
||||
@@ -369,9 +623,15 @@ block0(v0: i64, v1: i8):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ldumaxalb w1, w3, [x0]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ldumaxalb w1, w3, [x0]
|
||||
; ret
|
||||
|
||||
function %atomic_rmw_smin_i64(i64, i64) {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -379,9 +639,15 @@ block0(v0: i64, v1: i64):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ldsminal x1, x3, [x0]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ldsminal x1, x3, [x0]
|
||||
; ret
|
||||
|
||||
function %atomic_rmw_smin_i32(i64, i32) {
|
||||
block0(v0: i64, v1: i32):
|
||||
@@ -389,9 +655,15 @@ block0(v0: i64, v1: i32):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ldsminal w1, w3, [x0]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ldsminal w1, w3, [x0]
|
||||
; ret
|
||||
|
||||
function %atomic_rmw_smin_i16(i64, i16) {
|
||||
block0(v0: i64, v1: i16):
|
||||
@@ -399,9 +671,15 @@ block0(v0: i64, v1: i16):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ldsminalh w1, w3, [x0]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ldsminalh w1, w3, [x0]
|
||||
; ret
|
||||
|
||||
function %atomic_rmw_smin_i8(i64, i8) {
|
||||
block0(v0: i64, v1: i8):
|
||||
@@ -409,9 +687,15 @@ block0(v0: i64, v1: i8):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ldsminalb w1, w3, [x0]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ldsminalb w1, w3, [x0]
|
||||
; ret
|
||||
|
||||
function %atomic_rmw_umin_i64(i64, i64) {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -419,9 +703,15 @@ block0(v0: i64, v1: i64):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; lduminal x1, x3, [x0]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; lduminal x1, x3, [x0]
|
||||
; ret
|
||||
|
||||
function %atomic_rmw_umin_i32(i64, i32) {
|
||||
block0(v0: i64, v1: i32):
|
||||
@@ -429,9 +719,15 @@ block0(v0: i64, v1: i32):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; lduminal w1, w3, [x0]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; lduminal w1, w3, [x0]
|
||||
; ret
|
||||
|
||||
function %atomic_rmw_umin_i16(i64, i16) {
|
||||
block0(v0: i64, v1: i16):
|
||||
@@ -439,9 +735,15 @@ block0(v0: i64, v1: i16):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; lduminalh w1, w3, [x0]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; lduminalh w1, w3, [x0]
|
||||
; ret
|
||||
|
||||
function %atomic_rmw_umin_i8(i64, i8) {
|
||||
block0(v0: i64, v1: i8):
|
||||
@@ -449,7 +751,13 @@ block0(v0: i64, v1: i8):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; lduminalb w1, w3, [x0]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; lduminalb w1, w3, [x0]
|
||||
; ret
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -7,9 +7,15 @@ block0(v0: i64):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ldar x0, [x0]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ldar x0, [x0]
|
||||
; ret
|
||||
|
||||
function %atomic_load_i32(i64) -> i32 {
|
||||
block0(v0: i64):
|
||||
@@ -17,9 +23,15 @@ block0(v0: i64):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ldar w0, [x0]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ldar w0, [x0]
|
||||
; ret
|
||||
|
||||
function %atomic_load_i16(i64) -> i16 {
|
||||
block0(v0: i64):
|
||||
@@ -27,9 +39,15 @@ block0(v0: i64):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ldarh w0, [x0]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ldarh w0, [x0]
|
||||
; ret
|
||||
|
||||
function %atomic_load_i8(i64) -> i8 {
|
||||
block0(v0: i64):
|
||||
@@ -37,9 +55,15 @@ block0(v0: i64):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ldarb w0, [x0]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ldarb w0, [x0]
|
||||
; ret
|
||||
|
||||
function %atomic_load_i32_i64(i64) -> i64 {
|
||||
block0(v0: i64):
|
||||
@@ -48,9 +72,15 @@ block0(v0: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ldar w0, [x0]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ldar w0, [x0]
|
||||
; ret
|
||||
|
||||
function %atomic_load_i16_i64(i64) -> i64 {
|
||||
block0(v0: i64):
|
||||
@@ -59,9 +89,15 @@ block0(v0: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ldarh w0, [x0]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ldarh w0, [x0]
|
||||
; ret
|
||||
|
||||
function %atomic_load_i8_i64(i64) -> i64 {
|
||||
block0(v0: i64):
|
||||
@@ -70,9 +106,15 @@ block0(v0: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ldarb w0, [x0]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ldarb w0, [x0]
|
||||
; ret
|
||||
|
||||
function %atomic_load_i16_i32(i64) -> i32 {
|
||||
block0(v0: i64):
|
||||
@@ -81,9 +123,15 @@ block0(v0: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ldarh w0, [x0]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ldarh w0, [x0]
|
||||
; ret
|
||||
|
||||
function %atomic_load_i8_i32(i64) -> i32 {
|
||||
block0(v0: i64):
|
||||
@@ -92,7 +140,13 @@ block0(v0: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ldarb w0, [x0]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ldarb w0, [x0]
|
||||
; ret
|
||||
|
||||
|
||||
@@ -7,9 +7,15 @@ block0(v0: i64, v1: i64):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; stlr x0, [x1]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; stlr x0, [x1]
|
||||
; ret
|
||||
|
||||
function %atomic_store_i32(i32, i64) {
|
||||
block0(v0: i32, v1: i64):
|
||||
@@ -17,9 +23,15 @@ block0(v0: i32, v1: i64):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; stlr w0, [x1]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; stlr w0, [x1]
|
||||
; ret
|
||||
|
||||
function %atomic_store_i16(i16, i64) {
|
||||
block0(v0: i16, v1: i64):
|
||||
@@ -27,9 +39,15 @@ block0(v0: i16, v1: i64):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; stlrh w0, [x1]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; stlrh w0, [x1]
|
||||
; ret
|
||||
|
||||
function %atomic_store_i8(i8, i64) {
|
||||
block0(v0: i8, v1: i64):
|
||||
@@ -37,9 +55,15 @@ block0(v0: i8, v1: i64):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; stlrb w0, [x1]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; stlrb w0, [x1]
|
||||
; ret
|
||||
|
||||
function %atomic_store_i64_i32(i64, i64) {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -48,9 +72,15 @@ block0(v0: i64, v1: i64):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; stlr w0, [x1]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; stlr w0, [x1]
|
||||
; ret
|
||||
|
||||
function %atomic_store_i64_i16(i64, i64) {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -59,9 +89,15 @@ block0(v0: i64, v1: i64):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; stlrh w0, [x1]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; stlrh w0, [x1]
|
||||
; ret
|
||||
|
||||
function %atomic_store_i64_i8(i64, i64) {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -70,9 +106,15 @@ block0(v0: i64, v1: i64):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; stlrb w0, [x1]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; stlrb w0, [x1]
|
||||
; ret
|
||||
|
||||
function %atomic_store_i32_i16(i32, i64) {
|
||||
block0(v0: i32, v1: i64):
|
||||
@@ -81,9 +123,15 @@ block0(v0: i32, v1: i64):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; stlrh w0, [x1]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; stlrh w0, [x1]
|
||||
; ret
|
||||
|
||||
function %atomic_store_i32_i8(i32, i64) {
|
||||
block0(v0: i32, v1: i64):
|
||||
@@ -92,7 +140,13 @@ block0(v0: i32, v1: i64):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; stlrb w0, [x1]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; stlrb w0, [x1]
|
||||
; ret
|
||||
|
||||
|
||||
@@ -8,7 +8,13 @@ block0(v0: i32, v1: i32):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; add w0, w0, w1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; add w0, w0, w1
|
||||
; ret
|
||||
|
||||
|
||||
@@ -7,9 +7,15 @@ block0(v0: f32):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; mov w0, v0.s[0]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov w0, v0.s[0]
|
||||
; ret
|
||||
|
||||
function %f2(i32) -> f32 {
|
||||
block0(v0: i32):
|
||||
@@ -17,9 +23,15 @@ block0(v0: i32):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fmov s0, w0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fmov s0, w0
|
||||
; ret
|
||||
|
||||
function %f3(f64) -> i64 {
|
||||
block0(v0: f64):
|
||||
@@ -27,9 +39,15 @@ block0(v0: f64):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; mov x0, v0.d[0]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov x0, v0.d[0]
|
||||
; ret
|
||||
|
||||
function %f4(i64) -> f64 {
|
||||
block0(v0: i64):
|
||||
@@ -37,7 +55,13 @@ block0(v0: i64):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fmov d0, x0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fmov d0, x0
|
||||
; ret
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -10,9 +10,15 @@ block0(v0: i32, v1: i32):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; bic w0, w1, w0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; bic w0, w1, w0
|
||||
; ret
|
||||
|
||||
function %bor_not_i32_reversed(i32, i32) -> i32 {
|
||||
block0(v0: i32, v1: i32):
|
||||
@@ -21,9 +27,15 @@ block0(v0: i32, v1: i32):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; orn w0, w1, w0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; orn w0, w1, w0
|
||||
; ret
|
||||
|
||||
function %bxor_not_i32_reversed(i32, i32) -> i32 {
|
||||
block0(v0: i32, v1: i32):
|
||||
@@ -32,6 +44,13 @@ block0(v0: i32, v1: i32):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; eon w0, w1, w0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; eon w0, w1, w0
|
||||
; ret
|
||||
|
||||
|
||||
@@ -8,10 +8,17 @@ block0(v0: i64):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; subs xzr, x0, #0
|
||||
; csetm x0, ne
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmp x0, #0
|
||||
; csetm x0, ne
|
||||
; ret
|
||||
|
||||
function %bmask_i64_i32(i64) -> i32 {
|
||||
block0(v0: i64):
|
||||
@@ -19,10 +26,17 @@ block0(v0: i64):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; subs xzr, x0, #0
|
||||
; csetm x0, ne
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmp x0, #0
|
||||
; csetm x0, ne
|
||||
; ret
|
||||
|
||||
function %bmask_i64_i16(i64) -> i16 {
|
||||
block0(v0: i64):
|
||||
@@ -30,10 +44,17 @@ block0(v0: i64):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; subs xzr, x0, #0
|
||||
; csetm x0, ne
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmp x0, #0
|
||||
; csetm x0, ne
|
||||
; ret
|
||||
|
||||
function %bmask_i64_i8(i64) -> i8 {
|
||||
block0(v0: i64):
|
||||
@@ -41,10 +62,17 @@ block0(v0: i64):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; subs xzr, x0, #0
|
||||
; csetm x0, ne
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmp x0, #0
|
||||
; csetm x0, ne
|
||||
; ret
|
||||
|
||||
function %bmask_i32_i64(i32) -> i64 {
|
||||
block0(v0: i32):
|
||||
@@ -52,10 +80,17 @@ block0(v0: i32):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; subs wzr, w0, #0
|
||||
; csetm x0, ne
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmp w0, #0
|
||||
; csetm x0, ne
|
||||
; ret
|
||||
|
||||
function %bmask_i32_i32(i32) -> i32 {
|
||||
block0(v0: i32):
|
||||
@@ -63,10 +98,17 @@ block0(v0: i32):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; subs wzr, w0, #0
|
||||
; csetm x0, ne
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmp w0, #0
|
||||
; csetm x0, ne
|
||||
; ret
|
||||
|
||||
function %bmask_i32_i16(i32) -> i16 {
|
||||
block0(v0: i32):
|
||||
@@ -74,10 +116,17 @@ block0(v0: i32):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; subs wzr, w0, #0
|
||||
; csetm x0, ne
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmp w0, #0
|
||||
; csetm x0, ne
|
||||
; ret
|
||||
|
||||
function %bmask_i32_i8(i32) -> i8 {
|
||||
block0(v0: i32):
|
||||
@@ -85,10 +134,17 @@ block0(v0: i32):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; subs wzr, w0, #0
|
||||
; csetm x0, ne
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmp w0, #0
|
||||
; csetm x0, ne
|
||||
; ret
|
||||
|
||||
function %bmask_i16_i64(i16) -> i64 {
|
||||
block0(v0: i16):
|
||||
@@ -96,11 +152,19 @@ block0(v0: i16):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; and w2, w0, #65535
|
||||
; subs wzr, w2, #0
|
||||
; csetm x0, ne
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; and w2, w0, #0xffff
|
||||
; cmp w2, #0
|
||||
; csetm x0, ne
|
||||
; ret
|
||||
|
||||
function %bmask_i16_i32(i16) -> i32 {
|
||||
block0(v0: i16):
|
||||
@@ -108,11 +172,19 @@ block0(v0: i16):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; and w2, w0, #65535
|
||||
; subs wzr, w2, #0
|
||||
; csetm x0, ne
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; and w2, w0, #0xffff
|
||||
; cmp w2, #0
|
||||
; csetm x0, ne
|
||||
; ret
|
||||
|
||||
function %bmask_i16_i16(i16) -> i16 {
|
||||
block0(v0: i16):
|
||||
@@ -120,11 +192,19 @@ block0(v0: i16):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; and w2, w0, #65535
|
||||
; subs wzr, w2, #0
|
||||
; csetm x0, ne
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; and w2, w0, #0xffff
|
||||
; cmp w2, #0
|
||||
; csetm x0, ne
|
||||
; ret
|
||||
|
||||
function %bmask_i16_i8(i16) -> i8 {
|
||||
block0(v0: i16):
|
||||
@@ -132,11 +212,19 @@ block0(v0: i16):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; and w2, w0, #65535
|
||||
; subs wzr, w2, #0
|
||||
; csetm x0, ne
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; and w2, w0, #0xffff
|
||||
; cmp w2, #0
|
||||
; csetm x0, ne
|
||||
; ret
|
||||
|
||||
function %bmask_i8_i64(i8) -> i64 {
|
||||
block0(v0: i8):
|
||||
@@ -144,11 +232,19 @@ block0(v0: i8):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; and w2, w0, #255
|
||||
; subs wzr, w2, #0
|
||||
; csetm x0, ne
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; and w2, w0, #0xff
|
||||
; cmp w2, #0
|
||||
; csetm x0, ne
|
||||
; ret
|
||||
|
||||
function %bmask_i8_i32(i8) -> i32 {
|
||||
block0(v0: i8):
|
||||
@@ -156,11 +252,19 @@ block0(v0: i8):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; and w2, w0, #255
|
||||
; subs wzr, w2, #0
|
||||
; csetm x0, ne
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; and w2, w0, #0xff
|
||||
; cmp w2, #0
|
||||
; csetm x0, ne
|
||||
; ret
|
||||
|
||||
function %bmask_i8_i16(i8) -> i16 {
|
||||
block0(v0: i8):
|
||||
@@ -168,11 +272,19 @@ block0(v0: i8):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; and w2, w0, #255
|
||||
; subs wzr, w2, #0
|
||||
; csetm x0, ne
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; and w2, w0, #0xff
|
||||
; cmp w2, #0
|
||||
; csetm x0, ne
|
||||
; ret
|
||||
|
||||
function %bmask_i8_i8(i8) -> i8 {
|
||||
block0(v0: i8):
|
||||
@@ -180,11 +292,19 @@ block0(v0: i8):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; and w2, w0, #255
|
||||
; subs wzr, w2, #0
|
||||
; csetm x0, ne
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; and w2, w0, #0xff
|
||||
; cmp w2, #0
|
||||
; csetm x0, ne
|
||||
; ret
|
||||
|
||||
function %bmask_i128_i128(i128) -> i128 {
|
||||
block0(v0: i128):
|
||||
@@ -192,12 +312,21 @@ block0(v0: i128):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; orr x3, x0, x1
|
||||
; subs xzr, x3, #0
|
||||
; csetm x1, ne
|
||||
; mov x0, x1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; orr x3, x0, x1
|
||||
; cmp x3, #0
|
||||
; csetm x1, ne
|
||||
; mov x0, x1
|
||||
; ret
|
||||
|
||||
function %bmask_i128_i64(i128) -> i64 {
|
||||
block0(v0: i128):
|
||||
@@ -205,11 +334,19 @@ block0(v0: i128):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; orr x3, x0, x1
|
||||
; subs xzr, x3, #0
|
||||
; csetm x0, ne
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; orr x3, x0, x1
|
||||
; cmp x3, #0
|
||||
; csetm x0, ne
|
||||
; ret
|
||||
|
||||
function %bmask_i128_i32(i128) -> i32 {
|
||||
block0(v0: i128):
|
||||
@@ -217,11 +354,19 @@ block0(v0: i128):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; orr x3, x0, x1
|
||||
; subs xzr, x3, #0
|
||||
; csetm x0, ne
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; orr x3, x0, x1
|
||||
; cmp x3, #0
|
||||
; csetm x0, ne
|
||||
; ret
|
||||
|
||||
function %bmask_i128_i16(i128) -> i16 {
|
||||
block0(v0: i128):
|
||||
@@ -229,11 +374,19 @@ block0(v0: i128):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; orr x3, x0, x1
|
||||
; subs xzr, x3, #0
|
||||
; csetm x0, ne
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; orr x3, x0, x1
|
||||
; cmp x3, #0
|
||||
; csetm x0, ne
|
||||
; ret
|
||||
|
||||
function %bmask_i128_i8(i128) -> i8 {
|
||||
block0(v0: i128):
|
||||
@@ -241,11 +394,19 @@ block0(v0: i128):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; orr x3, x0, x1
|
||||
; subs xzr, x3, #0
|
||||
; csetm x0, ne
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; orr x3, x0, x1
|
||||
; cmp x3, #0
|
||||
; csetm x0, ne
|
||||
; ret
|
||||
|
||||
function %bmask_i64_i128(i64) -> i128 {
|
||||
block0(v0: i64):
|
||||
@@ -253,11 +414,19 @@ block0(v0: i64):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; subs xzr, x0, #0
|
||||
; csetm x1, ne
|
||||
; mov x0, x1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmp x0, #0
|
||||
; csetm x1, ne
|
||||
; mov x0, x1
|
||||
; ret
|
||||
|
||||
function %bmask_i32_i128(i32) -> i128 {
|
||||
block0(v0: i32):
|
||||
@@ -265,11 +434,19 @@ block0(v0: i32):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; subs wzr, w0, #0
|
||||
; csetm x1, ne
|
||||
; mov x0, x1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmp w0, #0
|
||||
; csetm x1, ne
|
||||
; mov x0, x1
|
||||
; ret
|
||||
|
||||
function %bmask_i16_i128(i16) -> i128 {
|
||||
block0(v0: i16):
|
||||
@@ -277,12 +454,21 @@ block0(v0: i16):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; and w2, w0, #65535
|
||||
; subs wzr, w2, #0
|
||||
; csetm x1, ne
|
||||
; mov x0, x1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; and w2, w0, #0xffff
|
||||
; cmp w2, #0
|
||||
; csetm x1, ne
|
||||
; mov x0, x1
|
||||
; ret
|
||||
|
||||
function %bmask_i8_i128(i8) -> i128 {
|
||||
block0(v0: i8):
|
||||
@@ -290,10 +476,19 @@ block0(v0: i8):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; and w2, w0, #255
|
||||
; subs wzr, w2, #0
|
||||
; csetm x1, ne
|
||||
; mov x0, x1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; and w2, w0, #0xff
|
||||
; cmp w2, #0
|
||||
; csetm x1, ne
|
||||
; mov x0, x1
|
||||
; ret
|
||||
|
||||
|
||||
@@ -8,9 +8,15 @@ block0(v0: i64):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; rev64 x0, x0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; rev x0, x0
|
||||
; ret
|
||||
|
||||
function %f1(i32) -> i32 {
|
||||
block0(v0: i32):
|
||||
@@ -18,9 +24,15 @@ block0(v0: i32):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; rev32 w0, w0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; rev w0, w0
|
||||
; ret
|
||||
|
||||
function %f2(i16) -> i16 {
|
||||
block0(v0: i16):
|
||||
@@ -28,7 +40,13 @@ block0(v0: i16):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; rev16 w0, w0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; rev16 w0, w0
|
||||
; ret
|
||||
|
||||
|
||||
@@ -27,6 +27,7 @@ block5(v5: i32):
|
||||
return v6
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; bti c
|
||||
; block0:
|
||||
; emit_island 44
|
||||
@@ -58,6 +59,41 @@ block5(v5: i32):
|
||||
; block9:
|
||||
; add w0, w0, w5
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; hint #0x22
|
||||
; block0: ; offset 0x4
|
||||
; cmp w0, #3
|
||||
; b.hs #0x30
|
||||
; csel x15, xzr, x0, hs
|
||||
; csdb
|
||||
; adr x14, #0x24
|
||||
; ldrsw x15, [x14, w15, uxtw #2]
|
||||
; add x14, x14, x15
|
||||
; br x14
|
||||
; .byte 0x14, 0x00, 0x00, 0x00
|
||||
; .byte 0x20, 0x00, 0x00, 0x00
|
||||
; .byte 0x2c, 0x00, 0x00, 0x00
|
||||
; block1: ; offset 0x30
|
||||
; mov w5, #4
|
||||
; block2: ; offset 0x34
|
||||
; b #0x58
|
||||
; block3: ; offset 0x38
|
||||
; hint #0x24
|
||||
; mov w5, #1
|
||||
; block4: ; offset 0x40
|
||||
; b #0x58
|
||||
; block5: ; offset 0x44
|
||||
; hint #0x24
|
||||
; mov w5, #2
|
||||
; block6: ; offset 0x4c
|
||||
; b #0x58
|
||||
; block7: ; offset 0x50
|
||||
; hint #0x24
|
||||
; mov w5, #3
|
||||
; block8: ; offset 0x58
|
||||
; add w0, w0, w5
|
||||
; ret
|
||||
|
||||
function %f2(i64) -> i64 {
|
||||
block0(v0: i64):
|
||||
@@ -74,6 +110,7 @@ block2:
|
||||
return v4
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; bti c
|
||||
; block0:
|
||||
; ldr x5, [x0]
|
||||
@@ -89,6 +126,29 @@ block2:
|
||||
; mov x0, x8
|
||||
; add x0, x0, #42
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; hint #0x22
|
||||
; block0: ; offset 0x4
|
||||
; ldr x5, [x0]
|
||||
; mov x8, x5
|
||||
; cmp w0, #1
|
||||
; b.hs #0x30
|
||||
; csel x7, xzr, x0, hs
|
||||
; csdb
|
||||
; adr x6, #0x2c
|
||||
; ldrsw x7, [x6, w7, uxtw #2]
|
||||
; add x6, x6, x7
|
||||
; br x6
|
||||
; .byte 0x0c, 0x00, 0x00, 0x00
|
||||
; block1: ; offset 0x30
|
||||
; mov x0, x8
|
||||
; ret
|
||||
; block2: ; offset 0x38
|
||||
; hint #0x24
|
||||
; mov x0, x8
|
||||
; add x0, x0, #0x2a
|
||||
; ret
|
||||
|
||||
function %f3(i64) -> i64 {
|
||||
fn0 = %g(i64) -> i64
|
||||
@@ -98,6 +158,7 @@ block0(v0: i64):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; bti c
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
@@ -106,4 +167,17 @@ block0(v0: i64):
|
||||
; blr x3
|
||||
; ldp fp, lr, [sp], #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; hint #0x22
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; block0: ; offset 0xc
|
||||
; ldr x3, #0x14
|
||||
; b #0x1c
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %g 0
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; blr x3
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; ret
|
||||
|
||||
|
||||
@@ -9,10 +9,19 @@ block0(v0: i64, v1: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
; block0:
|
||||
; blr x1
|
||||
; ldp fp, lr, [sp], #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; block0: ; offset 0x8
|
||||
; blr x1
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; ret
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@ block0(v0: i64):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; paciasp
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
@@ -18,6 +19,20 @@ block0(v0: i64):
|
||||
; blr x3
|
||||
; ldp fp, lr, [sp], #16
|
||||
; autiasp ; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; paciasp
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; block0: ; offset 0xc
|
||||
; ldr x3, #0x14
|
||||
; b #0x1c
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %g 0
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; blr x3
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; autiasp
|
||||
; ret
|
||||
|
||||
function %f2(i64, i64) -> i64 {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -25,6 +40,13 @@ block0(v0: i64, v1: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; add x0, x0, x1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; add x0, x0, x1
|
||||
; ret
|
||||
|
||||
|
||||
@@ -11,6 +11,7 @@ block0(v0: i64):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
; block0:
|
||||
@@ -18,6 +19,18 @@ block0(v0: i64):
|
||||
; blr x3
|
||||
; ldp fp, lr, [sp], #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; block0: ; offset 0x8
|
||||
; ldr x3, #0x10
|
||||
; b #0x18
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %g 0
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; blr x3
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; ret
|
||||
|
||||
function %f2(i32) -> i64 {
|
||||
fn0 = %g(i32 uext) -> i64
|
||||
@@ -27,6 +40,7 @@ block0(v0: i32):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
; block0:
|
||||
@@ -34,14 +48,31 @@ block0(v0: i32):
|
||||
; blr x3
|
||||
; ldp fp, lr, [sp], #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; block0: ; offset 0x8
|
||||
; ldr x3, #0x10
|
||||
; b #0x18
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %g 0
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; blr x3
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; ret
|
||||
|
||||
function %f3(i32) -> i32 uext {
|
||||
block0(v0: i32):
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ret
|
||||
|
||||
function %f4(i32) -> i64 {
|
||||
fn0 = %g(i32 sext) -> i64
|
||||
@@ -51,6 +82,7 @@ block0(v0: i32):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
; block0:
|
||||
@@ -58,14 +90,31 @@ block0(v0: i32):
|
||||
; blr x3
|
||||
; ldp fp, lr, [sp], #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; block0: ; offset 0x8
|
||||
; ldr x3, #0x10
|
||||
; b #0x18
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %g 0
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; blr x3
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; ret
|
||||
|
||||
function %f5(i32) -> i32 sext {
|
||||
block0(v0: i32):
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ret
|
||||
|
||||
function %f6(i8) -> i64 {
|
||||
fn0 = %g(i32, i32, i32, i32, i32, i32, i32, i32, i8 sext) -> i64
|
||||
@@ -76,6 +125,7 @@ block0(v0: i8):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
; block0:
|
||||
@@ -97,6 +147,30 @@ block0(v0: i8):
|
||||
; virtual_sp_offset_adjust -16
|
||||
; ldp fp, lr, [sp], #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; block0: ; offset 0x8
|
||||
; mov x8, x0
|
||||
; sub sp, sp, #0x10
|
||||
; mov w0, #0x2a
|
||||
; mov w1, #0x2a
|
||||
; mov w2, #0x2a
|
||||
; mov w3, #0x2a
|
||||
; mov w4, #0x2a
|
||||
; mov w5, #0x2a
|
||||
; mov w6, #0x2a
|
||||
; mov w7, #0x2a
|
||||
; sturb w8, [sp]
|
||||
; ldr x8, #0x3c
|
||||
; b #0x44
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %g 0
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; blr x8
|
||||
; add sp, sp, #0x10
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; ret
|
||||
|
||||
function %f7(i8) -> i32, i32, i32, i32, i32, i32, i32, i32, i8 sext {
|
||||
block0(v0: i8):
|
||||
@@ -104,6 +178,7 @@ block0(v0: i8):
|
||||
return v1, v1, v1, v1, v1, v1, v1, v1, v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; mov x9, x0
|
||||
; mov x8, x1
|
||||
@@ -117,6 +192,21 @@ block0(v0: i8):
|
||||
; movz w7, #42
|
||||
; strb w9, [x8]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov x9, x0
|
||||
; mov x8, x1
|
||||
; mov w0, #0x2a
|
||||
; mov w1, #0x2a
|
||||
; mov w2, #0x2a
|
||||
; mov w3, #0x2a
|
||||
; mov w4, #0x2a
|
||||
; mov w5, #0x2a
|
||||
; mov w6, #0x2a
|
||||
; mov w7, #0x2a
|
||||
; sturb w9, [x8]
|
||||
; ret
|
||||
|
||||
function %f8() {
|
||||
fn0 = %g0() -> f32
|
||||
@@ -136,6 +226,7 @@ block0:
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
; sub sp, sp, #48
|
||||
@@ -163,6 +254,56 @@ block0:
|
||||
; add sp, sp, #48
|
||||
; ldp fp, lr, [sp], #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; sub sp, sp, #0x30
|
||||
; block0: ; offset 0xc
|
||||
; ldr x9, #0x14
|
||||
; b #0x1c
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %g0 0
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; blr x9
|
||||
; stur q0, [sp, #0x20]
|
||||
; ldr x9, #0x2c
|
||||
; b #0x34
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %g1 0
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; blr x9
|
||||
; stur q0, [sp, #0x10]
|
||||
; ldr x9, #0x44
|
||||
; b #0x4c
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %g1 0
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; blr x9
|
||||
; stur q0, [sp]
|
||||
; ldr x9, #0x5c
|
||||
; b #0x64
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %g2 0
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; blr x9
|
||||
; ldr x10, #0x70
|
||||
; b #0x78
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %g3 0
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; ldur q0, [sp, #0x20]
|
||||
; blr x10
|
||||
; ldr x11, #0x88
|
||||
; b #0x90
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %g4 0
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; ldur q0, [sp, #0x10]
|
||||
; blr x11
|
||||
; ldr x12, #0xa0
|
||||
; b #0xa8
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %g4 0
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; ldur q0, [sp]
|
||||
; blr x12
|
||||
; add sp, sp, #0x30
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; ret
|
||||
|
||||
function %f9() {
|
||||
fn0 = %g0() -> i8x16
|
||||
@@ -180,6 +321,7 @@ block0:
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
; sub sp, sp, #48
|
||||
@@ -207,6 +349,56 @@ block0:
|
||||
; add sp, sp, #48
|
||||
; ldp fp, lr, [sp], #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; sub sp, sp, #0x30
|
||||
; block0: ; offset 0xc
|
||||
; ldr x9, #0x14
|
||||
; b #0x1c
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %g0 0
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; blr x9
|
||||
; stur q0, [sp, #0x20]
|
||||
; ldr x9, #0x2c
|
||||
; b #0x34
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %g0 0
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; blr x9
|
||||
; stur q0, [sp, #0x10]
|
||||
; ldr x9, #0x44
|
||||
; b #0x4c
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %g0 0
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; blr x9
|
||||
; stur q0, [sp]
|
||||
; ldr x9, #0x5c
|
||||
; b #0x64
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %g1 0
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; blr x9
|
||||
; ldr x10, #0x70
|
||||
; b #0x78
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %g2 0
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; ldur q0, [sp, #0x20]
|
||||
; blr x10
|
||||
; ldr x11, #0x88
|
||||
; b #0x90
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %g2 0
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; ldur q0, [sp, #0x10]
|
||||
; blr x11
|
||||
; ldr x12, #0xa0
|
||||
; b #0xa8
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %g2 0
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; ldur q0, [sp]
|
||||
; blr x12
|
||||
; add sp, sp, #0x30
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; ret
|
||||
|
||||
function %f10() {
|
||||
fn0 = %g0() -> f32
|
||||
@@ -228,6 +420,7 @@ block0:
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
; sub sp, sp, #48
|
||||
@@ -255,6 +448,56 @@ block0:
|
||||
; add sp, sp, #48
|
||||
; ldp fp, lr, [sp], #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; sub sp, sp, #0x30
|
||||
; block0: ; offset 0xc
|
||||
; ldr x9, #0x14
|
||||
; b #0x1c
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %g0 0
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; blr x9
|
||||
; stur q0, [sp, #0x20]
|
||||
; ldr x9, #0x2c
|
||||
; b #0x34
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %g1 0
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; blr x9
|
||||
; stur q0, [sp, #0x10]
|
||||
; ldr x9, #0x44
|
||||
; b #0x4c
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %g2 0
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; blr x9
|
||||
; stur q0, [sp]
|
||||
; ldr x9, #0x5c
|
||||
; b #0x64
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %g3 0
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; blr x9
|
||||
; ldr x10, #0x70
|
||||
; b #0x78
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %g4 0
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; ldur q0, [sp, #0x20]
|
||||
; blr x10
|
||||
; ldr x11, #0x88
|
||||
; b #0x90
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %g5 0
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; ldur q0, [sp, #0x10]
|
||||
; blr x11
|
||||
; ldr x12, #0xa0
|
||||
; b #0xa8
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %g6 0
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; ldur q0, [sp]
|
||||
; blr x12
|
||||
; add sp, sp, #0x30
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; ret
|
||||
|
||||
function %f11(i128, i64) -> i64 {
|
||||
block0(v0: i128, v1: i64):
|
||||
@@ -262,9 +505,15 @@ block0(v0: i128, v1: i64):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; mov x0, x1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov x0, x1
|
||||
; ret
|
||||
|
||||
function %f11_call(i64) -> i64 {
|
||||
fn0 = %f11(i128, i64) -> i64
|
||||
@@ -276,6 +525,7 @@ block0(v0: i64):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
; block0:
|
||||
@@ -286,6 +536,21 @@ block0(v0: i64):
|
||||
; blr x6
|
||||
; ldp fp, lr, [sp], #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; block0: ; offset 0x8
|
||||
; mov x1, x0
|
||||
; mov x0, #0x2a
|
||||
; mov x2, #0x2a
|
||||
; ldr x6, #0x1c
|
||||
; b #0x24
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %f11 0
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; blr x6
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; ret
|
||||
|
||||
function %f12(i64, i128) -> i64 {
|
||||
block0(v0: i64, v1: i128):
|
||||
@@ -293,9 +558,15 @@ block0(v0: i64, v1: i128):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; mov x0, x2
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov x0, x2
|
||||
; ret
|
||||
|
||||
function %f12_call(i64) -> i64 {
|
||||
fn0 = %f12(i64, i128) -> i64
|
||||
@@ -307,6 +578,7 @@ block0(v0: i64):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
; block0:
|
||||
@@ -317,6 +589,21 @@ block0(v0: i64):
|
||||
; blr x6
|
||||
; ldp fp, lr, [sp], #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; block0: ; offset 0x8
|
||||
; mov x2, x0
|
||||
; mov x3, #0x2a
|
||||
; mov x0, #0x2a
|
||||
; ldr x6, #0x1c
|
||||
; b #0x24
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %f12 0
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; blr x6
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; ret
|
||||
|
||||
function %f13(i64, i128) -> i64 apple_aarch64 {
|
||||
block0(v0: i64, v1: i128):
|
||||
@@ -324,9 +611,15 @@ block0(v0: i64, v1: i128):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; mov x0, x1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov x0, x1
|
||||
; ret
|
||||
|
||||
function %f13_call(i64) -> i64 apple_aarch64 {
|
||||
fn0 = %f13(i64, i128) -> i64 apple_aarch64
|
||||
@@ -338,6 +631,7 @@ block0(v0: i64):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
; block0:
|
||||
@@ -348,12 +642,28 @@ block0(v0: i64):
|
||||
; blr x6
|
||||
; ldp fp, lr, [sp], #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; block0: ; offset 0x8
|
||||
; mov x1, x0
|
||||
; mov x2, #0x2a
|
||||
; mov x0, #0x2a
|
||||
; ldr x6, #0x1c
|
||||
; b #0x24
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %f13 0
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; blr x6
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; ret
|
||||
|
||||
function %f14(i128, i128, i128, i64, i128) -> i128 {
|
||||
block0(v0: i128, v1: i128, v2: i128, v3: i64, v4: i128):
|
||||
return v4
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
; block0:
|
||||
@@ -361,6 +671,15 @@ block0(v0: i128, v1: i128, v2: i128, v3: i64, v4: i128):
|
||||
; ldr x1, [fp, #24]
|
||||
; ldp fp, lr, [sp], #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; block0: ; offset 0x8
|
||||
; ldur x0, [x29, #0x10]
|
||||
; ldur x1, [x29, #0x18]
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; ret
|
||||
|
||||
function %f14_call(i128, i64) -> i128 {
|
||||
fn0 = %f14(i128, i128, i128, i64, i128) -> i128
|
||||
@@ -370,6 +689,7 @@ block0(v0: i128, v1: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
; block0:
|
||||
@@ -390,12 +710,36 @@ block0(v0: i128, v1: i64):
|
||||
; virtual_sp_offset_adjust -16
|
||||
; ldp fp, lr, [sp], #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; block0: ; offset 0x8
|
||||
; mov x6, x2
|
||||
; sub sp, sp, #0x10
|
||||
; stur x0, [sp]
|
||||
; mov x4, x0
|
||||
; stur x1, [sp, #8]
|
||||
; mov x5, x1
|
||||
; ldr x10, #0x28
|
||||
; b #0x30
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %f14 0
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; mov x0, x4
|
||||
; mov x2, x4
|
||||
; mov x1, x5
|
||||
; mov x3, x5
|
||||
; blr x10
|
||||
; add sp, sp, #0x10
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; ret
|
||||
|
||||
function %f15(i128, i128, i128, i64, i128) -> i128 apple_aarch64{
|
||||
block0(v0: i128, v1: i128, v2: i128, v3: i64, v4: i128):
|
||||
return v4
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
; block0:
|
||||
@@ -403,6 +747,15 @@ block0(v0: i128, v1: i128, v2: i128, v3: i64, v4: i128):
|
||||
; ldr x1, [fp, #24]
|
||||
; ldp fp, lr, [sp], #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; block0: ; offset 0x8
|
||||
; ldur x0, [x29, #0x10]
|
||||
; ldur x1, [x29, #0x18]
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; ret
|
||||
|
||||
function %f15_call(i128, i64) -> i128 apple_aarch64 {
|
||||
fn0 = %f15(i128, i128, i128, i64, i128) -> i128 apple_aarch64
|
||||
@@ -412,6 +765,7 @@ block0(v0: i128, v1: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
; block0:
|
||||
@@ -432,6 +786,29 @@ block0(v0: i128, v1: i64):
|
||||
; virtual_sp_offset_adjust -16
|
||||
; ldp fp, lr, [sp], #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; block0: ; offset 0x8
|
||||
; mov x6, x2
|
||||
; sub sp, sp, #0x10
|
||||
; stur x0, [sp]
|
||||
; mov x4, x0
|
||||
; stur x1, [sp, #8]
|
||||
; mov x5, x1
|
||||
; ldr x10, #0x28
|
||||
; b #0x30
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %f15 0
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; mov x0, x4
|
||||
; mov x2, x4
|
||||
; mov x1, x5
|
||||
; mov x3, x5
|
||||
; blr x10
|
||||
; add sp, sp, #0x10
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; ret
|
||||
|
||||
function %f16() -> i32, i32 wasmtime_system_v {
|
||||
block0:
|
||||
@@ -440,12 +817,21 @@ block0:
|
||||
return v0, v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; mov x6, x0
|
||||
; movz w0, #0
|
||||
; movz w4, #1
|
||||
; str w4, [x6]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov x6, x0
|
||||
; mov w0, #0
|
||||
; mov w4, #1
|
||||
; stur w4, [x6]
|
||||
; ret
|
||||
|
||||
function %f17(i64 sret) {
|
||||
block0(v0: i64):
|
||||
@@ -454,11 +840,19 @@ block0(v0: i64):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; mov x5, x8
|
||||
; movz x4, #42
|
||||
; str x4, [x8]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov x5, x8
|
||||
; mov x4, #0x2a
|
||||
; str x4, [x8]
|
||||
; ret
|
||||
|
||||
function %f18(i64) -> i64 {
|
||||
fn0 = %g(i64 sret) -> i64
|
||||
@@ -468,6 +862,7 @@ block0(v0: i64):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
; block0:
|
||||
@@ -476,6 +871,19 @@ block0(v0: i64):
|
||||
; blr x3
|
||||
; ldp fp, lr, [sp], #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; block0: ; offset 0x8
|
||||
; mov x8, x0
|
||||
; ldr x3, #0x14
|
||||
; b #0x1c
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %g 0
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; blr x3
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; ret
|
||||
|
||||
function %f18(i64 sret) {
|
||||
fn0 = %g(i64 sret)
|
||||
@@ -485,6 +893,7 @@ block0(v0: i64):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
; str x24, [sp, #-16]!
|
||||
@@ -496,4 +905,20 @@ block0(v0: i64):
|
||||
; ldr x24, [sp], #16
|
||||
; ldp fp, lr, [sp], #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; str x24, [sp, #-0x10]!
|
||||
; block0: ; offset 0xc
|
||||
; mov x24, x8
|
||||
; ldr x4, #0x18
|
||||
; b #0x20
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %g 0
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; blr x4
|
||||
; mov x8, x24
|
||||
; ldr x24, [sp], #0x10
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; ret
|
||||
|
||||
|
||||
@@ -10,9 +10,15 @@ block0(v0: i8x16):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; cmeq v0.16b, v0.16b, #0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmeq v0.16b, v0.16b, #0
|
||||
; ret
|
||||
|
||||
function %f0_vconst(i8x16) -> i8x16 {
|
||||
block0(v0: i8x16):
|
||||
@@ -21,9 +27,15 @@ block0(v0: i8x16):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; cmeq v0.16b, v0.16b, #0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmeq v0.16b, v0.16b, #0
|
||||
; ret
|
||||
|
||||
function %f1(i16x8) -> i16x8 {
|
||||
block0(v0: i16x8):
|
||||
@@ -33,9 +45,15 @@ block0(v0: i16x8):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; cmeq v0.8h, v0.8h, #0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmeq v0.8h, v0.8h, #0
|
||||
; ret
|
||||
|
||||
function %f1_vconst(i16x8) -> i16x8 {
|
||||
block0(v0: i16x8):
|
||||
@@ -44,9 +62,15 @@ block0(v0: i16x8):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; cmeq v0.8h, v0.8h, #0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmeq v0.8h, v0.8h, #0
|
||||
; ret
|
||||
|
||||
function %f2(i32x4) -> i32x4 {
|
||||
block0(v0: i32x4):
|
||||
@@ -56,10 +80,17 @@ block0(v0: i32x4):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; cmeq v2.4s, v0.4s, #0
|
||||
; mvn v0.16b, v2.16b
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmeq v2.4s, v0.4s, #0
|
||||
; mvn v0.16b, v2.16b
|
||||
; ret
|
||||
|
||||
function %f2_vconst(i32x4) -> i32x4 {
|
||||
block0(v0: i32x4):
|
||||
@@ -68,10 +99,17 @@ block0(v0: i32x4):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; cmeq v2.4s, v0.4s, #0
|
||||
; mvn v0.16b, v2.16b
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmeq v2.4s, v0.4s, #0
|
||||
; mvn v0.16b, v2.16b
|
||||
; ret
|
||||
|
||||
function %f3(i64x2) -> i64x2 {
|
||||
block0(v0: i64x2):
|
||||
@@ -81,10 +119,17 @@ block0(v0: i64x2):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; cmeq v2.2d, v0.2d, #0
|
||||
; mvn v0.16b, v2.16b
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmeq v2.2d, v0.2d, #0
|
||||
; mvn v0.16b, v2.16b
|
||||
; ret
|
||||
|
||||
function %f3_vconst(i64x2) -> i64x2 {
|
||||
block0(v0: i64x2):
|
||||
@@ -93,10 +138,17 @@ block0(v0: i64x2):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; cmeq v2.2d, v0.2d, #0
|
||||
; mvn v0.16b, v2.16b
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmeq v2.2d, v0.2d, #0
|
||||
; mvn v0.16b, v2.16b
|
||||
; ret
|
||||
|
||||
function %f4(i8x16) -> i8x16 {
|
||||
block0(v0: i8x16):
|
||||
@@ -106,9 +158,15 @@ block0(v0: i8x16):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; cmle v0.16b, v0.16b, #0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmle v0.16b, v0.16b, #0
|
||||
; ret
|
||||
|
||||
function %f4_vconst(i8x16) -> i8x16 {
|
||||
block0(v0: i8x16):
|
||||
@@ -117,9 +175,15 @@ block0(v0: i8x16):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; cmle v0.16b, v0.16b, #0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmle v0.16b, v0.16b, #0
|
||||
; ret
|
||||
|
||||
function %f5(i16x8) -> i16x8 {
|
||||
block0(v0: i16x8):
|
||||
@@ -129,9 +193,15 @@ block0(v0: i16x8):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; cmge v0.8h, v0.8h, #0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmge v0.8h, v0.8h, #0
|
||||
; ret
|
||||
|
||||
function %f5_vconst(i16x8) -> i16x8 {
|
||||
block0(v0: i16x8):
|
||||
@@ -140,9 +210,15 @@ block0(v0: i16x8):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; cmge v0.8h, v0.8h, #0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmge v0.8h, v0.8h, #0
|
||||
; ret
|
||||
|
||||
function %f6(i32x4) -> i32x4 {
|
||||
block0(v0: i32x4):
|
||||
@@ -152,9 +228,15 @@ block0(v0: i32x4):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; cmge v0.4s, v0.4s, #0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmge v0.4s, v0.4s, #0
|
||||
; ret
|
||||
|
||||
function %f6_vconst(i32x4) -> i32x4 {
|
||||
block0(v0: i32x4):
|
||||
@@ -163,9 +245,15 @@ block0(v0: i32x4):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; cmge v0.4s, v0.4s, #0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmge v0.4s, v0.4s, #0
|
||||
; ret
|
||||
|
||||
function %f7(i64x2) -> i64x2 {
|
||||
block0(v0: i64x2):
|
||||
@@ -175,9 +263,15 @@ block0(v0: i64x2):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; cmle v0.2d, v0.2d, #0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmle v0.2d, v0.2d, #0
|
||||
; ret
|
||||
|
||||
function %f7_vconst(i64x2) -> i64x2 {
|
||||
block0(v0: i64x2):
|
||||
@@ -186,9 +280,15 @@ block0(v0: i64x2):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; cmle v0.2d, v0.2d, #0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmle v0.2d, v0.2d, #0
|
||||
; ret
|
||||
|
||||
function %f8(i8x16) -> i8x16 {
|
||||
block0(v0: i8x16):
|
||||
@@ -198,9 +298,15 @@ block0(v0: i8x16):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; cmlt v0.16b, v0.16b, #0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmlt v0.16b, v0.16b, #0
|
||||
; ret
|
||||
|
||||
function %f8_vconst(i8x16) -> i8x16 {
|
||||
block0(v0: i8x16):
|
||||
@@ -209,9 +315,15 @@ block0(v0: i8x16):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; cmlt v0.16b, v0.16b, #0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmlt v0.16b, v0.16b, #0
|
||||
; ret
|
||||
|
||||
function %f9(i16x8) -> i16x8 {
|
||||
block0(v0: i16x8):
|
||||
@@ -221,9 +333,15 @@ block0(v0: i16x8):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; cmgt v0.8h, v0.8h, #0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmgt v0.8h, v0.8h, #0
|
||||
; ret
|
||||
|
||||
function %f9_vconst(i16x8) -> i16x8 {
|
||||
block0(v0: i16x8):
|
||||
@@ -232,9 +350,15 @@ block0(v0: i16x8):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; cmgt v0.8h, v0.8h, #0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmgt v0.8h, v0.8h, #0
|
||||
; ret
|
||||
|
||||
function %f10(i32x4) -> i32x4 {
|
||||
block0(v0: i32x4):
|
||||
@@ -244,9 +368,15 @@ block0(v0: i32x4):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; cmgt v0.4s, v0.4s, #0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmgt v0.4s, v0.4s, #0
|
||||
; ret
|
||||
|
||||
function %f10_vconst(i32x4) -> i32x4 {
|
||||
block0(v0: i32x4):
|
||||
@@ -255,9 +385,15 @@ block0(v0: i32x4):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; cmgt v0.4s, v0.4s, #0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmgt v0.4s, v0.4s, #0
|
||||
; ret
|
||||
|
||||
function %f11(i64x2) -> i64x2 {
|
||||
block0(v0: i64x2):
|
||||
@@ -267,9 +403,15 @@ block0(v0: i64x2):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; cmlt v0.2d, v0.2d, #0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmlt v0.2d, v0.2d, #0
|
||||
; ret
|
||||
|
||||
function %f11_vconst(i64x2) -> i64x2 {
|
||||
block0(v0: i64x2):
|
||||
@@ -278,9 +420,15 @@ block0(v0: i64x2):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; cmlt v0.2d, v0.2d, #0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmlt v0.2d, v0.2d, #0
|
||||
; ret
|
||||
|
||||
function %f12(f32x4) -> i32x4 {
|
||||
block0(v0: f32x4):
|
||||
@@ -290,9 +438,15 @@ block0(v0: f32x4):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcmeq v0.4s, v0.4s, #0.0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fcmeq v0.4s, v0.4s, #0.0
|
||||
; ret
|
||||
|
||||
function %f12_vconst(f32x4) -> i32x4 {
|
||||
block0(v0: f32x4):
|
||||
@@ -301,9 +455,15 @@ block0(v0: f32x4):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcmeq v0.4s, v0.4s, #0.0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fcmeq v0.4s, v0.4s, #0.0
|
||||
; ret
|
||||
|
||||
function %f13(f64x2) -> i64x2 {
|
||||
block0(v0: f64x2):
|
||||
@@ -313,9 +473,15 @@ block0(v0: f64x2):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcmeq v0.2d, v0.2d, #0.0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fcmeq v0.2d, v0.2d, #0.0
|
||||
; ret
|
||||
|
||||
function %f13_vconst(f64x2) -> i64x2 {
|
||||
block0(v0: f64x2):
|
||||
@@ -324,9 +490,15 @@ block0(v0: f64x2):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcmeq v0.2d, v0.2d, #0.0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fcmeq v0.2d, v0.2d, #0.0
|
||||
; ret
|
||||
|
||||
function %f14(f64x2) -> i64x2 {
|
||||
block0(v0: f64x2):
|
||||
@@ -336,10 +508,17 @@ block0(v0: f64x2):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcmeq v2.2d, v0.2d, #0.0
|
||||
; mvn v0.16b, v2.16b
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fcmeq v2.2d, v0.2d, #0.0
|
||||
; mvn v0.16b, v2.16b
|
||||
; ret
|
||||
|
||||
function %f14_vconst(f64x2) -> i64x2 {
|
||||
block0(v0: f64x2):
|
||||
@@ -348,10 +527,17 @@ block0(v0: f64x2):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcmeq v2.2d, v0.2d, #0.0
|
||||
; mvn v0.16b, v2.16b
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fcmeq v2.2d, v0.2d, #0.0
|
||||
; mvn v0.16b, v2.16b
|
||||
; ret
|
||||
|
||||
function %f15(f32x4) -> i32x4 {
|
||||
block0(v0: f32x4):
|
||||
@@ -361,10 +547,17 @@ block0(v0: f32x4):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcmeq v2.4s, v0.4s, #0.0
|
||||
; mvn v0.16b, v2.16b
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fcmeq v2.4s, v0.4s, #0.0
|
||||
; mvn v0.16b, v2.16b
|
||||
; ret
|
||||
|
||||
function %f15_vconst(f32x4) -> i32x4 {
|
||||
block0(v0: f32x4):
|
||||
@@ -373,10 +566,17 @@ block0(v0: f32x4):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcmeq v2.4s, v0.4s, #0.0
|
||||
; mvn v0.16b, v2.16b
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fcmeq v2.4s, v0.4s, #0.0
|
||||
; mvn v0.16b, v2.16b
|
||||
; ret
|
||||
|
||||
function %f16(f32x4) -> i32x4 {
|
||||
block0(v0: f32x4):
|
||||
@@ -386,9 +586,15 @@ block0(v0: f32x4):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcmle v0.4s, v0.4s, #0.0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fcmle v0.4s, v0.4s, #0.0
|
||||
; ret
|
||||
|
||||
function %f16_vconst(f32x4) -> i32x4 {
|
||||
block0(v0: f32x4):
|
||||
@@ -397,9 +603,15 @@ block0(v0: f32x4):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcmle v0.4s, v0.4s, #0.0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fcmle v0.4s, v0.4s, #0.0
|
||||
; ret
|
||||
|
||||
function %f17(f64x2) -> i64x2 {
|
||||
block0(v0: f64x2):
|
||||
@@ -409,9 +621,15 @@ block0(v0: f64x2):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcmge v0.2d, v0.2d, #0.0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fcmge v0.2d, v0.2d, #0.0
|
||||
; ret
|
||||
|
||||
function %f17_vconst(f64x2) -> i64x2 {
|
||||
block0(v0: f64x2):
|
||||
@@ -420,9 +638,15 @@ block0(v0: f64x2):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcmge v0.2d, v0.2d, #0.0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fcmge v0.2d, v0.2d, #0.0
|
||||
; ret
|
||||
|
||||
function %f18(f64x2) -> i64x2 {
|
||||
block0(v0: f64x2):
|
||||
@@ -432,9 +656,15 @@ block0(v0: f64x2):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcmge v0.2d, v0.2d, #0.0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fcmge v0.2d, v0.2d, #0.0
|
||||
; ret
|
||||
|
||||
function %f18_vconst(f64x2) -> i64x2 {
|
||||
block0(v0: f64x2):
|
||||
@@ -443,9 +673,15 @@ block0(v0: f64x2):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcmge v0.2d, v0.2d, #0.0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fcmge v0.2d, v0.2d, #0.0
|
||||
; ret
|
||||
|
||||
function %f19(f32x4) -> i32x4 {
|
||||
block0(v0: f32x4):
|
||||
@@ -455,9 +691,15 @@ block0(v0: f32x4):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcmle v0.4s, v0.4s, #0.0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fcmle v0.4s, v0.4s, #0.0
|
||||
; ret
|
||||
|
||||
function %f19_vconst(f32x4) -> i32x4 {
|
||||
block0(v0: f32x4):
|
||||
@@ -466,9 +708,15 @@ block0(v0: f32x4):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcmle v0.4s, v0.4s, #0.0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fcmle v0.4s, v0.4s, #0.0
|
||||
; ret
|
||||
|
||||
function %f20(f32x4) -> i32x4 {
|
||||
block0(v0: f32x4):
|
||||
@@ -478,9 +726,15 @@ block0(v0: f32x4):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcmlt v0.4s, v0.4s, #0.0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fcmlt v0.4s, v0.4s, #0.0
|
||||
; ret
|
||||
|
||||
function %f20_vconst(f32x4) -> i32x4 {
|
||||
block0(v0: f32x4):
|
||||
@@ -489,9 +743,15 @@ block0(v0: f32x4):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcmlt v0.4s, v0.4s, #0.0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fcmlt v0.4s, v0.4s, #0.0
|
||||
; ret
|
||||
|
||||
function %f21(f64x2) -> i64x2 {
|
||||
block0(v0: f64x2):
|
||||
@@ -501,9 +761,15 @@ block0(v0: f64x2):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcmgt v0.2d, v0.2d, #0.0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fcmgt v0.2d, v0.2d, #0.0
|
||||
; ret
|
||||
|
||||
function %f21_vconst(f64x2) -> i64x2 {
|
||||
block0(v0: f64x2):
|
||||
@@ -512,9 +778,15 @@ block0(v0: f64x2):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcmgt v0.2d, v0.2d, #0.0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fcmgt v0.2d, v0.2d, #0.0
|
||||
; ret
|
||||
|
||||
function %f22(f64x2) -> i64x2 {
|
||||
block0(v0: f64x2):
|
||||
@@ -524,9 +796,15 @@ block0(v0: f64x2):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcmgt v0.2d, v0.2d, #0.0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fcmgt v0.2d, v0.2d, #0.0
|
||||
; ret
|
||||
|
||||
function %f22_vconst(f64x2) -> i64x2 {
|
||||
block0(v0: f64x2):
|
||||
@@ -535,9 +813,15 @@ block0(v0: f64x2):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcmgt v0.2d, v0.2d, #0.0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fcmgt v0.2d, v0.2d, #0.0
|
||||
; ret
|
||||
|
||||
function %f23(f32x4) -> i32x4 {
|
||||
block0(v0: f32x4):
|
||||
@@ -547,9 +831,15 @@ block0(v0: f32x4):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcmlt v0.4s, v0.4s, #0.0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fcmlt v0.4s, v0.4s, #0.0
|
||||
; ret
|
||||
|
||||
function %f23_vconst(f32x4) -> i32x4 {
|
||||
block0(v0: f32x4):
|
||||
@@ -558,6 +848,13 @@ block0(v0: f32x4):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcmlt v0.4s, v0.4s, #0.0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fcmlt v0.4s, v0.4s, #0.0
|
||||
; ret
|
||||
|
||||
|
||||
@@ -8,10 +8,17 @@ block0(v0: i64, v1: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; subs xzr, x0, x1
|
||||
; cset x0, eq
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmp x0, x1
|
||||
; cset x0, eq
|
||||
; ret
|
||||
|
||||
function %icmp_eq_i128(i128, i128) -> i8 {
|
||||
block0(v0: i128, v1: i128):
|
||||
@@ -19,11 +26,19 @@ block0(v0: i128, v1: i128):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; subs xzr, x0, x2
|
||||
; ccmp x1, x3, #nzcv, eq
|
||||
; cset x0, eq
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmp x0, x2
|
||||
; ccmp x1, x3, #0, eq
|
||||
; cset x0, eq
|
||||
; ret
|
||||
|
||||
function %icmp_ne_i128(i128, i128) -> i8 {
|
||||
block0(v0: i128, v1: i128):
|
||||
@@ -31,11 +46,19 @@ block0(v0: i128, v1: i128):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; subs xzr, x0, x2
|
||||
; ccmp x1, x3, #nzcv, eq
|
||||
; cset x0, ne
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmp x0, x2
|
||||
; ccmp x1, x3, #0, eq
|
||||
; cset x0, ne
|
||||
; ret
|
||||
|
||||
function %icmp_slt_i128(i128, i128) -> i8 {
|
||||
block0(v0: i128, v1: i128):
|
||||
@@ -43,6 +66,7 @@ block0(v0: i128, v1: i128):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; subs xzr, x0, x2
|
||||
; cset x6, lo
|
||||
@@ -50,6 +74,15 @@ block0(v0: i128, v1: i128):
|
||||
; cset x9, lt
|
||||
; csel x0, x6, x9, eq
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmp x0, x2
|
||||
; cset x6, lo
|
||||
; cmp x1, x3
|
||||
; cset x9, lt
|
||||
; csel x0, x6, x9, eq
|
||||
; ret
|
||||
|
||||
function %icmp_ult_i128(i128, i128) -> i8 {
|
||||
block0(v0: i128, v1: i128):
|
||||
@@ -57,6 +90,7 @@ block0(v0: i128, v1: i128):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; subs xzr, x0, x2
|
||||
; cset x6, lo
|
||||
@@ -64,6 +98,15 @@ block0(v0: i128, v1: i128):
|
||||
; cset x9, lo
|
||||
; csel x0, x6, x9, eq
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmp x0, x2
|
||||
; cset x6, lo
|
||||
; cmp x1, x3
|
||||
; cset x9, lo
|
||||
; csel x0, x6, x9, eq
|
||||
; ret
|
||||
|
||||
function %icmp_sle_i128(i128, i128) -> i8 {
|
||||
block0(v0: i128, v1: i128):
|
||||
@@ -71,6 +114,7 @@ block0(v0: i128, v1: i128):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; subs xzr, x0, x2
|
||||
; cset x6, ls
|
||||
@@ -78,6 +122,15 @@ block0(v0: i128, v1: i128):
|
||||
; cset x9, le
|
||||
; csel x0, x6, x9, eq
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmp x0, x2
|
||||
; cset x6, ls
|
||||
; cmp x1, x3
|
||||
; cset x9, le
|
||||
; csel x0, x6, x9, eq
|
||||
; ret
|
||||
|
||||
function %icmp_ule_i128(i128, i128) -> i8 {
|
||||
block0(v0: i128, v1: i128):
|
||||
@@ -85,6 +138,7 @@ block0(v0: i128, v1: i128):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; subs xzr, x0, x2
|
||||
; cset x6, ls
|
||||
@@ -92,6 +146,15 @@ block0(v0: i128, v1: i128):
|
||||
; cset x9, ls
|
||||
; csel x0, x6, x9, eq
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmp x0, x2
|
||||
; cset x6, ls
|
||||
; cmp x1, x3
|
||||
; cset x9, ls
|
||||
; csel x0, x6, x9, eq
|
||||
; ret
|
||||
|
||||
function %icmp_sgt_i128(i128, i128) -> i8 {
|
||||
block0(v0: i128, v1: i128):
|
||||
@@ -99,6 +162,7 @@ block0(v0: i128, v1: i128):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; subs xzr, x0, x2
|
||||
; cset x6, hi
|
||||
@@ -106,6 +170,15 @@ block0(v0: i128, v1: i128):
|
||||
; cset x9, gt
|
||||
; csel x0, x6, x9, eq
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmp x0, x2
|
||||
; cset x6, hi
|
||||
; cmp x1, x3
|
||||
; cset x9, gt
|
||||
; csel x0, x6, x9, eq
|
||||
; ret
|
||||
|
||||
function %icmp_ugt_i128(i128, i128) -> i8 {
|
||||
block0(v0: i128, v1: i128):
|
||||
@@ -113,6 +186,7 @@ block0(v0: i128, v1: i128):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; subs xzr, x0, x2
|
||||
; cset x6, hi
|
||||
@@ -120,6 +194,15 @@ block0(v0: i128, v1: i128):
|
||||
; cset x9, hi
|
||||
; csel x0, x6, x9, eq
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmp x0, x2
|
||||
; cset x6, hi
|
||||
; cmp x1, x3
|
||||
; cset x9, hi
|
||||
; csel x0, x6, x9, eq
|
||||
; ret
|
||||
|
||||
function %icmp_sge_i128(i128, i128) -> i8 {
|
||||
block0(v0: i128, v1: i128):
|
||||
@@ -127,6 +210,7 @@ block0(v0: i128, v1: i128):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; subs xzr, x0, x2
|
||||
; cset x6, hs
|
||||
@@ -134,6 +218,15 @@ block0(v0: i128, v1: i128):
|
||||
; cset x9, ge
|
||||
; csel x0, x6, x9, eq
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmp x0, x2
|
||||
; cset x6, hs
|
||||
; cmp x1, x3
|
||||
; cset x9, ge
|
||||
; csel x0, x6, x9, eq
|
||||
; ret
|
||||
|
||||
function %icmp_uge_i128(i128, i128) -> i8 {
|
||||
block0(v0: i128, v1: i128):
|
||||
@@ -141,6 +234,7 @@ block0(v0: i128, v1: i128):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; subs xzr, x0, x2
|
||||
; cset x6, hs
|
||||
@@ -148,6 +242,15 @@ block0(v0: i128, v1: i128):
|
||||
; cset x9, hs
|
||||
; csel x0, x6, x9, eq
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmp x0, x2
|
||||
; cset x6, hs
|
||||
; cmp x1, x3
|
||||
; cset x9, hs
|
||||
; csel x0, x6, x9, eq
|
||||
; ret
|
||||
|
||||
function %f(i64, i64) -> i64 {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -164,6 +267,7 @@ block2:
|
||||
return v5
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; subs xzr, x0, x1
|
||||
; b.eq label1 ; b label2
|
||||
@@ -173,6 +277,17 @@ block2:
|
||||
; block2:
|
||||
; movz x0, #2
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmp x0, x1
|
||||
; b.ne #0x10
|
||||
; block1: ; offset 0x8
|
||||
; mov x0, #1
|
||||
; ret
|
||||
; block2: ; offset 0x10
|
||||
; mov x0, #2
|
||||
; ret
|
||||
|
||||
function %f(i64, i64) -> i64 {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -185,6 +300,7 @@ block1:
|
||||
return v4
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; subs xzr, x0, x1
|
||||
; b.eq label1 ; b label2
|
||||
@@ -195,6 +311,13 @@ block1:
|
||||
; block3:
|
||||
; movz x0, #1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmp x0, x1
|
||||
; block1: ; offset 0x4
|
||||
; mov x0, #1
|
||||
; ret
|
||||
|
||||
function %i128_brif_false(i128){
|
||||
block0(v0: i128):
|
||||
@@ -205,6 +328,7 @@ block1:
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; orr x3, x0, x1
|
||||
; cbnz x3, label1 ; b label2
|
||||
@@ -214,6 +338,12 @@ block1:
|
||||
; b label3
|
||||
; block3:
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; orr x3, x0, x1
|
||||
; block1: ; offset 0x4
|
||||
; ret
|
||||
|
||||
function %i128_brif_true(i128){
|
||||
block0(v0: i128):
|
||||
@@ -224,6 +354,7 @@ block1:
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; orr x3, x0, x1
|
||||
; cbnz x3, label1 ; b label2
|
||||
@@ -233,6 +364,12 @@ block1:
|
||||
; b label3
|
||||
; block3:
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; orr x3, x0, x1
|
||||
; block1: ; offset 0x4
|
||||
; ret
|
||||
|
||||
function %i128_bricmp_eq(i128, i128) {
|
||||
block0(v0: i128, v1: i128):
|
||||
@@ -244,6 +381,7 @@ block1:
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; subs xzr, x0, x2
|
||||
; ccmp x1, x3, #nzcv, eq
|
||||
@@ -254,6 +392,13 @@ block1:
|
||||
; b label3
|
||||
; block3:
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmp x0, x2
|
||||
; ccmp x1, x3, #0, eq
|
||||
; block1: ; offset 0x8
|
||||
; ret
|
||||
|
||||
function %i128_bricmp_ne(i128, i128) {
|
||||
block0(v0: i128, v1: i128):
|
||||
@@ -265,6 +410,7 @@ block1:
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; subs xzr, x0, x2
|
||||
; ccmp x1, x3, #nzcv, eq
|
||||
@@ -275,6 +421,13 @@ block1:
|
||||
; b label3
|
||||
; block3:
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmp x0, x2
|
||||
; ccmp x1, x3, #0, eq
|
||||
; block1: ; offset 0x8
|
||||
; ret
|
||||
|
||||
function %i128_bricmp_slt(i128, i128) {
|
||||
block0(v0: i128, v1: i128):
|
||||
@@ -286,6 +439,7 @@ block1:
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; subs xzr, x0, x2
|
||||
; cset x6, lo
|
||||
@@ -300,6 +454,17 @@ block1:
|
||||
; b label3
|
||||
; block3:
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmp x0, x2
|
||||
; cset x6, lo
|
||||
; cmp x1, x3
|
||||
; cset x9, lt
|
||||
; csel x11, x6, x9, eq
|
||||
; cmp xzr, x11
|
||||
; block1: ; offset 0x18
|
||||
; ret
|
||||
|
||||
function %i128_bricmp_ult(i128, i128) {
|
||||
block0(v0: i128, v1: i128):
|
||||
@@ -311,6 +476,7 @@ block1:
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; subs xzr, x0, x2
|
||||
; cset x6, lo
|
||||
@@ -325,6 +491,17 @@ block1:
|
||||
; b label3
|
||||
; block3:
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmp x0, x2
|
||||
; cset x6, lo
|
||||
; cmp x1, x3
|
||||
; cset x9, lo
|
||||
; csel x11, x6, x9, eq
|
||||
; cmp xzr, x11
|
||||
; block1: ; offset 0x18
|
||||
; ret
|
||||
|
||||
function %i128_bricmp_sle(i128, i128) {
|
||||
block0(v0: i128, v1: i128):
|
||||
@@ -336,6 +513,7 @@ block1:
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; subs xzr, x0, x2
|
||||
; cset x6, ls
|
||||
@@ -351,6 +529,18 @@ block1:
|
||||
; b label3
|
||||
; block3:
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmp x0, x2
|
||||
; cset x6, ls
|
||||
; cmp x1, x3
|
||||
; cset x9, le
|
||||
; csel x11, x6, x9, eq
|
||||
; mov w13, #1
|
||||
; cmp x13, x11
|
||||
; block1: ; offset 0x1c
|
||||
; ret
|
||||
|
||||
function %i128_bricmp_ule(i128, i128) {
|
||||
block0(v0: i128, v1: i128):
|
||||
@@ -362,6 +552,7 @@ block1:
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; subs xzr, x0, x2
|
||||
; cset x6, ls
|
||||
@@ -377,6 +568,18 @@ block1:
|
||||
; b label3
|
||||
; block3:
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmp x0, x2
|
||||
; cset x6, ls
|
||||
; cmp x1, x3
|
||||
; cset x9, ls
|
||||
; csel x11, x6, x9, eq
|
||||
; mov x13, #1
|
||||
; cmp x13, x11
|
||||
; block1: ; offset 0x1c
|
||||
; ret
|
||||
|
||||
function %i128_bricmp_sgt(i128, i128) {
|
||||
block0(v0: i128, v1: i128):
|
||||
@@ -388,6 +591,7 @@ block1:
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; subs xzr, x0, x2
|
||||
; cset x6, hi
|
||||
@@ -402,6 +606,17 @@ block1:
|
||||
; b label3
|
||||
; block3:
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmp x0, x2
|
||||
; cset x6, hi
|
||||
; cmp x1, x3
|
||||
; cset x9, gt
|
||||
; csel x11, x6, x9, eq
|
||||
; cmp x11, xzr
|
||||
; block1: ; offset 0x18
|
||||
; ret
|
||||
|
||||
function %i128_bricmp_ugt(i128, i128) {
|
||||
block0(v0: i128, v1: i128):
|
||||
@@ -413,6 +628,7 @@ block1:
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; subs xzr, x0, x2
|
||||
; cset x6, hi
|
||||
@@ -427,6 +643,17 @@ block1:
|
||||
; b label3
|
||||
; block3:
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmp x0, x2
|
||||
; cset x6, hi
|
||||
; cmp x1, x3
|
||||
; cset x9, hi
|
||||
; csel x11, x6, x9, eq
|
||||
; cmp x11, xzr
|
||||
; block1: ; offset 0x18
|
||||
; ret
|
||||
|
||||
function %i128_bricmp_sge(i128, i128) {
|
||||
block0(v0: i128, v1: i128):
|
||||
@@ -438,6 +665,7 @@ block1:
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; subs xzr, x0, x2
|
||||
; cset x6, hs
|
||||
@@ -453,6 +681,18 @@ block1:
|
||||
; b label3
|
||||
; block3:
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmp x0, x2
|
||||
; cset x6, hs
|
||||
; cmp x1, x3
|
||||
; cset x9, ge
|
||||
; csel x11, x6, x9, eq
|
||||
; mov w13, #1
|
||||
; cmp x11, x13
|
||||
; block1: ; offset 0x1c
|
||||
; ret
|
||||
|
||||
function %i128_bricmp_uge(i128, i128) {
|
||||
block0(v0: i128, v1: i128):
|
||||
@@ -464,6 +704,7 @@ block1:
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; subs xzr, x0, x2
|
||||
; cset x6, hs
|
||||
@@ -479,4 +720,16 @@ block1:
|
||||
; b label3
|
||||
; block3:
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmp x0, x2
|
||||
; cset x6, hs
|
||||
; cmp x1, x3
|
||||
; cset x9, hs
|
||||
; csel x11, x6, x9, eq
|
||||
; mov x13, #1
|
||||
; cmp x11, x13
|
||||
; block1: ; offset 0x1c
|
||||
; ret
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -8,9 +8,15 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movz w0, #255
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov w0, #0xff
|
||||
; ret
|
||||
|
||||
function %f() -> i16 {
|
||||
block0:
|
||||
@@ -18,9 +24,15 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movz w0, #0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov w0, #0
|
||||
; ret
|
||||
|
||||
function %f() -> i64 {
|
||||
block0:
|
||||
@@ -28,9 +40,15 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movz x0, #0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov x0, #0
|
||||
; ret
|
||||
|
||||
function %f() -> i64 {
|
||||
block0:
|
||||
@@ -38,9 +56,15 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movz x0, #65535
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov x0, #0xffff
|
||||
; ret
|
||||
|
||||
function %f() -> i64 {
|
||||
block0:
|
||||
@@ -48,9 +72,15 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movz x0, #65535, LSL #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov x0, #0xffff0000
|
||||
; ret
|
||||
|
||||
function %f() -> i64 {
|
||||
block0:
|
||||
@@ -58,9 +88,15 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movz x0, #65535, LSL #32
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov x0, #0xffff00000000
|
||||
; ret
|
||||
|
||||
function %f() -> i64 {
|
||||
block0:
|
||||
@@ -68,9 +104,15 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movz x0, #65535, LSL #48
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov x0, #-0x1000000000000
|
||||
; ret
|
||||
|
||||
function %f() -> i64 {
|
||||
block0:
|
||||
@@ -78,9 +120,15 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movn x0, #0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov x0, #-1
|
||||
; ret
|
||||
|
||||
function %f() -> i64 {
|
||||
block0:
|
||||
@@ -88,9 +136,15 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movn x0, #65535
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov x0, #-0x10000
|
||||
; ret
|
||||
|
||||
function %f() -> i64 {
|
||||
block0:
|
||||
@@ -98,9 +152,15 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movn x0, #65535, LSL #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov x0, #-0xffff0001
|
||||
; ret
|
||||
|
||||
function %f() -> i64 {
|
||||
block0:
|
||||
@@ -108,9 +168,15 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movn x0, #65535, LSL #32
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov x0, #-0xffff00000001
|
||||
; ret
|
||||
|
||||
function %f() -> i64 {
|
||||
block0:
|
||||
@@ -118,9 +184,15 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movn x0, #65535, LSL #48
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov x0, #0xffffffffffff
|
||||
; ret
|
||||
|
||||
function %f() -> i64 {
|
||||
block0:
|
||||
@@ -128,12 +200,21 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movz x0, #58
|
||||
; movk x0, x0, #4626, LSL #16
|
||||
; movk x0, x0, #61603, LSL #32
|
||||
; movk x0, x0, #62283, LSL #48
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov x0, #0x3a
|
||||
; movk x0, #0x1212, lsl #16
|
||||
; movk x0, #0xf0a3, lsl #32
|
||||
; movk x0, #0xf34b, lsl #48
|
||||
; ret
|
||||
|
||||
function %f() -> i64 {
|
||||
block0:
|
||||
@@ -141,10 +222,17 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movz x0, #7924, LSL #16
|
||||
; movk x0, x0, #4841, LSL #48
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov x0, #0x1ef40000
|
||||
; movk x0, #0x12e9, lsl #48
|
||||
; ret
|
||||
|
||||
function %f() -> i64 {
|
||||
block0:
|
||||
@@ -152,10 +240,17 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movn x0, #57611, LSL #16
|
||||
; movk x0, x0, #4841, LSL #48
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov x0, #-0xe10b0001
|
||||
; movk x0, #0x12e9, lsl #48
|
||||
; ret
|
||||
|
||||
function %f() -> i32 {
|
||||
block0:
|
||||
@@ -163,9 +258,15 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movn w0, #0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov w0, #-1
|
||||
; ret
|
||||
|
||||
function %f() -> i32 {
|
||||
block0:
|
||||
@@ -173,9 +274,15 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movn w0, #8
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov w0, #-9
|
||||
; ret
|
||||
|
||||
function %f() -> i64 {
|
||||
block0:
|
||||
@@ -183,9 +290,15 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movn w0, #8
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov w0, #-9
|
||||
; ret
|
||||
|
||||
function %f() -> i64 {
|
||||
block0:
|
||||
@@ -193,9 +306,15 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movn x0, #8
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov x0, #-9
|
||||
; ret
|
||||
|
||||
function %f() -> f64 {
|
||||
block0:
|
||||
@@ -203,9 +322,15 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fmov d0, #1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fmov d0, #1.00000000
|
||||
; ret
|
||||
|
||||
function %f() -> f32 {
|
||||
block0:
|
||||
@@ -213,9 +338,15 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fmov s0, #5
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fmov s0, #5.00000000
|
||||
; ret
|
||||
|
||||
function %f() -> f64 {
|
||||
block0:
|
||||
@@ -223,10 +354,17 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movz x1, #16457, LSL #48
|
||||
; fmov d0, x1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov x1, #0x4049000000000000
|
||||
; fmov d0, x1
|
||||
; ret
|
||||
|
||||
function %f() -> f32 {
|
||||
block0:
|
||||
@@ -234,10 +372,17 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movz x1, #16968, LSL #16
|
||||
; fmov s0, w1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov x1, #0x42480000
|
||||
; fmov s0, w1
|
||||
; ret
|
||||
|
||||
function %f() -> f64 {
|
||||
block0:
|
||||
@@ -245,9 +390,15 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movi v0.2s, #0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; movi v0.2s, #0
|
||||
; ret
|
||||
|
||||
function %f() -> f32 {
|
||||
block0:
|
||||
@@ -255,9 +406,15 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movi v0.2s, #0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; movi v0.2s, #0
|
||||
; ret
|
||||
|
||||
function %f() -> f64 {
|
||||
block0:
|
||||
@@ -265,9 +422,15 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fmov d0, #-16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fmov d0, #-16.00000000
|
||||
; ret
|
||||
|
||||
function %f() -> f32 {
|
||||
block0:
|
||||
@@ -275,7 +438,13 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fmov s0, #-16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fmov s0, #-16.00000000
|
||||
; ret
|
||||
|
||||
|
||||
@@ -14,11 +14,19 @@ block0(v0: i16):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; dup v3.4h, w0
|
||||
; mov v3.d[1], v3.d[1], v3.d[0]
|
||||
; sqxtn v0.8b, v3.8h
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; dup v3.4h, w0
|
||||
; mov v3.d[1], v3.d[0]
|
||||
; sqxtn v0.8b, v3.8h
|
||||
; ret
|
||||
|
||||
function %snarrow_i16x8(i16) -> i8x16 {
|
||||
gv0 = dyn_scale_target_const.i16x8
|
||||
@@ -33,11 +41,19 @@ block0(v0: i16):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; dup v5.8h, w0
|
||||
; sqxtn v0.8b, v5.8h
|
||||
; sqxtn2 v0.16b, v0.16b, v5.8h
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; dup v5.8h, w0
|
||||
; sqxtn v0.8b, v5.8h
|
||||
; sqxtn2 v0.16b, v5.8h
|
||||
; ret
|
||||
|
||||
function %snarrow_i32x2(i32) -> i16x4 {
|
||||
gv0 = dyn_scale_target_const.i32x2
|
||||
@@ -52,11 +68,19 @@ block0(v0: i32):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; dup v3.2s, w0
|
||||
; mov v3.d[1], v3.d[1], v3.d[0]
|
||||
; sqxtn v0.4h, v3.4s
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; dup v3.2s, w0
|
||||
; mov v3.d[1], v3.d[0]
|
||||
; sqxtn v0.4h, v3.4s
|
||||
; ret
|
||||
|
||||
function %snarrow_i32x4(i32) -> i16x8 {
|
||||
gv0 = dyn_scale_target_const.i32x4
|
||||
@@ -71,11 +95,19 @@ block0(v0: i32):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; dup v5.4s, w0
|
||||
; sqxtn v0.4h, v5.4s
|
||||
; sqxtn2 v0.8h, v0.8h, v5.4s
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; dup v5.4s, w0
|
||||
; sqxtn v0.4h, v5.4s
|
||||
; sqxtn2 v0.8h, v5.4s
|
||||
; ret
|
||||
|
||||
function %snarrow_i64x2(i64) -> i32x4 {
|
||||
gv0 = dyn_scale_target_const.i64x2
|
||||
@@ -90,11 +122,19 @@ block0(v0: i64):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; dup v5.2d, x0
|
||||
; sqxtn v0.2s, v5.2d
|
||||
; sqxtn2 v0.4s, v0.4s, v5.2d
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; dup v5.2d, x0
|
||||
; sqxtn v0.2s, v5.2d
|
||||
; sqxtn2 v0.4s, v5.2d
|
||||
; ret
|
||||
|
||||
function %unarrow_i16x4(i16) -> i8x8 {
|
||||
gv0 = dyn_scale_target_const.i16x4
|
||||
@@ -109,11 +149,19 @@ block0(v0: i16):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; dup v3.4h, w0
|
||||
; mov v3.d[1], v3.d[1], v3.d[0]
|
||||
; sqxtun v0.8b, v3.8h
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; dup v3.4h, w0
|
||||
; mov v3.d[1], v3.d[0]
|
||||
; sqxtun v0.8b, v3.8h
|
||||
; ret
|
||||
|
||||
function %unarrow_i16x8(i16) -> i8x16 {
|
||||
gv0 = dyn_scale_target_const.i16x8
|
||||
@@ -128,11 +176,19 @@ block0(v0: i16):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; dup v5.8h, w0
|
||||
; sqxtun v0.8b, v5.8h
|
||||
; sqxtun2 v0.16b, v0.16b, v5.8h
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; dup v5.8h, w0
|
||||
; sqxtun v0.8b, v5.8h
|
||||
; sqxtun2 v0.16b, v5.8h
|
||||
; ret
|
||||
|
||||
function %unarrow_i32x2(i32) -> i16x4 {
|
||||
gv0 = dyn_scale_target_const.i32x2
|
||||
@@ -147,11 +203,19 @@ block0(v0: i32):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; dup v3.2s, w0
|
||||
; mov v3.d[1], v3.d[1], v3.d[0]
|
||||
; sqxtun v0.4h, v3.4s
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; dup v3.2s, w0
|
||||
; mov v3.d[1], v3.d[0]
|
||||
; sqxtun v0.4h, v3.4s
|
||||
; ret
|
||||
|
||||
function %unarrow_i32x4(i32) -> i16x8 {
|
||||
gv0 = dyn_scale_target_const.i32x4
|
||||
@@ -166,11 +230,19 @@ block0(v0: i32):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; dup v5.4s, w0
|
||||
; sqxtun v0.4h, v5.4s
|
||||
; sqxtun2 v0.8h, v0.8h, v5.4s
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; dup v5.4s, w0
|
||||
; sqxtun v0.4h, v5.4s
|
||||
; sqxtun2 v0.8h, v5.4s
|
||||
; ret
|
||||
|
||||
function %unarrow_i64x2(i64) -> i32x4 {
|
||||
gv0 = dyn_scale_target_const.i64x2
|
||||
@@ -185,11 +257,19 @@ block0(v0: i64):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; dup v5.2d, x0
|
||||
; sqxtun v0.2s, v5.2d
|
||||
; sqxtun2 v0.4s, v0.4s, v5.2d
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; dup v5.2d, x0
|
||||
; sqxtun v0.2s, v5.2d
|
||||
; sqxtun2 v0.4s, v5.2d
|
||||
; ret
|
||||
|
||||
function %uunarrow_i16x4(i16) -> i8x8 {
|
||||
gv0 = dyn_scale_target_const.i16x4
|
||||
@@ -204,11 +284,19 @@ block0(v0: i16):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; dup v3.4h, w0
|
||||
; mov v3.d[1], v3.d[1], v3.d[0]
|
||||
; uqxtn v0.8b, v3.8h
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; dup v3.4h, w0
|
||||
; mov v3.d[1], v3.d[0]
|
||||
; uqxtn v0.8b, v3.8h
|
||||
; ret
|
||||
|
||||
function %uunarrow_i16x8(i16) -> i8x16 {
|
||||
gv0 = dyn_scale_target_const.i16x8
|
||||
@@ -223,11 +311,19 @@ block0(v0: i16):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; dup v5.8h, w0
|
||||
; uqxtn v0.8b, v5.8h
|
||||
; uqxtn2 v0.16b, v0.16b, v5.8h
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; dup v5.8h, w0
|
||||
; uqxtn v0.8b, v5.8h
|
||||
; uqxtn2 v0.16b, v5.8h
|
||||
; ret
|
||||
|
||||
function %uunarrow_i32x2(i32) -> i16x4 {
|
||||
gv0 = dyn_scale_target_const.i32x2
|
||||
@@ -242,11 +338,19 @@ block0(v0: i32):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; dup v3.2s, w0
|
||||
; mov v3.d[1], v3.d[1], v3.d[0]
|
||||
; uqxtn v0.4h, v3.4s
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; dup v3.2s, w0
|
||||
; mov v3.d[1], v3.d[0]
|
||||
; uqxtn v0.4h, v3.4s
|
||||
; ret
|
||||
|
||||
function %uunarrow_i32x4(i32) -> i16x8 {
|
||||
gv0 = dyn_scale_target_const.i32x4
|
||||
@@ -261,11 +365,19 @@ block0(v0: i32):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; dup v5.4s, w0
|
||||
; uqxtn v0.4h, v5.4s
|
||||
; uqxtn2 v0.8h, v0.8h, v5.4s
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; dup v5.4s, w0
|
||||
; uqxtn v0.4h, v5.4s
|
||||
; uqxtn2 v0.8h, v5.4s
|
||||
; ret
|
||||
|
||||
function %uunarrow_i64x2(i64) -> i32x4 {
|
||||
gv0 = dyn_scale_target_const.i64x2
|
||||
@@ -280,9 +392,17 @@ block0(v0: i64):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; dup v5.2d, x0
|
||||
; uqxtn v0.2s, v5.2d
|
||||
; uqxtn2 v0.4s, v0.4s, v5.2d
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; dup v5.2d, x0
|
||||
; uqxtn v0.2s, v5.2d
|
||||
; uqxtn2 v0.4s, v5.2d
|
||||
; ret
|
||||
|
||||
|
||||
@@ -13,11 +13,19 @@ block0(v0: i8, v1: i8):
|
||||
return v5
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; dup v6.16b, w0
|
||||
; dup v7.16b, w1
|
||||
; add v0.16b, v6.16b, v7.16b
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; dup v6.16b, w0
|
||||
; dup v7.16b, w1
|
||||
; add v0.16b, v6.16b, v7.16b
|
||||
; ret
|
||||
|
||||
function %i16x8_splat_add(i16, i16) -> i16x8 {
|
||||
gv0 = dyn_scale_target_const.i16x8
|
||||
@@ -31,11 +39,19 @@ block0(v0: i16, v1: i16):
|
||||
return v5
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; dup v6.8h, w0
|
||||
; dup v7.8h, w1
|
||||
; add v0.8h, v6.8h, v7.8h
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; dup v6.8h, w0
|
||||
; dup v7.8h, w1
|
||||
; add v0.8h, v6.8h, v7.8h
|
||||
; ret
|
||||
|
||||
function %i32x4_splat_mul(i32, i32) -> i32x4 {
|
||||
gv0 = dyn_scale_target_const.i32x4
|
||||
@@ -49,11 +65,19 @@ block0(v0: i32, v1: i32):
|
||||
return v5
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; dup v6.4s, w0
|
||||
; dup v7.4s, w1
|
||||
; mul v0.4s, v6.4s, v7.4s
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; dup v6.4s, w0
|
||||
; dup v7.4s, w1
|
||||
; mul v0.4s, v6.4s, v7.4s
|
||||
; ret
|
||||
|
||||
function %i64x2_splat_sub(i64, i64) -> i64x2 {
|
||||
gv0 = dyn_scale_target_const.i64x2
|
||||
@@ -67,11 +91,19 @@ block0(v0: i64, v1: i64):
|
||||
return v5
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; dup v6.2d, x0
|
||||
; dup v7.2d, x1
|
||||
; sub v0.2d, v6.2d, v7.2d
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; dup v6.2d, x0
|
||||
; dup v7.2d, x1
|
||||
; sub v0.2d, v6.2d, v7.2d
|
||||
; ret
|
||||
|
||||
function %f32x4_splat_add(f32, f32) -> f32x4 {
|
||||
gv0 = dyn_scale_target_const.f32x4
|
||||
@@ -85,11 +117,19 @@ block0(v0: f32, v1: f32):
|
||||
return v5
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; dup v6.4s, v0.s[0]
|
||||
; dup v7.4s, v1.s[0]
|
||||
; fadd v0.4s, v6.4s, v7.4s
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; dup v6.4s, v0.s[0]
|
||||
; dup v7.4s, v1.s[0]
|
||||
; fadd v0.4s, v6.4s, v7.4s
|
||||
; ret
|
||||
|
||||
function %f64x2_splat_sub(f64, f64) -> f64x2 {
|
||||
gv0 = dyn_scale_target_const.f64x2
|
||||
@@ -103,11 +143,19 @@ block0(v0: f64, v1: f64):
|
||||
return v5
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; dup v6.2d, v0.d[0]
|
||||
; dup v7.2d, v1.d[0]
|
||||
; fsub v0.2d, v6.2d, v7.2d
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; dup v6.2d, v0.d[0]
|
||||
; dup v7.2d, v1.d[0]
|
||||
; fsub v0.2d, v6.2d, v7.2d
|
||||
; ret
|
||||
|
||||
function %f64x2_splat_mul(f64, f64) -> f64x2 {
|
||||
gv0 = dyn_scale_target_const.f64x2
|
||||
@@ -121,11 +169,19 @@ block0(v0: f64, v1: f64):
|
||||
return v5
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; dup v6.2d, v0.d[0]
|
||||
; dup v7.2d, v1.d[0]
|
||||
; fmul v0.2d, v6.2d, v7.2d
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; dup v6.2d, v0.d[0]
|
||||
; dup v7.2d, v1.d[0]
|
||||
; fmul v0.2d, v6.2d, v7.2d
|
||||
; ret
|
||||
|
||||
function %f64x2_splat_div(f64, f64) -> f64x2 {
|
||||
gv0 = dyn_scale_target_const.f64x2
|
||||
@@ -139,11 +195,19 @@ block0(v0: f64, v1: f64):
|
||||
return v5
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; dup v6.2d, v0.d[0]
|
||||
; dup v7.2d, v1.d[0]
|
||||
; fdiv v0.2d, v6.2d, v7.2d
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; dup v6.2d, v0.d[0]
|
||||
; dup v7.2d, v1.d[0]
|
||||
; fdiv v0.2d, v6.2d, v7.2d
|
||||
; ret
|
||||
|
||||
function %f64x2_splat_min(f64, f64) -> f64x2 {
|
||||
gv0 = dyn_scale_target_const.f64x2
|
||||
@@ -157,11 +221,19 @@ block0(v0: f64, v1: f64):
|
||||
return v5
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; dup v6.2d, v0.d[0]
|
||||
; dup v7.2d, v1.d[0]
|
||||
; fmin v0.2d, v6.2d, v7.2d
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; dup v6.2d, v0.d[0]
|
||||
; dup v7.2d, v1.d[0]
|
||||
; fmin v0.2d, v6.2d, v7.2d
|
||||
; ret
|
||||
|
||||
function %f64x2_splat_max(f64, f64) -> f64x2 {
|
||||
gv0 = dyn_scale_target_const.f64x2
|
||||
@@ -175,11 +247,19 @@ block0(v0: f64, v1: f64):
|
||||
return v5
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; dup v6.2d, v0.d[0]
|
||||
; dup v7.2d, v1.d[0]
|
||||
; fmax v0.2d, v6.2d, v7.2d
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; dup v6.2d, v0.d[0]
|
||||
; dup v7.2d, v1.d[0]
|
||||
; fmax v0.2d, v6.2d, v7.2d
|
||||
; ret
|
||||
|
||||
function %f64x2_splat_min_pseudo(f64, f64) -> f64x2 {
|
||||
gv0 = dyn_scale_target_const.f64x2
|
||||
@@ -193,12 +273,21 @@ block0(v0: f64, v1: f64):
|
||||
return v5
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; dup v7.2d, v0.d[0]
|
||||
; dup v16.2d, v1.d[0]
|
||||
; fcmgt v0.2d, v7.2d, v16.2d
|
||||
; bsl v0.16b, v0.16b, v16.16b, v7.16b
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; dup v7.2d, v0.d[0]
|
||||
; dup v16.2d, v1.d[0]
|
||||
; fcmgt v0.2d, v7.2d, v16.2d
|
||||
; bsl v0.16b, v16.16b, v7.16b
|
||||
; ret
|
||||
|
||||
function %f64x2_splat_max_pseudo(f64, f64) -> f64x2 {
|
||||
gv0 = dyn_scale_target_const.f64x2
|
||||
@@ -212,10 +301,19 @@ block0(v0: f64, v1: f64):
|
||||
return v5
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; dup v7.2d, v0.d[0]
|
||||
; dup v16.2d, v1.d[0]
|
||||
; fcmgt v0.2d, v16.2d, v7.2d
|
||||
; bsl v0.16b, v0.16b, v16.16b, v7.16b
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; dup v7.2d, v0.d[0]
|
||||
; dup v16.2d, v1.d[0]
|
||||
; fcmgt v0.2d, v16.2d, v7.2d
|
||||
; bsl v0.16b, v16.16b, v7.16b
|
||||
; ret
|
||||
|
||||
|
||||
@@ -14,10 +14,17 @@ block0(v0: i8):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; dup v4.16b, w0
|
||||
; sxtl2 v0.8h, v4.16b
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; dup v4.16b, w0
|
||||
; sshll2 v0.8h, v4.16b, #0
|
||||
; ret
|
||||
|
||||
function %swidenhigh_i16x8(i16) -> i32x4 {
|
||||
gv0 = dyn_scale_target_const.i32x4
|
||||
@@ -32,10 +39,17 @@ block0(v0: i16):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; dup v4.8h, w0
|
||||
; sxtl2 v0.4s, v4.8h
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; dup v4.8h, w0
|
||||
; sshll2 v0.4s, v4.8h, #0
|
||||
; ret
|
||||
|
||||
function %swidenhigh_i32x4(i32) -> i64x2 {
|
||||
gv0 = dyn_scale_target_const.i32x4
|
||||
@@ -50,10 +64,17 @@ block0(v0: i32):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; dup v4.4s, w0
|
||||
; sxtl2 v0.2d, v4.4s
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; dup v4.4s, w0
|
||||
; sshll2 v0.2d, v4.4s, #0
|
||||
; ret
|
||||
|
||||
function %swidenlow_i8x16(i8) -> i16x8 {
|
||||
gv0 = dyn_scale_target_const.i16x8
|
||||
@@ -68,10 +89,17 @@ block0(v0: i8):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; dup v4.16b, w0
|
||||
; sxtl v0.8h, v4.8b
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; dup v4.16b, w0
|
||||
; sshll v0.8h, v4.8b, #0
|
||||
; ret
|
||||
|
||||
function %swidenlow_i16x8(i16) -> i32x4 {
|
||||
gv0 = dyn_scale_target_const.i32x4
|
||||
@@ -86,10 +114,17 @@ block0(v0: i16):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; dup v4.8h, w0
|
||||
; sxtl v0.4s, v4.4h
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; dup v4.8h, w0
|
||||
; sshll v0.4s, v4.4h, #0
|
||||
; ret
|
||||
|
||||
function %swidenlow_i32x4(i32) -> i64x2 {
|
||||
gv0 = dyn_scale_target_const.i32x4
|
||||
@@ -104,8 +139,15 @@ block0(v0: i32):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; dup v4.4s, w0
|
||||
; sxtl v0.2d, v4.2s
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; dup v4.4s, w0
|
||||
; sshll v0.2d, v4.2s, #0
|
||||
; ret
|
||||
|
||||
|
||||
@@ -11,6 +11,7 @@ block0:
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
; sub sp, sp, #16
|
||||
@@ -21,6 +22,18 @@ block0:
|
||||
; add sp, sp, #16
|
||||
; ldp fp, lr, [sp], #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; sub sp, sp, #0x10
|
||||
; block0: ; offset 0xc
|
||||
; mov x1, sp
|
||||
; mov x2, #1
|
||||
; str x2, [x1]
|
||||
; add sp, sp, #0x10
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; ret
|
||||
|
||||
function %store_scale_lt_128() {
|
||||
gv0 = dyn_scale_target_const.i16x4
|
||||
@@ -32,6 +45,7 @@ block0:
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
; sub sp, sp, #16
|
||||
@@ -42,6 +56,18 @@ block0:
|
||||
; add sp, sp, #16
|
||||
; ldp fp, lr, [sp], #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; sub sp, sp, #0x10
|
||||
; block0: ; offset 0xc
|
||||
; mov x1, sp
|
||||
; mov x2, #1
|
||||
; str x2, [x1]
|
||||
; add sp, sp, #0x10
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; ret
|
||||
|
||||
function %store_explicit(i32) {
|
||||
gv0 = dyn_scale_target_const.i32x4
|
||||
@@ -54,6 +80,7 @@ block0(v0: i32):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
; sub sp, sp, #16
|
||||
@@ -64,6 +91,18 @@ block0(v0: i32):
|
||||
; add sp, sp, #16
|
||||
; ldp fp, lr, [sp], #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; sub sp, sp, #0x10
|
||||
; block0: ; offset 0xc
|
||||
; dup v3.4s, w0
|
||||
; mov x3, sp
|
||||
; str q3, [x3]
|
||||
; add sp, sp, #0x10
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; ret
|
||||
|
||||
function %load_explicit() -> i32x4 {
|
||||
gv0 = dyn_scale_target_const.i32x4
|
||||
@@ -76,6 +115,7 @@ block0:
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
; sub sp, sp, #16
|
||||
@@ -85,6 +125,17 @@ block0:
|
||||
; add sp, sp, #16
|
||||
; ldp fp, lr, [sp], #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; sub sp, sp, #0x10
|
||||
; block0: ; offset 0xc
|
||||
; mov x2, sp
|
||||
; ldr q0, [x2]
|
||||
; add sp, sp, #0x10
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; ret
|
||||
|
||||
function %store_implicit(i32) {
|
||||
gv0 = dyn_scale_target_const.i32x4
|
||||
@@ -97,6 +148,7 @@ block0(v0: i32):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
; sub sp, sp, #16
|
||||
@@ -107,6 +159,18 @@ block0(v0: i32):
|
||||
; add sp, sp, #16
|
||||
; ldp fp, lr, [sp], #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; sub sp, sp, #0x10
|
||||
; block0: ; offset 0xc
|
||||
; dup v3.4s, w0
|
||||
; mov x3, sp
|
||||
; str q3, [x3]
|
||||
; add sp, sp, #0x10
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; ret
|
||||
|
||||
function %addr() -> i64 {
|
||||
gv0 = dyn_scale_target_const.i32x4
|
||||
@@ -118,6 +182,7 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
; sub sp, sp, #16
|
||||
@@ -126,4 +191,14 @@ block0:
|
||||
; add sp, sp, #16
|
||||
; ldp fp, lr, [sp], #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; sub sp, sp, #0x10
|
||||
; block0: ; offset 0xc
|
||||
; mov x0, sp
|
||||
; add sp, sp, #0x10
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; ret
|
||||
|
||||
|
||||
@@ -10,10 +10,17 @@ block0(v0: i8):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sxtb x3, w0
|
||||
; add x0, x3, #42
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; sxtb x3, w0
|
||||
; add x0, x3, #0x2a
|
||||
; ret
|
||||
|
||||
function %f2(i8, i64) -> i64 {
|
||||
block0(v0: i8, v1: i64):
|
||||
@@ -22,9 +29,15 @@ block0(v0: i8, v1: i64):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; add x0, x1, x0, SXTB
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; add x0, x1, w0, sxtb
|
||||
; ret
|
||||
|
||||
function %i128_uextend_i64(i64) -> i128 {
|
||||
block0(v0: i64):
|
||||
@@ -32,9 +45,15 @@ block0(v0: i64):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movz x1, #0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov x1, #0
|
||||
; ret
|
||||
|
||||
function %i128_sextend_i64(i64) -> i128 {
|
||||
block0(v0: i64):
|
||||
@@ -42,9 +61,15 @@ block0(v0: i64):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; asr x1, x0, #63
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; asr x1, x0, #0x3f
|
||||
; ret
|
||||
|
||||
function %i128_uextend_i32(i32) -> i128 {
|
||||
block0(v0: i32):
|
||||
@@ -52,10 +77,17 @@ block0(v0: i32):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; mov w0, w0
|
||||
; movz x1, #0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov w0, w0
|
||||
; mov x1, #0
|
||||
; ret
|
||||
|
||||
function %i128_sextend_i32(i32) -> i128 {
|
||||
block0(v0: i32):
|
||||
@@ -63,10 +95,17 @@ block0(v0: i32):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sxtw x0, w0
|
||||
; asr x1, x0, #63
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; sxtw x0, w0
|
||||
; asr x1, x0, #0x3f
|
||||
; ret
|
||||
|
||||
function %i128_uextend_i16(i16) -> i128 {
|
||||
block0(v0: i16):
|
||||
@@ -74,10 +113,17 @@ block0(v0: i16):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uxth w0, w0
|
||||
; movz x1, #0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; uxth w0, w0
|
||||
; mov x1, #0
|
||||
; ret
|
||||
|
||||
function %i128_sextend_i16(i16) -> i128 {
|
||||
block0(v0: i16):
|
||||
@@ -85,10 +131,17 @@ block0(v0: i16):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sxth x0, w0
|
||||
; asr x1, x0, #63
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; sxth x0, w0
|
||||
; asr x1, x0, #0x3f
|
||||
; ret
|
||||
|
||||
function %i128_uextend_i8(i8) -> i128 {
|
||||
block0(v0: i8):
|
||||
@@ -96,10 +149,17 @@ block0(v0: i8):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uxtb w0, w0
|
||||
; movz x1, #0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; uxtb w0, w0
|
||||
; mov x1, #0
|
||||
; ret
|
||||
|
||||
function %i128_sextend_i8(i8) -> i128 {
|
||||
block0(v0: i8):
|
||||
@@ -107,10 +167,17 @@ block0(v0: i8):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sxtb x0, w0
|
||||
; asr x1, x0, #63
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; sxtb x0, w0
|
||||
; asr x1, x0, #0x3f
|
||||
; ret
|
||||
|
||||
function %i8x16_uextend_i16(i8x16) -> i16 {
|
||||
block0(v0: i8x16):
|
||||
@@ -119,9 +186,15 @@ block0(v0: i8x16):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; umov w0, v0.b[1]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; umov w0, v0.b[1]
|
||||
; ret
|
||||
|
||||
function %i8x16_uextend_i32(i8x16) -> i32 {
|
||||
block0(v0: i8x16):
|
||||
@@ -130,9 +203,15 @@ block0(v0: i8x16):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; umov w0, v0.b[1]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; umov w0, v0.b[1]
|
||||
; ret
|
||||
|
||||
function %i8x16_uextend_i64(i8x16) -> i64 {
|
||||
block0(v0: i8x16):
|
||||
@@ -141,9 +220,15 @@ block0(v0: i8x16):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; umov w0, v0.b[1]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; umov w0, v0.b[1]
|
||||
; ret
|
||||
|
||||
function %i8x16_uextend_i128(i8x16) -> i128 {
|
||||
block0(v0: i8x16):
|
||||
@@ -152,10 +237,17 @@ block0(v0: i8x16):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; umov w0, v0.b[1]
|
||||
; movz x1, #0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; umov w0, v0.b[1]
|
||||
; mov x1, #0
|
||||
; ret
|
||||
|
||||
function %i8x16_sextend_i16(i8x16) -> i16 {
|
||||
block0(v0: i8x16):
|
||||
@@ -164,9 +256,15 @@ block0(v0: i8x16):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; smov w0, v0.b[1]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; smov w0, v0.b[1]
|
||||
; ret
|
||||
|
||||
function %i8x16_sextend_i32(i8x16) -> i32 {
|
||||
block0(v0: i8x16):
|
||||
@@ -175,9 +273,15 @@ block0(v0: i8x16):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; smov w0, v0.b[1]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; smov w0, v0.b[1]
|
||||
; ret
|
||||
|
||||
function %i8x16_sextend_i64(i8x16) -> i64 {
|
||||
block0(v0: i8x16):
|
||||
@@ -186,9 +290,15 @@ block0(v0: i8x16):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; smov x0, v0.b[1]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; smov x0, v0.b[1]
|
||||
; ret
|
||||
|
||||
function %i8x16_sextend_i128(i8x16) -> i128 {
|
||||
block0(v0: i8x16):
|
||||
@@ -197,10 +307,17 @@ block0(v0: i8x16):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; smov x0, v0.b[1]
|
||||
; asr x1, x0, #63
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; smov x0, v0.b[1]
|
||||
; asr x1, x0, #0x3f
|
||||
; ret
|
||||
|
||||
function %i16x8_uextend_i32(i16x8) -> i32 {
|
||||
block0(v0: i16x8):
|
||||
@@ -209,9 +326,15 @@ block0(v0: i16x8):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; umov w0, v0.h[1]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; umov w0, v0.h[1]
|
||||
; ret
|
||||
|
||||
function %i16x8_uextend_i64(i16x8) -> i64 {
|
||||
block0(v0: i16x8):
|
||||
@@ -220,9 +343,15 @@ block0(v0: i16x8):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; umov w0, v0.h[1]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; umov w0, v0.h[1]
|
||||
; ret
|
||||
|
||||
function %i16x8_uextend_i128(i16x8) -> i128 {
|
||||
block0(v0: i16x8):
|
||||
@@ -231,10 +360,17 @@ block0(v0: i16x8):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; umov w0, v0.h[1]
|
||||
; movz x1, #0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; umov w0, v0.h[1]
|
||||
; mov x1, #0
|
||||
; ret
|
||||
|
||||
function %i16x8_sextend_i32(i16x8) -> i32 {
|
||||
block0(v0: i16x8):
|
||||
@@ -243,9 +379,15 @@ block0(v0: i16x8):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; smov w0, v0.h[1]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; smov w0, v0.h[1]
|
||||
; ret
|
||||
|
||||
function %i16x8_sextend_i64(i16x8) -> i64 {
|
||||
block0(v0: i16x8):
|
||||
@@ -254,9 +396,15 @@ block0(v0: i16x8):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; smov x0, v0.h[1]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; smov x0, v0.h[1]
|
||||
; ret
|
||||
|
||||
function %i16x8_sextend_i128(i16x8) -> i128 {
|
||||
block0(v0: i16x8):
|
||||
@@ -265,10 +413,17 @@ block0(v0: i16x8):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; smov x0, v0.h[1]
|
||||
; asr x1, x0, #63
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; smov x0, v0.h[1]
|
||||
; asr x1, x0, #0x3f
|
||||
; ret
|
||||
|
||||
function %i32x4_uextend_i64(i32x4) -> i64 {
|
||||
block0(v0: i32x4):
|
||||
@@ -277,9 +432,15 @@ block0(v0: i32x4):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; mov w0, v0.s[1]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov w0, v0.s[1]
|
||||
; ret
|
||||
|
||||
function %i32x4_uextend_i128(i32x4) -> i128 {
|
||||
block0(v0: i32x4):
|
||||
@@ -288,10 +449,17 @@ block0(v0: i32x4):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; mov w0, v0.s[1]
|
||||
; movz x1, #0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov w0, v0.s[1]
|
||||
; mov x1, #0
|
||||
; ret
|
||||
|
||||
function %i32x4_sextend_i64(i32x4) -> i64 {
|
||||
block0(v0: i32x4):
|
||||
@@ -300,9 +468,15 @@ block0(v0: i32x4):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; smov x0, v0.s[1]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; smov x0, v0.s[1]
|
||||
; ret
|
||||
|
||||
function %i32x4_sextend_i128(i32x4) -> i128 {
|
||||
block0(v0: i32x4):
|
||||
@@ -311,10 +485,17 @@ block0(v0: i32x4):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; smov x0, v0.s[1]
|
||||
; asr x1, x0, #63
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; smov x0, v0.s[1]
|
||||
; asr x1, x0, #0x3f
|
||||
; ret
|
||||
|
||||
function %i64x2_uextend_i128(i64x2) -> i128 {
|
||||
block0(v0: i64x2):
|
||||
@@ -323,10 +504,17 @@ block0(v0: i64x2):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; mov x0, v0.d[1]
|
||||
; movz x1, #0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov x0, v0.d[1]
|
||||
; mov x1, #0
|
||||
; ret
|
||||
|
||||
function %i64x2_sextend_i128(i64x2) -> i128 {
|
||||
block0(v0: i64x2):
|
||||
@@ -335,8 +523,15 @@ block0(v0: i64x2):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; mov x0, v0.d[1]
|
||||
; asr x1, x0, #63
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov x0, v0.d[1]
|
||||
; asr x1, x0, #0x3f
|
||||
; ret
|
||||
|
||||
|
||||
@@ -8,10 +8,17 @@ block0(v0: i8):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uxtb w2, w0
|
||||
; ucvtf s0, w2
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; uxtb w2, w0
|
||||
; ucvtf s0, w2
|
||||
; ret
|
||||
|
||||
function u0:0(i8) -> f64 {
|
||||
block0(v0: i8):
|
||||
@@ -19,10 +26,17 @@ block0(v0: i8):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uxtb w2, w0
|
||||
; ucvtf d0, w2
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; uxtb w2, w0
|
||||
; ucvtf d0, w2
|
||||
; ret
|
||||
|
||||
function u0:0(i16) -> f32 {
|
||||
block0(v0: i16):
|
||||
@@ -30,10 +44,17 @@ block0(v0: i16):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uxth w2, w0
|
||||
; ucvtf s0, w2
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; uxth w2, w0
|
||||
; ucvtf s0, w2
|
||||
; ret
|
||||
|
||||
function u0:0(i16) -> f64 {
|
||||
block0(v0: i16):
|
||||
@@ -41,10 +62,17 @@ block0(v0: i16):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uxth w2, w0
|
||||
; ucvtf d0, w2
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; uxth w2, w0
|
||||
; ucvtf d0, w2
|
||||
; ret
|
||||
|
||||
function u0:0(f32) -> i8 {
|
||||
block0(v0: f32):
|
||||
@@ -52,6 +80,7 @@ block0(v0: f32):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcmp s0, s0
|
||||
; b.vc 8 ; udf
|
||||
@@ -64,6 +93,23 @@ block0(v0: f32):
|
||||
; b.lt 8 ; udf
|
||||
; fcvtzu w0, s0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fcmp s0, s0
|
||||
; b.vc #0xc
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: bad_toint
|
||||
; fmov s4, #-1.00000000
|
||||
; fcmp s0, s4
|
||||
; b.gt #0x1c
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: int_ovf
|
||||
; mov x9, #0x43800000
|
||||
; fmov s17, w9
|
||||
; fcmp s0, s17
|
||||
; b.lt #0x30
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: int_ovf
|
||||
; fcvtzu w0, s0
|
||||
; ret
|
||||
|
||||
function u0:0(f64) -> i8 {
|
||||
block0(v0: f64):
|
||||
@@ -71,6 +117,7 @@ block0(v0: f64):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcmp d0, d0
|
||||
; b.vc 8 ; udf
|
||||
@@ -83,6 +130,23 @@ block0(v0: f64):
|
||||
; b.lt 8 ; udf
|
||||
; fcvtzu w0, d0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fcmp d0, d0
|
||||
; b.vc #0xc
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: bad_toint
|
||||
; fmov d4, #-1.00000000
|
||||
; fcmp d0, d4
|
||||
; b.gt #0x1c
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: int_ovf
|
||||
; mov x9, #0x4070000000000000
|
||||
; fmov d17, x9
|
||||
; fcmp d0, d17
|
||||
; b.lt #0x30
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: int_ovf
|
||||
; fcvtzu w0, d0
|
||||
; ret
|
||||
|
||||
function u0:0(f32) -> i16 {
|
||||
block0(v0: f32):
|
||||
@@ -90,6 +154,7 @@ block0(v0: f32):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcmp s0, s0
|
||||
; b.vc 8 ; udf
|
||||
@@ -102,6 +167,23 @@ block0(v0: f32):
|
||||
; b.lt 8 ; udf
|
||||
; fcvtzu w0, s0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fcmp s0, s0
|
||||
; b.vc #0xc
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: bad_toint
|
||||
; fmov s4, #-1.00000000
|
||||
; fcmp s0, s4
|
||||
; b.gt #0x1c
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: int_ovf
|
||||
; mov x9, #0x47800000
|
||||
; fmov s17, w9
|
||||
; fcmp s0, s17
|
||||
; b.lt #0x30
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: int_ovf
|
||||
; fcvtzu w0, s0
|
||||
; ret
|
||||
|
||||
function u0:0(f64) -> i16 {
|
||||
block0(v0: f64):
|
||||
@@ -109,6 +191,7 @@ block0(v0: f64):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcmp d0, d0
|
||||
; b.vc 8 ; udf
|
||||
@@ -121,4 +204,21 @@ block0(v0: f64):
|
||||
; b.lt 8 ; udf
|
||||
; fcvtzu w0, d0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fcmp d0, d0
|
||||
; b.vc #0xc
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: bad_toint
|
||||
; fmov d4, #-1.00000000
|
||||
; fcmp d0, d4
|
||||
; b.gt #0x1c
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: int_ovf
|
||||
; mov x9, #0x40f0000000000000
|
||||
; fmov d17, x9
|
||||
; fcmp d0, d17
|
||||
; b.lt #0x30
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: int_ovf
|
||||
; fcvtzu w0, d0
|
||||
; ret
|
||||
|
||||
|
||||
@@ -7,10 +7,17 @@ block0(v0: i8):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sxtb w2, w0
|
||||
; scvtf s0, w2
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; sxtb w2, w0
|
||||
; scvtf s0, w2
|
||||
; ret
|
||||
|
||||
function %f2(i16) -> f32 {
|
||||
block0(v0: i16):
|
||||
@@ -18,10 +25,17 @@ block0(v0: i16):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sxth w2, w0
|
||||
; scvtf s0, w2
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; sxth w2, w0
|
||||
; scvtf s0, w2
|
||||
; ret
|
||||
|
||||
function %f3(i32) -> f32 {
|
||||
block0(v0: i32):
|
||||
@@ -29,9 +43,15 @@ block0(v0: i32):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; scvtf s0, w0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; scvtf s0, w0
|
||||
; ret
|
||||
|
||||
function %f4(i64) -> f32 {
|
||||
block0(v0: i64):
|
||||
@@ -39,9 +59,15 @@ block0(v0: i64):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; scvtf s0, x0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; scvtf s0, x0
|
||||
; ret
|
||||
|
||||
function %f5(i8) -> f64 {
|
||||
block0(v0: i8):
|
||||
@@ -49,10 +75,17 @@ block0(v0: i8):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sxtb w2, w0
|
||||
; scvtf d0, w2
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; sxtb w2, w0
|
||||
; scvtf d0, w2
|
||||
; ret
|
||||
|
||||
function %f6(i16) -> f64 {
|
||||
block0(v0: i16):
|
||||
@@ -60,10 +93,17 @@ block0(v0: i16):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sxth w2, w0
|
||||
; scvtf d0, w2
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; sxth w2, w0
|
||||
; scvtf d0, w2
|
||||
; ret
|
||||
|
||||
function %f7(i32) -> f64 {
|
||||
block0(v0: i32):
|
||||
@@ -71,9 +111,15 @@ block0(v0: i32):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; scvtf d0, w0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; scvtf d0, w0
|
||||
; ret
|
||||
|
||||
function %f8(i64) -> f64 {
|
||||
block0(v0: i64):
|
||||
@@ -81,9 +127,15 @@ block0(v0: i64):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; scvtf d0, x0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; scvtf d0, x0
|
||||
; ret
|
||||
|
||||
function %f9(i32x4) -> f64x2 {
|
||||
block0(v0: i32x4):
|
||||
@@ -91,10 +143,17 @@ block0(v0: i32x4):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sxtl v2.2d, v0.2s
|
||||
; scvtf v0.2d, v2.2d
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; sshll v2.2d, v0.2s, #0
|
||||
; scvtf v0.2d, v2.2d
|
||||
; ret
|
||||
|
||||
function %f10(i8, i16, i32, i64) -> f32 {
|
||||
block0(v0: i8, v1: i16, v2: i32, v3: i64):
|
||||
@@ -108,6 +167,7 @@ block0(v0: i8, v1: i16, v2: i32, v3: i64):
|
||||
return v10
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uxtb w12, w0
|
||||
; ucvtf s22, w12
|
||||
@@ -119,6 +179,19 @@ block0(v0: i8, v1: i16, v2: i32, v3: i64):
|
||||
; fadd s21, s22, s21
|
||||
; fadd s0, s21, s24
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; uxtb w12, w0
|
||||
; ucvtf s22, w12
|
||||
; uxth w12, w1
|
||||
; ucvtf s23, w12
|
||||
; ucvtf s21, w2
|
||||
; ucvtf s24, x3
|
||||
; fadd s22, s22, s23
|
||||
; fadd s21, s22, s21
|
||||
; fadd s0, s21, s24
|
||||
; ret
|
||||
|
||||
function %f11(i32x4) -> f64x2 {
|
||||
block0(v0: i32x4):
|
||||
@@ -127,10 +200,17 @@ block0(v0: i32x4):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uxtl v3.2d, v0.2s
|
||||
; ucvtf v0.2d, v3.2d
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ushll v3.2d, v0.2s, #0
|
||||
; ucvtf v0.2d, v3.2d
|
||||
; ret
|
||||
|
||||
function %f12(i32x4) -> f32x4 {
|
||||
block0(v0: i32x4):
|
||||
@@ -138,9 +218,15 @@ block0(v0: i32x4):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ucvtf v0.4s, v0.4s
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ucvtf v0.4s, v0.4s
|
||||
; ret
|
||||
|
||||
function %f13(f32) -> i32 {
|
||||
block0(v0: f32):
|
||||
@@ -148,6 +234,7 @@ block0(v0: f32):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcmp s0, s0
|
||||
; b.vc 8 ; udf
|
||||
@@ -160,6 +247,23 @@ block0(v0: f32):
|
||||
; b.lt 8 ; udf
|
||||
; fcvtzu w0, s0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fcmp s0, s0
|
||||
; b.vc #0xc
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: bad_toint
|
||||
; fmov s4, #-1.00000000
|
||||
; fcmp s0, s4
|
||||
; b.gt #0x1c
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: int_ovf
|
||||
; mov x9, #0x4f800000
|
||||
; fmov s17, w9
|
||||
; fcmp s0, s17
|
||||
; b.lt #0x30
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: int_ovf
|
||||
; fcvtzu w0, s0
|
||||
; ret
|
||||
|
||||
function %f14(f32) -> i64 {
|
||||
block0(v0: f32):
|
||||
@@ -167,6 +271,7 @@ block0(v0: f32):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcmp s0, s0
|
||||
; b.vc 8 ; udf
|
||||
@@ -179,6 +284,23 @@ block0(v0: f32):
|
||||
; b.lt 8 ; udf
|
||||
; fcvtzu x0, s0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fcmp s0, s0
|
||||
; b.vc #0xc
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: bad_toint
|
||||
; fmov s4, #-1.00000000
|
||||
; fcmp s0, s4
|
||||
; b.gt #0x1c
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: int_ovf
|
||||
; mov x9, #0x5f800000
|
||||
; fmov s17, w9
|
||||
; fcmp s0, s17
|
||||
; b.lt #0x30
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: int_ovf
|
||||
; fcvtzu x0, s0
|
||||
; ret
|
||||
|
||||
function %f15(f64) -> i32 {
|
||||
block0(v0: f64):
|
||||
@@ -186,6 +308,7 @@ block0(v0: f64):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcmp d0, d0
|
||||
; b.vc 8 ; udf
|
||||
@@ -198,6 +321,23 @@ block0(v0: f64):
|
||||
; b.lt 8 ; udf
|
||||
; fcvtzu w0, d0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fcmp d0, d0
|
||||
; b.vc #0xc
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: bad_toint
|
||||
; fmov d4, #-1.00000000
|
||||
; fcmp d0, d4
|
||||
; b.gt #0x1c
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: int_ovf
|
||||
; mov x9, #0x41f0000000000000
|
||||
; fmov d17, x9
|
||||
; fcmp d0, d17
|
||||
; b.lt #0x30
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: int_ovf
|
||||
; fcvtzu w0, d0
|
||||
; ret
|
||||
|
||||
function %f16(f64) -> i64 {
|
||||
block0(v0: f64):
|
||||
@@ -205,6 +345,7 @@ block0(v0: f64):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcmp d0, d0
|
||||
; b.vc 8 ; udf
|
||||
@@ -217,6 +358,23 @@ block0(v0: f64):
|
||||
; b.lt 8 ; udf
|
||||
; fcvtzu x0, d0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fcmp d0, d0
|
||||
; b.vc #0xc
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: bad_toint
|
||||
; fmov d4, #-1.00000000
|
||||
; fcmp d0, d4
|
||||
; b.gt #0x1c
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: int_ovf
|
||||
; mov x9, #0x43f0000000000000
|
||||
; fmov d17, x9
|
||||
; fcmp d0, d17
|
||||
; b.lt #0x30
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: int_ovf
|
||||
; fcvtzu x0, d0
|
||||
; ret
|
||||
|
||||
function %f17(f32) -> i32 {
|
||||
block0(v0: f32):
|
||||
@@ -224,9 +382,15 @@ block0(v0: f32):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcvtzu w0, s0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fcvtzu w0, s0
|
||||
; ret
|
||||
|
||||
function %f18(f32) -> i64 {
|
||||
block0(v0: f32):
|
||||
@@ -234,9 +398,15 @@ block0(v0: f32):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcvtzu x0, s0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fcvtzu x0, s0
|
||||
; ret
|
||||
|
||||
function %f19(f64) -> i32 {
|
||||
block0(v0: f64):
|
||||
@@ -244,9 +414,15 @@ block0(v0: f64):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcvtzu w0, d0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fcvtzu w0, d0
|
||||
; ret
|
||||
|
||||
function %f20(f64) -> i64 {
|
||||
block0(v0: f64):
|
||||
@@ -254,9 +430,15 @@ block0(v0: f64):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcvtzu x0, d0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fcvtzu x0, d0
|
||||
; ret
|
||||
|
||||
function %f21(f32) -> i32 {
|
||||
block0(v0: f32):
|
||||
@@ -264,6 +446,7 @@ block0(v0: f32):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcmp s0, s0
|
||||
; b.vc 8 ; udf
|
||||
@@ -277,6 +460,24 @@ block0(v0: f32):
|
||||
; b.lt 8 ; udf
|
||||
; fcvtzs w0, s0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fcmp s0, s0
|
||||
; b.vc #0xc
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: bad_toint
|
||||
; mov x5, #0xcf000000
|
||||
; fmov s5, w5
|
||||
; fcmp s0, s5
|
||||
; b.ge #0x20
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: int_ovf
|
||||
; mov x11, #0x4f000000
|
||||
; fmov s19, w11
|
||||
; fcmp s0, s19
|
||||
; b.lt #0x34
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: int_ovf
|
||||
; fcvtzs w0, s0
|
||||
; ret
|
||||
|
||||
function %f22(f32) -> i64 {
|
||||
block0(v0: f32):
|
||||
@@ -284,6 +485,7 @@ block0(v0: f32):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcmp s0, s0
|
||||
; b.vc 8 ; udf
|
||||
@@ -297,6 +499,24 @@ block0(v0: f32):
|
||||
; b.lt 8 ; udf
|
||||
; fcvtzs x0, s0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fcmp s0, s0
|
||||
; b.vc #0xc
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: bad_toint
|
||||
; mov x5, #0xdf000000
|
||||
; fmov s5, w5
|
||||
; fcmp s0, s5
|
||||
; b.ge #0x20
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: int_ovf
|
||||
; mov x11, #0x5f000000
|
||||
; fmov s19, w11
|
||||
; fcmp s0, s19
|
||||
; b.lt #0x34
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: int_ovf
|
||||
; fcvtzs x0, s0
|
||||
; ret
|
||||
|
||||
function %f23(f64) -> i32 {
|
||||
block0(v0: f64):
|
||||
@@ -304,6 +524,7 @@ block0(v0: f64):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcmp d0, d0
|
||||
; b.vc 8 ; udf
|
||||
@@ -316,6 +537,26 @@ block0(v0: f64):
|
||||
; b.lt 8 ; udf
|
||||
; fcvtzs w0, d0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fcmp d0, d0
|
||||
; b.vc #0xc
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: bad_toint
|
||||
; ldr d4, #0x14
|
||||
; b #0x1c
|
||||
; .byte 0x00, 0x00, 0x20, 0x00
|
||||
; .byte 0x00, 0x00, 0xe0, 0xc1
|
||||
; fcmp d0, d4
|
||||
; b.gt #0x28
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: int_ovf
|
||||
; mov x9, #0x41e0000000000000
|
||||
; fmov d17, x9
|
||||
; fcmp d0, d17
|
||||
; b.lt #0x3c
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: int_ovf
|
||||
; fcvtzs w0, d0
|
||||
; ret
|
||||
|
||||
function %f24(f64) -> i64 {
|
||||
block0(v0: f64):
|
||||
@@ -323,6 +564,7 @@ block0(v0: f64):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcmp d0, d0
|
||||
; b.vc 8 ; udf
|
||||
@@ -336,6 +578,24 @@ block0(v0: f64):
|
||||
; b.lt 8 ; udf
|
||||
; fcvtzs x0, d0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fcmp d0, d0
|
||||
; b.vc #0xc
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: bad_toint
|
||||
; mov x5, #-0x3c20000000000000
|
||||
; fmov d5, x5
|
||||
; fcmp d0, d5
|
||||
; b.ge #0x20
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: int_ovf
|
||||
; mov x11, #0x43e0000000000000
|
||||
; fmov d19, x11
|
||||
; fcmp d0, d19
|
||||
; b.lt #0x34
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: int_ovf
|
||||
; fcvtzs x0, d0
|
||||
; ret
|
||||
|
||||
function %f25(f32) -> i32 {
|
||||
block0(v0: f32):
|
||||
@@ -343,9 +603,15 @@ block0(v0: f32):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcvtzs w0, s0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fcvtzs w0, s0
|
||||
; ret
|
||||
|
||||
function %f26(f32) -> i64 {
|
||||
block0(v0: f32):
|
||||
@@ -353,9 +619,15 @@ block0(v0: f32):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcvtzs x0, s0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fcvtzs x0, s0
|
||||
; ret
|
||||
|
||||
function %f27(f64) -> i32 {
|
||||
block0(v0: f64):
|
||||
@@ -363,9 +635,15 @@ block0(v0: f64):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcvtzs w0, d0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fcvtzs w0, d0
|
||||
; ret
|
||||
|
||||
function %f28(f64) -> i64 {
|
||||
block0(v0: f64):
|
||||
@@ -373,9 +651,15 @@ block0(v0: f64):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcvtzs x0, d0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fcvtzs x0, d0
|
||||
; ret
|
||||
|
||||
function %f29(f32x4) -> i32x4 {
|
||||
block0(v0: f32x4):
|
||||
@@ -383,9 +667,15 @@ block0(v0: f32x4):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcvtzu v0.4s, v0.4s
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fcvtzu v0.4s, v0.4s
|
||||
; ret
|
||||
|
||||
function %f30(f32x4) -> i32x4 {
|
||||
block0(v0: f32x4):
|
||||
@@ -393,9 +683,15 @@ block0(v0: f32x4):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcvtzs v0.4s, v0.4s
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fcvtzs v0.4s, v0.4s
|
||||
; ret
|
||||
|
||||
function %f31(f32) -> i8 {
|
||||
block0(v0: f32):
|
||||
@@ -403,12 +699,21 @@ block0(v0: f32):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcvtzu w2, s0
|
||||
; movz w4, #255
|
||||
; subs wzr, w2, w4
|
||||
; csel x0, x4, x2, hi
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fcvtzu w2, s0
|
||||
; mov w4, #0xff
|
||||
; cmp w2, w4
|
||||
; csel x0, x4, x2, hi
|
||||
; ret
|
||||
|
||||
function %f32(f32) -> i8 {
|
||||
block0(v0: f32):
|
||||
@@ -416,6 +721,7 @@ block0(v0: f32):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcvtzs w2, s0
|
||||
; movz w4, #127
|
||||
@@ -425,6 +731,17 @@ block0(v0: f32):
|
||||
; subs wzr, w9, w6
|
||||
; csel x0, x6, x9, lt
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fcvtzs w2, s0
|
||||
; mov w4, #0x7f
|
||||
; mov x6, #-0x80
|
||||
; cmp w2, w4
|
||||
; csel x9, x4, x2, gt
|
||||
; cmp w9, w6
|
||||
; csel x0, x6, x9, lt
|
||||
; ret
|
||||
|
||||
function %f33(f32) -> i16 {
|
||||
block0(v0: f32):
|
||||
@@ -432,12 +749,21 @@ block0(v0: f32):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcvtzu w2, s0
|
||||
; movz w4, #65535
|
||||
; subs wzr, w2, w4
|
||||
; csel x0, x4, x2, hi
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fcvtzu w2, s0
|
||||
; mov w4, #0xffff
|
||||
; cmp w2, w4
|
||||
; csel x0, x4, x2, hi
|
||||
; ret
|
||||
|
||||
function %f34(f32) -> i16 {
|
||||
block0(v0: f32):
|
||||
@@ -445,6 +771,7 @@ block0(v0: f32):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcvtzs w2, s0
|
||||
; movz w4, #32767
|
||||
@@ -454,6 +781,17 @@ block0(v0: f32):
|
||||
; subs wzr, w9, w6
|
||||
; csel x0, x6, x9, lt
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fcvtzs w2, s0
|
||||
; mov w4, #0x7fff
|
||||
; mov x6, #-0x8000
|
||||
; cmp w2, w4
|
||||
; csel x9, x4, x2, gt
|
||||
; cmp w9, w6
|
||||
; csel x0, x6, x9, lt
|
||||
; ret
|
||||
|
||||
function %f35(f64) -> i8 {
|
||||
block0(v0: f64):
|
||||
@@ -461,12 +799,21 @@ block0(v0: f64):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcvtzu w2, d0
|
||||
; movz w4, #255
|
||||
; subs wzr, w2, w4
|
||||
; csel x0, x4, x2, hi
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fcvtzu w2, d0
|
||||
; mov w4, #0xff
|
||||
; cmp w2, w4
|
||||
; csel x0, x4, x2, hi
|
||||
; ret
|
||||
|
||||
function %f36(f64) -> i8 {
|
||||
block0(v0: f64):
|
||||
@@ -474,6 +821,7 @@ block0(v0: f64):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcvtzs w2, d0
|
||||
; movz w4, #127
|
||||
@@ -483,6 +831,17 @@ block0(v0: f64):
|
||||
; subs wzr, w9, w6
|
||||
; csel x0, x6, x9, lt
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fcvtzs w2, d0
|
||||
; mov w4, #0x7f
|
||||
; mov x6, #-0x80
|
||||
; cmp w2, w4
|
||||
; csel x9, x4, x2, gt
|
||||
; cmp w9, w6
|
||||
; csel x0, x6, x9, lt
|
||||
; ret
|
||||
|
||||
function %f37(f64) -> i16 {
|
||||
block0(v0: f64):
|
||||
@@ -490,12 +849,21 @@ block0(v0: f64):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcvtzu w2, d0
|
||||
; movz w4, #65535
|
||||
; subs wzr, w2, w4
|
||||
; csel x0, x4, x2, hi
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fcvtzu w2, d0
|
||||
; mov w4, #0xffff
|
||||
; cmp w2, w4
|
||||
; csel x0, x4, x2, hi
|
||||
; ret
|
||||
|
||||
function %f38(f64) -> i16 {
|
||||
block0(v0: f64):
|
||||
@@ -503,6 +871,7 @@ block0(v0: f64):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcvtzs w2, d0
|
||||
; movz w4, #32767
|
||||
@@ -512,4 +881,15 @@ block0(v0: f64):
|
||||
; subs wzr, w9, w6
|
||||
; csel x0, x6, x9, lt
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fcvtzs w2, d0
|
||||
; mov w4, #0x7fff
|
||||
; mov x6, #-0x8000
|
||||
; cmp w2, w4
|
||||
; csel x9, x4, x2, gt
|
||||
; cmp w9, w6
|
||||
; csel x0, x6, x9, lt
|
||||
; ret
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -8,6 +8,7 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; paciasp
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
@@ -15,6 +16,16 @@ block0:
|
||||
; mov x0, fp
|
||||
; ldp fp, lr, [sp], #16
|
||||
; autiasp ; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; paciasp
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; block0: ; offset 0xc
|
||||
; mov x0, x29
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; autiasp
|
||||
; ret
|
||||
|
||||
function %sp() -> i64 {
|
||||
block0:
|
||||
@@ -22,6 +33,7 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; paciasp
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
@@ -29,6 +41,16 @@ block0:
|
||||
; mov x0, sp
|
||||
; ldp fp, lr, [sp], #16
|
||||
; autiasp ; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; paciasp
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; block0: ; offset 0xc
|
||||
; mov x0, sp
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; autiasp
|
||||
; ret
|
||||
|
||||
function %return_address() -> i64 {
|
||||
block0:
|
||||
@@ -36,6 +58,7 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; paciasp
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
@@ -45,3 +68,16 @@ block0:
|
||||
; mov x0, lr
|
||||
; ldp fp, lr, [sp], #16
|
||||
; autiasp ; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; paciasp
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; block0: ; offset 0xc
|
||||
; ldur x30, [x29, #8]
|
||||
; xpaclri
|
||||
; mov x0, x30
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; autiasp
|
||||
; ret
|
||||
|
||||
|
||||
@@ -8,12 +8,21 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
; block0:
|
||||
; mov x0, fp
|
||||
; ldp fp, lr, [sp], #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; block0: ; offset 0x8
|
||||
; mov x0, x29
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; ret
|
||||
|
||||
function %sp() -> i64 {
|
||||
block0:
|
||||
@@ -21,12 +30,21 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
; block0:
|
||||
; mov x0, sp
|
||||
; ldp fp, lr, [sp], #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; block0: ; offset 0x8
|
||||
; mov x0, sp
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; ret
|
||||
|
||||
function %return_address() -> i64 {
|
||||
block0:
|
||||
@@ -34,9 +52,19 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
; block0:
|
||||
; ldr x0, [fp, #8]
|
||||
; ldp fp, lr, [sp], #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; block0: ; offset 0x8
|
||||
; ldur x0, [x29, #8]
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; ret
|
||||
|
||||
|
||||
@@ -8,9 +8,15 @@ block0(v0: i8x16):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; abs v0.16b, v0.16b
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; abs v0.16b, v0.16b
|
||||
; ret
|
||||
|
||||
function %f2(i8x8) -> i8x8 {
|
||||
block0(v0: i8x8):
|
||||
@@ -18,9 +24,15 @@ block0(v0: i8x8):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; abs v0.8b, v0.8b
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; abs v0.8b, v0.8b
|
||||
; ret
|
||||
|
||||
function %f3(i16x8) -> i16x8 {
|
||||
block0(v0: i16x8):
|
||||
@@ -28,9 +40,15 @@ block0(v0: i16x8):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; abs v0.8h, v0.8h
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; abs v0.8h, v0.8h
|
||||
; ret
|
||||
|
||||
function %f4(i16x4) -> i16x4 {
|
||||
block0(v0: i16x4):
|
||||
@@ -38,9 +56,15 @@ block0(v0: i16x4):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; abs v0.4h, v0.4h
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; abs v0.4h, v0.4h
|
||||
; ret
|
||||
|
||||
function %f5(i32x4) -> i32x4 {
|
||||
block0(v0: i32x4):
|
||||
@@ -48,9 +72,15 @@ block0(v0: i32x4):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; abs v0.4s, v0.4s
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; abs v0.4s, v0.4s
|
||||
; ret
|
||||
|
||||
function %f6(i32x2) -> i32x2 {
|
||||
block0(v0: i32x2):
|
||||
@@ -58,9 +88,15 @@ block0(v0: i32x2):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; abs v0.2s, v0.2s
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; abs v0.2s, v0.2s
|
||||
; ret
|
||||
|
||||
function %f7(i64x2) -> i64x2 {
|
||||
block0(v0: i64x2):
|
||||
@@ -68,9 +104,15 @@ block0(v0: i64x2):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; abs v0.2d, v0.2d
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; abs v0.2d, v0.2d
|
||||
; ret
|
||||
|
||||
function %f8(i8) -> i8 {
|
||||
block0(v0: i8):
|
||||
@@ -78,11 +120,19 @@ block0(v0: i8):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sxtb w2, w0
|
||||
; subs wzr, w2, #0
|
||||
; csneg x0, x2, x2, gt
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; sxtb w2, w0
|
||||
; cmp w2, #0
|
||||
; cneg x0, x2, le
|
||||
; ret
|
||||
|
||||
function %f9(i16) -> i16 {
|
||||
block0(v0: i16):
|
||||
@@ -90,11 +140,19 @@ block0(v0: i16):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sxth w2, w0
|
||||
; subs wzr, w2, #0
|
||||
; csneg x0, x2, x2, gt
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; sxth w2, w0
|
||||
; cmp w2, #0
|
||||
; cneg x0, x2, le
|
||||
; ret
|
||||
|
||||
function %f10(i32) -> i32 {
|
||||
block0(v0: i32):
|
||||
@@ -102,10 +160,17 @@ block0(v0: i32):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; subs wzr, w0, #0
|
||||
; csneg x0, x0, x0, gt
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmp w0, #0
|
||||
; cneg x0, x0, le
|
||||
; ret
|
||||
|
||||
function %f11(i64) -> i64 {
|
||||
block0(v0: i64):
|
||||
@@ -113,7 +178,15 @@ block0(v0: i64):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; subs xzr, x0, #0
|
||||
; csneg x0, x0, x0, gt
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmp x0, #0
|
||||
; cneg x0, x0, le
|
||||
; ret
|
||||
|
||||
|
||||
@@ -12,10 +12,17 @@ block0(v0: i32):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; subs wzr, w0, #1118208
|
||||
; cset x0, hi
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmp w0, #0x111, lsl #12
|
||||
; cset x0, hi
|
||||
; ret
|
||||
|
||||
function %b(i32) -> i8 {
|
||||
block0(v0: i32):
|
||||
@@ -24,10 +31,17 @@ block0(v0: i32):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; subs wzr, w0, #1118208
|
||||
; cset x0, hs
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmp w0, #0x111, lsl #12
|
||||
; cset x0, hs
|
||||
; ret
|
||||
|
||||
function %c(i32) -> i8 {
|
||||
block0(v0: i32):
|
||||
@@ -36,12 +50,21 @@ block0(v0: i32):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movz w3, #4369
|
||||
; movk w3, w3, #17, LSL #16
|
||||
; subs wzr, w0, w3
|
||||
; cset x0, hs
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov w3, #0x1111
|
||||
; movk w3, #0x11, lsl #16
|
||||
; cmp w0, w3
|
||||
; cset x0, hs
|
||||
; ret
|
||||
|
||||
function %d(i32) -> i8 {
|
||||
block0(v0: i32):
|
||||
@@ -50,12 +73,21 @@ block0(v0: i32):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movz w3, #4368
|
||||
; movk w3, w3, #17, LSL #16
|
||||
; subs wzr, w0, w3
|
||||
; cset x0, hs
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov w3, #0x1110
|
||||
; movk w3, #0x11, lsl #16
|
||||
; cmp w0, w3
|
||||
; cset x0, hs
|
||||
; ret
|
||||
|
||||
function %e(i32) -> i8 {
|
||||
block0(v0: i32):
|
||||
@@ -64,10 +96,17 @@ block0(v0: i32):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; subs wzr, w0, #1118208
|
||||
; cset x0, gt
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmp w0, #0x111, lsl #12
|
||||
; cset x0, gt
|
||||
; ret
|
||||
|
||||
function %f(i32) -> i8 {
|
||||
block0(v0: i32):
|
||||
@@ -76,10 +115,17 @@ block0(v0: i32):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; subs wzr, w0, #1118208
|
||||
; cset x0, ge
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmp w0, #0x111, lsl #12
|
||||
; cset x0, ge
|
||||
; ret
|
||||
|
||||
function %g(i32) -> i8 {
|
||||
block0(v0: i32):
|
||||
@@ -88,12 +134,21 @@ block0(v0: i32):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movz w3, #4369
|
||||
; movk w3, w3, #17, LSL #16
|
||||
; subs wzr, w0, w3
|
||||
; cset x0, ge
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov w3, #0x1111
|
||||
; movk w3, #0x11, lsl #16
|
||||
; cmp w0, w3
|
||||
; cset x0, ge
|
||||
; ret
|
||||
|
||||
function %h(i32) -> i8 {
|
||||
block0(v0: i32):
|
||||
@@ -102,10 +157,19 @@ block0(v0: i32):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movz w3, #4368
|
||||
; movk w3, w3, #17, LSL #16
|
||||
; subs wzr, w0, w3
|
||||
; cset x0, ge
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov w3, #0x1110
|
||||
; movk w3, #0x11, lsl #16
|
||||
; cmp w0, w3
|
||||
; cset x0, ge
|
||||
; ret
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@ block0:
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movz w0, #56780
|
||||
; uxth w2, w0
|
||||
@@ -20,4 +21,13 @@ block0:
|
||||
; subs wzr, w2, w4, UXTH
|
||||
; cset x0, ne
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov w0, #0xddcc
|
||||
; uxth w2, w0
|
||||
; mov w4, #0xddcc
|
||||
; cmp w2, w4, uxth
|
||||
; cset x0, ne
|
||||
; ret
|
||||
|
||||
|
||||
@@ -15,6 +15,7 @@ block0:
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
; sub sp, sp, #2048
|
||||
@@ -23,6 +24,16 @@ block0:
|
||||
; add sp, sp, #2048
|
||||
; ldp fp, lr, [sp], #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; sub sp, sp, #0x800
|
||||
; block0: ; offset 0xc
|
||||
; mov x0, sp
|
||||
; add sp, sp, #0x800
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; ret
|
||||
|
||||
function %unrolled() -> i64 system_v {
|
||||
ss0 = explicit_slot 12288
|
||||
@@ -32,6 +43,7 @@ block0:
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
; movn x16, #4095 ; str wzr, [sp, x16, SXTX]
|
||||
@@ -43,6 +55,22 @@ block0:
|
||||
; add sp, sp, #12288
|
||||
; ldp fp, lr, [sp], #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; mov x16, #-0x1000
|
||||
; str wzr, [sp, x16, sxtx]
|
||||
; mov x16, #-0x2000
|
||||
; str wzr, [sp, x16, sxtx]
|
||||
; mov x16, #-0x3000
|
||||
; str wzr, [sp, x16, sxtx]
|
||||
; sub sp, sp, #3, lsl #12
|
||||
; block0: ; offset 0x24
|
||||
; mov x0, sp
|
||||
; add sp, sp, #3, lsl #12
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; ret
|
||||
|
||||
function %large() -> i64 system_v {
|
||||
ss0 = explicit_slot 100000
|
||||
@@ -52,6 +80,7 @@ block0:
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
; movz x16, #0
|
||||
@@ -68,4 +97,25 @@ block0:
|
||||
; add sp, sp, x16, UXTX
|
||||
; ldp fp, lr, [sp], #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; mov x16, #0
|
||||
; mov w17, #0x86a0
|
||||
; movk w17, #1, lsl #16
|
||||
; sub x16, x16, #1, lsl #12
|
||||
; str wzr, [sp, x16]
|
||||
; cmn x16, x17
|
||||
; b.gt #0x14
|
||||
; mov w16, #0x86a0
|
||||
; movk w16, #1, lsl #16
|
||||
; sub sp, sp, x16
|
||||
; block0: ; offset 0x30
|
||||
; mov x0, sp
|
||||
; mov w16, #0x86a0
|
||||
; movk w16, #1, lsl #16
|
||||
; add sp, sp, x16
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; ret
|
||||
|
||||
|
||||
@@ -27,6 +27,7 @@ block5(v5: i32):
|
||||
return v6
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; emit_island 44
|
||||
; subs wzr, w0, #3
|
||||
@@ -54,4 +55,35 @@ block5(v5: i32):
|
||||
; block9:
|
||||
; add w0, w0, w5
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmp w0, #3
|
||||
; b.hs #0x2c
|
||||
; csel x15, xzr, x0, hs
|
||||
; csdb
|
||||
; adr x14, #0x20
|
||||
; ldrsw x15, [x14, w15, uxtw #2]
|
||||
; add x14, x14, x15
|
||||
; br x14
|
||||
; .byte 0x14, 0x00, 0x00, 0x00
|
||||
; .byte 0x1c, 0x00, 0x00, 0x00
|
||||
; .byte 0x24, 0x00, 0x00, 0x00
|
||||
; block1: ; offset 0x2c
|
||||
; mov w5, #4
|
||||
; block2: ; offset 0x30
|
||||
; b #0x48
|
||||
; block3: ; offset 0x34
|
||||
; mov w5, #1
|
||||
; block4: ; offset 0x38
|
||||
; b #0x48
|
||||
; block5: ; offset 0x3c
|
||||
; mov w5, #2
|
||||
; block6: ; offset 0x40
|
||||
; b #0x48
|
||||
; block7: ; offset 0x44
|
||||
; mov w5, #3
|
||||
; block8: ; offset 0x48
|
||||
; add w0, w0, w5
|
||||
; ret
|
||||
|
||||
|
||||
@@ -10,6 +10,11 @@ block0(v0: i64):
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ret
|
||||
|
||||
|
||||
@@ -10,9 +10,17 @@ block0(v0: i64):
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
; block0:
|
||||
; ldp fp, lr, [sp], #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; block0: ; offset 0x8
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; ret
|
||||
|
||||
|
||||
@@ -9,8 +9,15 @@ block1:
|
||||
return v0, v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movz x0, #1
|
||||
; movz x1, #2
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov x0, #1
|
||||
; mov x1, #2
|
||||
; ret
|
||||
|
||||
|
||||
@@ -8,9 +8,15 @@ block0(v0: i8, v1: i8):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; add w0, w0, w1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; add w0, w0, w1
|
||||
; ret
|
||||
|
||||
function %add16(i16, i16) -> i16 {
|
||||
block0(v0: i16, v1: i16):
|
||||
@@ -18,9 +24,15 @@ block0(v0: i16, v1: i16):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; add w0, w0, w1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; add w0, w0, w1
|
||||
; ret
|
||||
|
||||
function %add32(i32, i32) -> i32 {
|
||||
block0(v0: i32, v1: i32):
|
||||
@@ -28,9 +40,15 @@ block0(v0: i32, v1: i32):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; add w0, w0, w1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; add w0, w0, w1
|
||||
; ret
|
||||
|
||||
function %add32_8(i32, i8) -> i32 {
|
||||
block0(v0: i32, v1: i8):
|
||||
@@ -39,9 +57,15 @@ block0(v0: i32, v1: i8):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; add w0, w0, w1, SXTB
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; add w0, w0, w1, sxtb
|
||||
; ret
|
||||
|
||||
function %add64_32(i64, i32) -> i64 {
|
||||
block0(v0: i64, v1: i32):
|
||||
@@ -50,7 +74,13 @@ block0(v0: i64, v1: i32):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; add x0, x0, x1, SXTW
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; add x0, x0, w1, sxtw
|
||||
; ret
|
||||
|
||||
|
||||
@@ -10,9 +10,17 @@ block0:
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; mov x1, x21
|
||||
; add x1, x1, #1
|
||||
; mov x21, x1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov x1, x21
|
||||
; add x1, x1, #1
|
||||
; mov x21, x1
|
||||
; ret
|
||||
|
||||
|
||||
@@ -75,6 +75,7 @@ block0(v0: f64):
|
||||
return v62
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
; stp d14, d15, [sp, #-16]!
|
||||
@@ -150,6 +151,83 @@ block0(v0: f64):
|
||||
; ldp d14, d15, [sp], #16
|
||||
; ldp fp, lr, [sp], #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; stp d14, d15, [sp, #-0x10]!
|
||||
; stp d12, d13, [sp, #-0x10]!
|
||||
; stp d10, d11, [sp, #-0x10]!
|
||||
; stp d8, d9, [sp, #-0x10]!
|
||||
; block0: ; offset 0x18
|
||||
; fadd d23, d0, d0
|
||||
; fadd d24, d0, d0
|
||||
; fadd d25, d0, d0
|
||||
; fadd d26, d0, d0
|
||||
; fadd d27, d0, d0
|
||||
; fadd d28, d0, d0
|
||||
; fadd d29, d0, d0
|
||||
; fadd d30, d0, d0
|
||||
; fadd d31, d0, d0
|
||||
; fadd d1, d0, d0
|
||||
; fadd d2, d0, d0
|
||||
; fadd d3, d0, d0
|
||||
; fadd d4, d0, d0
|
||||
; fadd d5, d0, d0
|
||||
; fadd d6, d0, d0
|
||||
; fadd d7, d0, d0
|
||||
; fadd d16, d0, d0
|
||||
; fadd d17, d0, d0
|
||||
; fadd d18, d0, d0
|
||||
; fadd d19, d0, d0
|
||||
; fadd d20, d0, d0
|
||||
; fadd d21, d0, d0
|
||||
; fadd d22, d0, d0
|
||||
; fadd d15, d0, d0
|
||||
; fadd d8, d0, d0
|
||||
; fadd d9, d0, d0
|
||||
; fadd d10, d0, d0
|
||||
; fadd d11, d0, d0
|
||||
; fadd d12, d0, d0
|
||||
; fadd d13, d0, d0
|
||||
; fadd d14, d0, d0
|
||||
; fadd d23, d0, d23
|
||||
; fadd d24, d24, d25
|
||||
; fadd d25, d26, d27
|
||||
; fadd d26, d28, d29
|
||||
; fadd d27, d30, d31
|
||||
; fadd d28, d1, d2
|
||||
; fadd d29, d3, d4
|
||||
; fadd d30, d5, d6
|
||||
; fadd d31, d7, d16
|
||||
; fadd d0, d17, d18
|
||||
; fadd d1, d19, d20
|
||||
; fadd d2, d21, d22
|
||||
; fadd d3, d15, d8
|
||||
; fadd d4, d9, d10
|
||||
; fadd d5, d11, d12
|
||||
; fadd d6, d13, d14
|
||||
; fadd d23, d23, d24
|
||||
; fadd d24, d25, d26
|
||||
; fadd d25, d27, d28
|
||||
; fadd d26, d29, d30
|
||||
; fadd d27, d31, d0
|
||||
; fadd d28, d1, d2
|
||||
; fadd d29, d3, d4
|
||||
; fadd d30, d5, d6
|
||||
; fadd d23, d23, d24
|
||||
; fadd d24, d25, d26
|
||||
; fadd d25, d27, d28
|
||||
; fadd d26, d29, d30
|
||||
; fadd d23, d23, d24
|
||||
; fadd d24, d25, d26
|
||||
; fadd d0, d23, d24
|
||||
; ldp d8, d9, [sp], #0x10
|
||||
; ldp d10, d11, [sp], #0x10
|
||||
; ldp d12, d13, [sp], #0x10
|
||||
; ldp d14, d15, [sp], #0x10
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; ret
|
||||
|
||||
function %f2(i64) -> i64 {
|
||||
block0(v0: i64):
|
||||
@@ -197,6 +275,7 @@ block0(v0: i64):
|
||||
return v36
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
; str x28, [sp, #-16]!
|
||||
@@ -242,4 +321,51 @@ block0(v0: i64):
|
||||
; ldr x28, [sp], #16
|
||||
; ldp fp, lr, [sp], #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; str x28, [sp, #-0x10]!
|
||||
; stp x21, x27, [sp, #-0x10]!
|
||||
; block0: ; offset 0x10
|
||||
; add x5, x0, x0
|
||||
; add x6, x0, x5
|
||||
; add x7, x0, x6
|
||||
; add x8, x0, x7
|
||||
; add x9, x0, x8
|
||||
; add x10, x0, x9
|
||||
; add x11, x0, x10
|
||||
; add x12, x0, x11
|
||||
; add x13, x0, x12
|
||||
; add x14, x0, x13
|
||||
; add x15, x0, x14
|
||||
; add x1, x0, x15
|
||||
; add x2, x0, x1
|
||||
; add x3, x0, x2
|
||||
; add x4, x0, x3
|
||||
; add x27, x0, x4
|
||||
; add x28, x0, x27
|
||||
; add x21, x0, x28
|
||||
; add x5, x0, x5
|
||||
; add x6, x6, x7
|
||||
; add x7, x8, x9
|
||||
; add x8, x10, x11
|
||||
; add x9, x12, x13
|
||||
; add x10, x14, x15
|
||||
; add x11, x1, x2
|
||||
; add x12, x3, x4
|
||||
; add x13, x27, x28
|
||||
; add x5, x21, x5
|
||||
; add x6, x6, x7
|
||||
; add x7, x8, x9
|
||||
; add x8, x10, x11
|
||||
; add x9, x12, x13
|
||||
; add x5, x5, x6
|
||||
; add x6, x7, x8
|
||||
; add x5, x9, x5
|
||||
; add x0, x6, x5
|
||||
; ldp x21, x27, [sp], #0x10
|
||||
; ldr x28, [sp], #0x10
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; ret
|
||||
|
||||
|
||||
@@ -8,8 +8,13 @@ block0(v0: i128):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ret
|
||||
|
||||
function %ireduce_128_32(i128) -> i32 {
|
||||
block0(v0: i128):
|
||||
@@ -17,8 +22,13 @@ block0(v0: i128):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ret
|
||||
|
||||
function %ireduce_128_16(i128) -> i16 {
|
||||
block0(v0: i128):
|
||||
@@ -26,8 +36,13 @@ block0(v0: i128):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ret
|
||||
|
||||
function %ireduce_128_8(i128) -> i8 {
|
||||
block0(v0: i128):
|
||||
@@ -35,6 +50,11 @@ block0(v0: i128):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ret
|
||||
|
||||
|
||||
@@ -7,8 +7,13 @@ block0(v0: r64):
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ret
|
||||
|
||||
function %f1(r64) -> i8 {
|
||||
block0(v0: r64):
|
||||
@@ -16,10 +21,17 @@ block0(v0: r64):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; subs xzr, x0, #0
|
||||
; cset x0, eq
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmp x0, #0
|
||||
; cset x0, eq
|
||||
; ret
|
||||
|
||||
function %f2(r64) -> i8 {
|
||||
block0(v0: r64):
|
||||
@@ -27,10 +39,17 @@ block0(v0: r64):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; adds xzr, x0, #1
|
||||
; cset x0, eq
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmn x0, #1
|
||||
; cset x0, eq
|
||||
; ret
|
||||
|
||||
function %f3() -> r64 {
|
||||
block0:
|
||||
@@ -38,9 +57,15 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movz x0, #0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov x0, #0
|
||||
; ret
|
||||
|
||||
function %f4(r64, r64) -> r64, r64, r64 {
|
||||
fn0 = %f(r64) -> i8
|
||||
@@ -62,6 +87,7 @@ block3(v7: r64, v8: r64):
|
||||
return v7, v8, v9
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
; sub sp, sp, #32
|
||||
@@ -93,4 +119,35 @@ block3(v7: r64, v8: r64):
|
||||
; add sp, sp, #32
|
||||
; ldp fp, lr, [sp], #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; sub sp, sp, #0x20
|
||||
; block0: ; offset 0xc
|
||||
; stur x0, [sp, #8]
|
||||
; stur x1, [sp, #0x10]
|
||||
; ldr x1, #0x1c
|
||||
; b #0x24
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %f 0
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; blr x1
|
||||
; mov x15, sp
|
||||
; ldur x6, [sp, #8]
|
||||
; str x6, [x15]
|
||||
; uxtb w0, w0
|
||||
; cbz x0, #0x48
|
||||
; block1: ; offset 0x3c
|
||||
; mov x0, x6
|
||||
; ldur x1, [sp, #0x10]
|
||||
; b #0x50
|
||||
; block2: ; offset 0x48
|
||||
; mov x1, x6
|
||||
; ldur x0, [sp, #0x10]
|
||||
; block3: ; offset 0x50
|
||||
; mov x2, sp
|
||||
; ldr x2, [x2]
|
||||
; add sp, sp, #0x20
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; ret
|
||||
|
||||
|
||||
@@ -9,10 +9,17 @@ block0(v0: i32, v1: i32, v2: i64, v3: i64):
|
||||
return v6
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; subs wzr, w0, w1
|
||||
; csel x0, x2, x3, eq
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmp w0, w1
|
||||
; csel x0, x2, x3, eq
|
||||
; ret
|
||||
|
||||
function %f0(f32, f32, i64, i64) -> i64 {
|
||||
block0(v0: f32, v1: f32, v2: i64, v3: i64):
|
||||
@@ -22,8 +29,15 @@ block0(v0: f32, v1: f32, v2: i64, v3: i64):
|
||||
return v6
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcmp s0, s1
|
||||
; csel x0, x0, x1, eq
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fcmp s0, s1
|
||||
; csel x0, x0, x1, eq
|
||||
; ret
|
||||
|
||||
|
||||
@@ -10,9 +10,15 @@ block0(v0: i64):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; add x0, x0, x0, LSL 3
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; add x0, x0, x0, lsl #3
|
||||
; ret
|
||||
|
||||
function %f(i32) -> i32 {
|
||||
block0(v0: i32):
|
||||
@@ -21,7 +27,13 @@ block0(v0: i32):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; lsl w0, w0, #21
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; lsl w0, w0, #0x15
|
||||
; ret
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@ block0(v0: i128, v1: i128):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movz x5, #128
|
||||
; sub x7, x5, x2
|
||||
@@ -36,6 +37,32 @@ block0(v0: i128, v1: i128):
|
||||
; orr x1, x8, x9
|
||||
; orr x0, x6, x7
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov x5, #0x80
|
||||
; sub x7, x5, x2
|
||||
; lsr x9, x0, x2
|
||||
; lsr x11, x1, x2
|
||||
; mvn w13, w2
|
||||
; lsl x15, x1, #1
|
||||
; lsl x3, x15, x13
|
||||
; orr x3, x9, x3
|
||||
; tst x2, #0x40
|
||||
; csel x6, x11, x3, ne
|
||||
; csel x8, xzr, x11, ne
|
||||
; lsl x10, x0, x7
|
||||
; lsl x12, x1, x7
|
||||
; mvn w14, w7
|
||||
; lsr x0, x0, #1
|
||||
; lsr x2, x0, x14
|
||||
; orr x4, x12, x2
|
||||
; tst x7, #0x40
|
||||
; csel x7, xzr, x10, ne
|
||||
; csel x9, x10, x4, ne
|
||||
; orr x1, x8, x9
|
||||
; orr x0, x6, x7
|
||||
; ret
|
||||
|
||||
function %f0(i64, i64) -> i64 {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -43,9 +70,15 @@ block0(v0: i64, v1: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ror x0, x0, x1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ror x0, x0, x1
|
||||
; ret
|
||||
|
||||
function %f1(i32, i32) -> i32 {
|
||||
block0(v0: i32, v1: i32):
|
||||
@@ -53,9 +86,15 @@ block0(v0: i32, v1: i32):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ror w0, w0, w1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ror w0, w0, w1
|
||||
; ret
|
||||
|
||||
function %f2(i16, i16) -> i16 {
|
||||
block0(v0: i16, v1: i16):
|
||||
@@ -63,6 +102,7 @@ block0(v0: i16, v1: i16):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uxth w3, w0
|
||||
; and w5, w1, #15
|
||||
@@ -72,6 +112,17 @@ block0(v0: i16, v1: i16):
|
||||
; lsl w13, w3, w9
|
||||
; orr w0, w13, w11
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; uxth w3, w0
|
||||
; and w5, w1, #0xf
|
||||
; sub w7, w5, #0x10
|
||||
; neg w9, w7
|
||||
; lsr w11, w3, w5
|
||||
; lsl w13, w3, w9
|
||||
; orr w0, w13, w11
|
||||
; ret
|
||||
|
||||
function %f3(i8, i8) -> i8 {
|
||||
block0(v0: i8, v1: i8):
|
||||
@@ -79,6 +130,7 @@ block0(v0: i8, v1: i8):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uxtb w3, w0
|
||||
; and w5, w1, #7
|
||||
@@ -88,6 +140,17 @@ block0(v0: i8, v1: i8):
|
||||
; lsl w13, w3, w9
|
||||
; orr w0, w13, w11
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; uxtb w3, w0
|
||||
; and w5, w1, #7
|
||||
; sub w7, w5, #8
|
||||
; neg w9, w7
|
||||
; lsr w11, w3, w5
|
||||
; lsl w13, w3, w9
|
||||
; orr w0, w13, w11
|
||||
; ret
|
||||
|
||||
function %i128_rotl(i128, i128) -> i128 {
|
||||
block0(v0: i128, v1: i128):
|
||||
@@ -95,6 +158,7 @@ block0(v0: i128, v1: i128):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movz x5, #128
|
||||
; sub x7, x5, x2
|
||||
@@ -119,6 +183,32 @@ block0(v0: i128, v1: i128):
|
||||
; orr x0, x6, x7
|
||||
; orr x1, x8, x9
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov x5, #0x80
|
||||
; sub x7, x5, x2
|
||||
; lsl x9, x0, x2
|
||||
; lsl x11, x1, x2
|
||||
; mvn w13, w2
|
||||
; lsr x15, x0, #1
|
||||
; lsr x3, x15, x13
|
||||
; orr x3, x11, x3
|
||||
; tst x2, #0x40
|
||||
; csel x6, xzr, x9, ne
|
||||
; csel x8, x9, x3, ne
|
||||
; lsr x10, x0, x7
|
||||
; lsr x12, x1, x7
|
||||
; mvn w14, w7
|
||||
; lsl x0, x1, #1
|
||||
; lsl x2, x0, x14
|
||||
; orr x4, x10, x2
|
||||
; tst x7, #0x40
|
||||
; csel x7, x12, x4, ne
|
||||
; csel x9, xzr, x12, ne
|
||||
; orr x0, x6, x7
|
||||
; orr x1, x8, x9
|
||||
; ret
|
||||
|
||||
function %f4(i64, i64) -> i64 {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -126,10 +216,17 @@ block0(v0: i64, v1: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sub x3, xzr, x1
|
||||
; ror x0, x0, x3
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; neg x3, x1
|
||||
; ror x0, x0, x3
|
||||
; ret
|
||||
|
||||
function %f5(i32, i32) -> i32 {
|
||||
block0(v0: i32, v1: i32):
|
||||
@@ -137,10 +234,17 @@ block0(v0: i32, v1: i32):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sub w3, wzr, w1
|
||||
; ror w0, w0, w3
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; neg w3, w1
|
||||
; ror w0, w0, w3
|
||||
; ret
|
||||
|
||||
function %f6(i16, i16) -> i16 {
|
||||
block0(v0: i16, v1: i16):
|
||||
@@ -148,6 +252,7 @@ block0(v0: i16, v1: i16):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sub w3, wzr, w1
|
||||
; uxth w5, w0
|
||||
@@ -158,6 +263,18 @@ block0(v0: i16, v1: i16):
|
||||
; lsl w15, w5, w11
|
||||
; orr w0, w15, w13
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; neg w3, w1
|
||||
; uxth w5, w0
|
||||
; and w7, w3, #0xf
|
||||
; sub w9, w7, #0x10
|
||||
; neg w11, w9
|
||||
; lsr w13, w5, w7
|
||||
; lsl w15, w5, w11
|
||||
; orr w0, w15, w13
|
||||
; ret
|
||||
|
||||
function %f7(i8, i8) -> i8 {
|
||||
block0(v0: i8, v1: i8):
|
||||
@@ -165,6 +282,7 @@ block0(v0: i8, v1: i8):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sub w3, wzr, w1
|
||||
; uxtb w5, w0
|
||||
@@ -175,6 +293,18 @@ block0(v0: i8, v1: i8):
|
||||
; lsl w15, w5, w11
|
||||
; orr w0, w15, w13
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; neg w3, w1
|
||||
; uxtb w5, w0
|
||||
; and w7, w3, #7
|
||||
; sub w9, w7, #8
|
||||
; neg w11, w9
|
||||
; lsr w13, w5, w7
|
||||
; lsl w15, w5, w11
|
||||
; orr w0, w15, w13
|
||||
; ret
|
||||
|
||||
function %f8(i64, i64) -> i64 {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -182,9 +312,15 @@ block0(v0: i64, v1: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; lsr x0, x0, x1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; lsr x0, x0, x1
|
||||
; ret
|
||||
|
||||
function %f9(i32, i32) -> i32 {
|
||||
block0(v0: i32, v1: i32):
|
||||
@@ -192,9 +328,15 @@ block0(v0: i32, v1: i32):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; lsr w0, w0, w1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; lsr w0, w0, w1
|
||||
; ret
|
||||
|
||||
function %f10(i16, i16) -> i16 {
|
||||
block0(v0: i16, v1: i16):
|
||||
@@ -202,11 +344,19 @@ block0(v0: i16, v1: i16):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uxth w3, w0
|
||||
; and w5, w1, #15
|
||||
; lsr w0, w3, w5
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; uxth w3, w0
|
||||
; and w5, w1, #0xf
|
||||
; lsr w0, w3, w5
|
||||
; ret
|
||||
|
||||
function %f11(i8, i8) -> i8 {
|
||||
block0(v0: i8, v1: i8):
|
||||
@@ -214,11 +364,19 @@ block0(v0: i8, v1: i8):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uxtb w3, w0
|
||||
; and w5, w1, #7
|
||||
; lsr w0, w3, w5
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; uxtb w3, w0
|
||||
; and w5, w1, #7
|
||||
; lsr w0, w3, w5
|
||||
; ret
|
||||
|
||||
function %f12(i64, i64) -> i64 {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -226,9 +384,15 @@ block0(v0: i64, v1: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; lsl x0, x0, x1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; lsl x0, x0, x1
|
||||
; ret
|
||||
|
||||
function %f13(i32, i32) -> i32 {
|
||||
block0(v0: i32, v1: i32):
|
||||
@@ -236,9 +400,15 @@ block0(v0: i32, v1: i32):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; lsl w0, w0, w1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; lsl w0, w0, w1
|
||||
; ret
|
||||
|
||||
function %f14(i16, i16) -> i16 {
|
||||
block0(v0: i16, v1: i16):
|
||||
@@ -246,10 +416,17 @@ block0(v0: i16, v1: i16):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; and w3, w1, #15
|
||||
; lsl w0, w0, w3
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; and w3, w1, #0xf
|
||||
; lsl w0, w0, w3
|
||||
; ret
|
||||
|
||||
function %f15(i8, i8) -> i8 {
|
||||
block0(v0: i8, v1: i8):
|
||||
@@ -257,10 +434,17 @@ block0(v0: i8, v1: i8):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; and w3, w1, #7
|
||||
; lsl w0, w0, w3
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; and w3, w1, #7
|
||||
; lsl w0, w0, w3
|
||||
; ret
|
||||
|
||||
function %f16(i64, i64) -> i64 {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -268,9 +452,15 @@ block0(v0: i64, v1: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; asr x0, x0, x1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; asr x0, x0, x1
|
||||
; ret
|
||||
|
||||
function %f17(i32, i32) -> i32 {
|
||||
block0(v0: i32, v1: i32):
|
||||
@@ -278,9 +468,15 @@ block0(v0: i32, v1: i32):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; asr w0, w0, w1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; asr w0, w0, w1
|
||||
; ret
|
||||
|
||||
function %f18(i16, i16) -> i16 {
|
||||
block0(v0: i16, v1: i16):
|
||||
@@ -288,11 +484,19 @@ block0(v0: i16, v1: i16):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sxth w3, w0
|
||||
; and w5, w1, #15
|
||||
; asr w0, w3, w5
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; sxth w3, w0
|
||||
; and w5, w1, #0xf
|
||||
; asr w0, w3, w5
|
||||
; ret
|
||||
|
||||
function %f19(i8, i8) -> i8 {
|
||||
block0(v0: i8, v1: i8):
|
||||
@@ -300,11 +504,19 @@ block0(v0: i8, v1: i8):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sxtb w3, w0
|
||||
; and w5, w1, #7
|
||||
; asr w0, w3, w5
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; sxtb w3, w0
|
||||
; and w5, w1, #7
|
||||
; asr w0, w3, w5
|
||||
; ret
|
||||
|
||||
function %f20(i64) -> i64 {
|
||||
block0(v0: i64):
|
||||
@@ -313,9 +525,15 @@ block0(v0: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ror x0, x0, #17
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ror x0, x0, #0x11
|
||||
; ret
|
||||
|
||||
function %f21(i64) -> i64 {
|
||||
block0(v0: i64):
|
||||
@@ -324,9 +542,15 @@ block0(v0: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ror x0, x0, #47
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ror x0, x0, #0x2f
|
||||
; ret
|
||||
|
||||
function %f22(i32) -> i32 {
|
||||
block0(v0: i32):
|
||||
@@ -335,9 +559,15 @@ block0(v0: i32):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ror w0, w0, #15
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ror w0, w0, #0xf
|
||||
; ret
|
||||
|
||||
function %f23(i16) -> i16 {
|
||||
block0(v0: i16):
|
||||
@@ -346,12 +576,21 @@ block0(v0: i16):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uxth w2, w0
|
||||
; lsr w4, w2, #6
|
||||
; lsl w6, w2, #10
|
||||
; orr w0, w6, w4
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; uxth w2, w0
|
||||
; lsr w4, w2, #6
|
||||
; lsl w6, w2, #0xa
|
||||
; orr w0, w6, w4
|
||||
; ret
|
||||
|
||||
function %f24(i8) -> i8 {
|
||||
block0(v0: i8):
|
||||
@@ -360,12 +599,21 @@ block0(v0: i8):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uxtb w2, w0
|
||||
; lsr w4, w2, #5
|
||||
; lsl w6, w2, #3
|
||||
; orr w0, w6, w4
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; uxtb w2, w0
|
||||
; lsr w4, w2, #5
|
||||
; lsl w6, w2, #3
|
||||
; orr w0, w6, w4
|
||||
; ret
|
||||
|
||||
function %f25(i64) -> i64 {
|
||||
block0(v0: i64):
|
||||
@@ -374,9 +622,15 @@ block0(v0: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; lsr x0, x0, #17
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; lsr x0, x0, #0x11
|
||||
; ret
|
||||
|
||||
function %f26(i64) -> i64 {
|
||||
block0(v0: i64):
|
||||
@@ -385,9 +639,15 @@ block0(v0: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; asr x0, x0, #17
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; asr x0, x0, #0x11
|
||||
; ret
|
||||
|
||||
function %f27(i64) -> i64 {
|
||||
block0(v0: i64):
|
||||
@@ -396,7 +656,13 @@ block0(v0: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; lsl x0, x0, #17
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; lsl x0, x0, #0x11
|
||||
; ret
|
||||
|
||||
|
||||
@@ -8,9 +8,15 @@ block0(v0: i8x8, v1: i8x8):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; urhadd v0.8b, v0.8b, v1.8b
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; urhadd v0.8b, v0.8b, v1.8b
|
||||
; ret
|
||||
|
||||
function %average_rounding_i8x16(i8x16, i8x16) -> i8x16 {
|
||||
block0(v0: i8x16, v1: i8x16):
|
||||
@@ -18,9 +24,15 @@ block0(v0: i8x16, v1: i8x16):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; urhadd v0.16b, v0.16b, v1.16b
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; urhadd v0.16b, v0.16b, v1.16b
|
||||
; ret
|
||||
|
||||
function %average_rounding_i16x4(i16x4, i16x4) -> i16x4 {
|
||||
block0(v0: i16x4, v1: i16x4):
|
||||
@@ -28,9 +40,15 @@ block0(v0: i16x4, v1: i16x4):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; urhadd v0.4h, v0.4h, v1.4h
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; urhadd v0.4h, v0.4h, v1.4h
|
||||
; ret
|
||||
|
||||
function %average_rounding_i16x8(i16x8, i16x8) -> i16x8 {
|
||||
block0(v0: i16x8, v1: i16x8):
|
||||
@@ -38,9 +56,15 @@ block0(v0: i16x8, v1: i16x8):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; urhadd v0.8h, v0.8h, v1.8h
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; urhadd v0.8h, v0.8h, v1.8h
|
||||
; ret
|
||||
|
||||
function %average_rounding_i32x2(i32x2, i32x2) -> i32x2 {
|
||||
block0(v0: i32x2, v1: i32x2):
|
||||
@@ -48,9 +72,15 @@ block0(v0: i32x2, v1: i32x2):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; urhadd v0.2s, v0.2s, v1.2s
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; urhadd v0.2s, v0.2s, v1.2s
|
||||
; ret
|
||||
|
||||
function %average_rounding_i32x4(i32x4, i32x4) -> i32x4 {
|
||||
block0(v0: i32x4, v1: i32x4):
|
||||
@@ -58,9 +88,15 @@ block0(v0: i32x4, v1: i32x4):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; urhadd v0.4s, v0.4s, v1.4s
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; urhadd v0.4s, v0.4s, v1.4s
|
||||
; ret
|
||||
|
||||
function %average_rounding_i64x2(i64x2, i64x2) -> i64x2 {
|
||||
block0(v0: i64x2, v1: i64x2):
|
||||
@@ -68,6 +104,7 @@ block0(v0: i64x2, v1: i64x2):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movz x4, #1
|
||||
; dup v4.2d, x4
|
||||
@@ -78,4 +115,16 @@ block0(v0: i64x2, v1: i64x2):
|
||||
; add v23.2d, v19.2d, v21.2d
|
||||
; add v0.2d, v17.2d, v23.2d
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov x4, #1
|
||||
; dup v4.2d, x4
|
||||
; orr v7.16b, v0.16b, v1.16b
|
||||
; and v17.16b, v7.16b, v4.16b
|
||||
; ushr v19.2d, v0.2d, #1
|
||||
; ushr v21.2d, v1.2d, #1
|
||||
; add v23.2d, v19.2d, v21.2d
|
||||
; add v0.2d, v17.2d, v23.2d
|
||||
; ret
|
||||
|
||||
|
||||
@@ -8,9 +8,15 @@ block0(v0: f32x4, v1: f32x4):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; and v0.16b, v0.16b, v1.16b
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; and v0.16b, v0.16b, v1.16b
|
||||
; ret
|
||||
|
||||
function %band_f64x2(f64x2, f64x2) -> f64x2 {
|
||||
block0(v0: f64x2, v1: f64x2):
|
||||
@@ -18,9 +24,15 @@ block0(v0: f64x2, v1: f64x2):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; and v0.16b, v0.16b, v1.16b
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; and v0.16b, v0.16b, v1.16b
|
||||
; ret
|
||||
|
||||
function %band_i32x4(i32x4, i32x4) -> i32x4 {
|
||||
block0(v0: i32x4, v1: i32x4):
|
||||
@@ -28,9 +40,15 @@ block0(v0: i32x4, v1: i32x4):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; and v0.16b, v0.16b, v1.16b
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; and v0.16b, v0.16b, v1.16b
|
||||
; ret
|
||||
|
||||
function %bor_f32x4(f32x4, f32x4) -> f32x4 {
|
||||
block0(v0: f32x4, v1: f32x4):
|
||||
@@ -38,9 +56,15 @@ block0(v0: f32x4, v1: f32x4):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; orr v0.16b, v0.16b, v1.16b
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; orr v0.16b, v0.16b, v1.16b
|
||||
; ret
|
||||
|
||||
function %bor_f64x2(f64x2, f64x2) -> f64x2 {
|
||||
block0(v0: f64x2, v1: f64x2):
|
||||
@@ -48,9 +72,15 @@ block0(v0: f64x2, v1: f64x2):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; orr v0.16b, v0.16b, v1.16b
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; orr v0.16b, v0.16b, v1.16b
|
||||
; ret
|
||||
|
||||
function %bor_i32x4(i32x4, i32x4) -> i32x4 {
|
||||
block0(v0: i32x4, v1: i32x4):
|
||||
@@ -58,9 +88,15 @@ block0(v0: i32x4, v1: i32x4):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; orr v0.16b, v0.16b, v1.16b
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; orr v0.16b, v0.16b, v1.16b
|
||||
; ret
|
||||
|
||||
function %bxor_f32x4(f32x4, f32x4) -> f32x4 {
|
||||
block0(v0: f32x4, v1: f32x4):
|
||||
@@ -68,9 +104,15 @@ block0(v0: f32x4, v1: f32x4):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; eor v0.16b, v0.16b, v1.16b
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; eor v0.16b, v0.16b, v1.16b
|
||||
; ret
|
||||
|
||||
function %bxor_f64x2(f64x2, f64x2) -> f64x2 {
|
||||
block0(v0: f64x2, v1: f64x2):
|
||||
@@ -78,9 +120,15 @@ block0(v0: f64x2, v1: f64x2):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; eor v0.16b, v0.16b, v1.16b
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; eor v0.16b, v0.16b, v1.16b
|
||||
; ret
|
||||
|
||||
function %bxor_i32x4(i32x4, i32x4) -> i32x4 {
|
||||
block0(v0: i32x4, v1: i32x4):
|
||||
@@ -88,9 +136,15 @@ block0(v0: i32x4, v1: i32x4):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; eor v0.16b, v0.16b, v1.16b
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; eor v0.16b, v0.16b, v1.16b
|
||||
; ret
|
||||
|
||||
function %bitselect_i16x8() -> i16x8 {
|
||||
block0:
|
||||
@@ -101,12 +155,21 @@ block0:
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movi v0.16b, #0
|
||||
; movi v3.16b, #0
|
||||
; movi v4.16b, #0
|
||||
; bsl v0.16b, v0.16b, v3.16b, v4.16b
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; movi v0.16b, #0
|
||||
; movi v3.16b, #0
|
||||
; movi v4.16b, #0
|
||||
; bsl v0.16b, v3.16b, v4.16b
|
||||
; ret
|
||||
|
||||
function %vselect_i16x8(i16x8, i16x8, i16x8) -> i16x8 {
|
||||
block0(v0: i16x8, v1: i16x8, v2: i16x8):
|
||||
@@ -114,9 +177,15 @@ block0(v0: i16x8, v1: i16x8, v2: i16x8):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; bsl v0.16b, v0.16b, v1.16b, v2.16b
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; bsl v0.16b, v1.16b, v2.16b
|
||||
; ret
|
||||
|
||||
function %vselect_f32x4(i32x4, f32x4, f32x4) -> f32x4 {
|
||||
block0(v0: i32x4, v1: f32x4, v2: f32x4):
|
||||
@@ -124,9 +193,15 @@ block0(v0: i32x4, v1: f32x4, v2: f32x4):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; bsl v0.16b, v0.16b, v1.16b, v2.16b
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; bsl v0.16b, v1.16b, v2.16b
|
||||
; ret
|
||||
|
||||
function %vselect_f64x2(i64x2, f64x2, f64x2) -> f64x2 {
|
||||
block0(v0: i64x2, v1: f64x2, v2: f64x2):
|
||||
@@ -134,9 +209,15 @@ block0(v0: i64x2, v1: f64x2, v2: f64x2):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; bsl v0.16b, v0.16b, v1.16b, v2.16b
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; bsl v0.16b, v1.16b, v2.16b
|
||||
; ret
|
||||
|
||||
function %ishl_i8x16(i32) -> i8x16 {
|
||||
block0(v0: i32):
|
||||
@@ -145,12 +226,26 @@ block0(v0: i32):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ldr q5, pc+8 ; b 20 ; data.f128 0x0f0e0d0c0b0a09080706050403020100
|
||||
; and w3, w0, #7
|
||||
; dup v6.16b, w3
|
||||
; sshl v0.16b, v5.16b, v6.16b
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ldr q5, #8
|
||||
; b #0x18
|
||||
; .byte 0x00, 0x01, 0x02, 0x03
|
||||
; .byte 0x04, 0x05, 0x06, 0x07
|
||||
; add w8, w8, w10, lsl #2
|
||||
; .byte 0x0c, 0x0d, 0x0e, 0x0f
|
||||
; and w3, w0, #7
|
||||
; dup v6.16b, w3
|
||||
; sshl v0.16b, v5.16b, v6.16b
|
||||
; ret
|
||||
|
||||
function %ushr_i8x16_imm() -> i8x16 {
|
||||
block0:
|
||||
@@ -160,6 +255,7 @@ block0:
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ldr q5, pc+8 ; b 20 ; data.f128 0x0f0e0d0c0b0a09080706050403020100
|
||||
; movz w1, #1
|
||||
@@ -168,6 +264,21 @@ block0:
|
||||
; dup v7.16b, w5
|
||||
; ushl v0.16b, v5.16b, v7.16b
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ldr q5, #8
|
||||
; b #0x18
|
||||
; .byte 0x00, 0x01, 0x02, 0x03
|
||||
; .byte 0x04, 0x05, 0x06, 0x07
|
||||
; add w8, w8, w10, lsl #2
|
||||
; .byte 0x0c, 0x0d, 0x0e, 0x0f
|
||||
; mov w1, #1
|
||||
; and w3, w1, #7
|
||||
; neg x5, x3
|
||||
; dup v7.16b, w5
|
||||
; ushl v0.16b, v5.16b, v7.16b
|
||||
; ret
|
||||
|
||||
function %sshr_i8x16(i32) -> i8x16 {
|
||||
block0(v0: i32):
|
||||
@@ -176,6 +287,7 @@ block0(v0: i32):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ldr q6, pc+8 ; b 20 ; data.f128 0x0f0e0d0c0b0a09080706050403020100
|
||||
; and w3, w0, #7
|
||||
@@ -183,6 +295,20 @@ block0(v0: i32):
|
||||
; dup v7.16b, w5
|
||||
; sshl v0.16b, v6.16b, v7.16b
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ldr q6, #8
|
||||
; b #0x18
|
||||
; .byte 0x00, 0x01, 0x02, 0x03
|
||||
; .byte 0x04, 0x05, 0x06, 0x07
|
||||
; add w8, w8, w10, lsl #2
|
||||
; .byte 0x0c, 0x0d, 0x0e, 0x0f
|
||||
; and w3, w0, #7
|
||||
; neg x5, x3
|
||||
; dup v7.16b, w5
|
||||
; sshl v0.16b, v6.16b, v7.16b
|
||||
; ret
|
||||
|
||||
function %sshr_i8x16_imm(i8x16, i32) -> i8x16 {
|
||||
block0(v0: i8x16, v1: i32):
|
||||
@@ -190,6 +316,7 @@ block0(v0: i8x16, v1: i32):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movz w3, #3
|
||||
; and w5, w3, #7
|
||||
@@ -197,6 +324,15 @@ block0(v0: i8x16, v1: i32):
|
||||
; dup v17.16b, w7
|
||||
; sshl v0.16b, v0.16b, v17.16b
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov w3, #3
|
||||
; and w5, w3, #7
|
||||
; neg x7, x5
|
||||
; dup v17.16b, w7
|
||||
; sshl v0.16b, v0.16b, v17.16b
|
||||
; ret
|
||||
|
||||
function %sshr_i64x2(i64x2, i32) -> i64x2 {
|
||||
block0(v0: i64x2, v1: i32):
|
||||
@@ -204,10 +340,19 @@ block0(v0: i64x2, v1: i32):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; and w3, w0, #63
|
||||
; sub x5, xzr, x3
|
||||
; dup v7.2d, x5
|
||||
; sshl v0.2d, v0.2d, v7.2d
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; and w3, w0, #0x3f
|
||||
; neg x5, x3
|
||||
; dup v7.2d, x5
|
||||
; sshl v0.2d, v0.2d, v7.2d
|
||||
; ret
|
||||
|
||||
|
||||
@@ -8,10 +8,17 @@ block0(v0: i32x4, v1: i32x4):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; cmeq v3.4s, v0.4s, v1.4s
|
||||
; mvn v0.16b, v3.16b
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmeq v3.4s, v0.4s, v1.4s
|
||||
; mvn v0.16b, v3.16b
|
||||
; ret
|
||||
|
||||
function %icmp_ugt_i32x4(i32x4, i32x4) -> i32x4 {
|
||||
block0(v0: i32x4, v1: i32x4):
|
||||
@@ -19,9 +26,15 @@ block0(v0: i32x4, v1: i32x4):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; cmhi v0.4s, v0.4s, v1.4s
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmhi v0.4s, v0.4s, v1.4s
|
||||
; ret
|
||||
|
||||
function %icmp_sge_i16x8(i16x8, i16x8) -> i16x8 {
|
||||
block0(v0: i16x8, v1: i16x8):
|
||||
@@ -29,9 +42,15 @@ block0(v0: i16x8, v1: i16x8):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; cmge v0.8h, v0.8h, v1.8h
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmge v0.8h, v0.8h, v1.8h
|
||||
; ret
|
||||
|
||||
function %icmp_uge_i8x16(i8x16, i8x16) -> i8x16 {
|
||||
block0(v0: i8x16, v1: i8x16):
|
||||
@@ -39,7 +58,13 @@ block0(v0: i8x16, v1: i8x16):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; cmhs v0.16b, v0.16b, v1.16b
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmhs v0.16b, v0.16b, v1.16b
|
||||
; ret
|
||||
|
||||
|
||||
@@ -10,9 +10,15 @@ block0(v0: i8x16, v1: i8x16):
|
||||
return v4
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; smull v0.8h, v0.8b, v1.8b
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; smull v0.8h, v0.8b, v1.8b
|
||||
; ret
|
||||
|
||||
function %fn2(i8x16, i8x16) -> i16x8 {
|
||||
block0(v0: i8x16, v1: i8x16):
|
||||
@@ -22,9 +28,15 @@ block0(v0: i8x16, v1: i8x16):
|
||||
return v4
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; smull2 v0.8h, v0.16b, v1.16b
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; smull2 v0.8h, v0.16b, v1.16b
|
||||
; ret
|
||||
|
||||
function %fn3(i16x8, i16x8) -> i32x4 {
|
||||
block0(v0: i16x8, v1: i16x8):
|
||||
@@ -34,9 +46,15 @@ block0(v0: i16x8, v1: i16x8):
|
||||
return v4
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; smull v0.4s, v0.4h, v1.4h
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; smull v0.4s, v0.4h, v1.4h
|
||||
; ret
|
||||
|
||||
function %fn4(i16x8, i16x8) -> i32x4 {
|
||||
block0(v0: i16x8, v1: i16x8):
|
||||
@@ -46,9 +64,15 @@ block0(v0: i16x8, v1: i16x8):
|
||||
return v4
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; smull2 v0.4s, v0.8h, v1.8h
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; smull2 v0.4s, v0.8h, v1.8h
|
||||
; ret
|
||||
|
||||
function %fn5(i32x4, i32x4) -> i64x2 {
|
||||
block0(v0: i32x4, v1: i32x4):
|
||||
@@ -58,9 +82,15 @@ block0(v0: i32x4, v1: i32x4):
|
||||
return v4
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; smull v0.2d, v0.2s, v1.2s
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; smull v0.2d, v0.2s, v1.2s
|
||||
; ret
|
||||
|
||||
function %fn6(i32x4, i32x4) -> i64x2 {
|
||||
block0(v0: i32x4, v1: i32x4):
|
||||
@@ -70,9 +100,15 @@ block0(v0: i32x4, v1: i32x4):
|
||||
return v4
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; smull2 v0.2d, v0.4s, v1.4s
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; smull2 v0.2d, v0.4s, v1.4s
|
||||
; ret
|
||||
|
||||
function %fn7(i8x16, i8x16) -> i16x8 {
|
||||
block0(v0: i8x16, v1: i8x16):
|
||||
@@ -82,9 +118,15 @@ block0(v0: i8x16, v1: i8x16):
|
||||
return v4
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; umull v0.8h, v0.8b, v1.8b
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; umull v0.8h, v0.8b, v1.8b
|
||||
; ret
|
||||
|
||||
function %fn8(i8x16, i8x16) -> i16x8 {
|
||||
block0(v0: i8x16, v1: i8x16):
|
||||
@@ -94,9 +136,15 @@ block0(v0: i8x16, v1: i8x16):
|
||||
return v4
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; umull2 v0.8h, v0.16b, v1.16b
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; umull2 v0.8h, v0.16b, v1.16b
|
||||
; ret
|
||||
|
||||
function %fn9(i16x8, i16x8) -> i32x4 {
|
||||
block0(v0: i16x8, v1: i16x8):
|
||||
@@ -106,9 +154,15 @@ block0(v0: i16x8, v1: i16x8):
|
||||
return v4
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; umull v0.4s, v0.4h, v1.4h
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; umull v0.4s, v0.4h, v1.4h
|
||||
; ret
|
||||
|
||||
function %fn10(i16x8, i16x8) -> i32x4 {
|
||||
block0(v0: i16x8, v1: i16x8):
|
||||
@@ -118,9 +172,15 @@ block0(v0: i16x8, v1: i16x8):
|
||||
return v4
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; umull2 v0.4s, v0.8h, v1.8h
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; umull2 v0.4s, v0.8h, v1.8h
|
||||
; ret
|
||||
|
||||
function %fn11(i32x4, i32x4) -> i64x2 {
|
||||
block0(v0: i32x4, v1: i32x4):
|
||||
@@ -130,9 +190,15 @@ block0(v0: i32x4, v1: i32x4):
|
||||
return v4
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; umull v0.2d, v0.2s, v1.2s
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; umull v0.2d, v0.2s, v1.2s
|
||||
; ret
|
||||
|
||||
function %fn12(i32x4, i32x4) -> i64x2 {
|
||||
block0(v0: i32x4, v1: i32x4):
|
||||
@@ -142,7 +208,13 @@ block0(v0: i32x4, v1: i32x4):
|
||||
return v4
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; umull2 v0.2d, v0.4s, v1.4s
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; umull2 v0.2d, v0.4s, v1.4s
|
||||
; ret
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@ block0:
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movi v30.16b, #0
|
||||
; movz x4, #1
|
||||
@@ -19,6 +20,20 @@ block0:
|
||||
; ldr q3, pc+8 ; b 20 ; data.f128 0x11000000000000000000000000000000
|
||||
; tbl v0.16b, { v30.16b, v31.16b }, v3.16b
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; movi v30.16b, #0
|
||||
; mov x4, #1
|
||||
; fmov s31, w4
|
||||
; ldr q3, #0x14
|
||||
; b #0x24
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; add w0, w0, #0
|
||||
; tbl v0.16b, {v30.16b, v31.16b}, v3.16b
|
||||
; ret
|
||||
|
||||
function %shuffle_same_ssa_value() -> i8x16 {
|
||||
block0:
|
||||
@@ -27,6 +42,7 @@ block0:
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movz x3, #1
|
||||
; fmov s31, w3
|
||||
@@ -34,6 +50,20 @@ block0:
|
||||
; mov v30.16b, v31.16b
|
||||
; tbl v0.16b, { v30.16b, v31.16b }, v2.16b
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov x3, #1
|
||||
; fmov s31, w3
|
||||
; ldr q2, #0x10
|
||||
; b #0x20
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; sbfx w0, w0, #0, #1
|
||||
; mov v30.16b, v31.16b
|
||||
; tbl v0.16b, {v30.16b, v31.16b}, v2.16b
|
||||
; ret
|
||||
|
||||
function %swizzle() -> i8x16 {
|
||||
block0:
|
||||
@@ -43,11 +73,29 @@ block0:
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ldr q2, pc+8 ; b 20 ; data.f128 0x0f0e0d0c0b0a09080706050403020100
|
||||
; ldr q3, pc+8 ; b 20 ; data.f128 0x0f0e0d0c0b0a09080706050403020100
|
||||
; tbl v0.16b, { v2.16b }, v3.16b
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ldr q2, #8
|
||||
; b #0x18
|
||||
; .byte 0x00, 0x01, 0x02, 0x03
|
||||
; .byte 0x04, 0x05, 0x06, 0x07
|
||||
; add w8, w8, w10, lsl #2
|
||||
; .byte 0x0c, 0x0d, 0x0e, 0x0f
|
||||
; ldr q3, #0x20
|
||||
; b #0x30
|
||||
; .byte 0x00, 0x01, 0x02, 0x03
|
||||
; .byte 0x04, 0x05, 0x06, 0x07
|
||||
; add w8, w8, w10, lsl #2
|
||||
; .byte 0x0c, 0x0d, 0x0e, 0x0f
|
||||
; tbl v0.16b, {v2.16b}, v3.16b
|
||||
; ret
|
||||
|
||||
function %splat_i8(i8) -> i8x16 {
|
||||
block0(v0: i8):
|
||||
@@ -55,9 +103,15 @@ block0(v0: i8):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; dup v0.16b, w0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; dup v0.16b, w0
|
||||
; ret
|
||||
|
||||
function %splat_i16() -> i16x8 {
|
||||
block0:
|
||||
@@ -66,9 +120,15 @@ block0:
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movi v0.16b, #255
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; movi v0.16b, #0xff
|
||||
; ret
|
||||
|
||||
function %splat_i32(i32) -> i32x4 {
|
||||
block0(v0: i32):
|
||||
@@ -76,9 +136,15 @@ block0(v0: i32):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; dup v0.4s, w0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; dup v0.4s, w0
|
||||
; ret
|
||||
|
||||
function %splat_f64(f64) -> f64x2 {
|
||||
block0(v0: f64):
|
||||
@@ -86,9 +152,15 @@ block0(v0: f64):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; dup v0.2d, v0.d[0]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; dup v0.2d, v0.d[0]
|
||||
; ret
|
||||
|
||||
function %load32_zero_coalesced(i64) -> i32x4 {
|
||||
block0(v0: i64):
|
||||
@@ -97,10 +169,17 @@ block0(v0: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ldr w3, [x0]
|
||||
; fmov s0, w3
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ldr w3, [x0]
|
||||
; fmov s0, w3
|
||||
; ret
|
||||
|
||||
function %load32_zero_int(i32) -> i32x4 {
|
||||
block0(v0: i32):
|
||||
@@ -108,9 +187,15 @@ block0(v0: i32):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fmov s0, w0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fmov s0, w0
|
||||
; ret
|
||||
|
||||
function %load32_zero_float(f32) -> f32x4 {
|
||||
block0(v0: f32):
|
||||
@@ -118,7 +203,13 @@ block0(v0: f32):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fmov s0, s0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fmov s0, s0
|
||||
; ret
|
||||
|
||||
|
||||
@@ -8,9 +8,15 @@ block0(v0: i32x4):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; mvn v0.16b, v0.16b
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mvn v0.16b, v0.16b
|
||||
; ret
|
||||
|
||||
function %vany_true_i32x4(i32x4) -> i8 {
|
||||
block0(v0: i32x4):
|
||||
@@ -18,12 +24,21 @@ block0(v0: i32x4):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; umaxp v2.4s, v0.4s, v0.4s
|
||||
; mov x4, v2.d[0]
|
||||
; subs xzr, x4, #0
|
||||
; cset x0, ne
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; umaxp v2.4s, v0.4s, v0.4s
|
||||
; mov x4, v2.d[0]
|
||||
; cmp x4, #0
|
||||
; cset x0, ne
|
||||
; ret
|
||||
|
||||
function %vall_true_i64x2(i64x2) -> i8 {
|
||||
block0(v0: i64x2):
|
||||
@@ -31,10 +46,19 @@ block0(v0: i64x2):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; cmeq v2.2d, v0.2d, #0
|
||||
; addp v4.2d, v2.2d, v2.2d
|
||||
; fcmp d4, d4
|
||||
; cset x0, eq
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmeq v2.2d, v0.2d, #0
|
||||
; addp v4.2d, v2.2d, v2.2d
|
||||
; fcmp d4, d4
|
||||
; cset x0, eq
|
||||
; ret
|
||||
|
||||
|
||||
@@ -8,9 +8,15 @@ block0(v0: i8x8, v1: i8x8):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; smin v0.8b, v0.8b, v1.8b
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; smin v0.8b, v0.8b, v1.8b
|
||||
; ret
|
||||
|
||||
function %fn1(i8x16, i8x16) -> i8x16 {
|
||||
block0(v0: i8x16, v1: i8x16):
|
||||
@@ -18,9 +24,15 @@ block0(v0: i8x16, v1: i8x16):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; smin v0.16b, v0.16b, v1.16b
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; smin v0.16b, v0.16b, v1.16b
|
||||
; ret
|
||||
|
||||
function %fn2(i16x4, i16x4) -> i16x4 {
|
||||
block0(v0: i16x4, v1: i16x4):
|
||||
@@ -28,9 +40,15 @@ block0(v0: i16x4, v1: i16x4):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; smin v0.4h, v0.4h, v1.4h
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; smin v0.4h, v0.4h, v1.4h
|
||||
; ret
|
||||
|
||||
function %fn3(i16x8, i16x8) -> i16x8 {
|
||||
block0(v0: i16x8, v1: i16x8):
|
||||
@@ -38,9 +56,15 @@ block0(v0: i16x8, v1: i16x8):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; smin v0.8h, v0.8h, v1.8h
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; smin v0.8h, v0.8h, v1.8h
|
||||
; ret
|
||||
|
||||
function %fn4(i32x2, i32x2) -> i32x2 {
|
||||
block0(v0: i32x2, v1: i32x2):
|
||||
@@ -48,9 +72,15 @@ block0(v0: i32x2, v1: i32x2):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; smin v0.2s, v0.2s, v1.2s
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; smin v0.2s, v0.2s, v1.2s
|
||||
; ret
|
||||
|
||||
function %fn5(i32x4, i32x4) -> i32x4 {
|
||||
block0(v0: i32x4, v1: i32x4):
|
||||
@@ -58,9 +88,15 @@ block0(v0: i32x4, v1: i32x4):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; smin v0.4s, v0.4s, v1.4s
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; smin v0.4s, v0.4s, v1.4s
|
||||
; ret
|
||||
|
||||
function %fn6(i8x8, i8x8) -> i8x8 {
|
||||
block0(v0: i8x8, v1: i8x8):
|
||||
@@ -68,9 +104,15 @@ block0(v0: i8x8, v1: i8x8):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; umin v0.8b, v0.8b, v1.8b
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; umin v0.8b, v0.8b, v1.8b
|
||||
; ret
|
||||
|
||||
function %fn7(i8x16, i8x16) -> i8x16 {
|
||||
block0(v0: i8x16, v1: i8x16):
|
||||
@@ -78,9 +120,15 @@ block0(v0: i8x16, v1: i8x16):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; umin v0.16b, v0.16b, v1.16b
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; umin v0.16b, v0.16b, v1.16b
|
||||
; ret
|
||||
|
||||
function %fn8(i16x4, i16x4) -> i16x4 {
|
||||
block0(v0: i16x4, v1: i16x4):
|
||||
@@ -88,9 +136,15 @@ block0(v0: i16x4, v1: i16x4):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; umin v0.4h, v0.4h, v1.4h
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; umin v0.4h, v0.4h, v1.4h
|
||||
; ret
|
||||
|
||||
function %fn9(i16x8, i16x8) -> i16x8 {
|
||||
block0(v0: i16x8, v1: i16x8):
|
||||
@@ -98,9 +152,15 @@ block0(v0: i16x8, v1: i16x8):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; umin v0.8h, v0.8h, v1.8h
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; umin v0.8h, v0.8h, v1.8h
|
||||
; ret
|
||||
|
||||
function %fn10(i32x2, i32x2) -> i32x2 {
|
||||
block0(v0: i32x2, v1: i32x2):
|
||||
@@ -108,9 +168,15 @@ block0(v0: i32x2, v1: i32x2):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; umin v0.2s, v0.2s, v1.2s
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; umin v0.2s, v0.2s, v1.2s
|
||||
; ret
|
||||
|
||||
function %fn11(i32x4, i32x4) -> i32x4 {
|
||||
block0(v0: i32x4, v1: i32x4):
|
||||
@@ -118,9 +184,15 @@ block0(v0: i32x4, v1: i32x4):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; umin v0.4s, v0.4s, v1.4s
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; umin v0.4s, v0.4s, v1.4s
|
||||
; ret
|
||||
|
||||
function %fn12(i8x8, i8x8) -> i8x8 {
|
||||
block0(v0: i8x8, v1: i8x8):
|
||||
@@ -128,9 +200,15 @@ block0(v0: i8x8, v1: i8x8):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; smax v0.8b, v0.8b, v1.8b
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; smax v0.8b, v0.8b, v1.8b
|
||||
; ret
|
||||
|
||||
function %fn13(i8x16, i8x16) -> i8x16 {
|
||||
block0(v0: i8x16, v1: i8x16):
|
||||
@@ -138,9 +216,15 @@ block0(v0: i8x16, v1: i8x16):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; smax v0.16b, v0.16b, v1.16b
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; smax v0.16b, v0.16b, v1.16b
|
||||
; ret
|
||||
|
||||
function %fn14(i16x4, i16x4) -> i16x4 {
|
||||
block0(v0: i16x4, v1: i16x4):
|
||||
@@ -148,9 +232,15 @@ block0(v0: i16x4, v1: i16x4):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; smax v0.4h, v0.4h, v1.4h
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; smax v0.4h, v0.4h, v1.4h
|
||||
; ret
|
||||
|
||||
function %fn15(i16x8, i16x8) -> i16x8 {
|
||||
block0(v0: i16x8, v1: i16x8):
|
||||
@@ -158,9 +248,15 @@ block0(v0: i16x8, v1: i16x8):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; smax v0.8h, v0.8h, v1.8h
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; smax v0.8h, v0.8h, v1.8h
|
||||
; ret
|
||||
|
||||
function %fn16(i32x2, i32x2) -> i32x2 {
|
||||
block0(v0: i32x2, v1: i32x2):
|
||||
@@ -168,9 +264,15 @@ block0(v0: i32x2, v1: i32x2):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; smax v0.2s, v0.2s, v1.2s
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; smax v0.2s, v0.2s, v1.2s
|
||||
; ret
|
||||
|
||||
function %fn17(i32x4, i32x4) -> i32x4 {
|
||||
block0(v0: i32x4, v1: i32x4):
|
||||
@@ -178,9 +280,15 @@ block0(v0: i32x4, v1: i32x4):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; smax v0.4s, v0.4s, v1.4s
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; smax v0.4s, v0.4s, v1.4s
|
||||
; ret
|
||||
|
||||
function %fn18(i8x8, i8x8) -> i8x8 {
|
||||
block0(v0: i8x8, v1: i8x8):
|
||||
@@ -188,9 +296,15 @@ block0(v0: i8x8, v1: i8x8):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; umax v0.8b, v0.8b, v1.8b
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; umax v0.8b, v0.8b, v1.8b
|
||||
; ret
|
||||
|
||||
function %fn19(i8x16, i8x16) -> i8x16 {
|
||||
block0(v0: i8x16, v1: i8x16):
|
||||
@@ -198,9 +312,15 @@ block0(v0: i8x16, v1: i8x16):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; umax v0.16b, v0.16b, v1.16b
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; umax v0.16b, v0.16b, v1.16b
|
||||
; ret
|
||||
|
||||
function %fn20(i16x4, i16x4) -> i16x4 {
|
||||
block0(v0: i16x4, v1: i16x4):
|
||||
@@ -208,9 +328,15 @@ block0(v0: i16x4, v1: i16x4):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; umax v0.4h, v0.4h, v1.4h
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; umax v0.4h, v0.4h, v1.4h
|
||||
; ret
|
||||
|
||||
function %fn21(i16x8, i16x8) -> i16x8 {
|
||||
block0(v0: i16x8, v1: i16x8):
|
||||
@@ -218,9 +344,15 @@ block0(v0: i16x8, v1: i16x8):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; umax v0.8h, v0.8h, v1.8h
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; umax v0.8h, v0.8h, v1.8h
|
||||
; ret
|
||||
|
||||
function %fn22(i32x2, i32x2) -> i32x2 {
|
||||
block0(v0: i32x2, v1: i32x2):
|
||||
@@ -228,9 +360,15 @@ block0(v0: i32x2, v1: i32x2):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; umax v0.2s, v0.2s, v1.2s
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; umax v0.2s, v0.2s, v1.2s
|
||||
; ret
|
||||
|
||||
function %fn23(i32x4, i32x4) -> i32x4 {
|
||||
block0(v0: i32x4, v1: i32x4):
|
||||
@@ -238,7 +376,13 @@ block0(v0: i32x4, v1: i32x4):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; umax v0.4s, v0.4s, v1.4s
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; umax v0.4s, v0.4s, v1.4s
|
||||
; ret
|
||||
|
||||
|
||||
@@ -8,11 +8,19 @@ block0(v0: i16x4, v1: i16x4):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; mov v3.16b, v0.16b
|
||||
; mov v3.d[1], v3.d[1], v1.d[0]
|
||||
; sqxtn v0.8b, v3.8h
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov v3.16b, v0.16b
|
||||
; mov v3.d[1], v1.d[0]
|
||||
; sqxtn v0.8b, v3.8h
|
||||
; ret
|
||||
|
||||
function %snarrow_i16x8(i16x8, i16x8) -> i8x16 {
|
||||
block0(v0: i16x8, v1: i16x8):
|
||||
@@ -20,10 +28,17 @@ block0(v0: i16x8, v1: i16x8):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sqxtn v0.8b, v0.8h
|
||||
; sqxtn2 v0.16b, v0.16b, v1.8h
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; sqxtn v0.8b, v0.8h
|
||||
; sqxtn2 v0.16b, v1.8h
|
||||
; ret
|
||||
|
||||
function %snarrow_i32x2(i32x2, i32x2) -> i16x4 {
|
||||
block0(v0: i32x2, v1: i32x2):
|
||||
@@ -31,11 +46,19 @@ block0(v0: i32x2, v1: i32x2):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; mov v3.16b, v0.16b
|
||||
; mov v3.d[1], v3.d[1], v1.d[0]
|
||||
; sqxtn v0.4h, v3.4s
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov v3.16b, v0.16b
|
||||
; mov v3.d[1], v1.d[0]
|
||||
; sqxtn v0.4h, v3.4s
|
||||
; ret
|
||||
|
||||
function %snarrow_i32x4(i32x4, i32x4) -> i16x8 {
|
||||
block0(v0: i32x4, v1: i32x4):
|
||||
@@ -43,10 +66,17 @@ block0(v0: i32x4, v1: i32x4):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sqxtn v0.4h, v0.4s
|
||||
; sqxtn2 v0.8h, v0.8h, v1.4s
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; sqxtn v0.4h, v0.4s
|
||||
; sqxtn2 v0.8h, v1.4s
|
||||
; ret
|
||||
|
||||
function %snarrow_i64x2(i64x2, i64x2) -> i32x4 {
|
||||
block0(v0: i64x2, v1: i64x2):
|
||||
@@ -54,10 +84,17 @@ block0(v0: i64x2, v1: i64x2):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sqxtn v0.2s, v0.2d
|
||||
; sqxtn2 v0.4s, v0.4s, v1.2d
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; sqxtn v0.2s, v0.2d
|
||||
; sqxtn2 v0.4s, v1.2d
|
||||
; ret
|
||||
|
||||
function %unarrow_i16x4(i16x4, i16x4) -> i8x8 {
|
||||
block0(v0: i16x4, v1: i16x4):
|
||||
@@ -65,11 +102,19 @@ block0(v0: i16x4, v1: i16x4):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; mov v3.16b, v0.16b
|
||||
; mov v3.d[1], v3.d[1], v1.d[0]
|
||||
; sqxtun v0.8b, v3.8h
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov v3.16b, v0.16b
|
||||
; mov v3.d[1], v1.d[0]
|
||||
; sqxtun v0.8b, v3.8h
|
||||
; ret
|
||||
|
||||
function %unarrow_i16x8(i16x8, i16x8) -> i8x16 {
|
||||
block0(v0: i16x8, v1: i16x8):
|
||||
@@ -77,10 +122,17 @@ block0(v0: i16x8, v1: i16x8):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sqxtun v0.8b, v0.8h
|
||||
; sqxtun2 v0.16b, v0.16b, v1.8h
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; sqxtun v0.8b, v0.8h
|
||||
; sqxtun2 v0.16b, v1.8h
|
||||
; ret
|
||||
|
||||
function %unarrow_i32x2(i32x2, i32x2) -> i16x4 {
|
||||
block0(v0: i32x2, v1: i32x2):
|
||||
@@ -88,11 +140,19 @@ block0(v0: i32x2, v1: i32x2):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; mov v3.16b, v0.16b
|
||||
; mov v3.d[1], v3.d[1], v1.d[0]
|
||||
; sqxtun v0.4h, v3.4s
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov v3.16b, v0.16b
|
||||
; mov v3.d[1], v1.d[0]
|
||||
; sqxtun v0.4h, v3.4s
|
||||
; ret
|
||||
|
||||
function %unarrow_i32x4(i32x4, i32x4) -> i16x8 {
|
||||
block0(v0: i32x4, v1: i32x4):
|
||||
@@ -100,10 +160,17 @@ block0(v0: i32x4, v1: i32x4):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sqxtun v0.4h, v0.4s
|
||||
; sqxtun2 v0.8h, v0.8h, v1.4s
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; sqxtun v0.4h, v0.4s
|
||||
; sqxtun2 v0.8h, v1.4s
|
||||
; ret
|
||||
|
||||
function %unarrow_i64x2(i64x2, i64x2) -> i32x4 {
|
||||
block0(v0: i64x2, v1: i64x2):
|
||||
@@ -111,10 +178,17 @@ block0(v0: i64x2, v1: i64x2):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sqxtun v0.2s, v0.2d
|
||||
; sqxtun2 v0.4s, v0.4s, v1.2d
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; sqxtun v0.2s, v0.2d
|
||||
; sqxtun2 v0.4s, v1.2d
|
||||
; ret
|
||||
|
||||
function %uunarrow_i16x4(i16x4, i16x4) -> i8x8 {
|
||||
block0(v0: i16x4, v1: i16x4):
|
||||
@@ -122,11 +196,19 @@ block0(v0: i16x4, v1: i16x4):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; mov v3.16b, v0.16b
|
||||
; mov v3.d[1], v3.d[1], v1.d[0]
|
||||
; uqxtn v0.8b, v3.8h
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov v3.16b, v0.16b
|
||||
; mov v3.d[1], v1.d[0]
|
||||
; uqxtn v0.8b, v3.8h
|
||||
; ret
|
||||
|
||||
function %uunarrow_i16x8(i16x8, i16x8) -> i8x16 {
|
||||
block0(v0: i16x8, v1: i16x8):
|
||||
@@ -134,10 +216,17 @@ block0(v0: i16x8, v1: i16x8):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uqxtn v0.8b, v0.8h
|
||||
; uqxtn2 v0.16b, v0.16b, v1.8h
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; uqxtn v0.8b, v0.8h
|
||||
; uqxtn2 v0.16b, v1.8h
|
||||
; ret
|
||||
|
||||
function %uunarrow_i32x2(i32x2, i32x2) -> i16x4 {
|
||||
block0(v0: i32x2, v1: i32x2):
|
||||
@@ -145,11 +234,19 @@ block0(v0: i32x2, v1: i32x2):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; mov v3.16b, v0.16b
|
||||
; mov v3.d[1], v3.d[1], v1.d[0]
|
||||
; uqxtn v0.4h, v3.4s
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov v3.16b, v0.16b
|
||||
; mov v3.d[1], v1.d[0]
|
||||
; uqxtn v0.4h, v3.4s
|
||||
; ret
|
||||
|
||||
function %uunarrow_i32x4(i32x4, i32x4) -> i16x8 {
|
||||
block0(v0: i32x4, v1: i32x4):
|
||||
@@ -157,10 +254,17 @@ block0(v0: i32x4, v1: i32x4):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uqxtn v0.4h, v0.4s
|
||||
; uqxtn2 v0.8h, v0.8h, v1.4s
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; uqxtn v0.4h, v0.4s
|
||||
; uqxtn2 v0.8h, v1.4s
|
||||
; ret
|
||||
|
||||
function %uunarrow_i64x2(i64x2, i64x2) -> i32x4 {
|
||||
block0(v0: i64x2, v1: i64x2):
|
||||
@@ -168,10 +272,17 @@ block0(v0: i64x2, v1: i64x2):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uqxtn v0.2s, v0.2d
|
||||
; uqxtn2 v0.4s, v0.4s, v1.2d
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; uqxtn v0.2s, v0.2d
|
||||
; uqxtn2 v0.4s, v1.2d
|
||||
; ret
|
||||
|
||||
function %snarrow_i16x8_zero(i16x8) -> i8x16 {
|
||||
block0(v0: i16x8):
|
||||
@@ -180,9 +291,15 @@ block0(v0: i16x8):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sqxtn v0.8b, v0.8h
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; sqxtn v0.8b, v0.8h
|
||||
; ret
|
||||
|
||||
function %snarrow_i32x4_zero(i32x4) -> i16x8 {
|
||||
block0(v0: i32x4):
|
||||
@@ -191,9 +308,15 @@ block0(v0: i32x4):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sqxtn v0.4h, v0.4s
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; sqxtn v0.4h, v0.4s
|
||||
; ret
|
||||
|
||||
function %snarrow_i64x2_zero(i64x2) -> i32x4 {
|
||||
block0(v0: i64x2):
|
||||
@@ -202,9 +325,15 @@ block0(v0: i64x2):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sqxtn v0.2s, v0.2d
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; sqxtn v0.2s, v0.2d
|
||||
; ret
|
||||
|
||||
function %unarrow_i16x8_zero(i16x8) -> i8x16 {
|
||||
block0(v0: i16x8):
|
||||
@@ -213,9 +342,15 @@ block0(v0: i16x8):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sqxtun v0.8b, v0.8h
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; sqxtun v0.8b, v0.8h
|
||||
; ret
|
||||
|
||||
function %unarrow_i32x4_zero(i32x4) -> i16x8 {
|
||||
block0(v0: i32x4):
|
||||
@@ -224,9 +359,15 @@ block0(v0: i32x4):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sqxtun v0.4h, v0.4s
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; sqxtun v0.4h, v0.4s
|
||||
; ret
|
||||
|
||||
function %unarrow_i64x2_zero(i64x2) -> i32x4 {
|
||||
block0(v0: i64x2):
|
||||
@@ -235,9 +376,15 @@ block0(v0: i64x2):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sqxtun v0.2s, v0.2d
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; sqxtun v0.2s, v0.2d
|
||||
; ret
|
||||
|
||||
function %uunarrow_i16x8_zero(i16x8) -> i8x16 {
|
||||
block0(v0: i16x8):
|
||||
@@ -246,9 +393,15 @@ block0(v0: i16x8):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uqxtn v0.8b, v0.8h
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; uqxtn v0.8b, v0.8h
|
||||
; ret
|
||||
|
||||
function %uunarrow_i32x4_zero(i32x4) -> i16x8 {
|
||||
block0(v0: i32x4):
|
||||
@@ -257,9 +410,15 @@ block0(v0: i32x4):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uqxtn v0.4h, v0.4s
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; uqxtn v0.4h, v0.4s
|
||||
; ret
|
||||
|
||||
function %uunarrow_i64x2_zero(i64x2) -> i32x4 {
|
||||
block0(v0: i64x2):
|
||||
@@ -268,7 +427,13 @@ block0(v0: i64x2):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uqxtn v0.2s, v0.2d
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; uqxtn v0.2s, v0.2d
|
||||
; ret
|
||||
|
||||
|
||||
@@ -9,9 +9,15 @@ block0(v0: i8x16):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; saddlp v0.8h, v0.16b
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; saddlp v0.8h, v0.16b
|
||||
; ret
|
||||
|
||||
function %fn2(i16x8) -> i32x4 {
|
||||
block0(v0: i16x8):
|
||||
@@ -21,9 +27,15 @@ block0(v0: i16x8):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; saddlp v0.4s, v0.8h
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; saddlp v0.4s, v0.8h
|
||||
; ret
|
||||
|
||||
function %fn3(i8x16) -> i16x8 {
|
||||
block0(v0: i8x16):
|
||||
@@ -33,9 +45,15 @@ block0(v0: i8x16):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uaddlp v0.8h, v0.16b
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; uaddlp v0.8h, v0.16b
|
||||
; ret
|
||||
|
||||
function %fn4(i16x8) -> i32x4 {
|
||||
block0(v0: i16x8):
|
||||
@@ -45,7 +63,13 @@ block0(v0: i16x8):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uaddlp v0.4s, v0.8h
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; uaddlp v0.4s, v0.8h
|
||||
; ret
|
||||
|
||||
|
||||
@@ -8,12 +8,21 @@ block0(v0: i8x8):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uminv b2, v0.8b
|
||||
; mov x4, v2.d[0]
|
||||
; subs xzr, x4, #0
|
||||
; cset x0, ne
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; uminv b2, v0.8b
|
||||
; mov x4, v2.d[0]
|
||||
; cmp x4, #0
|
||||
; cset x0, ne
|
||||
; ret
|
||||
|
||||
function %fn1(i8x16) -> i8 {
|
||||
block0(v0: i8x16):
|
||||
@@ -21,12 +30,21 @@ block0(v0: i8x16):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uminv b2, v0.16b
|
||||
; mov x4, v2.d[0]
|
||||
; subs xzr, x4, #0
|
||||
; cset x0, ne
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; uminv b2, v0.16b
|
||||
; mov x4, v2.d[0]
|
||||
; cmp x4, #0
|
||||
; cset x0, ne
|
||||
; ret
|
||||
|
||||
function %fn2(i16x4) -> i8 {
|
||||
block0(v0: i16x4):
|
||||
@@ -34,12 +52,21 @@ block0(v0: i16x4):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uminv h2, v0.4h
|
||||
; mov x4, v2.d[0]
|
||||
; subs xzr, x4, #0
|
||||
; cset x0, ne
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; uminv h2, v0.4h
|
||||
; mov x4, v2.d[0]
|
||||
; cmp x4, #0
|
||||
; cset x0, ne
|
||||
; ret
|
||||
|
||||
function %fn3(i16x8) -> i8 {
|
||||
block0(v0: i16x8):
|
||||
@@ -47,12 +74,21 @@ block0(v0: i16x8):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uminv h2, v0.8h
|
||||
; mov x4, v2.d[0]
|
||||
; subs xzr, x4, #0
|
||||
; cset x0, ne
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; uminv h2, v0.8h
|
||||
; mov x4, v2.d[0]
|
||||
; cmp x4, #0
|
||||
; cset x0, ne
|
||||
; ret
|
||||
|
||||
function %fn4(i32x2) -> i8 {
|
||||
block0(v0: i32x2):
|
||||
@@ -60,12 +96,21 @@ block0(v0: i32x2):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; mov x2, v0.d[0]
|
||||
; subs xzr, xzr, x2, LSR 32
|
||||
; ccmp w2, #0, #nZcv, ne
|
||||
; cset x0, ne
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov x2, v0.d[0]
|
||||
; cmp xzr, x2, lsr #32
|
||||
; ccmp w2, #0, #4, ne
|
||||
; cset x0, ne
|
||||
; ret
|
||||
|
||||
function %fn5(i32x4) -> i8 {
|
||||
block0(v0: i32x4):
|
||||
@@ -73,12 +118,21 @@ block0(v0: i32x4):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uminv s2, v0.4s
|
||||
; mov x4, v2.d[0]
|
||||
; subs xzr, x4, #0
|
||||
; cset x0, ne
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; uminv s2, v0.4s
|
||||
; mov x4, v2.d[0]
|
||||
; cmp x4, #0
|
||||
; cset x0, ne
|
||||
; ret
|
||||
|
||||
function %fn6(i64x2) -> i8 {
|
||||
block0(v0: i64x2):
|
||||
@@ -86,10 +140,19 @@ block0(v0: i64x2):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; cmeq v2.2d, v0.2d, #0
|
||||
; addp v4.2d, v2.2d, v2.2d
|
||||
; fcmp d4, d4
|
||||
; cset x0, eq
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmeq v2.2d, v0.2d, #0
|
||||
; addp v4.2d, v2.2d, v2.2d
|
||||
; fcmp d4, d4
|
||||
; cset x0, eq
|
||||
; ret
|
||||
|
||||
|
||||
@@ -9,11 +9,19 @@ block0:
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movz x1, #1
|
||||
; movk x1, x1, #1, LSL #48
|
||||
; dup v0.2d, x1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov x1, #1
|
||||
; movk x1, #1, lsl #48
|
||||
; dup v0.2d, x1
|
||||
; ret
|
||||
|
||||
function %f2() -> i16x8 {
|
||||
block0:
|
||||
@@ -23,10 +31,17 @@ block0:
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movz x1, #42679
|
||||
; dup v0.8h, w1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov x1, #0xa6b7
|
||||
; dup v0.8h, w1
|
||||
; ret
|
||||
|
||||
function %f4(i32, i8x16, i8x16) -> i8x16 {
|
||||
block0(v0: i32, v1: i8x16, v2: i8x16):
|
||||
@@ -34,10 +49,20 @@ block0(v0: i32, v1: i8x16, v2: i8x16):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; subs wzr, w0, wzr
|
||||
; vcsel v0.16b, v0.16b, v1.16b, ne (if-then-else diamond)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; cmp w0, wzr
|
||||
; b.ne #0x10
|
||||
; mov v0.16b, v1.16b
|
||||
; b #0x14
|
||||
; mov v0.16b, v0.16b
|
||||
; ret
|
||||
|
||||
function %f5(i64) -> i8x16 {
|
||||
block0(v0: i64):
|
||||
@@ -46,9 +71,15 @@ block0(v0: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ld1r { v0.16b }, [x0]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ld1r {v0.16b}, [x0]
|
||||
; ret
|
||||
|
||||
function %f6(i64, i64) -> i8x16, i8x16 {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -59,10 +90,17 @@ block0(v0: i64, v1: i64):
|
||||
return v4, v5
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ld1r { v0.16b }, [x0]
|
||||
; ld1r { v1.16b }, [x1]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ld1r {v0.16b}, [x0]
|
||||
; ld1r {v1.16b}, [x1]
|
||||
; ret
|
||||
|
||||
function %f7(i64, i64) -> i8x16, i8x16 {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -73,11 +111,19 @@ block0(v0: i64, v1: i64):
|
||||
return v4, v5
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ldrb w5, [x0]
|
||||
; ld1r { v0.16b }, [x1]
|
||||
; dup v1.16b, w5
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ldrb w5, [x0]
|
||||
; ld1r {v0.16b}, [x1]
|
||||
; dup v1.16b, w5
|
||||
; ret
|
||||
|
||||
function %f8(i64, i64) -> i8x16, i8x16 {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -87,11 +133,19 @@ block0(v0: i64, v1: i64):
|
||||
return v3, v4
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ldrb w5, [x0]
|
||||
; dup v0.16b, w5
|
||||
; dup v1.16b, w5
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ldrb w5, [x0]
|
||||
; dup v0.16b, w5
|
||||
; dup v1.16b, w5
|
||||
; ret
|
||||
|
||||
function %f9() -> i32x2 {
|
||||
block0:
|
||||
@@ -100,10 +154,17 @@ block0:
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movi v1.2d, #18374687579166474495
|
||||
; fmov d0, d1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; movi v1.2d, #0xff0000ffff0000ff
|
||||
; fmov d0, d1
|
||||
; ret
|
||||
|
||||
function %f10() -> i32x4 {
|
||||
block0:
|
||||
@@ -112,9 +173,15 @@ block0:
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; mvni v0.4s, #15, MSL #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mvni v0.4s, #0xf, msl #16
|
||||
; ret
|
||||
|
||||
function %f11() -> f32x4 {
|
||||
block0:
|
||||
@@ -123,7 +190,13 @@ block0:
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fmov v0.4s, #1.3125
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fmov v0.4s, #1.31250000
|
||||
; ret
|
||||
|
||||
|
||||
@@ -9,11 +9,19 @@ block0:
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movz x1, #1
|
||||
; movk x1, x1, #1, LSL #48
|
||||
; fmov d0, x1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov x1, #1
|
||||
; movk x1, #1, lsl #48
|
||||
; fmov d0, x1
|
||||
; ret
|
||||
|
||||
function %f2() -> i32x4 {
|
||||
block0:
|
||||
@@ -22,10 +30,17 @@ block0:
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movz w0, #42679
|
||||
; fmov s0, w0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov w0, #0xa6b7
|
||||
; fmov s0, w0
|
||||
; ret
|
||||
|
||||
function %f3() -> f32x4 {
|
||||
block0:
|
||||
@@ -34,10 +49,17 @@ block0:
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fmov s0, #1
|
||||
; fmov s0, s0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fmov s0, #1.00000000
|
||||
; fmov s0, s0
|
||||
; ret
|
||||
|
||||
function %f4() -> f64x2 {
|
||||
block0:
|
||||
@@ -46,8 +68,15 @@ block0:
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fmov d0, #1
|
||||
; fmov d0, d0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fmov d0, #1.00000000
|
||||
; fmov d0, d0
|
||||
; ret
|
||||
|
||||
|
||||
@@ -7,16 +7,26 @@ block0:
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ret
|
||||
|
||||
function %stack_limit_leaf_zero(i64 stack_limit) {
|
||||
block0(v0: i64):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ret
|
||||
|
||||
function %stack_limit_gv_leaf_zero(i64 vmctx) {
|
||||
gv0 = vmctx
|
||||
@@ -27,8 +37,13 @@ block0(v0: i64):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ret
|
||||
|
||||
function %stack_limit_call_zero(i64 stack_limit) {
|
||||
fn0 = %foo()
|
||||
@@ -37,6 +52,7 @@ block0(v0: i64):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
; subs xzr, sp, x0, UXTX
|
||||
@@ -46,6 +62,21 @@ block0(v0: i64):
|
||||
; blr x2
|
||||
; ldp fp, lr, [sp], #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; cmp sp, x0
|
||||
; b.hs #0x14
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: stk_ovf
|
||||
; block0: ; offset 0x14
|
||||
; ldr x2, #0x1c
|
||||
; b #0x24
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %foo 0
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; blr x2
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; ret
|
||||
|
||||
function %stack_limit_gv_call_zero(i64 vmctx) {
|
||||
gv0 = vmctx
|
||||
@@ -58,6 +89,7 @@ block0(v0: i64):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
; ldr x16, [x0]
|
||||
@@ -69,6 +101,23 @@ block0(v0: i64):
|
||||
; blr x2
|
||||
; ldp fp, lr, [sp], #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; ldur x16, [x0]
|
||||
; ldur x16, [x16, #4]
|
||||
; cmp sp, x16
|
||||
; b.hs #0x1c
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: stk_ovf
|
||||
; block0: ; offset 0x1c
|
||||
; ldr x2, #0x24
|
||||
; b #0x2c
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %foo 0
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; blr x2
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; ret
|
||||
|
||||
function %stack_limit(i64 stack_limit) {
|
||||
ss0 = explicit_slot 168
|
||||
@@ -76,6 +125,7 @@ block0(v0: i64):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
; add x16, x0, #176
|
||||
@@ -86,6 +136,19 @@ block0(v0: i64):
|
||||
; add sp, sp, #176
|
||||
; ldp fp, lr, [sp], #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; add x16, x0, #0xb0
|
||||
; cmp sp, x16
|
||||
; b.hs #0x18
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: stk_ovf
|
||||
; sub sp, sp, #0xb0
|
||||
; block0: ; offset 0x1c
|
||||
; add sp, sp, #0xb0
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; ret
|
||||
|
||||
function %huge_stack_limit(i64 stack_limit) {
|
||||
ss0 = explicit_slot 400000
|
||||
@@ -93,6 +156,7 @@ block0(v0: i64):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
; subs xzr, sp, x0, UXTX
|
||||
@@ -111,6 +175,28 @@ block0(v0: i64):
|
||||
; add sp, sp, x16, UXTX
|
||||
; ldp fp, lr, [sp], #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; cmp sp, x0
|
||||
; b.hs #0x14
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: stk_ovf
|
||||
; mov w17, #0x1a80
|
||||
; movk w17, #6, lsl #16
|
||||
; add x16, x0, x17, uxtx
|
||||
; cmp sp, x16
|
||||
; b.hs #0x2c
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: stk_ovf
|
||||
; mov w16, #0x1a80
|
||||
; movk w16, #6, lsl #16
|
||||
; sub sp, sp, x16
|
||||
; block0: ; offset 0x38
|
||||
; mov w16, #0x1a80
|
||||
; movk w16, #6, lsl #16
|
||||
; add sp, sp, x16
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; ret
|
||||
|
||||
function %limit_preamble(i64 vmctx) {
|
||||
gv0 = vmctx
|
||||
@@ -122,6 +208,7 @@ block0(v0: i64):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
; ldr x16, [x0]
|
||||
@@ -134,6 +221,21 @@ block0(v0: i64):
|
||||
; add sp, sp, #32
|
||||
; ldp fp, lr, [sp], #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; ldur x16, [x0]
|
||||
; ldur x16, [x16, #4]
|
||||
; add x16, x16, #0x20
|
||||
; cmp sp, x16
|
||||
; b.hs #0x20
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: stk_ovf
|
||||
; sub sp, sp, #0x20
|
||||
; block0: ; offset 0x24
|
||||
; add sp, sp, #0x20
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; ret
|
||||
|
||||
function %limit_preamble_huge(i64 vmctx) {
|
||||
gv0 = vmctx
|
||||
@@ -145,6 +247,7 @@ block0(v0: i64):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
; ldr x16, [x0]
|
||||
@@ -165,6 +268,30 @@ block0(v0: i64):
|
||||
; add sp, sp, x16, UXTX
|
||||
; ldp fp, lr, [sp], #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; ldur x16, [x0]
|
||||
; ldur x16, [x16, #4]
|
||||
; cmp sp, x16
|
||||
; b.hs #0x1c
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: stk_ovf
|
||||
; mov w17, #0x1a80
|
||||
; movk w17, #6, lsl #16
|
||||
; add x16, x16, x17, uxtx
|
||||
; cmp sp, x16
|
||||
; b.hs #0x34
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: stk_ovf
|
||||
; mov w16, #0x1a80
|
||||
; movk w16, #6, lsl #16
|
||||
; sub sp, sp, x16
|
||||
; block0: ; offset 0x40
|
||||
; mov w16, #0x1a80
|
||||
; movk w16, #6, lsl #16
|
||||
; add sp, sp, x16
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; ret
|
||||
|
||||
function %limit_preamble_huge_offset(i64 vmctx) {
|
||||
gv0 = vmctx
|
||||
@@ -175,6 +302,7 @@ block0(v0: i64):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
; movz w16, #6784 ; movk w16, w16, #6, LSL #16 ; ldr x16, [x0, x16, SXTX]
|
||||
@@ -186,4 +314,20 @@ block0(v0: i64):
|
||||
; add sp, sp, #32
|
||||
; ldp fp, lr, [sp], #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; mov w16, #0x1a80
|
||||
; movk w16, #6, lsl #16
|
||||
; ldr x16, [x0, x16, sxtx]
|
||||
; add x16, x16, #0x20
|
||||
; cmp sp, x16
|
||||
; b.hs #0x24
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: stk_ovf
|
||||
; sub sp, sp, #0x20
|
||||
; block0: ; offset 0x28
|
||||
; add sp, sp, #0x20
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; ret
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
; sub sp, sp, #16
|
||||
@@ -18,6 +19,16 @@ block0:
|
||||
; add sp, sp, #16
|
||||
; ldp fp, lr, [sp], #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; sub sp, sp, #0x10
|
||||
; block0: ; offset 0xc
|
||||
; mov x0, sp
|
||||
; add sp, sp, #0x10
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; ret
|
||||
|
||||
function %stack_addr_big() -> i64 {
|
||||
ss0 = explicit_slot 100000
|
||||
@@ -28,6 +39,7 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
; movz w16, #34480
|
||||
@@ -40,6 +52,20 @@ block0:
|
||||
; add sp, sp, x16, UXTX
|
||||
; ldp fp, lr, [sp], #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; mov w16, #0x86b0
|
||||
; movk w16, #1, lsl #16
|
||||
; sub sp, sp, x16
|
||||
; block0: ; offset 0x14
|
||||
; mov x0, sp
|
||||
; mov w16, #0x86b0
|
||||
; movk w16, #1, lsl #16
|
||||
; add sp, sp, x16
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; ret
|
||||
|
||||
function %stack_load_small() -> i64 {
|
||||
ss0 = explicit_slot 8
|
||||
@@ -49,6 +75,7 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
; sub sp, sp, #16
|
||||
@@ -58,6 +85,17 @@ block0:
|
||||
; add sp, sp, #16
|
||||
; ldp fp, lr, [sp], #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; sub sp, sp, #0x10
|
||||
; block0: ; offset 0xc
|
||||
; mov x1, sp
|
||||
; ldr x0, [x1]
|
||||
; add sp, sp, #0x10
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; ret
|
||||
|
||||
function %stack_load_big() -> i64 {
|
||||
ss0 = explicit_slot 100000
|
||||
@@ -68,6 +106,7 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
; movz w16, #34480
|
||||
@@ -81,6 +120,21 @@ block0:
|
||||
; add sp, sp, x16, UXTX
|
||||
; ldp fp, lr, [sp], #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; mov w16, #0x86b0
|
||||
; movk w16, #1, lsl #16
|
||||
; sub sp, sp, x16
|
||||
; block0: ; offset 0x14
|
||||
; mov x1, sp
|
||||
; ldr x0, [x1]
|
||||
; mov w16, #0x86b0
|
||||
; movk w16, #1, lsl #16
|
||||
; add sp, sp, x16
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; ret
|
||||
|
||||
function %stack_store_small(i64) {
|
||||
ss0 = explicit_slot 8
|
||||
@@ -90,6 +144,7 @@ block0(v0: i64):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
; sub sp, sp, #16
|
||||
@@ -99,6 +154,17 @@ block0(v0: i64):
|
||||
; add sp, sp, #16
|
||||
; ldp fp, lr, [sp], #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; sub sp, sp, #0x10
|
||||
; block0: ; offset 0xc
|
||||
; mov x2, sp
|
||||
; str x0, [x2]
|
||||
; add sp, sp, #0x10
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; ret
|
||||
|
||||
function %stack_store_big(i64) {
|
||||
ss0 = explicit_slot 100000
|
||||
@@ -109,6 +175,7 @@ block0(v0: i64):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
; movz w16, #34480
|
||||
@@ -122,6 +189,21 @@ block0(v0: i64):
|
||||
; add sp, sp, x16, UXTX
|
||||
; ldp fp, lr, [sp], #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; mov w16, #0x86b0
|
||||
; movk w16, #1, lsl #16
|
||||
; sub sp, sp, x16
|
||||
; block0: ; offset 0x14
|
||||
; mov x2, sp
|
||||
; str x0, [x2]
|
||||
; mov w16, #0x86b0
|
||||
; movk w16, #1, lsl #16
|
||||
; add sp, sp, x16
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; ret
|
||||
|
||||
function %i8_spill_slot(i8) -> i8, i64 {
|
||||
ss0 = explicit_slot 1000
|
||||
@@ -274,6 +356,7 @@ block0(v0: i8):
|
||||
return v0, v137
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
; stp x27, x28, [sp, #-16]!
|
||||
@@ -429,6 +512,163 @@ block0(v0: i8):
|
||||
; ldp x27, x28, [sp], #16
|
||||
; ldp fp, lr, [sp], #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; stp x27, x28, [sp, #-0x10]!
|
||||
; stp x25, x26, [sp, #-0x10]!
|
||||
; stp x23, x24, [sp, #-0x10]!
|
||||
; stp x21, x22, [sp, #-0x10]!
|
||||
; stp x19, x20, [sp, #-0x10]!
|
||||
; sub sp, sp, #0x480
|
||||
; block0: ; offset 0x20
|
||||
; str x0, [sp, #0x3e8]
|
||||
; mov x6, #2
|
||||
; add x9, x6, #1
|
||||
; str x9, [sp, #0x470]
|
||||
; mov x6, #4
|
||||
; add x10, x6, #3
|
||||
; str x10, [sp, #0x468]
|
||||
; mov x6, #6
|
||||
; add x11, x6, #5
|
||||
; str x11, [sp, #0x460]
|
||||
; mov x6, #8
|
||||
; add x12, x6, #7
|
||||
; str x12, [sp, #0x458]
|
||||
; mov x6, #0xa
|
||||
; add x13, x6, #9
|
||||
; str x13, [sp, #0x450]
|
||||
; mov x6, #0xc
|
||||
; add x14, x6, #0xb
|
||||
; str x14, [sp, #0x448]
|
||||
; mov x6, #0xe
|
||||
; add x15, x6, #0xd
|
||||
; str x15, [sp, #0x440]
|
||||
; mov x6, #0x10
|
||||
; add x1, x6, #0xf
|
||||
; str x1, [sp, #0x438]
|
||||
; mov x6, #0x12
|
||||
; add x2, x6, #0x11
|
||||
; str x2, [sp, #0x430]
|
||||
; mov x6, #0x14
|
||||
; add x3, x6, #0x13
|
||||
; str x3, [sp, #0x428]
|
||||
; mov x6, #0x16
|
||||
; add x4, x6, #0x15
|
||||
; str x4, [sp, #0x420]
|
||||
; mov x6, #0x18
|
||||
; add x5, x6, #0x17
|
||||
; str x5, [sp, #0x418]
|
||||
; mov x6, #0x1a
|
||||
; add x6, x6, #0x19
|
||||
; str x6, [sp, #0x410]
|
||||
; mov x6, #0x1c
|
||||
; add x7, x6, #0x1b
|
||||
; str x7, [sp, #0x408]
|
||||
; mov x6, #0x1e
|
||||
; add x24, x6, #0x1d
|
||||
; str x24, [sp, #0x400]
|
||||
; mov x6, #0x20
|
||||
; add x25, x6, #0x1f
|
||||
; str x25, [sp, #0x3f8]
|
||||
; mov x6, #0x22
|
||||
; add x26, x6, #0x21
|
||||
; mov x6, #0x24
|
||||
; add x27, x6, #0x23
|
||||
; str x27, [sp, #0x3f0]
|
||||
; mov x6, #0x26
|
||||
; add x27, x6, #0x25
|
||||
; mov x6, #0x1e
|
||||
; add x28, x6, #0x27
|
||||
; mov x6, #0x20
|
||||
; add x21, x6, #0x1f
|
||||
; mov x6, #0x22
|
||||
; add x19, x6, #0x21
|
||||
; mov x6, #0x24
|
||||
; add x20, x6, #0x23
|
||||
; mov x6, #0x26
|
||||
; add x22, x6, #0x25
|
||||
; mov x6, #0x1e
|
||||
; add x23, x6, #0x27
|
||||
; mov x6, #0x20
|
||||
; add x0, x6, #0x1f
|
||||
; mov x6, #0x22
|
||||
; add x8, x6, #0x21
|
||||
; mov x6, #0x24
|
||||
; add x9, x6, #0x23
|
||||
; mov x6, #0x26
|
||||
; add x10, x6, #0x25
|
||||
; mov x6, #0x1e
|
||||
; add x11, x6, #0x27
|
||||
; mov x6, #0x20
|
||||
; add x12, x6, #0x1f
|
||||
; mov x6, #0x22
|
||||
; add x13, x6, #0x21
|
||||
; mov x6, #0x24
|
||||
; add x14, x6, #0x23
|
||||
; mov x6, #0x26
|
||||
; add x15, x6, #0x25
|
||||
; ldr x1, [sp, #0x470]
|
||||
; add x1, x1, #0x27
|
||||
; ldr x3, [sp, #0x460]
|
||||
; ldr x2, [sp, #0x468]
|
||||
; add x2, x2, x3
|
||||
; ldr x3, [sp, #0x450]
|
||||
; ldr x6, [sp, #0x458]
|
||||
; add x3, x6, x3
|
||||
; ldr x4, [sp, #0x440]
|
||||
; ldr x5, [sp, #0x448]
|
||||
; add x4, x5, x4
|
||||
; ldr x5, [sp, #0x430]
|
||||
; ldr x6, [sp, #0x438]
|
||||
; add x5, x6, x5
|
||||
; ldr x7, [sp, #0x420]
|
||||
; ldr x6, [sp, #0x428]
|
||||
; add x6, x6, x7
|
||||
; ldr x7, [sp, #0x410]
|
||||
; ldr x24, [sp, #0x418]
|
||||
; add x7, x24, x7
|
||||
; ldr x24, [sp, #0x400]
|
||||
; ldr x25, [sp, #0x408]
|
||||
; add x24, x25, x24
|
||||
; ldr x25, [sp, #0x3f8]
|
||||
; add x25, x25, x26
|
||||
; ldr x26, [sp, #0x3f0]
|
||||
; add x26, x26, x27
|
||||
; add x27, x28, x21
|
||||
; add x28, x19, x20
|
||||
; add x23, x22, x23
|
||||
; add x8, x0, x8
|
||||
; add x9, x9, x10
|
||||
; add x10, x11, x12
|
||||
; add x11, x13, x14
|
||||
; add x12, x15, x1
|
||||
; add x13, x2, x3
|
||||
; add x14, x4, x5
|
||||
; add x7, x6, x7
|
||||
; add x15, x24, x25
|
||||
; add x0, x26, x27
|
||||
; add x1, x28, x23
|
||||
; add x8, x8, x9
|
||||
; add x9, x10, x11
|
||||
; add x10, x12, x13
|
||||
; add x7, x14, x7
|
||||
; add x11, x15, x0
|
||||
; add x8, x1, x8
|
||||
; add x9, x9, x10
|
||||
; add x7, x7, x11
|
||||
; add x8, x8, x9
|
||||
; add x1, x7, x8
|
||||
; ldr x0, [sp, #0x3e8]
|
||||
; add sp, sp, #0x480
|
||||
; ldp x19, x20, [sp], #0x10
|
||||
; ldp x21, x22, [sp], #0x10
|
||||
; ldp x23, x24, [sp], #0x10
|
||||
; ldp x25, x26, [sp], #0x10
|
||||
; ldp x27, x28, [sp], #0x10
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; ret
|
||||
|
||||
function %i128_stack_store(i128) {
|
||||
ss0 = explicit_slot 16
|
||||
@@ -438,6 +678,7 @@ block0(v0: i128):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
; sub sp, sp, #16
|
||||
@@ -447,6 +688,17 @@ block0(v0: i128):
|
||||
; add sp, sp, #16
|
||||
; ldp fp, lr, [sp], #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; sub sp, sp, #0x10
|
||||
; block0: ; offset 0xc
|
||||
; mov x3, sp
|
||||
; stp x0, x1, [x3]
|
||||
; add sp, sp, #0x10
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; ret
|
||||
|
||||
function %i128_stack_store_inst_offset(i128) {
|
||||
ss0 = explicit_slot 16
|
||||
@@ -457,6 +709,7 @@ block0(v0: i128):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
; sub sp, sp, #32
|
||||
@@ -466,6 +719,17 @@ block0(v0: i128):
|
||||
; add sp, sp, #32
|
||||
; ldp fp, lr, [sp], #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; sub sp, sp, #0x20
|
||||
; block0: ; offset 0xc
|
||||
; add x3, sp, #0x20
|
||||
; stp x0, x1, [x3]
|
||||
; add sp, sp, #0x20
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; ret
|
||||
|
||||
function %i128_stack_store_big(i128) {
|
||||
ss0 = explicit_slot 100000
|
||||
@@ -476,6 +740,7 @@ block0(v0: i128):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
; movz w16, #34480
|
||||
@@ -489,6 +754,21 @@ block0(v0: i128):
|
||||
; add sp, sp, x16, UXTX
|
||||
; ldp fp, lr, [sp], #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; mov w16, #0x86b0
|
||||
; movk w16, #1, lsl #16
|
||||
; sub sp, sp, x16
|
||||
; block0: ; offset 0x14
|
||||
; mov x3, sp
|
||||
; stp x0, x1, [x3]
|
||||
; mov w16, #0x86b0
|
||||
; movk w16, #1, lsl #16
|
||||
; add sp, sp, x16
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; ret
|
||||
|
||||
function %i128_stack_load() -> i128 {
|
||||
ss0 = explicit_slot 16
|
||||
@@ -498,6 +778,7 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
; sub sp, sp, #16
|
||||
@@ -507,6 +788,17 @@ block0:
|
||||
; add sp, sp, #16
|
||||
; ldp fp, lr, [sp], #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; sub sp, sp, #0x10
|
||||
; block0: ; offset 0xc
|
||||
; mov x2, sp
|
||||
; ldp x0, x1, [x2]
|
||||
; add sp, sp, #0x10
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; ret
|
||||
|
||||
function %i128_stack_load_inst_offset() -> i128 {
|
||||
ss0 = explicit_slot 16
|
||||
@@ -517,6 +809,7 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
; sub sp, sp, #32
|
||||
@@ -526,6 +819,17 @@ block0:
|
||||
; add sp, sp, #32
|
||||
; ldp fp, lr, [sp], #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; sub sp, sp, #0x20
|
||||
; block0: ; offset 0xc
|
||||
; add x2, sp, #0x20
|
||||
; ldp x0, x1, [x2]
|
||||
; add sp, sp, #0x20
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; ret
|
||||
|
||||
function %i128_stack_load_big() -> i128 {
|
||||
ss0 = explicit_slot 100000
|
||||
@@ -536,6 +840,7 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
; movz w16, #34480
|
||||
@@ -549,4 +854,19 @@ block0:
|
||||
; add sp, sp, x16, UXTX
|
||||
; ldp fp, lr, [sp], #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; mov w16, #0x86b0
|
||||
; movk w16, #1, lsl #16
|
||||
; sub sp, sp, x16
|
||||
; block0: ; offset 0x14
|
||||
; mov x2, sp
|
||||
; ldp x0, x1, [x2]
|
||||
; mov w16, #0x86b0
|
||||
; movk w16, #1, lsl #16
|
||||
; add sp, sp, x16
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; ret
|
||||
|
||||
|
||||
@@ -11,7 +11,14 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; load_ext_name x0, TestCase(%my_global)+0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; adrp x0, #0 ; reloc_external Aarch64AdrGotPage21 %my_global 0
|
||||
; ldr x0, [x0] ; reloc_external Aarch64AdrGotLo12Nc %my_global 0
|
||||
; ret
|
||||
|
||||
|
||||
@@ -10,7 +10,16 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; load_ext_name x0, TestCase(%my_global)+0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ldr x0, #8
|
||||
; b #0x10
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %my_global 0
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; ret
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@ block0(v0: i32):
|
||||
return v0, v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; stp fp, lr, [sp, #-16]!
|
||||
; mov fp, sp
|
||||
; str x24, [sp, #-16]!
|
||||
@@ -29,4 +30,28 @@ block0(v0: i32):
|
||||
; ldr x24, [sp], #16
|
||||
; ldp fp, lr, [sp], #16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; stp x29, x30, [sp, #-0x10]!
|
||||
; mov x29, sp
|
||||
; str x24, [sp, #-0x10]!
|
||||
; stp d14, d15, [sp, #-0x10]!
|
||||
; stp d12, d13, [sp, #-0x10]!
|
||||
; stp d10, d11, [sp, #-0x10]!
|
||||
; stp d8, d9, [sp, #-0x10]!
|
||||
; block0: ; offset 0x1c
|
||||
; mov x24, x0
|
||||
; adrp x0, #0 ; reloc_external Aarch64TlsGdAdrPage21 u1:0 0
|
||||
; add x0, x0, #0 ; reloc_external Aarch64TlsGdAddLo12Nc u1:0 0
|
||||
; bl #0x28 ; reloc_external Call %ElfTlsGetAddr 0
|
||||
; nop
|
||||
; mov x1, x0
|
||||
; mov x0, x24
|
||||
; ldp d8, d9, [sp], #0x10
|
||||
; ldp d10, d11, [sp], #0x10
|
||||
; ldp d12, d13, [sp], #0x10
|
||||
; ldp d14, d15, [sp], #0x10
|
||||
; ldr x24, [sp], #0x10
|
||||
; ldp x29, x30, [sp], #0x10
|
||||
; ret
|
||||
|
||||
|
||||
@@ -6,8 +6,13 @@ block0:
|
||||
trap user0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; udf #0xc11f
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: user0
|
||||
|
||||
function %trap_iadd_ifcout(i64, i64) {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -15,8 +20,16 @@ block0(v0: i64, v1: i64):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; adds x3, x0, x1
|
||||
; b.lo 8 ; udf
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; adds x3, x0, x1
|
||||
; b.lo #0xc
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: user0
|
||||
; ret
|
||||
|
||||
|
||||
@@ -8,11 +8,20 @@ block0(v0: i32):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movz w2, #127
|
||||
; adds w0, w0, w2
|
||||
; b.lo 8 ; udf
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov w2, #0x7f
|
||||
; adds w0, w0, w2
|
||||
; b.lo #0x10
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: user0
|
||||
; ret
|
||||
|
||||
function %f1(i32) -> i32 {
|
||||
block0(v0: i32):
|
||||
@@ -21,11 +30,20 @@ block0(v0: i32):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movz w2, #127
|
||||
; adds w0, w2, w0
|
||||
; b.lo 8 ; udf
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov w2, #0x7f
|
||||
; adds w0, w2, w0
|
||||
; b.lo #0x10
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: user0
|
||||
; ret
|
||||
|
||||
function %f2(i32, i32) -> i32 {
|
||||
block0(v0: i32, v1: i32):
|
||||
@@ -33,10 +51,18 @@ block0(v0: i32, v1: i32):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; adds w0, w0, w1
|
||||
; b.lo 8 ; udf
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; adds w0, w0, w1
|
||||
; b.lo #0xc
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: user0
|
||||
; ret
|
||||
|
||||
function %f3(i64) -> i64 {
|
||||
block0(v0: i64):
|
||||
@@ -45,11 +71,20 @@ block0(v0: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movz x2, #127
|
||||
; adds x0, x0, x2
|
||||
; b.lo 8 ; udf
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov x2, #0x7f
|
||||
; adds x0, x0, x2
|
||||
; b.lo #0x10
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: user0
|
||||
; ret
|
||||
|
||||
function %f3(i64) -> i64 {
|
||||
block0(v0: i64):
|
||||
@@ -58,11 +93,20 @@ block0(v0: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movz x2, #127
|
||||
; adds x0, x2, x0
|
||||
; b.lo 8 ; udf
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov x2, #0x7f
|
||||
; adds x0, x2, x0
|
||||
; b.lo #0x10
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: user0
|
||||
; ret
|
||||
|
||||
function %f4(i64, i64) -> i64 {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -70,8 +114,16 @@ block0(v0: i64, v1: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; adds x0, x0, x1
|
||||
; b.lo 8 ; udf
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; adds x0, x0, x1
|
||||
; b.lo #0xc
|
||||
; .byte 0x1f, 0xc1, 0x00, 0x00 ; trap: user0
|
||||
; ret
|
||||
|
||||
|
||||
@@ -8,9 +8,15 @@ block0(v0: i8):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uxtb w0, w0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; uxtb w0, w0
|
||||
; ret
|
||||
|
||||
function %f_u_8_32(i8) -> i32 {
|
||||
block0(v0: i8):
|
||||
@@ -18,9 +24,15 @@ block0(v0: i8):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uxtb w0, w0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; uxtb w0, w0
|
||||
; ret
|
||||
|
||||
function %f_u_8_16(i8) -> i16 {
|
||||
block0(v0: i8):
|
||||
@@ -28,9 +40,15 @@ block0(v0: i8):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uxtb w0, w0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; uxtb w0, w0
|
||||
; ret
|
||||
|
||||
function %f_s_8_64(i8) -> i64 {
|
||||
block0(v0: i8):
|
||||
@@ -38,9 +56,15 @@ block0(v0: i8):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sxtb x0, w0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; sxtb x0, w0
|
||||
; ret
|
||||
|
||||
function %f_s_8_32(i8) -> i32 {
|
||||
block0(v0: i8):
|
||||
@@ -48,9 +72,15 @@ block0(v0: i8):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sxtb w0, w0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; sxtb w0, w0
|
||||
; ret
|
||||
|
||||
function %f_s_8_16(i8) -> i16 {
|
||||
block0(v0: i8):
|
||||
@@ -58,9 +88,15 @@ block0(v0: i8):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sxtb w0, w0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; sxtb w0, w0
|
||||
; ret
|
||||
|
||||
function %f_u_16_64(i16) -> i64 {
|
||||
block0(v0: i16):
|
||||
@@ -68,9 +104,15 @@ block0(v0: i16):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uxth w0, w0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; uxth w0, w0
|
||||
; ret
|
||||
|
||||
function %f_u_16_32(i16) -> i32 {
|
||||
block0(v0: i16):
|
||||
@@ -78,9 +120,15 @@ block0(v0: i16):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uxth w0, w0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; uxth w0, w0
|
||||
; ret
|
||||
|
||||
function %f_s_16_64(i16) -> i64 {
|
||||
block0(v0: i16):
|
||||
@@ -88,9 +136,15 @@ block0(v0: i16):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sxth x0, w0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; sxth x0, w0
|
||||
; ret
|
||||
|
||||
function %f_s_16_32(i16) -> i32 {
|
||||
block0(v0: i16):
|
||||
@@ -98,9 +152,15 @@ block0(v0: i16):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sxth w0, w0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; sxth w0, w0
|
||||
; ret
|
||||
|
||||
function %f_u_32_64(i32) -> i64 {
|
||||
block0(v0: i32):
|
||||
@@ -108,9 +168,15 @@ block0(v0: i32):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; mov w0, w0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov w0, w0
|
||||
; ret
|
||||
|
||||
function %f_s_32_64(i32) -> i64 {
|
||||
block0(v0: i32):
|
||||
@@ -118,7 +184,13 @@ block0(v0: i32):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sxtw x0, w0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; sxtw x0, w0
|
||||
; ret
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@ block0(v0: i8x16):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sshr v2.16b, v0.16b, #7
|
||||
; movz x5, #513
|
||||
@@ -20,6 +21,21 @@ block0(v0: i8x16):
|
||||
; addv h28, v26.8h
|
||||
; umov w0, v28.h[0]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; sshr v2.16b, v0.16b, #7
|
||||
; mov x5, #0x201
|
||||
; movk x5, #0x804, lsl #16
|
||||
; movk x5, #0x2010, lsl #32
|
||||
; movk x5, #0x8040, lsl #48
|
||||
; dup v16.2d, x5
|
||||
; and v22.16b, v2.16b, v16.16b
|
||||
; ext v24.16b, v22.16b, v22.16b, #8
|
||||
; zip1 v26.16b, v22.16b, v24.16b
|
||||
; addv h28, v26.8h
|
||||
; umov w0, v28.h[0]
|
||||
; ret
|
||||
|
||||
function %f2(i8x16) -> i16 {
|
||||
block0(v0: i8x16):
|
||||
@@ -27,6 +43,7 @@ block0(v0: i8x16):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sshr v2.16b, v0.16b, #7
|
||||
; movz x5, #513
|
||||
@@ -40,6 +57,21 @@ block0(v0: i8x16):
|
||||
; addv h28, v26.8h
|
||||
; umov w0, v28.h[0]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; sshr v2.16b, v0.16b, #7
|
||||
; mov x5, #0x201
|
||||
; movk x5, #0x804, lsl #16
|
||||
; movk x5, #0x2010, lsl #32
|
||||
; movk x5, #0x8040, lsl #48
|
||||
; dup v16.2d, x5
|
||||
; and v22.16b, v2.16b, v16.16b
|
||||
; ext v24.16b, v22.16b, v22.16b, #8
|
||||
; zip1 v26.16b, v22.16b, v24.16b
|
||||
; addv h28, v26.8h
|
||||
; umov w0, v28.h[0]
|
||||
; ret
|
||||
|
||||
function %f3(i16x8) -> i8 {
|
||||
block0(v0: i16x8):
|
||||
@@ -47,6 +79,7 @@ block0(v0: i16x8):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sshr v2.8h, v0.8h, #15
|
||||
; ldr q4, pc+8 ; b 20 ; data.f128 0x00800040002000100008000400020001
|
||||
@@ -54,6 +87,20 @@ block0(v0: i16x8):
|
||||
; addv h16, v6.8h
|
||||
; umov w0, v16.h[0]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; sshr v2.8h, v0.8h, #0xf
|
||||
; ldr q4, #0xc
|
||||
; b #0x1c
|
||||
; .byte 0x01, 0x00, 0x02, 0x00
|
||||
; .byte 0x04, 0x00, 0x08, 0x00
|
||||
; .byte 0x10, 0x00, 0x20, 0x00
|
||||
; .byte 0x40, 0x00, 0x80, 0x00
|
||||
; and v6.16b, v2.16b, v4.16b
|
||||
; addv h16, v6.8h
|
||||
; umov w0, v16.h[0]
|
||||
; ret
|
||||
|
||||
function %f4(i32x4) -> i8 {
|
||||
block0(v0: i32x4):
|
||||
@@ -61,6 +108,7 @@ block0(v0: i32x4):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sshr v2.4s, v0.4s, #31
|
||||
; ldr q4, pc+8 ; b 20 ; data.f128 0x00000008000000040000000200000001
|
||||
@@ -68,6 +116,20 @@ block0(v0: i32x4):
|
||||
; addv s16, v6.4s
|
||||
; mov w0, v16.s[0]
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; sshr v2.4s, v0.4s, #0x1f
|
||||
; ldr q4, #0xc
|
||||
; b #0x1c
|
||||
; .byte 0x01, 0x00, 0x00, 0x00
|
||||
; .byte 0x02, 0x00, 0x00, 0x00
|
||||
; .byte 0x04, 0x00, 0x00, 0x00
|
||||
; .byte 0x08, 0x00, 0x00, 0x00
|
||||
; and v6.16b, v2.16b, v4.16b
|
||||
; addv s16, v6.4s
|
||||
; mov w0, v16.s[0]
|
||||
; ret
|
||||
|
||||
function %f5(i64x2) -> i8 {
|
||||
block0(v0: i64x2):
|
||||
@@ -75,6 +137,7 @@ block0(v0: i64x2):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; mov x2, v0.d[1]
|
||||
; mov x4, v0.d[0]
|
||||
@@ -82,4 +145,13 @@ block0(v0: i64x2):
|
||||
; lsr x8, x4, #63
|
||||
; add x0, x8, x6, LSL 1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov x2, v0.d[1]
|
||||
; mov x4, v0.d[0]
|
||||
; lsr x6, x2, #0x3f
|
||||
; lsr x8, x4, #0x3f
|
||||
; add x0, x8, x6, lsl #1
|
||||
; ret
|
||||
|
||||
|
||||
@@ -10,11 +10,20 @@ block0(v0: i64, v1: i32):
|
||||
return v4
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sext.w a2,a1
|
||||
; add a2,a0,a2
|
||||
; lw a0,0(a2)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli a2, a1, 0x20
|
||||
; srai a2, a2, 0x20
|
||||
; add a2, a0, a2
|
||||
; lw a0, 0(a2)
|
||||
; ret
|
||||
|
||||
function %f6(i64, i32) -> i32 {
|
||||
block0(v0: i64, v1: i32):
|
||||
@@ -24,11 +33,20 @@ block0(v0: i64, v1: i32):
|
||||
return v4
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sext.w a2,a1
|
||||
; add a2,a2,a0
|
||||
; lw a0,0(a2)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli a2, a1, 0x20
|
||||
; srai a2, a2, 0x20
|
||||
; add a2, a2, a0
|
||||
; lw a0, 0(a2)
|
||||
; ret
|
||||
|
||||
function %f7(i32, i32) -> i32 {
|
||||
block0(v0: i32, v1: i32):
|
||||
@@ -39,12 +57,23 @@ block0(v0: i32, v1: i32):
|
||||
return v5
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uext.w a3,a0
|
||||
; uext.w a4,a1
|
||||
; add a3,a3,a4
|
||||
; lw a0,0(a3)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli a3, a0, 0x20
|
||||
; srli a3, a3, 0x20
|
||||
; slli a4, a1, 0x20
|
||||
; srli a4, a4, 0x20
|
||||
; add a3, a3, a4
|
||||
; lw a0, 0(a3)
|
||||
; ret
|
||||
|
||||
function %f8(i64, i32) -> i32 {
|
||||
block0(v0: i64, v1: i32):
|
||||
@@ -57,6 +86,7 @@ block0(v0: i64, v1: i32):
|
||||
return v7
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sext.w a4,a1
|
||||
; addi a4,a4,32
|
||||
@@ -64,6 +94,16 @@ block0(v0: i64, v1: i32):
|
||||
; add a4,a4,a4
|
||||
; lw a0,4(a4)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli a4, a1, 0x20
|
||||
; srai a4, a4, 0x20
|
||||
; addi a4, a4, 0x20
|
||||
; add a4, a4, a0
|
||||
; add a4, a4, a4
|
||||
; lw a0, 4(a4)
|
||||
; ret
|
||||
|
||||
function %f9(i64, i64, i64) -> i32 {
|
||||
block0(v0: i64, v1: i64, v2: i64):
|
||||
@@ -75,12 +115,21 @@ block0(v0: i64, v1: i64, v2: i64):
|
||||
return v7
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; add a4,a0,a1
|
||||
; add a4,a4,a2
|
||||
; addi a4,a4,48
|
||||
; lw a0,0(a4)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; add a4, a0, a1
|
||||
; add a4, a4, a2
|
||||
; addi a4, a4, 0x30
|
||||
; lw a0, 0(a4)
|
||||
; ret
|
||||
|
||||
function %f10(i64, i64, i64) -> i32 {
|
||||
block0(v0: i64, v1: i64, v2: i64):
|
||||
@@ -92,6 +141,7 @@ block0(v0: i64, v1: i64, v2: i64):
|
||||
return v7
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; add a6,a0,a1
|
||||
; add a6,a6,a2
|
||||
@@ -100,6 +150,16 @@ block0(v0: i64, v1: i64, v2: i64):
|
||||
; add t3,a6,a5
|
||||
; lw a0,0(t3)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; add a6, a0, a1
|
||||
; add a6, a6, a2
|
||||
; lui a5, 1
|
||||
; addi a5, a5, 4
|
||||
; add t3, a6, a5
|
||||
; lw a0, 0(t3)
|
||||
; ret
|
||||
|
||||
function %f10() -> i32 {
|
||||
block0:
|
||||
@@ -108,10 +168,17 @@ block0:
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; li t0,1234
|
||||
; lw a0,0(t0)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; addi t0, zero, 0x4d2
|
||||
; lw a0, 0(t0)
|
||||
; ret
|
||||
|
||||
function %f11(i64) -> i32 {
|
||||
block0(v0: i64):
|
||||
@@ -121,11 +188,19 @@ block0(v0: i64):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; lui a1,2048
|
||||
; add a2,a0,a1
|
||||
; lw a0,0(a2)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; lui a1, 0x800
|
||||
; add a2, a0, a1
|
||||
; lw a0, 0(a2)
|
||||
; ret
|
||||
|
||||
function %f12(i64) -> i32 {
|
||||
block0(v0: i64):
|
||||
@@ -135,10 +210,17 @@ block0(v0: i64):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; addi a0,a0,-4
|
||||
; lw a0,0(a0)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; addi a0, a0, -4
|
||||
; lw a0, 0(a0)
|
||||
; ret
|
||||
|
||||
function %f13(i64) -> i32 {
|
||||
block0(v0: i64):
|
||||
@@ -148,12 +230,21 @@ block0(v0: i64):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; lui a1,244141
|
||||
; addi a1,a1,2560
|
||||
; add a4,a0,a1
|
||||
; lw a0,0(a4)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; lui a1, 0x3b9ad
|
||||
; addi a1, a1, -0x600
|
||||
; add a4, a0, a1
|
||||
; lw a0, 0(a4)
|
||||
; ret
|
||||
|
||||
function %f14(i32) -> i32 {
|
||||
block0(v0: i32):
|
||||
@@ -162,10 +253,18 @@ block0(v0: i32):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sext.w a0,a0
|
||||
; lw a0,0(a0)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli a0, a0, 0x20
|
||||
; srai a0, a0, 0x20
|
||||
; lw a0, 0(a0)
|
||||
; ret
|
||||
|
||||
function %f15(i32, i32) -> i32 {
|
||||
block0(v0: i32, v1: i32):
|
||||
@@ -176,12 +275,23 @@ block0(v0: i32, v1: i32):
|
||||
return v5
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sext.w a3,a0
|
||||
; sext.w a4,a1
|
||||
; add a3,a3,a4
|
||||
; lw a0,0(a3)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli a3, a0, 0x20
|
||||
; srai a3, a3, 0x20
|
||||
; slli a4, a1, 0x20
|
||||
; srai a4, a4, 0x20
|
||||
; add a3, a3, a4
|
||||
; lw a0, 0(a3)
|
||||
; ret
|
||||
|
||||
function %f18(i64, i64, i64) -> i32 {
|
||||
block0(v0: i64, v1: i64, v2: i64):
|
||||
@@ -191,12 +301,22 @@ block0(v0: i64, v1: i64, v2: i64):
|
||||
return v5
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; lui a3,1048575
|
||||
; addi a3,a3,4094
|
||||
; uext.w a6,a3
|
||||
; lh a0,0(a6)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; lui a3, 0xfffff
|
||||
; addi a3, a3, -2
|
||||
; slli a6, a3, 0x20
|
||||
; srli a6, a6, 0x20
|
||||
; lh a0, 0(a6)
|
||||
; ret
|
||||
|
||||
function %f19(i64, i64, i64) -> i32 {
|
||||
block0(v0: i64, v1: i64, v2: i64):
|
||||
@@ -206,12 +326,22 @@ block0(v0: i64, v1: i64, v2: i64):
|
||||
return v5
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; lui a3,1
|
||||
; addi a3,a3,2
|
||||
; uext.w a6,a3
|
||||
; lh a0,0(a6)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; lui a3, 1
|
||||
; addi a3, a3, 2
|
||||
; slli a6, a3, 0x20
|
||||
; srli a6, a6, 0x20
|
||||
; lh a0, 0(a6)
|
||||
; ret
|
||||
|
||||
function %f20(i64, i64, i64) -> i32 {
|
||||
block0(v0: i64, v1: i64, v2: i64):
|
||||
@@ -221,12 +351,22 @@ block0(v0: i64, v1: i64, v2: i64):
|
||||
return v5
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; lui a3,1048575
|
||||
; addi a3,a3,4094
|
||||
; sext.w a6,a3
|
||||
; lh a0,0(a6)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; lui a3, 0xfffff
|
||||
; addi a3, a3, -2
|
||||
; slli a6, a3, 0x20
|
||||
; srai a6, a6, 0x20
|
||||
; lh a0, 0(a6)
|
||||
; ret
|
||||
|
||||
function %f21(i64, i64, i64) -> i32 {
|
||||
block0(v0: i64, v1: i64, v2: i64):
|
||||
@@ -236,12 +376,22 @@ block0(v0: i64, v1: i64, v2: i64):
|
||||
return v5
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; lui a3,1
|
||||
; addi a3,a3,2
|
||||
; sext.w a6,a3
|
||||
; lh a0,0(a6)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; lui a3, 1
|
||||
; addi a3, a3, 2
|
||||
; slli a6, a3, 0x20
|
||||
; srai a6, a6, 0x20
|
||||
; lh a0, 0(a6)
|
||||
; ret
|
||||
|
||||
function %i128(i64) -> i128 {
|
||||
block0(v0: i64):
|
||||
@@ -250,6 +400,7 @@ block0(v0: i64):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ld t2,0(a0)
|
||||
; mv a2,t2
|
||||
@@ -259,6 +410,17 @@ block0(v0: i64):
|
||||
; sd a1,8(a0)
|
||||
; mv a0,a2
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ld t2, 0(a0)
|
||||
; ori a2, t2, 0
|
||||
; ld a1, 8(a0)
|
||||
; ori a3, a2, 0
|
||||
; sd a3, 0(a0)
|
||||
; sd a1, 8(a0)
|
||||
; ori a0, a2, 0
|
||||
; ret
|
||||
|
||||
function %i128_imm_offset(i64) -> i128 {
|
||||
block0(v0: i64):
|
||||
@@ -267,6 +429,7 @@ block0(v0: i64):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ld t2,16(a0)
|
||||
; mv a2,t2
|
||||
@@ -276,6 +439,17 @@ block0(v0: i64):
|
||||
; sd a1,24(a0)
|
||||
; mv a0,a2
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ld t2, 0x10(a0)
|
||||
; ori a2, t2, 0
|
||||
; ld a1, 0x18(a0)
|
||||
; ori a3, a2, 0
|
||||
; sd a3, 0x10(a0)
|
||||
; sd a1, 0x18(a0)
|
||||
; ori a0, a2, 0
|
||||
; ret
|
||||
|
||||
function %i128_imm_offset_large(i64) -> i128 {
|
||||
block0(v0: i64):
|
||||
@@ -284,6 +458,7 @@ block0(v0: i64):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ld t2,504(a0)
|
||||
; mv a2,t2
|
||||
@@ -293,6 +468,17 @@ block0(v0: i64):
|
||||
; sd a1,512(a0)
|
||||
; mv a0,a2
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ld t2, 0x1f8(a0)
|
||||
; ori a2, t2, 0
|
||||
; ld a1, 0x200(a0)
|
||||
; ori a3, a2, 0
|
||||
; sd a3, 0x1f8(a0)
|
||||
; sd a1, 0x200(a0)
|
||||
; ori a0, a2, 0
|
||||
; ret
|
||||
|
||||
function %i128_imm_offset_negative_large(i64) -> i128 {
|
||||
block0(v0: i64):
|
||||
@@ -301,6 +487,7 @@ block0(v0: i64):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ld t2,-512(a0)
|
||||
; mv a2,t2
|
||||
@@ -310,6 +497,17 @@ block0(v0: i64):
|
||||
; sd a1,-504(a0)
|
||||
; mv a0,a2
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ld t2, -0x200(a0)
|
||||
; ori a2, t2, 0
|
||||
; ld a1, -0x1f8(a0)
|
||||
; ori a3, a2, 0
|
||||
; sd a3, -0x200(a0)
|
||||
; sd a1, -0x1f8(a0)
|
||||
; ori a0, a2, 0
|
||||
; ret
|
||||
|
||||
function %i128_add_offset(i64) -> i128 {
|
||||
block0(v0: i64):
|
||||
@@ -319,6 +517,7 @@ block0(v0: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; addi a2,a0,32
|
||||
; ld a0,0(a2)
|
||||
@@ -326,6 +525,15 @@ block0(v0: i64):
|
||||
; sd a0,0(a2)
|
||||
; sd a1,8(a2)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; addi a2, a0, 0x20
|
||||
; ld a0, 0(a2)
|
||||
; ld a1, 8(a2)
|
||||
; sd a0, 0(a2)
|
||||
; sd a1, 8(a2)
|
||||
; ret
|
||||
|
||||
function %i128_32bit_sextend_simple(i32) -> i128 {
|
||||
block0(v0: i32):
|
||||
@@ -335,6 +543,7 @@ block0(v0: i32):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sext.w a2,a0
|
||||
; ld a0,0(a2)
|
||||
@@ -342,6 +551,16 @@ block0(v0: i32):
|
||||
; sd a0,0(a2)
|
||||
; sd a1,8(a2)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli a2, a0, 0x20
|
||||
; srai a2, a2, 0x20
|
||||
; ld a0, 0(a2)
|
||||
; ld a1, 8(a2)
|
||||
; sd a0, 0(a2)
|
||||
; sd a1, 8(a2)
|
||||
; ret
|
||||
|
||||
function %i128_32bit_sextend(i64, i32) -> i128 {
|
||||
block0(v0: i64, v1: i32):
|
||||
@@ -353,6 +572,7 @@ block0(v0: i64, v1: i32):
|
||||
return v5
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sext.w a4,a1
|
||||
; add a4,a0,a4
|
||||
@@ -362,4 +582,16 @@ block0(v0: i64, v1: i32):
|
||||
; sd a0,0(a4)
|
||||
; sd a1,8(a4)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli a4, a1, 0x20
|
||||
; srai a4, a4, 0x20
|
||||
; add a4, a0, a4
|
||||
; addi a4, a4, 0x18
|
||||
; ld a0, 0(a4)
|
||||
; ld a1, 8(a4)
|
||||
; sd a0, 0(a4)
|
||||
; sd a1, 8(a4)
|
||||
; ret
|
||||
|
||||
|
||||
@@ -8,9 +8,15 @@ block0(v0: i64, v1: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; add a0,a0,a1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; add a0, a0, a1
|
||||
; ret
|
||||
|
||||
function %f2(i64, i64) -> i64 {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -18,9 +24,15 @@ block0(v0: i64, v1: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sub a0,a0,a1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; sub a0, a0, a1
|
||||
; ret
|
||||
|
||||
function %f3(i64, i64) -> i64 {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -28,9 +40,15 @@ block0(v0: i64, v1: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; mul a0,a0,a1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mul a0, a0, a1
|
||||
; ret
|
||||
|
||||
function %f4(i64, i64) -> i64 {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -38,9 +56,15 @@ block0(v0: i64, v1: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; mulhu a0,a0,a1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mulhu a0, a0, a1
|
||||
; ret
|
||||
|
||||
function %f5(i64, i64) -> i64 {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -48,9 +72,15 @@ block0(v0: i64, v1: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; mulh a0,a0,a1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mulh a0, a0, a1
|
||||
; ret
|
||||
|
||||
function %f6(i64, i64) -> i64 {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -58,6 +88,7 @@ block0(v0: i64, v1: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; li a2,-1
|
||||
; li a3,1
|
||||
@@ -69,6 +100,27 @@ block0(v0: i64, v1: i64):
|
||||
; trap_ifc int_divz##(zero eq a1)
|
||||
; div a0,a0,a1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; addi a2, zero, -1
|
||||
; addi a3, zero, 1
|
||||
; slli a4, a3, 0x3f
|
||||
; bne a2, a1, 0xc
|
||||
; addi a6, zero, 1
|
||||
; j 8
|
||||
; mv a6, zero
|
||||
; bne a4, a0, 0xc
|
||||
; addi t3, zero, 1
|
||||
; j 8
|
||||
; mv t3, zero
|
||||
; and t0, a6, t3
|
||||
; beqz t0, 8
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; trap: int_ovf
|
||||
; bne zero, a1, 8
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; trap: int_divz
|
||||
; div a0, a0, a1
|
||||
; ret
|
||||
|
||||
function %f7(i64) -> i64 {
|
||||
block0(v0: i64):
|
||||
@@ -77,6 +129,7 @@ block0(v0: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; li t2,2
|
||||
; li a1,-1
|
||||
@@ -91,6 +144,30 @@ block0(v0: i64):
|
||||
; li a4,2
|
||||
; div a0,a0,a4
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; addi t2, zero, 2
|
||||
; addi a1, zero, -1
|
||||
; addi a3, zero, 1
|
||||
; slli a5, a3, 0x3f
|
||||
; bne a1, t2, 0xc
|
||||
; addi a7, zero, 1
|
||||
; j 8
|
||||
; mv a7, zero
|
||||
; bne a5, a0, 0xc
|
||||
; addi t4, zero, 1
|
||||
; j 8
|
||||
; mv t4, zero
|
||||
; and t1, a7, t4
|
||||
; beqz t1, 8
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; trap: int_ovf
|
||||
; addi a1, zero, 2
|
||||
; bne zero, a1, 8
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; trap: int_divz
|
||||
; addi a4, zero, 2
|
||||
; div a0, a0, a4
|
||||
; ret
|
||||
|
||||
function %f8(i64, i64) -> i64 {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -98,10 +175,18 @@ block0(v0: i64, v1: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; trap_ifc int_divz##(zero eq a1)
|
||||
; divu a0,a0,a1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; bne zero, a1, 8
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; trap: int_divz
|
||||
; divu a0, a0, a1
|
||||
; ret
|
||||
|
||||
function %f9(i64) -> i64 {
|
||||
block0(v0: i64):
|
||||
@@ -110,12 +195,22 @@ block0(v0: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; li t2,2
|
||||
; trap_ifc int_divz##(zero eq t2)
|
||||
; li a2,2
|
||||
; divu a0,a0,a2
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; addi t2, zero, 2
|
||||
; bne zero, t2, 8
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; trap: int_divz
|
||||
; addi a2, zero, 2
|
||||
; divu a0, a0, a2
|
||||
; ret
|
||||
|
||||
function %f10(i64, i64) -> i64 {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -123,10 +218,18 @@ block0(v0: i64, v1: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; trap_ifc int_divz##(zero eq a1)
|
||||
; rem a0,a0,a1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; bne zero, a1, 8
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; trap: int_divz
|
||||
; rem a0, a0, a1
|
||||
; ret
|
||||
|
||||
function %f11(i64, i64) -> i64 {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -134,10 +237,18 @@ block0(v0: i64, v1: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; trap_ifc int_divz##(zero eq a1)
|
||||
; remu a0,a0,a1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; bne zero, a1, 8
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; trap: int_divz
|
||||
; remu a0, a0, a1
|
||||
; ret
|
||||
|
||||
function %f12(i32, i32) -> i32 {
|
||||
block0(v0: i32, v1: i32):
|
||||
@@ -145,6 +256,7 @@ block0(v0: i32, v1: i32):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sext.w a0,a0
|
||||
; sext.w a2,a1
|
||||
@@ -159,6 +271,32 @@ block0(v0: i32, v1: i32):
|
||||
; trap_ifc int_divz##(zero eq a2)
|
||||
; divw a0,a0,a2
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli a0, a0, 0x20
|
||||
; srai a0, a0, 0x20
|
||||
; slli a2, a1, 0x20
|
||||
; srai a2, a2, 0x20
|
||||
; addi a4, zero, -1
|
||||
; addi a6, zero, 1
|
||||
; slli t3, a6, 0x3f
|
||||
; slli t0, a0, 0x20
|
||||
; bne a4, a2, 0xc
|
||||
; addi t2, zero, 1
|
||||
; j 8
|
||||
; mv t2, zero
|
||||
; bne t3, t0, 0xc
|
||||
; addi a1, zero, 1
|
||||
; j 8
|
||||
; mv a1, zero
|
||||
; and a3, t2, a1
|
||||
; beqz a3, 8
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; trap: int_ovf
|
||||
; bne zero, a2, 8
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; trap: int_divz
|
||||
; divw a0, a0, a2
|
||||
; ret
|
||||
|
||||
function %f13(i32) -> i32 {
|
||||
block0(v0: i32):
|
||||
@@ -167,6 +305,7 @@ block0(v0: i32):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sext.w t2,a0
|
||||
; li a1,2
|
||||
@@ -182,6 +321,33 @@ block0(v0: i32):
|
||||
; trap_ifc int_divz##(zero eq a3)
|
||||
; divw a0,t2,a3
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli t2, a0, 0x20
|
||||
; srai t2, t2, 0x20
|
||||
; addi a1, zero, 2
|
||||
; slli a3, a1, 0x20
|
||||
; srai a3, a3, 0x20
|
||||
; addi a5, zero, -1
|
||||
; addi a7, zero, 1
|
||||
; slli t4, a7, 0x3f
|
||||
; slli t1, t2, 0x20
|
||||
; bne a5, a3, 0xc
|
||||
; addi a0, zero, 1
|
||||
; j 8
|
||||
; mv a0, zero
|
||||
; bne t4, t1, 0xc
|
||||
; addi a2, zero, 1
|
||||
; j 8
|
||||
; mv a2, zero
|
||||
; and a4, a0, a2
|
||||
; beqz a4, 8
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; trap: int_ovf
|
||||
; bne zero, a3, 8
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; trap: int_divz
|
||||
; divw a0, t2, a3
|
||||
; ret
|
||||
|
||||
function %f14(i32, i32) -> i32 {
|
||||
block0(v0: i32, v1: i32):
|
||||
@@ -189,6 +355,7 @@ block0(v0: i32, v1: i32):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; mv a5,a0
|
||||
; uext.w a0,a1
|
||||
@@ -196,6 +363,18 @@ block0(v0: i32, v1: i32):
|
||||
; uext.w a3,a5
|
||||
; divuw a0,a3,a0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ori a5, a0, 0
|
||||
; slli a0, a1, 0x20
|
||||
; srli a0, a0, 0x20
|
||||
; bne zero, a0, 8
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; trap: int_divz
|
||||
; slli a3, a5, 0x20
|
||||
; srli a3, a3, 0x20
|
||||
; divuw a0, a3, a0
|
||||
; ret
|
||||
|
||||
function %f15(i32) -> i32 {
|
||||
block0(v0: i32):
|
||||
@@ -204,6 +383,7 @@ block0(v0: i32):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; li t2,2
|
||||
; uext.w a1,t2
|
||||
@@ -211,6 +391,18 @@ block0(v0: i32):
|
||||
; uext.w a4,a0
|
||||
; divuw a0,a4,a1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; addi t2, zero, 2
|
||||
; slli a1, t2, 0x20
|
||||
; srli a1, a1, 0x20
|
||||
; bne zero, a1, 8
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; trap: int_divz
|
||||
; slli a4, a0, 0x20
|
||||
; srli a4, a4, 0x20
|
||||
; divuw a0, a4, a1
|
||||
; ret
|
||||
|
||||
function %f16(i32, i32) -> i32 {
|
||||
block0(v0: i32, v1: i32):
|
||||
@@ -218,11 +410,21 @@ block0(v0: i32, v1: i32):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sext.w a1,a1
|
||||
; trap_ifc int_divz##(zero eq a1)
|
||||
; remw a0,a0,a1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli a1, a1, 0x20
|
||||
; srai a1, a1, 0x20
|
||||
; bne zero, a1, 8
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; trap: int_divz
|
||||
; remw a0, a0, a1
|
||||
; ret
|
||||
|
||||
function %f17(i32, i32) -> i32 {
|
||||
block0(v0: i32, v1: i32):
|
||||
@@ -230,11 +432,21 @@ block0(v0: i32, v1: i32):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uext.w a1,a1
|
||||
; trap_ifc int_divz##(zero eq a1)
|
||||
; remuw a0,a0,a1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli a1, a1, 0x20
|
||||
; srli a1, a1, 0x20
|
||||
; bne zero, a1, 8
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; trap: int_divz
|
||||
; remuw a0, a0, a1
|
||||
; ret
|
||||
|
||||
function %f18(i64, i64) -> i64 {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -242,9 +454,15 @@ block0(v0: i64, v1: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; and a0,a0,a1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; and a0, a0, a1
|
||||
; ret
|
||||
|
||||
function %f19(i64, i64) -> i64 {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -252,9 +470,15 @@ block0(v0: i64, v1: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; or a0,a0,a1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; or a0, a0, a1
|
||||
; ret
|
||||
|
||||
function %f20(i64, i64) -> i64 {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -262,9 +486,15 @@ block0(v0: i64, v1: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; xor a0,a0,a1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; xor a0, a0, a1
|
||||
; ret
|
||||
|
||||
function %f21(i64, i64) -> i64 {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -272,10 +502,17 @@ block0(v0: i64, v1: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; not a1,a1
|
||||
; and a0,a0,a1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; not a1, a1
|
||||
; and a0, a0, a1
|
||||
; ret
|
||||
|
||||
function %f22(i64, i64) -> i64 {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -283,10 +520,17 @@ block0(v0: i64, v1: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; not a1,a1
|
||||
; or a0,a0,a1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; not a1, a1
|
||||
; or a0, a0, a1
|
||||
; ret
|
||||
|
||||
function %f23(i64, i64) -> i64 {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -294,10 +538,17 @@ block0(v0: i64, v1: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; not a1,a1
|
||||
; xor a0,a0,a1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; not a1, a1
|
||||
; xor a0, a0, a1
|
||||
; ret
|
||||
|
||||
function %f24(i64, i64) -> i64 {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -305,9 +556,15 @@ block0(v0: i64, v1: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; not a0,a0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; not a0, a0
|
||||
; ret
|
||||
|
||||
function %f25(i32, i32) -> i32 {
|
||||
block0(v0: i32, v1: i32):
|
||||
@@ -317,10 +574,17 @@ block0(v0: i32, v1: i32):
|
||||
return v4
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; slliw a2,a0,53
|
||||
; subw a0,a1,a2
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slliw a2, a0, 0x15
|
||||
; subw a0, a1, a2
|
||||
; ret
|
||||
|
||||
function %f26(i32) -> i32 {
|
||||
block0(v0: i32):
|
||||
@@ -329,9 +593,15 @@ block0(v0: i32):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; addiw a0,a0,-1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; addiw a0, a0, -1
|
||||
; ret
|
||||
|
||||
function %f27(i32) -> i32 {
|
||||
block0(v0: i32):
|
||||
@@ -340,10 +610,17 @@ block0(v0: i32):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; li t2,-1
|
||||
; subw a0,a0,t2
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; addi t2, zero, -1
|
||||
; subw a0, a0, t2
|
||||
; ret
|
||||
|
||||
function %f28(i64) -> i64 {
|
||||
block0(v0: i64):
|
||||
@@ -352,10 +629,17 @@ block0(v0: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; li t2,-1
|
||||
; sub a0,a0,t2
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; addi t2, zero, -1
|
||||
; sub a0, a0, t2
|
||||
; ret
|
||||
|
||||
function %f29(i64) -> i64 {
|
||||
block0(v0: i64):
|
||||
@@ -364,10 +648,17 @@ block0(v0: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; li t2,1
|
||||
; sub a0,zero,t2
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; addi t2, zero, 1
|
||||
; neg a0, t2
|
||||
; ret
|
||||
|
||||
function %add_i128(i128, i128) -> i128 {
|
||||
block0(v0: i128, v1: i128):
|
||||
@@ -375,12 +666,21 @@ block0(v0: i128, v1: i128):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; add a0,a0,a2
|
||||
; sltu a4,a0,a2
|
||||
; add a6,a1,a3
|
||||
; add a1,a6,a4
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; add a0, a0, a2
|
||||
; sltu a4, a0, a2
|
||||
; add a6, a1, a3
|
||||
; add a1, a6, a4
|
||||
; ret
|
||||
|
||||
function %sub_i128(i128, i128) -> i128 {
|
||||
block0(v0: i128, v1: i128):
|
||||
@@ -388,6 +688,7 @@ block0(v0: i128, v1: i128):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sub a2,a0,a2
|
||||
; mv a7,a2
|
||||
@@ -396,6 +697,16 @@ block0(v0: i128, v1: i128):
|
||||
; sub a6,a1,a3
|
||||
; sub a1,a6,a4
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; sub a2, a0, a2
|
||||
; ori a7, a2, 0
|
||||
; sltu a4, a0, a7
|
||||
; ori a0, a7, 0
|
||||
; sub a6, a1, a3
|
||||
; sub a1, a6, a4
|
||||
; ret
|
||||
|
||||
function %add_mul_2(i32, i32, i32) -> i32 {
|
||||
block0(v0: i32, v1: i32, v2: i32):
|
||||
@@ -404,10 +715,17 @@ block0(v0: i32, v1: i32, v2: i32):
|
||||
return v4
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; mulw a2,a1,a2
|
||||
; addw a0,a2,a0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mulw a2, a1, a2
|
||||
; addw a0, a2, a0
|
||||
; ret
|
||||
|
||||
function %msub_i32(i32, i32, i32) -> i32 {
|
||||
block0(v0: i32, v1: i32, v2: i32):
|
||||
@@ -416,10 +734,17 @@ block0(v0: i32, v1: i32, v2: i32):
|
||||
return v4
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; mulw a2,a1,a2
|
||||
; subw a0,a0,a2
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mulw a2, a1, a2
|
||||
; subw a0, a0, a2
|
||||
; ret
|
||||
|
||||
function %msub_i64(i64, i64, i64) -> i64 {
|
||||
block0(v0: i64, v1: i64, v2: i64):
|
||||
@@ -428,10 +753,17 @@ block0(v0: i64, v1: i64, v2: i64):
|
||||
return v4
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; mul a2,a1,a2
|
||||
; sub a0,a0,a2
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mul a2, a1, a2
|
||||
; sub a0, a0, a2
|
||||
; ret
|
||||
|
||||
function %imul_sub_i32(i32, i32, i32) -> i32 {
|
||||
block0(v0: i32, v1: i32, v2: i32):
|
||||
@@ -440,10 +772,17 @@ block0(v0: i32, v1: i32, v2: i32):
|
||||
return v4
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; mulw a2,a1,a2
|
||||
; subw a0,a2,a0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mulw a2, a1, a2
|
||||
; subw a0, a2, a0
|
||||
; ret
|
||||
|
||||
function %imul_sub_i64(i64, i64, i64) -> i64 {
|
||||
block0(v0: i64, v1: i64, v2: i64):
|
||||
@@ -452,10 +791,17 @@ block0(v0: i64, v1: i64, v2: i64):
|
||||
return v4
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; mul a2,a1,a2
|
||||
; sub a0,a2,a0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mul a2, a1, a2
|
||||
; sub a0, a2, a0
|
||||
; ret
|
||||
|
||||
function %srem_const (i64) -> i64 {
|
||||
block0(v0: i64):
|
||||
@@ -464,12 +810,22 @@ block0(v0: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; li t2,2
|
||||
; trap_ifc int_divz##(zero eq t2)
|
||||
; li a2,2
|
||||
; rem a0,a0,a2
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; addi t2, zero, 2
|
||||
; bne zero, t2, 8
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; trap: int_divz
|
||||
; addi a2, zero, 2
|
||||
; rem a0, a0, a2
|
||||
; ret
|
||||
|
||||
function %urem_const (i64) -> i64 {
|
||||
block0(v0: i64):
|
||||
@@ -478,12 +834,22 @@ block0(v0: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; li t2,2
|
||||
; trap_ifc int_divz##(zero eq t2)
|
||||
; li a2,2
|
||||
; remu a0,a0,a2
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; addi t2, zero, 2
|
||||
; bne zero, t2, 8
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; trap: int_divz
|
||||
; addi a2, zero, 2
|
||||
; remu a0, a0, a2
|
||||
; ret
|
||||
|
||||
function %sdiv_minus_one(i64) -> i64 {
|
||||
block0(v0: i64):
|
||||
@@ -492,6 +858,7 @@ block0(v0: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; li t2,-1
|
||||
; li a1,-1
|
||||
@@ -506,4 +873,28 @@ block0(v0: i64):
|
||||
; li a4,-1
|
||||
; div a0,a0,a4
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; addi t2, zero, -1
|
||||
; addi a1, zero, -1
|
||||
; addi a3, zero, 1
|
||||
; slli a5, a3, 0x3f
|
||||
; bne a1, t2, 0xc
|
||||
; addi a7, zero, 1
|
||||
; j 8
|
||||
; mv a7, zero
|
||||
; bne a5, a0, 0xc
|
||||
; addi t4, zero, 1
|
||||
; j 8
|
||||
; mv t4, zero
|
||||
; and t1, a7, t4
|
||||
; beqz t1, 8
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; trap: int_ovf
|
||||
; addi a1, zero, -1
|
||||
; bne zero, a1, 8
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; trap: int_divz
|
||||
; addi a4, zero, -1
|
||||
; div a0, a0, a4
|
||||
; ret
|
||||
|
||||
|
||||
@@ -8,9 +8,15 @@ block0(v0: i64, v1: i64):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; amoadd.d.aqrl a0,a1,(a0)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; amoadd.d.aqrl a0, a1, (a0)
|
||||
; ret
|
||||
|
||||
function %atomic_rmw_add_i32(i64, i32) {
|
||||
block0(v0: i64, v1: i32):
|
||||
@@ -18,9 +24,15 @@ block0(v0: i64, v1: i32):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; amoadd.w.aqrl a0,a1,(a0)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; amoadd.w.aqrl a0, a1, (a0)
|
||||
; ret
|
||||
|
||||
function %atomic_rmw_sub_i64(i64, i64) {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -28,10 +40,17 @@ block0(v0: i64, v1: i64):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sub a1,zero,a1
|
||||
; amoadd.d.aqrl a2,a1,(a0)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; neg a1, a1
|
||||
; amoadd.d.aqrl a2, a1, (a0)
|
||||
; ret
|
||||
|
||||
function %atomic_rmw_sub_i32(i64, i32) {
|
||||
block0(v0: i64, v1: i32):
|
||||
@@ -39,10 +58,17 @@ block0(v0: i64, v1: i32):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sub a1,zero,a1
|
||||
; amoadd.w.aqrl a2,a1,(a0)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; neg a1, a1
|
||||
; amoadd.w.aqrl a2, a1, (a0)
|
||||
; ret
|
||||
|
||||
function %atomic_rmw_and_i64(i64, i64) {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -50,9 +76,15 @@ block0(v0: i64, v1: i64):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; amoand.d.aqrl a0,a1,(a0)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; amoand.d.aqrl a0, a1, (a0)
|
||||
; ret
|
||||
|
||||
function %atomic_rmw_and_i32(i64, i32) {
|
||||
block0(v0: i64, v1: i32):
|
||||
@@ -60,9 +92,15 @@ block0(v0: i64, v1: i32):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; amoand.w.aqrl a0,a1,(a0)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; amoand.w.aqrl a0, a1, (a0)
|
||||
; ret
|
||||
|
||||
function %atomic_rmw_nand_i64(i64, i64) {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -70,11 +108,23 @@ block0(v0: i64, v1: i64):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; mv a3,a0
|
||||
; mv a2,a1
|
||||
; atomic_rmw.i64 nand a0,a2,(a3)##t0=a1 offset=zero
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ori a3, a0, 0
|
||||
; ori a2, a1, 0
|
||||
; lr.d.aqrl a0, (a3)
|
||||
; and a1, a2, a0
|
||||
; not a1, a1
|
||||
; sc.d.aqrl a1, a1, (a3)
|
||||
; bnez a1, -0x10
|
||||
; ret
|
||||
|
||||
function %atomic_rmw_nand_i32(i64, i32) {
|
||||
block0(v0: i64, v1: i32):
|
||||
@@ -82,11 +132,23 @@ block0(v0: i64, v1: i32):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; mv a3,a0
|
||||
; mv a2,a1
|
||||
; atomic_rmw.i32 nand a0,a2,(a3)##t0=a1 offset=zero
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ori a3, a0, 0
|
||||
; ori a2, a1, 0
|
||||
; lr.w.aqrl a0, (a3)
|
||||
; and a1, a2, a0
|
||||
; not a1, a1
|
||||
; sc.w.aqrl a1, a1, (a3)
|
||||
; bnez a1, -0x10
|
||||
; ret
|
||||
|
||||
function %atomic_rmw_or_i64(i64, i64) {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -94,9 +156,15 @@ block0(v0: i64, v1: i64):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; amoor.d.aqrl a0,a1,(a0)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; amoor.d.aqrl a0, a1, (a0)
|
||||
; ret
|
||||
|
||||
function %atomic_rmw_or_i32(i64, i32) {
|
||||
block0(v0: i64, v1: i32):
|
||||
@@ -104,9 +172,15 @@ block0(v0: i64, v1: i32):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; amoor.w.aqrl a0,a1,(a0)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; amoor.w.aqrl a0, a1, (a0)
|
||||
; ret
|
||||
|
||||
function %atomic_rmw_xor_i64(i64, i64) {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -114,9 +188,15 @@ block0(v0: i64, v1: i64):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; amoxor.d.aqrl a0,a1,(a0)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; amoxor.d.aqrl a0, a1, (a0)
|
||||
; ret
|
||||
|
||||
function %atomic_rmw_xor_i32(i64, i32) {
|
||||
block0(v0: i64, v1: i32):
|
||||
@@ -124,9 +204,15 @@ block0(v0: i64, v1: i32):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; amoxor.w.aqrl a0,a1,(a0)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; amoxor.w.aqrl a0, a1, (a0)
|
||||
; ret
|
||||
|
||||
function %atomic_rmw_smax_i64(i64, i64) {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -134,9 +220,15 @@ block0(v0: i64, v1: i64):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; amomax.d.aqrl a0,a1,(a0)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; amomax.d.aqrl a0, a1, (a0)
|
||||
; ret
|
||||
|
||||
function %atomic_rmw_smax_i32(i64, i32) {
|
||||
block0(v0: i64, v1: i32):
|
||||
@@ -144,9 +236,15 @@ block0(v0: i64, v1: i32):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; amomax.w.aqrl a0,a1,(a0)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; amomax.w.aqrl a0, a1, (a0)
|
||||
; ret
|
||||
|
||||
function %atomic_rmw_umax_i64(i64, i64) {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -154,9 +252,15 @@ block0(v0: i64, v1: i64):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; amomaxu.d.aqrl a0,a1,(a0)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; amomaxu.d.aqrl a0, a1, (a0)
|
||||
; ret
|
||||
|
||||
function %atomic_rmw_umax_i32(i64, i32) {
|
||||
block0(v0: i64, v1: i32):
|
||||
@@ -164,9 +268,15 @@ block0(v0: i64, v1: i32):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; amomaxu.w.aqrl a0,a1,(a0)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; amomaxu.w.aqrl a0, a1, (a0)
|
||||
; ret
|
||||
|
||||
function %atomic_rmw_smin_i64(i64, i64) {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -174,9 +284,15 @@ block0(v0: i64, v1: i64):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; amomin.d.aqrl a0,a1,(a0)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; amomin.d.aqrl a0, a1, (a0)
|
||||
; ret
|
||||
|
||||
function %atomic_rmw_smin_i32(i64, i32) {
|
||||
block0(v0: i64, v1: i32):
|
||||
@@ -184,9 +300,15 @@ block0(v0: i64, v1: i32):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; amomin.w.aqrl a0,a1,(a0)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; amomin.w.aqrl a0, a1, (a0)
|
||||
; ret
|
||||
|
||||
function %atomic_rmw_umin_i64(i64, i64) {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -194,9 +316,15 @@ block0(v0: i64, v1: i64):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; amominu.d.aqrl a0,a1,(a0)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; amominu.d.aqrl a0, a1, (a0)
|
||||
; ret
|
||||
|
||||
function %atomic_rmw_umin_i32(i64, i32) {
|
||||
block0(v0: i64, v1: i32):
|
||||
@@ -204,7 +332,13 @@ block0(v0: i64, v1: i32):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; amominu.w.aqrl a0,a1,(a0)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; amominu.w.aqrl a0, a1, (a0)
|
||||
; ret
|
||||
|
||||
|
||||
@@ -8,9 +8,17 @@ block0(v0: i64):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; atomic_load.i64 a0,(a0)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fence rw, rw
|
||||
; ld a0, 0(a0)
|
||||
; fence r, rw
|
||||
; ret
|
||||
|
||||
function %atomic_load_i32(i64) -> i32 {
|
||||
block0(v0: i64):
|
||||
@@ -18,9 +26,17 @@ block0(v0: i64):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; atomic_load.i32 a0,(a0)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fence rw, rw
|
||||
; lw a0, 0(a0)
|
||||
; fence r, rw
|
||||
; ret
|
||||
|
||||
function %atomic_load_i32_i64(i64) -> i64 {
|
||||
block0(v0: i64):
|
||||
@@ -29,8 +45,18 @@ block0(v0: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; atomic_load.i32 a0,(a0)
|
||||
; uext.w a0,a0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fence rw, rw
|
||||
; lw a0, 0(a0)
|
||||
; fence r, rw
|
||||
; slli a0, a0, 0x20
|
||||
; srli a0, a0, 0x20
|
||||
; ret
|
||||
|
||||
|
||||
@@ -8,9 +8,16 @@ block0(v0: i64, v1: i64):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; atomic_store.i64 a0,(a1)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fence rw, w
|
||||
; sd a0, 0(a1)
|
||||
; ret
|
||||
|
||||
function %atomic_store_i64_sym(i64) {
|
||||
gv0 = symbol colocated %sym
|
||||
@@ -20,10 +27,22 @@ block0(v0: i64):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; load_sym t2,%sym+0
|
||||
; atomic_store.i64 a0,(t2)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; auipc t2, 0
|
||||
; ld t2, 0xc(t2)
|
||||
; j 0xc
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %sym 0
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; fence rw, w
|
||||
; sd a0, 0(t2)
|
||||
; ret
|
||||
|
||||
function %atomic_store_imm_i64(i64) {
|
||||
block0(v0: i64):
|
||||
@@ -32,11 +51,20 @@ block0(v0: i64):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; lui a1,3
|
||||
; addi a1,a1,57
|
||||
; atomic_store.i64 a1,(a0)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; lui a1, 3
|
||||
; addi a1, a1, 0x39
|
||||
; fence rw, w
|
||||
; sd a1, 0(a0)
|
||||
; ret
|
||||
|
||||
function %atomic_store_i32(i32, i64) {
|
||||
block0(v0: i32, v1: i64):
|
||||
@@ -44,9 +72,16 @@ block0(v0: i32, v1: i64):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; atomic_store.i32 a0,(a1)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fence rw, w
|
||||
; sw a0, 0(a1)
|
||||
; ret
|
||||
|
||||
function %atomic_store_i32_sym(i32) {
|
||||
gv0 = symbol colocated %sym
|
||||
@@ -56,10 +91,22 @@ block0(v0: i32):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; load_sym t2,%sym+0
|
||||
; atomic_store.i32 a0,(t2)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; auipc t2, 0
|
||||
; ld t2, 0xc(t2)
|
||||
; j 0xc
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %sym 0
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; fence rw, w
|
||||
; sw a0, 0(t2)
|
||||
; ret
|
||||
|
||||
function %atomic_store_imm_i32(i64) {
|
||||
block0(v0: i64):
|
||||
@@ -68,9 +115,18 @@ block0(v0: i64):
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; lui a1,3
|
||||
; addi a1,a1,57
|
||||
; atomic_store.i32 a1,(a0)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; lui a1, 3
|
||||
; addi a1, a1, 0x39
|
||||
; fence rw, w
|
||||
; sw a1, 0(a0)
|
||||
; ret
|
||||
|
||||
|
||||
@@ -8,9 +8,15 @@ block0(v0: i32, v1: i32):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; andn a0,a0,a1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; .byte 0x33, 0x75, 0xb5, 0x40
|
||||
; ret
|
||||
|
||||
function %band_not_i32_reversed(i32, i32) -> i32 {
|
||||
block0(v0: i32, v1: i32):
|
||||
@@ -19,9 +25,15 @@ block0(v0: i32, v1: i32):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; andn a0,a1,a0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; .byte 0x33, 0xf5, 0xa5, 0x40
|
||||
; ret
|
||||
|
||||
function %bor_not_i32(i32, i32) -> i32 {
|
||||
block0(v0: i32, v1: i32):
|
||||
@@ -29,9 +41,15 @@ block0(v0: i32, v1: i32):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; orn a0,a0,a1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; .byte 0x33, 0x65, 0xb5, 0x40
|
||||
; ret
|
||||
|
||||
function %bor_not_i32_reversed(i32, i32) -> i32 {
|
||||
block0(v0: i32, v1: i32):
|
||||
@@ -40,6 +58,13 @@ block0(v0: i32, v1: i32):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; orn a0,a1,a0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; .byte 0x33, 0xe5, 0xa5, 0x40
|
||||
; ret
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -9,6 +9,7 @@ block0(v0: i64, v1: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; add sp,-16
|
||||
; sd ra,8(sp)
|
||||
; sd fp,0(sp)
|
||||
@@ -19,4 +20,16 @@ block0(v0: i64, v1: i64):
|
||||
; ld fp,0(sp)
|
||||
; add sp,+16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; addi sp, sp, -0x10
|
||||
; sd ra, 8(sp)
|
||||
; sd s0, 0(sp)
|
||||
; ori s0, sp, 0
|
||||
; block0: ; offset 0x10
|
||||
; jalr a1
|
||||
; ld ra, 8(sp)
|
||||
; ld s0, 0(sp)
|
||||
; addi sp, sp, 0x10
|
||||
; ret
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@ block0(v0: i64):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; add sp,-16
|
||||
; sd ra,8(sp)
|
||||
; sd fp,0(sp)
|
||||
@@ -21,6 +22,23 @@ block0(v0: i64):
|
||||
; ld fp,0(sp)
|
||||
; add sp,+16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; addi sp, sp, -0x10
|
||||
; sd ra, 8(sp)
|
||||
; sd s0, 0(sp)
|
||||
; ori s0, sp, 0
|
||||
; block0: ; offset 0x10
|
||||
; auipc a1, 0
|
||||
; ld a1, 0xc(a1)
|
||||
; j 0xc
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %g 0
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; jalr a1
|
||||
; ld ra, 8(sp)
|
||||
; ld s0, 0(sp)
|
||||
; addi sp, sp, 0x10
|
||||
; ret
|
||||
|
||||
function %f2(i32) -> i64 {
|
||||
fn0 = %g(i32 uext) -> i64
|
||||
@@ -30,6 +48,7 @@ block0(v0: i32):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; add sp,-16
|
||||
; sd ra,8(sp)
|
||||
; sd fp,0(sp)
|
||||
@@ -42,15 +61,41 @@ block0(v0: i32):
|
||||
; ld fp,0(sp)
|
||||
; add sp,+16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; addi sp, sp, -0x10
|
||||
; sd ra, 8(sp)
|
||||
; sd s0, 0(sp)
|
||||
; ori s0, sp, 0
|
||||
; block0: ; offset 0x10
|
||||
; slli a0, a0, 0x20
|
||||
; srli a0, a0, 0x20
|
||||
; auipc a2, 0
|
||||
; ld a2, 0xc(a2)
|
||||
; j 0xc
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %g 0
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; jalr a2
|
||||
; ld ra, 8(sp)
|
||||
; ld s0, 0(sp)
|
||||
; addi sp, sp, 0x10
|
||||
; ret
|
||||
|
||||
function %f3(i32) -> i32 uext {
|
||||
block0(v0: i32):
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uext.w a0,a0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli a0, a0, 0x20
|
||||
; srli a0, a0, 0x20
|
||||
; ret
|
||||
|
||||
function %f4(i32) -> i64 {
|
||||
fn0 = %g(i32 sext) -> i64
|
||||
@@ -60,6 +105,7 @@ block0(v0: i32):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; add sp,-16
|
||||
; sd ra,8(sp)
|
||||
; sd fp,0(sp)
|
||||
@@ -72,15 +118,41 @@ block0(v0: i32):
|
||||
; ld fp,0(sp)
|
||||
; add sp,+16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; addi sp, sp, -0x10
|
||||
; sd ra, 8(sp)
|
||||
; sd s0, 0(sp)
|
||||
; ori s0, sp, 0
|
||||
; block0: ; offset 0x10
|
||||
; slli a0, a0, 0x20
|
||||
; srai a0, a0, 0x20
|
||||
; auipc a2, 0
|
||||
; ld a2, 0xc(a2)
|
||||
; j 0xc
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %g 0
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; jalr a2
|
||||
; ld ra, 8(sp)
|
||||
; ld s0, 0(sp)
|
||||
; addi sp, sp, 0x10
|
||||
; ret
|
||||
|
||||
function %f5(i32) -> i32 sext {
|
||||
block0(v0: i32):
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sext.w a0,a0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli a0, a0, 0x20
|
||||
; srai a0, a0, 0x20
|
||||
; ret
|
||||
|
||||
function %f6(i8) -> i64 {
|
||||
fn0 = %g(i32, i32, i32, i32, i32, i32, i32, i32, i8 sext) -> i64
|
||||
@@ -91,6 +163,7 @@ block0(v0: i8):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; add sp,-16
|
||||
; sd ra,8(sp)
|
||||
; sd fp,0(sp)
|
||||
@@ -117,6 +190,37 @@ block0(v0: i8):
|
||||
; ld fp,0(sp)
|
||||
; add sp,+16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; addi sp, sp, -0x10
|
||||
; sd ra, 8(sp)
|
||||
; sd s0, 0(sp)
|
||||
; ori s0, sp, 0
|
||||
; block0: ; offset 0x10
|
||||
; ori t3, a0, 0
|
||||
; addi sp, sp, -0x10
|
||||
; addi a0, zero, 0x2a
|
||||
; addi a1, zero, 0x2a
|
||||
; addi a2, zero, 0x2a
|
||||
; addi a3, zero, 0x2a
|
||||
; addi a4, zero, 0x2a
|
||||
; addi a5, zero, 0x2a
|
||||
; addi a6, zero, 0x2a
|
||||
; addi a7, zero, 0x2a
|
||||
; slli t3, t3, 0x38
|
||||
; srai t3, t3, 0x38
|
||||
; sd t3, 0(sp)
|
||||
; auipc t3, 0
|
||||
; ld t3, 0xc(t3)
|
||||
; j 0xc
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %g 0
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; jalr t3
|
||||
; addi sp, sp, 0x10
|
||||
; ld ra, 8(sp)
|
||||
; ld s0, 0(sp)
|
||||
; addi sp, sp, 0x10
|
||||
; ret
|
||||
|
||||
function %f7(i8) -> i32, i32, i32, i32, i32, i32, i32, i32, i8 sext {
|
||||
block0(v0: i8):
|
||||
@@ -124,6 +228,7 @@ block0(v0: i8):
|
||||
return v1, v1, v1, v1, v1, v1, v1, v1, v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; li a2,42
|
||||
; mv t1,a2
|
||||
@@ -146,6 +251,31 @@ block0(v0: i8):
|
||||
; mv a0,t1
|
||||
; mv a1,a3
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; addi a2, zero, 0x2a
|
||||
; ori t1, a2, 0
|
||||
; addi a2, zero, 0x2a
|
||||
; ori a3, a2, 0
|
||||
; addi a4, zero, 0x2a
|
||||
; addi a6, zero, 0x2a
|
||||
; addi t3, zero, 0x2a
|
||||
; addi t0, zero, 0x2a
|
||||
; addi t2, zero, 0x2a
|
||||
; addi a2, zero, 0x2a
|
||||
; sw a4, 0(a1)
|
||||
; sw a6, 8(a1)
|
||||
; sw t3, 0x10(a1)
|
||||
; sw t0, 0x18(a1)
|
||||
; sw t2, 0x20(a1)
|
||||
; sw a2, 0x28(a1)
|
||||
; slli t4, a0, 0x38
|
||||
; srai t4, t4, 0x38
|
||||
; sd a0, 0x30(a1)
|
||||
; ori a0, t1, 0
|
||||
; ori a1, a3, 0
|
||||
; ret
|
||||
|
||||
function %f8() {
|
||||
fn0 = %g0() -> f32
|
||||
@@ -165,6 +295,7 @@ block0:
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; add sp,-16
|
||||
; sd ra,8(sp)
|
||||
; sd fp,0(sp)
|
||||
@@ -202,6 +333,73 @@ block0:
|
||||
; ld fp,0(sp)
|
||||
; add sp,+16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; addi sp, sp, -0x10
|
||||
; sd ra, 8(sp)
|
||||
; sd s0, 0(sp)
|
||||
; ori s0, sp, 0
|
||||
; fsd fs2, -8(sp)
|
||||
; fsd fs3, -0x10(sp)
|
||||
; fsd fs11, -0x18(sp)
|
||||
; addi sp, sp, -0x20
|
||||
; block0: ; offset 0x20
|
||||
; auipc a6, 0
|
||||
; ld a6, 0xc(a6)
|
||||
; j 0xc
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %g0 0
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; jalr a6
|
||||
; fmv.d fs11, fa0
|
||||
; auipc a6, 0
|
||||
; ld a6, 0xc(a6)
|
||||
; j 0xc
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %g1 0
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; jalr a6
|
||||
; fmv.d fs2, fa0
|
||||
; auipc a6, 0
|
||||
; ld a6, 0xc(a6)
|
||||
; j 0xc
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %g1 0
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; jalr a6
|
||||
; fmv.d fs3, fa0
|
||||
; auipc a6, 0
|
||||
; ld a6, 0xc(a6)
|
||||
; j 0xc
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %g2 0
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; jalr a6
|
||||
; auipc a7, 0
|
||||
; ld a7, 0xc(a7)
|
||||
; j 0xc
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %g3 0
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; fmv.d fa0, fs11
|
||||
; jalr a7
|
||||
; auipc t3, 0
|
||||
; ld t3, 0xc(t3)
|
||||
; j 0xc
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %g4 0
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; fmv.d fa0, fs2
|
||||
; jalr t3
|
||||
; auipc t4, 0
|
||||
; ld t4, 0xc(t4)
|
||||
; j 0xc
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %g4 0
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; fmv.d fa0, fs3
|
||||
; jalr t4
|
||||
; addi sp, sp, 0x20
|
||||
; fld fs2, -8(sp)
|
||||
; fld fs3, -0x10(sp)
|
||||
; fld fs11, -0x18(sp)
|
||||
; ld ra, 8(sp)
|
||||
; ld s0, 0(sp)
|
||||
; addi sp, sp, 0x10
|
||||
; ret
|
||||
|
||||
function %f11(i128, i64) -> i64 {
|
||||
block0(v0: i128, v1: i64):
|
||||
@@ -209,9 +407,15 @@ block0(v0: i128, v1: i64):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; mv a0,a1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ori a0, a1, 0
|
||||
; ret
|
||||
|
||||
function %f11_call(i64) -> i64 {
|
||||
fn0 = %f11(i128, i64) -> i64
|
||||
@@ -223,6 +427,7 @@ block0(v0: i64):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; add sp,-16
|
||||
; sd ra,8(sp)
|
||||
; sd fp,0(sp)
|
||||
@@ -238,6 +443,27 @@ block0(v0: i64):
|
||||
; ld fp,0(sp)
|
||||
; add sp,+16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; addi sp, sp, -0x10
|
||||
; sd ra, 8(sp)
|
||||
; sd s0, 0(sp)
|
||||
; ori s0, sp, 0
|
||||
; block0: ; offset 0x10
|
||||
; ori a5, a0, 0
|
||||
; addi a0, zero, 0x2a
|
||||
; ori a1, a5, 0
|
||||
; addi a2, zero, 0x2a
|
||||
; auipc a5, 0
|
||||
; ld a5, 0xc(a5)
|
||||
; j 0xc
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %f11 0
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; jalr a5
|
||||
; ld ra, 8(sp)
|
||||
; ld s0, 0(sp)
|
||||
; addi sp, sp, 0x10
|
||||
; ret
|
||||
|
||||
function %f12(i64, i128) -> i64 {
|
||||
block0(v0: i64, v1: i128):
|
||||
@@ -245,10 +471,17 @@ block0(v0: i64, v1: i128):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; mv a0,a1
|
||||
; mv a1,a2
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ori a0, a1, 0
|
||||
; ori a1, a2, 0
|
||||
; ret
|
||||
|
||||
function %f12_call(i64) -> i64 {
|
||||
fn0 = %f12(i64, i128) -> i64
|
||||
@@ -260,6 +493,7 @@ block0(v0: i64):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; add sp,-16
|
||||
; sd ra,8(sp)
|
||||
; sd fp,0(sp)
|
||||
@@ -274,6 +508,26 @@ block0(v0: i64):
|
||||
; ld fp,0(sp)
|
||||
; add sp,+16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; addi sp, sp, -0x10
|
||||
; sd ra, 8(sp)
|
||||
; sd s0, 0(sp)
|
||||
; ori s0, sp, 0
|
||||
; block0: ; offset 0x10
|
||||
; ori a1, a0, 0
|
||||
; addi a2, zero, 0x2a
|
||||
; addi a0, zero, 0x2a
|
||||
; auipc a5, 0
|
||||
; ld a5, 0xc(a5)
|
||||
; j 0xc
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %f12 0
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; jalr a5
|
||||
; ld ra, 8(sp)
|
||||
; ld s0, 0(sp)
|
||||
; addi sp, sp, 0x10
|
||||
; ret
|
||||
|
||||
function %f13(i64, i128) -> i64 {
|
||||
block0(v0: i64, v1: i128):
|
||||
@@ -281,10 +535,17 @@ block0(v0: i64, v1: i128):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; mv a0,a1
|
||||
; mv a1,a2
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ori a0, a1, 0
|
||||
; ori a1, a2, 0
|
||||
; ret
|
||||
|
||||
function %f13_call(i64) -> i64 {
|
||||
fn0 = %f13(i64, i128) -> i64
|
||||
@@ -296,6 +557,7 @@ block0(v0: i64):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; add sp,-16
|
||||
; sd ra,8(sp)
|
||||
; sd fp,0(sp)
|
||||
@@ -310,12 +572,33 @@ block0(v0: i64):
|
||||
; ld fp,0(sp)
|
||||
; add sp,+16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; addi sp, sp, -0x10
|
||||
; sd ra, 8(sp)
|
||||
; sd s0, 0(sp)
|
||||
; ori s0, sp, 0
|
||||
; block0: ; offset 0x10
|
||||
; ori a1, a0, 0
|
||||
; addi a2, zero, 0x2a
|
||||
; addi a0, zero, 0x2a
|
||||
; auipc a5, 0
|
||||
; ld a5, 0xc(a5)
|
||||
; j 0xc
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %f13 0
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; jalr a5
|
||||
; ld ra, 8(sp)
|
||||
; ld s0, 0(sp)
|
||||
; addi sp, sp, 0x10
|
||||
; ret
|
||||
|
||||
function %f14(i128, i128, i128, i64, i128) -> i128 {
|
||||
block0(v0: i128, v1: i128, v2: i128, v3: i64, v4: i128):
|
||||
return v4
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; add sp,-16
|
||||
; sd ra,8(sp)
|
||||
; sd fp,0(sp)
|
||||
@@ -327,6 +610,19 @@ block0(v0: i128, v1: i128, v2: i128, v3: i64, v4: i128):
|
||||
; ld fp,0(sp)
|
||||
; add sp,+16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; addi sp, sp, -0x10
|
||||
; sd ra, 8(sp)
|
||||
; sd s0, 0(sp)
|
||||
; ori s0, sp, 0
|
||||
; block0: ; offset 0x10
|
||||
; ori a0, a7, 0
|
||||
; ld a1, 0x10(s0)
|
||||
; ld ra, 8(sp)
|
||||
; ld s0, 0(sp)
|
||||
; addi sp, sp, 0x10
|
||||
; ret
|
||||
|
||||
function %f14_call(i128, i64) -> i128 {
|
||||
fn0 = %f14(i128, i128, i128, i64, i128) -> i128
|
||||
@@ -336,6 +632,7 @@ block0(v0: i128, v1: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; add sp,-16
|
||||
; sd ra,8(sp)
|
||||
; sd fp,0(sp)
|
||||
@@ -360,12 +657,41 @@ block0(v0: i128, v1: i64):
|
||||
; ld fp,0(sp)
|
||||
; add sp,+16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; addi sp, sp, -0x10
|
||||
; sd ra, 8(sp)
|
||||
; sd s0, 0(sp)
|
||||
; ori s0, sp, 0
|
||||
; block0: ; offset 0x10
|
||||
; ori a7, a0, 0
|
||||
; ori a6, a2, 0
|
||||
; addi sp, sp, -0x10
|
||||
; sd a1, 0(sp)
|
||||
; ori a5, a1, 0
|
||||
; auipc t3, 0
|
||||
; ld t3, 0xc(t3)
|
||||
; j 0xc
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %f14 0
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; ori a1, a5, 0
|
||||
; ori a3, a5, 0
|
||||
; ori a0, a7, 0
|
||||
; ori a2, a7, 0
|
||||
; ori a4, a7, 0
|
||||
; jalr t3
|
||||
; addi sp, sp, 0x10
|
||||
; ld ra, 8(sp)
|
||||
; ld s0, 0(sp)
|
||||
; addi sp, sp, 0x10
|
||||
; ret
|
||||
|
||||
function %f15(i128, i128, i128, i64, i128) -> i128{
|
||||
block0(v0: i128, v1: i128, v2: i128, v3: i64, v4: i128):
|
||||
return v4
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; add sp,-16
|
||||
; sd ra,8(sp)
|
||||
; sd fp,0(sp)
|
||||
@@ -377,6 +703,19 @@ block0(v0: i128, v1: i128, v2: i128, v3: i64, v4: i128):
|
||||
; ld fp,0(sp)
|
||||
; add sp,+16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; addi sp, sp, -0x10
|
||||
; sd ra, 8(sp)
|
||||
; sd s0, 0(sp)
|
||||
; ori s0, sp, 0
|
||||
; block0: ; offset 0x10
|
||||
; ori a0, a7, 0
|
||||
; ld a1, 0x10(s0)
|
||||
; ld ra, 8(sp)
|
||||
; ld s0, 0(sp)
|
||||
; addi sp, sp, 0x10
|
||||
; ret
|
||||
|
||||
function %f15_call(i128, i64) -> i128 {
|
||||
fn0 = %f15(i128, i128, i128, i64, i128) -> i128
|
||||
@@ -386,6 +725,7 @@ block0(v0: i128, v1: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; add sp,-16
|
||||
; sd ra,8(sp)
|
||||
; sd fp,0(sp)
|
||||
@@ -410,6 +750,34 @@ block0(v0: i128, v1: i64):
|
||||
; ld fp,0(sp)
|
||||
; add sp,+16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; addi sp, sp, -0x10
|
||||
; sd ra, 8(sp)
|
||||
; sd s0, 0(sp)
|
||||
; ori s0, sp, 0
|
||||
; block0: ; offset 0x10
|
||||
; ori a7, a0, 0
|
||||
; ori a6, a2, 0
|
||||
; addi sp, sp, -0x10
|
||||
; sd a1, 0(sp)
|
||||
; ori a5, a1, 0
|
||||
; auipc t3, 0
|
||||
; ld t3, 0xc(t3)
|
||||
; j 0xc
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %f15 0
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; ori a1, a5, 0
|
||||
; ori a3, a5, 0
|
||||
; ori a0, a7, 0
|
||||
; ori a2, a7, 0
|
||||
; ori a4, a7, 0
|
||||
; jalr t3
|
||||
; addi sp, sp, 0x10
|
||||
; ld ra, 8(sp)
|
||||
; ld s0, 0(sp)
|
||||
; addi sp, sp, 0x10
|
||||
; ret
|
||||
|
||||
function %f16() -> i32, i32 {
|
||||
block0:
|
||||
@@ -418,8 +786,15 @@ block0:
|
||||
return v0, v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; li a0,0
|
||||
; li a1,1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mv a0, zero
|
||||
; addi a1, zero, 1
|
||||
; ret
|
||||
|
||||
|
||||
@@ -8,9 +8,18 @@ block0(v0: i64, v1: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; eq a0,a0,a1##ty=i64
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; bne a0, a1, 0xc
|
||||
; addi a0, zero, 1
|
||||
; j 8
|
||||
; mv a0, zero
|
||||
; ret
|
||||
|
||||
function %icmp_eq_i128(i128, i128) -> i8 {
|
||||
block0(v0: i128, v1: i128):
|
||||
@@ -18,9 +27,19 @@ block0(v0: i128, v1: i128):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; eq a0,[a0,a1],[a2,a3]##ty=i128
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; bne a1, a3, 0x10
|
||||
; bne a0, a2, 0xc
|
||||
; addi a0, zero, 1
|
||||
; j 8
|
||||
; mv a0, zero
|
||||
; ret
|
||||
|
||||
function %icmp_ne_i128(i128, i128) -> i8 {
|
||||
block0(v0: i128, v1: i128):
|
||||
@@ -28,9 +47,19 @@ block0(v0: i128, v1: i128):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ne a0,[a0,a1],[a2,a3]##ty=i128
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; bne a1, a3, 8
|
||||
; beq a0, a2, 0xc
|
||||
; addi a0, zero, 1
|
||||
; j 8
|
||||
; mv a0, zero
|
||||
; ret
|
||||
|
||||
function %icmp_slt_i128(i128, i128) -> i8 {
|
||||
block0(v0: i128, v1: i128):
|
||||
@@ -38,9 +67,20 @@ block0(v0: i128, v1: i128):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; slt a0,[a0,a1],[a2,a3]##ty=i128
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; blt a1, a3, 0xc
|
||||
; bne a1, a3, 0x10
|
||||
; bgeu a0, a2, 0xc
|
||||
; addi a0, zero, 1
|
||||
; j 8
|
||||
; mv a0, zero
|
||||
; ret
|
||||
|
||||
function %icmp_ult_i128(i128, i128) -> i8 {
|
||||
block0(v0: i128, v1: i128):
|
||||
@@ -48,9 +88,20 @@ block0(v0: i128, v1: i128):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ult a0,[a0,a1],[a2,a3]##ty=i128
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; bltu a1, a3, 0xc
|
||||
; bne a1, a3, 0x10
|
||||
; bgeu a0, a2, 0xc
|
||||
; addi a0, zero, 1
|
||||
; j 8
|
||||
; mv a0, zero
|
||||
; ret
|
||||
|
||||
function %icmp_sle_i128(i128, i128) -> i8 {
|
||||
block0(v0: i128, v1: i128):
|
||||
@@ -58,9 +109,20 @@ block0(v0: i128, v1: i128):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sle a0,[a0,a1],[a2,a3]##ty=i128
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; blt a1, a3, 0xc
|
||||
; bne a1, a3, 0x10
|
||||
; bltu a2, a0, 0xc
|
||||
; addi a0, zero, 1
|
||||
; j 8
|
||||
; mv a0, zero
|
||||
; ret
|
||||
|
||||
function %icmp_ule_i128(i128, i128) -> i8 {
|
||||
block0(v0: i128, v1: i128):
|
||||
@@ -68,9 +130,20 @@ block0(v0: i128, v1: i128):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ule a0,[a0,a1],[a2,a3]##ty=i128
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; bltu a1, a3, 0xc
|
||||
; bne a1, a3, 0x10
|
||||
; bltu a2, a0, 0xc
|
||||
; addi a0, zero, 1
|
||||
; j 8
|
||||
; mv a0, zero
|
||||
; ret
|
||||
|
||||
function %icmp_sgt_i128(i128, i128) -> i8 {
|
||||
block0(v0: i128, v1: i128):
|
||||
@@ -78,9 +151,20 @@ block0(v0: i128, v1: i128):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sgt a0,[a0,a1],[a2,a3]##ty=i128
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; blt a3, a1, 0xc
|
||||
; bne a1, a3, 0x10
|
||||
; bgeu a2, a0, 0xc
|
||||
; addi a0, zero, 1
|
||||
; j 8
|
||||
; mv a0, zero
|
||||
; ret
|
||||
|
||||
function %icmp_ugt_i128(i128, i128) -> i8 {
|
||||
block0(v0: i128, v1: i128):
|
||||
@@ -88,9 +172,20 @@ block0(v0: i128, v1: i128):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ugt a0,[a0,a1],[a2,a3]##ty=i128
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; bltu a3, a1, 0xc
|
||||
; bne a1, a3, 0x10
|
||||
; bgeu a2, a0, 0xc
|
||||
; addi a0, zero, 1
|
||||
; j 8
|
||||
; mv a0, zero
|
||||
; ret
|
||||
|
||||
function %icmp_sge_i128(i128, i128) -> i8 {
|
||||
block0(v0: i128, v1: i128):
|
||||
@@ -98,9 +193,20 @@ block0(v0: i128, v1: i128):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sge a0,[a0,a1],[a2,a3]##ty=i128
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; blt a3, a1, 0xc
|
||||
; bne a1, a3, 0x10
|
||||
; bltu a0, a2, 0xc
|
||||
; addi a0, zero, 1
|
||||
; j 8
|
||||
; mv a0, zero
|
||||
; ret
|
||||
|
||||
function %icmp_uge_i128(i128, i128) -> i8 {
|
||||
block0(v0: i128, v1: i128):
|
||||
@@ -108,9 +214,20 @@ block0(v0: i128, v1: i128):
|
||||
return v2
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uge a0,[a0,a1],[a2,a3]##ty=i128
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; bltu a3, a1, 0xc
|
||||
; bne a1, a3, 0x10
|
||||
; bltu a0, a2, 0xc
|
||||
; addi a0, zero, 1
|
||||
; j 8
|
||||
; mv a0, zero
|
||||
; ret
|
||||
|
||||
function %f(i64, i64) -> i64 {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -126,6 +243,7 @@ block2:
|
||||
return v5
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; eq a2,a0,a1##ty=i64
|
||||
; bne a2,zero,taken(label1),not_taken(label2)
|
||||
@@ -135,6 +253,20 @@ block2:
|
||||
; block2:
|
||||
; li a0,2
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; bne a0, a1, 0xc
|
||||
; addi a2, zero, 1
|
||||
; j 8
|
||||
; mv a2, zero
|
||||
; beqz a2, 0xc
|
||||
; block1: ; offset 0x14
|
||||
; addi a0, zero, 1
|
||||
; ret
|
||||
; block2: ; offset 0x1c
|
||||
; addi a0, zero, 2
|
||||
; ret
|
||||
|
||||
function %f(i64, i64) -> i64 {
|
||||
block0(v0: i64, v1: i64):
|
||||
@@ -146,6 +278,7 @@ block1:
|
||||
return v4
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; eq a1,a0,a1##ty=i64
|
||||
; bne a1,zero,taken(label1),not_taken(label2)
|
||||
@@ -156,6 +289,16 @@ block1:
|
||||
; block3:
|
||||
; li a0,1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; bne a0, a1, 0xc
|
||||
; addi a1, zero, 1
|
||||
; j 8
|
||||
; mv a1, zero
|
||||
; block1: ; offset 0x10
|
||||
; addi a0, zero, 1
|
||||
; ret
|
||||
|
||||
function %i128_brif(i128){
|
||||
block0(v0: i128):
|
||||
@@ -166,6 +309,7 @@ block1:
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ne a0,[a0,a1],[zerozero]##ty=i128
|
||||
; bne a0,zero,taken(label1),not_taken(label2)
|
||||
@@ -175,6 +319,16 @@ block1:
|
||||
; j label3
|
||||
; block3:
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; bnez a1, 8
|
||||
; beqz a0, 0xc
|
||||
; addi a0, zero, 1
|
||||
; j 8
|
||||
; mv a0, zero
|
||||
; block1: ; offset 0x14
|
||||
; ret
|
||||
|
||||
function %i128_bricmp_eq(i128, i128) {
|
||||
block0(v0: i128, v1: i128):
|
||||
@@ -185,6 +339,7 @@ block1:
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; eq a2,[a0,a1],[a2,a3]##ty=i128
|
||||
; bne a2,zero,taken(label1),not_taken(label2)
|
||||
@@ -194,6 +349,16 @@ block1:
|
||||
; j label3
|
||||
; block3:
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; bne a1, a3, 0x10
|
||||
; bne a0, a2, 0xc
|
||||
; addi a2, zero, 1
|
||||
; j 8
|
||||
; mv a2, zero
|
||||
; block1: ; offset 0x14
|
||||
; ret
|
||||
|
||||
function %i128_bricmp_ne(i128, i128) {
|
||||
block0(v0: i128, v1: i128):
|
||||
@@ -204,6 +369,7 @@ block1:
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ne a2,[a0,a1],[a2,a3]##ty=i128
|
||||
; bne a2,zero,taken(label1),not_taken(label2)
|
||||
@@ -213,6 +379,16 @@ block1:
|
||||
; j label3
|
||||
; block3:
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; bne a1, a3, 8
|
||||
; beq a0, a2, 0xc
|
||||
; addi a2, zero, 1
|
||||
; j 8
|
||||
; mv a2, zero
|
||||
; block1: ; offset 0x14
|
||||
; ret
|
||||
|
||||
function %i128_bricmp_slt(i128, i128) {
|
||||
block0(v0: i128, v1: i128):
|
||||
@@ -223,6 +399,7 @@ block1:
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; slt a2,[a0,a1],[a2,a3]##ty=i128
|
||||
; bne a2,zero,taken(label1),not_taken(label2)
|
||||
@@ -232,6 +409,17 @@ block1:
|
||||
; j label3
|
||||
; block3:
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; blt a1, a3, 0xc
|
||||
; bne a1, a3, 0x10
|
||||
; bgeu a0, a2, 0xc
|
||||
; addi a2, zero, 1
|
||||
; j 8
|
||||
; mv a2, zero
|
||||
; block1: ; offset 0x18
|
||||
; ret
|
||||
|
||||
function %i128_bricmp_ult(i128, i128) {
|
||||
block0(v0: i128, v1: i128):
|
||||
@@ -242,6 +430,7 @@ block1:
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ult a2,[a0,a1],[a2,a3]##ty=i128
|
||||
; bne a2,zero,taken(label1),not_taken(label2)
|
||||
@@ -251,6 +440,17 @@ block1:
|
||||
; j label3
|
||||
; block3:
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; bltu a1, a3, 0xc
|
||||
; bne a1, a3, 0x10
|
||||
; bgeu a0, a2, 0xc
|
||||
; addi a2, zero, 1
|
||||
; j 8
|
||||
; mv a2, zero
|
||||
; block1: ; offset 0x18
|
||||
; ret
|
||||
|
||||
function %i128_bricmp_sle(i128, i128) {
|
||||
block0(v0: i128, v1: i128):
|
||||
@@ -261,6 +461,7 @@ block1:
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sle a2,[a0,a1],[a2,a3]##ty=i128
|
||||
; bne a2,zero,taken(label1),not_taken(label2)
|
||||
@@ -270,6 +471,17 @@ block1:
|
||||
; j label3
|
||||
; block3:
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; blt a1, a3, 0xc
|
||||
; bne a1, a3, 0x10
|
||||
; bltu a2, a0, 0xc
|
||||
; addi a2, zero, 1
|
||||
; j 8
|
||||
; mv a2, zero
|
||||
; block1: ; offset 0x18
|
||||
; ret
|
||||
|
||||
function %i128_bricmp_ule(i128, i128) {
|
||||
block0(v0: i128, v1: i128):
|
||||
@@ -280,6 +492,7 @@ block1:
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ule a2,[a0,a1],[a2,a3]##ty=i128
|
||||
; bne a2,zero,taken(label1),not_taken(label2)
|
||||
@@ -289,6 +502,17 @@ block1:
|
||||
; j label3
|
||||
; block3:
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; bltu a1, a3, 0xc
|
||||
; bne a1, a3, 0x10
|
||||
; bltu a2, a0, 0xc
|
||||
; addi a2, zero, 1
|
||||
; j 8
|
||||
; mv a2, zero
|
||||
; block1: ; offset 0x18
|
||||
; ret
|
||||
|
||||
function %i128_bricmp_sgt(i128, i128) {
|
||||
block0(v0: i128, v1: i128):
|
||||
@@ -299,6 +523,7 @@ block1:
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sgt a2,[a0,a1],[a2,a3]##ty=i128
|
||||
; bne a2,zero,taken(label1),not_taken(label2)
|
||||
@@ -308,6 +533,17 @@ block1:
|
||||
; j label3
|
||||
; block3:
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; blt a3, a1, 0xc
|
||||
; bne a1, a3, 0x10
|
||||
; bgeu a2, a0, 0xc
|
||||
; addi a2, zero, 1
|
||||
; j 8
|
||||
; mv a2, zero
|
||||
; block1: ; offset 0x18
|
||||
; ret
|
||||
|
||||
function %i128_bricmp_ugt(i128, i128) {
|
||||
block0(v0: i128, v1: i128):
|
||||
@@ -318,6 +554,7 @@ block1:
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; ugt a2,[a0,a1],[a2,a3]##ty=i128
|
||||
; bne a2,zero,taken(label1),not_taken(label2)
|
||||
@@ -327,6 +564,17 @@ block1:
|
||||
; j label3
|
||||
; block3:
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; bltu a3, a1, 0xc
|
||||
; bne a1, a3, 0x10
|
||||
; bgeu a2, a0, 0xc
|
||||
; addi a2, zero, 1
|
||||
; j 8
|
||||
; mv a2, zero
|
||||
; block1: ; offset 0x18
|
||||
; ret
|
||||
|
||||
function %i128_bricmp_sge(i128, i128) {
|
||||
block0(v0: i128, v1: i128):
|
||||
@@ -337,6 +585,7 @@ block1:
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sge a2,[a0,a1],[a2,a3]##ty=i128
|
||||
; bne a2,zero,taken(label1),not_taken(label2)
|
||||
@@ -346,6 +595,17 @@ block1:
|
||||
; j label3
|
||||
; block3:
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; blt a3, a1, 0xc
|
||||
; bne a1, a3, 0x10
|
||||
; bltu a0, a2, 0xc
|
||||
; addi a2, zero, 1
|
||||
; j 8
|
||||
; mv a2, zero
|
||||
; block1: ; offset 0x18
|
||||
; ret
|
||||
|
||||
function %i128_bricmp_uge(i128, i128) {
|
||||
block0(v0: i128, v1: i128):
|
||||
@@ -356,6 +616,7 @@ block1:
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uge a2,[a0,a1],[a2,a3]##ty=i128
|
||||
; bne a2,zero,taken(label1),not_taken(label2)
|
||||
@@ -365,8 +626,17 @@ block1:
|
||||
; j label3
|
||||
; block3:
|
||||
; ret
|
||||
|
||||
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; bltu a3, a1, 0xc
|
||||
; bne a1, a3, 0x10
|
||||
; bltu a0, a2, 0xc
|
||||
; addi a2, zero, 1
|
||||
; j 8
|
||||
; mv a2, zero
|
||||
; block1: ; offset 0x18
|
||||
; ret
|
||||
|
||||
function %i8_brif(i8){
|
||||
block0(v0: i8):
|
||||
@@ -377,6 +647,7 @@ block1:
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; andi t2,a0,255
|
||||
; bne t2,zero,taken(label1),not_taken(label2)
|
||||
@@ -386,6 +657,12 @@ block1:
|
||||
; j label3
|
||||
; block3:
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; andi t2, a0, 0xff
|
||||
; block1: ; offset 0x4
|
||||
; ret
|
||||
|
||||
function %i16_brif(i16){
|
||||
block0(v0: i16):
|
||||
@@ -396,6 +673,7 @@ block1:
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; lui a1,16
|
||||
; addi a1,a1,4095
|
||||
@@ -407,6 +685,14 @@ block1:
|
||||
; j label3
|
||||
; block3:
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; lui a1, 0x10
|
||||
; addi a1, a1, -1
|
||||
; and a3, a0, a1
|
||||
; block1: ; offset 0xc
|
||||
; ret
|
||||
|
||||
function %i32_brif(i32){
|
||||
block0(v0: i32):
|
||||
@@ -417,6 +703,7 @@ block1:
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; addiw t2,a0,0
|
||||
; bne t2,zero,taken(label1),not_taken(label2)
|
||||
@@ -426,6 +713,12 @@ block1:
|
||||
; j label3
|
||||
; block3:
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; sext.w t2, a0
|
||||
; block1: ; offset 0x4
|
||||
; ret
|
||||
|
||||
function %i64_brif(i64){
|
||||
block0(v0: i64):
|
||||
@@ -436,6 +729,7 @@ block1:
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; bne a0,zero,taken(label1),not_taken(label2)
|
||||
; block1:
|
||||
@@ -444,4 +738,8 @@ block1:
|
||||
; j label3
|
||||
; block3:
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ret
|
||||
|
||||
|
||||
@@ -10,12 +10,24 @@ block0(v0: i8, v1: i64, v2: i64):
|
||||
return v5
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; andi a3,a0,255
|
||||
; li a4,42
|
||||
; andi a5,a4,255
|
||||
; select_reg a0,a1,a2##condition=(a3 eq a5)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; andi a3, a0, 0xff
|
||||
; addi a4, zero, 0x2a
|
||||
; andi a5, a4, 0xff
|
||||
; beq a3, a5, 0xc
|
||||
; ori a0, a2, 0
|
||||
; j 8
|
||||
; ori a0, a1, 0
|
||||
; ret
|
||||
|
||||
function %g(i8) -> i8 {
|
||||
block0(v0: i8):
|
||||
@@ -24,12 +36,24 @@ block0(v0: i8):
|
||||
return v4
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; li t2,42
|
||||
; uext.b a1,a0
|
||||
; uext.b a3,t2
|
||||
; eq a0,a1,a3##ty=i8
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; addi t2, zero, 0x2a
|
||||
; andi a1, a0, 0xff
|
||||
; andi a3, t2, 0xff
|
||||
; bne a1, a3, 0xc
|
||||
; addi a0, zero, 1
|
||||
; j 8
|
||||
; mv a0, zero
|
||||
; ret
|
||||
|
||||
function %h(i8, i8, i8) -> i8 {
|
||||
block0(v0: i8, v1: i8, v2: i8):
|
||||
@@ -37,12 +61,21 @@ block0(v0: i8, v1: i8, v2: i8):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; and a1,a0,a1
|
||||
; not a3,a0
|
||||
; and a5,a3,a2
|
||||
; or a0,a1,a5
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; and a1, a0, a1
|
||||
; not a3, a0
|
||||
; and a5, a3, a2
|
||||
; or a0, a1, a5
|
||||
; ret
|
||||
|
||||
function %i(i8, i8, i8) -> i8 {
|
||||
block0(v0: i8, v1: i8, v2: i8):
|
||||
@@ -50,10 +83,20 @@ block0(v0: i8, v1: i8, v2: i8):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; andi a3,a0,255
|
||||
; select_i8 a0,a1,a2##condition=a3
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; andi a3, a0, 0xff
|
||||
; beqz a3, 0xc
|
||||
; ori a0, a1, 0
|
||||
; j 8
|
||||
; ori a0, a2, 0
|
||||
; ret
|
||||
|
||||
function %i(i32, i8, i8) -> i8 {
|
||||
block0(v0: i32, v1: i8, v2: i8):
|
||||
@@ -63,12 +106,24 @@ block0(v0: i32, v1: i8, v2: i8):
|
||||
return v5
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; addiw a3,a0,0
|
||||
; li a4,42
|
||||
; addiw a5,a4,0
|
||||
; select_reg a0,a1,a2##condition=(a3 eq a5)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; sext.w a3, a0
|
||||
; addi a4, zero, 0x2a
|
||||
; sext.w a5, a4
|
||||
; beq a3, a5, 0xc
|
||||
; ori a0, a2, 0
|
||||
; j 8
|
||||
; ori a0, a1, 0
|
||||
; ret
|
||||
|
||||
function %i128_select(i8, i128, i128) -> i128 {
|
||||
block0(v0: i8, v1: i128, v2: i128):
|
||||
@@ -76,9 +131,22 @@ block0(v0: i8, v1: i128, v2: i128):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; mv a7,a1
|
||||
; andi a5,a0,255
|
||||
; select_i128 [a0,a1],[a7,a2],[a3,a4]##condition=a5
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ori a7, a1, 0
|
||||
; andi a5, a0, 0xff
|
||||
; beqz a5, 0x10
|
||||
; ori a0, a7, 0
|
||||
; ori a1, a2, 0
|
||||
; j 0xc
|
||||
; ori a0, a3, 0
|
||||
; ori a1, a4, 0
|
||||
; ret
|
||||
|
||||
|
||||
@@ -8,9 +8,15 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; li a0,-1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; addi a0, zero, -1
|
||||
; ret
|
||||
|
||||
function %f() -> i16 {
|
||||
block0:
|
||||
@@ -18,9 +24,15 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; li a0,0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mv a0, zero
|
||||
; ret
|
||||
|
||||
function %f() -> i64 {
|
||||
block0:
|
||||
@@ -28,9 +40,15 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; li a0,0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mv a0, zero
|
||||
; ret
|
||||
|
||||
function %f() -> i64 {
|
||||
block0:
|
||||
@@ -38,10 +56,17 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; lui t1,16
|
||||
; addi a0,t1,4095
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; lui t1, 0x10
|
||||
; addi a0, t1, -1
|
||||
; ret
|
||||
|
||||
function %f() -> i64 {
|
||||
block0:
|
||||
@@ -49,9 +74,19 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; auipc a0,0; ld a0,12(a0); j 12; .8byte 0xffff0000
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; auipc a0, 0
|
||||
; ld a0, 0xc(a0)
|
||||
; j 0xc
|
||||
; .byte 0x00, 0x00, 0xff, 0xff
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; ret
|
||||
|
||||
function %f() -> i64 {
|
||||
block0:
|
||||
@@ -59,9 +94,19 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; auipc a0,0; ld a0,12(a0); j 12; .8byte 0xffff00000000
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; auipc a0, 0
|
||||
; ld a0, 0xc(a0)
|
||||
; j 0xc
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; .byte 0xff, 0xff, 0x00, 0x00
|
||||
; ret
|
||||
|
||||
function %f() -> i64 {
|
||||
block0:
|
||||
@@ -69,9 +114,19 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; auipc a0,0; ld a0,12(a0); j 12; .8byte 0xffff000000000000
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; auipc a0, 0
|
||||
; ld a0, 0xc(a0)
|
||||
; j 0xc
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; .byte 0x00, 0x00, 0xff, 0xff
|
||||
; ret
|
||||
|
||||
function %f() -> i64 {
|
||||
block0:
|
||||
@@ -79,9 +134,15 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; li a0,-1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; addi a0, zero, -1
|
||||
; ret
|
||||
|
||||
function %f() -> i64 {
|
||||
block0:
|
||||
@@ -89,9 +150,15 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; lui a0,1048560
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; lui a0, 0xffff0
|
||||
; ret
|
||||
|
||||
function %f() -> i64 {
|
||||
block0:
|
||||
@@ -99,9 +166,19 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; auipc a0,0; ld a0,12(a0); j 12; .8byte 0xffffffff0000ffff
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; auipc a0, 0
|
||||
; ld a0, 0xc(a0)
|
||||
; j 0xc
|
||||
; .byte 0xff, 0xff, 0x00, 0x00
|
||||
; .byte 0xff, 0xff, 0xff, 0xff
|
||||
; ret
|
||||
|
||||
function %f() -> i64 {
|
||||
block0:
|
||||
@@ -109,9 +186,19 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; auipc a0,0; ld a0,12(a0); j 12; .8byte 0xffff0000ffffffff
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; auipc a0, 0
|
||||
; ld a0, 0xc(a0)
|
||||
; j 0xc
|
||||
; .byte 0xff, 0xff, 0xff, 0xff
|
||||
; .byte 0x00, 0x00, 0xff, 0xff
|
||||
; ret
|
||||
|
||||
function %f() -> i64 {
|
||||
block0:
|
||||
@@ -119,9 +206,19 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; auipc a0,0; ld a0,12(a0); j 12; .8byte 0xffffffffffff
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; auipc a0, 0
|
||||
; ld a0, 0xc(a0)
|
||||
; j 0xc
|
||||
; .byte 0xff, 0xff, 0xff, 0xff
|
||||
; .byte 0xff, 0xff, 0x00, 0x00
|
||||
; ret
|
||||
|
||||
function %f() -> i64 {
|
||||
block0:
|
||||
@@ -129,9 +226,19 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; auipc a0,0; ld a0,12(a0); j 12; .8byte 0xf34bf0a31212003a
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; auipc a0, 0
|
||||
; ld a0, 0xc(a0)
|
||||
; j 0xc
|
||||
; .byte 0x3a, 0x00, 0x12, 0x12
|
||||
; .byte 0xa3, 0xf0, 0x4b, 0xf3
|
||||
; ret
|
||||
|
||||
function %f() -> i64 {
|
||||
block0:
|
||||
@@ -139,9 +246,19 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; auipc a0,0; ld a0,12(a0); j 12; .8byte 0x12e900001ef40000
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; auipc a0, 0
|
||||
; ld a0, 0xc(a0)
|
||||
; j 0xc
|
||||
; .byte 0x00, 0x00, 0xf4, 0x1e
|
||||
; .byte 0x00, 0x00, 0xe9, 0x12
|
||||
; ret
|
||||
|
||||
function %f() -> i64 {
|
||||
block0:
|
||||
@@ -149,9 +266,19 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; auipc a0,0; ld a0,12(a0); j 12; .8byte 0x12e9ffff1ef4ffff
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; auipc a0, 0
|
||||
; ld a0, 0xc(a0)
|
||||
; j 0xc
|
||||
; .byte 0xff, 0xff, 0xf4, 0x1e
|
||||
; .byte 0xff, 0xff, 0xe9, 0x12
|
||||
; ret
|
||||
|
||||
function %f() -> i32 {
|
||||
block0:
|
||||
@@ -159,9 +286,15 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; li a0,-1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; addi a0, zero, -1
|
||||
; ret
|
||||
|
||||
function %f() -> i32 {
|
||||
block0:
|
||||
@@ -169,9 +302,19 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; auipc a0,0; ld a0,12(a0); j 12; .8byte 0xfffffff7
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; auipc a0, 0
|
||||
; ld a0, 0xc(a0)
|
||||
; j 0xc
|
||||
; .byte 0xf7, 0xff, 0xff, 0xff
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; ret
|
||||
|
||||
function %f() -> i64 {
|
||||
block0:
|
||||
@@ -179,9 +322,19 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; auipc a0,0; ld a0,12(a0); j 12; .8byte 0xfffffff7
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; auipc a0, 0
|
||||
; ld a0, 0xc(a0)
|
||||
; j 0xc
|
||||
; .byte 0xf7, 0xff, 0xff, 0xff
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; ret
|
||||
|
||||
function %f() -> i64 {
|
||||
block0:
|
||||
@@ -189,9 +342,15 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; li a0,-9
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; addi a0, zero, -9
|
||||
; ret
|
||||
|
||||
function %f() -> f64 {
|
||||
block0:
|
||||
@@ -199,10 +358,21 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; auipc t1,0; ld t1,12(t1); j 12; .8byte 0x3ff0000000000000
|
||||
; fmv.d.x fa0,t1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; auipc t1, 0
|
||||
; ld t1, 0xc(t1)
|
||||
; j 0xc
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; .byte 0x00, 0x00, 0xf0, 0x3f
|
||||
; fmv.d.x fa0, t1
|
||||
; ret
|
||||
|
||||
function %f() -> f32 {
|
||||
block0:
|
||||
@@ -210,10 +380,17 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; lui t1,264704
|
||||
; fmv.w.x fa0,t1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; lui t1, 0x40a00
|
||||
; fmv.w.x fa0, t1
|
||||
; ret
|
||||
|
||||
function %f() -> f64 {
|
||||
block0:
|
||||
@@ -221,10 +398,21 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; auipc t1,0; ld t1,12(t1); j 12; .8byte 0x4049000000000000
|
||||
; fmv.d.x fa0,t1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; auipc t1, 0
|
||||
; ld t1, 0xc(t1)
|
||||
; j 0xc
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; .byte 0x00, 0x00, 0x49, 0x40
|
||||
; fmv.d.x fa0, t1
|
||||
; ret
|
||||
|
||||
function %f() -> f32 {
|
||||
block0:
|
||||
@@ -232,10 +420,17 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; lui t1,271488
|
||||
; fmv.w.x fa0,t1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; lui t1, 0x42480
|
||||
; fmv.w.x fa0, t1
|
||||
; ret
|
||||
|
||||
function %f() -> f64 {
|
||||
block0:
|
||||
@@ -243,10 +438,17 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; li t1,0
|
||||
; fmv.d.x fa0,t1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mv t1, zero
|
||||
; fmv.d.x fa0, t1
|
||||
; ret
|
||||
|
||||
function %f() -> f32 {
|
||||
block0:
|
||||
@@ -254,10 +456,17 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; li t1,0
|
||||
; fmv.w.x fa0,t1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mv t1, zero
|
||||
; fmv.w.x fa0, t1
|
||||
; ret
|
||||
|
||||
function %f() -> f64 {
|
||||
block0:
|
||||
@@ -265,10 +474,21 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; auipc t1,0; ld t1,12(t1); j 12; .8byte 0xc030000000000000
|
||||
; fmv.d.x fa0,t1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; auipc t1, 0
|
||||
; ld t1, 0xc(t1)
|
||||
; j 0xc
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; .byte 0x00, 0x00, 0x30, 0xc0
|
||||
; fmv.d.x fa0, t1
|
||||
; ret
|
||||
|
||||
function %f() -> f32 {
|
||||
block0:
|
||||
@@ -276,8 +496,18 @@ block0:
|
||||
return v0
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; auipc t1,0; ld t1,12(t1); j 8; .4byte 0xc1800000
|
||||
; fmv.w.x fa0,t1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; auipc t1, 0
|
||||
; lwu t1, 0xc(t1)
|
||||
; j 8
|
||||
; .byte 0x00, 0x00, 0x80, 0xc1
|
||||
; fmv.w.x fa0, t1
|
||||
; ret
|
||||
|
||||
|
||||
@@ -10,10 +10,18 @@ block0(v0: i8):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sext.b a0,a0
|
||||
; addi a0,a0,42
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli a0, a0, 0x38
|
||||
; srai a0, a0, 0x38
|
||||
; addi a0, a0, 0x2a
|
||||
; ret
|
||||
|
||||
function %f2(i8, i64) -> i64 {
|
||||
block0(v0: i8, v1: i64):
|
||||
@@ -22,10 +30,18 @@ block0(v0: i8, v1: i64):
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sext.b a2,a0
|
||||
; add a0,a2,a1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli a2, a0, 0x38
|
||||
; srai a2, a2, 0x38
|
||||
; add a0, a2, a1
|
||||
; ret
|
||||
|
||||
function %i128_uextend_i64(i64) -> i128 {
|
||||
block0(v0: i64):
|
||||
@@ -33,9 +49,15 @@ block0(v0: i64):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; li a1,0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mv a1, zero
|
||||
; ret
|
||||
|
||||
function %i128_sextend_i64(i64) -> i128 {
|
||||
block0(v0: i64):
|
||||
@@ -43,10 +65,18 @@ block0(v0: i64):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; slt t2,a0,zero
|
||||
; sext.b1 a1,t2
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; sltz t2, a0
|
||||
; slli a1, t2, 0x3f
|
||||
; srai a1, a1, 0x3f
|
||||
; ret
|
||||
|
||||
function %i128_uextend_i32(i32) -> i128 {
|
||||
block0(v0: i32):
|
||||
@@ -54,10 +84,18 @@ block0(v0: i32):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uext.w a0,a0
|
||||
; li a1,0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli a0, a0, 0x20
|
||||
; srli a0, a0, 0x20
|
||||
; mv a1, zero
|
||||
; ret
|
||||
|
||||
function %i128_sextend_i32(i32) -> i128 {
|
||||
block0(v0: i32):
|
||||
@@ -65,11 +103,21 @@ block0(v0: i32):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sext.w a0,a0
|
||||
; slt a1,a0,zero
|
||||
; sext.b1 a1,a1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli a0, a0, 0x20
|
||||
; srai a0, a0, 0x20
|
||||
; sltz a1, a0
|
||||
; slli a1, a1, 0x3f
|
||||
; srai a1, a1, 0x3f
|
||||
; ret
|
||||
|
||||
function %i128_uextend_i16(i16) -> i128 {
|
||||
block0(v0: i16):
|
||||
@@ -77,10 +125,18 @@ block0(v0: i16):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uext.h a0,a0
|
||||
; li a1,0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli a0, a0, 0x30
|
||||
; srli a0, a0, 0x30
|
||||
; mv a1, zero
|
||||
; ret
|
||||
|
||||
function %i128_sextend_i16(i16) -> i128 {
|
||||
block0(v0: i16):
|
||||
@@ -88,11 +144,21 @@ block0(v0: i16):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sext.h a0,a0
|
||||
; slt a1,a0,zero
|
||||
; sext.b1 a1,a1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli a0, a0, 0x30
|
||||
; srai a0, a0, 0x30
|
||||
; sltz a1, a0
|
||||
; slli a1, a1, 0x3f
|
||||
; srai a1, a1, 0x3f
|
||||
; ret
|
||||
|
||||
function %i128_uextend_i8(i8) -> i128 {
|
||||
block0(v0: i8):
|
||||
@@ -100,10 +166,17 @@ block0(v0: i8):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uext.b a0,a0
|
||||
; li a1,0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; andi a0, a0, 0xff
|
||||
; mv a1, zero
|
||||
; ret
|
||||
|
||||
function %i128_sextend_i8(i8) -> i128 {
|
||||
block0(v0: i8):
|
||||
@@ -111,9 +184,19 @@ block0(v0: i8):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sext.b a0,a0
|
||||
; slt a1,a0,zero
|
||||
; sext.b1 a1,a1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli a0, a0, 0x38
|
||||
; srai a0, a0, 0x38
|
||||
; sltz a1, a0
|
||||
; slli a1, a1, 0x3f
|
||||
; srai a1, a1, 0x3f
|
||||
; ret
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@ block1:
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; li t1,0
|
||||
; fmv.d.x ft1,t1
|
||||
@@ -25,6 +26,16 @@ block1:
|
||||
; j label3
|
||||
; block3:
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mv t1, zero
|
||||
; fmv.d.x ft1, t1
|
||||
; mv a2, zero
|
||||
; fmv.d.x ft5, a2
|
||||
; fle.d a5, ft5, ft1
|
||||
; block1: ; offset 0x14
|
||||
; ret
|
||||
|
||||
function %f1() {
|
||||
block0:
|
||||
@@ -36,6 +47,7 @@ block1:
|
||||
return
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; li t1,0
|
||||
; fmv.d.x ft1,t1
|
||||
@@ -49,4 +61,14 @@ block1:
|
||||
; j label3
|
||||
; block3:
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mv t1, zero
|
||||
; fmv.d.x ft1, t1
|
||||
; mv a2, zero
|
||||
; fmv.d.x ft5, a2
|
||||
; fle.d a5, ft5, ft1
|
||||
; block1: ; offset 0x14
|
||||
; ret
|
||||
|
||||
|
||||
@@ -8,9 +8,15 @@ block0(v0: i8):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcvt.s.lu fa0,a0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fcvt.s.lu fa0, a0
|
||||
; ret
|
||||
|
||||
function u0:0(i8) -> f64 {
|
||||
block0(v0: i8):
|
||||
@@ -18,9 +24,15 @@ block0(v0: i8):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcvt.d.lu fa0,a0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fcvt.d.lu fa0, a0
|
||||
; ret
|
||||
|
||||
function u0:0(i16) -> f32 {
|
||||
block0(v0: i16):
|
||||
@@ -28,9 +40,15 @@ block0(v0: i16):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcvt.s.lu fa0,a0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fcvt.s.lu fa0, a0
|
||||
; ret
|
||||
|
||||
function u0:0(i16) -> f64 {
|
||||
block0(v0: i16):
|
||||
@@ -38,9 +56,15 @@ block0(v0: i16):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcvt.d.lu fa0,a0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fcvt.d.lu fa0, a0
|
||||
; ret
|
||||
|
||||
function u0:0(f32) -> i8 {
|
||||
block0(v0: f32):
|
||||
@@ -48,9 +72,32 @@ block0(v0: f32):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcvt_to_uint.i8 a0,fa0##in_ty=f32 tmp=ft3
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; feq.s a0, fa0, fa0
|
||||
; beqz a0, 0x40
|
||||
; auipc t6, 0
|
||||
; lwu t6, 0xc(t6)
|
||||
; j 8
|
||||
; .byte 0x00, 0x00, 0x80, 0xbf
|
||||
; fmv.w.x ft3, t6
|
||||
; fle.s a0, fa0, ft3
|
||||
; beqz a0, 8
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; trap: int_ovf
|
||||
; lui t6, 0x43800
|
||||
; fmv.w.x ft3, t6
|
||||
; fle.s a0, ft3, fa0
|
||||
; beqz a0, 8
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; trap: int_ovf
|
||||
; fcvt.wu.s a0, fa0, rtz
|
||||
; j 8
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; trap: bad_toint
|
||||
; ret
|
||||
|
||||
function u0:0(f64) -> i8 {
|
||||
block0(v0: f64):
|
||||
@@ -58,9 +105,37 @@ block0(v0: f64):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcvt_to_uint.i8 a0,fa0##in_ty=f64 tmp=ft3
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; feq.d a0, fa0, fa0
|
||||
; beqz a0, 0x54
|
||||
; auipc t6, 0
|
||||
; ld t6, 0xc(t6)
|
||||
; j 0xc
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; .byte 0x00, 0x00, 0xf0, 0xbf
|
||||
; fmv.d.x ft3, t6
|
||||
; fle.d a0, fa0, ft3
|
||||
; beqz a0, 8
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; trap: int_ovf
|
||||
; auipc t6, 0
|
||||
; ld t6, 0xc(t6)
|
||||
; j 0xc
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; .byte 0x00, 0x00, 0x70, 0x40
|
||||
; fmv.d.x ft3, t6
|
||||
; fle.d a0, ft3, fa0
|
||||
; beqz a0, 8
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; trap: int_ovf
|
||||
; fcvt.wu.d a0, fa0, rtz
|
||||
; j 8
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; trap: bad_toint
|
||||
; ret
|
||||
|
||||
function u0:0(f32) -> i16 {
|
||||
block0(v0: f32):
|
||||
@@ -68,9 +143,32 @@ block0(v0: f32):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcvt_to_uint.i16 a0,fa0##in_ty=f32 tmp=ft3
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; feq.s a0, fa0, fa0
|
||||
; beqz a0, 0x40
|
||||
; auipc t6, 0
|
||||
; lwu t6, 0xc(t6)
|
||||
; j 8
|
||||
; .byte 0x00, 0x00, 0x80, 0xbf
|
||||
; fmv.w.x ft3, t6
|
||||
; fle.s a0, fa0, ft3
|
||||
; beqz a0, 8
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; trap: int_ovf
|
||||
; lui t6, 0x47800
|
||||
; fmv.w.x ft3, t6
|
||||
; fle.s a0, ft3, fa0
|
||||
; beqz a0, 8
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; trap: int_ovf
|
||||
; fcvt.wu.s a0, fa0, rtz
|
||||
; j 8
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; trap: bad_toint
|
||||
; ret
|
||||
|
||||
function u0:0(f64) -> i16 {
|
||||
block0(v0: f64):
|
||||
@@ -78,7 +176,35 @@ block0(v0: f64):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; fcvt_to_uint.i16 a0,fa0##in_ty=f64 tmp=ft3
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; feq.d a0, fa0, fa0
|
||||
; beqz a0, 0x54
|
||||
; auipc t6, 0
|
||||
; ld t6, 0xc(t6)
|
||||
; j 0xc
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; .byte 0x00, 0x00, 0xf0, 0xbf
|
||||
; fmv.d.x ft3, t6
|
||||
; fle.d a0, fa0, ft3
|
||||
; beqz a0, 8
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; trap: int_ovf
|
||||
; auipc t6, 0
|
||||
; ld t6, 0xc(t6)
|
||||
; j 0xc
|
||||
; .byte 0x00, 0x00, 0x00, 0x00
|
||||
; .byte 0x00, 0x00, 0xf0, 0x40
|
||||
; fmv.d.x ft3, t6
|
||||
; fle.d a0, ft3, fa0
|
||||
; beqz a0, 8
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; trap: int_ovf
|
||||
; fcvt.wu.d a0, fa0, rtz
|
||||
; j 8
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; trap: bad_toint
|
||||
; ret
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -8,12 +8,24 @@ block0(v0: i128):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; or a0,a0,a1
|
||||
; li a2,-1
|
||||
; select_reg a1,zero,a2##condition=(zero eq a0)
|
||||
; mv a0,a1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; or a0, a0, a1
|
||||
; addi a2, zero, -1
|
||||
; beq zero, a0, 0xc
|
||||
; ori a1, a2, 0
|
||||
; j 8
|
||||
; ori a1, zero, 0
|
||||
; ori a0, a1, 0
|
||||
; ret
|
||||
|
||||
function %bmask_i128_i64(i128) -> i64 {
|
||||
block0(v0: i128):
|
||||
@@ -21,11 +33,22 @@ block0(v0: i128):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; or a0,a0,a1
|
||||
; li a2,-1
|
||||
; select_reg a0,zero,a2##condition=(zero eq a0)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; or a0, a0, a1
|
||||
; addi a2, zero, -1
|
||||
; beq zero, a0, 0xc
|
||||
; ori a0, a2, 0
|
||||
; j 8
|
||||
; ori a0, zero, 0
|
||||
; ret
|
||||
|
||||
function %bmask_i128_i32(i128) -> i32 {
|
||||
block0(v0: i128):
|
||||
@@ -33,11 +56,22 @@ block0(v0: i128):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; or a0,a0,a1
|
||||
; li a2,-1
|
||||
; select_reg a0,zero,a2##condition=(zero eq a0)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; or a0, a0, a1
|
||||
; addi a2, zero, -1
|
||||
; beq zero, a0, 0xc
|
||||
; ori a0, a2, 0
|
||||
; j 8
|
||||
; ori a0, zero, 0
|
||||
; ret
|
||||
|
||||
function %bmask_i128_i16(i128) -> i16 {
|
||||
block0(v0: i128):
|
||||
@@ -45,11 +79,22 @@ block0(v0: i128):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; or a0,a0,a1
|
||||
; li a2,-1
|
||||
; select_reg a0,zero,a2##condition=(zero eq a0)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; or a0, a0, a1
|
||||
; addi a2, zero, -1
|
||||
; beq zero, a0, 0xc
|
||||
; ori a0, a2, 0
|
||||
; j 8
|
||||
; ori a0, zero, 0
|
||||
; ret
|
||||
|
||||
function %bmask_i128_i8(i128) -> i8 {
|
||||
block0(v0: i128):
|
||||
@@ -57,11 +102,22 @@ block0(v0: i128):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; or a0,a0,a1
|
||||
; li a2,-1
|
||||
; select_reg a0,zero,a2##condition=(zero eq a0)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; or a0, a0, a1
|
||||
; addi a2, zero, -1
|
||||
; beq zero, a0, 0xc
|
||||
; ori a0, a2, 0
|
||||
; j 8
|
||||
; ori a0, zero, 0
|
||||
; ret
|
||||
|
||||
function %bmask_i64_i128(i64) -> i128 {
|
||||
block0(v0: i64):
|
||||
@@ -69,11 +125,22 @@ block0(v0: i64):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; li t2,-1
|
||||
; select_reg a1,zero,t2##condition=(zero eq a0)
|
||||
; mv a0,a1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; addi t2, zero, -1
|
||||
; beq zero, a0, 0xc
|
||||
; ori a1, t2, 0
|
||||
; j 8
|
||||
; ori a1, zero, 0
|
||||
; ori a0, a1, 0
|
||||
; ret
|
||||
|
||||
function %bmask_i32_i128(i32) -> i128 {
|
||||
block0(v0: i32):
|
||||
@@ -81,12 +148,23 @@ block0(v0: i32):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; addiw t2,a0,0
|
||||
; li a1,-1
|
||||
; select_reg a1,zero,a1##condition=(zero eq t2)
|
||||
; mv a0,a1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; sext.w t2, a0
|
||||
; addi a1, zero, -1
|
||||
; beq zero, t2, 8
|
||||
; j 8
|
||||
; ori a1, zero, 0
|
||||
; ori a0, a1, 0
|
||||
; ret
|
||||
|
||||
function %bmask_i16_i128(i16) -> i128 {
|
||||
block0(v0: i16):
|
||||
@@ -94,6 +172,7 @@ block0(v0: i16):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; lui a1,16
|
||||
; addi a1,a1,4095
|
||||
@@ -102,6 +181,19 @@ block0(v0: i16):
|
||||
; select_reg a1,zero,a5##condition=(zero eq a3)
|
||||
; mv a0,a1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; lui a1, 0x10
|
||||
; addi a1, a1, -1
|
||||
; and a3, a0, a1
|
||||
; addi a5, zero, -1
|
||||
; beq zero, a3, 0xc
|
||||
; ori a1, a5, 0
|
||||
; j 8
|
||||
; ori a1, zero, 0
|
||||
; ori a0, a1, 0
|
||||
; ret
|
||||
|
||||
function %bmask_i8_i128(i8) -> i128 {
|
||||
block0(v0: i8):
|
||||
@@ -109,10 +201,21 @@ block0(v0: i8):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; andi t2,a0,255
|
||||
; li a1,-1
|
||||
; select_reg a1,zero,a1##condition=(zero eq t2)
|
||||
; mv a0,a1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; andi t2, a0, 0xff
|
||||
; addi a1, zero, -1
|
||||
; beq zero, t2, 8
|
||||
; j 8
|
||||
; ori a1, zero, 0
|
||||
; ori a0, a1, 0
|
||||
; ret
|
||||
|
||||
|
||||
@@ -7,11 +7,20 @@ block0(v0: i8):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sext.b t2,a0
|
||||
; sub a1,zero,t2
|
||||
; max a0,t2,a1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli t2, a0, 0x38
|
||||
; srai t2, t2, 0x38
|
||||
; neg a1, t2
|
||||
; .byte 0x33, 0xe5, 0xb3, 0x0a
|
||||
; ret
|
||||
|
||||
function %iabs_i16(i16) -> i16 {
|
||||
block0(v0: i16):
|
||||
@@ -19,11 +28,20 @@ block0(v0: i16):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sext.h t2,a0
|
||||
; sub a1,zero,t2
|
||||
; max a0,t2,a1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli t2, a0, 0x30
|
||||
; srai t2, t2, 0x30
|
||||
; neg a1, t2
|
||||
; .byte 0x33, 0xe5, 0xb3, 0x0a
|
||||
; ret
|
||||
|
||||
function %iabs_i32(i32) -> i32 {
|
||||
block0(v0: i32):
|
||||
@@ -31,11 +49,20 @@ block0(v0: i32):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sext.w t2,a0
|
||||
; sub a1,zero,t2
|
||||
; max a0,t2,a1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli t2, a0, 0x20
|
||||
; srai t2, t2, 0x20
|
||||
; neg a1, t2
|
||||
; .byte 0x33, 0xe5, 0xb3, 0x0a
|
||||
; ret
|
||||
|
||||
function %iabs_i64(i64) -> i64 {
|
||||
block0(v0: i64):
|
||||
@@ -43,8 +70,15 @@ block0(v0: i64):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sub t2,zero,a0
|
||||
; max a0,a0,t2
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; neg t2, a0
|
||||
; .byte 0x33, 0x65, 0x75, 0x0a
|
||||
; ret
|
||||
|
||||
|
||||
@@ -7,11 +7,23 @@ block0(v0: i8):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sext.b t2,a0
|
||||
; sub a1,zero,t2
|
||||
; select_reg a0,t2,a1##condition=(t2 sgt a1)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli t2, a0, 0x38
|
||||
; srai t2, t2, 0x38
|
||||
; neg a1, t2
|
||||
; blt a1, t2, 0xc
|
||||
; ori a0, a1, 0
|
||||
; j 8
|
||||
; ori a0, t2, 0
|
||||
; ret
|
||||
|
||||
function %iabs_i16(i16) -> i16 {
|
||||
block0(v0: i16):
|
||||
@@ -19,11 +31,23 @@ block0(v0: i16):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sext.h t2,a0
|
||||
; sub a1,zero,t2
|
||||
; select_reg a0,t2,a1##condition=(t2 sgt a1)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli t2, a0, 0x30
|
||||
; srai t2, t2, 0x30
|
||||
; neg a1, t2
|
||||
; blt a1, t2, 0xc
|
||||
; ori a0, a1, 0
|
||||
; j 8
|
||||
; ori a0, t2, 0
|
||||
; ret
|
||||
|
||||
function %iabs_i32(i32) -> i32 {
|
||||
block0(v0: i32):
|
||||
@@ -31,11 +55,23 @@ block0(v0: i32):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sext.w t2,a0
|
||||
; sub a1,zero,t2
|
||||
; select_reg a0,t2,a1##condition=(t2 sgt a1)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli t2, a0, 0x20
|
||||
; srai t2, t2, 0x20
|
||||
; neg a1, t2
|
||||
; blt a1, t2, 0xc
|
||||
; ori a0, a1, 0
|
||||
; j 8
|
||||
; ori a0, t2, 0
|
||||
; ret
|
||||
|
||||
function %iabs_i64(i64) -> i64 {
|
||||
block0(v0: i64):
|
||||
@@ -43,8 +79,16 @@ block0(v0: i64):
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sub t2,zero,a0
|
||||
; select_reg a0,a0,t2##condition=(a0 sgt t2)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; neg t2, a0
|
||||
; blt t2, a0, 8
|
||||
; ori a0, t2, 0
|
||||
; ret
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@ block0:
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; lui t1,14
|
||||
; addi t1,t1,3532
|
||||
@@ -19,4 +20,20 @@ block0:
|
||||
; uext.h a7,a2
|
||||
; ne a0,a5,a7##ty=i16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; lui t1, 0xe
|
||||
; addi t1, t1, -0x234
|
||||
; lui a2, 0xe
|
||||
; addi a2, a2, -0x234
|
||||
; slli a5, t1, 0x30
|
||||
; srli a5, a5, 0x30
|
||||
; slli a7, a2, 0x30
|
||||
; srli a7, a7, 0x30
|
||||
; beq a5, a7, 0xc
|
||||
; addi a0, zero, 1
|
||||
; j 8
|
||||
; mv a0, zero
|
||||
; ret
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user