]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
s390x: Mark register usage with HRmModify when applicable
authorAndreas Arnez <arnez@linux.ibm.com>
Mon, 9 Mar 2020 16:26:26 +0000 (17:26 +0100)
committerAndreas Arnez <arnez@linux.ibm.com>
Fri, 13 Mar 2020 19:35:00 +0000 (20:35 +0100)
Instead of marking register usage for the same register with HRmRead and
HRmWrite separately, use HRmModify instead.  This makes the code a bit
easier to read.

VEX/priv/host_s390_defs.c

index 04da842ee234f00b8bb090f5fb8e8ab358d387e6..98c160d7126ffd4913e6f4ecf8237a8c4e84f754 100644 (file)
@@ -681,31 +681,26 @@ s390_insn_get_reg_usage(HRegUsage *u, const s390_insn *insn)
       break;
 
    case S390_INSN_ALU:
-      addHRegUse(u, HRmWrite, insn->variant.alu.dst);
-      addHRegUse(u, HRmRead,  insn->variant.alu.dst);  /* op1 */
+      addHRegUse(u, HRmModify, insn->variant.alu.dst); /* op1 */
       s390_opnd_RMI_get_reg_usage(u, insn->variant.alu.op2);
       break;
 
    case S390_INSN_SMUL:
    case S390_INSN_UMUL:
-      addHRegUse(u, HRmRead,  insn->variant.mul.dst_lo);  /* op1 */
-      addHRegUse(u, HRmWrite, insn->variant.mul.dst_lo);
+      addHRegUse(u, HRmModify, insn->variant.mul.dst_lo); /* op1 */
       addHRegUse(u, HRmWrite, insn->variant.mul.dst_hi);
       s390_opnd_RMI_get_reg_usage(u, insn->variant.mul.op2);
       break;
 
    case S390_INSN_SDIV:
    case S390_INSN_UDIV:
-      addHRegUse(u, HRmRead,  insn->variant.div.op1_lo);
-      addHRegUse(u, HRmRead,  insn->variant.div.op1_hi);
-      addHRegUse(u, HRmWrite, insn->variant.div.op1_lo);
-      addHRegUse(u, HRmWrite, insn->variant.div.op1_hi);
+      addHRegUse(u, HRmModify, insn->variant.div.op1_lo);
+      addHRegUse(u, HRmModify, insn->variant.div.op1_hi);
       s390_opnd_RMI_get_reg_usage(u, insn->variant.div.op2);
       break;
 
    case S390_INSN_DIVS:
-      addHRegUse(u, HRmRead,  insn->variant.divs.op1);
-      addHRegUse(u, HRmWrite, insn->variant.divs.op1); /* quotient */
+      addHRegUse(u, HRmModify, insn->variant.divs.op1); /* quotient */
       addHRegUse(u, HRmWrite, insn->variant.divs.rem); /* remainder */
       s390_opnd_RMI_get_reg_usage(u, insn->variant.divs.op2);
       break;
@@ -788,19 +783,16 @@ s390_insn_get_reg_usage(HRegUsage *u, const s390_insn *insn)
    }
 
    case S390_INSN_BFP_TRIOP:
-      addHRegUse(u, HRmWrite, insn->variant.bfp_triop.dst);
-      addHRegUse(u, HRmRead,  insn->variant.bfp_triop.dst);  /* first */
+      addHRegUse(u, HRmModify, insn->variant.bfp_triop.dst); /* first */
       addHRegUse(u, HRmRead,  insn->variant.bfp_triop.op2);  /* second */
       addHRegUse(u, HRmRead,  insn->variant.bfp_triop.op3);  /* third */
       break;
 
    case S390_INSN_BFP_BINOP:
-      addHRegUse(u, HRmWrite, insn->variant.bfp_binop.dst_hi);
-      addHRegUse(u, HRmRead,  insn->variant.bfp_binop.dst_hi);  /* left */
+      addHRegUse(u, HRmModify, insn->variant.bfp_binop.dst_hi); /* left */
       addHRegUse(u, HRmRead,  insn->variant.bfp_binop.op2_hi);  /* right */
       if (insn->size == 16) {
-         addHRegUse(u, HRmWrite, insn->variant.bfp_binop.dst_lo);
-         addHRegUse(u, HRmRead,  insn->variant.bfp_binop.dst_lo);  /* left */
+         addHRegUse(u, HRmModify, insn->variant.bfp_binop.dst_lo); /* left */
          addHRegUse(u, HRmRead,  insn->variant.bfp_binop.op2_lo);  /* right */
       }
       break;
@@ -957,8 +949,7 @@ s390_insn_get_reg_usage(HRegUsage *u, const s390_insn *insn)
       break;
 
    case S390_INSN_VEC_AMODEINTOP:
-      addHRegUse(u, HRmRead, insn->variant.vec_amodeintop.dst);
-      addHRegUse(u, HRmWrite, insn->variant.vec_amodeintop.dst);
+      addHRegUse(u, HRmModify, insn->variant.vec_amodeintop.dst);
       s390_amode_get_reg_usage(u, insn->variant.vec_amodeintop.op2);
       addHRegUse(u, HRmRead, insn->variant.vec_amodeintop.op3);
       break;