HankChang736 wrote:

I tested the following case without passing the 'v' extension in the Clang 
command line argument:
```c
__attribute__((target("arch=rv32gcv_zve32x")))
void test_A(int *p) {
  asm volatile("" :: "A"(*p));
}
```
The generated LLVM IR result is:
```
; Function Attrs: nounwind
define dso_local void @test_A(ptr noundef %p) local_unnamed_addr #0 {
entry:
  tail call void asm sideeffect "", "*A"(ptr elementtype(i32) %p) #1, !srcloc !6
  ret void
}

attributes #0 = { nounwind "no-trapping-math"="true" 
"stack-protector-buffer-size"="8" "target-cpu"="generic-rv32" 
"target-features"="+32bit,+a,+c,+d,+f,+m,+relax,+v,+zaamo,+zalrsc,+zicsr,+zifencei,+zmmul,+zve32f,+zve32x,+zve64d,+zve64f,+zve64x,+zvl128b,+zvl32b,+zvl64b
 ... 

```
>From this result, it appears that the target attribute does not have the 
>intended effect in this case. Given this, perhaps we should keep the initial 
>implementation temporary and try the RISCVInsertVSETVLI approach for future 
>improvements.

cc @wangpc-pp @topperc 

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

Reply via email to