mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-21 03:53:04 +02:00
c4ee204f5c
Allocating larger register classes first should give better allocation results (and more importantly for myself, make the lit tests more stable with respect to scheduler changes). Patch by Matthias Braun llvm-svn: 270312
32 lines
1.7 KiB
LLVM
32 lines
1.7 KiB
LLVM
; RUN: llc -mattr=+promote-alloca -verify-machineinstrs -march=amdgcn < %s | FileCheck -check-prefix=GCN -check-prefix=GCN-PROMOTE %s
|
|
; RUN: llc -mattr=+promote-alloca,-flat-for-global -verify-machineinstrs -mtriple=amdgcn--amdhsa -mcpu=kaveri < %s | FileCheck -check-prefix=GCN -check-prefix=GCN-PROMOTE -check-prefix=HSA %s
|
|
; RUN: llc -mattr=-promote-alloca -verify-machineinstrs -march=amdgcn < %s | FileCheck -check-prefix=GCN -check-prefix=GCN-ALLOCA %s
|
|
; RUN: llc -mattr=-promote-alloca,-flat-for-global -verify-machineinstrs -mtriple=amdgcn-amdhsa -mcpu=kaveri < %s | FileCheck -check-prefix=GCN -check-prefix=GCN-ALLOCA -check-prefix=HSA %s
|
|
; RUN: llc -mattr=+promote-alloca -verify-machineinstrs -march=amdgcn -mcpu=tonga < %s | FileCheck -check-prefix=GCN -check-prefix=GCN-PROMOTE %s
|
|
; RUN: llc -mattr=-promote-alloca -verify-machineinstrs -march=amdgcn -mcpu=tonga < %s | FileCheck -check-prefix=GCN -check-prefix=GCN-ALLOCA %s
|
|
|
|
|
|
declare i32 @llvm.amdgcn.workitem.id.x() nounwind readnone
|
|
|
|
|
|
; Make sure we don't overwrite workitem information with private memory
|
|
|
|
; GCN-LABEL: {{^}}work_item_info:
|
|
; GCN-NOT: v0
|
|
; GCN: v_add_i32_e32 [[RESULT:v[0-9]+]], vcc, v0, v{{[0-9]+}}
|
|
; GCN: buffer_store_dword [[RESULT]]
|
|
define void @work_item_info(i32 addrspace(1)* %out, i32 %in) {
|
|
entry:
|
|
%0 = alloca [2 x i32]
|
|
%1 = getelementptr [2 x i32], [2 x i32]* %0, i32 0, i32 0
|
|
%2 = getelementptr [2 x i32], [2 x i32]* %0, i32 0, i32 1
|
|
store i32 0, i32* %1
|
|
store i32 1, i32* %2
|
|
%3 = getelementptr [2 x i32], [2 x i32]* %0, i32 0, i32 %in
|
|
%4 = load i32, i32* %3
|
|
%5 = call i32 @llvm.amdgcn.workitem.id.x()
|
|
%6 = add i32 %4, %5
|
|
store i32 %6, i32 addrspace(1)* %out
|
|
ret void
|
|
}
|