Assertion triggered by register assignment for i8x16.gt_u with identical operands
Categories
(Core :: JavaScript: WebAssembly, defect, P1)
Tracking
()
Tracking | Status | |
---|---|---|
firefox84 | --- | fixed |
People
(Reporter: lth, Assigned: lth)
References
(Blocks 1 open bug)
Details
Attachments
(2 files, 1 obsolete file)
With better test cases that test also constant operands, the assertion at the beginning of unsignedCompareInt8x16 triggers, presumably the problem is the same also for 16x8 and 32x4. This would lead to incorrect results being computed. (Unless, of course, the assertion is wrong.)
Assignee | ||
Comment 1•4 years ago
|
||
The problem is not a constant per se, but two operands that Ion can see are the same and hence allocates to the same input register. The masm code doesn't like that, it wants lhs == output and rhs != lhs. rhs != lhs is too strict really. We can use the scratchreg to hold a copy in this case, but it looks like the assertion is unnecessary / stale, as the output is not written until after the last use of either input.
Assignee | ||
Updated•4 years ago
|
Assignee | ||
Comment 2•4 years ago
|
||
Add test cases for (v128,v128)->v128 binary operations that test also
constant operands in various combinations. This then also tests cases
where operands to multi-operand operators are equal and are known to
Ion to be equal.
(Ditto test cases for other types of operations will be attached to
other bugs, in flight.)
Assignee | ||
Comment 3•4 years ago
|
||
Add test cases for (v128,v128)->v128 binary operations that test also
constant operands in various combinations. This then also tests cases
where operands to multi-operand operators are equal and are known to
Ion to be equal.
(Ditto test cases for other types of operations will be attached to
other bugs, in flight.)
Assignee | ||
Comment 4•4 years ago
|
||
The code for unsigned i8x16 should not check that rhs != lhs since
that is not required, nor will it hold in practice. So remove a part
of an assertion.
However the code for unsigned i16x8 and unsigned i32x4 should still
check that the inputs don't overlap the temps, since the code for
i8x16 checks that. So add some assertions.
Depends on D95482
Updated•4 years ago
|
Pushed by lhansen@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/c5642f2974ea More SIMD test cases. r=jseward https://hg.mozilla.org/integration/autoland/rev/389c6c36d987 Clean up assertions for unsigned int SIMD compares. r=jseward
Comment 7•4 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/c5642f2974ea
https://hg.mozilla.org/mozilla-central/rev/389c6c36d987
Description
•