[llvm-dev] [RISC-V V] How to read each bit of vbool8_t individually

Craig Topper via llvm-dev llvm-dev at lists.llvm.org
Fri Jul 9 21:47:44 PDT 2021


I think this might work

#include <stdio.h>
#include <riscv_vector.h>

#define N 5

int main(int argc, char **argv)
{
signed char A[N] = {1, 2, 3, 4, 5};
vint8m1_t B = vle8_v_i8m1(A, N);
vbool8_t C = vmseq_vx_i8m1_b8(B, 3, N);

long i;
while ((i = vfirst_m_b8(C, N)) >= 0) {
printf("INDEX:%ld", i);
C = vmandnot_mm_b8(C, vmsof_m_b8(C, N), N);
}
return 0;
}


~Craig


On Fri, Jul 9, 2021 at 7:33 PM Shao-Ce Sun <llvm at foxmail.com> wrote:

> Thanks for your help, and here is the code:
>
> #include <stdio.h>
> #include <riscv_vector.h>
>
> #define N 5
>
> int main(int argc, char **argv)
> {
>   signed char A[N] = {1, 2, 3, 4, 5};
>   vint8m1_t B = vle8_v_i8m1(A, N);
>   vbool8_t C = vmseq_vx_i8m1_b8(B, 3, N);
>   int i;
>   for (i = 0; i < N; ++i)
>   {
>     if (C[i])
>       printf("INDEX:%d", i);
>   }
> }
>
>
>
> ------------------ Original ------------------
> *From:* "Craig Topper" <craig.topper at gmail.com>;
> *Date:* Fri, Jul 9, 2021 11:41 AM
> *To:* "Shao-Ce Sun"<llvm at foxmail.com>;
> *Cc:* "via llvm-dev"<llvm-dev at lists.llvm.org>;
> *Subject:* Re: [llvm-dev] [RISC-V V] How to read each bit of vbool8_t
> individually
>
> There aren't really any instructions for doing this in the ISA. Solutions
> I can think of are rounding vl to the next multiple of 8 and storing it to
> a uint8_t using vse8. Then reading it back by looping over the array and
> looking at all 8 bits of each uint8_t. Or you could use vmerge to turn into
> a vuint8m1_t vector of 1 and 0.
>
> Perhaps if you shared your use case I might be able to come up with
> something else.
>
> ~Craig
>
>
> On Thu, Jul 8, 2021 at 7:23 PM Shao-Ce Sun via llvm-dev <
> llvm-dev at lists.llvm.org> wrote:
>
>> Hi All,
>>   I have a question about RISC-V V, that is how to read each bit of
>> vbool8_t individually, for example:
>>             vbool8_t A;
>>             bool B[8] = A;
>> Thanks!
>> _______________________________________________
>> LLVM Developers mailing list
>> llvm-dev at lists.llvm.org
>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20210709/2735fe29/attachment.html>


More information about the llvm-dev mailing list