================
@@ -26,11 +26,15 @@ typedef vbool64_t fixed_bool64_t 
__attribute__((riscv_rvv_vector_bits(__riscv_v_
 //
 // CHECK-128-LABEL: @call_bool32_ff(
 // CHECK-128-NEXT:  entry:
+// CHECK-128-NEXT:    [[SAVED_VALUE:%.*]] = alloca <1 x i8>, align 1
----------------
nikic wrote:

Looks like this was added in https://github.com/llvm/llvm-project/pull/100110.

This seems like a pretty fundamental problem with scalable vectors where the 
fixed size is non-byte-sized. The store size in that case is `(vscale x 
fixed_size_in_bits) / 8`, but we pretend that it is `vscale x 
(fixed_size_in_bits / 8)`, which are only the same if fixed_size_in_bits is a 
multiple of 8.

I'm not sure what to do about this. This seems very hard to support properly, 
as it effectively adds an extra dimension to the current fixed vs scalable size 
distinction.

In the near term the RISCV support in Clang for this should probably be 
reverted, and we should consider non-byte-sized scalable vectors as non-sized 
types, so that they can be used as SSA values but not loaded or stored.

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

Reply via email to