All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yonghong Song <yonghong.song@linux.dev>
To: "Jose E. Marchesi" <jose.marchesi@oracle.com>, bpf@vger.kernel.org
Subject: Re: GCC and binutils support for BPF V4 instructions
Date: Fri, 28 Jul 2023 09:59:46 -0700	[thread overview]
Message-ID: <13eb5cae-e599-7f80-aa11-65846fccdc62@linux.dev> (raw)
In-Reply-To: <878rb0yonc.fsf@oracle.com>



On 7/28/23 9:41 AM, Jose E. Marchesi wrote:
> 
> Hello.
> 
> Just a heads up regarding the new BPF V4 instructions and their support
> in the GNU Toolchain.
> 
> V4 sdiv/smod instructions
> 
>    Binutils has been updated to use the V4 encoding of these
>    instructions, which used to be part of the xbpf testing dialect used
>    in GCC.  GCC generates these instructions for signed division when
>    -mcpu=v4 or higher.
> 
> V4 sign-extending register move instructions
> V4 signed load instructions
> V4 byte swap instructions
> 
>    Supported in assembler, disassembler and linker.  GCC generates these
>    instructions when -mcpu=v4 or higher.
> 
> V4 32-bit unconditional jump instruction
> 
>    Supported in assembler and disassembler.  GCC doesn't generate that
>    instruction.
> 
>    However, the assembler has been expanded in order to perform the
>    following relaxations when the disp16 field of a jump instruction is
>    known at assembly time, and is overflown, unless -mno-relax is
>    specified:
> 
>      JA disp16  -> JAL disp32
>      Jxx disp16 -> Jxx +1; JA +1; JAL disp32
> 
>    Where Jxx is one of the conditional jump instructions such as jeq,
>    jlt, etc.

Sounds great. The above 'JA/Jxx disp16' transformation matches
what llvm did as well.

> 
> So I think we are done with this.  Please let us know if these
> instructions ever change.
> 
> Relevant binutils bugzillas (all now resolved as fixed):
> 
> * Make use of long range calls by relaxation (jal/gotol):
>    https://sourceware.org/bugzilla/show_bug.cgi?id=30690
> 
> Relevant GCC bugzillas (all now resolved as fixed):
> 
> * Make use of signed-load instructions:
>    https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110782
>    
> * Make use of signed division/modulus:
>    https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110783
> 
> * Make use of signed mov instructions:
>    https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110784
> 
> * Make use of byte swap instructions:
>    https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110786
> 
> Salud!
> 

  parent reply	other threads:[~2023-07-28 17:00 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-07-28 16:41 GCC and binutils support for BPF V4 instructions Jose E. Marchesi
2023-07-28 16:47 ` Alexei Starovoitov
2023-07-28 17:06   ` Jose E. Marchesi
2023-07-28 16:59 ` Yonghong Song [this message]
2023-07-28 17:40   ` Jose E. Marchesi
2023-07-28 18:01     ` Jose E. Marchesi
2023-07-28 23:49       ` Alexei Starovoitov
2023-07-29  8:29         ` Jose E. Marchesi
2023-07-29 17:56           ` Alexei Starovoitov
2023-07-30  4:54             ` Jose E. Marchesi
2023-07-30 16:12               ` Yonghong Song
2023-07-30 19:11                 ` Jose E. Marchesi
2023-07-30 16:53               ` Alexei Starovoitov
2023-07-30 21:06                 ` Jose E. Marchesi
2023-07-31 18:10                   ` Alexei Starovoitov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=13eb5cae-e599-7f80-aa11-65846fccdc62@linux.dev \
    --to=yonghong.song@linux.dev \
    --cc=bpf@vger.kernel.org \
    --cc=jose.marchesi@oracle.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.