Stream: git-wasmtime

Topic: wasmtime / issue #5529 Cranelift: SIMD `icmp` unsigned co...


view this post on Zulip Wasmtime GitHub notifications bot (Jan 05 2023 at 13:15):

afonso360 labeled issue #5529:

:wave: Hey,

.clif Test Case

test run
target x86_64

function %simd_icmp_uge_i64(i64x2, i64x2) -> i64x2 {
block0(v0: i64x2, v1: i64x2):
    v2 = icmp uge v0, v1
    return v2
}
; run: %simd_icmp_uge_i64([0 1], [0 0]) == [-1 -1]
; run: %simd_icmp_uge_i64([-1 0], [-1 1]) == [-1 0]
; run: %simd_icmp_uge_i64([-5 1], [-1 -1]) == [0 0]
; run: %simd_icmp_uge_i64([0 0], [0 0]) == [-1 -1]


function %simd_icmp_ugt_i64(i64x2, i64x2) -> i64x2 {
block0(v0: i64x2, v1: i64x2):
    v2 = icmp ugt v0, v1
    return v2
}
; run: %simd_icmp_ugt_i64([0 1], [0 0]) == [0 -1]
; run: %simd_icmp_ugt_i64([-1 0], [-1 1]) == [0 0]
; run: %simd_icmp_ugt_i64([-5 1], [-1 -1]) == [0 0]
; run: %simd_icmp_ugt_i64([0 0], [0 0]) == [0 0]

function %simd_icmp_ule_i64(i64x2, i64x2) -> i64x2 {
block0(v0: i64x2, v1: i64x2):
    v2 = icmp ule v0, v1
    return v2
}
; run: %simd_icmp_ule_i64([0 1], [0 0]) == [-1 0]
; run: %simd_icmp_ule_i64([-1 0], [-1 1]) == [-1 -1]
; run: %simd_icmp_ule_i64([-5 1], [-1 -1]) == [-1 -1]
; run: %simd_icmp_ule_i64([0 0], [0 0]) == [-1 -1]

function %simd_icmp_ult_i64(i64x2, i64x2) -> i64x2 {
block0(v0: i64x2, v1: i64x2):
    v2 = icmp ult v0, v1
    return v2
}
; run: %simd_icmp_ult_i64([0 1], [0 0]) == [0 0]
; run: %simd_icmp_ult_i64([-1 0], [-1 1]) == [0 -1]
; run: %simd_icmp_ult_i64([-5 1], [-1 -1]) == [-1 -1]
; run: %simd_icmp_ult_i64([0 0], [0 0]) == [0 0]

Steps to Reproduce

Expected Results

The tests to pass

Actual Results

thread 'worker #1' panicked at 'internal error: entered unreachable code: no rule matched for term x64_pmaxu at src/isa/x64/inst.isle line 2495; should it be partial?', /home/afonso/git/wasmtime/target/debug/build/cranelift-codegen-cafe59ca8460988e/out/isle_x64.rs:4755:12
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
 ERROR cranelift_filetests::concurrent > FAIL: panicked in worker #1: internal error: entered unreachable code: no rule matched for term x64_pmaxu at src/isa/x64/inst.isle line 2495; should it be partial?
FAIL ./lmao.clif: panicked in worker #1: internal error: entered unreachable code: no rule matched for term x64_pmaxu at src/isa/x64/inst.isle line 2495; should it be partial?
1 tests
Error: 1 failure

Versions and Environment

Cranelift version or commit: Main
Operating system: Linux
Architecture: x86_64

Extra Info

These tests already exist in our test suite.

view this post on Zulip Wasmtime GitHub notifications bot (Jan 05 2023 at 13:15):

afonso360 opened issue #5529:

:wave: Hey,

.clif Test Case

test run
target x86_64

function %simd_icmp_uge_i64(i64x2, i64x2) -> i64x2 {
block0(v0: i64x2, v1: i64x2):
    v2 = icmp uge v0, v1
    return v2
}
; run: %simd_icmp_uge_i64([0 1], [0 0]) == [-1 -1]
; run: %simd_icmp_uge_i64([-1 0], [-1 1]) == [-1 0]
; run: %simd_icmp_uge_i64([-5 1], [-1 -1]) == [0 0]
; run: %simd_icmp_uge_i64([0 0], [0 0]) == [-1 -1]


function %simd_icmp_ugt_i64(i64x2, i64x2) -> i64x2 {
block0(v0: i64x2, v1: i64x2):
    v2 = icmp ugt v0, v1
    return v2
}
; run: %simd_icmp_ugt_i64([0 1], [0 0]) == [0 -1]
; run: %simd_icmp_ugt_i64([-1 0], [-1 1]) == [0 0]
; run: %simd_icmp_ugt_i64([-5 1], [-1 -1]) == [0 0]
; run: %simd_icmp_ugt_i64([0 0], [0 0]) == [0 0]

function %simd_icmp_ule_i64(i64x2, i64x2) -> i64x2 {
block0(v0: i64x2, v1: i64x2):
    v2 = icmp ule v0, v1
    return v2
}
; run: %simd_icmp_ule_i64([0 1], [0 0]) == [-1 0]
; run: %simd_icmp_ule_i64([-1 0], [-1 1]) == [-1 -1]
; run: %simd_icmp_ule_i64([-5 1], [-1 -1]) == [-1 -1]
; run: %simd_icmp_ule_i64([0 0], [0 0]) == [-1 -1]

function %simd_icmp_ult_i64(i64x2, i64x2) -> i64x2 {
block0(v0: i64x2, v1: i64x2):
    v2 = icmp ult v0, v1
    return v2
}
; run: %simd_icmp_ult_i64([0 1], [0 0]) == [0 0]
; run: %simd_icmp_ult_i64([-1 0], [-1 1]) == [0 -1]
; run: %simd_icmp_ult_i64([-5 1], [-1 -1]) == [-1 -1]
; run: %simd_icmp_ult_i64([0 0], [0 0]) == [0 0]

Steps to Reproduce

Expected Results

The tests to pass

Actual Results

thread 'worker #1' panicked at 'internal error: entered unreachable code: no rule matched for term x64_pmaxu at src/isa/x64/inst.isle line 2495; should it be partial?', /home/afonso/git/wasmtime/target/debug/build/cranelift-codegen-cafe59ca8460988e/out/isle_x64.rs:4755:12
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
 ERROR cranelift_filetests::concurrent > FAIL: panicked in worker #1: internal error: entered unreachable code: no rule matched for term x64_pmaxu at src/isa/x64/inst.isle line 2495; should it be partial?
FAIL ./lmao.clif: panicked in worker #1: internal error: entered unreachable code: no rule matched for term x64_pmaxu at src/isa/x64/inst.isle line 2495; should it be partial?
1 tests
Error: 1 failure

Versions and Environment

Cranelift version or commit: Main
Operating system: Linux
Architecture: x86_64

Extra Info

These tests already exist in our test suite.

view this post on Zulip Wasmtime GitHub notifications bot (Jan 05 2023 at 13:15):

afonso360 labeled issue #5529:

:wave: Hey,

.clif Test Case

test run
target x86_64

function %simd_icmp_uge_i64(i64x2, i64x2) -> i64x2 {
block0(v0: i64x2, v1: i64x2):
    v2 = icmp uge v0, v1
    return v2
}
; run: %simd_icmp_uge_i64([0 1], [0 0]) == [-1 -1]
; run: %simd_icmp_uge_i64([-1 0], [-1 1]) == [-1 0]
; run: %simd_icmp_uge_i64([-5 1], [-1 -1]) == [0 0]
; run: %simd_icmp_uge_i64([0 0], [0 0]) == [-1 -1]


function %simd_icmp_ugt_i64(i64x2, i64x2) -> i64x2 {
block0(v0: i64x2, v1: i64x2):
    v2 = icmp ugt v0, v1
    return v2
}
; run: %simd_icmp_ugt_i64([0 1], [0 0]) == [0 -1]
; run: %simd_icmp_ugt_i64([-1 0], [-1 1]) == [0 0]
; run: %simd_icmp_ugt_i64([-5 1], [-1 -1]) == [0 0]
; run: %simd_icmp_ugt_i64([0 0], [0 0]) == [0 0]

function %simd_icmp_ule_i64(i64x2, i64x2) -> i64x2 {
block0(v0: i64x2, v1: i64x2):
    v2 = icmp ule v0, v1
    return v2
}
; run: %simd_icmp_ule_i64([0 1], [0 0]) == [-1 0]
; run: %simd_icmp_ule_i64([-1 0], [-1 1]) == [-1 -1]
; run: %simd_icmp_ule_i64([-5 1], [-1 -1]) == [-1 -1]
; run: %simd_icmp_ule_i64([0 0], [0 0]) == [-1 -1]

function %simd_icmp_ult_i64(i64x2, i64x2) -> i64x2 {
block0(v0: i64x2, v1: i64x2):
    v2 = icmp ult v0, v1
    return v2
}
; run: %simd_icmp_ult_i64([0 1], [0 0]) == [0 0]
; run: %simd_icmp_ult_i64([-1 0], [-1 1]) == [0 -1]
; run: %simd_icmp_ult_i64([-5 1], [-1 -1]) == [-1 -1]
; run: %simd_icmp_ult_i64([0 0], [0 0]) == [0 0]

Steps to Reproduce

Expected Results

The tests to pass

Actual Results

thread 'worker #1' panicked at 'internal error: entered unreachable code: no rule matched for term x64_pmaxu at src/isa/x64/inst.isle line 2495; should it be partial?', /home/afonso/git/wasmtime/target/debug/build/cranelift-codegen-cafe59ca8460988e/out/isle_x64.rs:4755:12
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
 ERROR cranelift_filetests::concurrent > FAIL: panicked in worker #1: internal error: entered unreachable code: no rule matched for term x64_pmaxu at src/isa/x64/inst.isle line 2495; should it be partial?
FAIL ./lmao.clif: panicked in worker #1: internal error: entered unreachable code: no rule matched for term x64_pmaxu at src/isa/x64/inst.isle line 2495; should it be partial?
1 tests
Error: 1 failure

Versions and Environment

Cranelift version or commit: Main
Operating system: Linux
Architecture: x86_64

Extra Info

These tests already exist in our test suite.

view this post on Zulip Wasmtime GitHub notifications bot (Jan 05 2023 at 13:17):

afonso360 edited issue #5529:

:wave: Hey,

.clif Test Case

test run
target x86_64

function %simd_icmp_uge_i64(i64x2, i64x2) -> i64x2 {
block0(v0: i64x2, v1: i64x2):
    v2 = icmp uge v0, v1
    return v2
}
; run: %simd_icmp_uge_i64([0 1], [0 0]) == [-1 -1]
; run: %simd_icmp_uge_i64([-1 0], [-1 1]) == [-1 0]
; run: %simd_icmp_uge_i64([-5 1], [-1 -1]) == [0 0]
; run: %simd_icmp_uge_i64([0 0], [0 0]) == [-1 -1]


function %simd_icmp_ugt_i64(i64x2, i64x2) -> i64x2 {
block0(v0: i64x2, v1: i64x2):
    v2 = icmp ugt v0, v1
    return v2
}
; run: %simd_icmp_ugt_i64([0 1], [0 0]) == [0 -1]
; run: %simd_icmp_ugt_i64([-1 0], [-1 1]) == [0 0]
; run: %simd_icmp_ugt_i64([-5 1], [-1 -1]) == [0 0]
; run: %simd_icmp_ugt_i64([0 0], [0 0]) == [0 0]

function %simd_icmp_ule_i64(i64x2, i64x2) -> i64x2 {
block0(v0: i64x2, v1: i64x2):
    v2 = icmp ule v0, v1
    return v2
}
; run: %simd_icmp_ule_i64([0 1], [0 0]) == [-1 0]
; run: %simd_icmp_ule_i64([-1 0], [-1 1]) == [-1 -1]
; run: %simd_icmp_ule_i64([-5 1], [-1 -1]) == [-1 -1]
; run: %simd_icmp_ule_i64([0 0], [0 0]) == [-1 -1]

function %simd_icmp_ult_i64(i64x2, i64x2) -> i64x2 {
block0(v0: i64x2, v1: i64x2):
    v2 = icmp ult v0, v1
    return v2
}
; run: %simd_icmp_ult_i64([0 1], [0 0]) == [0 0]
; run: %simd_icmp_ult_i64([-1 0], [-1 1]) == [0 -1]
; run: %simd_icmp_ult_i64([-5 1], [-1 -1]) == [-1 -1]
; run: %simd_icmp_ult_i64([0 0], [0 0]) == [0 0]

Steps to Reproduce

Expected Results

The tests to pass

Actual Results

thread 'worker #1' panicked at 'internal error: entered unreachable code: no rule matched for term x64_pmaxu at src/isa/x64/inst.isle line 2495; should it be partial?', /home/afonso/git/wasmtime/target/debug/build/cranelift-codegen-cafe59ca8460988e/out/isle_x64.rs:4755:12
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
 ERROR cranelift_filetests::concurrent > FAIL: panicked in worker #1: internal error: entered unreachable code: no rule matched for term x64_pmaxu at src/isa/x64/inst.isle line 2495; should it be partial?
FAIL ./lmao.clif: panicked in worker #1: internal error: entered unreachable code: no rule matched for term x64_pmaxu at src/isa/x64/inst.isle line 2495; should it be partial?
1 tests
Error: 1 failure

Versions and Environment

Cranelift version or commit: Main
Operating system: Linux
Architecture: x86_64

Extra Info

These tests already exist in our test suite.

view this post on Zulip Wasmtime GitHub notifications bot (Jan 05 2023 at 13:18):

afonso360 edited issue #5529:

:wave: Hey,

It looks like we have a hole in our lowerings where all unsigned operator are unimplemented only for i64x2 types. (they work for i32x4/i16x8/i8x16).

.clif Test Case

test run
target x86_64

function %simd_icmp_uge_i64(i64x2, i64x2) -> i64x2 {
block0(v0: i64x2, v1: i64x2):
    v2 = icmp uge v0, v1
    return v2
}
; run: %simd_icmp_uge_i64([0 1], [0 0]) == [-1 -1]
; run: %simd_icmp_uge_i64([-1 0], [-1 1]) == [-1 0]
; run: %simd_icmp_uge_i64([-5 1], [-1 -1]) == [0 0]
; run: %simd_icmp_uge_i64([0 0], [0 0]) == [-1 -1]


function %simd_icmp_ugt_i64(i64x2, i64x2) -> i64x2 {
block0(v0: i64x2, v1: i64x2):
    v2 = icmp ugt v0, v1
    return v2
}
; run: %simd_icmp_ugt_i64([0 1], [0 0]) == [0 -1]
; run: %simd_icmp_ugt_i64([-1 0], [-1 1]) == [0 0]
; run: %simd_icmp_ugt_i64([-5 1], [-1 -1]) == [0 0]
; run: %simd_icmp_ugt_i64([0 0], [0 0]) == [0 0]

function %simd_icmp_ule_i64(i64x2, i64x2) -> i64x2 {
block0(v0: i64x2, v1: i64x2):
    v2 = icmp ule v0, v1
    return v2
}
; run: %simd_icmp_ule_i64([0 1], [0 0]) == [-1 0]
; run: %simd_icmp_ule_i64([-1 0], [-1 1]) == [-1 -1]
; run: %simd_icmp_ule_i64([-5 1], [-1 -1]) == [-1 -1]
; run: %simd_icmp_ule_i64([0 0], [0 0]) == [-1 -1]

function %simd_icmp_ult_i64(i64x2, i64x2) -> i64x2 {
block0(v0: i64x2, v1: i64x2):
    v2 = icmp ult v0, v1
    return v2
}
; run: %simd_icmp_ult_i64([0 1], [0 0]) == [0 0]
; run: %simd_icmp_ult_i64([-1 0], [-1 1]) == [0 -1]
; run: %simd_icmp_ult_i64([-5 1], [-1 -1]) == [-1 -1]
; run: %simd_icmp_ult_i64([0 0], [0 0]) == [0 0]

Steps to Reproduce

Expected Results

The tests to pass

Actual Results

thread 'worker #1' panicked at 'internal error: entered unreachable code: no rule matched for term x64_pmaxu at src/isa/x64/inst.isle line 2495; should it be partial?', /home/afonso/git/wasmtime/target/debug/build/cranelift-codegen-cafe59ca8460988e/out/isle_x64.rs:4755:12
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
 ERROR cranelift_filetests::concurrent > FAIL: panicked in worker #1: internal error: entered unreachable code: no rule matched for term x64_pmaxu at src/isa/x64/inst.isle line 2495; should it be partial?
FAIL ./lmao.clif: panicked in worker #1: internal error: entered unreachable code: no rule matched for term x64_pmaxu at src/isa/x64/inst.isle line 2495; should it be partial?
1 tests
Error: 1 failure

Versions and Environment

Cranelift version or commit: Main
Operating system: Linux
Architecture: x86_64

Extra Info

These tests already exist in our test suite.

view this post on Zulip Wasmtime GitHub notifications bot (Jan 17 2023 at 21:48):

alexcrichton labeled issue #5529:

:wave: Hey,

It looks like we have a hole in our lowerings where all unsigned operator are unimplemented only for i64x2 types. (they work for i32x4/i16x8/i8x16).

.clif Test Case

test run
target x86_64

function %simd_icmp_uge_i64(i64x2, i64x2) -> i64x2 {
block0(v0: i64x2, v1: i64x2):
    v2 = icmp uge v0, v1
    return v2
}
; run: %simd_icmp_uge_i64([0 1], [0 0]) == [-1 -1]
; run: %simd_icmp_uge_i64([-1 0], [-1 1]) == [-1 0]
; run: %simd_icmp_uge_i64([-5 1], [-1 -1]) == [0 0]
; run: %simd_icmp_uge_i64([0 0], [0 0]) == [-1 -1]


function %simd_icmp_ugt_i64(i64x2, i64x2) -> i64x2 {
block0(v0: i64x2, v1: i64x2):
    v2 = icmp ugt v0, v1
    return v2
}
; run: %simd_icmp_ugt_i64([0 1], [0 0]) == [0 -1]
; run: %simd_icmp_ugt_i64([-1 0], [-1 1]) == [0 0]
; run: %simd_icmp_ugt_i64([-5 1], [-1 -1]) == [0 0]
; run: %simd_icmp_ugt_i64([0 0], [0 0]) == [0 0]

function %simd_icmp_ule_i64(i64x2, i64x2) -> i64x2 {
block0(v0: i64x2, v1: i64x2):
    v2 = icmp ule v0, v1
    return v2
}
; run: %simd_icmp_ule_i64([0 1], [0 0]) == [-1 0]
; run: %simd_icmp_ule_i64([-1 0], [-1 1]) == [-1 -1]
; run: %simd_icmp_ule_i64([-5 1], [-1 -1]) == [-1 -1]
; run: %simd_icmp_ule_i64([0 0], [0 0]) == [-1 -1]

function %simd_icmp_ult_i64(i64x2, i64x2) -> i64x2 {
block0(v0: i64x2, v1: i64x2):
    v2 = icmp ult v0, v1
    return v2
}
; run: %simd_icmp_ult_i64([0 1], [0 0]) == [0 0]
; run: %simd_icmp_ult_i64([-1 0], [-1 1]) == [0 -1]
; run: %simd_icmp_ult_i64([-5 1], [-1 -1]) == [-1 -1]
; run: %simd_icmp_ult_i64([0 0], [0 0]) == [0 0]

Steps to Reproduce

Expected Results

The tests to pass

Actual Results

thread 'worker #1' panicked at 'internal error: entered unreachable code: no rule matched for term x64_pmaxu at src/isa/x64/inst.isle line 2495; should it be partial?', /home/afonso/git/wasmtime/target/debug/build/cranelift-codegen-cafe59ca8460988e/out/isle_x64.rs:4755:12
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
 ERROR cranelift_filetests::concurrent > FAIL: panicked in worker #1: internal error: entered unreachable code: no rule matched for term x64_pmaxu at src/isa/x64/inst.isle line 2495; should it be partial?
FAIL ./lmao.clif: panicked in worker #1: internal error: entered unreachable code: no rule matched for term x64_pmaxu at src/isa/x64/inst.isle line 2495; should it be partial?
1 tests
Error: 1 failure

Versions and Environment

Cranelift version or commit: Main
Operating system: Linux
Architecture: x86_64

Extra Info

These tests already exist in our test suite.

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

alexcrichton commented on issue #5529:

These were implemented in https://github.com/bytecodealliance/wasmtime/pull/6291 and I enabled some tests there for this, so I'm going to close this.

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

alexcrichton closed issue #5529:

:wave: Hey,

It looks like we have a hole in our lowerings where all unsigned operator are unimplemented only for i64x2 types. (they work for i32x4/i16x8/i8x16).

.clif Test Case

test run
target x86_64

function %simd_icmp_uge_i64(i64x2, i64x2) -> i64x2 {
block0(v0: i64x2, v1: i64x2):
    v2 = icmp uge v0, v1
    return v2
}
; run: %simd_icmp_uge_i64([0 1], [0 0]) == [-1 -1]
; run: %simd_icmp_uge_i64([-1 0], [-1 1]) == [-1 0]
; run: %simd_icmp_uge_i64([-5 1], [-1 -1]) == [0 0]
; run: %simd_icmp_uge_i64([0 0], [0 0]) == [-1 -1]


function %simd_icmp_ugt_i64(i64x2, i64x2) -> i64x2 {
block0(v0: i64x2, v1: i64x2):
    v2 = icmp ugt v0, v1
    return v2
}
; run: %simd_icmp_ugt_i64([0 1], [0 0]) == [0 -1]
; run: %simd_icmp_ugt_i64([-1 0], [-1 1]) == [0 0]
; run: %simd_icmp_ugt_i64([-5 1], [-1 -1]) == [0 0]
; run: %simd_icmp_ugt_i64([0 0], [0 0]) == [0 0]

function %simd_icmp_ule_i64(i64x2, i64x2) -> i64x2 {
block0(v0: i64x2, v1: i64x2):
    v2 = icmp ule v0, v1
    return v2
}
; run: %simd_icmp_ule_i64([0 1], [0 0]) == [-1 0]
; run: %simd_icmp_ule_i64([-1 0], [-1 1]) == [-1 -1]
; run: %simd_icmp_ule_i64([-5 1], [-1 -1]) == [-1 -1]
; run: %simd_icmp_ule_i64([0 0], [0 0]) == [-1 -1]

function %simd_icmp_ult_i64(i64x2, i64x2) -> i64x2 {
block0(v0: i64x2, v1: i64x2):
    v2 = icmp ult v0, v1
    return v2
}
; run: %simd_icmp_ult_i64([0 1], [0 0]) == [0 0]
; run: %simd_icmp_ult_i64([-1 0], [-1 1]) == [0 -1]
; run: %simd_icmp_ult_i64([-5 1], [-1 -1]) == [-1 -1]
; run: %simd_icmp_ult_i64([0 0], [0 0]) == [0 0]

Steps to Reproduce

Expected Results

The tests to pass

Actual Results

thread 'worker #1' panicked at 'internal error: entered unreachable code: no rule matched for term x64_pmaxu at src/isa/x64/inst.isle line 2495; should it be partial?', /home/afonso/git/wasmtime/target/debug/build/cranelift-codegen-cafe59ca8460988e/out/isle_x64.rs:4755:12
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
 ERROR cranelift_filetests::concurrent > FAIL: panicked in worker #1: internal error: entered unreachable code: no rule matched for term x64_pmaxu at src/isa/x64/inst.isle line 2495; should it be partial?
FAIL ./lmao.clif: panicked in worker #1: internal error: entered unreachable code: no rule matched for term x64_pmaxu at src/isa/x64/inst.isle line 2495; should it be partial?
1 tests
Error: 1 failure

Versions and Environment

Cranelift version or commit: Main
Operating system: Linux
Architecture: x86_64

Extra Info

These tests already exist in our test suite.


Last updated: Oct 23 2024 at 20:03 UTC