Issue |
133217
|
Summary |
[llvm][RISCV]riscv backend can not handle type v2048i1 and v2048i8 when enable loop vectorize in frontend
|
Labels |
new issue
|
Assignees |
|
Reporter |
hippyll123
|
In target riscv, use -O3 to compile the code:
`template <typename FromT, typename ToT>
__attribute__((noinline)) static
void cast_data(FromT *__restrict__ x, ToT *__restrict__ y, const int n,
const int enable_clip) {
int i = 0;
FromT *ptr_x = x;
ToT *ptr_y = y;
asm volatile("fence\n\tfence");
for (i = 0; i <= n - 8; i += 8) {
ptr_y[0] = (ToT)ptr_x[0];
ptr_y[1] = (ToT)ptr_x[1];
ptr_y[2] = (ToT)ptr_x[2];
ptr_y[3] = (ToT)ptr_x[3];
ptr_y[4] = (ToT)ptr_x[4];
ptr_y[5] = (ToT)ptr_x[5];
ptr_y[6] = (ToT)ptr_x[6];
ptr_y[7] = (ToT)ptr_x[7];
ptr_x += 8;
ptr_y += 8;
}
asm volatile("fence\n\tfence\n\tfence");
// for (; i < n; i++) y[i] = (ToT)x[i];
}
`
when FromT is int8_t ToT is bool, the IR will generate 2048 x i1, the type may compile error in riscv backend.
`
%strided.vec = shufflevector <2048 x i8> %wide.vec, <2048 x i8>
%strided.vec8 = shufflevector <2048 x i8> %wide.vec, <2048 x i8>
%strided.vec9 = shufflevector <2048 x i8> %wide.vec, <2048 x i8>
%strided.vec10 = shufflevector <2048 x i8> %wide.vec, <2048 x i8>
%strided.vec11 = shufflevector <2048 x i8> %wide.vec, <2048 x i8>
%strided.vec12 = shufflevector <2048 x i8> %wide.vec, <2048 x i8>
%strided.vec13 = shufflevector <2048 x i8> %wide.vec, <2048 x i8>
%strided.vec14 = shufflevector <2048 x i8> %wide.vec, <2048 x i8>
%7 = icmp ne <256 x i8> %strided.vec, zeroinitializer
%8 = icmp ne <256 x i8> %strided.vec8, zeroinitializer
%9 = icmp ne <256 x i8> %strided.vec9, zeroinitializer
%10 = icmp ne <256 x i8> %strided.vec10, zeroinitializer
%11 = icmp ne <256 x i8> %strided.vec11, zeroinitializer
%12 = icmp ne <256 x i8> %strided.vec12, zeroinitializer
%13 = icmp ne <256 x i8> %strided.vec13, zeroinitializer
%14 = icmp ne <256 x i8> %strided.vec14, zeroinitializer
%15 = shufflevector <256 x i1> %7, <256 x i1> %8, <512 x i32>
%16 = shufflevector <256 x i1> %9, <256 x i1> %10, <512 x i32>
%17 = shufflevector <256 x i1> %11, <256 x i1> %12, <512 x i32>
%18 = shufflevector <256 x i1> %13, <256 x i1> %14, <512 x i32>
%19 = shufflevector <512 x i1> %15, <512 x i1> %16, <1024 x i32>
%20 = shufflevector <512 x i1> %17, <512 x i1> %18, <1024 x i32>
%21 = shufflevector <1024 x i1> %19, <1024 x i1> %20, <2048 x i32>
`
expect disable loop vectorize, how to avoid this problem.
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs