diff options
| author | Matt Arsenault <Matthew.Arsenault@amd.com> | 2019-06-03 18:41:34 +0000 |
|---|---|---|
| committer | Matt Arsenault <Matthew.Arsenault@amd.com> | 2019-06-03 18:41:34 +0000 |
| commit | 8dbeb9256cb60fe551fdcbd40580589ffce59e37 (patch) | |
| tree | a472f6f29858ad482372fcf2d8548c798e0a1003 /llvm/test/Analysis | |
| parent | bf37536a351a2db55efe830437866010ae050eea (diff) | |
| download | bcm5719-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.ll | 33 |
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 } |

