1
1
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2
2
; RUN: llc < %s -mtriple=aarch64 -mattr=+sve -aarch64-sve-vector-bits-min=256 | FileCheck %s
3
3
4
- define <1 x i64 > @llrint_v1i64_v1f16 (<1 x half > %x ) {
4
+ define <1 x i64 > @llrint_v1i64_v1f16 (<1 x half > %x ) nounwind {
5
5
; CHECK-LABEL: llrint_v1i64_v1f16:
6
6
; CHECK: // %bb.0:
7
7
; CHECK-NEXT: frintx h0, h0
@@ -13,7 +13,7 @@ define <1 x i64> @llrint_v1i64_v1f16(<1 x half> %x) {
13
13
}
14
14
declare <1 x i64 > @llvm.llrint.v1i64.v1f16 (<1 x half >)
15
15
16
- define <2 x i64 > @llrint_v1i64_v2f16 (<2 x half > %x ) {
16
+ define <2 x i64 > @llrint_v1i64_v2f16 (<2 x half > %x ) nounwind {
17
17
; CHECK-LABEL: llrint_v1i64_v2f16:
18
18
; CHECK: // %bb.0:
19
19
; CHECK-NEXT: // kill: def $d0 killed $d0 def $q0
@@ -30,7 +30,7 @@ define <2 x i64> @llrint_v1i64_v2f16(<2 x half> %x) {
30
30
}
31
31
declare <2 x i64 > @llvm.llrint.v2i64.v2f16 (<2 x half >)
32
32
33
- define <4 x i64 > @llrint_v4i64_v4f16 (<4 x half > %x ) {
33
+ define <4 x i64 > @llrint_v4i64_v4f16 (<4 x half > %x ) nounwind {
34
34
; CHECK-LABEL: llrint_v4i64_v4f16:
35
35
; CHECK: // %bb.0:
36
36
; CHECK-NEXT: frintx v0.4h, v0.4h
@@ -51,7 +51,7 @@ define <4 x i64> @llrint_v4i64_v4f16(<4 x half> %x) {
51
51
}
52
52
declare <4 x i64 > @llvm.llrint.v4i64.v4f16 (<4 x half >)
53
53
54
- define <8 x i64 > @llrint_v8i64_v8f16 (<8 x half > %x ) {
54
+ define <8 x i64 > @llrint_v8i64_v8f16 (<8 x half > %x ) nounwind {
55
55
; CHECK-LABEL: llrint_v8i64_v8f16:
56
56
; CHECK: // %bb.0:
57
57
; CHECK-NEXT: ext v1.16b, v0.16b, v0.16b, #8
@@ -85,7 +85,7 @@ define <8 x i64> @llrint_v8i64_v8f16(<8 x half> %x) {
85
85
}
86
86
declare <8 x i64 > @llvm.llrint.v8i64.v8f16 (<8 x half >)
87
87
88
- define <16 x i64 > @llrint_v16i64_v16f16 (<16 x half > %x ) {
88
+ define <16 x i64 > @llrint_v16i64_v16f16 (<16 x half > %x ) nounwind {
89
89
; CHECK-LABEL: llrint_v16i64_v16f16:
90
90
; CHECK: // %bb.0:
91
91
; CHECK-NEXT: ext v2.16b, v1.16b, v1.16b, #8
@@ -144,16 +144,13 @@ define <16 x i64> @llrint_v16i64_v16f16(<16 x half> %x) {
144
144
}
145
145
declare <16 x i64 > @llvm.llrint.v16i64.v16f16 (<16 x half >)
146
146
147
- define <32 x i64 > @llrint_v32i64_v32f16 (<32 x half > %x ) {
147
+ define <32 x i64 > @llrint_v32i64_v32f16 (<32 x half > %x ) nounwind {
148
148
; CHECK-LABEL: llrint_v32i64_v32f16:
149
149
; CHECK: // %bb.0:
150
150
; CHECK-NEXT: stp x29, x30, [sp, #-16]! // 16-byte Folded Spill
151
151
; CHECK-NEXT: sub x9, sp, #272
152
152
; CHECK-NEXT: mov x29, sp
153
153
; CHECK-NEXT: and sp, x9, #0xffffffffffffffe0
154
- ; CHECK-NEXT: .cfi_def_cfa w29, 16
155
- ; CHECK-NEXT: .cfi_offset w30, -8
156
- ; CHECK-NEXT: .cfi_offset w29, -16
157
154
; CHECK-NEXT: frintx v5.4h, v0.4h
158
155
; CHECK-NEXT: ext v0.16b, v0.16b, v0.16b, #8
159
156
; CHECK-NEXT: ext v4.16b, v1.16b, v1.16b, #8
@@ -278,7 +275,7 @@ define <32 x i64> @llrint_v32i64_v32f16(<32 x half> %x) {
278
275
}
279
276
declare <32 x i64 > @llvm.llrint.v32i64.v32f16 (<32 x half >)
280
277
281
- define <1 x i64 > @llrint_v1i64_v1f32 (<1 x float > %x ) {
278
+ define <1 x i64 > @llrint_v1i64_v1f32 (<1 x float > %x ) nounwind {
282
279
; CHECK-LABEL: llrint_v1i64_v1f32:
283
280
; CHECK: // %bb.0:
284
281
; CHECK-NEXT: // kill: def $d0 killed $d0 def $q0
@@ -291,7 +288,7 @@ define <1 x i64> @llrint_v1i64_v1f32(<1 x float> %x) {
291
288
}
292
289
declare <1 x i64 > @llvm.llrint.v1i64.v1f32 (<1 x float >)
293
290
294
- define <2 x i64 > @llrint_v2i64_v2f32 (<2 x float > %x ) {
291
+ define <2 x i64 > @llrint_v2i64_v2f32 (<2 x float > %x ) nounwind {
295
292
; CHECK-LABEL: llrint_v2i64_v2f32:
296
293
; CHECK: // %bb.0:
297
294
; CHECK-NEXT: frintx v0.2s, v0.2s
@@ -303,7 +300,7 @@ define <2 x i64> @llrint_v2i64_v2f32(<2 x float> %x) {
303
300
}
304
301
declare <2 x i64 > @llvm.llrint.v2i64.v2f32 (<2 x float >)
305
302
306
- define <4 x i64 > @llrint_v4i64_v4f32 (<4 x float > %x ) {
303
+ define <4 x i64 > @llrint_v4i64_v4f32 (<4 x float > %x ) nounwind {
307
304
; CHECK-LABEL: llrint_v4i64_v4f32:
308
305
; CHECK: // %bb.0:
309
306
; CHECK-NEXT: frintx v0.4s, v0.4s
@@ -324,7 +321,7 @@ define <4 x i64> @llrint_v4i64_v4f32(<4 x float> %x) {
324
321
}
325
322
declare <4 x i64 > @llvm.llrint.v4i64.v4f32 (<4 x float >)
326
323
327
- define <8 x i64 > @llrint_v8i64_v8f32 (<8 x float > %x ) {
324
+ define <8 x i64 > @llrint_v8i64_v8f32 (<8 x float > %x ) nounwind {
328
325
; CHECK-LABEL: llrint_v8i64_v8f32:
329
326
; CHECK: // %bb.0:
330
327
; CHECK-NEXT: frintx v0.4s, v0.4s
@@ -357,7 +354,7 @@ define <8 x i64> @llrint_v8i64_v8f32(<8 x float> %x) {
357
354
}
358
355
declare <8 x i64 > @llvm.llrint.v8i64.v8f32 (<8 x float >)
359
356
360
- define <16 x i64 > @llrint_v16i64_v16f32 (<16 x float > %x ) {
357
+ define <16 x i64 > @llrint_v16i64_v16f32 (<16 x float > %x ) nounwind {
361
358
; CHECK-LABEL: llrint_v16i64_v16f32:
362
359
; CHECK: // %bb.0:
363
360
; CHECK-NEXT: frintx v3.4s, v3.4s
@@ -414,16 +411,13 @@ define <16 x i64> @llrint_v16i64_v16f32(<16 x float> %x) {
414
411
}
415
412
declare <16 x i64 > @llvm.llrint.v16i64.v16f32 (<16 x float >)
416
413
417
- define <32 x i64 > @llrint_v32i64_v32f32 (<32 x float > %x ) {
414
+ define <32 x i64 > @llrint_v32i64_v32f32 (<32 x float > %x ) nounwind {
418
415
; CHECK-LABEL: llrint_v32i64_v32f32:
419
416
; CHECK: // %bb.0:
420
417
; CHECK-NEXT: stp x29, x30, [sp, #-16]! // 16-byte Folded Spill
421
418
; CHECK-NEXT: sub x9, sp, #272
422
419
; CHECK-NEXT: mov x29, sp
423
420
; CHECK-NEXT: and sp, x9, #0xffffffffffffffe0
424
- ; CHECK-NEXT: .cfi_def_cfa w29, 16
425
- ; CHECK-NEXT: .cfi_offset w30, -8
426
- ; CHECK-NEXT: .cfi_offset w29, -16
427
421
; CHECK-NEXT: frintx v0.4s, v0.4s
428
422
; CHECK-NEXT: frintx v1.4s, v1.4s
429
423
; CHECK-NEXT: frintx v2.4s, v2.4s
@@ -544,7 +538,7 @@ define <32 x i64> @llrint_v32i64_v32f32(<32 x float> %x) {
544
538
}
545
539
declare <32 x i64 > @llvm.llrint.v32i64.v32f32 (<32 x float >)
546
540
547
- define <1 x i64 > @llrint_v1i64_v1f64 (<1 x double > %x ) {
541
+ define <1 x i64 > @llrint_v1i64_v1f64 (<1 x double > %x ) nounwind {
548
542
; CHECK-LABEL: llrint_v1i64_v1f64:
549
543
; CHECK: // %bb.0:
550
544
; CHECK-NEXT: frintx d0, d0
@@ -556,7 +550,7 @@ define <1 x i64> @llrint_v1i64_v1f64(<1 x double> %x) {
556
550
}
557
551
declare <1 x i64 > @llvm.llrint.v1i64.v1f64 (<1 x double >)
558
552
559
- define <2 x i64 > @llrint_v2i64_v2f64 (<2 x double > %x ) {
553
+ define <2 x i64 > @llrint_v2i64_v2f64 (<2 x double > %x ) nounwind {
560
554
; CHECK-LABEL: llrint_v2i64_v2f64:
561
555
; CHECK: // %bb.0:
562
556
; CHECK-NEXT: frintx v0.2d, v0.2d
@@ -567,7 +561,7 @@ define <2 x i64> @llrint_v2i64_v2f64(<2 x double> %x) {
567
561
}
568
562
declare <2 x i64 > @llvm.llrint.v2i64.v2f64 (<2 x double >)
569
563
570
- define <4 x i64 > @llrint_v4i64_v4f64 (<4 x double > %x ) {
564
+ define <4 x i64 > @llrint_v4i64_v4f64 (<4 x double > %x ) nounwind {
571
565
; CHECK-LABEL: llrint_v4i64_v4f64:
572
566
; CHECK: // %bb.0:
573
567
; CHECK-NEXT: ptrue p0.d, vl2
@@ -593,7 +587,7 @@ define <4 x i64> @llrint_v4i64_v4f64(<4 x double> %x) {
593
587
}
594
588
declare <4 x i64 > @llvm.llrint.v4i64.v4f64 (<4 x double >)
595
589
596
- define <8 x i64 > @llrint_v8i64_v8f64 (<8 x double > %x ) {
590
+ define <8 x i64 > @llrint_v8i64_v8f64 (<8 x double > %x ) nounwind {
597
591
; CHECK-LABEL: llrint_v8i64_v8f64:
598
592
; CHECK: // %bb.0:
599
593
; CHECK-NEXT: ptrue p0.d, vl2
@@ -635,7 +629,7 @@ define <8 x i64> @llrint_v8i64_v8f64(<8 x double> %x) {
635
629
}
636
630
declare <8 x i64 > @llvm.llrint.v8i64.v8f64 (<8 x double >)
637
631
638
- define <16 x i64 > @llrint_v16f64 (<16 x double > %x ) {
632
+ define <16 x i64 > @llrint_v16f64 (<16 x double > %x ) nounwind {
639
633
; CHECK-LABEL: llrint_v16f64:
640
634
; CHECK: // %bb.0:
641
635
; CHECK-NEXT: ptrue p1.d, vl2
@@ -708,16 +702,13 @@ define <16 x i64> @llrint_v16f64(<16 x double> %x) {
708
702
}
709
703
declare <16 x i64 > @llvm.llrint.v16i64.v16f64 (<16 x double >)
710
704
711
- define <32 x i64 > @llrint_v32f64 (<32 x double > %x ) {
705
+ define <32 x i64 > @llrint_v32f64 (<32 x double > %x ) nounwind {
712
706
; CHECK-LABEL: llrint_v32f64:
713
707
; CHECK: // %bb.0:
714
708
; CHECK-NEXT: stp x29, x30, [sp, #-16]! // 16-byte Folded Spill
715
709
; CHECK-NEXT: sub x9, sp, #272
716
710
; CHECK-NEXT: mov x29, sp
717
711
; CHECK-NEXT: and sp, x9, #0xffffffffffffffe0
718
- ; CHECK-NEXT: .cfi_def_cfa w29, 16
719
- ; CHECK-NEXT: .cfi_offset w30, -8
720
- ; CHECK-NEXT: .cfi_offset w29, -16
721
712
; CHECK-NEXT: ptrue p1.d, vl2
722
713
; CHECK-NEXT: // kill: def $q0 killed $q0 def $z0
723
714
; CHECK-NEXT: // kill: def $q1 killed $q1 def $z1
@@ -862,12 +853,10 @@ define <32 x i64> @llrint_v32f64(<32 x double> %x) {
862
853
}
863
854
declare <32 x i64 > @llvm.llrint.v32i64.v32f64 (<32 x double >)
864
855
865
- define <1 x i64 > @llrint_v1i64_v1fp128 (<1 x fp128 > %x ) {
856
+ define <1 x i64 > @llrint_v1i64_v1fp128 (<1 x fp128 > %x ) nounwind {
866
857
; CHECK-LABEL: llrint_v1i64_v1fp128:
867
858
; CHECK: // %bb.0:
868
859
; CHECK-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
869
- ; CHECK-NEXT: .cfi_def_cfa_offset 16
870
- ; CHECK-NEXT: .cfi_offset w30, -16
871
860
; CHECK-NEXT: bl llrintl
872
861
; CHECK-NEXT: fmov d0, x0
873
862
; CHECK-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
@@ -877,15 +866,13 @@ define <1 x i64> @llrint_v1i64_v1fp128(<1 x fp128> %x) {
877
866
}
878
867
declare <1 x i64 > @llvm.llrint.v1i64.v1fp128 (<1 x fp128 >)
879
868
880
- define <2 x i64 > @llrint_v2i64_v2fp128 (<2 x fp128 > %x ) {
869
+ define <2 x i64 > @llrint_v2i64_v2fp128 (<2 x fp128 > %x ) nounwind {
881
870
; CHECK-LABEL: llrint_v2i64_v2fp128:
882
871
; CHECK: // %bb.0:
883
872
; CHECK-NEXT: sub sp, sp, #48
884
- ; CHECK-NEXT: str x30, [sp, #32] // 8-byte Folded Spill
885
- ; CHECK-NEXT: .cfi_def_cfa_offset 48
886
- ; CHECK-NEXT: .cfi_offset w30, -16
887
873
; CHECK-NEXT: str q0, [sp] // 16-byte Folded Spill
888
874
; CHECK-NEXT: mov v0.16b, v1.16b
875
+ ; CHECK-NEXT: str x30, [sp, #32] // 8-byte Folded Spill
889
876
; CHECK-NEXT: bl llrintl
890
877
; CHECK-NEXT: fmov d0, x0
891
878
; CHECK-NEXT: str q0, [sp, #16] // 16-byte Folded Spill
@@ -902,15 +889,12 @@ define <2 x i64> @llrint_v2i64_v2fp128(<2 x fp128> %x) {
902
889
}
903
890
declare <2 x i64 > @llvm.llrint.v2i64.v2fp128 (<2 x fp128 >)
904
891
905
- define <4 x i64 > @llrint_v4i64_v4fp128 (<4 x fp128 > %x ) {
892
+ define <4 x i64 > @llrint_v4i64_v4fp128 (<4 x fp128 > %x ) nounwind {
906
893
; CHECK-LABEL: llrint_v4i64_v4fp128:
907
894
; CHECK: // %bb.0:
908
895
; CHECK-NEXT: stp x29, x30, [sp, #-16]! // 16-byte Folded Spill
909
896
; CHECK-NEXT: sub sp, sp, #64
910
897
; CHECK-NEXT: addvl sp, sp, #-1
911
- ; CHECK-NEXT: .cfi_escape 0x0f, 0x0d, 0x8f, 0x00, 0x11, 0xd0, 0x00, 0x22, 0x11, 0x08, 0x92, 0x2e, 0x00, 0x1e, 0x22 // sp + 80 + 8 * VG
912
- ; CHECK-NEXT: .cfi_offset w30, -8
913
- ; CHECK-NEXT: .cfi_offset w29, -16
914
898
; CHECK-NEXT: str q0, [sp, #48] // 16-byte Folded Spill
915
899
; CHECK-NEXT: mov v0.16b, v3.16b
916
900
; CHECK-NEXT: stp q2, q1, [sp, #16] // 32-byte Folded Spill
@@ -950,15 +934,12 @@ define <4 x i64> @llrint_v4i64_v4fp128(<4 x fp128> %x) {
950
934
}
951
935
declare <4 x i64 > @llvm.llrint.v4i64.v4fp128 (<4 x fp128 >)
952
936
953
- define <8 x i64 > @llrint_v8i64_v8fp128 (<8 x fp128 > %x ) {
937
+ define <8 x i64 > @llrint_v8i64_v8fp128 (<8 x fp128 > %x ) nounwind {
954
938
; CHECK-LABEL: llrint_v8i64_v8fp128:
955
939
; CHECK: // %bb.0:
956
940
; CHECK-NEXT: stp x29, x30, [sp, #-16]! // 16-byte Folded Spill
957
941
; CHECK-NEXT: sub sp, sp, #128
958
942
; CHECK-NEXT: addvl sp, sp, #-2
959
- ; CHECK-NEXT: .cfi_escape 0x0f, 0x0d, 0x8f, 0x00, 0x11, 0x90, 0x01, 0x22, 0x11, 0x10, 0x92, 0x2e, 0x00, 0x1e, 0x22 // sp + 144 + 16 * VG
960
- ; CHECK-NEXT: .cfi_offset w30, -8
961
- ; CHECK-NEXT: .cfi_offset w29, -16
962
943
; CHECK-NEXT: str q0, [sp, #112] // 16-byte Folded Spill
963
944
; CHECK-NEXT: mov v0.16b, v7.16b
964
945
; CHECK-NEXT: stp q6, q5, [sp, #16] // 32-byte Folded Spill
@@ -1030,15 +1011,12 @@ define <8 x i64> @llrint_v8i64_v8fp128(<8 x fp128> %x) {
1030
1011
}
1031
1012
declare <8 x i64 > @llvm.llrint.v8i64.v8fp128 (<8 x fp128 >)
1032
1013
1033
- define <16 x i64 > @llrint_v16fp128 (<16 x fp128 > %x ) {
1014
+ define <16 x i64 > @llrint_v16fp128 (<16 x fp128 > %x ) nounwind {
1034
1015
; CHECK-LABEL: llrint_v16fp128:
1035
1016
; CHECK: // %bb.0:
1036
1017
; CHECK-NEXT: stp x29, x30, [sp, #-16]! // 16-byte Folded Spill
1037
1018
; CHECK-NEXT: sub sp, sp, #256
1038
1019
; CHECK-NEXT: addvl sp, sp, #-4
1039
- ; CHECK-NEXT: .cfi_escape 0x0f, 0x0d, 0x8f, 0x00, 0x11, 0x90, 0x02, 0x22, 0x11, 0x20, 0x92, 0x2e, 0x00, 0x1e, 0x22 // sp + 272 + 32 * VG
1040
- ; CHECK-NEXT: .cfi_offset w30, -8
1041
- ; CHECK-NEXT: .cfi_offset w29, -16
1042
1020
; CHECK-NEXT: addvl x8, sp, #4
1043
1021
; CHECK-NEXT: str q1, [sp, #240] // 16-byte Folded Spill
1044
1022
; CHECK-NEXT: ldr q1, [x8, #272]
@@ -1194,17 +1172,13 @@ define <16 x i64> @llrint_v16fp128(<16 x fp128> %x) {
1194
1172
}
1195
1173
declare <16 x i64 > @llvm.llrint.v16i64.v16fp128 (<16 x fp128 >)
1196
1174
1197
- define <32 x i64 > @llrint_v32fp128 (<32 x fp128 > %x ) {
1175
+ define <32 x i64 > @llrint_v32fp128 (<32 x fp128 > %x ) nounwind {
1198
1176
; CHECK-LABEL: llrint_v32fp128:
1199
1177
; CHECK: // %bb.0:
1200
1178
; CHECK-NEXT: str x29, [sp, #-32]! // 8-byte Folded Spill
1201
1179
; CHECK-NEXT: stp x30, x19, [sp, #16] // 16-byte Folded Spill
1202
1180
; CHECK-NEXT: sub sp, sp, #512
1203
1181
; CHECK-NEXT: addvl sp, sp, #-8
1204
- ; CHECK-NEXT: .cfi_escape 0x0f, 0x0e, 0x8f, 0x00, 0x11, 0xa0, 0x04, 0x22, 0x11, 0xc0, 0x00, 0x92, 0x2e, 0x00, 0x1e, 0x22 // sp + 544 + 64 * VG
1205
- ; CHECK-NEXT: .cfi_offset w19, -8
1206
- ; CHECK-NEXT: .cfi_offset w30, -16
1207
- ; CHECK-NEXT: .cfi_offset w29, -32
1208
1182
; CHECK-NEXT: addvl x9, sp, #8
1209
1183
; CHECK-NEXT: stp q2, q1, [sp, #16] // 32-byte Folded Spill
1210
1184
; CHECK-NEXT: mov x19, x8
0 commit comments