Closed Bug 411687 Opened 18 years ago Closed 18 years ago

TT: optimize LIR_cmov

Categories

(Tamarin Graveyard :: Virtual Machine, defect)

x86
Windows XP
defect
Not set
normal

Tracking

(Not tracked)

VERIFIED FIXED

People

(Reporter: edwsmith, Assigned: stejohns)

Details

Attachments

(1 file)

emit code that uses the condition instruction to choose one of the many MOVcc variants, instead of computing a boolean and testing for eq/ne 0. (ie do like LIR_xf/xt do for conditional branches).
dbox could benefit from a quad-sized cmov
if dbox is the only place that's likely to benefit, might be simpler/better to just write a "normalizenan" primitive
Attached patch PatchSplinter Review
Redid LIR_cmov support to take advantage of the full suite of conditional moves rather than just MREQ. Combined with a little restructuring of the assembler code (to reduce redundant register moves) this removes several instructions from the typical cmov trace. As a result I rewrote the boxtype superword to use choose (rather than bit twiddling) as it produces slightly shorter code. Note that the ARM implementation is untested but (theoretically) should work. Thumb doesn't support conditional moves so uses bit-twiddling as a fallback.
Attachment #297237 - Flags: review?(edwsmith)
Attachment #297237 - Flags: review?(edwsmith) → review+
pushed as changeset: 284:abd80bd1eef4
Status: NEW → RESOLVED
Closed: 18 years ago
Resolution: --- → FIXED
Closing out all TT: transfer bugs that are resolved fixed.
Status: RESOLVED → VERIFIED
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: