[llvm-dev] Help: How to define vector element type bool (v8i1) in C builtin function

liuyu11@ict.ac.cn via llvm-dev llvm-dev at lists.llvm.org
Tue Apr 24 00:45:58 PDT 2018


Help: How to define vector element type  bool (v8i1)  in C builtin function
hello everyone,I have defined  intrinsic function like this:
def int_mips_add_32 : GCCBuiltin<"__builtin_dongxin_add_32">, Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty,llvm_v8i1_ty]>;

Then I write a test code :
typedef int v4i32  __attribute__ ((vector_size(16)));
typedef bool v8i1  __attribute__ ((vector_size(1)));

void foo() {
  v4i32 v4i32_r1,v4i32_r2,v4i32_r3;
  v8i1 vm_1;
  v4i32_r1 = __builtin_dongxin_add_32(v4i32_r2,v4i32_r2,vm_1);
}
          
but when I compile :  clang -cc1  -triple mipsel-unknown-linux-gnu -emit-llvm  intrinstest.c -o test.ll
I got the error:
intrinstest.c:4:9: error: unknown type name 'bool'
typedef bool v8i1  __attribute__ ((vector_size(1)));
        ^
intrinstest.c:4:36: error: vector size not an integral multiple of component size
typedef bool v8i1  __attribute__ ((vector_size(1)));
                                   ^           ~
intrinstest.c:9:57: error: passing 'v8i1' (aka 'int') to parameter of incompatible type '__attribute__((__vector_size__(8 * sizeof(_Bool)))) _Bool' (vector of 8 '_Bool' values)
  v4i32_r1 = __builtin_dongxin_add_32(v4i32_r2,v4i32_r2,vm_1);

I searched online  ,bool  is sizeof 1 byte,and Bool  size is also bigger than 1bit.  Is there a way  I can define a variable which type is  v8i1 .
Thanks 

YuLiu



liuyu11 at ict.ac.cn
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180424/68242f46/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: bg.jpg
Type: image/jpeg
Size: 25008 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180424/68242f46/attachment-0001.jpg>


More information about the llvm-dev mailing list