79 lines · plain
1; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sve -mattr=+sme2 -enable-machine-outliner -aarch64-streaming-hazard-size=0 -verify-machineinstrs < %s | FileCheck %s2; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sve -mattr=+sme2 -enable-machine-outliner -aarch64-streaming-hazard-size=0 -verify-machineinstrs < %s | FileCheck %s -check-prefix=OUTLINER3 4declare void @callee();5 6define void @streaming_mode_change1() #0 {7; CHECK-LABEL: streaming_mode_change1:8; CHECK: // %bb.0:9; CHECK-NEXT: stp d15, d14, [sp, #-80]! // 16-byte Folded Spill10; CHECK-NEXT: stp d13, d12, [sp, #16] // 16-byte Folded Spill11; CHECK-NEXT: stp d11, d10, [sp, #32] // 16-byte Folded Spill12; CHECK-NEXT: stp d9, d8, [sp, #48] // 16-byte Folded Spill13; CHECK-NEXT: str x30, [sp, #64] // 8-byte Spill14; CHECK-NEXT: smstop sm15; CHECK-NEXT: bl callee16; CHECK-NEXT: smstart sm17; CHECK-NEXT: ldp d9, d8, [sp, #48] // 16-byte Folded Reload18; CHECK-NEXT: ldr x30, [sp, #64] // 8-byte Reload19; CHECK-NEXT: ldp d11, d10, [sp, #32] // 16-byte Folded Reload20; CHECK-NEXT: ldp d13, d12, [sp, #16] // 16-byte Folded Reload21; CHECK-NEXT: ldp d15, d14, [sp], #80 // 16-byte Folded Reload22; CHECK-NEXT: ret23;24; OUTLINER-LABEL: streaming_mode_change1:25; OUTLINER-NOT: OUTLINED_FUNCTION_26 call void @callee();27 ret void;28}29 30define void @streaming_mode_change2() #0 {31; CHECK-LABEL: streaming_mode_change2:32; CHECK: // %bb.0:33; CHECK-NEXT: stp d15, d14, [sp, #-80]! // 16-byte Folded Spill34; CHECK-NEXT: stp d13, d12, [sp, #16] // 16-byte Folded Spill35; CHECK-NEXT: stp d11, d10, [sp, #32] // 16-byte Folded Spill36; CHECK-NEXT: stp d9, d8, [sp, #48] // 16-byte Folded Spill37; CHECK-NEXT: str x30, [sp, #64] // 8-byte Spill38; CHECK-NEXT: smstop sm39; CHECK-NEXT: bl callee40; CHECK-NEXT: smstart sm41; CHECK-NEXT: ldp d9, d8, [sp, #48] // 16-byte Folded Reload42; CHECK-NEXT: ldr x30, [sp, #64] // 8-byte Reload43; CHECK-NEXT: ldp d11, d10, [sp, #32] // 16-byte Folded Reload44; CHECK-NEXT: ldp d13, d12, [sp, #16] // 16-byte Folded Reload45; CHECK-NEXT: ldp d15, d14, [sp], #80 // 16-byte Folded Reload46; CHECK-NEXT: ret47;48; OUTLINER-LABEL: streaming_mode_change2:49; OUTLINER-NOT: OUTLINED_FUNCTION_50 call void @callee();51 ret void;52}53 54define void @streaming_mode_change3() #0 {55; CHECK-LABEL: streaming_mode_change3:56; CHECK: // %bb.0:57; CHECK-NEXT: stp d15, d14, [sp, #-80]! // 16-byte Folded Spill58; CHECK-NEXT: stp d13, d12, [sp, #16] // 16-byte Folded Spill59; CHECK-NEXT: stp d11, d10, [sp, #32] // 16-byte Folded Spill60; CHECK-NEXT: stp d9, d8, [sp, #48] // 16-byte Folded Spill61; CHECK-NEXT: str x30, [sp, #64] // 8-byte Spill62; CHECK-NEXT: smstop sm63; CHECK-NEXT: bl callee64; CHECK-NEXT: smstart sm65; CHECK-NEXT: ldp d9, d8, [sp, #48] // 16-byte Folded Reload66; CHECK-NEXT: ldr x30, [sp, #64] // 8-byte Reload67; CHECK-NEXT: ldp d11, d10, [sp, #32] // 16-byte Folded Reload68; CHECK-NEXT: ldp d13, d12, [sp, #16] // 16-byte Folded Reload69; CHECK-NEXT: ldp d15, d14, [sp], #80 // 16-byte Folded Reload70; CHECK-NEXT: ret71;72; OUTLINER-LABEL: streaming_mode_change3:73; OUTLINER-NOT: OUTLINED_FUNCTION_74 call void @callee();75 ret void;76}77 78attributes #0 = { "aarch64_pstate_sm_enabled" nounwind }79