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:
Trevor Elliott
2023-02-15 16:35:10 -08:00
committed by GitHub
parent eabd43a178
commit f04decc4a1
277 changed files with 39340 additions and 98 deletions

2
Cargo.lock generated
View File

@@ -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",

View File

@@ -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 }

View File

@@ -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 = []

View File

@@ -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 {

View File

@@ -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!

View File

@@ -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 {

View File

@@ -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 {

View File

@@ -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 {

View File

@@ -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.

View File

@@ -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 }

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -10,6 +10,11 @@ block0(v0: i64):
return v0
}
; VCode:
; block0:
; ret
;
; Disassembled:
; block0: ; offset 0x0
; ret

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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