brintos

brintos / llvm-project-archived public Read only

0
0
Text · 18.7 KiB · 58c6e2e Raw
479 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sve,+sme,+sme2p1 -verify-machineinstrs < %s | FileCheck %s3 4target triple = "aarch64-unknown-linux-gnu"5 6declare void @bar_enabled(<vscale x 4 x i32>) #07declare void @bar(<vscale x 4 x i32>)8declare <vscale x 4 x i32> @bar_retv_enabled() #09declare <vscale x 4 x i32> @bar_retv()10 11; Non-streaming -> calls streaming callee12define void @foo_non_streaming_pass_arg(ptr %arg) {13; CHECK-LABEL: foo_non_streaming_pass_arg:14; CHECK:       // %bb.0: // %entry15; CHECK-NEXT:    stp d15, d14, [sp, #-96]! // 16-byte Folded Spill16; CHECK-NEXT:    .cfi_def_cfa_offset 9617; CHECK-NEXT:    cntd x918; CHECK-NEXT:    stp d13, d12, [sp, #16] // 16-byte Folded Spill19; CHECK-NEXT:    stp d11, d10, [sp, #32] // 16-byte Folded Spill20; CHECK-NEXT:    stp d9, d8, [sp, #48] // 16-byte Folded Spill21; CHECK-NEXT:    stp x29, x30, [sp, #64] // 16-byte Folded Spill22; CHECK-NEXT:    stp x9, x28, [sp, #80] // 16-byte Folded Spill23; CHECK-NEXT:    add x29, sp, #6424; CHECK-NEXT:    .cfi_def_cfa w29, 3225; CHECK-NEXT:    .cfi_offset w28, -826; CHECK-NEXT:    .cfi_offset vg, -1627; CHECK-NEXT:    .cfi_offset w30, -2428; CHECK-NEXT:    .cfi_offset w29, -3229; CHECK-NEXT:    .cfi_offset b8, -4030; CHECK-NEXT:    .cfi_offset b9, -4831; CHECK-NEXT:    .cfi_offset b10, -5632; CHECK-NEXT:    .cfi_offset b11, -6433; CHECK-NEXT:    .cfi_offset b12, -7234; CHECK-NEXT:    .cfi_offset b13, -8035; CHECK-NEXT:    .cfi_offset b14, -8836; CHECK-NEXT:    .cfi_offset b15, -9637; CHECK-NEXT:    addvl sp, sp, #-138; CHECK-NEXT:    rdvl x8, #139; CHECK-NEXT:    addsvl x8, x8, #-140; CHECK-NEXT:    cbz x8, .LBB0_241; CHECK-NEXT:  // %bb.1: // %entry42; CHECK-NEXT:    brk #0x143; CHECK-NEXT:  .LBB0_2: // %entry44; CHECK-NEXT:    ldr z0, [x0]45; CHECK-NEXT:    sub x8, x29, #6446; CHECK-NEXT:    str z0, [x8, #-1, mul vl] // 16-byte Folded Spill47; CHECK-NEXT:    smstart sm48; CHECK-NEXT:    ldr z0, [x8, #-1, mul vl] // 16-byte Folded Reload49; CHECK-NEXT:    bl bar_enabled50; CHECK-NEXT:    smstop sm51; CHECK-NEXT:    addvl sp, sp, #152; CHECK-NEXT:    .cfi_def_cfa wsp, 9653; CHECK-NEXT:    ldp x29, x30, [sp, #64] // 16-byte Folded Reload54; CHECK-NEXT:    ldr x28, [sp, #88] // 8-byte Reload55; CHECK-NEXT:    ldp d9, d8, [sp, #48] // 16-byte Folded Reload56; CHECK-NEXT:    ldp d11, d10, [sp, #32] // 16-byte Folded Reload57; CHECK-NEXT:    ldp d13, d12, [sp, #16] // 16-byte Folded Reload58; CHECK-NEXT:    ldp d15, d14, [sp], #96 // 16-byte Folded Reload59; CHECK-NEXT:    .cfi_def_cfa_offset 060; CHECK-NEXT:    .cfi_restore w2861; CHECK-NEXT:    .cfi_restore vg62; CHECK-NEXT:    .cfi_restore w3063; CHECK-NEXT:    .cfi_restore w2964; CHECK-NEXT:    .cfi_restore b865; CHECK-NEXT:    .cfi_restore b966; CHECK-NEXT:    .cfi_restore b1067; CHECK-NEXT:    .cfi_restore b1168; CHECK-NEXT:    .cfi_restore b1269; CHECK-NEXT:    .cfi_restore b1370; CHECK-NEXT:    .cfi_restore b1471; CHECK-NEXT:    .cfi_restore b1572; CHECK-NEXT:    ret73entry:74  %v = load <vscale x 4 x i32>, ptr %arg, align 1675  tail call void @bar_enabled(<vscale x 4 x i32> %v) #076  ret void77}78 79; Streaming-compatible -> calls streaming callee80define void @foo_streaming_compatible_pass_arg(ptr %arg) #1 {81; CHECK-LABEL: foo_streaming_compatible_pass_arg:82; CHECK:       // %bb.0: // %entry83; CHECK-NEXT:    sub sp, sp, #113684; CHECK-NEXT:    .cfi_def_cfa_offset 113685; CHECK-NEXT:    cntd x986; CHECK-NEXT:    stp d15, d14, [sp] // 16-byte Folded Spill87; CHECK-NEXT:    stp d13, d12, [sp, #16] // 16-byte Folded Spill88; CHECK-NEXT:    stp d11, d10, [sp, #32] // 16-byte Folded Spill89; CHECK-NEXT:    stp d9, d8, [sp, #48] // 16-byte Folded Spill90; CHECK-NEXT:    str x29, [sp, #1088] // 8-byte Spill91; CHECK-NEXT:    str x30, [sp, #1096] // 8-byte Spill92; CHECK-NEXT:    str x9, [sp, #1104] // 8-byte Spill93; CHECK-NEXT:    str x28, [sp, #1112] // 8-byte Spill94; CHECK-NEXT:    str x19, [sp, #1120] // 8-byte Spill95; CHECK-NEXT:    add x29, sp, #108896; CHECK-NEXT:    .cfi_def_cfa w29, 4897; CHECK-NEXT:    .cfi_offset w19, -1698; CHECK-NEXT:    .cfi_offset w28, -2499; CHECK-NEXT:    .cfi_offset vg, -32100; CHECK-NEXT:    .cfi_offset w30, -40101; CHECK-NEXT:    .cfi_offset w29, -48102; CHECK-NEXT:    .cfi_offset b8, -1080103; CHECK-NEXT:    .cfi_offset b9, -1088104; CHECK-NEXT:    .cfi_offset b10, -1096105; CHECK-NEXT:    .cfi_offset b11, -1104106; CHECK-NEXT:    .cfi_offset b12, -1112107; CHECK-NEXT:    .cfi_offset b13, -1120108; CHECK-NEXT:    .cfi_offset b14, -1128109; CHECK-NEXT:    .cfi_offset b15, -1136110; CHECK-NEXT:    sub sp, sp, #1024111; CHECK-NEXT:    addvl sp, sp, #-1112; CHECK-NEXT:    rdvl x8, #1113; CHECK-NEXT:    mrs x19, SVCR114; CHECK-NEXT:    addsvl x8, x8, #-1115; CHECK-NEXT:    cbz x8, .LBB1_2116; CHECK-NEXT:  // %bb.1: // %entry117; CHECK-NEXT:    brk #0x1118; CHECK-NEXT:  .LBB1_2: // %entry119; CHECK-NEXT:    ldr z0, [x0]120; CHECK-NEXT:    sub x8, x29, #1088121; CHECK-NEXT:    str z0, [x8, #-1, mul vl] // 16-byte Folded Spill122; CHECK-NEXT:    tbnz w19, #0, .LBB1_4123; CHECK-NEXT:  // %bb.3: // %entry124; CHECK-NEXT:    smstart sm125; CHECK-NEXT:  .LBB1_4: // %entry126; CHECK-NEXT:    ldr z0, [x8, #-1, mul vl] // 16-byte Folded Reload127; CHECK-NEXT:    bl bar_enabled128; CHECK-NEXT:    tbnz w19, #0, .LBB1_6129; CHECK-NEXT:  // %bb.5: // %entry130; CHECK-NEXT:    smstop sm131; CHECK-NEXT:  .LBB1_6: // %entry132; CHECK-NEXT:    addvl sp, sp, #1133; CHECK-NEXT:    add sp, sp, #1024134; CHECK-NEXT:    .cfi_def_cfa wsp, 1136135; CHECK-NEXT:    ldp d9, d8, [sp, #48] // 16-byte Folded Reload136; CHECK-NEXT:    ldr x19, [sp, #1120] // 8-byte Reload137; CHECK-NEXT:    ldp d11, d10, [sp, #32] // 16-byte Folded Reload138; CHECK-NEXT:    ldr x28, [sp, #1112] // 8-byte Reload139; CHECK-NEXT:    ldr x30, [sp, #1096] // 8-byte Reload140; CHECK-NEXT:    ldr x29, [sp, #1088] // 8-byte Reload141; CHECK-NEXT:    ldp d13, d12, [sp, #16] // 16-byte Folded Reload142; CHECK-NEXT:    ldp d15, d14, [sp] // 16-byte Folded Reload143; CHECK-NEXT:    add sp, sp, #1136144; CHECK-NEXT:    .cfi_def_cfa_offset 0145; CHECK-NEXT:    .cfi_restore w19146; CHECK-NEXT:    .cfi_restore w28147; CHECK-NEXT:    .cfi_restore vg148; CHECK-NEXT:    .cfi_restore w30149; CHECK-NEXT:    .cfi_restore w29150; CHECK-NEXT:    .cfi_restore b8151; CHECK-NEXT:    .cfi_restore b9152; CHECK-NEXT:    .cfi_restore b10153; CHECK-NEXT:    .cfi_restore b11154; CHECK-NEXT:    .cfi_restore b12155; CHECK-NEXT:    .cfi_restore b13156; CHECK-NEXT:    .cfi_restore b14157; CHECK-NEXT:    .cfi_restore b15158; CHECK-NEXT:    ret159entry:160  %v = load <vscale x 4 x i32>, ptr %arg, align 16161  tail call void @bar_enabled(<vscale x 4 x i32> %v) #0162  ret void163}164 165; Streaming -> calls non-streaming callee166define void @foo_streaming_pass_arg(ptr %arg) #0 {167; CHECK-LABEL: foo_streaming_pass_arg:168; CHECK:       // %bb.0: // %entry169; CHECK-NEXT:    sub sp, sp, #1120170; CHECK-NEXT:    .cfi_def_cfa_offset 1120171; CHECK-NEXT:    cntd x9172; CHECK-NEXT:    stp d15, d14, [sp] // 16-byte Folded Spill173; CHECK-NEXT:    stp d13, d12, [sp, #16] // 16-byte Folded Spill174; CHECK-NEXT:    stp d11, d10, [sp, #32] // 16-byte Folded Spill175; CHECK-NEXT:    stp d9, d8, [sp, #48] // 16-byte Folded Spill176; CHECK-NEXT:    str x29, [sp, #1088] // 8-byte Spill177; CHECK-NEXT:    str x30, [sp, #1096] // 8-byte Spill178; CHECK-NEXT:    str x9, [sp, #1104] // 8-byte Spill179; CHECK-NEXT:    str x28, [sp, #1112] // 8-byte Spill180; CHECK-NEXT:    .cfi_offset w28, -8181; CHECK-NEXT:    .cfi_offset vg, -16182; CHECK-NEXT:    .cfi_offset w30, -24183; CHECK-NEXT:    .cfi_offset w29, -32184; CHECK-NEXT:    .cfi_offset b8, -1064185; CHECK-NEXT:    .cfi_offset b9, -1072186; CHECK-NEXT:    .cfi_offset b10, -1080187; CHECK-NEXT:    .cfi_offset b11, -1088188; CHECK-NEXT:    .cfi_offset b12, -1096189; CHECK-NEXT:    .cfi_offset b13, -1104190; CHECK-NEXT:    .cfi_offset b14, -1112191; CHECK-NEXT:    .cfi_offset b15, -1120192; CHECK-NEXT:    sub sp, sp, #1024193; CHECK-NEXT:    .cfi_def_cfa_offset 2144194; CHECK-NEXT:    smstop sm195; CHECK-NEXT:    rdvl x8, #1196; CHECK-NEXT:    addsvl x8, x8, #-1197; CHECK-NEXT:    cbz x8, .LBB2_2198; CHECK-NEXT:  // %bb.1: // %entry199; CHECK-NEXT:    brk #0x1200; CHECK-NEXT:  .LBB2_2: // %entry201; CHECK-NEXT:    ldr z0, [x0]202; CHECK-NEXT:    bl bar203; CHECK-NEXT:    smstart sm204; CHECK-NEXT:    add sp, sp, #1024205; CHECK-NEXT:    .cfi_def_cfa_offset 1120206; CHECK-NEXT:    ldp d9, d8, [sp, #48] // 16-byte Folded Reload207; CHECK-NEXT:    ldr x28, [sp, #1112] // 8-byte Reload208; CHECK-NEXT:    ldp d11, d10, [sp, #32] // 16-byte Folded Reload209; CHECK-NEXT:    ldr x30, [sp, #1096] // 8-byte Reload210; CHECK-NEXT:    ldr x29, [sp, #1088] // 8-byte Reload211; CHECK-NEXT:    ldp d13, d12, [sp, #16] // 16-byte Folded Reload212; CHECK-NEXT:    ldp d15, d14, [sp] // 16-byte Folded Reload213; CHECK-NEXT:    add sp, sp, #1120214; CHECK-NEXT:    .cfi_def_cfa_offset 0215; CHECK-NEXT:    .cfi_restore w28216; CHECK-NEXT:    .cfi_restore vg217; CHECK-NEXT:    .cfi_restore w30218; CHECK-NEXT:    .cfi_restore w29219; CHECK-NEXT:    .cfi_restore b8220; CHECK-NEXT:    .cfi_restore b9221; CHECK-NEXT:    .cfi_restore b10222; CHECK-NEXT:    .cfi_restore b11223; CHECK-NEXT:    .cfi_restore b12224; CHECK-NEXT:    .cfi_restore b13225; CHECK-NEXT:    .cfi_restore b14226; CHECK-NEXT:    .cfi_restore b15227; CHECK-NEXT:    ret228entry:229  %v = load <vscale x 4 x i32>, ptr %arg, align 16230  tail call void @bar(<vscale x 4 x i32> %v)231  ret void232}233 234; Non-streaming -> returns SVE value from streaming callee235define void @foo_non_streaming_retval(ptr %ptr) {236; CHECK-LABEL: foo_non_streaming_retval:237; CHECK:       // %bb.0: // %entry238; CHECK-NEXT:    stp d15, d14, [sp, #-112]! // 16-byte Folded Spill239; CHECK-NEXT:    .cfi_def_cfa_offset 112240; CHECK-NEXT:    cntd x9241; CHECK-NEXT:    stp d13, d12, [sp, #16] // 16-byte Folded Spill242; CHECK-NEXT:    stp d11, d10, [sp, #32] // 16-byte Folded Spill243; CHECK-NEXT:    stp d9, d8, [sp, #48] // 16-byte Folded Spill244; CHECK-NEXT:    stp x29, x30, [sp, #64] // 16-byte Folded Spill245; CHECK-NEXT:    str x9, [sp, #80] // 8-byte Spill246; CHECK-NEXT:    stp x28, x19, [sp, #96] // 16-byte Folded Spill247; CHECK-NEXT:    add x29, sp, #64248; CHECK-NEXT:    .cfi_def_cfa w29, 48249; CHECK-NEXT:    .cfi_offset w19, -8250; CHECK-NEXT:    .cfi_offset w28, -16251; CHECK-NEXT:    .cfi_offset vg, -32252; CHECK-NEXT:    .cfi_offset w30, -40253; CHECK-NEXT:    .cfi_offset w29, -48254; CHECK-NEXT:    .cfi_offset b8, -56255; CHECK-NEXT:    .cfi_offset b9, -64256; CHECK-NEXT:    .cfi_offset b10, -72257; CHECK-NEXT:    .cfi_offset b11, -80258; CHECK-NEXT:    .cfi_offset b12, -88259; CHECK-NEXT:    .cfi_offset b13, -96260; CHECK-NEXT:    .cfi_offset b14, -104261; CHECK-NEXT:    .cfi_offset b15, -112262; CHECK-NEXT:    addvl sp, sp, #-1263; CHECK-NEXT:    rdvl x8, #1264; CHECK-NEXT:    addsvl x8, x8, #-1265; CHECK-NEXT:    cbz x8, .LBB3_2266; CHECK-NEXT:  // %bb.1: // %entry267; CHECK-NEXT:    brk #0x1268; CHECK-NEXT:  .LBB3_2: // %entry269; CHECK-NEXT:    mov x19, x0270; CHECK-NEXT:    smstart sm271; CHECK-NEXT:    bl bar_retv_enabled272; CHECK-NEXT:    sub x8, x29, #64273; CHECK-NEXT:    str z0, [x8, #-1, mul vl] // 16-byte Folded Spill274; CHECK-NEXT:    smstop sm275; CHECK-NEXT:    ldr z0, [x8, #-1, mul vl] // 16-byte Folded Reload276; CHECK-NEXT:    str z0, [x19]277; CHECK-NEXT:    addvl sp, sp, #1278; CHECK-NEXT:    .cfi_def_cfa wsp, 112279; CHECK-NEXT:    ldp x28, x19, [sp, #96] // 16-byte Folded Reload280; CHECK-NEXT:    ldp x29, x30, [sp, #64] // 16-byte Folded Reload281; CHECK-NEXT:    ldp d9, d8, [sp, #48] // 16-byte Folded Reload282; CHECK-NEXT:    ldp d11, d10, [sp, #32] // 16-byte Folded Reload283; CHECK-NEXT:    ldp d13, d12, [sp, #16] // 16-byte Folded Reload284; CHECK-NEXT:    ldp d15, d14, [sp], #112 // 16-byte Folded Reload285; CHECK-NEXT:    .cfi_def_cfa_offset 0286; CHECK-NEXT:    .cfi_restore w19287; CHECK-NEXT:    .cfi_restore w28288; CHECK-NEXT:    .cfi_restore vg289; CHECK-NEXT:    .cfi_restore w30290; CHECK-NEXT:    .cfi_restore w29291; CHECK-NEXT:    .cfi_restore b8292; CHECK-NEXT:    .cfi_restore b9293; CHECK-NEXT:    .cfi_restore b10294; CHECK-NEXT:    .cfi_restore b11295; CHECK-NEXT:    .cfi_restore b12296; CHECK-NEXT:    .cfi_restore b13297; CHECK-NEXT:    .cfi_restore b14298; CHECK-NEXT:    .cfi_restore b15299; CHECK-NEXT:    ret300entry:301  %v = tail call <vscale x 4 x i32> @bar_retv_enabled() #0302  store <vscale x 4 x i32> %v, ptr %ptr, align 16303  ret void304}305 306; Streaming-compatible -> returns SVE value from streaming callee307define void @foo_streaming_compatible_retval(ptr %ptr) #1 {308; CHECK-LABEL: foo_streaming_compatible_retval:309; CHECK:       // %bb.0: // %entry310; CHECK-NEXT:    sub sp, sp, #1136311; CHECK-NEXT:    .cfi_def_cfa_offset 1136312; CHECK-NEXT:    cntd x9313; CHECK-NEXT:    stp d15, d14, [sp] // 16-byte Folded Spill314; CHECK-NEXT:    stp d13, d12, [sp, #16] // 16-byte Folded Spill315; CHECK-NEXT:    stp d11, d10, [sp, #32] // 16-byte Folded Spill316; CHECK-NEXT:    stp d9, d8, [sp, #48] // 16-byte Folded Spill317; CHECK-NEXT:    str x29, [sp, #1088] // 8-byte Spill318; CHECK-NEXT:    str x30, [sp, #1096] // 8-byte Spill319; CHECK-NEXT:    str x9, [sp, #1104] // 8-byte Spill320; CHECK-NEXT:    str x28, [sp, #1112] // 8-byte Spill321; CHECK-NEXT:    str x20, [sp, #1120] // 8-byte Spill322; CHECK-NEXT:    str x19, [sp, #1128] // 8-byte Spill323; CHECK-NEXT:    add x29, sp, #1088324; CHECK-NEXT:    .cfi_def_cfa w29, 48325; CHECK-NEXT:    .cfi_offset w19, -8326; CHECK-NEXT:    .cfi_offset w20, -16327; CHECK-NEXT:    .cfi_offset w28, -24328; CHECK-NEXT:    .cfi_offset vg, -32329; CHECK-NEXT:    .cfi_offset w30, -40330; CHECK-NEXT:    .cfi_offset w29, -48331; CHECK-NEXT:    .cfi_offset b8, -1080332; CHECK-NEXT:    .cfi_offset b9, -1088333; CHECK-NEXT:    .cfi_offset b10, -1096334; CHECK-NEXT:    .cfi_offset b11, -1104335; CHECK-NEXT:    .cfi_offset b12, -1112336; CHECK-NEXT:    .cfi_offset b13, -1120337; CHECK-NEXT:    .cfi_offset b14, -1128338; CHECK-NEXT:    .cfi_offset b15, -1136339; CHECK-NEXT:    sub sp, sp, #1024340; CHECK-NEXT:    addvl sp, sp, #-1341; CHECK-NEXT:    rdvl x8, #1342; CHECK-NEXT:    mrs x20, SVCR343; CHECK-NEXT:    addsvl x8, x8, #-1344; CHECK-NEXT:    cbz x8, .LBB4_2345; CHECK-NEXT:  // %bb.1: // %entry346; CHECK-NEXT:    brk #0x1347; CHECK-NEXT:  .LBB4_2: // %entry348; CHECK-NEXT:    mov x19, x0349; CHECK-NEXT:    tbnz w20, #0, .LBB4_4350; CHECK-NEXT:  // %bb.3: // %entry351; CHECK-NEXT:    smstart sm352; CHECK-NEXT:  .LBB4_4: // %entry353; CHECK-NEXT:    bl bar_retv_enabled354; CHECK-NEXT:    sub x8, x29, #1088355; CHECK-NEXT:    str z0, [x8, #-1, mul vl] // 16-byte Folded Spill356; CHECK-NEXT:    tbnz w20, #0, .LBB4_6357; CHECK-NEXT:  // %bb.5: // %entry358; CHECK-NEXT:    smstop sm359; CHECK-NEXT:  .LBB4_6: // %entry360; CHECK-NEXT:    ldr z0, [x8, #-1, mul vl] // 16-byte Folded Reload361; CHECK-NEXT:    str z0, [x19]362; CHECK-NEXT:    addvl sp, sp, #1363; CHECK-NEXT:    add sp, sp, #1024364; CHECK-NEXT:    .cfi_def_cfa wsp, 1136365; CHECK-NEXT:    ldp d9, d8, [sp, #48] // 16-byte Folded Reload366; CHECK-NEXT:    ldr x19, [sp, #1128] // 8-byte Reload367; CHECK-NEXT:    ldp d11, d10, [sp, #32] // 16-byte Folded Reload368; CHECK-NEXT:    ldr x20, [sp, #1120] // 8-byte Reload369; CHECK-NEXT:    ldr x28, [sp, #1112] // 8-byte Reload370; CHECK-NEXT:    ldr x30, [sp, #1096] // 8-byte Reload371; CHECK-NEXT:    ldr x29, [sp, #1088] // 8-byte Reload372; CHECK-NEXT:    ldp d13, d12, [sp, #16] // 16-byte Folded Reload373; CHECK-NEXT:    ldp d15, d14, [sp] // 16-byte Folded Reload374; CHECK-NEXT:    add sp, sp, #1136375; CHECK-NEXT:    .cfi_def_cfa_offset 0376; CHECK-NEXT:    .cfi_restore w19377; CHECK-NEXT:    .cfi_restore w20378; CHECK-NEXT:    .cfi_restore w28379; CHECK-NEXT:    .cfi_restore vg380; CHECK-NEXT:    .cfi_restore w30381; CHECK-NEXT:    .cfi_restore w29382; CHECK-NEXT:    .cfi_restore b8383; CHECK-NEXT:    .cfi_restore b9384; CHECK-NEXT:    .cfi_restore b10385; CHECK-NEXT:    .cfi_restore b11386; CHECK-NEXT:    .cfi_restore b12387; CHECK-NEXT:    .cfi_restore b13388; CHECK-NEXT:    .cfi_restore b14389; CHECK-NEXT:    .cfi_restore b15390; CHECK-NEXT:    ret391entry:392  %v = tail call <vscale x 4 x i32> @bar_retv_enabled() #0393  store <vscale x 4 x i32> %v, ptr %ptr, align 16394  ret void395}396 397; Streaming -> returns SVE value from non-streaming callee398define void @foo_streaming_retval(ptr %ptr) #0 {399; CHECK-LABEL: foo_streaming_retval:400; CHECK:       // %bb.0: // %entry401; CHECK-NEXT:    sub sp, sp, #1136402; CHECK-NEXT:    .cfi_def_cfa_offset 1136403; CHECK-NEXT:    cntd x9404; CHECK-NEXT:    stp d15, d14, [sp] // 16-byte Folded Spill405; CHECK-NEXT:    stp d13, d12, [sp, #16] // 16-byte Folded Spill406; CHECK-NEXT:    stp d11, d10, [sp, #32] // 16-byte Folded Spill407; CHECK-NEXT:    stp d9, d8, [sp, #48] // 16-byte Folded Spill408; CHECK-NEXT:    str x29, [sp, #1088] // 8-byte Spill409; CHECK-NEXT:    str x30, [sp, #1096] // 8-byte Spill410; CHECK-NEXT:    str x9, [sp, #1104] // 8-byte Spill411; CHECK-NEXT:    str x28, [sp, #1112] // 8-byte Spill412; CHECK-NEXT:    str x19, [sp, #1120] // 8-byte Spill413; CHECK-NEXT:    add x29, sp, #1088414; CHECK-NEXT:    .cfi_def_cfa w29, 48415; CHECK-NEXT:    .cfi_offset w19, -16416; CHECK-NEXT:    .cfi_offset w28, -24417; CHECK-NEXT:    .cfi_offset vg, -32418; CHECK-NEXT:    .cfi_offset w30, -40419; CHECK-NEXT:    .cfi_offset w29, -48420; CHECK-NEXT:    .cfi_offset b8, -1080421; CHECK-NEXT:    .cfi_offset b9, -1088422; CHECK-NEXT:    .cfi_offset b10, -1096423; CHECK-NEXT:    .cfi_offset b11, -1104424; CHECK-NEXT:    .cfi_offset b12, -1112425; CHECK-NEXT:    .cfi_offset b13, -1120426; CHECK-NEXT:    .cfi_offset b14, -1128427; CHECK-NEXT:    .cfi_offset b15, -1136428; CHECK-NEXT:    sub sp, sp, #1024429; CHECK-NEXT:    addvl sp, sp, #-1430; CHECK-NEXT:    smstop sm431; CHECK-NEXT:    rdvl x8, #1432; CHECK-NEXT:    addsvl x8, x8, #-1433; CHECK-NEXT:    cbz x8, .LBB5_2434; CHECK-NEXT:  // %bb.1: // %entry435; CHECK-NEXT:    brk #0x1436; CHECK-NEXT:  .LBB5_2: // %entry437; CHECK-NEXT:    mov x19, x0438; CHECK-NEXT:    bl bar_retv439; CHECK-NEXT:    sub x8, x29, #1088440; CHECK-NEXT:    str z0, [x8, #-1, mul vl] // 16-byte Folded Spill441; CHECK-NEXT:    smstart sm442; CHECK-NEXT:    ldr z0, [x8, #-1, mul vl] // 16-byte Folded Reload443; CHECK-NEXT:    str z0, [x19]444; CHECK-NEXT:    addvl sp, sp, #1445; CHECK-NEXT:    add sp, sp, #1024446; CHECK-NEXT:    .cfi_def_cfa wsp, 1136447; CHECK-NEXT:    ldp d9, d8, [sp, #48] // 16-byte Folded Reload448; CHECK-NEXT:    ldr x19, [sp, #1120] // 8-byte Reload449; CHECK-NEXT:    ldp d11, d10, [sp, #32] // 16-byte Folded Reload450; CHECK-NEXT:    ldr x28, [sp, #1112] // 8-byte Reload451; CHECK-NEXT:    ldr x30, [sp, #1096] // 8-byte Reload452; CHECK-NEXT:    ldr x29, [sp, #1088] // 8-byte Reload453; CHECK-NEXT:    ldp d13, d12, [sp, #16] // 16-byte Folded Reload454; CHECK-NEXT:    ldp d15, d14, [sp] // 16-byte Folded Reload455; CHECK-NEXT:    add sp, sp, #1136456; CHECK-NEXT:    .cfi_def_cfa_offset 0457; CHECK-NEXT:    .cfi_restore w19458; CHECK-NEXT:    .cfi_restore w28459; CHECK-NEXT:    .cfi_restore vg460; CHECK-NEXT:    .cfi_restore w30461; CHECK-NEXT:    .cfi_restore w29462; CHECK-NEXT:    .cfi_restore b8463; CHECK-NEXT:    .cfi_restore b9464; CHECK-NEXT:    .cfi_restore b10465; CHECK-NEXT:    .cfi_restore b11466; CHECK-NEXT:    .cfi_restore b12467; CHECK-NEXT:    .cfi_restore b13468; CHECK-NEXT:    .cfi_restore b14469; CHECK-NEXT:    .cfi_restore b15470; CHECK-NEXT:    ret471entry:472  %v = tail call <vscale x 4 x i32> @bar_retv()473  store <vscale x 4 x i32> %v, ptr %ptr, align 16474  ret void475}476 477attributes #0 = { "aarch64_pstate_sm_enabled" }478attributes #1 = { "aarch64_pstate_sm_compatible" }479