Re: require assistance with emiting instructions

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



There isn't enough info here to give good answers.  We need more details.

On Fri, May 31, 2019 at 4:13 AM Alex Hill via gcc-help
<gcc-help@xxxxxxxxxxx> wrote:
> (define_insn "*<GPR:mode>_load_index"
>...
> i create some kind of instruction but it will emit only on 32bit system, i use it for risc-v 64

This isn't a standard named pattern.  Did you add code someplace to
call it?  You didn't show us that code.  Maybe there is a bug in that
code.

> when i try use 64-bit it will not emit, if i try const_int 8 GCC wont even compile.

Why does it fail to compile when using const_int 8?  What is the exact
error message?

Adding a pattern for this looks like an unusual way to implement this.
If this is intended to be supported by every load/store instruction,
then you should add a new addressing mode.  See for instance
riscv_legitimate_address_p and riscv_classify_address.  If this is
only supported by some load/store instructions, then it may still be
useful to add a new addressing mode, but you would then need to add
new predicates and constraints so that you can limit the new
addressing mode to only those instructions that support it.

In your pattern, you have (match_operand:GPR 0 "register_operand"
"=r,m"), but m is for memory operands, and a memory operand can't be a
register operand.  So these should all just be r without m.  An
explicit mem in a pattern is generally not a good way to do this
though.  You would likely be better off with new addressing modes as
mentioned above.

Jim



[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux