Merge pull request #3317 from dheaton-arm/implement-swiden

Implement `SwidenLow` and `SwidenHigh` for the interpreter
This commit is contained in:
Chris Fallin
2021-09-14 08:57:57 -07:00
committed by GitHub
4 changed files with 82 additions and 25 deletions

View File

@@ -0,0 +1,26 @@
test interpret
test run
target aarch64
set enable_simd
target x86_64 machinst
function %swidenhigh_i8x16(i8x16) -> i16x8 {
block0(v0: i8x16):
v1 = swiden_high v0
return v1
}
; run: %swidenhigh_i8x16([1 -2 3 -4 5 -6 7 -8 9 -10 11 -12 13 -14 15 -16]) == [9 -10 11 -12 13 -14 15 -16]
function %swidenhigh_i16x8(i16x8) -> i32x4 {
block0(v0: i16x8):
v1 = swiden_high v0
return v1
}
; run: %swidenhigh_i16x8([1 -2 3 -4 5 -6 7 -8]) == [5 -6 7 -8]
function %swidenhigh_i32x4(i32x4) -> i64x2 {
block0(v0: i32x4):
v1 = swiden_high v0
return v1
}
; run: %swidenhigh_i32x4([1 -2 3 -4]) == [3 -4]

View File

@@ -0,0 +1,26 @@
test interpret
test run
target aarch64
set enable_simd
target x86_64 machinst
function %swidenlow_i8x16(i8x16) -> i16x8 {
block0(v0: i8x16):
v1 = swiden_low v0
return v1
}
; run: %swidenlow_i8x16([1 -2 3 -4 5 -6 7 -8 9 -10 11 -12 13 -14 15 -16]) == [1 -2 3 -4 5 -6 7 -8]
function %swidenlow_i16x8(i16x8) -> i32x4 {
block0(v0: i16x8):
v1 = swiden_low v0
return v1
}
; run: %swidenlow_i16x8([1 -2 3 -4 5 -6 7 -8]) == [1 -2 3 -4]
function %swidenlow_i32x4(i32x4) -> i64x2 {
block0(v0: i32x4):
v1 = swiden_low v0
return v1
}
; run: %swidenlow_i32x4([1 -2 3 -4]) == [1 -2]