Closed Bug 1108877 Opened 10 years ago Closed 10 years ago

fix regalloc constraints for SIMD ternary bitwise operator

Categories

(Core :: JavaScript Engine: JIT, defect)

defect
Not set
normal

Tracking

()

RESOLVED DUPLICATE of bug 1100123

People

(Reporter: sunfish, Assigned: sunfish)

Details

Attachments

(1 file)

Currently, the register allocator requires reused inputs to be at-start, and any input in an instruction which also has reused inputs to not be at-start. This is because it may insert a copy from the reused input to the output register before the instruction, which would clobber any at-start operands. This limitation should ideally be fixed, but for the present, this patch fixes the ternary bitwise operator to use at-start according to the present rules.
Attachment #8533450 - Flags: review?(benj)
Comment on attachment 8533450 [details] [diff] [review]
select-lowering.patch

Review of attachment 8533450 [details] [diff] [review]:
-----------------------------------------------------------------

So regalloc has another constraint, if i remember correctly, that if an operand is used twice in an instruction (e.g. here, operands 1 and 2 could be the same -- I agree it would be stupid for the case of select, but we can't prevent stupid things at this level), uses must be either all at-start or all non-start, but mixed useAtStart and use are not allowed. Is that still true? If it's the case, I think we need to have a condition as in x86's lowerForFPU in the non AVX case. Please fix if necessary, and r=me in all cases.
Attachment #8533450 - Flags: review?(benj) → review+
Arg. There are some conflicting rules here. I've fixed this in a more comprehensive way in bug 1100123.
Group: core-security
Status: NEW → RESOLVED
Closed: 10 years ago
Resolution: --- → DUPLICATE
Group: core-security → core-security-release
Group: core-security-release
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: