blob: 30c0171a225c1383ac774f1a7d62e71b9b1dab3c [file] [log] [blame]
Matt Arsenaultd2c9e082014-07-07 18:34:45 +00001; RUN: llc -march=r600 -mcpu=SI < %s | FileCheck -check-prefix=SI %s
2
Tom Stellard79243d92014-10-01 17:15:17 +00003; SI-LABEL: {{^}}no_reorder_v2f64_global_load_store:
Tom Stellard326d6ec2014-11-05 14:50:53 +00004; SI: buffer_load_dwordx2
5; SI: buffer_load_dwordx2
6; SI: buffer_load_dwordx2
7; SI: buffer_load_dwordx2
8; SI: buffer_store_dwordx2
9; SI: buffer_store_dwordx2
10; SI: buffer_store_dwordx2
11; SI: buffer_store_dwordx2
12; SI: s_endpgm
Matt Arsenaultd2c9e082014-07-07 18:34:45 +000013define void @no_reorder_v2f64_global_load_store(<2 x double> addrspace(1)* nocapture %x, <2 x double> addrspace(1)* nocapture %y) nounwind {
14 %tmp1 = load <2 x double> addrspace(1)* %x, align 16
15 %tmp4 = load <2 x double> addrspace(1)* %y, align 16
16 store <2 x double> %tmp4, <2 x double> addrspace(1)* %x, align 16
17 store <2 x double> %tmp1, <2 x double> addrspace(1)* %y, align 16
18 ret void
19}
20
Tom Stellard79243d92014-10-01 17:15:17 +000021; SI-LABEL: {{^}}no_reorder_scalarized_v2f64_local_load_store:
Tom Stellard326d6ec2014-11-05 14:50:53 +000022; SI: ds_read_b64
23; SI: ds_read_b64
24; SI: ds_write_b64
25; SI: ds_write_b64
26; SI: s_endpgm
Matt Arsenaultd2c9e082014-07-07 18:34:45 +000027define void @no_reorder_scalarized_v2f64_local_load_store(<2 x double> addrspace(3)* nocapture %x, <2 x double> addrspace(3)* nocapture %y) nounwind {
28 %tmp1 = load <2 x double> addrspace(3)* %x, align 16
29 %tmp4 = load <2 x double> addrspace(3)* %y, align 16
30 store <2 x double> %tmp4, <2 x double> addrspace(3)* %x, align 16
31 store <2 x double> %tmp1, <2 x double> addrspace(3)* %y, align 16
32 ret void
33}
34
Tom Stellard79243d92014-10-01 17:15:17 +000035; SI-LABEL: {{^}}no_reorder_split_v8i32_global_load_store:
Tom Stellard326d6ec2014-11-05 14:50:53 +000036; SI: buffer_load_dword
37; SI: buffer_load_dword
38; SI: buffer_load_dword
39; SI: buffer_load_dword
Matt Arsenaultd2c9e082014-07-07 18:34:45 +000040
Tom Stellard326d6ec2014-11-05 14:50:53 +000041; SI: buffer_load_dword
42; SI: buffer_load_dword
43; SI: buffer_load_dword
44; SI: buffer_load_dword
Matt Arsenaultd2c9e082014-07-07 18:34:45 +000045
Tom Stellard326d6ec2014-11-05 14:50:53 +000046; SI: buffer_load_dword
47; SI: buffer_load_dword
48; SI: buffer_load_dword
49; SI: buffer_load_dword
Matt Arsenaultd2c9e082014-07-07 18:34:45 +000050
Tom Stellard326d6ec2014-11-05 14:50:53 +000051; SI: buffer_load_dword
52; SI: buffer_load_dword
53; SI: buffer_load_dword
54; SI: buffer_load_dword
Matt Arsenaultd2c9e082014-07-07 18:34:45 +000055
56
Tom Stellard326d6ec2014-11-05 14:50:53 +000057; SI: buffer_store_dword
58; SI: buffer_store_dword
59; SI: buffer_store_dword
60; SI: buffer_store_dword
Matt Arsenaultd2c9e082014-07-07 18:34:45 +000061
Tom Stellard326d6ec2014-11-05 14:50:53 +000062; SI: buffer_store_dword
63; SI: buffer_store_dword
64; SI: buffer_store_dword
65; SI: buffer_store_dword
Matt Arsenaultd2c9e082014-07-07 18:34:45 +000066
Tom Stellard326d6ec2014-11-05 14:50:53 +000067; SI: buffer_store_dword
68; SI: buffer_store_dword
69; SI: buffer_store_dword
70; SI: buffer_store_dword
Matt Arsenaultd2c9e082014-07-07 18:34:45 +000071
Tom Stellard326d6ec2014-11-05 14:50:53 +000072; SI: buffer_store_dword
73; SI: buffer_store_dword
74; SI: buffer_store_dword
75; SI: buffer_store_dword
76; SI: s_endpgm
Matt Arsenaultd2c9e082014-07-07 18:34:45 +000077define void @no_reorder_split_v8i32_global_load_store(<8 x i32> addrspace(1)* nocapture %x, <8 x i32> addrspace(1)* nocapture %y) nounwind {
78 %tmp1 = load <8 x i32> addrspace(1)* %x, align 32
79 %tmp4 = load <8 x i32> addrspace(1)* %y, align 32
80 store <8 x i32> %tmp4, <8 x i32> addrspace(1)* %x, align 32
81 store <8 x i32> %tmp1, <8 x i32> addrspace(1)* %y, align 32
82 ret void
83}
84
Tom Stellard79243d92014-10-01 17:15:17 +000085; SI-LABEL: {{^}}no_reorder_extload_64:
Tom Stellard326d6ec2014-11-05 14:50:53 +000086; SI: ds_read_b64
87; SI: ds_read_b64
88; SI: ds_write_b64
89; SI-NOT: ds_read
90; SI: ds_write_b64
91; SI: s_endpgm
Matt Arsenaultd2c9e082014-07-07 18:34:45 +000092define void @no_reorder_extload_64(<2 x i32> addrspace(3)* nocapture %x, <2 x i32> addrspace(3)* nocapture %y) nounwind {
93 %tmp1 = load <2 x i32> addrspace(3)* %x, align 8
94 %tmp4 = load <2 x i32> addrspace(3)* %y, align 8
95 %tmp1ext = zext <2 x i32> %tmp1 to <2 x i64>
96 %tmp4ext = zext <2 x i32> %tmp4 to <2 x i64>
97 %tmp7 = add <2 x i64> %tmp1ext, <i64 1, i64 1>
98 %tmp9 = add <2 x i64> %tmp4ext, <i64 1, i64 1>
99 %trunctmp9 = trunc <2 x i64> %tmp9 to <2 x i32>
100 %trunctmp7 = trunc <2 x i64> %tmp7 to <2 x i32>
101 store <2 x i32> %trunctmp9, <2 x i32> addrspace(3)* %x, align 8
102 store <2 x i32> %trunctmp7, <2 x i32> addrspace(3)* %y, align 8
103 ret void
104}