brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.0 KiB · a5b7612 Raw
70 lines · plain
1; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sme -verify-machineinstrs < %s | FileCheck %s2; RUN: llc -mtriple=aarch64-apple-darwin -mattr=+sme -verify-machineinstrs < %s | FileCheck %s --check-prefix=DARWIN3; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sme -verify-machineinstrs -stop-after=finalize-isel < %s | FileCheck %s --check-prefix=CHECK-CSRMASK4; RUN: llc -mtriple=aarch64-apple-darwin -mattr=+sme -verify-machineinstrs -stop-after=finalize-isel < %s | FileCheck %s --check-prefix=CHECK-CSRMASK5 6; Test that the PCS attribute is accepted and uses the correct register mask.7;8 9define void @test_sme_calling_convention_x0() nounwind {10; CHECK-LABEL: test_sme_calling_convention_x0:11; CHECK:       // %bb.0:12; CHECK-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill13; CHECK-NEXT:    bl __arm_tpidr2_save14; CHECK-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload15; CHECK-NEXT:    ret16; DARWIN-LABEL: test_sme_calling_convention_x0:17; DARWIN:    stp	x29, x30, [sp, #-16]!18; DARWIN:    bl ___arm_tpidr2_save19; DARWIN:    ldp	x29, x30, [sp], #1620; DARWIN:    ret21;22; CHECK-CSRMASK-LABEL: name: test_sme_calling_convention_x023; CHECK-CSRMASK: BL @__arm_tpidr2_save, csr_aarch64_sme_abi_support_routines_preservemost_from_x024  call aarch64_sme_preservemost_from_x0 void @__arm_tpidr2_save()25  ret void26}27 28define i64 @test_sme_calling_convention_x1() nounwind {29; CHECK-LABEL: test_sme_calling_convention_x1:30; CHECK:       // %bb.0:31; CHECK-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill32; CHECK-NEXT:    bl __arm_get_current_vg33; CHECK-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload34; CHECK-NEXT:    ret35; DARWIN-LABEL: test_sme_calling_convention_x1:36; DARWIN:    stp        x29, x30, [sp, #-16]!37; DARWIN:    bl ___arm_get_current_vg38; DARWIN:    ldp        x29, x30, [sp], #1639; DARWIN:    ret40;41; CHECK-CSRMASK-LABEL: name: test_sme_calling_convention_x142; CHECK-CSRMASK: BL @__arm_get_current_vg, csr_aarch64_sme_abi_support_routines_preservemost_from_x143  %vg = call aarch64_sme_preservemost_from_x1 i64 @__arm_get_current_vg()44  ret i64 %vg45}46 47define i64 @test_sme_calling_convention_x2() nounwind {48; CHECK-LABEL: test_sme_calling_convention_x2:49; CHECK:       // %bb.0:50; CHECK-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill51; CHECK-NEXT:    bl __arm_sme_state52; CHECK-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload53; CHECK-NEXT:    ret54; DARWIN-LABEL: test_sme_calling_convention_x2:55; DARWIN:    stp	x29, x30, [sp, #-16]!56; DARWIN:    bl ___arm_sme_state57; DARWIN:    ldp	x29, x30, [sp], #1658; DARWIN:    ret59;60; CHECK-CSRMASK-LABEL: name: test_sme_calling_convention_x261; CHECK-CSRMASK: BL @__arm_sme_state, csr_aarch64_sme_abi_support_routines_preservemost_from_x262  %pstate = call aarch64_sme_preservemost_from_x2 {i64, i64} @__arm_sme_state()63  %pstate.sm = extractvalue {i64, i64} %pstate, 064  ret i64 %pstate.sm65}66 67declare aarch64_sme_preservemost_from_x0 void @__arm_tpidr2_save()68declare aarch64_sme_preservemost_from_x1 i64 @__arm_get_current_vg()69declare aarch64_sme_preservemost_from_x2 {i64, i64} @__arm_sme_state()70