Re: [PATCH v2 09/15] move opcode test inside simplify_mask_or_and()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 16/08/18 23:12, Luc Van Oostenryck wrote:
> Calls to this function are guarded by a test checking
> if the operand is defined by an OP_AND.
> 
> Move this guard inside the function as this make easier to
> handle more opcodes later.
> 
> Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@xxxxxxxxx>
> ---
>  simplify.c | 10 +++++++---
>  1 file changed, 7 insertions(+), 3 deletions(-)
> 
> diff --git a/simplify.c b/simplify.c
> index a01245f79..a8a5d9b91 100644
> --- a/simplify.c
> +++ b/simplify.c
> @@ -550,7 +550,7 @@ undef:
>  // try to simplify OP(OR(a, b), C)
>  // @insn: the 'masking' instruction
>  // @mask: the mask associated to @insn (M)
> -// @ora: one of the OR's operands
> +// @ora: one of the OR's operands, guaranted to be PSEUDO_REG

s/guaranted/guaranteed/

ATB,
Ramsay Jones

>  // @orb: the other OR's operand
>  // @return: 0 if no changes have been made, one or more REPEAT_* flags otherwise.
>  static int simplify_mask_or_and(struct instruction *insn, unsigned long long mask,
> @@ -560,6 +560,8 @@ static int simplify_mask_or_and(struct instruction *insn, unsigned long long mas
>  	struct instruction *and = ora->def;
>  	pseudo_t src2 = and->src2;
>  
> +	if (and->opcode != OP_AND)
> +		return 0;
>  	if (!constant(src2))
>  		return 0;
>  	omask = src2->value;
> @@ -587,12 +589,14 @@ static int simplify_mask_or(struct instruction *insn, unsigned long long mask, s
>  	pseudo_t src2 = or->src2;
>  	int rc;
>  
> -	if (def_opcode(src1) == OP_AND)
> +	if (src1->type == PSEUDO_REG) {
>  		if ((rc = simplify_mask_or_and(insn, mask, src1, src2)))
>  			return rc;
> -	if (def_opcode(src2) == OP_AND)
> +	}
> +	if (src2->type == PSEUDO_REG) {
>  		if ((rc = simplify_mask_or_and(insn, mask, src2, src1)))
>  			return rc;
> +	}
>  	return 0;
>  }
>  
> 



[Index of Archives]     [Newbies FAQ]     [LKML]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Trinity Fuzzer Tool]

  Powered by Linux