Closed Bug 411170 Opened 17 years ago Closed 17 years ago

TT: add SSE2 support for x86 targets

Categories

(Tamarin Graveyard :: Virtual Machine, defect)

x86
Windows XP
defect
Not set
normal

Tracking

(Not tracked)

VERIFIED FIXED

People

(Reporter: edwsmith, Assigned: edwsmith)

Details

Attachments

(2 files)

tamarin-central has SSE2 support but tamarin-tracing doesn't. for direct performance comparisons we should add SSE2 support. * use SSE2 registers to hold floating point values or quadword sized values (Box) * use SSE2 operations when we can fit operands into SSE2 registers (any int operation, or *SD for scalar double ops) * handle FPU->SSE moves when necessary (fmod, etc return result in FPU ST(0)) - does MOVQ do this? SSE code is conditional on whether the cpu has SSE2 support (flag is already there).
Assignee: nobody → edwsmith
TODO: * add LIR_u2d * heuristic for using x87 anyway since X87->XMM moves are expensive preliminary results X87 SSE prime4 125 94 boidsHeadless 3031 3062 boidshackHeadless 1344 1312 DrawGridHeadless 2047 2063 access-binary-trees 1123 1124 access-fannkuch 546 562 access-nbody 234 219 access-nsieve 765 764 bitops-3bit-bits-in-byte 31 31 bitops-bits-in-byte 93 94 bitops-bitwise-and 405 405 bitops-nsieve-bits 188 187 crypto-md5 4104 4103 crypto-sha1 1419 1420 math-cordic 125 125 math-partial-sums 327 327 math-spectral-norm 157 109 s3d-cube 1248 1264 s3d-morph 125 125 s3d-raytrace 1529 1529 string-fasta 406 406 controlflow-recursive 1186 1185
Attachment #296629 - Flags: review?
Attachment #296629 - Flags: review? → review?(rreitmai)
Blocks: 412016
No longer blocks: 412016
adding u2d is no longer in scope of this bug, created 412299 for LIR_u2d
Attachment #297009 - Flags: review? → review?(rreitmai)
Comment on attachment 296629 [details] [diff] [review] basic SSE2 support for floating point operations Assembler.cpp:588 did you mean '&' not '&&' Assembler.cpp:797 ucomisd(r,r) doesn't appear to set the flags, is this ok.
Attachment #296629 - Flags: review?(rreitmai) → review+
Comment on attachment 297009 [details] hg bundle of change merged with tip (not yet sanitized) good
Attachment #297009 - Flags: review+
Attachment #297009 - Flags: review?(rreitmai)
(In reply to comment #4) > (From update of attachment 296629 [details] [diff] [review]) > Assembler.cpp:588 did you mean '&' not '&&' yes i did, will fix. (although both cases will assert anyway) > Assembler.cpp:797 ucomisd(r,r) doesn't appear to set the flags, is this ok. ucomisd() sets the condition codes. callers of asm_fcmp() test for P or NP (parity bit only). ucomisd only sets P when x != x, ie x is NaN, which is what we want.
Status: NEW → RESOLVED
Closed: 17 years ago
Resolution: --- → 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: