|
1 | 1 | ; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sve -mattr=+sme2 -verify-machineinstrs < %s | FileCheck %s
|
2 | 2 | ; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sve -mattr=+sme2 -frame-pointer=non-leaf -verify-machineinstrs < %s | FileCheck %s --check-prefix=FP-CHECK
|
3 | 3 | ; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sme2 -frame-pointer=non-leaf -verify-machineinstrs < %s | FileCheck %s --check-prefix=NO-SVE-CHECK
|
| 4 | +; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sve -mattr=+sme2 -verify-machineinstrs -enable-machine-outliner < %s | FileCheck %s --check-prefix=OUTLINER-CHECK |
4 | 5 |
|
5 | 6 | declare void @callee();
|
6 | 7 | declare void @fixed_callee(<4 x i32>);
|
@@ -97,6 +98,9 @@ define void @vg_unwind_simple() #0 {
|
97 | 98 | ; FP-CHECK-NEXT: .cfi_restore b14
|
98 | 99 | ; FP-CHECK-NEXT: .cfi_restore b15
|
99 | 100 | ; FP-CHECK-NEXT: ret
|
| 101 | +; |
| 102 | +; OUTLINER-CHECK-LABEL: vg_unwind_simple: |
| 103 | +; OUTLINER-CHECK-NOT: OUTLINED_FUNCTION_ |
100 | 104 | ;
|
101 | 105 | call void @callee();
|
102 | 106 | ret void;
|
@@ -202,6 +206,9 @@ define void @vg_unwind_needs_gap() #0 {
|
202 | 206 | ; FP-CHECK-NEXT: .cfi_restore b14
|
203 | 207 | ; FP-CHECK-NEXT: .cfi_restore b15
|
204 | 208 | ; FP-CHECK-NEXT: ret
|
| 209 | +; |
| 210 | +; OUTLINER-CHECK-LABEL: vg_unwind_needs_gap: |
| 211 | +; OUTLINER-CHECK-NOT: OUTLINED_FUNCTION_ |
205 | 212 | ;
|
206 | 213 | call void asm sideeffect "", "~{x20}"()
|
207 | 214 | call void @callee();
|
@@ -302,6 +309,9 @@ define void @vg_unwind_with_fixed_args(<4 x i32> %x) #0 {
|
302 | 309 | ; FP-CHECK-NEXT: .cfi_restore b14
|
303 | 310 | ; FP-CHECK-NEXT: .cfi_restore b15
|
304 | 311 | ; FP-CHECK-NEXT: ret
|
| 312 | +; |
| 313 | +; OUTLINER-CHECK-LABEL: vg_unwind_with_fixed_args: |
| 314 | +; OUTLINER-CHECK-NOT: OUTLINED_FUNCTION_ |
305 | 315 | ;
|
306 | 316 | call void @fixed_callee(<4 x i32> %x);
|
307 | 317 | ret void;
|
@@ -493,6 +503,9 @@ define void @vg_unwind_with_sve_args(<vscale x 2 x i64> %x) #0 {
|
493 | 503 | ; FP-CHECK-NEXT: .cfi_restore w30
|
494 | 504 | ; FP-CHECK-NEXT: .cfi_restore w29
|
495 | 505 | ; FP-CHECK-NEXT: ret
|
| 506 | +; |
| 507 | +; OUTLINER-CHECK-LABEL: vg_unwind_with_sve_args: |
| 508 | +; OUTLINER-CHECK-NOT: OUTLINED_FUNCTION_ |
496 | 509 | ;
|
497 | 510 | call void asm sideeffect "", "~{x28}"()
|
498 | 511 | call void @scalable_callee(<vscale x 2 x i64> %x);
|
@@ -620,6 +633,9 @@ define void @vg_unwind_multiple_scratch_regs(ptr %out) #1 {
|
620 | 633 | ; FP-CHECK-NEXT: .cfi_restore b15
|
621 | 634 | ; FP-CHECK-NEXT: ret
|
622 | 635 | ;
|
| 636 | +; OUTLINER-CHECK-LABEL: vg_unwind_multiple_scratch_regs: |
| 637 | +; OUTLINER-CHECK-NOT: OUTLINED_FUNCTION_ |
| 638 | +; |
623 | 639 | entry:
|
624 | 640 | %v = alloca i8, i64 327680, align 1
|
625 | 641 | store ptr %v, ptr %out, align 8
|
@@ -740,6 +756,9 @@ define void @vg_locally_streaming_fn() #3 {
|
740 | 756 | ; FP-CHECK-NEXT: .cfi_restore b14
|
741 | 757 | ; FP-CHECK-NEXT: .cfi_restore b15
|
742 | 758 | ; FP-CHECK-NEXT: ret
|
| 759 | +; |
| 760 | +; OUTLINER-CHECK-LABEL: vg_locally_streaming_fn: |
| 761 | +; OUTLINER-CHECK-NOT: OUTLINED_FUNCTION_ |
743 | 762 | ;
|
744 | 763 | call void @callee()
|
745 | 764 | call void @streaming_callee()
|
@@ -856,6 +875,9 @@ define void @streaming_compatible_to_streaming() #4 {
|
856 | 875 | ; FP-CHECK-NEXT: .cfi_restore b14
|
857 | 876 | ; FP-CHECK-NEXT: .cfi_restore b15
|
858 | 877 | ; FP-CHECK-NEXT: ret
|
| 878 | +; |
| 879 | +; OUTLINER-CHECK-LABEL: streaming_compatible_to_streaming: |
| 880 | +; OUTLINER-CHECK-NOT: OUTLINED_FUNCTION_ |
859 | 881 | ;
|
860 | 882 | call void @streaming_callee()
|
861 | 883 | ret void
|
@@ -970,6 +992,9 @@ define void @streaming_compatible_to_non_streaming() #4 {
|
970 | 992 | ; FP-CHECK-NEXT: .cfi_restore b14
|
971 | 993 | ; FP-CHECK-NEXT: .cfi_restore b15
|
972 | 994 | ; FP-CHECK-NEXT: ret
|
| 995 | +; |
| 996 | +; OUTLINER-CHECK-LABEL: streaming_compatible_to_non_streaming: |
| 997 | +; OUTLINER-CHECK-NOT: OUTLINED_FUNCTION_ |
973 | 998 | ;
|
974 | 999 | call void @callee()
|
975 | 1000 | ret void
|
@@ -1041,6 +1066,9 @@ define void @streaming_compatible_no_sve(i32 noundef %x) #4 {
|
1041 | 1066 | ; NO-SVE-CHECK-NEXT: .cfi_restore b14
|
1042 | 1067 | ; NO-SVE-CHECK-NEXT: .cfi_restore b15
|
1043 | 1068 | ; NO-SVE-CHECK-NEXT: ret
|
| 1069 | +; |
| 1070 | +; OUTLINER-CHECK-LABEL: streaming_compatible_no_sve: |
| 1071 | +; OUTLINER-CHECK-NOT: OUTLINED_FUNCTION_ |
1044 | 1072 | ;
|
1045 | 1073 | call void @streaming_callee_with_arg(i32 %x)
|
1046 | 1074 | ret void
|
@@ -1135,6 +1163,9 @@ define void @vg_unwind_noasync() #5 {
|
1135 | 1163 | ; FP-CHECK-NEXT: .cfi_restore b14
|
1136 | 1164 | ; FP-CHECK-NEXT: .cfi_restore b15
|
1137 | 1165 | ; FP-CHECK-NEXT: ret
|
| 1166 | +; OUTLINER-CHECK-LABEL: vg_unwind_noasync: |
| 1167 | +; OUTLINER-CHECK-NOT: OUTLINED_FUNCTION_ |
| 1168 | +; |
1138 | 1169 | call void @callee();
|
1139 | 1170 | ret void;
|
1140 | 1171 | }
|
|
0 commit comments