On Thu, Sep 4, 2025 at 11:50 PM Robin Dapp <rdapp....@gmail.com> wrote: > > > The layout will be different between VLEN=128 and VLEN=256 (and also > > any larger VLEN) > > > > Give a practical example: > > vec1 allocated into v8, and v9, the reg layout will be: > > > > VLEN = 128 > > v8 = [0, 1, 2, 3] > > v9 = [4, 5, 6, 7] > > > > VLEN=256 > > v8 = [0, 1, 2, 3, 4, 5, 6, 7] > > v9 = [?, ?, ?, ?, ?, ?, ?, ?] > > > > Then you could imaging > > vsetivli zero,8,e32,m2,ta,ma > > vadd.vv v8, v8, v10 > > is work on any machine with VLEN >= 128 > > Ok, so whenever we didn't split a vector into LMUL1-sized (128 here) chunks in > the first place we cannot go back to LMUL1 any more. > > Doesn't that also mean that _if_ we split into 128-bit chunks (first case > above) running on VLEN=256 would look like > > v8 = [0, 1, 2, 3, ?, ?, ?, ?] > v9 = [4, 5, 6, 7, ?, ?, ?, ?]
Then the ABI is incompatible between -mrvv-max-lmul=m1 and -mrvv-max-lmul=m2? Also incompatible with LLVM. > > and > vsetivli zero,8,e32,m2,ta,ma > vadd.vv v8, v8, v10 > > wouldn't get the right result (from an LMUL2 perspective)? So the layouts are > only compatible if VLEN and LMUL match? > > I'm probably misunderstanding and/or am confused :) > > -- > Regards > Robin >