Closed Bug 917200 Opened 11 years ago Closed 11 years ago

IonMonkey: ARM specializations of Float32 operators

Categories

(Core :: JavaScript Engine, defect)

ARM
All
defect
Not set
normal

Tracking

()

RESOLVED DUPLICATE of bug 913282

People

(Reporter: bbouvier, Unassigned)

References

Details

Attachments

(1 file, 5 obsolete files)

Attached patch ARM stub patch (obsolete) — Splinter Review
Now that Float32 basic support for ARM has landed, we need the ARM implementations of these supplementary operators before landing bug 913282.

I made a stub patch that allows me to cross compile locally for ARM. We just need to fill the holes now :)
Attached patch New stub patch (obsolete) — Splinter Review
This one has been already applied into the folded one in bug 913282, but this well help figuring out what are the methods to implement (principally codegen).
Attachment #805853 - Attachment is obsolete: true
Oops the ARM support has been posted to bug 913282.  It was only a small
matter so perhaps this one could just be closed as a duplicate.
Attached patch ARM support (obsolete) — Splinter Review
This was mostly a cut-and-paste of the existing float32 support.
Assignee: general → dtc-moz
Attachment #807963 - Attachment is obsolete: true
Attachment #811617 - Flags: review?(jcoppeard)
Comment on attachment 811617 [details] [diff] [review]
ARM support

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

Looks good!

::: js/src/jit/arm/CodeGenerator-arm.cpp
@@ +1652,5 @@
> +
> +    // Do the compare
> +    masm.ma_vcmpz_f32(opd);
> +    bool nocond = true;
> +    if (nocond) {

It looks like this if statement and the original visitNotD() are redundant as the condition is always true.

While you're here, can you replace the if statement by the contents of the first branch, and also for the visitNotD() one?

::: js/src/jit/arm/MacroAssembler-arm.cpp
@@ +71,5 @@
> +{
> +    // direct conversions aren't possible.
> +    VFPRegister dest = VFPRegister(dest_);
> +    as_vxfer(src, InvalidReg, dest.uintOverlay(),
> +             CoreToFloat);

nit: This doesn't need to be split over two lines.  Can you fix this and the double version too?
Attachment #811617 - Flags: review?(jcoppeard) → review+
> 
> ::: js/src/jit/arm/CodeGenerator-arm.cpp
> @@ +1652,5 @@
> > +
> > +    // Do the compare
> > +    masm.ma_vcmpz_f32(opd);
> > +    bool nocond = true;
> > +    if (nocond) {
> 
> It looks like this if statement and the original visitNotD() are redundant
> as the condition is always true.
> 
fwiw, this happened because there were two different implementations both of which seemed about equivalent in ease of implementation, and speed, so I just implemented both, with the idea that I'd benchmark both of them to see which is faster.  IIRC, there were actually three different possibilities, and one of them was behind #if 0 or something similar.
(In reply to Marty Rosenberg [:mjrosenb] from comment #5)
Ah right, fair enough.  We can leave them in if you like, I just thought it would be good to tidy up.
Attached patch Address reviewer feedback. (obsolete) — Splinter Review
Thank you for the feedback.  I have retained the 'NotF' variations,
but added a comment to explain - just let me know if you want them
cleaned up.

My own testing has not detected any issues, but it will
get some more testing when the Odin support is added.

Carrying forward r+.
Attachment #811617 - Attachment is obsolete: true
Attachment #812654 - Flags: review+
Attached patch Rebased (obsolete) — Splinter Review
Carrying forward r+
Attachment #812654 - Attachment is obsolete: true
Attachment #817763 - Flags: review+
Douglas, can this patch land before the series in bug 913282?
Otherwise, we might need to either fold all patches together or make this one standalone.
(In reply to Benjamin Bouvier [:bbouvier] from comment #9)
> Douglas, can this patch land before the series in bug 913282?

This patch depends on the patches in bug 913282. The patch in bug 921282 has the stubs that are filled in there.

> Otherwise, we might need to either fold all patches together or make this
> one standalone.

Yes, that might be a good option.  The patches here are applied directly after the combined patch in bug 921282 in my local source.
Attached patch RebasedSplinter Review
Rebased to match the update to the folded patch in bug 913282.

Carrying forward r+.
Attachment #817763 - Attachment is obsolete: true
Attachment #819282 - Flags: review+
As these bug's patches had circular dependencies with the ones in bug 913282, patches got merged and pushed on the other bug.
Status: NEW → RESOLVED
Closed: 11 years ago
Resolution: --- → DUPLICATE
Assignee: dtc-moz → nobody
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: