"dongbo (E)" writes: > Hi, Richard. > > On 2022/9/30 22:54, Richard Sandiford wrote: >> "dongbo (E)" writes: >>> >>> We tried to put `S_H` in front of `NIL`: >>> >>> ``` >>> >>>     #define OP_SVE_Vv_HSD                        \ >>> {                                                               \ >>>       QLF2(S_H,S_H),                                      \ >>>       QLF2(S_S,S_S),                                       \ >>>       QLF2(S_D,S_D),                                      \ >>>       QLF2(S_H,NIL),                                       \ >>>       QLF2(S_S,NIL),                                       \ >>>       QLF2(S_D,NIL),                                       \ >>>     } >>> >>> ``` >> Yeah, good point. It should be in this order, like you say. >> >> The fixes you mention look correct to me. >> >>> But assembler will fail in `match_operands_qualifier` :(. >>> >>> ``` >>> >>>     match_operands_qualifier (aarch64_inst *inst, bool update_p) >>>     { >>>         ... >>>         if (!aarch64_find_best_match (...)) >>>         ... >>>         if (inst->opcode->flags & F_STRICT) >>>         { >>>             /* Require an exact qualifier match, even for NIL >>> qualifiers.  */ >>>             nops = aarch64_num_of_operands (inst->opcode); >>>             for (i = 0; i < nops; ++i) >>>                 if (inst->operands[i].qualifier != qualifiers[i]) >>>                     return false; >>>         } >>>     } >>> >>> ``` >> I think that's a misfeature of the F_STRICT handling. Does it work >> with the patch below? > > We cannot find the `tree-data-ref.cc` in binutils, it is a file in GCC? > > Is `0001-data-ref-Fix-ranges_maybe_overlap_p-test.patch` the patch you > meant to send? Gah, no, sorry. > We also found a way to fix the F_STRICT matching failure. See patch > below. :) > > The main point is to give another `find_best_match` try when we get a > qualifier mismatch for HSD operands. I think it's simpler than that. Here's the patch I meant to send (which is more -s than +s). Richard