blob: 7efb5cd7df6d706ab6562244f5a302ba639345b8 [file] [log] [blame]
Matt Arsenaultc10853f2014-08-06 00:29:43 +00001; RUN: llc -march=r600 -mcpu=SI -verify-machineinstrs < %s | FileCheck %s
Matt Arsenault37d42ec2013-09-06 00:18:43 +00002
3; Test that codegenprepare understands address space sizes
4
5%struct.foo = type { [3 x float], [3 x float] }
6
Matt Arsenault99ed7892014-03-19 22:19:49 +00007; FIXME: Extra V_MOV from SGPR to VGPR for second read. The address is
8; already in a VGPR after the first read.
9
Tom Stellard79243d92014-10-01 17:15:17 +000010; CHECK-LABEL: {{^}}do_as_ptr_calcs:
Matt Arsenault99ed7892014-03-19 22:19:49 +000011; CHECK: S_LOAD_DWORD [[SREG1:s[0-9]+]],
Matt Arsenault43b8e4e2013-11-18 20:09:29 +000012; CHECK: V_MOV_B32_e32 [[VREG1:v[0-9]+]], [[SREG1]]
Matt Arsenaultc10853f2014-08-06 00:29:43 +000013; CHECK-DAG: DS_READ_B32 v{{[0-9]+}}, [[VREG1]], 0xc
14; CHECK-DAG: DS_READ_B32 v{{[0-9]+}}, v{{[0-9]+}}, 0x14
Matt Arsenault37d42ec2013-09-06 00:18:43 +000015define void @do_as_ptr_calcs(%struct.foo addrspace(3)* nocapture %ptr) nounwind {
16entry:
17 %x = getelementptr inbounds %struct.foo addrspace(3)* %ptr, i32 0, i32 1, i32 0
18 %y = getelementptr inbounds %struct.foo addrspace(3)* %ptr, i32 0, i32 1, i32 2
19 br label %bb32
20
21bb32:
22 %a = load float addrspace(3)* %x, align 4
23 %b = load float addrspace(3)* %y, align 4
24 %cmp = fcmp one float %a, %b
25 br i1 %cmp, label %bb34, label %bb33
26
27bb33:
28 unreachable
29
30bb34:
31 unreachable
32}
33
34