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: Balaji V. Iyer<bviyer@n...>
    Date: Wed Dec 12 06:06:04 CET 2007
    Subject: [openrisc] RE: Help with another constraint
    Top
    Hello Everyone,
    I got past that negdi2 and some errors..now I am trying to compile
    some linux module, and it says I am not able to find this constraint:

    init/main.c: In function 'start_kernel':
    init/main.c:441: error: insn does not satisfy its constraints:
    (insn 112 110 478 12 (set (mem:QI (reg/v/f:SI 16 r16 [orig:72 line.183 ]
    [72]) [0 S1 A8])
    (const_int 0 [0x0])) 16 {movqi} (nil)
    (nil))
    init/main.c:441: internal compiler error: in
    reload_cse_simplify_operands, at postreload.c:391
    Please submit a full bug report,

    Here is what I have for movqi:

    (define_insn "movqi"
    [(set (match_operand:QI 0 "nonimmediate_operand" "=p,q,m,m,p,q,p,q")
    (match_operand:QI 1 "general_operand" "m,m,p,q,p,q,I,I"))]
    ""
    "*
    switch(which_alternative)
    {
    case 0:
    case 1:
    return \"l.lbz \\t%0,%1\";
    case 2:
    case 3:
    return \"l.sb \\t%0,%1\";
    case 4:
    case 5:
    return \"l.ori \\t%0,%1,0\\t # move reg to reg\";
    case 6:
    case 7:
    return \"l.addi \\t%0,r0,%1\\t # move immediate\";
    default:
    return \"invalid alternative\";
    }
    "

    To give a quick explanation:
    p = register numbers between 0-31 (inclusive)
    q = register numbers between 32-63 (inclusive)

    I = constant int value: ((VALUE) >=-32768 && (VALUE) <=32767)

    So, what am I missing?

    Any help is highly appreciated!


    Thanking You,

    Yours Sincerely,

    Balaji V. Iyer.


    --

    Balaji V. Iyer
    PhD Student,
    Center for Efficient, Scalable and Reliable Computing,
    Department of Electrical and Computer Engineering,
    North Carolina State University.


    -----Original Message-----
    From: 'Rask Ingemann Lambertsen' [mailto:rask@s...]
    Sent: Monday, December 10, 2007 12:16 PM
    To: Balaji V. Iyer
    Cc: gcc@g...; openrisc@o...
    Subject: Re: Help with another constraint

    On Sun, Dec 09, 2007 at 11:35:32AM -0500, Balaji V. Iyer wrote:
    > Hello Rask,
    > I am not understanding your response, can you clarify it for me?
    >
    > As per the question about the error message above?
    >
    > ../../gcc-4.0.2/gcc/libgcc2.c -o libgcc/./_negdi2.o
    > ../../gcc-4.0.2/gcc/libgcc2.c: In function '__negdi2':
    > ../../gcc-4.0.2/gcc/libgcc2.c:72: error: insn does not satisfy its
    > constraints:

    I think this is misleading you. It seems likely that the problem is
    with the predicate and not the constraint.

    > (insn 15 13 16 (set (mem:SI (plus:SI (reg/f:SI 2 r2)
    ^^^

    This has to be a register, doesn't it? If so, use -fdump-rtl-all and
    look at the dump files to see where it goes wrong.

    > (const_int -28 [0xffffffe4])) [0 D.1256+0 S4 A32])
    > (neg:SI (reg:SI 3 r3 [orig:80 D.1255 ] [80]))) 38 {negsi2}
    (nil)
    > (nil))

    Please also post your negsi2 pattern.
    -- Rask Ingemann Lambertsen Danish law requires addresses in e-mail to be logged and stored for a year

    ReferenceAuthor
    [openrisc] Re: Help with another constraint'Rask Ingemann Lambertsen'

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