[llvm] [BPF] support indirect branch (callx) in AsmParser (PR #74988)

Yingchi Long via llvm-commits llvm-commits at lists.llvm.org
Sun Dec 10 02:34:16 PST 2023


https://github.com/inclyc updated https://github.com/llvm/llvm-project/pull/74988

>From feb2060cc29a44a53fb4eca1271e59d4caf9ff3f Mon Sep 17 00:00:00 2001
From: Yingchi Long <i at lyc.dev>
Date: Sun, 10 Dec 2023 18:26:22 +0800
Subject: [PATCH] [BPF] support indirect branch (callx) in AsmParser

Simply mark `callx` as a valid ID, so it can be recognized.

Previously this valid asm triggers an error:

    # clang local/callx.s -target bpf
    local/callx.s:8:2: error: invalid register/token name
            callx r1
            ^
---
 llvm/lib/Target/BPF/AsmParser/BPFAsmParser.cpp | 1 +
 llvm/test/MC/BPF/callx.s                       | 4 ++++
 2 files changed, 5 insertions(+)
 create mode 100644 llvm/test/MC/BPF/callx.s

diff --git a/llvm/lib/Target/BPF/AsmParser/BPFAsmParser.cpp b/llvm/lib/Target/BPF/AsmParser/BPFAsmParser.cpp
index 90697c6645be2..0d1eef60c3b55 100644
--- a/llvm/lib/Target/BPF/AsmParser/BPFAsmParser.cpp
+++ b/llvm/lib/Target/BPF/AsmParser/BPFAsmParser.cpp
@@ -229,6 +229,7 @@ struct BPFOperand : public MCParsedAsmOperand {
     return StringSwitch<bool>(Name.lower())
         .Case("if", true)
         .Case("call", true)
+        .Case("callx", true)
         .Case("goto", true)
         .Case("gotol", true)
         .Case("*", true)
diff --git a/llvm/test/MC/BPF/callx.s b/llvm/test/MC/BPF/callx.s
new file mode 100644
index 0000000000000..1c53af99c6ac1
--- /dev/null
+++ b/llvm/test/MC/BPF/callx.s
@@ -0,0 +1,4 @@
+# RUN: llvm-mc -triple bpfel -show-encoding < %s | FileCheck %s
+
+# CHECK: callx r1                                # encoding: [0x8d,0x00,0x00,0x00,0x01,0x00,0x00,0x00]
+callx r1



More information about the llvm-commits mailing list