yonghong-song wrote:

@peilin-ye Sorry for late review. A few general observations below:

1. I think -mcpu=v5 can be avoided. We really want to accumulate quite some 
insns before increasing cpu version. Otherwise, we may quickly reach v7/v8/... 
which people will lose check which version supports what. We might need to use 
feature flags later (e.g. for x86, -msse, -mavx, etc.). So far, I suggest to 
stick to cpu v4.

2. I tried below example:
```
$ cat t4.c
short foo(short *ptr) {
  return __atomic_load_n(ptr, __ATOMIC_ACQUIRE);
}
$ clang --target=bpf -g -c -O2 t4.c -mcpu=v5
$ llvm-objdump -d t4.o

t4.o:   file format elf64-bpf

Disassembly of section .text:

0000000000000000 <foo>:
       0:       e9 10 00 00 00 00 00 00 w0 = load_acquire((u16 *)(r1 + 0x0))
       1:       95 00 00 00 00 00 00 00 exit
```
>From the source code, the operation should return a 'short' type value. But 
>since the result will be 32bit value, should we do sign-extension here? w0 = 
>load_acquire((s16 *)(r1 + 0x0))?

3. Currently you have
    def BPF_ATOMIC : BPFModeModifer<0x6>;
  +def BPF_MEMACQ : BPFModeModifer<0x7>;
  +def BPF_MEMREL : BPFModeModifer<0x7>;
  
  Since load_acquire and store_release are essentially atomic operations (e.g. 
__atomic_load_n() and __atomic_store_n()), is it possible to add 
acquire/release support in BPF_ATOMIC? We might want to reserve 
BPFModelModifier 7 for future use.

https://github.com/llvm/llvm-project/pull/108636
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to