; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 6 ; RUN: llc -verify-machineinstrs -mtriple=aarch64-none-linux-gnu < %s | FileCheck %s ; RUN: llc -verify-machineinstrs -mtriple=aarch64-windows-msvc < %s | FileCheck %s --check-prefix=CHECK-WINDOWS ; The purpose of this test is to verify q8 is assigned a 16-byte aligned offset ; after the x10 is assigned an offset. The CSRs (on Linux) are assigned offsets ; in the order GPRs then FPRs. The stack size of this function is 32 ; (alignTo((16 + 8), 16)), so after x8 is given the offset 24, q8 originally ; would be assigned offset 8, which is not 16-byte aligned. define preserve_allcc void @d(ptr %ptr) nounwind { ; CHECK-LABEL: d: ; CHECK: // %bb.0: // %entry ; CHECK-NEXT: str q8, [sp, #-32]! // 16-byte Folded Spill ; CHECK-NEXT: str x10, [sp, #24] // 8-byte Spill ; CHECK-NEXT: //APP ; CHECK-NEXT: //NO_APP ; CHECK-NEXT: ldr x10, [sp, #24] // 8-byte Reload ; CHECK-NEXT: ldr q8, [sp], #32 // 16-byte Folded Reload ; CHECK-NEXT: ret ; ; CHECK-WINDOWS-LABEL: d: ; CHECK-WINDOWS: // %bb.0: // %entry ; CHECK-WINDOWS-NEXT: str x10, [sp, #-32]! // 8-byte Folded Spill ; CHECK-WINDOWS-NEXT: str q8, [sp, #16] // 16-byte Spill ; CHECK-WINDOWS-NEXT: //APP ; CHECK-WINDOWS-NEXT: //NO_APP ; CHECK-WINDOWS-NEXT: ldr q8, [sp, #16] // 16-byte Reload ; CHECK-WINDOWS-NEXT: ldr x10, [sp], #32 // 8-byte Folded Reload ; CHECK-WINDOWS-NEXT: ret entry: tail call void asm sideeffect "", "~{x10},~{q8}"() ret void }