On Thu, Jul 19, 2012 at 11:10 AM, Jakub Jelinek <ja...@redhat.com> wrote:
> On Thu, Jul 19, 2012 at 11:03:25AM +0200, Uros Bizjak wrote:
>> +      /* Set CF to specified value.  */
>> +      emit_insn (gen_addqi3_cc(
>> +               gen_reg_rtx(QImode),
>> +               op1,
>> +               constm1_rtx));
>> +
>>
>> This should be in the *.md expander.
>
> Note also that the formatting of the above was wrong for multiple reasons.
>
>>  (define_insn "*prefetch_3dnow_<mode>"
>>    [(prefetch (match_operand:P 0 "address_operand" "p")
>> -          (match_operand:SI 1 "const_int_operand" "n")
>> +          (const_int 0)
>>            (const_int 3))]
>>    "TARGET_3DNOW"
>> -{
>> -  if (INTVAL (operands[1]) == 0)
>> -    return "prefetch\t%a0";
>> -  else
>> -    return "prefetchw\t%a0";
>> -}
>> +  "prefetch\t%a0"
>>
>> You have a mnemonic clash here. prefetchw is not good name for a new
>> instruction, it clashes with existing 3dnow name. Intel will need to
>> fix the spec, you probably won't be able to change prefetchw encoding
>> in binutils.
>
> From what I understand, Intel is using the same encoding of that insn as
> 3dNOW!, so there is no clash, just the same insn is now enabled by two ISAs
> (3dNOW! and this new CPUID prfchw bit).

I see. Then please review prefetch changes to not change existing
functionality (i.e. -m3dnow should work as now, while -m3dnow -mprfchw
can emit new instructions everywhere). However, do not change existing
mm3dnow.h header.

Uros.

Reply via email to