[PATCH] D72184: [WIP][BPF] support exchange/compare-and-exchange instruction

Yonghong Song via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Nov 3 07:16:41 PST 2020


yonghong-song added inline comments.


================
Comment at: llvm/lib/Target/BPF/BPFInstrFormats.td:98
+
+def BPF_ATOMIC_FETCH : BPFAtomicFlag<0x1>;
 
----------------
jackmanb wrote:
> Per Alexei's email comments let's call this BPF_FETCH?
I can do this. Note naming in llvm may not be exactly the same as in kernel, but agree that we should keep it close.


================
Comment at: llvm/lib/Target/BPF/BPFInstrInfo.td:765
+      def XCHGB : XCHG<BPF_B, "8", atomic_swap_8>;
+      def XCHGH : XCHG<BPF_H, "16", atomic_swap_16>;
+      def XCHGW : XCHG<BPF_W, "32", atomic_swap_32>;
----------------
jackmanb wrote:
> I don't know if we want to define these for 16 and 8bit operands - XADD isn't defined for those.
One of our original use cases is to do atomic operations with kernel data structures. For example, if the kernel may do xchg with char, short, it would be good for bpf to support it as well e.g., for bpf-cc (bpf congestion control), both bpf and kernel may do atomic operations on the same data structure.

I may add byte/half support to others (fetch_and_add, fetch_and_sub) as well if you reach consensus here.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D72184/new/

https://reviews.llvm.org/D72184



More information about the llvm-commits mailing list