From: Fraser Cormack Date: Thu, 14 Apr 2022 12:03:56 +0000 (+0100) Subject: [RISCV] Add tests showing incorrect BUILD_VECTOR lowering X-Git-Tag: upstream/15.0.7~10117 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=00537946aa29928894ba140687de1b6f9494e44d;p=platform%2Fupstream%2Fllvm.git [RISCV] Add tests showing incorrect BUILD_VECTOR lowering These tests both use vector constants misidentified as VID sequences. Because the initial run of elements has a zero step, the elements are skipped until such a step can be identified. The bug is that the skipped elements are never validated, even though the computed step is incompatible across the entire sequence. A fix will follow in a subseqeuent patch. Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D123785 --- diff --git a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-int-buildvec.ll b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-int-buildvec.ll index 93b745c..176df35 100644 --- a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-int-buildvec.ll +++ b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-int-buildvec.ll @@ -723,3 +723,24 @@ define <8 x i16> @splat_idx_v8i16(<8 x i16> %v, i64 %idx) { %splat = shufflevector <8 x i16> %ins, <8 x i16> poison, <8 x i32> zeroinitializer ret <8 x i16> %splat } + +; FIXME: This is not a vid sequence! +define <4 x i8> @buildvec_not_vid_v4i8_1() { +; CHECK-LABEL: buildvec_not_vid_v4i8_1: +; CHECK: # %bb.0: +; CHECK-NEXT: vsetivli zero, 4, e8, mf4, ta, mu +; CHECK-NEXT: vid.v v8 +; CHECK-NEXT: ret + ret <4 x i8> +} + +; FIXME: This is not a vid sequence! +define <4 x i8> @buildvec_not_vid_v4i8_2() { +; CHECK-LABEL: buildvec_not_vid_v4i8_2: +; CHECK: # %bb.0: +; CHECK-NEXT: vsetivli zero, 4, e8, mf4, ta, mu +; CHECK-NEXT: vid.v v8 +; CHECK-NEXT: vrsub.vi v8, v8, 3 +; CHECK-NEXT: ret + ret <4 x i8> +}