Stream: git-wasmtime

Topic: wasmtime / issue #3273 Cranelift: x64 backend crashes com...


view this post on Zulip Wasmtime GitHub notifications bot (Sep 01 2021 at 14:09):

afonso360 labeled issue #3273:

Hey, In #3272 @dheaton-arm implemented tests for a standalone iadd_pairwise instruction without a swiden_low/swiden_high/uwiden_low/uwiden_high instruction as an input. It looks like this case is not implemented in the x64 backend, instead we always perform an optimization and merge those previous instructions.

.clif Test Case

test run
target x86_64 machinst

function %iaddp_i8x16(i8x16, i8x16) -> i8x16 {
block0(v0: i8x16, v1: i8x16):
    v2 = iadd_pairwise v0, v1
    return v2
}
; run: %iaddp_i8x16([1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16], [17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32]) == [3 7 11 15 19 23 27 31 35 39 43 47 51 55 59 63]

function %iaddp_i16x8(i16x8, i16x8) -> i16x8 {
block0(v0: i16x8, v1: i16x8):
    v2 = iadd_pairwise v0, v1
    return v2
}
; run: %iaddp_i16x8([1 2 3 4 5 6 7 8], [100 99 98 97 96 95 94 93]) == [3 7 11 15 199 195 191 187]

function %iaddp_i32x4(i32x4, i32x4) -> i32x4 {
block0(v0: i32x4, v1: i32x4):
    v2 = iadd_pairwise v0, v1
    return v2
}
; run: %iaddp_i32x4([1 2 3 4], [5 6 7 8]) == [3 7 11 15]
; run: %iaddp_i32x4([4294967290 5 4294967290 5], [100 100 100 100]) == [4294967295 4294967295 200 200]

Steps to Reproduce

Run clif-util the-above.clif

Expected Results

Tests to pass

Actual Results

Cranelift crashes with:

thread 'worker #0' panicked at 'not implemented: Operands not supported for IaddPairwise', cranelift\codegen\src\isa\x64\lower.rs:5095:17
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
FAIL .\filetests\filetests\runtests\test.clif: panicked in worker #0: not implemented: Operands not supported for IaddPairwise

Versions and Environment

Cranelift version or commit: main
Operating system: Windows
Architecture: x64

Extra Info

The test file above should be in-tree at cranelift/filetests/filetests/runtests/simd-iaddpairwise.clif, once #3272 is merged.

view this post on Zulip Wasmtime GitHub notifications bot (Sep 01 2021 at 14:09):

afonso360 opened issue #3273:

Hey, In #3272 @dheaton-arm implemented tests for a standalone iadd_pairwise instruction without a swiden_low/swiden_high/uwiden_low/uwiden_high instruction as an input. It looks like this case is not implemented in the x64 backend, instead we always perform an optimization and merge those previous instructions.

.clif Test Case

test run
target x86_64 machinst

function %iaddp_i8x16(i8x16, i8x16) -> i8x16 {
block0(v0: i8x16, v1: i8x16):
    v2 = iadd_pairwise v0, v1
    return v2
}
; run: %iaddp_i8x16([1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16], [17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32]) == [3 7 11 15 19 23 27 31 35 39 43 47 51 55 59 63]

function %iaddp_i16x8(i16x8, i16x8) -> i16x8 {
block0(v0: i16x8, v1: i16x8):
    v2 = iadd_pairwise v0, v1
    return v2
}
; run: %iaddp_i16x8([1 2 3 4 5 6 7 8], [100 99 98 97 96 95 94 93]) == [3 7 11 15 199 195 191 187]

function %iaddp_i32x4(i32x4, i32x4) -> i32x4 {
block0(v0: i32x4, v1: i32x4):
    v2 = iadd_pairwise v0, v1
    return v2
}
; run: %iaddp_i32x4([1 2 3 4], [5 6 7 8]) == [3 7 11 15]
; run: %iaddp_i32x4([4294967290 5 4294967290 5], [100 100 100 100]) == [4294967295 4294967295 200 200]

Steps to Reproduce

Run clif-util the-above.clif

Expected Results

Tests to pass

Actual Results

Cranelift crashes with:

thread 'worker #0' panicked at 'not implemented: Operands not supported for IaddPairwise', cranelift\codegen\src\isa\x64\lower.rs:5095:17
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
FAIL .\filetests\filetests\runtests\test.clif: panicked in worker #0: not implemented: Operands not supported for IaddPairwise

Versions and Environment

Cranelift version or commit: main
Operating system: Windows
Architecture: x64

Extra Info

The test file above should be in-tree at cranelift/filetests/filetests/runtests/simd-iaddpairwise.clif, once #3272 is merged.

view this post on Zulip Wasmtime GitHub notifications bot (Sep 01 2021 at 14:09):

afonso360 labeled issue #3273:

Hey, In #3272 @dheaton-arm implemented tests for a standalone iadd_pairwise instruction without a swiden_low/swiden_high/uwiden_low/uwiden_high instruction as an input. It looks like this case is not implemented in the x64 backend, instead we always perform an optimization and merge those previous instructions.

.clif Test Case

test run
target x86_64 machinst

function %iaddp_i8x16(i8x16, i8x16) -> i8x16 {
block0(v0: i8x16, v1: i8x16):
    v2 = iadd_pairwise v0, v1
    return v2
}
; run: %iaddp_i8x16([1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16], [17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32]) == [3 7 11 15 19 23 27 31 35 39 43 47 51 55 59 63]

function %iaddp_i16x8(i16x8, i16x8) -> i16x8 {
block0(v0: i16x8, v1: i16x8):
    v2 = iadd_pairwise v0, v1
    return v2
}
; run: %iaddp_i16x8([1 2 3 4 5 6 7 8], [100 99 98 97 96 95 94 93]) == [3 7 11 15 199 195 191 187]

function %iaddp_i32x4(i32x4, i32x4) -> i32x4 {
block0(v0: i32x4, v1: i32x4):
    v2 = iadd_pairwise v0, v1
    return v2
}
; run: %iaddp_i32x4([1 2 3 4], [5 6 7 8]) == [3 7 11 15]
; run: %iaddp_i32x4([4294967290 5 4294967290 5], [100 100 100 100]) == [4294967295 4294967295 200 200]

Steps to Reproduce

Run clif-util the-above.clif

Expected Results

Tests to pass

Actual Results

Cranelift crashes with:

thread 'worker #0' panicked at 'not implemented: Operands not supported for IaddPairwise', cranelift\codegen\src\isa\x64\lower.rs:5095:17
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
FAIL .\filetests\filetests\runtests\test.clif: panicked in worker #0: not implemented: Operands not supported for IaddPairwise

Versions and Environment

Cranelift version or commit: main
Operating system: Windows
Architecture: x64

Extra Info

The test file above should be in-tree at cranelift/filetests/filetests/runtests/simd-iaddpairwise.clif, once #3272 is merged.

view this post on Zulip Wasmtime GitHub notifications bot (Sep 01 2021 at 18:24):

cfallin commented on issue #3273:

cc @jlb6740 -- we discussed at the time (in #3209) that it was fine to merge without this more general case in order to make forward progress, but that we should eventually fill out the general case. Thanks for creating the issue to track this!

view this post on Zulip Wasmtime GitHub notifications bot (Sep 03 2021 at 23:49):

abrown labeled issue #3273:

Hey, In #3272 @dheaton-arm implemented tests for a standalone iadd_pairwise instruction without a swiden_low/swiden_high/uwiden_low/uwiden_high instruction as an input. It looks like this case is not implemented in the x64 backend, instead we always perform an optimization and merge those previous instructions.

.clif Test Case

test run
target x86_64 machinst

function %iaddp_i8x16(i8x16, i8x16) -> i8x16 {
block0(v0: i8x16, v1: i8x16):
    v2 = iadd_pairwise v0, v1
    return v2
}
; run: %iaddp_i8x16([1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16], [17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32]) == [3 7 11 15 19 23 27 31 35 39 43 47 51 55 59 63]

function %iaddp_i16x8(i16x8, i16x8) -> i16x8 {
block0(v0: i16x8, v1: i16x8):
    v2 = iadd_pairwise v0, v1
    return v2
}
; run: %iaddp_i16x8([1 2 3 4 5 6 7 8], [100 99 98 97 96 95 94 93]) == [3 7 11 15 199 195 191 187]

function %iaddp_i32x4(i32x4, i32x4) -> i32x4 {
block0(v0: i32x4, v1: i32x4):
    v2 = iadd_pairwise v0, v1
    return v2
}
; run: %iaddp_i32x4([1 2 3 4], [5 6 7 8]) == [3 7 11 15]
; run: %iaddp_i32x4([4294967290 5 4294967290 5], [100 100 100 100]) == [4294967295 4294967295 200 200]

Steps to Reproduce

Run clif-util the-above.clif

Expected Results

Tests to pass

Actual Results

Cranelift crashes with:

thread 'worker #0' panicked at 'not implemented: Operands not supported for IaddPairwise', cranelift\codegen\src\isa\x64\lower.rs:5095:17
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
FAIL .\filetests\filetests\runtests\test.clif: panicked in worker #0: not implemented: Operands not supported for IaddPairwise

Versions and Environment

Cranelift version or commit: main
Operating system: Windows
Architecture: x64

Extra Info

The test file above should be in-tree at cranelift/filetests/filetests/runtests/simd-iaddpairwise.clif, once #3272 is merged.

view this post on Zulip Wasmtime GitHub notifications bot (Jun 23 2023 at 02:46):

alexcrichton commented on issue #3273:

This was implemented in https://github.com/bytecodealliance/wasmtime/pull/6561 for the x64 backend, with tests enabled there, so I'm going to close this

view this post on Zulip Wasmtime GitHub notifications bot (Jun 23 2023 at 02:46):

alexcrichton closed issue #3273:

Hey, In #3272 @dheaton-arm implemented tests for a standalone iadd_pairwise instruction without a swiden_low/swiden_high/uwiden_low/uwiden_high instruction as an input. It looks like this case is not implemented in the x64 backend, instead we always perform an optimization and merge those previous instructions.

.clif Test Case

test run
target x86_64 machinst

function %iaddp_i8x16(i8x16, i8x16) -> i8x16 {
block0(v0: i8x16, v1: i8x16):
    v2 = iadd_pairwise v0, v1
    return v2
}
; run: %iaddp_i8x16([1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16], [17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32]) == [3 7 11 15 19 23 27 31 35 39 43 47 51 55 59 63]

function %iaddp_i16x8(i16x8, i16x8) -> i16x8 {
block0(v0: i16x8, v1: i16x8):
    v2 = iadd_pairwise v0, v1
    return v2
}
; run: %iaddp_i16x8([1 2 3 4 5 6 7 8], [100 99 98 97 96 95 94 93]) == [3 7 11 15 199 195 191 187]

function %iaddp_i32x4(i32x4, i32x4) -> i32x4 {
block0(v0: i32x4, v1: i32x4):
    v2 = iadd_pairwise v0, v1
    return v2
}
; run: %iaddp_i32x4([1 2 3 4], [5 6 7 8]) == [3 7 11 15]
; run: %iaddp_i32x4([4294967290 5 4294967290 5], [100 100 100 100]) == [4294967295 4294967295 200 200]

Steps to Reproduce

Run clif-util the-above.clif

Expected Results

Tests to pass

Actual Results

Cranelift crashes with:

thread 'worker #0' panicked at 'not implemented: Operands not supported for IaddPairwise', cranelift\codegen\src\isa\x64\lower.rs:5095:17
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
FAIL .\filetests\filetests\runtests\test.clif: panicked in worker #0: not implemented: Operands not supported for IaddPairwise

Versions and Environment

Cranelift version or commit: main
Operating system: Windows
Architecture: x64

Extra Info

The test file above should be in-tree at cranelift/filetests/filetests/runtests/simd-iaddpairwise.clif, once #3272 is merged.


Last updated: Dec 23 2024 at 12:05 UTC