================ @@ -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