summaryrefslogtreecommitdiffstats
path: root/llvm/test/Analysis
diff options
context:
space:
mode:
authorMatt Arsenault <Matthew.Arsenault@amd.com>2019-06-03 18:41:34 +0000
committerMatt Arsenault <Matthew.Arsenault@amd.com>2019-06-03 18:41:34 +0000
commit8dbeb9256cb60fe551fdcbd40580589ffce59e37 (patch)
treea472f6f29858ad482372fcf2d8548c798e0a1003 /llvm/test/Analysis
parentbf37536a351a2db55efe830437866010ae050eea (diff)
downloadbcm5719-llvm-8dbeb9256cb60fe551fdcbd40580589ffce59e37.tar.gz
bcm5719-llvm-8dbeb9256cb60fe551fdcbd40580589ffce59e37.zip
TTI: Improve default costs for addrspacecast
For some reason multiple places need to do this, and the variant the loop unroller and inliner use was not handling it. Also, introduce a new wrapper to be slightly more precise, since on AMDGPU some addrspacecasts are free, but not no-ops. llvm-svn: 362436
Diffstat (limited to 'llvm/test/Analysis')
-rw-r--r--llvm/test/Analysis/CostModel/AMDGPU/addrspacecast.ll33
1 files changed, 27 insertions, 6 deletions
diff --git a/llvm/test/Analysis/CostModel/AMDGPU/addrspacecast.ll b/llvm/test/Analysis/CostModel/AMDGPU/addrspacecast.ll
index ddb31482adc..f15ab500a9e 100644
--- a/llvm/test/Analysis/CostModel/AMDGPU/addrspacecast.ll
+++ b/llvm/test/Analysis/CostModel/AMDGPU/addrspacecast.ll
@@ -1,45 +1,66 @@
; RUN: opt -cost-model -analyze -mtriple=amdgcn-unknown-amdhsa -mcpu=kaveri < %s | FileCheck %s
-; CHECK: 'addrspacecast_global_to_flat'
+; CHECK-LABEL: 'addrspacecast_global_to_flat'
; CHECK: estimated cost of 0 for {{.*}} addrspacecast i8 addrspace(1)* %ptr to i8*
define i8* @addrspacecast_global_to_flat(i8 addrspace(1)* %ptr) #0 {
%cast = addrspacecast i8 addrspace(1)* %ptr to i8*
ret i8* %cast
}
-; CHECK: 'addrspacecast_global_to_flat_v2'
+; CHECK-LABEL: 'addrspacecast_global_to_flat_v2'
; CHECK: estimated cost of 0 for {{.*}} addrspacecast <2 x i8 addrspace(1)*> %ptr to <2 x i8*>
define <2 x i8*> @addrspacecast_global_to_flat_v2(<2 x i8 addrspace(1)*> %ptr) #0 {
%cast = addrspacecast <2 x i8 addrspace(1)*> %ptr to <2 x i8*>
ret <2 x i8*> %cast
}
-; CHECK: 'addrspacecast_global_to_flat_v32'
+; CHECK-LABEL: 'addrspacecast_global_to_flat_v32'
; CHECK: estimated cost of 0 for {{.*}} addrspacecast <32 x i8 addrspace(1)*> %ptr to <32 x i8*>
define <32 x i8*> @addrspacecast_global_to_flat_v32(<32 x i8 addrspace(1)*> %ptr) #0 {
%cast = addrspacecast <32 x i8 addrspace(1)*> %ptr to <32 x i8*>
ret <32 x i8*> %cast
}
-; CHECK: 'addrspacecast_local_to_flat'
+; CHECK-LABEL: 'addrspacecast_local_to_flat'
; CHECK: estimated cost of 1 for {{.*}} addrspacecast i8 addrspace(3)* %ptr to i8*
define i8* @addrspacecast_local_to_flat(i8 addrspace(3)* %ptr) #0 {
%cast = addrspacecast i8 addrspace(3)* %ptr to i8*
ret i8* %cast
}
-; CHECK: 'addrspacecast_local_to_flat_v2'
+; CHECK-LABEL: 'addrspacecast_local_to_flat_v2'
; CHECK: estimated cost of 2 for {{.*}} addrspacecast <2 x i8 addrspace(3)*> %ptr to <2 x i8*>
define <2 x i8*> @addrspacecast_local_to_flat_v2(<2 x i8 addrspace(3)*> %ptr) #0 {
%cast = addrspacecast <2 x i8 addrspace(3)*> %ptr to <2 x i8*>
ret <2 x i8*> %cast
}
-; CHECK: 'addrspacecast_local_to_flat_v32'
+; CHECK-LABEL: 'addrspacecast_local_to_flat_v32'
; CHECK: estimated cost of 32 for {{.*}} addrspacecast <32 x i8 addrspace(3)*> %ptr to <32 x i8*>
define <32 x i8*> @addrspacecast_local_to_flat_v32(<32 x i8 addrspace(3)*> %ptr) #0 {
%cast = addrspacecast <32 x i8 addrspace(3)*> %ptr to <32 x i8*>
ret <32 x i8*> %cast
}
+; CHECK-LABEL: 'addrspacecast_flat_to_local'
+; CHECK: estimated cost of 0 for {{.*}} addrspacecast i8* %ptr to i8 addrspace(3)*
+define i8 addrspace(3)* @addrspacecast_flat_to_local(i8* %ptr) #0 {
+ %cast = addrspacecast i8* %ptr to i8 addrspace(3)*
+ ret i8 addrspace(3)* %cast
+}
+
+; CHECK-LABEL: 'addrspacecast_flat_to_local_v2'
+; CHECK: estimated cost of 0 for {{.*}} addrspacecast <2 x i8*> %ptr to <2 x i8 addrspace(3)*>
+define <2 x i8 addrspace(3)*> @addrspacecast_flat_to_local_v2(<2 x i8*> %ptr) #0 {
+ %cast = addrspacecast <2 x i8*> %ptr to <2 x i8 addrspace(3)*>
+ ret <2 x i8 addrspace(3)*> %cast
+}
+
+; CHECK-LABEL: 'addrspacecast_flat_to_local_v32'
+; CHECK: estimated cost of 0 for {{.*}} addrspacecast <32 x i8*> %ptr to <32 x i8 addrspace(3)*>
+define <32 x i8 addrspace(3)*> @addrspacecast_flat_to_local_v32(<32 x i8*> %ptr) #0 {
+ %cast = addrspacecast <32 x i8*> %ptr to <32 x i8 addrspace(3)*>
+ ret <32 x i8 addrspace(3)*> %cast
+}
+
attributes #0 = { nounwind readnone }
OpenPOWER on IntegriCloud