OpenCores
URL https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk

Subversion Repositories openrisc_2011-10-31

[/] [openrisc/] [trunk/] [gnu-src/] [gcc-4.5.1/] [gcc/] [config/] [or32/] [or32.md] - Diff between revs 490 and 518

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 490 Rev 518
Line 362... Line 362...
  [(set (match_operand:SI 0 "register_operand" "=r")
  [(set (match_operand:SI 0 "register_operand" "=r")
        (match_operand:SI 1 "immediate_operand" "i"))]
        (match_operand:SI 1 "immediate_operand" "i"))]
  "GET_CODE (operands[1]) != CONST_INT"
  "GET_CODE (operands[1]) != CONST_INT"
  "l.movhi \t%0,hi(%1)\;l.ori   \t%0,%0,lo(%1)"
  "l.movhi \t%0,hi(%1)\;l.ori   \t%0,%0,lo(%1)"
  ;; the switch of or32 bfd to Rela allows us to schedule insns separately.
  ;; the switch of or32 bfd to Rela allows us to schedule insns separately.
  "&& reload_completed
  "(GET_CODE (operands[1]) != CONST_INT
 
    || ! (CONST_OK_FOR_CONSTRAINT_P (INTVAL (operands[1]),'I', \"I\")
 
         || CONST_OK_FOR_CONSTRAINT_P (INTVAL (operands[1]),'K', \"K\")
 
         || CONST_OK_FOR_CONSTRAINT_P (INTVAL (operands[1]), 'M', \"M\")))
 
   && reload_completed
   && GET_CODE (operands[1]) != HIGH && GET_CODE (operands[1]) != LO_SUM"
   && GET_CODE (operands[1]) != HIGH && GET_CODE (operands[1]) != LO_SUM"
  [(pc)]
  [(pc)]
{
{
  emit_insn (gen_movsi_high (operands[0], operands[1]));
  emit_insn (gen_movsi_high (operands[0], operands[1]));
  emit_insn (gen_movsi_lo_sum (operands[0], operands[0], operands[1]));
  emit_insn (gen_movsi_lo_sum (operands[0], operands[0], operands[1]));
Line 705... Line 709...
;;
;;
;;
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;;
;;
;;
(define_insn "movdi"
(define_insn_and_split "movdi"
  [(set (match_operand:DI 0 "nonimmediate_operand" "=r, r, m, r")
  [(set (match_operand:DI 0 "nonimmediate_operand" "=r, r, m, r")
        (match_operand:DI 1 "general_operand"      " r, m, r, i"))]
       (match_operand:DI 1 "general_operand"      " r, m, r, n"))]
  ""
  ""
  "*
  "*
    return or32_output_move_double (operands);
    return or32_output_move_double (operands);
  "
  "
 
  "&& reload_completed && CONSTANT_P (operands[1])"
 
  [(set (match_dup 2) (match_dup 3)) (set (match_dup 4)  (match_dup 5))]
 
  "operands[2] = operand_subword (operands[0], 0, 0, DImode);
 
   operands[3] = operand_subword (operands[1], 0, 0, DImode);
 
   operands[4] = operand_subword (operands[0], 1, 0, DImode);
 
   operands[5] = operand_subword (operands[1], 1, 0, DImode);"
  [(set_attr "length" "2,2,2,3")])
  [(set_attr "length" "2,2,2,3")])
 
 
;; Moving double and single precision floating point values
;; Moving double and single precision floating point values
 
 
(define_insn "movdf"
(define_insn "movdf"

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.