Files
wasmtime/cranelift/filetests/filetests/runtests/simd-iaddpairwise-64bit.clif
Damian Heaton 3b68d76905 Port widening ops to ISLE (AArch64) (#4751)
Ported the existing implementations of the following opcodes for AArch64
to ISLE, and implemented support for 64-bit vectors (per the docs):
- `SwidenLow`
- `SwidenHigh`
- `UwidenLow`
- `UwidenHigh`

Also ported `WideningPairwiseDotProductS` as-is.

Copyright (c) 2022 Arm Limited
2022-08-23 09:42:11 -07:00

69 lines
1.7 KiB
Plaintext

test interpret
test run
target aarch64
function %iaddp_i8x8(i8x8, i8x8) -> i8x8 {
block0(v0: i8x8, v1: i8x8):
v2 = iadd_pairwise v0, v1
return v2
}
; run: %iaddp_i8x8([1 2 3 4 5 6 7 8], [9 10 11 12 13 14 15 16]) == [3 7 11 15 19 23 27 31]
function %iaddp_i16x4(i16x4, i16x4) -> i16x4 {
block0(v0: i16x4, v1: i16x4):
v2 = iadd_pairwise v0, v1
return v2
}
; run: %iaddp_i16x4([1 2 3 4], [100 99 98 97]) == [3 7 199 195]
function %iaddp_i32x2(i32x2, i32x2) -> i32x2 {
block0(v0: i32x2, v1: i32x2):
v2 = iadd_pairwise v0, v1
return v2
}
; run: %iaddp_i32x2([1 2], [5 6]) == [3 11]
; run: %iaddp_i32x2([4294967290 5], [100 100]) == [4294967295 200]
function %swiden_i8x8(i8x8) -> i16x4 {
block0(v0: i8x8):
v1 = swiden_low v0
v2 = swiden_high v0
v3 = iadd_pairwise v1, v2
return v3
}
; run: %swiden_i8x8([1 2 3 4 5 6 7 8]) == [3 7 11 15]
; run: %swiden_i8x8([-1 2 -3 4 -5 6 -7 8]) == [1 1 1 1]
; run: %swiden_i8x8([127 1 126 2 125 3 124 4]) == [128 128 128 128]
function %uwiden_i8x8(i8x8) -> i16x4 {
block0(v0: i8x8):
v1 = uwiden_low v0
v2 = uwiden_high v0
v3 = iadd_pairwise v1, v2
return v3
}
; run: %uwiden_i8x8([17 18 19 20 21 22 23 24]) == [35 39 43 47]
; run: %uwiden_i8x8([2 254 3 253 4 252 5 251]) == [256 256 256 256]
function %swiden_i16x4(i16x4) -> i32x2 {
block0(v0: i16x4):
v1 = swiden_low v0
v2 = swiden_high v0
v3 = iadd_pairwise v1, v2
return v3
}
; run: %swiden_i16x4([1 2 3 4]) == [3 7]
; run: %swiden_i16x4([-1 2 -3 4]) == [1 1]
; run: %swiden_i16x4([127 1 126 2]) == [128 128]
function %uwiden_i16x4(i16x4) -> i32x2 {
block0(v0: i16x4):
v1 = uwiden_low v0
v2 = uwiden_high v0
v3 = iadd_pairwise v1, v2
return v3
}
; run: %uwiden_i16x4([17 18 19 20]) == [35 39]
; run: %uwiden_i16x4([2 254 3 253]) == [256 256]