Closed Bug 1674641 Opened 4 years ago Closed 4 years ago

Assertion triggered by register assignment for i8x16.gt_u with identical operands

Categories

(Core :: JavaScript: WebAssembly, defect, P1)

x86_64
All
defect

Tracking

()

RESOLVED FIXED
84 Branch
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.)

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.

Blocks: 1673391
Summary: Assertion triggered by register assignment for i8x16.gt_u with constant operands → Assertion triggered by register assignment for i8x16.gt_u with identical operands

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.)

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.)

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

Attachment #9185094 - Attachment is obsolete: true
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
Status: ASSIGNED → RESOLVED
Closed: 4 years ago
Resolution: --- → FIXED
Target Milestone: --- → 84 Branch
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: