@@ -6823,7 +6823,7 @@ int8x8_t test_vqshrn_n_s16(int16x8_t a) {
68236823 return vqshrn_n_s16(a, 3);
68246824
68256825 // CIR-LABEL: vqshrn_n_s16
6826- // CIR: cir.llvm.intrinsic "aarch64.neon.sqshrn" {{%.*}}, {{%.*}} :
6826+ // CIR: cir.llvm.intrinsic "aarch64.neon.sqshrn" {{%.*}}, {{%.*}} :
68276827 // CIR-SAME: (!cir.vector<!s16i x 8>, !s32i) -> !cir.vector<!s8i x 8>
68286828
68296829 // LLVM:{{.*}}test_vqshrn_n_s16(<8 x i16>{{.*}}[[A:%.*]])
@@ -6834,7 +6834,7 @@ int16x4_t test_vqshrn_n_s32(int32x4_t a) {
68346834 return vqshrn_n_s32(a, 9);
68356835
68366836 // CIR-LABEL: vqshrn_n_s32
6837- // CIR: cir.llvm.intrinsic "aarch64.neon.sqshrn" {{%.*}}, {{%.*}} :
6837+ // CIR: cir.llvm.intrinsic "aarch64.neon.sqshrn" {{%.*}}, {{%.*}} :
68386838 // CIR-SAME: (!cir.vector<!s32i x 4>, !s32i) -> !cir.vector<!s16i x 4>
68396839
68406840 // LLVM:{{.*}}test_vqshrn_n_s32(<4 x i32>{{.*}}[[A:%.*]])
@@ -6845,7 +6845,7 @@ int32x2_t test_vqshrn_n_s64(int64x2_t a) {
68456845 return vqshrn_n_s64(a, 19);
68466846
68476847 // CIR-LABEL: vqshrn_n_s64
6848- // CIR: cir.llvm.intrinsic "aarch64.neon.sqshrn" {{%.*}}, {{%.*}} :
6848+ // CIR: cir.llvm.intrinsic "aarch64.neon.sqshrn" {{%.*}}, {{%.*}} :
68496849 // CIR-SAME: (!cir.vector<!s64i x 2>, !s32i) -> !cir.vector<!s32i x 2>
68506850
68516851 // LLVM:{{.*}}test_vqshrn_n_s64(<2 x i64>{{.*}}[[A:%.*]])
@@ -6856,7 +6856,7 @@ uint8x8_t test_vqshrn_n_u16(uint16x8_t a) {
68566856 return vqshrn_n_u16(a, 3);
68576857
68586858 // CIR-LABEL: vqshrn_n_u16
6859- // CIR: cir.llvm.intrinsic "aarch64.neon.uqshrn" {{%.*}}, {{%.*}} :
6859+ // CIR: cir.llvm.intrinsic "aarch64.neon.uqshrn" {{%.*}}, {{%.*}} :
68606860 // CIR-SAME: (!cir.vector<!u16i x 8>, !s32i) -> !cir.vector<!u8i x 8>
68616861
68626862 // LLVM:{{.*}}test_vqshrn_n_u16(<8 x i16>{{.*}}[[A:%.*]])
@@ -6867,7 +6867,7 @@ uint16x4_t test_vqshrn_n_u32(uint32x4_t a) {
68676867 return vqshrn_n_u32(a, 9);
68686868
68696869 // CIR-LABEL: vqshrn_n_u32
6870- // CIR: cir.llvm.intrinsic "aarch64.neon.uqshrn" {{%.*}}, {{%.*}} :
6870+ // CIR: cir.llvm.intrinsic "aarch64.neon.uqshrn" {{%.*}}, {{%.*}} :
68716871 // CIR-SAME: (!cir.vector<!u32i x 4>, !s32i) -> !cir.vector<!u16i x 4>
68726872
68736873 // LLVM:{{.*}}test_vqshrn_n_u32(<4 x i32>{{.*}}[[A:%.*]])
@@ -6878,7 +6878,7 @@ uint32x2_t test_vqshrn_n_u64(uint64x2_t a) {
68786878 return vqshrn_n_u64(a, 19);
68796879
68806880 // CIR-LABEL: vqshrn_n_u64
6881- // CIR: cir.llvm.intrinsic "aarch64.neon.uqshrn" {{%.*}}, {{%.*}} :
6881+ // CIR: cir.llvm.intrinsic "aarch64.neon.uqshrn" {{%.*}}, {{%.*}} :
68826882 // CIR-SAME: (!cir.vector<!u64i x 2>, !s32i) -> !cir.vector<!u32i x 2>
68836883
68846884 // LLVM:{{.*}}test_vqshrn_n_u64(<2 x i64>{{.*}}[[A:%.*]])
@@ -19232,3 +19232,21 @@ float64x2_t test_vld1q_dup_f64(float64_t const * ptr) {
1923219232// LLVM: [[VAL:%.*]] = load double, ptr [[PTR]], align 8
1923319233// LLVM: [[VEC:%.*]] = insertelement <2 x double> poison, double [[VAL]], i64 0
1923419234// LLVM: {{%.*}} = shufflevector <2 x double> [[VEC]], <2 x double> poison, <2 x i32> zeroinitializer
19235+
19236+ uint16_t test_vaddlvq_u8(uint8x16_t a) {
19237+ return vaddlvq_u8(a);
19238+
19239+ // CIR-LABEL: vaddlvq_u8
19240+ // CIR: {{%.*}} = cir.llvm.intrinsic "aarch64.neon.uaddlv" {{%.*}} : (!cir.vector<!u8i x 16>) -> !u32i
19241+ // CIR: {{%.*}} = cir.cast integral {{%.*}} : !u32i -> !u16i
19242+
19243+ // LLVM-LABEL: @test_vaddlvq_u8
19244+ // LLVM: {{%.*}} = call i32 @llvm.aarch64.neon.uaddlv.i32.v16i8(<16 x i8> {{%.*}})
19245+ // LLVM: {{%.*}} = trunc i32 {{%.*}} to i16
19246+ // LLVM: ret i16
19247+
19248+ // OGCG-LABEL: @test_vaddlvq_u8
19249+ // OGCG: {{%.*}} = call i32 @llvm.aarch64.neon.uaddlv.i32.v16i8(<16 x i8> {{%.*}})
19250+ // OGCG: {{%.*}} = trunc i32 {{%.*}} to i16
19251+ // OGCG: ret i16
19252+ }
0 commit comments