afonso360 labeled issue #3273:
Hey, In #3272 @dheaton-arm implemented tests for a standalone
iadd_pairwiseinstruction without aswiden_low/swiden_high/uwiden_low/uwiden_highinstruction 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.
.clifTest Casetest 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.clifExpected 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 IaddPairwiseVersions and Environment
Cranelift version or commit: main
Operating system: Windows
Architecture: x64Extra Info
The test file above should be in-tree at
cranelift/filetests/filetests/runtests/simd-iaddpairwise.clif, once #3272 is merged.
afonso360 opened issue #3273:
Hey, In #3272 @dheaton-arm implemented tests for a standalone
iadd_pairwiseinstruction without aswiden_low/swiden_high/uwiden_low/uwiden_highinstruction 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.
.clifTest Casetest 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.clifExpected 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 IaddPairwiseVersions and Environment
Cranelift version or commit: main
Operating system: Windows
Architecture: x64Extra Info
The test file above should be in-tree at
cranelift/filetests/filetests/runtests/simd-iaddpairwise.clif, once #3272 is merged.
afonso360 labeled issue #3273:
Hey, In #3272 @dheaton-arm implemented tests for a standalone
iadd_pairwiseinstruction without aswiden_low/swiden_high/uwiden_low/uwiden_highinstruction 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.
.clifTest Casetest 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.clifExpected 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 IaddPairwiseVersions and Environment
Cranelift version or commit: main
Operating system: Windows
Architecture: x64Extra Info
The test file above should be in-tree at
cranelift/filetests/filetests/runtests/simd-iaddpairwise.clif, once #3272 is merged.
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!
abrown labeled issue #3273:
Hey, In #3272 @dheaton-arm implemented tests for a standalone
iadd_pairwiseinstruction without aswiden_low/swiden_high/uwiden_low/uwiden_highinstruction 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.
.clifTest Casetest 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.clifExpected 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 IaddPairwiseVersions and Environment
Cranelift version or commit: main
Operating system: Windows
Architecture: x64Extra Info
The test file above should be in-tree at
cranelift/filetests/filetests/runtests/simd-iaddpairwise.clif, once #3272 is merged.
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
alexcrichton closed issue #3273:
Hey, In #3272 @dheaton-arm implemented tests for a standalone
iadd_pairwiseinstruction without aswiden_low/swiden_high/uwiden_low/uwiden_highinstruction 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.
.clifTest Casetest 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.clifExpected 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 IaddPairwiseVersions and Environment
Cranelift version or commit: main
Operating system: Windows
Architecture: x64Extra Info
The test file above should be in-tree at
cranelift/filetests/filetests/runtests/simd-iaddpairwise.clif, once #3272 is merged.
Last updated: Dec 13 2025 at 21:03 UTC