https://bugs.kde.org/show_bug.cgi?id=363858

--- Comment #5 from Julian Seward <jsew...@acm.org> ---
(In reply to Carl Love from comment #1)
> Created attachment 99327 [details]
> Patch 4 of 5 to add VEX support for the POWER ISA 3.0 instructions

Main comments are:

* does this have any performance effect on plain boring integer
  code?  I ask because it seems like it might affect the IR generated
  for CR321 and CR0, which are used a lot for comparisons, but I am
  not sure.

  "make perf", then
    perf/vg_perf --vg=/path/to/old/tree --vg=/path/to/new/tree --reps=5
  gives you some idea

* I am somewhat concerned that some of these translations are
  going to generate a huge amount of IR and hence a huge amount of
  code at the back end, and I wonder if the more complex ones
  would be better done with C helper functions.

  Can you trigger any JIT assertion failures with worst-case code-size
  settings, by running all the test cases with
  --tool=memcheck --track-origins=yes --vex-iropt-level=0
  ?


* And some minor things below.


VEX/priv/guest_ppc_toIR.c

You swapped putCR321 and putCR0 ?  Any actual change?  Is confusing.
Please un-swap.


+static IRExpr * CmpGT128U (IRExpr *src1, IRExpr *src2)
+   /* Do and unsigend compare of two 128-bit values */

Fix typos


+static IRTemp increment_BCDstring (IRExpr *src, IRExpr *carry_in)
This seems like it will generate a huge amount of IR.  Is it
something you can do in a helper function, in the style of
amd64g_dirtyhelper_AESKEYGENASSIST ?


+static Bool dis_int_misc ( UInt theInstr )
+       * to be suspende.  Instruction fetching and execution are resumed
suspende += d

Un-indent the default: case one level.  It is misleadingly indented.


+   case 0x12D: // lxvll (Load VSX Vector Left-Justified with Length XX1 form)
Without looking at the context I can't tell, but .. does this need "gating"
(ie is only allowed for some hardware variants) ?

+      /* nb_zero is 0xFF..FF if the nb_field = 0 */
+      assign( nb_zero, binop( Iop_64HLtoV128,
+                              unop( Iop_1Sto64,
+                                    binop( Iop_CmpEQ64,
+                                           mkexpr( nb ),
+                                           mkU64( 0 ) ) ),
+                              unop( Iop_1Sto64,
+                                    binop( Iop_CmpEQ64,
+                                           mkexpr( nb ),
+                                           mkU64( 0 ) ) ) ) );

Lift the duplicated 1Sto64(CmpEQ64, nb, 0) term onto its own IRTemp
and use that.  Or maybe we should enable CSE by default in iropt for
POWER?  That has a JIT-time cost, though.


+   case 0x1AD: // stxvll (Store VSX Vector Left-justified with length
XX1-form)
Comments as for lxvll


+static Bool dis_av_bcd_misc ( UInt theInstr )
+   switch (opc2) {
+   case 0x341: // bcdcpsgn. Decimal Copy Sign VX-form
+            {
Please fix indentation to match house style

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

Reply via email to