mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-03 17:31:50 +00:00
[Hexagon] Add testcases for stack alignment and variable-sized objects
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@235602 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
b685acfe78
commit
69c69df308
21
test/CodeGen/Hexagon/stack-align1.ll
Normal file
21
test/CodeGen/Hexagon/stack-align1.ll
Normal file
@ -0,0 +1,21 @@
|
||||
; RUN: llc -O0 -march=hexagon < %s | FileCheck %s
|
||||
; CHECK: and(r29, #-32)
|
||||
; CHECK-DAG: add(r29, #0)
|
||||
; CHECK-DAG: add(r29, #28)
|
||||
|
||||
target triple = "hexagon-unknown-unknown"
|
||||
|
||||
; Function Attrs: nounwind uwtable
|
||||
define void @foo() #0 {
|
||||
entry:
|
||||
%x = alloca i32, align 4
|
||||
%y = alloca i32, align 32
|
||||
%0 = bitcast i32* %x to i8*
|
||||
%1 = bitcast i32* %y to i8*
|
||||
call void @bar(i8* %0, i8* %1)
|
||||
ret void
|
||||
}
|
||||
|
||||
declare void @bar(i8*, i8*) #0
|
||||
|
||||
attributes #0 = { nounwind }
|
27
test/CodeGen/Hexagon/stack-align2.ll
Normal file
27
test/CodeGen/Hexagon/stack-align2.ll
Normal file
@ -0,0 +1,27 @@
|
||||
; RUN: llc -O0 -march=hexagon < %s | FileCheck %s
|
||||
; CHECK: and(r29, #-128)
|
||||
; CHECK-DAG: add(r29, #0)
|
||||
; CHECK-DAG: add(r29, #64)
|
||||
; CHECK-DAG: add(r29, #96)
|
||||
; CHECK-DAG: add(r29, #124)
|
||||
|
||||
target triple = "hexagon-unknown-unknown"
|
||||
|
||||
; Function Attrs: nounwind uwtable
|
||||
define void @foo() #0 {
|
||||
entry:
|
||||
%x = alloca i32, align 4
|
||||
%y = alloca i32, align 32
|
||||
%z = alloca i32, align 64
|
||||
%w = alloca i32, align 128
|
||||
%0 = bitcast i32* %x to i8*
|
||||
%1 = bitcast i32* %y to i8*
|
||||
%2 = bitcast i32* %z to i8*
|
||||
%3 = bitcast i32* %w to i8*
|
||||
call void @bar(i8* %0, i8* %1, i8* %2, i8* %3)
|
||||
ret void
|
||||
}
|
||||
|
||||
declare void @bar(i8*, i8*, i8*, i8*) #0
|
||||
|
||||
attributes #0 = { nounwind }
|
18
test/CodeGen/Hexagon/stack-alloca1.ll
Normal file
18
test/CodeGen/Hexagon/stack-alloca1.ll
Normal file
@ -0,0 +1,18 @@
|
||||
; RUN: llc -O0 -march=hexagon < %s | FileCheck %s
|
||||
; CHECK: sub(r29, r[[REG:[0-9]+]])
|
||||
; CHECK: r29 = r[[REG]]
|
||||
|
||||
target triple = "hexagon-unknown-unknown"
|
||||
|
||||
; Function Attrs: nounwind uwtable
|
||||
define void @foo(i32 %n) #0 {
|
||||
entry:
|
||||
%x = alloca i32, i32 %n
|
||||
%0 = bitcast i32* %x to i8*
|
||||
call void @bar(i8* %0)
|
||||
ret void
|
||||
}
|
||||
|
||||
declare void @bar(i8*) #0
|
||||
|
||||
attributes #0 = { nounwind }
|
23
test/CodeGen/Hexagon/stack-alloca2.ll
Normal file
23
test/CodeGen/Hexagon/stack-alloca2.ll
Normal file
@ -0,0 +1,23 @@
|
||||
; RUN: llc -O0 -march=hexagon < %s | FileCheck %s
|
||||
; CHECK-DAG: r[[AP:[0-9]+]] = and(r30, #-32)
|
||||
; CHECK-DAG: r1 = add(r[[AP]], #-32)
|
||||
|
||||
; CHECK-DAG: sub(r29, r[[SP:[0-9]+]])
|
||||
; CHECK-DAG: r29 = r[[SP]]
|
||||
|
||||
target triple = "hexagon-unknown-unknown"
|
||||
|
||||
; Function Attrs: nounwind uwtable
|
||||
define void @foo(i32 %n) #0 {
|
||||
entry:
|
||||
%x = alloca i32, i32 %n
|
||||
%y = alloca i32, align 32
|
||||
%0 = bitcast i32* %x to i8*
|
||||
%1 = bitcast i32* %y to i8*
|
||||
call void @bar(i8* %0, i8* %1)
|
||||
ret void
|
||||
}
|
||||
|
||||
declare void @bar(i8*, i8* %y) #0
|
||||
|
||||
attributes #0 = { nounwind }
|
Loading…
Reference in New Issue
Block a user