Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

inclyc
Copy link
Member

@inclyc inclyc commented Dec 10, 2023

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
        ^

@llvmbot llvmbot added the mc Machine (object) code label Dec 10, 2023
@llvmbot
Copy link
Collaborator

llvmbot commented Dec 10, 2023

@llvm/pr-subscribers-mc

Author: Yingchi Long (inclyc)

Changes

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
        ^

Full diff: https://github.com/llvm/llvm-project/pull/74988.diff

2 Files Affected:

  • (modified) llvm/lib/Target/BPF/AsmParser/BPFAsmParser.cpp (+1)
  • (added) llvm/test/MC/BPF/callx.s (+4)
diff --git a/llvm/lib/Target/BPF/AsmParser/BPFAsmParser.cpp b/llvm/lib/Target/BPF/AsmParser/BPFAsmParser.cpp
index 90697c6645be2f..0d1eef60c3b550 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 00000000000000..3df616b2f4c923
--- /dev/null
+++ b/llvm/test/MC/BPF/callx.s
@@ -0,0 +1,4 @@
+# RUN: llvm-mc -triple bpfel -show-encoding < %s
+
+# CHECK: callx r1                                # encoding: [0x8d,0x00,0x00,0x00,0x01,0x00,0x00,0x00]
+callx r1

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
            ^
@inclyc inclyc marked this pull request as draft December 10, 2023 10:33
@inclyc inclyc marked this pull request as ready for review December 10, 2023 10:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backend:BPF mc Machine (object) code
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants