107 lines
3.7 KiB
Plaintext
107 lines
3.7 KiB
Plaintext
test run
|
|
set enable_llvm_abi_extensions=true
|
|
target x86_64
|
|
target aarch64
|
|
|
|
function %i128_stack_store_load(i128) -> b1 {
|
|
ss0 = explicit_slot 16
|
|
|
|
block0(v0: i128):
|
|
stack_store.i128 v0, ss0
|
|
v1 = stack_load.i128 ss0
|
|
|
|
v2 = icmp.i128 eq v0, v1
|
|
return v2
|
|
}
|
|
; run: %i128_stack_store_load(0) == true
|
|
; run: %i128_stack_store_load(-1) == true
|
|
; run: %i128_stack_store_load(0x00000000_00000000_FFFFFFFF_FFFFFFFF) == true
|
|
; run: %i128_stack_store_load(0xFFFFFFFF_FFFFFFFF_00000000_00000000) == true
|
|
; run: %i128_stack_store_load(0xFEDCBA98_76543210_01234567_89ABCDEF) == true
|
|
; run: %i128_stack_store_load(0xA00A00A0_0A00A00A_06060606_06060606) == true
|
|
; run: %i128_stack_store_load(0xDECAFFFF_C0FFEEEE_C0FFEEEE_DECAFFFF) == true
|
|
|
|
|
|
function %i128_stack_store_load_inst_offset(i128) -> b1 {
|
|
ss0 = explicit_slot 16
|
|
ss1 = explicit_slot 16
|
|
ss2 = explicit_slot 16
|
|
|
|
block0(v0: i128):
|
|
stack_store.i128 v0, ss1+16
|
|
v1 = stack_load.i128 ss1+16
|
|
|
|
v2 = icmp.i128 eq v0, v1
|
|
return v2
|
|
}
|
|
; run: %i128_stack_store_load_inst_offset(0) == true
|
|
; run: %i128_stack_store_load_inst_offset(-1) == true
|
|
; run: %i128_stack_store_load_inst_offset(0x00000000_00000000_FFFFFFFF_FFFFFFFF) == true
|
|
; run: %i128_stack_store_load_inst_offset(0xFFFFFFFF_FFFFFFFF_00000000_00000000) == true
|
|
; run: %i128_stack_store_load_inst_offset(0xFEDCBA98_76543210_01234567_89ABCDEF) == true
|
|
; run: %i128_stack_store_load_inst_offset(0xA00A00A0_0A00A00A_06060606_06060606) == true
|
|
; run: %i128_stack_store_load_inst_offset(0xDECAFFFF_C0FFEEEE_C0FFEEEE_DECAFFFF) == true
|
|
|
|
|
|
; Some arches (aarch64) try to encode the offset into the load/store instructions
|
|
; test that we spill if the offset is too large and doesn't fit in the instruction
|
|
function %i128_stack_store_load_big_offset(i128) -> b1 {
|
|
ss0 = explicit_slot 100000
|
|
ss1 = explicit_slot 8
|
|
|
|
block0(v0: i128):
|
|
stack_store.i128 v0, ss0
|
|
v1 = stack_load.i128 ss0
|
|
|
|
v2 = icmp.i128 eq v0, v1
|
|
return v2
|
|
}
|
|
; run: %i128_stack_store_load_big_offset(0) == true
|
|
; run: %i128_stack_store_load_big_offset(-1) == true
|
|
; run: %i128_stack_store_load_big_offset(0x00000000_00000000_FFFFFFFF_FFFFFFFF) == true
|
|
; run: %i128_stack_store_load_big_offset(0xFFFFFFFF_FFFFFFFF_00000000_00000000) == true
|
|
; run: %i128_stack_store_load_big_offset(0xFEDCBA98_76543210_01234567_89ABCDEF) == true
|
|
; run: %i128_stack_store_load_big_offset(0xA00A00A0_0A00A00A_06060606_06060606) == true
|
|
; run: %i128_stack_store_load_big_offset(0xDECAFFFF_C0FFEEEE_C0FFEEEE_DECAFFFF) == true
|
|
|
|
|
|
|
|
function %i128_store_load(i128) -> b1 {
|
|
ss0 = explicit_slot 16
|
|
|
|
block0(v0: i128):
|
|
v1 = stack_addr.i64 ss0
|
|
store.i128 v0, v1
|
|
v2 = load.i128 v1
|
|
|
|
v3 = icmp.i128 eq v0, v2
|
|
return v3
|
|
}
|
|
; run: %i128_store_load(0) == true
|
|
; run: %i128_store_load(-1) == true
|
|
; run: %i128_store_load(0x00000000_00000000_FFFFFFFF_FFFFFFFF) == true
|
|
; run: %i128_store_load(0xFFFFFFFF_FFFFFFFF_00000000_00000000) == true
|
|
; run: %i128_store_load(0xFEDCBA98_76543210_01234567_89ABCDEF) == true
|
|
; run: %i128_store_load(0xA00A00A0_0A00A00A_06060606_06060606) == true
|
|
; run: %i128_store_load(0xDECAFFFF_C0FFEEEE_C0FFEEEE_DECAFFFF) == true
|
|
|
|
|
|
function %i128_store_load_offset(i128) -> b1 {
|
|
ss0 = explicit_slot 32
|
|
|
|
block0(v0: i128):
|
|
v1 = stack_addr.i64 ss0
|
|
store.i128 v0, v1+16
|
|
v2 = load.i128 v1+16
|
|
|
|
v3 = icmp.i128 eq v0, v2
|
|
return v3
|
|
}
|
|
; run: %i128_store_load_offset(0) == true
|
|
; run: %i128_store_load_offset(-1) == true
|
|
; run: %i128_store_load_offset(0x00000000_00000000_FFFFFFFF_FFFFFFFF) == true
|
|
; run: %i128_store_load_offset(0xFFFFFFFF_FFFFFFFF_00000000_00000000) == true
|
|
; run: %i128_store_load_offset(0xFEDCBA98_76543210_01234567_89ABCDEF) == true
|
|
; run: %i128_store_load_offset(0xA00A00A0_0A00A00A_06060606_06060606) == true
|
|
; run: %i128_store_load_offset(0xDECAFFFF_C0FFEEEE_C0FFEEEE_DECAFFFF) == true
|