[valgrind] [Bug 436411] Addition of arm64 v8.2 scalar FABD, FACGE, FACGT and FADD instructions

2021-06-08 Thread ahashmi
https://bugs.kde.org/show_bug.cgi?id=436411

ahashmi  changed:

   What|Removed |Added

 Status|RESOLVED|CLOSED

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 436411] Addition of arm64 v8.2 scalar FABD, FACGE, FACGT and FADD instructions

2021-06-08 Thread ahashmi
https://bugs.kde.org/show_bug.cgi?id=436411

ahashmi  changed:

   What|Removed |Added

 Resolution|--- |FIXED
 Status|REPORTED|RESOLVED

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 436411] Addition of arm64 v8.2 scalar FABD, FACGE, FACGT and FADD instructions

2021-06-08 Thread ahashmi
https://bugs.kde.org/show_bug.cgi?id=436411

--- Comment #7 from ahashmi  ---
Landed, 3ac86151404e6d018473dc3f6cd8b933be1ee038.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 436411] Addition of arm64 v8.2 scalar FABD, FACGE, FACGT and FADD instructions

2021-06-07 Thread ahashmi
https://bugs.kde.org/show_bug.cgi?id=436411

ahashmi  changed:

   What|Removed |Added

 Attachment #138947|0   |1
is obsolete||

--- Comment #6 from ahashmi  ---
Created attachment 139074
  --> https://bugs.kde.org/attachment.cgi?id=139074=edit
Addition of arm64 v8.2 scalar FABD, FACGE, FACGT and FADD instructions

> That all looks fine; please land.  Just before you do -- if you haven't
> already -- please though run the test cases once by hand on Memcheck,
> with --track-origins=yes, and check nothing breaks.  This has been
> known to happen in the past, at least to me :-)

Good point! And now I remember why I made the RIL change . When run
with --tool=memcheck:
vex: priv/host_arm64_isel.c:1292 (iselIntExpr_RIL_wrk): Assertion `ty
== Ity_I64 || ty == Ity_I32' failed.

Thanks for the out-of-band email explanation about IR traversal for isel and
the RIL functions. The latest patch includes the fix and tests pass with
--tool=memcheck and --track-origins=yes.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 436411] Addition of arm64 v8.2 scalar FABD, FACGE, FACGT and FADD instructions

2021-06-03 Thread Julian Seward
https://bugs.kde.org/show_bug.cgi?id=436411

--- Comment #5 from Julian Seward  ---
(In reply to ahashmi from comment #4)
> Created attachment 138947 [details]
> Adds arm64 v8.2 scalar FABD, FACGE, FACGT and FADD instructions

That all looks fine; please land.  Just before you do -- if you haven't
already -- please though run the test cases once by hand on Memcheck,
with --track-origins=yes, and check nothing breaks.  This has been
known to happen in the past, at least to me :-)

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 436411] Addition of arm64 v8.2 scalar FABD, FACGE, FACGT and FADD instructions

2021-06-02 Thread ahashmi
https://bugs.kde.org/show_bug.cgi?id=436411

ahashmi  changed:

   What|Removed |Added

 Attachment #138343|0   |1
is obsolete||

--- Comment #4 from ahashmi  ---
Created attachment 138947
  --> https://bugs.kde.org/attachment.cgi?id=138947=edit
Adds arm64 v8.2 scalar FABD, FACGE, FACGT and FADD instructions

Thanks for reviewing, apologies for the delay in responding.

The first issue pertaining to CPU feature-gating of the front-end was something
I did implement in the first v8.2 instruction, FADDP
(https://bugs.kde.org/show_bug.cgi?id=413547) but for some reason ommitted in
later v8.2 work! I've added the VEX_HWCAPS_ARM64_FP16 check for all
half-precision FP instructions.

The second issue to do with the Iex_Const case for iselIntExpr_RIL_wrk() turns
out to be some sort of confusion on my part! I can't remember exactly what
happened but I think an assert to catch Ity_I16 must've fired partway through
development and I just assumed it was the the Iex_Const in
iselIntExpr_RIL_wrk(). Anyway, I've removed the unnecessary changes and tested
on v8.x where x<3.

I'd prefer to get this patch past review and merged before addressing the same
hwcaps-gating issue in https://bugs.kde.org/show_bug.cgi?id=436873.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 436411] Addition of arm64 v8.2 scalar FABD, FACGE, FACGT and FADD instructions

2021-05-25 Thread Julian Seward
https://bugs.kde.org/show_bug.cgi?id=436411

Julian Seward  changed:

   What|Removed |Added

 CC||jsew...@acm.org

--- Comment #3 from Julian Seward  ---
This is for the most part good, and apart from the following I have no
concerns.

I see two issues of concern, both pertaining to CPU feature-gating.  The first
is in the front end:

+   if (bitU == 1 && size == X11 && opcode == BITS5(0,0,0,1,0)) {
+  /*  1,11,00010 FABD h_h_h  */
..

and the same for the other added instructions: these need to be feature-gated,
so that they are not accepted on non-8.2 capable hosts.  Consider what would
happen if, with these changes, we tried to run a binary containing these insns
on an 8.0 host.  Then the front end will accept the insns, generate (eg
Iop_Add16F), which the back end will translate back into an 8.2 insn, and we
will take a SIGILL in the generated code.  But that's not the correct
behaviour: what is required is that the front end declines to decode the insn,
and that in turn will cause the existing front end machinery to eventually
deliver a SIGILL to the guest.

The second area of concern is similar but in the back end, regarding the
Iex_Const case for iselIntExpr_RIL_wrk.  To be honest I'm not sure that this
should have been changed at all -- unless the RIL field, with its division into
N/R/S fields, has acquired a new interpretation, but not a new layout, in 8.2
instructions.  Can you clarify: does the existing immediate-for-bitfield
instruction-fragment (here called RIL, and the the ARM/ARM described using the
N/R/S triple) get a new interpretation in 8.2 instructions?

If it doesn't, and is instead a new kind of immediate field for these new
insns, then it seems to me that we'd need a new struct altogether, in similar
style to, but different from, ARM64RI6/ARM64RIL/ARM64RIA/ARM64AMode.

Independent of all of that, there's still the issues that iselIntExpr_RIL_wrk
can't be allowed to have different behaviour than it does now, without first
testing that we're on an 8.2 host rather than an 8.0 host.

In the backend, the top level iselSB_ARM64 passes around a `hwcaps_host`, and
that should contain whatever gating info is needed.  In the front end,
disInstr_ARM64 similarly passes around an `archinfo` and so the
`archinfo->hwcaps` field will contain whatever's needed for gating in the front
end.

+ /* This is a temporary alert while work is done on adding v8.2
+  * support. It will be removed and fixed when Ity_I16 immediate
+  * encodings are understood better as v8.2 work progresses.
+  */
+ vpanic("iselIntExpr_RIL_wrk: TODO: unhandled Ity_I16 for Iex_Const");

Regardless of all of the above, that can't land .. it would potentially
destabilise the back end.  If you don't want to handle the case specially, then
jump to the "default case" bit at the end of the function, which can handle
anything.  (The same scheme applies to many other isel-functions too).

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 436411] Addition of arm64 v8.2 scalar FABD, FACGE, FACGT and FADD instructions

2021-05-11 Thread ahashmi
https://bugs.kde.org/show_bug.cgi?id=436411

ahashmi  changed:

   What|Removed |Added

 Attachment #138216|0   |1
is obsolete||
 CC||assad.has...@linaro.org

--- Comment #2 from ahashmi  ---
Created attachment 138343
  --> https://bugs.kde.org/attachment.cgi?id=138343=edit
Adds arm64 v8.2 scalar FABD, FACGE, FACGT and FADD instructions

This is an updated patch which fixes a bug I found while working on the vector
variants of these instructions.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 436411] Addition of arm64 v8.2 scalar FABD, FACGE, FACGT and FADD instructions

2021-05-07 Thread ahashmi
https://bugs.kde.org/show_bug.cgi?id=436411

--- Comment #1 from ahashmi  ---
Created attachment 138216
  --> https://bugs.kde.org/attachment.cgi?id=138216=edit
Adds arm64 v8.2 scalar FABD, FACGE, FACGT and FADD instructions

This patch is for the scalar instruction variant, the vector patch will follow
next.

I have left the 16 bit immediate handling in iselIntExpr_RIL_wrk() as a TODO
while I get to grips with v8.2 immediate encodings.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 436411] Addition of arm64 v8.2 scalar FABD, FACGE, FACGT and FADD instructions

2021-05-07 Thread ahashmi
https://bugs.kde.org/show_bug.cgi?id=436411

ahashmi  changed:

   What|Removed |Added

Summary|Addition of arm64 v8.2  |Addition of arm64 v8.2
   |FABD, FACGE, FACGT and FADD |scalar FABD, FACGE, FACGT
   |instructions|and FADD instructions

-- 
You are receiving this mail because:
You are watching all bug changes.