brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.5 KiB · afd56d1 Raw
173 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 42; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sme2 < %s | FileCheck %s --check-prefixes=CHECK-COMMON,CHECK3; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sme2 -aarch64-new-sme-abi < %s | FileCheck %s --check-prefixes=CHECK-COMMON,CHECK-NEWLOWERING4 5define i32 @no_tpidr2_save_required() "aarch64_inout_za" {6; CHECK-COMMON-LABEL: no_tpidr2_save_required:7; CHECK-COMMON:       // %bb.0: // %entry8; CHECK-COMMON-NEXT:    mov w0, #42 // =0x2a9; CHECK-COMMON-NEXT:    ret10entry:11  ret i32 4212}13 14define float @multi_bb_stpidr2_save_required(i32 %a, float %b, float %c) "aarch64_inout_za" {15; CHECK-COMMON-LABEL: multi_bb_stpidr2_save_required:16; CHECK-COMMON:       // %bb.0:17; CHECK-COMMON-NEXT:    stp x29, x30, [sp, #-16]! // 16-byte Folded Spill18; CHECK-COMMON-NEXT:    mov x29, sp19; CHECK-COMMON-NEXT:    sub sp, sp, #1620; CHECK-COMMON-NEXT:    .cfi_def_cfa w29, 1621; CHECK-COMMON-NEXT:    .cfi_offset w30, -822; CHECK-COMMON-NEXT:    .cfi_offset w29, -1623; CHECK-COMMON-NEXT:    rdsvl x8, #124; CHECK-COMMON-NEXT:    mov x9, sp25; CHECK-COMMON-NEXT:    msub x9, x8, x8, x926; CHECK-COMMON-NEXT:    mov sp, x927; CHECK-COMMON-NEXT:    stp x9, x8, [x29, #-16]28; CHECK-COMMON-NEXT:    cbz w0, .LBB1_229; CHECK-COMMON-NEXT:  // %bb.1: // %use_b30; CHECK-COMMON-NEXT:    fmov s1, #4.0000000031; CHECK-COMMON-NEXT:    fadd s0, s0, s132; CHECK-COMMON-NEXT:    b .LBB1_533; CHECK-COMMON-NEXT:  .LBB1_2: // %use_c34; CHECK-COMMON-NEXT:    fmov s0, s135; CHECK-COMMON-NEXT:    sub x8, x29, #1636; CHECK-COMMON-NEXT:    msr TPIDR2_EL0, x837; CHECK-COMMON-NEXT:    bl cosf38; CHECK-COMMON-NEXT:    smstart za39; CHECK-COMMON-NEXT:    mrs x8, TPIDR2_EL040; CHECK-COMMON-NEXT:    sub x0, x29, #1641; CHECK-COMMON-NEXT:    cbnz x8, .LBB1_442; CHECK-COMMON-NEXT:  // %bb.3: // %use_c43; CHECK-COMMON-NEXT:    bl __arm_tpidr2_restore44; CHECK-COMMON-NEXT:  .LBB1_4: // %use_c45; CHECK-COMMON-NEXT:    msr TPIDR2_EL0, xzr46; CHECK-COMMON-NEXT:  .LBB1_5: // %exit47; CHECK-COMMON-NEXT:    mov sp, x2948; CHECK-COMMON-NEXT:    ldp x29, x30, [sp], #16 // 16-byte Folded Reload49; CHECK-COMMON-NEXT:    ret50  %cmp = icmp ne i32 %a, 051  br i1 %cmp, label %use_b, label %use_c52 53use_b:54  %faddr = fadd float %b, 4.055  br label %exit56 57use_c:58  %res2 = call float @llvm.cos.f32(float %c)59  br label %exit60 61exit:62  %ret = phi float [%faddr, %use_b], [%res2, %use_c]63  ret float %ret64}65 66define float @multi_bb_stpidr2_save_required_stackprobe(i32 %a, float %b, float %c) "aarch64_inout_za" "probe-stack"="inline-asm" "stack-probe-size"="65536" {67; CHECK-LABEL: multi_bb_stpidr2_save_required_stackprobe:68; CHECK:       // %bb.0:69; CHECK-NEXT:    stp x29, x30, [sp, #-16]! // 16-byte Folded Spill70; CHECK-NEXT:    mov x29, sp71; CHECK-NEXT:    str xzr, [sp, #-16]!72; CHECK-NEXT:    .cfi_def_cfa w29, 1673; CHECK-NEXT:    .cfi_offset w30, -874; CHECK-NEXT:    .cfi_offset w29, -1675; CHECK-NEXT:    rdsvl x8, #176; CHECK-NEXT:    mov x9, sp77; CHECK-NEXT:    msub x9, x8, x8, x978; CHECK-NEXT:  .LBB2_1: // =>This Inner Loop Header: Depth=179; CHECK-NEXT:    sub sp, sp, #16, lsl #12 // =6553680; CHECK-NEXT:    cmp sp, x981; CHECK-NEXT:    b.le .LBB2_382; CHECK-NEXT:  // %bb.2: // in Loop: Header=BB2_1 Depth=183; CHECK-NEXT:    str xzr, [sp]84; CHECK-NEXT:    b .LBB2_185; CHECK-NEXT:  .LBB2_3:86; CHECK-NEXT:    mov sp, x987; CHECK-NEXT:    ldr xzr, [sp]88; CHECK-NEXT:    stp x9, x8, [x29, #-16]89; CHECK-NEXT:    cbz w0, .LBB2_590; CHECK-NEXT:  // %bb.4: // %use_b91; CHECK-NEXT:    fmov s1, #4.0000000092; CHECK-NEXT:    fadd s0, s0, s193; CHECK-NEXT:    b .LBB2_894; CHECK-NEXT:  .LBB2_5: // %use_c95; CHECK-NEXT:    fmov s0, s196; CHECK-NEXT:    sub x8, x29, #1697; CHECK-NEXT:    msr TPIDR2_EL0, x898; CHECK-NEXT:    bl cosf99; CHECK-NEXT:    smstart za100; CHECK-NEXT:    mrs x8, TPIDR2_EL0101; CHECK-NEXT:    sub x0, x29, #16102; CHECK-NEXT:    cbnz x8, .LBB2_7103; CHECK-NEXT:  // %bb.6: // %use_c104; CHECK-NEXT:    bl __arm_tpidr2_restore105; CHECK-NEXT:  .LBB2_7: // %use_c106; CHECK-NEXT:    msr TPIDR2_EL0, xzr107; CHECK-NEXT:  .LBB2_8: // %exit108; CHECK-NEXT:    mov sp, x29109; CHECK-NEXT:    ldp x29, x30, [sp], #16 // 16-byte Folded Reload110; CHECK-NEXT:    ret111;112; CHECK-NEWLOWERING-LABEL: multi_bb_stpidr2_save_required_stackprobe:113; CHECK-NEWLOWERING:       // %bb.0:114; CHECK-NEWLOWERING-NEXT:    stp x29, x30, [sp, #-16]! // 16-byte Folded Spill115; CHECK-NEWLOWERING-NEXT:    mov x29, sp116; CHECK-NEWLOWERING-NEXT:    str xzr, [sp, #-16]!117; CHECK-NEWLOWERING-NEXT:    .cfi_def_cfa w29, 16118; CHECK-NEWLOWERING-NEXT:    .cfi_offset w30, -8119; CHECK-NEWLOWERING-NEXT:    .cfi_offset w29, -16120; CHECK-NEWLOWERING-NEXT:    rdsvl x8, #1121; CHECK-NEWLOWERING-NEXT:    mov x9, sp122; CHECK-NEWLOWERING-NEXT:    sub x10, x29, #16123; CHECK-NEWLOWERING-NEXT:    msub x9, x8, x8, x9124; CHECK-NEWLOWERING-NEXT:    msr TPIDR2_EL0, x10125; CHECK-NEWLOWERING-NEXT:  .LBB2_1: // =>This Inner Loop Header: Depth=1126; CHECK-NEWLOWERING-NEXT:    sub sp, sp, #16, lsl #12 // =65536127; CHECK-NEWLOWERING-NEXT:    cmp sp, x9128; CHECK-NEWLOWERING-NEXT:    b.le .LBB2_3129; CHECK-NEWLOWERING-NEXT:  // %bb.2: // in Loop: Header=BB2_1 Depth=1130; CHECK-NEWLOWERING-NEXT:    str xzr, [sp]131; CHECK-NEWLOWERING-NEXT:    b .LBB2_1132; CHECK-NEWLOWERING-NEXT:  .LBB2_3:133; CHECK-NEWLOWERING-NEXT:    mov sp, x9134; CHECK-NEWLOWERING-NEXT:    ldr xzr, [sp]135; CHECK-NEWLOWERING-NEXT:    stp x9, x8, [x29, #-16]136; CHECK-NEWLOWERING-NEXT:    cbz w0, .LBB2_5137; CHECK-NEWLOWERING-NEXT:  // %bb.4: // %use_b138; CHECK-NEWLOWERING-NEXT:    fmov s1, #4.00000000139; CHECK-NEWLOWERING-NEXT:    fadd s0, s0, s1140; CHECK-NEWLOWERING-NEXT:    b .LBB2_6141; CHECK-NEWLOWERING-NEXT:  .LBB2_5: // %use_c142; CHECK-NEWLOWERING-NEXT:    fmov s0, s1143; CHECK-NEWLOWERING-NEXT:    bl cosf144; CHECK-NEWLOWERING-NEXT:  .LBB2_6: // %exit145; CHECK-NEWLOWERING-NEXT:    smstart za146; CHECK-NEWLOWERING-NEXT:    mrs x8, TPIDR2_EL0147; CHECK-NEWLOWERING-NEXT:    sub x0, x29, #16148; CHECK-NEWLOWERING-NEXT:    cbnz x8, .LBB2_8149; CHECK-NEWLOWERING-NEXT:  // %bb.7: // %exit150; CHECK-NEWLOWERING-NEXT:    bl __arm_tpidr2_restore151; CHECK-NEWLOWERING-NEXT:  .LBB2_8: // %exit152; CHECK-NEWLOWERING-NEXT:    msr TPIDR2_EL0, xzr153; CHECK-NEWLOWERING-NEXT:    mov sp, x29154; CHECK-NEWLOWERING-NEXT:    ldp x29, x30, [sp], #16 // 16-byte Folded Reload155; CHECK-NEWLOWERING-NEXT:    ret156  %cmp = icmp ne i32 %a, 0157  br i1 %cmp, label %use_b, label %use_c158 159use_b:160  %faddr = fadd float %b, 4.0161  br label %exit162 163use_c:164  %res2 = call float @llvm.cos.f32(float %c)165  br label %exit166 167exit:168  %ret = phi float [%faddr, %use_b], [%res2, %use_c]169  ret float %ret170}171 172declare float @llvm.cos.f32(float)173