1; RUN: llc -march=r600 -mcpu=redwood -debug-only=r600cf %s -o - 2>&1 | FileCheck %s --check-prefix=BUG64 --check-prefix=FUNC 2; RUN: llc -march=r600 -mcpu=sumo -debug-only=r600cf %s -o - 2>&1 | FileCheck %s --check-prefix=BUG64 --check-prefix=FUNC 3; RUN: llc -march=r600 -mcpu=barts -debug-only=r600cf %s -o - 2>&1 | FileCheck %s --check-prefix=BUG64 --check-prefix=FUNC 4; RUN: llc -march=r600 -mcpu=turks -debug-only=r600cf %s -o - 2>&1 | FileCheck %s --check-prefix=BUG64 --check-prefix=FUNC 5; RUN: llc -march=r600 -mcpu=caicos -debug-only=r600cf %s -o - 2>&1 | FileCheck %s --check-prefix=BUG64 --check-prefix=FUNC 6; RUN: llc -march=r600 -mcpu=cedar -debug-only=r600cf %s -o - 2>&1 | FileCheck %s --check-prefix=BUG32 --check-prefix=FUNC 7; RUN: llc -march=r600 -mcpu=juniper -debug-only=r600cf %s -o - 2>&1 | FileCheck %s --check-prefix=NOBUG --check-prefix=FUNC 8; RUN: llc -march=r600 -mcpu=cypress -debug-only=r600cf %s -o - 2>&1 | FileCheck %s --check-prefix=NOBUG --check-prefix=FUNC 9; RUN: llc -march=r600 -mcpu=cayman -debug-only=r600cf %s -o - 2>&1 | FileCheck %s --check-prefix=NOBUG --check-prefix=FUNC 10 11; REQUIRES: asserts 12 13; We are currently allocating 2 extra sub-entries on Evergreen / NI for 14; non-WQM push instructions if we change this to 1, then we will need to 15; add one level of depth to each of these tests. 16 17; BUG64-NOT: Applying bug work-around 18; BUG32-NOT: Applying bug work-around 19; NOBUG-NOT: Applying bug work-around 20; FUNC-LABEL: {{^}}nested3: 21define void @nested3(i32 addrspace(1)* %out, i32 %cond) { 22entry: 23 %0 = icmp sgt i32 %cond, 0 24 br i1 %0, label %if.1, label %end 25 26if.1: 27 %1 = icmp sgt i32 %cond, 10 28 br i1 %1, label %if.2, label %if.store.1 29 30if.store.1: 31 store i32 1, i32 addrspace(1)* %out 32 br label %end 33 34if.2: 35 %2 = icmp sgt i32 %cond, 20 36 br i1 %2, label %if.3, label %if.2.store 37 38if.2.store: 39 store i32 2, i32 addrspace(1)* %out 40 br label %end 41 42if.3: 43 store i32 3, i32 addrspace(1)* %out 44 br label %end 45 46end: 47 ret void 48} 49 50; BUG64: Applying bug work-around 51; BUG32-NOT: Applying bug work-around 52; NOBUG-NOT: Applying bug work-around 53; FUNC-LABEL: {{^}}nested4: 54define void @nested4(i32 addrspace(1)* %out, i32 %cond) { 55entry: 56 %0 = icmp sgt i32 %cond, 0 57 br i1 %0, label %if.1, label %end 58 59if.1: 60 %1 = icmp sgt i32 %cond, 10 61 br i1 %1, label %if.2, label %if.1.store 62 63if.1.store: 64 store i32 1, i32 addrspace(1)* %out 65 br label %end 66 67if.2: 68 %2 = icmp sgt i32 %cond, 20 69 br i1 %2, label %if.3, label %if.2.store 70 71if.2.store: 72 store i32 2, i32 addrspace(1)* %out 73 br label %end 74 75if.3: 76 %3 = icmp sgt i32 %cond, 30 77 br i1 %3, label %if.4, label %if.3.store 78 79if.3.store: 80 store i32 3, i32 addrspace(1)* %out 81 br label %end 82 83if.4: 84 store i32 4, i32 addrspace(1)* %out 85 br label %end 86 87end: 88 ret void 89} 90 91; BUG64: Applying bug work-around 92; BUG32-NOT: Applying bug work-around 93; NOBUG-NOT: Applying bug work-around 94; FUNC-LABEL: {{^}}nested7: 95define void @nested7(i32 addrspace(1)* %out, i32 %cond) { 96entry: 97 %0 = icmp sgt i32 %cond, 0 98 br i1 %0, label %if.1, label %end 99 100if.1: 101 %1 = icmp sgt i32 %cond, 10 102 br i1 %1, label %if.2, label %if.1.store 103 104if.1.store: 105 store i32 1, i32 addrspace(1)* %out 106 br label %end 107 108if.2: 109 %2 = icmp sgt i32 %cond, 20 110 br i1 %2, label %if.3, label %if.2.store 111 112if.2.store: 113 store i32 2, i32 addrspace(1)* %out 114 br label %end 115 116if.3: 117 %3 = icmp sgt i32 %cond, 30 118 br i1 %3, label %if.4, label %if.3.store 119 120if.3.store: 121 store i32 3, i32 addrspace(1)* %out 122 br label %end 123 124if.4: 125 %4 = icmp sgt i32 %cond, 40 126 br i1 %4, label %if.5, label %if.4.store 127 128if.4.store: 129 store i32 4, i32 addrspace(1)* %out 130 br label %end 131 132if.5: 133 %5 = icmp sgt i32 %cond, 50 134 br i1 %5, label %if.6, label %if.5.store 135 136if.5.store: 137 store i32 5, i32 addrspace(1)* %out 138 br label %end 139 140if.6: 141 %6 = icmp sgt i32 %cond, 60 142 br i1 %6, label %if.7, label %if.6.store 143 144if.6.store: 145 store i32 6, i32 addrspace(1)* %out 146 br label %end 147 148if.7: 149 store i32 7, i32 addrspace(1)* %out 150 br label %end 151 152end: 153 ret void 154} 155 156; BUG64: Applying bug work-around 157; BUG32: Applying bug work-around 158; NOBUG-NOT: Applying bug work-around 159; FUNC-LABEL: {{^}}nested8: 160define void @nested8(i32 addrspace(1)* %out, i32 %cond) { 161entry: 162 %0 = icmp sgt i32 %cond, 0 163 br i1 %0, label %if.1, label %end 164 165if.1: 166 %1 = icmp sgt i32 %cond, 10 167 br i1 %1, label %if.2, label %if.1.store 168 169if.1.store: 170 store i32 1, i32 addrspace(1)* %out 171 br label %end 172 173if.2: 174 %2 = icmp sgt i32 %cond, 20 175 br i1 %2, label %if.3, label %if.2.store 176 177if.2.store: 178 store i32 2, i32 addrspace(1)* %out 179 br label %end 180 181if.3: 182 %3 = icmp sgt i32 %cond, 30 183 br i1 %3, label %if.4, label %if.3.store 184 185if.3.store: 186 store i32 3, i32 addrspace(1)* %out 187 br label %end 188 189if.4: 190 %4 = icmp sgt i32 %cond, 40 191 br i1 %4, label %if.5, label %if.4.store 192 193if.4.store: 194 store i32 4, i32 addrspace(1)* %out 195 br label %end 196 197if.5: 198 %5 = icmp sgt i32 %cond, 50 199 br i1 %5, label %if.6, label %if.5.store 200 201if.5.store: 202 store i32 5, i32 addrspace(1)* %out 203 br label %end 204 205if.6: 206 %6 = icmp sgt i32 %cond, 60 207 br i1 %6, label %if.7, label %if.6.store 208 209if.6.store: 210 store i32 6, i32 addrspace(1)* %out 211 br label %end 212 213if.7: 214 %7 = icmp sgt i32 %cond, 70 215 br i1 %7, label %if.8, label %if.7.store 216 217if.7.store: 218 store i32 7, i32 addrspace(1)* %out 219 br label %end 220 221if.8: 222 store i32 8, i32 addrspace(1)* %out 223 br label %end 224 225end: 226 ret void 227} 228