From feb2060cc29a44a53fb4eca1271e59d4caf9ff3f Mon Sep 17 00:00:00 2001 From: Yingchi Long 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(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