Merge pull request #3316 from dheaton-arm/implement-uwiden

Implement `UwidenLow` and `UwidenHigh` for the interpreter
This commit is contained in:
Chris Fallin
2021-09-10 12:32:50 -07:00
committed by GitHub
4 changed files with 75 additions and 2 deletions

View File

@@ -0,0 +1,26 @@
test interpret
test run
target aarch64
set enable_simd
target x86_64 machinst
function %uwidenhigh_i8x16(i8x16) -> i16x8 {
block0(v0: i8x16):
v1 = uwiden_high v0
return v1
}
; run: %uwidenhigh_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 %uwidenhigh_i16x8(i16x8) -> i32x4 {
block0(v0: i16x8):
v1 = uwiden_high v0
return v1
}
; run: %uwidenhigh_i16x8([1 2 3 4 5 6 7 8]) == [5 6 7 8]
function %uwidenhigh_i32x4(i32x4) -> i64x2 {
block0(v0: i32x4):
v1 = uwiden_high v0
return v1
}
; run: %uwidenhigh_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 %uwidenlow_i8x16(i8x16) -> i16x8 {
block0(v0: i8x16):
v1 = uwiden_low v0
return v1
}
; run: %uwidenlow_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 %uwidenlow_i16x8(i16x8) -> i32x4 {
block0(v0: i16x8):
v1 = uwiden_low v0
return v1
}
; run: %uwidenlow_i16x8([1 2 3 4 5 6 7 8]) == [1 2 3 4]
function %uwidenlow_i32x4(i32x4) -> i64x2 {
block0(v0: i32x4):
v1 = uwiden_low v0
return v1
}
; run: %uwidenlow_i32x4([1 2 3 4]) == [1 2]