cranelift: Add bmask to interpreter

This commit is contained in:
Afonso Bordado
2021-09-14 14:58:08 +01:00
parent 3ee180420e
commit 9a95ce75f1
5 changed files with 291 additions and 6 deletions

View File

@@ -0,0 +1,161 @@
test interpret
function %bmask_b64_i64(b64) -> i64 {
block0(v0: b64):
v1 = bmask.i64 v0
return v1
}
; run: %bmask_b64_i64(true) == -1
; run: %bmask_b64_i64(false) == 0
function %bmask_b64_i32(b64) -> i32 {
block0(v0: b64):
v1 = bmask.i32 v0
return v1
}
; run: %bmask_b64_i32(true) == -1
; run: %bmask_b64_i32(false) == 0
function %bmask_b64_i16(b64) -> i16 {
block0(v0: b64):
v1 = bmask.i16 v0
return v1
}
; run: %bmask_b64_i16(true) == -1
; run: %bmask_b64_i16(false) == 0
function %bmask_b64_i8(b64) -> i8 {
block0(v0: b64):
v1 = bmask.i8 v0
return v1
}
; run: %bmask_b64_i8(true) == -1
; run: %bmask_b64_i8(false) == 0
function %bmask_b32_i64(b32) -> i64 {
block0(v0: b32):
v1 = bmask.i64 v0
return v1
}
; run: %bmask_b32_i64(true) == -1
; run: %bmask_b32_i64(false) == 0
function %bmask_b32_i32(b32) -> i32 {
block0(v0: b32):
v1 = bmask.i32 v0
return v1
}
; run: %bmask_b32_i32(true) == -1
; run: %bmask_b32_i32(false) == 0
function %bmask_b32_i16(b32) -> i16 {
block0(v0: b32):
v1 = bmask.i16 v0
return v1
}
; run: %bmask_b32_i16(true) == -1
; run: %bmask_b32_i16(false) == 0
function %bmask_b32_i8(b32) -> i8 {
block0(v0: b32):
v1 = bmask.i8 v0
return v1
}
; run: %bmask_b32_i8(true) == -1
; run: %bmask_b32_i8(false) == 0
function %bmask_b16_i64(b16) -> i64 {
block0(v0: b16):
v1 = bmask.i64 v0
return v1
}
; run: %bmask_b16_i64(true) == -1
; run: %bmask_b16_i64(false) == 0
function %bmask_b16_i32(b16) -> i32 {
block0(v0: b16):
v1 = bmask.i32 v0
return v1
}
; run: %bmask_b16_i32(true) == -1
; run: %bmask_b16_i32(false) == 0
function %bmask_b16_i16(b16) -> i16 {
block0(v0: b16):
v1 = bmask.i16 v0
return v1
}
; run: %bmask_b16_i16(true) == -1
; run: %bmask_b16_i16(false) == 0
function %bmask_b16_i8(b16) -> i8 {
block0(v0: b16):
v1 = bmask.i8 v0
return v1
}
; run: %bmask_b16_i8(true) == -1
; run: %bmask_b16_i8(false) == 0
function %bmask_b8_i64(b8) -> i64 {
block0(v0: b8):
v1 = bmask.i64 v0
return v1
}
; run: %bmask_b8_i64(true) == -1
; run: %bmask_b8_i64(false) == 0
function %bmask_b8_i32(b8) -> i32 {
block0(v0: b8):
v1 = bmask.i32 v0
return v1
}
; run: %bmask_b8_i32(true) == -1
; run: %bmask_b8_i32(false) == 0
function %bmask_b8_i16(b8) -> i16 {
block0(v0: b8):
v1 = bmask.i16 v0
return v1
}
; run: %bmask_b8_i16(true) == -1
; run: %bmask_b8_i16(false) == 0
function %bmask_b8_i8(b8) -> i8 {
block0(v0: b8):
v1 = bmask.i8 v0
return v1
}
; run: %bmask_b8_i8(true) == -1
; run: %bmask_b8_i8(false) == 0
function %bmask_b1_i64(b1) -> i64 {
block0(v0: b1):
v1 = bmask.i64 v0
return v1
}
; run: %bmask_b1_i64(true) == -1
; run: %bmask_b1_i64(false) == 0
function %bmask_b1_i32(b1) -> i32 {
block0(v0: b1):
v1 = bmask.i32 v0
return v1
}
; run: %bmask_b1_i32(true) == -1
; run: %bmask_b1_i32(false) == 0
function %bmask_b1_i16(b1) -> i16 {
block0(v0: b1):
v1 = bmask.i16 v0
return v1
}
; run: %bmask_b1_i16(true) == -1
; run: %bmask_b1_i16(false) == 0
function %bmask_b1_i8(b1) -> i8 {
block0(v0: b1):
v1 = bmask.i8 v0
return v1
}
; run: %bmask_b1_i8(true) == -1
; run: %bmask_b1_i8(false) == 0

View File

@@ -0,0 +1,82 @@
test interpret
function %bmask_b128_i128(b128) -> i128 {
block0(v0: b128):
v1 = bmask.i128 v0
return v1
}
; run: %bmask_b128_i128(true) == -1
; run: %bmask_b128_i128(false) == 0
function %bmask_b128_i64(b128) -> i64 {
block0(v0: b128):
v1 = bmask.i64 v0
return v1
}
; run: %bmask_b128_i64(true) == -1
; run: %bmask_b128_i64(false) == 0
function %bmask_b128_i32(b128) -> i32 {
block0(v0: b128):
v1 = bmask.i32 v0
return v1
}
; run: %bmask_b128_i32(true) == -1
; run: %bmask_b128_i32(false) == 0
function %bmask_b128_i16(b128) -> i16 {
block0(v0: b128):
v1 = bmask.i16 v0
return v1
}
; run: %bmask_b128_i16(true) == -1
; run: %bmask_b128_i16(false) == 0
function %bmask_b128_i8(b128) -> i8 {
block0(v0: b128):
v1 = bmask.i8 v0
return v1
}
; run: %bmask_b128_i8(true) == -1
; run: %bmask_b128_i8(false) == 0
function %bmask_b64_i128(b64) -> i128 {
block0(v0: b64):
v1 = bmask.i128 v0
return v1
}
; run: %bmask_b64_i128(true) == -1
; run: %bmask_b64_i128(false) == 0
function %bmask_b32_i128(b32) -> i128 {
block0(v0: b32):
v1 = bmask.i128 v0
return v1
}
; run: %bmask_b32_i128(true) == -1
; run: %bmask_b32_i128(false) == 0
function %bmask_b16_i128(b16) -> i128 {
block0(v0: b16):
v1 = bmask.i128 v0
return v1
}
; run: %bmask_b16_i128(true) == -1
; run: %bmask_b16_i128(false) == 0
function %bmask_b8_i128(b8) -> i128 {
block0(v0: b8):
v1 = bmask.i128 v0
return v1
}
; run: %bmask_b8_i128(true) == -1
; run: %bmask_b8_i128(false) == 0
function %bmask_b1_i128(b1) -> i128 {
block0(v0: b1):
v1 = bmask.i128 v0
return v1
}
; run: %bmask_b1_i128(true) == -1
; run: %bmask_b1_i128(false) == 0

View File

@@ -0,0 +1,30 @@
test interpret
function %bmask_i8x16(b8x16) -> i8x16 {
block0(v0: b8x16):
v1 = bmask.i8x16 v0
return v1
}
; run: %bmask_i8x16([true false true false true false true false true false true false true false true false]) == [-1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0]
function %bmask_i16x8(b16x8) -> i16x8 {
block0(v0: b16x8):
v1 = bmask.i16x8 v0
return v1
}
; run: %bmask_i16x8([true false true false true false true false]) == [-1 0 -1 0 -1 0 -1 0]
function %bmask_i32x4(b32x4) -> i32x4 {
block0(v0: b32x4):
v1 = bmask.i32x4 v0
return v1
}
; run: %bmask_i32x4([true false true false]) == [-1 0 -1 0]
function %bmask_i64x2(b64x2) -> i64x2 {
block0(v0: b64x2):
v1 = bmask.i64x2 v0
return v1
}
; run: %bmask_i64x2([true false]) == [-1 0]