1; RUN: llc -mtriple=aarch64 -mattr=+sve < %s 2>%t | FileCheck %s --check-prefix=CHECKCG 2; RUN: llc -mtriple=aarch64 -mattr=+sve -stop-after=finalize-isel < %s | FileCheck %s --check-prefix=CHECKISEL 3; RUN: FileCheck --check-prefix=WARN --allow-empty %s <%t 4 5; If this check fails please read test/CodeGen/AArch64/README for instructions on how to resolve it. 6; WARN-NOT: warning 7 8; CHECKCG-LABEL: foo: 9; CHECKCG: addvl sp, sp, #-1 10 11; CHECKISEL-LABEL: name: foo 12; CHECKISEL: stack: 13; CHECKISEL: id: 0, name: ptr, type: default, offset: 0, size: 16, alignment: 16, 14; CHECKISEL-NEXT: stack-id: sve-vec 15define i32 @foo(<vscale x 16 x i8> %val) { 16 %ptr = alloca <vscale x 16 x i8> 17 %res = call i32 @bar(<vscale x 16 x i8>* %ptr) 18 ret i32 %res 19} 20 21declare i32 @bar(<vscale x 16 x i8>* %ptr); 22 23; CHECKCG-LABEL: foo2: 24; CHECKCG: addvl sp, sp, #-2 25 26; CHECKISEL-LABEL: name: foo2 27; CHECKISEL: stack: 28; CHECKISEL: id: 0, name: ptr, type: default, offset: 0, size: 32, alignment: 16, 29; CHECKISEL-NEXT: stack-id: sve-vec 30 31define i32 @foo2(<vscale x 32 x i8> %val) { 32 %ptr = alloca <vscale x 32 x i8>, align 16 33 %res = call i32 @bar2(<vscale x 32 x i8>* %ptr) 34 ret i32 %res 35} 36declare i32 @bar2(<vscale x 32 x i8>* %ptr); 37