@@ -14848,6 +14848,16 @@ void test_vst1q_s64(int64_t *a, int64x2_t b) {
14848
14848
vst1q_s64(a, b);
14849
14849
}
14850
14850
14851
+ // CHECK-LABEL: define dso_local void @test_vst1q_mf8(
14852
+ // CHECK-SAME: ptr noundef [[A:%.*]], <16 x i8> [[VAL:%.*]]) #[[ATTR0]] {
14853
+ // CHECK-NEXT: [[ENTRY:.*:]]
14854
+ // CHECK-NEXT: store <16 x i8> [[VAL]], ptr [[A]], align 1
14855
+ // CHECK-NEXT: ret void
14856
+ //
14857
+ void test_vst1q_mf8(mfloat8_t *a, mfloat8x16_t val) {
14858
+ vst1q_mf8(a, val);
14859
+ }
14860
+
14851
14861
// CHECK-LABEL: define dso_local void @test_vst1q_f16(
14852
14862
// CHECK-SAME: ptr noundef [[A:%.*]], <8 x half> noundef [[B:%.*]]) #[[ATTR0]] {
14853
14863
// CHECK-NEXT: [[ENTRY:.*:]]
@@ -15001,6 +15011,16 @@ void test_vst1_s64(int64_t *a, int64x1_t b) {
15001
15011
vst1_s64(a, b);
15002
15012
}
15003
15013
15014
+ // CHECK-LABEL: define dso_local void @test_vst1_mf8(
15015
+ // CHECK-SAME: ptr noundef [[A:%.*]], <8 x i8> [[VAL:%.*]]) #[[ATTR0]] {
15016
+ // CHECK-NEXT: [[ENTRY:.*:]]
15017
+ // CHECK-NEXT: store <8 x i8> [[VAL]], ptr [[A]], align 1
15018
+ // CHECK-NEXT: ret void
15019
+ //
15020
+ void test_vst1_mf8(mfloat8_t *a, mfloat8x8_t val) {
15021
+ vst1_mf8(a, val);
15022
+ }
15023
+
15004
15024
// CHECK-LABEL: define dso_local void @test_vst1_f16(
15005
15025
// CHECK-SAME: ptr noundef [[A:%.*]], <4 x half> noundef [[B:%.*]]) #[[ATTR0]] {
15006
15026
// CHECK-NEXT: [[ENTRY:.*:]]
@@ -15183,6 +15203,18 @@ void test_vst2q_s64(int64_t *a, int64x2x2_t b) {
15183
15203
vst2q_s64(a, b);
15184
15204
}
15185
15205
15206
+ // CHECK-LABEL: define dso_local void @test_vst2q_mf8(
15207
+ // CHECK-SAME: ptr noundef [[A:%.*]], [2 x <16 x i8>] alignstack(16) [[B_COERCE:%.*]]) #[[ATTR0]] {
15208
+ // CHECK-NEXT: [[ENTRY:.*:]]
15209
+ // CHECK-NEXT: [[B_COERCE_FCA_0_EXTRACT:%.*]] = extractvalue [2 x <16 x i8>] [[B_COERCE]], 0
15210
+ // CHECK-NEXT: [[B_COERCE_FCA_1_EXTRACT:%.*]] = extractvalue [2 x <16 x i8>] [[B_COERCE]], 1
15211
+ // CHECK-NEXT: call void @llvm.aarch64.neon.st2.v16i8.p0(<16 x i8> [[B_COERCE_FCA_0_EXTRACT]], <16 x i8> [[B_COERCE_FCA_1_EXTRACT]], ptr [[A]])
15212
+ // CHECK-NEXT: ret void
15213
+ //
15214
+ void test_vst2q_mf8(mfloat8_t *a, mfloat8x16x2_t b) {
15215
+ vst2q_mf8(a, b);
15216
+ }
15217
+
15186
15218
// CHECK-LABEL: define dso_local void @test_vst2q_f16(
15187
15219
// CHECK-SAME: ptr noundef [[A:%.*]], [2 x <8 x half>] alignstack(16) [[B_COERCE:%.*]]) #[[ATTR0]] {
15188
15220
// CHECK-NEXT: [[ENTRY:.*:]]
@@ -15385,6 +15417,18 @@ void test_vst2_s64(int64_t *a, int64x1x2_t b) {
15385
15417
vst2_s64(a, b);
15386
15418
}
15387
15419
15420
+ // CHECK-LABEL: define dso_local void @test_vst2_mf8(
15421
+ // CHECK-SAME: ptr noundef [[A:%.*]], [2 x <8 x i8>] alignstack(8) [[B_COERCE:%.*]]) #[[ATTR0]] {
15422
+ // CHECK-NEXT: [[ENTRY:.*:]]
15423
+ // CHECK-NEXT: [[B_COERCE_FCA_0_EXTRACT:%.*]] = extractvalue [2 x <8 x i8>] [[B_COERCE]], 0
15424
+ // CHECK-NEXT: [[B_COERCE_FCA_1_EXTRACT:%.*]] = extractvalue [2 x <8 x i8>] [[B_COERCE]], 1
15425
+ // CHECK-NEXT: call void @llvm.aarch64.neon.st2.v8i8.p0(<8 x i8> [[B_COERCE_FCA_0_EXTRACT]], <8 x i8> [[B_COERCE_FCA_1_EXTRACT]], ptr [[A]])
15426
+ // CHECK-NEXT: ret void
15427
+ //
15428
+ void test_vst2_mf8(mfloat8_t *a, mfloat8x8x2_t b) {
15429
+ vst2_mf8(a, b);
15430
+ }
15431
+
15388
15432
// CHECK-LABEL: define dso_local void @test_vst2_f16(
15389
15433
// CHECK-SAME: ptr noundef [[A:%.*]], [2 x <4 x half>] alignstack(8) [[B_COERCE:%.*]]) #[[ATTR0]] {
15390
15434
// CHECK-NEXT: [[ENTRY:.*:]]
@@ -15609,6 +15653,19 @@ void test_vst3q_s64(int64_t *a, int64x2x3_t b) {
15609
15653
vst3q_s64(a, b);
15610
15654
}
15611
15655
15656
+ // CHECK-LABEL: define dso_local void @test_vst3q_mf8(
15657
+ // CHECK-SAME: ptr noundef [[A:%.*]], [3 x <16 x i8>] alignstack(16) [[B_COERCE:%.*]]) #[[ATTR0]] {
15658
+ // CHECK-NEXT: [[ENTRY:.*:]]
15659
+ // CHECK-NEXT: [[B_COERCE_FCA_0_EXTRACT:%.*]] = extractvalue [3 x <16 x i8>] [[B_COERCE]], 0
15660
+ // CHECK-NEXT: [[B_COERCE_FCA_1_EXTRACT:%.*]] = extractvalue [3 x <16 x i8>] [[B_COERCE]], 1
15661
+ // CHECK-NEXT: [[B_COERCE_FCA_2_EXTRACT:%.*]] = extractvalue [3 x <16 x i8>] [[B_COERCE]], 2
15662
+ // CHECK-NEXT: call void @llvm.aarch64.neon.st3.v16i8.p0(<16 x i8> [[B_COERCE_FCA_0_EXTRACT]], <16 x i8> [[B_COERCE_FCA_1_EXTRACT]], <16 x i8> [[B_COERCE_FCA_2_EXTRACT]], ptr [[A]])
15663
+ // CHECK-NEXT: ret void
15664
+ //
15665
+ void test_vst3q_mf8(mfloat8_t *a, mfloat8x16x3_t b) {
15666
+ vst3q_mf8(a, b);
15667
+ }
15668
+
15612
15669
// CHECK-LABEL: define dso_local void @test_vst3q_f16(
15613
15670
// CHECK-SAME: ptr noundef [[A:%.*]], [3 x <8 x half>] alignstack(16) [[B_COERCE:%.*]]) #[[ATTR0]] {
15614
15671
// CHECK-NEXT: [[ENTRY:.*:]]
@@ -15847,6 +15904,19 @@ void test_vst3_s64(int64_t *a, int64x1x3_t b) {
15847
15904
vst3_s64(a, b);
15848
15905
}
15849
15906
15907
+ // CHECK-LABEL: define dso_local void @test_vst3_mf8(
15908
+ // CHECK-SAME: ptr noundef [[A:%.*]], [3 x <8 x i8>] alignstack(8) [[B_COERCE:%.*]]) #[[ATTR0]] {
15909
+ // CHECK-NEXT: [[ENTRY:.*:]]
15910
+ // CHECK-NEXT: [[B_COERCE_FCA_0_EXTRACT:%.*]] = extractvalue [3 x <8 x i8>] [[B_COERCE]], 0
15911
+ // CHECK-NEXT: [[B_COERCE_FCA_1_EXTRACT:%.*]] = extractvalue [3 x <8 x i8>] [[B_COERCE]], 1
15912
+ // CHECK-NEXT: [[B_COERCE_FCA_2_EXTRACT:%.*]] = extractvalue [3 x <8 x i8>] [[B_COERCE]], 2
15913
+ // CHECK-NEXT: call void @llvm.aarch64.neon.st3.v8i8.p0(<8 x i8> [[B_COERCE_FCA_0_EXTRACT]], <8 x i8> [[B_COERCE_FCA_1_EXTRACT]], <8 x i8> [[B_COERCE_FCA_2_EXTRACT]], ptr [[A]])
15914
+ // CHECK-NEXT: ret void
15915
+ //
15916
+ void test_vst3_mf8(mfloat8_t *a, mfloat8x8x3_t b) {
15917
+ vst3_mf8(a, b);
15918
+ }
15919
+
15850
15920
// CHECK-LABEL: define dso_local void @test_vst3_f16(
15851
15921
// CHECK-SAME: ptr noundef [[A:%.*]], [3 x <4 x half>] alignstack(8) [[B_COERCE:%.*]]) #[[ATTR0]] {
15852
15922
// CHECK-NEXT: [[ENTRY:.*:]]
@@ -16108,6 +16178,20 @@ void test_vst4q_s64(int64_t *a, int64x2x4_t b) {
16108
16178
vst4q_s64(a, b);
16109
16179
}
16110
16180
16181
+ // CHECK-LABEL: define dso_local void @test_vst4q_mf8(
16182
+ // CHECK-SAME: ptr noundef [[A:%.*]], [4 x <16 x i8>] alignstack(16) [[B_COERCE:%.*]]) #[[ATTR0]] {
16183
+ // CHECK-NEXT: [[ENTRY:.*:]]
16184
+ // CHECK-NEXT: [[B_COERCE_FCA_0_EXTRACT:%.*]] = extractvalue [4 x <16 x i8>] [[B_COERCE]], 0
16185
+ // CHECK-NEXT: [[B_COERCE_FCA_1_EXTRACT:%.*]] = extractvalue [4 x <16 x i8>] [[B_COERCE]], 1
16186
+ // CHECK-NEXT: [[B_COERCE_FCA_2_EXTRACT:%.*]] = extractvalue [4 x <16 x i8>] [[B_COERCE]], 2
16187
+ // CHECK-NEXT: [[B_COERCE_FCA_3_EXTRACT:%.*]] = extractvalue [4 x <16 x i8>] [[B_COERCE]], 3
16188
+ // CHECK-NEXT: call void @llvm.aarch64.neon.st4.v16i8.p0(<16 x i8> [[B_COERCE_FCA_0_EXTRACT]], <16 x i8> [[B_COERCE_FCA_1_EXTRACT]], <16 x i8> [[B_COERCE_FCA_2_EXTRACT]], <16 x i8> [[B_COERCE_FCA_3_EXTRACT]], ptr [[A]])
16189
+ // CHECK-NEXT: ret void
16190
+ //
16191
+ void test_vst4q_mf8(mfloat8_t *a, mfloat8x16x4_t b) {
16192
+ vst4q_mf8(a, b);
16193
+ }
16194
+
16111
16195
// CHECK-LABEL: define dso_local void @test_vst4q_f16(
16112
16196
// CHECK-SAME: ptr noundef [[A:%.*]], [4 x <8 x half>] alignstack(16) [[B_COERCE:%.*]]) #[[ATTR0]] {
16113
16197
// CHECK-NEXT: [[ENTRY:.*:]]
@@ -16382,6 +16466,20 @@ void test_vst4_s64(int64_t *a, int64x1x4_t b) {
16382
16466
vst4_s64(a, b);
16383
16467
}
16384
16468
16469
+ // CHECK-LABEL: define dso_local void @test_vst4_mf8(
16470
+ // CHECK-SAME: ptr noundef [[A:%.*]], [4 x <8 x i8>] alignstack(8) [[B_COERCE:%.*]]) #[[ATTR0]] {
16471
+ // CHECK-NEXT: [[ENTRY:.*:]]
16472
+ // CHECK-NEXT: [[B_COERCE_FCA_0_EXTRACT:%.*]] = extractvalue [4 x <8 x i8>] [[B_COERCE]], 0
16473
+ // CHECK-NEXT: [[B_COERCE_FCA_1_EXTRACT:%.*]] = extractvalue [4 x <8 x i8>] [[B_COERCE]], 1
16474
+ // CHECK-NEXT: [[B_COERCE_FCA_2_EXTRACT:%.*]] = extractvalue [4 x <8 x i8>] [[B_COERCE]], 2
16475
+ // CHECK-NEXT: [[B_COERCE_FCA_3_EXTRACT:%.*]] = extractvalue [4 x <8 x i8>] [[B_COERCE]], 3
16476
+ // CHECK-NEXT: call void @llvm.aarch64.neon.st4.v8i8.p0(<8 x i8> [[B_COERCE_FCA_0_EXTRACT]], <8 x i8> [[B_COERCE_FCA_1_EXTRACT]], <8 x i8> [[B_COERCE_FCA_2_EXTRACT]], <8 x i8> [[B_COERCE_FCA_3_EXTRACT]], ptr [[A]])
16477
+ // CHECK-NEXT: ret void
16478
+ //
16479
+ void test_vst4_mf8(mfloat8_t *a, mfloat8x8x4_t b) {
16480
+ vst4_mf8(a, b);
16481
+ }
16482
+
16385
16483
// CHECK-LABEL: define dso_local void @test_vst4_f16(
16386
16484
// CHECK-SAME: ptr noundef [[A:%.*]], [4 x <4 x half>] alignstack(8) [[B_COERCE:%.*]]) #[[ATTR0]] {
16387
16485
// CHECK-NEXT: [[ENTRY:.*:]]
@@ -16789,6 +16887,18 @@ poly64x1x4_t test_vld1_p64_x4(poly64_t const *a) {
16789
16887
return vld1_p64_x4(a);
16790
16888
}
16791
16889
16890
+ // CHECK-LABEL: define dso_local void @test_vst1q_mf8_x2(
16891
+ // CHECK-SAME: ptr noundef [[A:%.*]], [2 x <16 x i8>] alignstack(16) [[B_COERCE:%.*]]) #[[ATTR0]] {
16892
+ // CHECK-NEXT: [[ENTRY:.*:]]
16893
+ // CHECK-NEXT: [[B_COERCE_FCA_0_EXTRACT:%.*]] = extractvalue [2 x <16 x i8>] [[B_COERCE]], 0
16894
+ // CHECK-NEXT: [[B_COERCE_FCA_1_EXTRACT:%.*]] = extractvalue [2 x <16 x i8>] [[B_COERCE]], 1
16895
+ // CHECK-NEXT: call void @llvm.aarch64.neon.st1x2.v16i8.p0(<16 x i8> [[B_COERCE_FCA_0_EXTRACT]], <16 x i8> [[B_COERCE_FCA_1_EXTRACT]], ptr [[A]])
16896
+ // CHECK-NEXT: ret void
16897
+ //
16898
+ void test_vst1q_mf8_x2(mfloat8_t *a, mfloat8x16x2_t b) {
16899
+ vst1q_mf8_x2(a, b);
16900
+ }
16901
+
16792
16902
// CHECK-LABEL: define dso_local void @test_vst1q_f64_x2(
16793
16903
// CHECK-SAME: ptr noundef [[A:%.*]], [2 x <2 x double>] alignstack(16) [[B_COERCE:%.*]]) #[[ATTR0]] {
16794
16904
// CHECK-NEXT: [[ENTRY:.*:]]
@@ -16823,6 +16933,18 @@ void test_vst1q_p64_x2(poly64_t *a, poly64x2x2_t b) {
16823
16933
vst1q_p64_x2(a, b);
16824
16934
}
16825
16935
16936
+ // CHECK-LABEL: define dso_local void @test_vst1_mf8_x2(
16937
+ // CHECK-SAME: ptr noundef [[A:%.*]], [2 x <8 x i8>] alignstack(8) [[B_COERCE:%.*]]) #[[ATTR0]] {
16938
+ // CHECK-NEXT: [[ENTRY:.*:]]
16939
+ // CHECK-NEXT: [[B_COERCE_FCA_0_EXTRACT:%.*]] = extractvalue [2 x <8 x i8>] [[B_COERCE]], 0
16940
+ // CHECK-NEXT: [[B_COERCE_FCA_1_EXTRACT:%.*]] = extractvalue [2 x <8 x i8>] [[B_COERCE]], 1
16941
+ // CHECK-NEXT: call void @llvm.aarch64.neon.st1x2.v8i8.p0(<8 x i8> [[B_COERCE_FCA_0_EXTRACT]], <8 x i8> [[B_COERCE_FCA_1_EXTRACT]], ptr [[A]])
16942
+ // CHECK-NEXT: ret void
16943
+ //
16944
+ void test_vst1_mf8_x2(mfloat8_t *a, mfloat8x8x2_t b) {
16945
+ vst1_mf8_x2(a, b);
16946
+ }
16947
+
16826
16948
// CHECK-LABEL: define dso_local void @test_vst1_f64_x2(
16827
16949
// CHECK-SAME: ptr noundef [[A:%.*]], [2 x <1 x double>] alignstack(8) [[B_COERCE:%.*]]) #[[ATTR0]] {
16828
16950
// CHECK-NEXT: [[ENTRY:.*:]]
@@ -16859,6 +16981,19 @@ void test_vst1_p64_x2(poly64_t *a, poly64x1x2_t b) {
16859
16981
vst1_p64_x2(a, b);
16860
16982
}
16861
16983
16984
+ // CHECK-LABEL: define dso_local void @test_vst1q_mf8_x3(
16985
+ // CHECK-SAME: ptr noundef [[A:%.*]], [3 x <16 x i8>] alignstack(16) [[B_COERCE:%.*]]) #[[ATTR0]] {
16986
+ // CHECK-NEXT: [[ENTRY:.*:]]
16987
+ // CHECK-NEXT: [[B_COERCE_FCA_0_EXTRACT:%.*]] = extractvalue [3 x <16 x i8>] [[B_COERCE]], 0
16988
+ // CHECK-NEXT: [[B_COERCE_FCA_1_EXTRACT:%.*]] = extractvalue [3 x <16 x i8>] [[B_COERCE]], 1
16989
+ // CHECK-NEXT: [[B_COERCE_FCA_2_EXTRACT:%.*]] = extractvalue [3 x <16 x i8>] [[B_COERCE]], 2
16990
+ // CHECK-NEXT: call void @llvm.aarch64.neon.st1x3.v16i8.p0(<16 x i8> [[B_COERCE_FCA_0_EXTRACT]], <16 x i8> [[B_COERCE_FCA_1_EXTRACT]], <16 x i8> [[B_COERCE_FCA_2_EXTRACT]], ptr [[A]])
16991
+ // CHECK-NEXT: ret void
16992
+ //
16993
+ void test_vst1q_mf8_x3(mfloat8_t *a, mfloat8x16x3_t b) {
16994
+ vst1q_mf8_x3(a, b);
16995
+ }
16996
+
16862
16997
// CHECK-LABEL: define dso_local void @test_vst1q_f64_x3(
16863
16998
// CHECK-SAME: ptr noundef [[A:%.*]], [3 x <2 x double>] alignstack(16) [[B_COERCE:%.*]]) #[[ATTR0]] {
16864
16999
// CHECK-NEXT: [[ENTRY:.*:]]
@@ -16900,6 +17035,19 @@ void test_vst1q_p64_x3(poly64_t *a, poly64x2x3_t b) {
16900
17035
vst1q_p64_x3(a, b);
16901
17036
}
16902
17037
17038
+ // CHECK-LABEL: define dso_local void @test_vst1_mf8_x3(
17039
+ // CHECK-SAME: ptr noundef [[A:%.*]], [3 x <8 x i8>] alignstack(8) [[B_COERCE:%.*]]) #[[ATTR0]] {
17040
+ // CHECK-NEXT: [[ENTRY:.*:]]
17041
+ // CHECK-NEXT: [[B_COERCE_FCA_0_EXTRACT:%.*]] = extractvalue [3 x <8 x i8>] [[B_COERCE]], 0
17042
+ // CHECK-NEXT: [[B_COERCE_FCA_1_EXTRACT:%.*]] = extractvalue [3 x <8 x i8>] [[B_COERCE]], 1
17043
+ // CHECK-NEXT: [[B_COERCE_FCA_2_EXTRACT:%.*]] = extractvalue [3 x <8 x i8>] [[B_COERCE]], 2
17044
+ // CHECK-NEXT: call void @llvm.aarch64.neon.st1x3.v8i8.p0(<8 x i8> [[B_COERCE_FCA_0_EXTRACT]], <8 x i8> [[B_COERCE_FCA_1_EXTRACT]], <8 x i8> [[B_COERCE_FCA_2_EXTRACT]], ptr [[A]])
17045
+ // CHECK-NEXT: ret void
17046
+ //
17047
+ void test_vst1_mf8_x3(mfloat8_t *a, mfloat8x8x3_t b) {
17048
+ vst1_mf8_x3(a, b);
17049
+ }
17050
+
16903
17051
// CHECK-LABEL: define dso_local void @test_vst1_f64_x3(
16904
17052
// CHECK-SAME: ptr noundef [[A:%.*]], [3 x <1 x double>] alignstack(8) [[B_COERCE:%.*]]) #[[ATTR0]] {
16905
17053
// CHECK-NEXT: [[ENTRY:.*:]]
@@ -16944,6 +17092,20 @@ void test_vst1_p64_x3(poly64_t *a, poly64x1x3_t b) {
16944
17092
vst1_p64_x3(a, b);
16945
17093
}
16946
17094
17095
+ // CHECK-LABEL: define dso_local void @test_vst1q_mf8_x4(
17096
+ // CHECK-SAME: ptr noundef [[A:%.*]], [4 x <16 x i8>] alignstack(16) [[B_COERCE:%.*]]) #[[ATTR0]] {
17097
+ // CHECK-NEXT: [[ENTRY:.*:]]
17098
+ // CHECK-NEXT: [[B_COERCE_FCA_0_EXTRACT:%.*]] = extractvalue [4 x <16 x i8>] [[B_COERCE]], 0
17099
+ // CHECK-NEXT: [[B_COERCE_FCA_1_EXTRACT:%.*]] = extractvalue [4 x <16 x i8>] [[B_COERCE]], 1
17100
+ // CHECK-NEXT: [[B_COERCE_FCA_2_EXTRACT:%.*]] = extractvalue [4 x <16 x i8>] [[B_COERCE]], 2
17101
+ // CHECK-NEXT: [[B_COERCE_FCA_3_EXTRACT:%.*]] = extractvalue [4 x <16 x i8>] [[B_COERCE]], 3
17102
+ // CHECK-NEXT: call void @llvm.aarch64.neon.st1x4.v16i8.p0(<16 x i8> [[B_COERCE_FCA_0_EXTRACT]], <16 x i8> [[B_COERCE_FCA_1_EXTRACT]], <16 x i8> [[B_COERCE_FCA_2_EXTRACT]], <16 x i8> [[B_COERCE_FCA_3_EXTRACT]], ptr [[A]])
17103
+ // CHECK-NEXT: ret void
17104
+ //
17105
+ void test_vst1q_mf8_x4(mfloat8_t *a, mfloat8x16x4_t b) {
17106
+ vst1q_mf8_x4(a, b);
17107
+ }
17108
+
16947
17109
// CHECK-LABEL: define dso_local void @test_vst1q_f64_x4(
16948
17110
// CHECK-SAME: ptr noundef [[A:%.*]], [4 x <2 x double>] alignstack(16) [[B_COERCE:%.*]]) #[[ATTR0]] {
16949
17111
// CHECK-NEXT: [[ENTRY:.*:]]
@@ -16992,6 +17154,20 @@ void test_vst1q_p64_x4(poly64_t *a, poly64x2x4_t b) {
16992
17154
vst1q_p64_x4(a, b);
16993
17155
}
16994
17156
17157
+ // CHECK-LABEL: define dso_local void @test_vst1_mf8_x4(
17158
+ // CHECK-SAME: ptr noundef [[A:%.*]], [4 x <8 x i8>] alignstack(8) [[B_COERCE:%.*]]) #[[ATTR0]] {
17159
+ // CHECK-NEXT: [[ENTRY:.*:]]
17160
+ // CHECK-NEXT: [[B_COERCE_FCA_0_EXTRACT:%.*]] = extractvalue [4 x <8 x i8>] [[B_COERCE]], 0
17161
+ // CHECK-NEXT: [[B_COERCE_FCA_1_EXTRACT:%.*]] = extractvalue [4 x <8 x i8>] [[B_COERCE]], 1
17162
+ // CHECK-NEXT: [[B_COERCE_FCA_2_EXTRACT:%.*]] = extractvalue [4 x <8 x i8>] [[B_COERCE]], 2
17163
+ // CHECK-NEXT: [[B_COERCE_FCA_3_EXTRACT:%.*]] = extractvalue [4 x <8 x i8>] [[B_COERCE]], 3
17164
+ // CHECK-NEXT: call void @llvm.aarch64.neon.st1x4.v8i8.p0(<8 x i8> [[B_COERCE_FCA_0_EXTRACT]], <8 x i8> [[B_COERCE_FCA_1_EXTRACT]], <8 x i8> [[B_COERCE_FCA_2_EXTRACT]], <8 x i8> [[B_COERCE_FCA_3_EXTRACT]], ptr [[A]])
17165
+ // CHECK-NEXT: ret void
17166
+ //
17167
+ void test_vst1_mf8_x4(mfloat8_t *a, mfloat8x8x4_t b) {
17168
+ vst1_mf8_x4(a, b);
17169
+ }
17170
+
16995
17171
// CHECK-LABEL: define dso_local void @test_vst1_f64_x4(
16996
17172
// CHECK-SAME: ptr noundef [[A:%.*]], [4 x <1 x double>] alignstack(8) [[B_COERCE:%.*]]) #[[ATTR0]] {
16997
17173
// CHECK-NEXT: [[ENTRY:.*:]]
0 commit comments