Re: RISC-V Vector Extension post-public review updates

Bill Huffman



-----Original Message-----
From: krste@... <krste@...>
Sent: Wednesday, November 17, 2021 1:02 PM
To: Bill Huffman <huffman@...>
Cc: Grigorios Magklis <grigorios.magklis@...>; tech-vector-ext@...
Subject: RE: [RISC-V] [tech-vector-ext] RISC-V Vector Extension post-public review updates






>>>>> On Tue, 16 Nov 2021 17:15:28 +0000, Bill Huffman <huffman@...> said:


| From: Grigorios Magklis <grigorios.magklis@...>

| Sent: Tuesday, November 16, 2021 12:03 PM


| What is the thinking for when we go to >32-bit encodings with respect

| to vtype and masks? I assume that the longer encoding could encode SEW

| (and LMUL?) as an override of vtype. What about masks though? If we

| enable more than one masks (m0…mN) in 48-bit/64-bit encodings, and we

| want to mix 32-bit and 48-bit /64-bit instructions in the same code,

| do we still specify that e.g. m0==v0 or do we need to explicitly copy

| v0 to e.g. m0 before it can be used with 48-bit/ 64-bit instructions

| (and vice versa when switching from 48-bit/64-bit instructions to

| 32-bit instructions)? It would be nice if we could reclaim v0

| (actually v0 through v7 for LMUL=8) from being a mask to being able to

| hold data, *and* not to have to force the whole code/loop body to use 48-bit/64-bit instructions in order to do this.


| Grigorios


My thinking for longer encoding is we would not add different mask registers, but instead possibly expand set of architectural vector registers.


Does that mean continuing to assume fusing a mask move with an instruction where desired?


| I don’t think there’s any agreement at this point on what goes into a

| longer instruction, but there are a number of candidates, including at least:


|   ● LMUL

|   ● SEW

|   ● VMA and VTA bits

|   ● Register specifier for the mask register

|   ● Additional registers – perhaps 128 instead of 32

|   ● Possibly a fourth register specifier (not counting mask).


| If I’m counting correctly, that’s already 28 additional bits.  That’s

| in the range of the maximum that can be put into a 64-bit instruction

| set.  There are probably more candidates and discussion about which

| ones to include will certainly be needed. 😊


Right, even 64 bits will seem tight if all wishes are considered.

Some more experience with actual code and compilers is needed to help tune future extensions.







Join { to automatically receive all group messages.