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

View File

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

View File

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