xref: /aosp_15_r20/external/llvm/test/CodeGen/X86/alloca-align-rounding.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1; RUN: llc < %s -march=x86-64 -mtriple=i686-pc-linux -enable-misched=false | FileCheck %s
2; RUN: llc < %s -march=x86-64 -mtriple=x86_64-pc-linux-gnux32 -enable-misched=false | FileCheck %s -check-prefix=X32ABI
3
4declare void @bar(<2 x i64>* %n)
5
6define void @foo(i64 %h) {
7  %p = alloca <2 x i64>, i64 %h
8  call void @bar(<2 x i64>* %p)
9  ret void
10; CHECK-LABEL: foo
11; CHECK-NOT: andq $-32, %rax
12; X32ABI-LABEL: foo
13; X32ABI-NOT: andl $-32, %eax
14}
15
16define void @foo2(i64 %h) {
17  %p = alloca <2 x i64>, i64 %h, align 32
18  call void @bar(<2 x i64>* %p)
19  ret void
20; CHECK-LABEL: foo2
21; CHECK: andq $-32, %rsp
22; CHECK: andq $-32, %rax
23; X32ABI-LABEL: foo2
24; X32ABI: andl $-32, %esp
25; X32ABI: andl $-32, %eax
26}
27
28define void @foo3(i64 %h) {
29  %p = alloca <2 x i64>, i64 %h
30  ret void
31; CHECK-LABEL: foo3
32; CHECK: movq %rbp, %rsp
33; X32ABI-LABEL: foo3
34; X32ABI: movl %ebp, %esp
35}
36