Restrict the types for isplit and iconcat to match backends (#6070)

* Restrict the types for isplit and iconcat to match backends

* Admit unimplemented bitwidths to isplit/iconcat

* Modify the NarrowInt type instead of shadowing it

* Fix filetest failures
This commit is contained in:
Trevor Elliott
2023-03-20 18:21:00 -07:00
committed by GitHub
parent 7d9318fe77
commit 861220c433
3 changed files with 10 additions and 19 deletions

View File

@@ -647,12 +647,8 @@ pub(crate) fn define(
let NarrowInt = &TypeVar::new(
"NarrowInt",
"An integer type with lanes type to `i64`",
TypeSetBuilder::new()
.ints(8..64)
.simd_lanes(Interval::All)
.dynamic_simd_lanes(Interval::All)
.build(),
"An integer type of width up to `i64`",
TypeSetBuilder::new().ints(8..64).build(),
);
let ScalarTruthy = &TypeVar::new(
@@ -3591,11 +3587,8 @@ pub(crate) fn define(
let WideInt = &TypeVar::new(
"WideInt",
"An integer type with lanes from `i16` upwards",
TypeSetBuilder::new()
.ints(16..128)
.simd_lanes(Interval::All)
.build(),
"An integer type of width `i16` upwards",
TypeSetBuilder::new().ints(16..128).build(),
);
ig.push(

View File

@@ -5,13 +5,13 @@ test cat
; Defining numbers.
function %defs() {
block100(v20: i32):
v1000 = iconst.i32x8 5
v1000 = iconst.i32 5
v9200 = f64const 0x4.0p0
trap user4
}
; sameln: function %defs() fast {
; nextln: block100(v20: i32):
; nextln: v1000 = iconst.i32x8 5
; nextln: v1000 = iconst.i32 5
; nextln: v9200 = f64const 0x1.0000000000000p2
; nextln: trap user4
; nextln: }

View File

@@ -65,15 +65,13 @@ block0(v95: i32, v96: i32, v97: i8):
; nextln: }
; Lane indexes.
function %lanes() {
block0:
v0 = iconst.i32x4 2
function %lanes(i32x4) {
block0(v0: i32x4):
v1 = extractlane v0, 3
v2 = insertlane v0, v1, 1
}
; sameln: function %lanes() fast {
; nextln: block0:
; nextln: v0 = iconst.i32x4 2
; sameln: function %lanes(i32x4) fast {
; nextln: block0(v0: i32x4):
; nextln: v1 = extractlane v0, 3
; nextln: v2 = insertlane v0, v1, 1
; nextln: }