blob: 1fc616a4ed42a06586820a826cd009b5cb929329 [file] [log] [blame]
Matt Arsenault37d42ec2013-09-06 00:18:43 +00001; RUN: llc -march=r600 -mcpu=SI < %s | FileCheck %s
2
3; Test that codegenprepare understands address space sizes
4
5%struct.foo = type { [3 x float], [3 x float] }
6
7; CHECK-LABEL: @do_as_ptr_calcs:
Matt Arsenault43b8e4e2013-11-18 20:09:29 +00008; CHECK: S_ADD_I32 {{s[0-9]+}},
9; CHECK: S_ADD_I32 [[SREG1:s[0-9]+]],
10; CHECK: V_MOV_B32_e32 [[VREG1:v[0-9]+]], [[SREG1]]
11; CHECK: DS_READ_B32 [[VREG1]],
Matt Arsenault37d42ec2013-09-06 00:18:43 +000012define void @do_as_ptr_calcs(%struct.foo addrspace(3)* nocapture %ptr) nounwind {
13entry:
14 %x = getelementptr inbounds %struct.foo addrspace(3)* %ptr, i32 0, i32 1, i32 0
15 %y = getelementptr inbounds %struct.foo addrspace(3)* %ptr, i32 0, i32 1, i32 2
16 br label %bb32
17
18bb32:
19 %a = load float addrspace(3)* %x, align 4
20 %b = load float addrspace(3)* %y, align 4
21 %cmp = fcmp one float %a, %b
22 br i1 %cmp, label %bb34, label %bb33
23
24bb33:
25 unreachable
26
27bb34:
28 unreachable
29}
30
31