https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88952

--- Comment #7 from Uroš Bizjak <ubizjak at gmail dot com> ---
(In reply to Christopher Leonard from comment #5)
> Is the order at least consistant with x86-32? i.e. if you give a 64-bit
> input operand to inline assembly the order is hi:lo? I'm worried this is a
> bizarre convention imposed on high endian architectures.

On x86, we don't allow register pairs in asm at all. Please see print_reg,
where:

  switch (msize)
    {
    case 16:
    case 12:
    case 8:
      if (GENERAL_REGNO_P (regno) && msize > GET_MODE_SIZE (word_mode))
        warning (0, "unsupported size for integer register");
      /* FALLTHRU */

So, if someone wants to handle DImode on 32bit targets, both registers have to
be passed to assembly explicitly, using "(int) lval" and "(int) (lval >> 32)".

Reply via email to