LOGIN   :::   RECOVER PASS   :::   GET ACCOUNT    
Browse
  • Projects
  • Code (CVS)
  • Forums
  • News
  • Articles
  • Polls
  •  
    OpenCores
  • FAQ
  • CVS HowTo
  • Mission
  • Media
  • Tools
  • Advertise
  • Mirrors
  • Logos
  • Contact us
  • Find Resources
  • Job Opportunity
  •  
    Tools
  • Search
      
  • Download Cores (CVSGet)
  •  
    More
  • Wishbone
  • Perlilog
  • EDA tools
  • OpenTech CD
  •  
    Navigation: All forums > Openrisc > Message List > Message Post

    Message

    Reply | Reply all
    Date Prev | Date Next | Thread Prev | Thread Next Date Index | Thread Index

    From: Matjaz Breskvar<phoenix@o...>
    Date: Thu Aug 12 14:46:24 CEST 2004
    Subject: [openrisc] GCC: support for l.cmov
    Top
    * Vsevolod Lobko (seva@s...) wrote:
    > On Mon, Aug 09, 2004 at 09:22:40PM +0200, Matjaz Breskvar wrote:
    > > * Vsevolod Lobko (seva@s...) wrote:
    > > > Hello,
    > > >
    > > > What happened with this patches?
    > >
    > > They is some problem with it, it fails to compile linux. I'm working
    > > with Phill to fix it, but it seams we both have other priorities.
    > >
    > > if somebody wants to take a look at it in the meantime even better.
    >
    > Can you send me this patchset? I'll try to look at it...

    ok, here you have it...

    regards,
    p.
    -------------- next part --------------
    Index: or1k/gcc-3.2.3/gcc/config/or32/or32-protos.h
    diff -c or1k/gcc-3.2.3/gcc/config/or32/or32-protos.h:1.1.1.1 or1k/gcc-3.2.3/gcc/config/or32/or32-protos.h:1.2
    *** or1k/gcc-3.2.3/gcc/config/or32/or32-protos.h:1.1.1.1 Wed Jul 7 00:23:34 2004
    --- or1k/gcc-3.2.3/gcc/config/or32/or32-protos.h Mon Jul 12 14:10:11 2004
    ***************
    *** 26,31 ****
    --- 26,33 ----
    extern void print_operand_address PARAMS ((FILE *, register rtx));
    extern const char *or1k_output_move_double PARAMS ((rtx *operands));

    + extern rtx or1k_cmp_op[];
    +
    #endif /* RTX_CODE */

    #ifdef TREE_CODE
    Index: or1k/gcc-3.2.3/gcc/config/or32/or32.S
    diff -c or1k/gcc-3.2.3/gcc/config/or32/or32.S:1.1.1.1 or1k/gcc-3.2.3/gcc/config/or32/or32.S:1.2
    *** or1k/gcc-3.2.3/gcc/config/or32/or32.S:1.1.1.1 Wed Jul 7 00:23:34 2004
    --- or1k/gcc-3.2.3/gcc/config/or32/or32.S Thu Jul 8 22:26:05 2004
    ***************
    *** 112,124 ****
    l.sw 4(r1),r10
    l.addi r5,r3,0
    l.addi r10,r0,0
    ! l.sflts r5,r10
    l.bnf 1f
    l.addi r3,r0,0
    l.addi r10,r0,1
    l.sub r5,r0,r5
    1:
    ! l.sflts r4,r3
    l.bnf 1f
    l.nop 0
    l.addi r10,r10,1
    --- 112,124 ----
    l.sw 4(r1),r10
    l.addi r5,r3,0
    l.addi r10,r0,0
    ! l.sflts r5,r0
    l.bnf 1f
    l.addi r3,r0,0
    l.addi r10,r0,1
    l.sub r5,r0,r5
    1:
    ! l.sflts r4,r0
    l.bnf 1f
    l.nop 0
    l.addi r10,r10,1
    ***************
    *** 126,133 ****
    1:
    l.jal ___udivsi3
    l.addi r3,r5,0
    ! l.addi r3,r0,1
    ! l.sfeq r10,r3
    l.bnf 1f
    l.nop 0
    l.sub r11,r0,r11
    --- 126,132 ----
    1:
    l.jal ___udivsi3
    l.addi r3,r5,0
    ! l.sfeqi r10,1
    l.bnf 1f
    l.nop 0
    l.sub r11,r0,r11
    ***************
    *** 157,162 ****
    --- 156,162 ----
    l.addi r1,r1,-8
    l.sw 0(r1),r9
    l.sw 4(r1),r10
    + l.addi r10,r0,0
    l.sflts r3,r0
    l.bnf 1f
    l.nop 0
    ***************
    *** 170,177 ****
    1:
    l.jal ___udivsi3
    l.nop 0
    ! l.addi r3,r0,1 ! l.sfeq r10,r3 l.bnf 1f l.addi r11,r7,0 l.sub r11,r0,r11 --- 170,176 ---- 1: l.jal ___udivsi3 l.nop 0 ! l.sfeqi r10,1 l.bnf 1f l.addi r11,r7,0 l.sub r11,r0,r11 *************** *** 180,183 **** l.lwz r10,4(r1) l.jr r9 l.addi r1,r1,8 ! #endif \ No newline at end of file --- 179,182 ---- l.lwz r10,4(r1) l.jr r9 l.addi r1,r1,8 ! #endif Index: or1k/gcc-3.2.3/gcc/config/or32/or32.c diff -c or1k/gcc-3.2.3/gcc/config/or32/or32.c:1.1.1.1 or1k/gcc-3.2.3/gcc/config/or32/or32.c:1.2 *** or1k/gcc-3.2.3/gcc/config/or32/or32.c:1.1.1.1 Wed Jul 7 00:23:34 2004 --- or1k/gcc-3.2.3/gcc/config/or32/or32.c Mon Jul 12 14:10:11 2004 *************** *** 38,43 **** --- 38,45 ---- of l.jr instruction in epilogue. */ #define NOP_DELAY_SLOT_FILL 0 + rtx or1k_cmp_op[2]; + /* used in function prologue/epilogue generation */ extern int leaf_function; Index: or1k/gcc-3.2.3/gcc/config/or32/or32.h diff -c or1k/gcc-3.2.3/gcc/config/or32/or32.h:1.1.1.1 or1k/gcc-3.2.3/gcc/config/or32/or32.h:1.3 *** or1k/gcc-3.2.3/gcc/config/or32/or32.h:1.1.1.1 Wed Jul 7 00:23:34 2004 --- or1k/gcc-3.2.3/gcc/config/or32/or32.h Wed Jul 14 13:09:26 2004 *************** *** 62,73 **** {"soft-div", - MASK_HARD_DIV, N_("Use software divison.")}, \ {"hard-mul", MASK_HARD_MUL, N_("Use hardware multiplication.")}, \ {"soft-mul", - MASK_HARD_MUL, N_("Use software multiplication.")}, \ ! { "", TARGET_DEFAULT, 0x00000004}} /* Default target_flags if no switches specified. */ #ifndef TARGET_DEFAULT ! #define TARGET_DEFAULT (0x00000004) #endif /* Target machine storage layout */ --- 62,73 ---- {"soft-div", - MASK_HARD_DIV, N_("Use software divison.")}, \ {"hard-mul", MASK_HARD_MUL, N_("Use hardware multiplication.")}, \ {"soft-mul", - MASK_HARD_MUL, N_("Use software multiplication.")}, \ ! { "", TARGET_DEFAULT, 0}} /* Default target_flags if no switches specified. */ #ifndef TARGET_DEFAULT ! #define TARGET_DEFAULT (MASK_HARD_MUL) #endif /* Target machine storage layout */ *************** *** 216,222 **** and are not available for the register allocator. On the or1k, these are r1 as stack pointer and r2 as frame/arg pointer. */ ! #define FIXED_REGISTERS {1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1} /* 1 for registers not available across function calls. These must include the FIXED_REGISTERS and also any --- 216,222 ---- and are not available for the register allocator. On the or1k, these are r1 as stack pointer and r2 as frame/arg pointer. */ ! #define FIXED_REGISTERS {1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 \ , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1} /* 1 for registers not available across function calls. These must include the FIXED_REGISTERS and also any Index: or1k/gcc-3.2.3/gcc/config/or32/or32.md diff -c or1k/gcc-3.2.3/gcc/config/or32/or32.md:1.1.1.1 or1k/gcc-3.2.3/gcc/config/or32/or32.md:1.9 *** or1k/gcc-3.2.3/gcc/config/or32/or32.md:1.1.1.1 Wed Jul 7 00:23:34 2004 --- or1k/gcc-3.2.3/gcc/config/or32/or32.md Sun Aug 1 15:40:17 2004 *************** *** 122,204 **** ;; ! ;; Conditional Branches ;; ! (define_expand "cbranchsi4" ! [(set (pc) (if_then_else ! (match_operator 0 "comparison_operator" ! [(match_operand:SI 1 "register_operand" "r,r") ! (match_operand:SI 2 "nonmemory_operand" "r,I")]) ! (label_ref (match_operand 3 "" "")) ! (pc)))] ! "" ! " ! { ! int compare_code = GET_CODE (operands[0]); ! ! if (GET_MODE (operands[0]) != SImode) ! abort (); ! ! /* Emit an insn that should be matched by the ``sfccsi2'' pattern ! defined below. Use register 32 instead of cc0 since cc0 setter ! and user have to be adjacent. */ ! emit_insn (gen_rtx (SET, VOIDmode, ! gen_rtx_REG (CCmode, 32), ! gen_rtx (compare_code, CCmode, ! operands[1], ! operands[2]))); ! ! /* Emit conditional branch which checks the calculated value ! of (reg 32) and branches to operands[3] depending on the ! value. */ ! emit_jump_insn ! (gen_rtx (SET, VOIDmode, pc_rtx, ! gen_rtx (IF_THEN_ELSE, VOIDmode, ! gen_rtx (NE, CCmode, ! const0_rtx, ! gen_rtx_REG (CCmode, 32)), ! gen_rtx_LABEL_REF (VOIDmode, operands[3]), ! pc_rtx))); ! DONE; ! }" ! ) ! ! (define_insn "sfccsi2" ! [(set (reg:CC 32) ! (match_operator:CC 0 "comparison_operator" ! [(match_operand:SI 1 "register_operand" "r,r") ! (match_operand:SI 2 "general_operand" "r,I")]))] ! "" ! "@ ! l.sf%C0 \\t%1, %2 ! l.sf%C0i \\t%1, %2" ! [(set_attr "type" "logic,logic") ! (set_attr "length" "1,1")] ) ! (define_insn "bf" ! [(set (pc) ! (if_then_else (ne:CC (const_int 0) (reg:CC 32)) ! (label_ref (match_operand 0 "" "")) ! (pc)))] ! "" ! "l.bf \\t%0%(" ! [(set_attr "type" "branch") ! (set_attr "length" "1")] ) ! (define_insn "bnf" ! [(set (pc) ! (if_then_else (eq:CC (const_int 0) (reg:CC 32)) ! (label_ref (match_operand 0 "" "")) ! (pc)))] ! "" ! "l.bnf \\t%0%(" ! [(set_attr "type" "branch") ! (set_attr "length" "1")] ) ;; ;; Moves ;; --- 122,333 ---- ;; ! ;; Conditional Branches & Moves ;; ! (define_expand "cmpsi" ! [(match_operand:SI 0 "register_operand" "r,r") ! (match_operand:SI 1 "nonmemory_operand" "I,r")] ! "" ! " ! or1k_cmp_op[0] = operands[0]; ! or1k_cmp_op[1] = operands[1]; ! DONE; ! " ) ! (define_expand "movsicc" ! [(set (match_operand:SI 0 "register_operand" "=r") ! (if_then_else:SI (ne (const_int 0) (reg:BI 0)) ! (match_operand:SI 2 "register_operand" "r") ! (match_operand:SI 3 "register_operand" "r")))] ! "" ! " ! if ( GET_CODE(operands[1]) == EQ ) { ! rtx tmp = operands[2]; ! operands[2] = operands[3]; ! operands[3] = tmp; ! } ! " ) ! (define_expand "beq" ! [(set (reg:BI 0) (eq (match_dup 1) (match_dup 2))) ! (set (pc) (if_then_else (ne (const_int 0) (reg:BI 0)) ! (label_ref (match_operand 0 "" "")) ! (pc)))] ! "" ! " ! operands[1] = or1k_cmp_op[0]; ! operands[2] = or1k_cmp_op[1]; ! " ! ) ! ! (define_expand "bne" ! [(set (reg:BI 0) (ne (match_dup 1) (match_dup 2))) ! (set (pc) (if_then_else (ne (const_int 0) (reg:BI 0)) ! (label_ref (match_operand 0 "" "")) ! (pc)))] ! "" ! " ! operands[1] = or1k_cmp_op[0]; ! operands[2] = or1k_cmp_op[1]; ! " ! ) ! ! (define_expand "blt" ! [(set (reg:BI 0) (lt (match_dup 1) (match_dup 2))) ! (set (pc) (if_then_else (ne (const_int 0) (reg:BI 0)) ! (label_ref (match_operand 0 "" "")) ! (pc)))] ! "" ! " ! operands[1] = or1k_cmp_op[0]; ! operands[2] = or1k_cmp_op[1]; ! " ! ) ! ! (define_expand "ble" ! [(set (reg:BI 0) (le (match_dup 1) (match_dup 2))) ! (set (pc) (if_then_else (ne (const_int 0) (reg:BI 0)) ! (label_ref (match_operand 0 "" "")) ! (pc)))] ! "" ! " ! operands[1] = or1k_cmp_op[0]; ! operands[2] = or1k_cmp_op[1]; ! " ! ) ! ! (define_expand "bgt" ! [(set (reg:BI 0) (gt (match_dup 1) (match_dup 2))) ! (set (pc) (if_then_else (ne (const_int 0) (reg:BI 0)) ! (label_ref (match_operand 0 "" "")) ! (pc)))] ! "" ! " ! operands[1] = or1k_cmp_op[0]; ! operands[2] = or1k_cmp_op[1]; ! " ! ) ! ! (define_expand "bge" ! [(set (reg:BI 0) (ge (match_dup 1) (match_dup 2))) ! (set (pc) (if_then_else (ne (const_int 0) (reg:BI 0)) ! (label_ref (match_operand 0 "" "")) ! (pc)))] ! "" ! " ! operands[1] = or1k_cmp_op[0]; ! operands[2] = or1k_cmp_op[1]; ! " ! ) ! ! (define_expand "bltu" ! [(set (reg:BI 0) (ltu (match_dup 1) (match_dup 2))) ! (set (pc) (if_then_else (ne (const_int 0) (reg:BI 0)) ! (label_ref (match_operand 0 "" "")) ! (pc)))] ! "" ! " ! operands[1] = or1k_cmp_op[0]; ! operands[2] = or1k_cmp_op[1]; ! " ! ) ! ! (define_expand "bleu" ! [(set (reg:BI 0) (leu (match_dup 1) (match_dup 2))) ! (set (pc) (if_then_else (ne (const_int 0) (reg:BI 0)) ! (label_ref (match_operand 0 "" "")) ! (pc)))] ! "" ! " ! operands[1] = or1k_cmp_op[0]; ! operands[2] = or1k_cmp_op[1]; ! " ! ) ! ! (define_expand "bgtu" ! [(set (reg:BI 0) (gtu (match_dup 1) (match_dup 2))) ! (set (pc) (if_then_else (ne (const_int 0) (reg:BI 0)) ! (label_ref (match_operand 0 "" "")) ! (pc)))] ! "" ! " ! operands[1] = or1k_cmp_op[0]; ! operands[2] = or1k_cmp_op[1]; ! " ! ) ! ! (define_expand "bgeu" ! [(set (reg:BI 0) (geu (match_dup 1) (match_dup 2))) ! (set (pc) (if_then_else (ne (const_int 0) (reg:BI 0)) ! (label_ref (match_operand 0 "" "")) ! (pc)))] ! "" ! " ! operands[1] = or1k_cmp_op[0]; ! operands[2] = or1k_cmp_op[1]; ! " ! ) ! ! (define_insn "*sfcc" ! [(set (reg:BI 0) ! (match_operator 0 "comparison_operator" ! [(match_operand:SI 1 "register_operand" "r,r") ! (match_operand:SI 2 "nonmemory_operand" "I,r")]))] ! "" ! "@ ! l.sf%C0i \\t%1,%2 ! l.sf%C0 \\t%1,%2" ! [(set_attr "type" "logic,logic") ! (set_attr "length" "1,1")] ! ) ! ! (define_insn "*bf" ! [(set (pc) ! (if_then_else (ne (const_int 0) (reg:BI 0)) ! (label_ref (match_operand 0 "" "")) ! (pc)))] ! "" ! "l.bf \\t%l0%(" ! [(set_attr "type" "branch") ! (set_attr "length" "1")] ) + (define_insn "*bnf" + [(set (pc) + (if_then_else (eq (const_int 0) (reg:BI 0)) + (label_ref (match_operand 0 "" "")) + (pc)))] + "" + "l.bnf \\t%l0%(" + [(set_attr "type" "branch") + (set_attr "length" "1")] + ) + + (define_insn "*cmovf" + [(set (match_operand:SI 0 "register_operand" "=r") + (if_then_else:SI (ne (const_int 0) (reg:BI 0)) + (match_operand:SI 1 "register_operand" "r") + (match_operand:SI 2 "register_operand" "r")))] + "" + "l.cmov \\t%0,%1,%2" + [(set_attr "type" "move") + (set_attr "length" "1")] + ) + + (define_insn "*cmovnf" + [(set (match_operand:SI 0 "register_operand" "=r") + (if_then_else:SI (eq (const_int 0) (reg:BI 0)) + (match_operand:SI 1 "register_operand" "r") + (match_operand:SI 2 "register_operand" "r")))] + "" + "l.cmov \\t%0,%2,%1" + [(set_attr "type" "move") + (set_attr "length" "1")] + ) + ;; ;; Moves ;; *************** *** 397,409 **** case 0: return \"l.lhs \\t%0,%1\\t # extendhisi2\"; case 1: ! return \"l.slli \\t%0,%1,16\;l.srai \\t%0,%0,16\\t # extendhisi2\"; default: return \"invalid alternative\"; } " ! [(set_attr "type" "load,shift") ! (set_attr "length" "1,2")]) (define_insn "extendqisi2" [(set (match_operand:SI 0 "register_operand" "=r,r") --- 526,538 ---- case 0: return \"l.lhs \\t%0,%1\\t # extendhisi2\"; case 1: ! return \"l.exths \\t%0,%1\\t # extendhisi2\"; default: return \"invalid alternative\"; } " ! [(set_attr "type" "load,extend") ! (set_attr "length" "1,1")]) (define_insn "extendqisi2" [(set (match_operand:SI 0 "register_operand" "=r,r") *************** *** 414,426 **** case 0: return \"l.lbs \\t%0,%1\\t # extendqisi2\"; case 1: ! return \"l.slli \\t%0,%1,24\;l.srai \\t%0,%0,24\\t # extendqisi2\"; default: return \"invalid alternative\"; } " ! [(set_attr "type" "load,shift") ! (set_attr "length" "1,2")]) (define_insn "zero_extendhisi2" [(set (match_operand:SI 0 "register_operand" "=r,r") --- 543,555 ---- case 0: return \"l.lbs \\t%0,%1\\t # extendqisi2\"; case 1: ! return \"l.extbs \\t%0,%1\\t # extendqisi2\"; default: return \"invalid alternative\"; } " ! [(set_attr "type" "load,extend") ! (set_attr "length" "1,1")]) (define_insn "zero_extendhisi2" [(set (match_operand:SI 0 "register_operand" "=r,r") *************** *** 431,437 **** case 0: return \"l.lhz \\t%0,%1\\t # zero_extendhisi2\"; case 1: ! return \"l.andi \\t%0,%1,0xffff\\t # zero_extendhisi2\"; default: return \"invalid alternative\"; } --- 560,566 ---- case 0: return \"l.lhz \\t%0,%1\\t # zero_extendhisi2\"; case 1: ! return \"l.exthz \\t%0,%1\\t # zero_extendhisi2\"; default: return \"invalid alternative\"; } *************** *** 448,463 **** case 0: return \"l.lbz \\t%0,%1\\t # zero_extendqisi2\"; case 1: ! return \"l.andi \\t%0,%1,0x00ff\\t # zero_extendqisi2\"; default: return \"invalid alternative\"; } " ! [(set_attr "type" "load,logic") (set_attr "length" "1,1")]) ;; ! ;; Shift operations ;; (define_insn "ashlsi3" --- 577,592 ---- case 0: return \"l.lbz \\t%0,%1\\t # zero_extendqisi2\"; case 1: ! return \"l.extbz \\t%0,%1\\t # zero_extendqisi2\"; default: return \"invalid alternative\"; } " ! [(set_attr "type" "load,extend") (set_attr "length" "1,1")]) ;; ! ;; Shift/rotate operations ;; (define_insn "ashlsi3" *************** *** 514,519 **** --- 643,666 ---- [(set_attr "type" "shift,shift") (set_attr "length" "1,1")]) + (define_insn "rotrsi3" + [(set (match_operand:SI 0 "register_operand" "=r,r") + (rotatert:SI (match_operand:SI 1 "register_operand" "r,r") + (match_operand:SI 2 "nonmemory_operand" "r,L")))] + "" + "* + switch(which_alternative) { + case 0: + return \"l.ror \\t%0,%1,%2\"; + case 1: + return \"l.rori \\t%0,%1,%2\"; + default: + return \"invalid alternative\"; + } + " + [(set_attr "type" "shift,shift") + (set_attr "length" "1,1")]) + ;; ;; Logical bitwise operations ;; *************** *** 580,610 **** [(set_attr "type" "logic") (set_attr "length" "1")]) - ;; gen_rtx_XOR(Himode ... mising XOR for HImode define_insn - ;;(define_expand "one_cmplhi2" - ;; [(set (match_operand:HI 0 "register_operand" "=r") - ;; (not:HI (match_operand:HI 1 "register_operand" "r")))] - ;; "" - ;; " - ;; { - ;; if ((reload_in_progress | reload_completed) == 0) { - ;; rtx tmpreg, tmp; - ;; - ;; tmp = gen_rtx(SET, HImode, tmpreg = gen_reg_rtx(HImode), - ;; GEN_INT(0xffff)); - ;; emit_insn(tmp); - ;; emit_insn(gen_rtx(SET, HImode, operands[0], - ;; gen_rtx_XOR(HImode, operands[1], tmpreg))); - ;; DONE; - ;; } - ;; } - ;; ") - (define_insn "one_cmplsi2" [(set (match_operand:SI 0 "register_operand" "=r") (not:SI (match_operand:SI 1 "register_operand" "r")))] "" ! "l.xori \\t%0,%1,-1" [(set_attr "type" "logic") (set_attr "length" "1")]) --- 727,737 ---- [(set_attr "type" "logic") (set_attr "length" "1")]) (define_insn "one_cmplsi2" [(set (match_operand:SI 0 "register_operand" "=r") (not:SI (match_operand:SI 1 "register_operand" "r")))] "" ! "l.xori \\t%0,%1,0xffff" [(set_attr "type" "logic") (set_attr "length" "1")]) *************** *** 646,662 **** (minus:SI (match_operand:SI 1 "register_operand" "r,r") (match_operand:SI 2 "nonmemory_operand" "r,I")))] "" ! "* ! switch(which_alternative) ! { ! case 0: ! return \"l.sub \\t%0,%1,%2\"; ! case 1: ! return \"l.addi \\t%0,%1,%n2\"; ! default: ! return \"invalid alternative\"; ! } ! " [(set_attr "type" "add,add") (set_attr "length" "1,1")]) --- 773,781 ---- (minus:SI (match_operand:SI 1 "register_operand" "r,r") (match_operand:SI 2 "nonmemory_operand" "r,I")))] "" ! "@ ! l.sub \t%0,%1,%2 ! l.addi \t%0,%1,%n2" [(set_attr "type" "add,add") (set_attr "length" "1,1")]) *************** *** 691,697 **** --- 810,818 ---- [(set_attr "type" "mul") (set_attr "length" "1")]) + ;; ;; jumps + ;; (define_insn "jump" [(set (pc) *************** *** 707,745 **** "l.jr \\t%0%(" [(set_attr "type" "jump") (set_attr "length" "1")]) - - ;; - ;; Output insns for conditional branches; RTL for these is - ;; generated in gen_cond_branch(). - ;; - - ; (define_insn "branch_output" - ; [(set (pc) (if_then_else (eq (const_int 0) - ; (cc0)) - ; (label_ref (match_operand 0 "" "")) (pc)))] - ; "" - ; "l.bnf \\t%0%(" - ; [(set_attr "type" "branch") - ; (set_attr "length" "1")]) - - ; (define_insn "branch_output_rev" - ; [(set (pc) (if_then_else (ne (const_int 0) - ; (cc0)) - ; (label_ref (match_operand 0 "" "")) (pc)))] - ; "" - ; "l.bf \\t%0%(" - ; [(set_attr "type" "branch") - ; (set_attr "length" "1")]) - - - ;;(define_insn "set_output2" - ;; [(set (cc0) - ;; (match_operator:SI 0 "comparison_operator" - ;; [(match_operand:SI 1 "register_operand" "r") - ;; (match_operand:SI 2 "immediate_operand" "I")]))] - ;; "" - ;; "l.sf%C0i \\t%1,%2" - ;; [(set_attr "type" "compare")]) ;; ;; Calls --- 828,833 ----

    ReferenceAuthor
    [openrisc] GCC: support for l.cmovVsevolod Lobko

     
    Copyright (c) 1999 OPENCORES.ORG. All rights reserved.