Don't limit ExternalName::TestName length (#4764)

In order to keep the `ExternalName` enum small, the `TestcaseName`
struct was limited to 17 bytes: a 1 byte length and a 16 byte buffer.
Due to alignment, that made `ExternalName` 20 bytes.

That fixed-size buffer means that the names of functions in Cranelift
filetests are truncated to fit, which limits our ability to give tests
meaningful names. And I think meaningful names are important in tests.

This patch replaces the inline `TestcaseName` buffer with a
heap-allocated slice. We don't care about performance for test names, so
an indirection out to the heap is fine in that case. But we do care
somewhat about the size of `ExternalName` when it's used during
compiles.

On 64-bit systems, `Box<[u8]>` is 16 bytes, so `TestcaseName` gets one
byte smaller. Unfortunately, its alignment is 8 bytes, so `ExternalName`
grows from 20 to 24 bytes.

According to `valgrind --tool=dhat`, this change has very little effect
on compiler performance. Building wasmtime with `--no-default-features
--release`, and compiling the pulldown-cmark benchmark from Sightglass,
I measured these differences between `main` and this patch:

- total number of allocations didn't change (`ExternalName::TestCase` is
  not used in normal compiles)
- 592 more bytes allocated over the process lifetime, out of 171.5MiB
- 320 more bytes allocated at peak heap size, out of 12MiB
- 0.24% more instructions executed
- 16,987 more bytes written
- 12,120 _fewer_ bytes read
This commit is contained in:
Jamey Sharp
2022-08-23 21:17:30 -07:00
committed by GitHub
parent 4bdfa76370
commit 9cb987c678
22 changed files with 179 additions and 186 deletions

View File

@@ -34,7 +34,7 @@ block0:
v1 = bint.i16 v0
return v1
}
; run: %bint_b1_i16_fals() == 0
; run: %bint_b1_i16_false() == 0
function %bint_b1_i32_true() -> i32 {
block0:
@@ -50,7 +50,7 @@ block0:
v1 = bint.i32 v0
return v1
}
; run: %bint_b1_i32_fals() == 0
; run: %bint_b1_i32_false() == 0
function %bint_b1_i64_true() -> i64 {
block0:
@@ -66,7 +66,7 @@ block0:
v1 = bint.i64 v0
return v1
}
; run: %bint_b1_i64_fals() == 0
; run: %bint_b1_i64_false() == 0
@@ -101,7 +101,7 @@ block0:
v1 = bint.i16 v0
return v1
}
; run: %bint_b8_i16_fals() == 0
; run: %bint_b8_i16_false() == 0
function %bint_b8_i32_true() -> i32 {
block0:
@@ -117,7 +117,7 @@ block0:
v1 = bint.i32 v0
return v1
}
; run: %bint_b8_i32_fals() == 0
; run: %bint_b8_i32_false() == 0
function %bint_b8_i64_true() -> i64 {
block0:
@@ -133,7 +133,7 @@ block0:
v1 = bint.i64 v0
return v1
}
; run: %bint_b8_i64_fals() == 0
; run: %bint_b8_i64_false() == 0
@@ -153,7 +153,7 @@ block0:
v1 = bint.i8 v0
return v1
}
; run: %bint_b16_i8_fals() == 0
; run: %bint_b16_i8_false() == 0
function %bint_b16_i16_true() -> i16 {
block0:
@@ -161,7 +161,7 @@ block0:
v1 = bint.i16 v0
return v1
}
; run: %bint_b16_i16_tru() == 1
; run: %bint_b16_i16_true() == 1
function %bint_b16_i16_false() -> i16 {
block0:
@@ -169,7 +169,7 @@ block0:
v1 = bint.i16 v0
return v1
}
; run: %bint_b16_i16_fal() == 0
; run: %bint_b16_i16_false() == 0
function %bint_b16_i32_true() -> i32 {
block0:
@@ -177,7 +177,7 @@ block0:
v1 = bint.i32 v0
return v1
}
; run: %bint_b16_i32_tru() == 1
; run: %bint_b16_i32_true() == 1
function %bint_b16_i32_false() -> i32 {
block0:
@@ -185,7 +185,7 @@ block0:
v1 = bint.i32 v0
return v1
}
; run: %bint_b16_i32_fal() == 0
; run: %bint_b16_i32_false() == 0
function %bint_b16_i64_true() -> i64 {
block0:
@@ -193,7 +193,7 @@ block0:
v1 = bint.i64 v0
return v1
}
; run: %bint_b16_i64_tru() == 1
; run: %bint_b16_i64_true() == 1
function %bint_b16_i64_false() -> i64 {
block0:
@@ -201,7 +201,7 @@ block0:
v1 = bint.i64 v0
return v1
}
; run: %bint_b16_i64_fal() == 0
; run: %bint_b16_i64_false() == 0
@@ -220,7 +220,7 @@ block0:
v1 = bint.i8 v0
return v1
}
; run: %bint_b32_i8_fals() == 0
; run: %bint_b32_i8_false() == 0
function %bint_b32_i16_true() -> i16 {
block0:
@@ -228,7 +228,7 @@ block0:
v1 = bint.i16 v0
return v1
}
; run: %bint_b32_i16_tru() == 1
; run: %bint_b32_i16_true() == 1
function %bint_b32_i16_false() -> i16 {
block0:
@@ -236,7 +236,7 @@ block0:
v1 = bint.i16 v0
return v1
}
; run: %bint_b32_i16_fal() == 0
; run: %bint_b32_i16_false() == 0
function %bint_b32_i32_true() -> i32 {
block0:
@@ -244,7 +244,7 @@ block0:
v1 = bint.i32 v0
return v1
}
; run: %bint_b32_i32_tru() == 1
; run: %bint_b32_i32_true() == 1
function %bint_b32_i32_false() -> i32 {
block0:
@@ -252,7 +252,7 @@ block0:
v1 = bint.i32 v0
return v1
}
; run: %bint_b32_i32_fal() == 0
; run: %bint_b32_i32_false() == 0
function %bint_b32_i64_true() -> i64 {
block0:
@@ -260,7 +260,7 @@ block0:
v1 = bint.i64 v0
return v1
}
; run: %bint_b32_i64_tru() == 1
; run: %bint_b32_i64_true() == 1
function %bint_b32_i64_false() -> i64 {
block0:
@@ -268,7 +268,7 @@ block0:
v1 = bint.i64 v0
return v1
}
; run: %bint_b32_i64_fal() == 0
; run: %bint_b32_i64_false() == 0
@@ -289,7 +289,7 @@ block0:
v1 = bint.i8 v0
return v1
}
; run: %bint_b64_i8_fals() == 0
; run: %bint_b64_i8_false() == 0
function %bint_b64_i16_true() -> i16 {
block0:
@@ -297,7 +297,7 @@ block0:
v1 = bint.i16 v0
return v1
}
; run: %bint_b64_i16_tru() == 1
; run: %bint_b64_i16_true() == 1
function %bint_b64_i16_false() -> i16 {
block0:
@@ -305,7 +305,7 @@ block0:
v1 = bint.i16 v0
return v1
}
; run: %bint_b64_i16_fal() == 0
; run: %bint_b64_i16_false() == 0
function %bint_b64_i32_true() -> i32 {
block0:
@@ -313,7 +313,7 @@ block0:
v1 = bint.i32 v0
return v1
}
; run: %bint_b64_i32_tru() == 1
; run: %bint_b64_i32_true() == 1
function %bint_b64_i32_false() -> i32 {
block0:
@@ -321,7 +321,7 @@ block0:
v1 = bint.i32 v0
return v1
}
; run: %bint_b64_i32_fal() == 0
; run: %bint_b64_i32_false() == 0
function %bint_b64_i64_true() -> i64 {
block0:
@@ -329,7 +329,7 @@ block0:
v1 = bint.i64 v0
return v1
}
; run: %bint_b64_i64_tru() == 1
; run: %bint_b64_i64_true() == 1
function %bint_b64_i64_false() -> i64 {
block0:
@@ -337,4 +337,4 @@ block0:
v1 = bint.i64 v0
return v1
}
; run: %bint_b64_i64_fal() == 0
; run: %bint_b64_i64_false() == 0

View File

@@ -54,11 +54,11 @@ block2:
v20 = iconst.i32 1
return v20
}
; run: %fibonacci_recurs(0) == 1
; run: %fibonacci_recurs(1) == 1
; run: %fibonacci_recurs(2) == 1
; run: %fibonacci_recurs(3) == 2
; run: %fibonacci_recurs(4) == 3
; run: %fibonacci_recurs(5) == 5
; run: %fibonacci_recurs(6) == 8
; run: %fibonacci_recurs(10) == 55
; run: %fibonacci_recursive(0) == 1
; run: %fibonacci_recursive(1) == 1
; run: %fibonacci_recursive(2) == 1
; run: %fibonacci_recursive(3) == 2
; run: %fibonacci_recursive(4) == 3
; run: %fibonacci_recursive(5) == 5
; run: %fibonacci_recursive(6) == 8
; run: %fibonacci_recursive(10) == 55

View File

@@ -11,7 +11,7 @@ block0:
v1 = bint.i128 v0
return v1
}
; run: %bint_b1_i128_tru() == 1
; run: %bint_b1_i128_true() == 1
function %bint_b1_i128_false() -> i128 {
block0:
@@ -19,7 +19,7 @@ block0:
v1 = bint.i128 v0
return v1
}
; run: %bint_b1_i128_fal() == 0
; run: %bint_b1_i128_false() == 0
function %bint_b8_i128_true() -> i128 {
block0:
@@ -27,7 +27,7 @@ block0:
v1 = bint.i128 v0
return v1
}
; run: %bint_b8_i128_tru() == 1
; run: %bint_b8_i128_true() == 1
function %bint_b8_i128_false() -> i128 {
block0:
@@ -35,7 +35,7 @@ block0:
v1 = bint.i128 v0
return v1
}
; run: %bint_b8_i128_fal() == 0
; run: %bint_b8_i128_false() == 0
function %bint_b16_i128_true() -> i128 {
block0:
@@ -43,7 +43,7 @@ block0:
v1 = bint.i128 v0
return v1
}
; run: %bint_b16_i128_tr() == 1
; run: %bint_b16_i128_true() == 1
function %bint_b16_i128_false() -> i128 {
block0:
@@ -51,7 +51,7 @@ block0:
v1 = bint.i128 v0
return v1
}
; run: %bint_b16_i128_fa() == 0
; run: %bint_b16_i128_false() == 0
function %bint_b32_i128_true() -> i128 {
block0:
@@ -59,7 +59,7 @@ block0:
v1 = bint.i128 v0
return v1
}
; run: %bint_b32_i128_tr() == 1
; run: %bint_b32_i128_true() == 1
function %bint_b32_i128_false() -> i128 {
block0:
@@ -67,7 +67,7 @@ block0:
v1 = bint.i128 v0
return v1
}
; run: %bint_b32_i128_fa() == 0
; run: %bint_b32_i128_false() == 0
function %bint_b64_i128_true() -> i128 {
block0:
@@ -75,7 +75,7 @@ block0:
v1 = bint.i128 v0
return v1
}
; run: %bint_b64_i128_tr() == 1
; run: %bint_b64_i128_true() == 1
function %bint_b64_i128_false() -> i128 {
block0:
@@ -83,4 +83,4 @@ block0:
v1 = bint.i128 v0
return v1
}
; run: %bint_b64_i128_fa() == 0
; run: %bint_b64_i128_false() == 0

View File

@@ -14,5 +14,5 @@ block0(v0: i8):
v2 = icmp sge v0, v1
return v2
}
; run: %overflow_rhs_con(49) == true
; run: %overflow_rhs_con(-65) == false
; run: %overflow_rhs_const(49) == true
; run: %overflow_rhs_const(-65) == false

View File

@@ -16,10 +16,10 @@ block0(v0: i16x8, v1: i16x8):
v2 = icmp nof v0, v1
return v2
}
; run: %simd_icmp_nof_i1([0 0 1 0 0 0 0 0], [0 1 0 0xFFFF 0 0 0 0]) == [true true true true true true true true]
; run: %simd_icmp_nof_i1([0x8000 0x7FFF 0x7FFF 0xFFFF 0 0 0 0], [0x8000 0x0001 0x7FFF 0x0001 0 0 0 0]) == [true true true true true true true true]
; run: %simd_icmp_nof_i1([0x8000 0x7FFF 0x8000 0x7FFF 0 0 0 0], [0x0001 0x8000 0x7FFF 0xFFFF 0 0 0 0]) == [false false false false true true true true]
; run: %simd_icmp_nof_i1([0x7FFF 0x7FFF 0x7FFF 0x7FFF 0x7FFF 0x7FFF 0x7FFF 0x7FFF], [0xFFFF 0xFFFF 0xFFFF 0xFFFF 0xFFFF 0xFFFF 0xFFFF 0xFFFF]) == [false false false false false false false false]
; run: %simd_icmp_nof_i16([0 0 1 0 0 0 0 0], [0 1 0 0xFFFF 0 0 0 0]) == [true true true true true true true true]
; run: %simd_icmp_nof_i16([0x8000 0x7FFF 0x7FFF 0xFFFF 0 0 0 0], [0x8000 0x0001 0x7FFF 0x0001 0 0 0 0]) == [true true true true true true true true]
; run: %simd_icmp_nof_i16([0x8000 0x7FFF 0x8000 0x7FFF 0 0 0 0], [0x0001 0x8000 0x7FFF 0xFFFF 0 0 0 0]) == [false false false false true true true true]
; run: %simd_icmp_nof_i16([0x7FFF 0x7FFF 0x7FFF 0x7FFF 0x7FFF 0x7FFF 0x7FFF 0x7FFF], [0xFFFF 0xFFFF 0xFFFF 0xFFFF 0xFFFF 0xFFFF 0xFFFF 0xFFFF]) == [false false false false false false false false]
function %simd_icmp_nof_i32(i32x4, i32x4) -> b32x4 {
@@ -27,19 +27,19 @@ block0(v0: i32x4, v1: i32x4):
v2 = icmp nof v0, v1
return v2
}
; run: %simd_icmp_nof_i3([0 0 1 0], [0 1 0 0xFFFFFFFF]) == [true true true true]
; run: %simd_icmp_nof_i3([0x80000000 0x7FFFFFFF 0x7FFFFFFF 0xFFFFFFFF], [0x80000000 0x00000001 0x7FFFFFFF 0x00000001]) == [true true true true]
; run: %simd_icmp_nof_i3([0x80000000 0x7FFFFFFF 0x80000000 0x7FFFFFFF], [0x00000001 0x80000000 0x7FFFFFFF 0xFFFFFFFF]) == [false false false false]
; run: %simd_icmp_nof_i3([0x7FFFFFFF 0x7FFFFFFF 0x7FFFFFFF 0x7FFFFFFF], [0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF]) == [false false false false]
; run: %simd_icmp_nof_i32([0 0 1 0], [0 1 0 0xFFFFFFFF]) == [true true true true]
; run: %simd_icmp_nof_i32([0x80000000 0x7FFFFFFF 0x7FFFFFFF 0xFFFFFFFF], [0x80000000 0x00000001 0x7FFFFFFF 0x00000001]) == [true true true true]
; run: %simd_icmp_nof_i32([0x80000000 0x7FFFFFFF 0x80000000 0x7FFFFFFF], [0x00000001 0x80000000 0x7FFFFFFF 0xFFFFFFFF]) == [false false false false]
; run: %simd_icmp_nof_i32([0x7FFFFFFF 0x7FFFFFFF 0x7FFFFFFF 0x7FFFFFFF], [0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF]) == [false false false false]
function %simd_icmp_nof_i64(i64x2, i64x2) -> b64x2 {
block0(v0: i64x2, v1: i64x2):
v2 = icmp nof v0, v1
return v2
}
; run: %simd_icmp_nof_i6([0 0], [0 1]) == [true true]
; run: %simd_icmp_nof_i6([1 0], [0 0xFFFFFFFF_FFFFFFFF]) == [true true]
; run: %simd_icmp_nof_i6([0x80000000_00000000 0x7FFFFFFF_FFFFFFFF], [0x80000000_00000000 0x00000000_00000001]) == [true true]
; run: %simd_icmp_nof_i6([0x7FFFFFFF_FFFFFFFF 0xFFFFFFFF_FFFFFFFF], [0x7FFFFFFF_FFFFFFFF 0x00000000_00000001]) == [true true]
; run: %simd_icmp_nof_i6([0x80000000_00000000 0x7FFFFFFF_FFFFFFFF], [0x01 0x80000000_00000000]) == [false false]
; run: %simd_icmp_nof_i6([0x80000000_00000000 0x7FFFFFFF_FFFFFFFF], [0x7FFFFFFF_FFFFFFFF 0xFFFFFFFF_FFFFFFFF]) == [false false]
; run: %simd_icmp_nof_i64([0 0], [0 1]) == [true true]
; run: %simd_icmp_nof_i64([1 0], [0 0xFFFFFFFF_FFFFFFFF]) == [true true]
; run: %simd_icmp_nof_i64([0x80000000_00000000 0x7FFFFFFF_FFFFFFFF], [0x80000000_00000000 0x00000000_00000001]) == [true true]
; run: %simd_icmp_nof_i64([0x7FFFFFFF_FFFFFFFF 0xFFFFFFFF_FFFFFFFF], [0x7FFFFFFF_FFFFFFFF 0x00000000_00000001]) == [true true]
; run: %simd_icmp_nof_i64([0x80000000_00000000 0x7FFFFFFF_FFFFFFFF], [0x01 0x80000000_00000000]) == [false false]
; run: %simd_icmp_nof_i64([0x80000000_00000000 0x7FFFFFFF_FFFFFFFF], [0x7FFFFFFF_FFFFFFFF 0xFFFFFFFF_FFFFFFFF]) == [false false]

View File

@@ -12,22 +12,22 @@ block0(v0: i16x8, v1: i16x8):
v2 = icmp sge v0, v1
return v2
}
; run: %simd_icmp_sge_i1([0 1 -1 0 -5 1 0 0], [0 0 -1 1 -1 1 0 0]) == [true true true false false true true true]
; run: %simd_icmp_sge_i16([0 1 -1 0 -5 1 0 0], [0 0 -1 1 -1 1 0 0]) == [true true true false false true true true]
function %simd_icmp_sge_i32(i32x4, i32x4) -> b32x4 {
block0(v0: i32x4, v1: i32x4):
v2 = icmp sge v0, v1
return v2
}
; run: %simd_icmp_sge_i3([0 1 -1 0], [0 0 -1 1]) == [true true true false]
; run: %simd_icmp_sge_i3([-5 1 0 0], [-1 1 0 0]) == [false true true true]
; run: %simd_icmp_sge_i32([0 1 -1 0], [0 0 -1 1]) == [true true true false]
; run: %simd_icmp_sge_i32([-5 1 0 0], [-1 1 0 0]) == [false true true true]
function %simd_icmp_sge_i64(i64x2, i64x2) -> b64x2 {
block0(v0: i64x2, v1: i64x2):
v2 = icmp sge v0, v1
return v2
}
; run: %simd_icmp_sge_i6([0 1], [0 0]) == [true true]
; run: %simd_icmp_sge_i6([-1 0], [-1 1]) == [true false]
; run: %simd_icmp_sge_i6([-5 1], [-1 1]) == [false true]
; run: %simd_icmp_sge_i6([0 0], [0 0]) == [true true]
; run: %simd_icmp_sge_i64([0 1], [0 0]) == [true true]
; run: %simd_icmp_sge_i64([-1 0], [-1 1]) == [true false]
; run: %simd_icmp_sge_i64([-5 1], [-1 1]) == [false true]
; run: %simd_icmp_sge_i64([0 0], [0 0]) == [true true]

View File

@@ -12,7 +12,7 @@ block0(v0: i16x8, v1: i16x8):
v2 = icmp sgt v0, v1
return v2
}
; run: %simd_icmp_sgt_i1([0 1 -1 0 -5 1 0 0], [0 0 -1 1 -1 -1 0 0]) == [false true false false false true false false]
; run: %simd_icmp_sgt_i16([0 1 -1 0 -5 1 0 0], [0 0 -1 1 -1 -1 0 0]) == [false true false false false true false false]
function %simd_icmp_sgt_i32(i32x4, i32x4) -> b32x4 {
@@ -20,8 +20,8 @@ block0(v0: i32x4, v1: i32x4):
v2 = icmp sgt v0, v1
return v2
}
; run: %simd_icmp_sgt_i3([0 1 -1 0], [0 0 -1 1]) == [false true false false]
; run: %simd_icmp_sgt_i3([-5 1 0 0], [-1 -1 0 0]) == [false true false false]
; run: %simd_icmp_sgt_i32([0 1 -1 0], [0 0 -1 1]) == [false true false false]
; run: %simd_icmp_sgt_i32([-5 1 0 0], [-1 -1 0 0]) == [false true false false]
function %simd_icmp_sgt_i64(i64x2, i64x2) -> b64x2 {
@@ -29,7 +29,7 @@ block0(v0: i64x2, v1: i64x2):
v2 = icmp sgt v0, v1
return v2
}
; run: %simd_icmp_sgt_i6([0 1], [0 0 ]) == [false true]
; run: %simd_icmp_sgt_i6([-1 0], [-1 1]) == [false false]
; run: %simd_icmp_sgt_i6([-5 1], [-1 -1]) == [false true]
; run: %simd_icmp_sgt_i6([0 0], [0 0]) == [false false]
; run: %simd_icmp_sgt_i64([0 1], [0 0 ]) == [false true]
; run: %simd_icmp_sgt_i64([-1 0], [-1 1]) == [false false]
; run: %simd_icmp_sgt_i64([-5 1], [-1 -1]) == [false true]
; run: %simd_icmp_sgt_i64([0 0], [0 0]) == [false false]

View File

@@ -12,7 +12,7 @@ block0(v0: i16x8, v1: i16x8):
v2 = icmp sle v0, v1
return v2
}
; run: %simd_icmp_sle_i1([0 1 -1 0 -5 1 0 0], [0 0 -1 1 -1 -1 0 0]) == [true false true true true false true true]
; run: %simd_icmp_sle_i16([0 1 -1 0 -5 1 0 0], [0 0 -1 1 -1 -1 0 0]) == [true false true true true false true true]
function %simd_icmp_sle_i32(i32x4, i32x4) -> b32x4 {
@@ -20,8 +20,8 @@ block0(v0: i32x4, v1: i32x4):
v2 = icmp sle v0, v1
return v2
}
; run: %simd_icmp_sle_i3([0 1 -1 0], [0 0 -1 1]) == [true false true true]
; run: %simd_icmp_sle_i3([-5 1 0 0], [-1 -1 0 0]) == [true false true true]
; run: %simd_icmp_sle_i32([0 1 -1 0], [0 0 -1 1]) == [true false true true]
; run: %simd_icmp_sle_i32([-5 1 0 0], [-1 -1 0 0]) == [true false true true]
function %simd_icmp_sle_i64(i64x2, i64x2) -> b64x2 {
@@ -29,7 +29,7 @@ block0(v0: i64x2, v1: i64x2):
v2 = icmp sle v0, v1
return v2
}
; run: %simd_icmp_sle_i6([0 1], [0 0 ]) == [true false]
; run: %simd_icmp_sle_i6([-1 0], [-1 1]) == [true true]
; run: %simd_icmp_sle_i6([-5 1], [-1 -1]) == [true false]
; run: %simd_icmp_sle_i6([0 0], [0 0]) == [true true]
; run: %simd_icmp_sle_i64([0 1], [0 0 ]) == [true false]
; run: %simd_icmp_sle_i64([-1 0], [-1 1]) == [true true]
; run: %simd_icmp_sle_i64([-5 1], [-1 -1]) == [true false]
; run: %simd_icmp_sle_i64([0 0], [0 0]) == [true true]

View File

@@ -12,22 +12,22 @@ block0(v0: i16x8, v1: i16x8):
v2 = icmp slt v0, v1
return v2
}
; run: %simd_icmp_slt_i1([0 1 -1 0 -5 1 0 0], [0 0 -1 1 -1 1 0 0]) == [false false false true true false false false]
; run: %simd_icmp_slt_i16([0 1 -1 0 -5 1 0 0], [0 0 -1 1 -1 1 0 0]) == [false false false true true false false false]
function %simd_icmp_slt_i32(i32x4, i32x4) -> b32x4 {
block0(v0: i32x4, v1: i32x4):
v2 = icmp slt v0, v1
return v2
}
; run: %simd_icmp_slt_i3([0 1 -1 0], [0 0 -1 1]) == [false false false true]
; run: %simd_icmp_slt_i3([-5 1 0 0], [-1 1 0 0]) == [true false false false]
; run: %simd_icmp_slt_i32([0 1 -1 0], [0 0 -1 1]) == [false false false true]
; run: %simd_icmp_slt_i32([-5 1 0 0], [-1 1 0 0]) == [true false false false]
function %simd_icmp_slt_i64(i64x2, i64x2) -> b64x2 {
block0(v0: i64x2, v1: i64x2):
v2 = icmp slt v0, v1
return v2
}
; run: %simd_icmp_slt_i6([0 1], [0 0]) == [false false]
; run: %simd_icmp_slt_i6([-1 0], [-1 1]) == [false true]
; run: %simd_icmp_slt_i6([-5 1], [-1 1]) == [true false]
; run: %simd_icmp_slt_i6([0 0], [0 0]) == [false false]
; run: %simd_icmp_slt_i64([0 1], [0 0]) == [false false]
; run: %simd_icmp_slt_i64([-1 0], [-1 1]) == [false true]
; run: %simd_icmp_slt_i64([-5 1], [-1 1]) == [true false]
; run: %simd_icmp_slt_i64([0 0], [0 0]) == [false false]

View File

@@ -12,22 +12,22 @@ block0(v0: i16x8, v1: i16x8):
v2 = icmp uge v0, v1
return v2
}
; run: %simd_icmp_uge_i1([0 1 -1 0 -5 1 0 0], [0 0 -1 1 -1 -1 0 0]) == [true true true false false false true true]
; run: %simd_icmp_uge_i16([0 1 -1 0 -5 1 0 0], [0 0 -1 1 -1 -1 0 0]) == [true true true false false false true true]
function %simd_icmp_uge_i32(i32x4, i32x4) -> b32x4 {
block0(v0: i32x4, v1: i32x4):
v2 = icmp uge v0, v1
return v2
}
; run: %simd_icmp_uge_i3([0 1 -1 0], [0 0 -1 1]) == [true true true false]
; run: %simd_icmp_uge_i3([-5 1 0 0], [-1 -1 0 0]) == [false false true true]
; run: %simd_icmp_uge_i32([0 1 -1 0], [0 0 -1 1]) == [true true true false]
; run: %simd_icmp_uge_i32([-5 1 0 0], [-1 -1 0 0]) == [false false true true]
function %simd_icmp_uge_i64(i64x2, i64x2) -> b64x2 {
block0(v0: i64x2, v1: i64x2):
v2 = icmp uge v0, v1
return v2
}
; run: %simd_icmp_uge_i6([0 1], [0 0]) == [true true]
; run: %simd_icmp_uge_i6([-1 0], [-1 1]) == [true false]
; run: %simd_icmp_uge_i6([-5 1], [-1 -1]) == [false false]
; run: %simd_icmp_uge_i6([0 0], [0 0]) == [true true]
; run: %simd_icmp_uge_i64([0 1], [0 0]) == [true true]
; run: %simd_icmp_uge_i64([-1 0], [-1 1]) == [true false]
; run: %simd_icmp_uge_i64([-5 1], [-1 -1]) == [false false]
; run: %simd_icmp_uge_i64([0 0], [0 0]) == [true true]

View File

@@ -12,22 +12,22 @@ block0(v0: i16x8, v1: i16x8):
v2 = icmp ugt v0, v1
return v2
}
; run: %simd_icmp_ugt_i1([0 1 -1 0 -5 1 0 0], [0 0 -1 1 -1 -1 0 0]) == [false true false false false false false false]
; run: %simd_icmp_ugt_i16([0 1 -1 0 -5 1 0 0], [0 0 -1 1 -1 -1 0 0]) == [false true false false false false false false]
function %simd_icmp_ugt_i32(i32x4, i32x4) -> b32x4 {
block0(v0: i32x4, v1: i32x4):
v2 = icmp ugt v0, v1
return v2
}
; run: %simd_icmp_ugt_i3([0 1 -1 0], [0 0 -1 1]) == [false true false false]
; run: %simd_icmp_ugt_i3([-5 1 0 0], [-1 -1 0 0]) == [false false false false]
; run: %simd_icmp_ugt_i32([0 1 -1 0], [0 0 -1 1]) == [false true false false]
; run: %simd_icmp_ugt_i32([-5 1 0 0], [-1 -1 0 0]) == [false false false false]
function %simd_icmp_ugt_i64(i64x2, i64x2) -> b64x2 {
block0(v0: i64x2, v1: i64x2):
v2 = icmp ugt v0, v1
return v2
}
; run: %simd_icmp_ugt_i6([0 1], [0 0]) == [false true]
; run: %simd_icmp_ugt_i6([-1 0], [-1 1]) == [false false]
; run: %simd_icmp_ugt_i6([-5 1], [-1 -1]) == [false false]
; run: %simd_icmp_ugt_i6([0 0], [0 0]) == [false false]
; run: %simd_icmp_ugt_i64([0 1], [0 0]) == [false true]
; run: %simd_icmp_ugt_i64([-1 0], [-1 1]) == [false false]
; run: %simd_icmp_ugt_i64([-5 1], [-1 -1]) == [false false]
; run: %simd_icmp_ugt_i64([0 0], [0 0]) == [false false]

View File

@@ -12,22 +12,22 @@ block0(v0: i16x8, v1: i16x8):
v2 = icmp ule v0, v1
return v2
}
; run: %simd_icmp_ule_i1([0 1 -1 0 -5 1 0 0], [0 0 -1 1 -1 -1 0 0]) == [true false true true true true true true]
; run: %simd_icmp_ule_i16([0 1 -1 0 -5 1 0 0], [0 0 -1 1 -1 -1 0 0]) == [true false true true true true true true]
function %simd_icmp_ule_i32(i32x4, i32x4) -> b32x4 {
block0(v0: i32x4, v1: i32x4):
v2 = icmp ule v0, v1
return v2
}
; run: %simd_icmp_ule_i3([0 1 -1 0], [0 0 -1 1]) == [true false true true]
; run: %simd_icmp_ule_i3([-5 1 0 0], [-1 -1 0 0]) == [true true true true]
; run: %simd_icmp_ule_i32([0 1 -1 0], [0 0 -1 1]) == [true false true true]
; run: %simd_icmp_ule_i32([-5 1 0 0], [-1 -1 0 0]) == [true true true true]
function %simd_icmp_ule_i64(i64x2, i64x2) -> b64x2 {
block0(v0: i64x2, v1: i64x2):
v2 = icmp ule v0, v1
return v2
}
; run: %simd_icmp_ule_i6([0 1], [0 0]) == [true false]
; run: %simd_icmp_ule_i6([-1 0], [-1 1]) == [true true]
; run: %simd_icmp_ule_i6([-5 1], [-1 -1]) == [true true]
; run: %simd_icmp_ule_i6([0 0], [0 0]) == [true true]
; run: %simd_icmp_ule_i64([0 1], [0 0]) == [true false]
; run: %simd_icmp_ule_i64([-1 0], [-1 1]) == [true true]
; run: %simd_icmp_ule_i64([-5 1], [-1 -1]) == [true true]
; run: %simd_icmp_ule_i64([0 0], [0 0]) == [true true]

View File

@@ -12,22 +12,22 @@ block0(v0: i16x8, v1: i16x8):
v2 = icmp ult v0, v1
return v2
}
; run: %simd_icmp_ult_i1([0 1 -1 0 -5 1 0 0], [0 0 -1 1 -1 -1 0 0]) == [false false false true true true false false]
; run: %simd_icmp_ult_i16([0 1 -1 0 -5 1 0 0], [0 0 -1 1 -1 -1 0 0]) == [false false false true true true false false]
function %simd_icmp_ult_i32(i32x4, i32x4) -> b32x4 {
block0(v0: i32x4, v1: i32x4):
v2 = icmp ult v0, v1
return v2
}
; run: %simd_icmp_ult_i3([0 1 -1 0], [0 0 -1 1]) == [false false false true]
; run: %simd_icmp_ult_i3([-5 1 0 0], [-1 -1 0 0]) == [true true false false]
; run: %simd_icmp_ult_i32([0 1 -1 0], [0 0 -1 1]) == [false false false true]
; run: %simd_icmp_ult_i32([-5 1 0 0], [-1 -1 0 0]) == [true true false false]
function %simd_icmp_ult_i64(i64x2, i64x2) -> b64x2 {
block0(v0: i64x2, v1: i64x2):
v2 = icmp ult v0, v1
return v2
}
; run: %simd_icmp_ult_i6([0 1], [0 0]) == [false false]
; run: %simd_icmp_ult_i6([-1 0], [-1 1]) == [false true]
; run: %simd_icmp_ult_i6([-5 1], [-1 -1]) == [true true]
; run: %simd_icmp_ult_i6([0 0], [0 0]) == [false false]
; run: %simd_icmp_ult_i64([0 1], [0 0]) == [false false]
; run: %simd_icmp_ult_i64([-1 0], [-1 1]) == [false true]
; run: %simd_icmp_ult_i64([-5 1], [-1 -1]) == [true true]
; run: %simd_icmp_ult_i64([0 0], [0 0]) == [false false]

View File

@@ -82,4 +82,4 @@ block0:
v2 = icmp ne v0, v1
return v2
}
; run: %multi_slot_diffe() == true
; run: %multi_slot_different_addrs() == true

View File

@@ -72,8 +72,8 @@ block0(v0: i8, v1: i64):
v3 = stack_load.i64 ss1
return v2, v3
}
; run: %multi_slot_out_o(10, 1) == [10, 1]
; run: %multi_slot_out_o(0, 2) == [0, 2]
; run: %multi_slot_out_of_bounds_writes(10, 1) == [10, 1]
; run: %multi_slot_out_of_bounds_writes(0, 2) == [0, 2]
function %multi_slot_offset_writes(i8, i64) -> i8, i64 {
@@ -87,8 +87,8 @@ block0(v0: i8, v1: i64):
v3 = stack_load.i64 ss1
return v2, v3
}
; run: %multi_slot_offse(0, 1) == [0, 1]
; run: %multi_slot_offse(1, 2) == [1, 2]
; run: %multi_slot_offset_writes(0, 1) == [0, 1]
; run: %multi_slot_offset_writes(1, 2) == [1, 2]
function %huge_slots(i64) -> i64 {
ss0 = explicit_slot 1048576 ; 1MB Slot