[PATCH, i386]: Implement SImode/DImode setcc insn patterns

Uros Bizjak ubizjak@gmail.com
Sun Oct 11 20:49:00 GMT 2009


On 10/11/2009 09:47 PM, H.J. Lu wrote:

>> 2009-10-10 �Uros Bizjak<ubizjak@gmail.com>
>>
>> � �* config/i386/i386.md (*setcc_di_1): New insn_and_split pattern.
>> � �(*setcc_si_1): Ditto.
>> � �(*setcc_<mode>_2): Ditto.
>> � �(*setcc_qi): Rename from *setcc_1.
>> � �(*setcc_qi_slp): Rename from *setcc_2.
>>
>> � �* config/i386/i386.c (ix86_expand_clear): Remove reload_completed from
>> � �"if" condition, there is already assert with reload_completed present.
>>
>> Patch was bootstrapped and regression tested on x86_64-pc-linux-gnu {,-m32}.
>>
>>      
> This caused:
>
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41677
>    

You could just reopen PR 33555.

Anyway, I did mess up my patch queue a bit. The missing pattern was in 
the patch that macroized cmove insns, it was just cut-away for patch 
submission.

This is the missing part:

(define_insn "*x86_mov<mode>cc_0_m1_neg"
   [(set (match_operand:SWI48 0 "register_operand" "=r")
     (neg:SWI48 (match_operand 1 "ix86_carry_flag_operator" "")))]
   ""
   "sbb{<imodesuffix>}\t%0, %0"
   [(set_attr "type" "alu")
    (set_attr "use_carry" "1")
    (set_attr "pent_pair" "pu")
    (set_attr "memory" "none")
    (set_attr "imm_disp" "false")
    (set_attr "mode" "<MODE>")
    (set_attr "length_immediate" "0")])

Please note that these patterns are now much saner than what used to 
match sbb...

Uros




More information about the Gcc-patches mailing list