1; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2; Note update_mir_test_checks does not support generating checks for 3; the frame info, so some functions have manually added stack object 4; checks. 5; RUN: llc -march=amdgcn -mcpu=fiji -O0 -stop-after=irtranslator -global-isel -verify-machineinstrs -o - %s | FileCheck %s 6; FIXME: pre-VI should have same ABI without legal i16 operations. 7 8define void @void_func_empty_arg({} %arg0, i32 %arg1) #0 { 9 ; CHECK-LABEL: name: void_func_empty_arg 10 ; CHECK: bb.1 (%ir-block.0): 11 ; CHECK: liveins: $vgpr0, $sgpr30_sgpr31 12 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 13 ; CHECK: [[COPY1:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 14 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 15 ; CHECK: G_STORE [[COPY]](s32), [[DEF]](p1) :: (store (s32) into `i32 addrspace(1)* undef`, addrspace 1) 16 ; CHECK: [[COPY2:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY1]] 17 ; CHECK: S_SETPC_B64_return [[COPY2]] 18 store i32 %arg1, i32 addrspace(1)* undef 19 ret void 20} 21 22define void @void_func_empty_array([0 x i8] %arg0, i32 %arg1) #0 { 23 ; CHECK-LABEL: name: void_func_empty_array 24 ; CHECK: bb.1 (%ir-block.0): 25 ; CHECK: liveins: $vgpr0, $sgpr30_sgpr31 26 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 27 ; CHECK: [[COPY1:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 28 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 29 ; CHECK: G_STORE [[COPY]](s32), [[DEF]](p1) :: (store (s32) into `i32 addrspace(1)* undef`, addrspace 1) 30 ; CHECK: [[COPY2:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY1]] 31 ; CHECK: S_SETPC_B64_return [[COPY2]] 32 store i32 %arg1, i32 addrspace(1)* undef 33 ret void 34} 35 36define void @void_func_i1(i1 %arg0) #0 { 37 ; CHECK-LABEL: name: void_func_i1 38 ; CHECK: bb.1 (%ir-block.0): 39 ; CHECK: liveins: $vgpr0, $sgpr30_sgpr31 40 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 41 ; CHECK: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[COPY]](s32) 42 ; CHECK: [[COPY1:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 43 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 44 ; CHECK: G_STORE [[TRUNC]](s1), [[DEF]](p1) :: (store (s1) into `i1 addrspace(1)* undef`, addrspace 1) 45 ; CHECK: [[COPY2:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY1]] 46 ; CHECK: S_SETPC_B64_return [[COPY2]] 47 store i1 %arg0, i1 addrspace(1)* undef 48 ret void 49} 50 51define void @void_func_i1_zeroext(i1 zeroext %arg0) #0 { 52 ; CHECK-LABEL: name: void_func_i1_zeroext 53 ; CHECK: bb.1 (%ir-block.0): 54 ; CHECK: liveins: $vgpr0, $sgpr30_sgpr31 55 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 56 ; CHECK: [[ASSERT_ZEXT:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[COPY]], 1 57 ; CHECK: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[ASSERT_ZEXT]](s32) 58 ; CHECK: [[COPY1:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 59 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 12 60 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 61 ; CHECK: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[TRUNC]](s1) 62 ; CHECK: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[ZEXT]], [[C]] 63 ; CHECK: G_STORE [[ADD]](s32), [[DEF]](p1) :: (store (s32) into `i32 addrspace(1)* undef`, addrspace 1) 64 ; CHECK: [[COPY2:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY1]] 65 ; CHECK: S_SETPC_B64_return [[COPY2]] 66 %ext = zext i1 %arg0 to i32 67 %add = add i32 %ext, 12 68 store i32 %add, i32 addrspace(1)* undef 69 ret void 70} 71 72define void @void_func_i1_signext(i1 signext %arg0) #0 { 73 ; CHECK-LABEL: name: void_func_i1_signext 74 ; CHECK: bb.1 (%ir-block.0): 75 ; CHECK: liveins: $vgpr0, $sgpr30_sgpr31 76 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 77 ; CHECK: [[ASSERT_SEXT:%[0-9]+]]:_(s32) = G_ASSERT_SEXT [[COPY]], 1 78 ; CHECK: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[ASSERT_SEXT]](s32) 79 ; CHECK: [[COPY1:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 80 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 12 81 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 82 ; CHECK: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[TRUNC]](s1) 83 ; CHECK: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[SEXT]], [[C]] 84 ; CHECK: G_STORE [[ADD]](s32), [[DEF]](p1) :: (store (s32) into `i32 addrspace(1)* undef`, addrspace 1) 85 ; CHECK: [[COPY2:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY1]] 86 ; CHECK: S_SETPC_B64_return [[COPY2]] 87 %ext = sext i1 %arg0 to i32 88 %add = add i32 %ext, 12 89 store i32 %add, i32 addrspace(1)* undef 90 ret void 91} 92 93define void @i1_arg_i1_use(i1 %arg) #0 { 94 ; CHECK-LABEL: name: i1_arg_i1_use 95 ; CHECK: bb.1.bb: 96 ; CHECK: successors: %bb.2(0x40000000), %bb.3(0x40000000) 97 ; CHECK: liveins: $vgpr0, $sgpr30_sgpr31 98 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 99 ; CHECK: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[COPY]](s32) 100 ; CHECK: [[COPY1:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 101 ; CHECK: [[C:%[0-9]+]]:_(s1) = G_CONSTANT i1 true 102 ; CHECK: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 103 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 104 ; CHECK: [[XOR:%[0-9]+]]:_(s1) = G_XOR [[TRUNC]], [[C]] 105 ; CHECK: [[INT:%[0-9]+]]:_(s1), [[INT1:%[0-9]+]]:_(s64) = G_INTRINSIC_W_SIDE_EFFECTS intrinsic(@llvm.amdgcn.if), [[XOR]](s1) 106 ; CHECK: G_BRCOND [[INT]](s1), %bb.2 107 ; CHECK: G_BR %bb.3 108 ; CHECK: bb.2.bb1: 109 ; CHECK: successors: %bb.3(0x80000000) 110 ; CHECK: G_STORE [[C1]](s32), [[DEF]](p1) :: (volatile store (s32) into `i32 addrspace(1)* undef`, addrspace 1) 111 ; CHECK: bb.3.bb2: 112 ; CHECK: G_INTRINSIC_W_SIDE_EFFECTS intrinsic(@llvm.amdgcn.end.cf), [[INT1]](s64) 113 ; CHECK: [[COPY2:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY1]] 114 ; CHECK: S_SETPC_B64_return [[COPY2]] 115bb: 116 br i1 %arg, label %bb2, label %bb1 117 118bb1: 119 store volatile i32 0, i32 addrspace(1)* undef 120 br label %bb2 121 122bb2: 123 ret void 124} 125 126define void @void_func_i8(i8 %arg0) #0 { 127 ; CHECK-LABEL: name: void_func_i8 128 ; CHECK: bb.1 (%ir-block.0): 129 ; CHECK: liveins: $vgpr0, $sgpr30_sgpr31 130 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 131 ; CHECK: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32) 132 ; CHECK: [[TRUNC1:%[0-9]+]]:_(s8) = G_TRUNC [[TRUNC]](s16) 133 ; CHECK: [[COPY1:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 134 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 135 ; CHECK: G_STORE [[TRUNC1]](s8), [[DEF]](p1) :: (store (s8) into `i8 addrspace(1)* undef`, addrspace 1) 136 ; CHECK: [[COPY2:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY1]] 137 ; CHECK: S_SETPC_B64_return [[COPY2]] 138 store i8 %arg0, i8 addrspace(1)* undef 139 ret void 140} 141 142define void @void_func_i8_zeroext(i8 zeroext %arg0) #0 { 143 ; CHECK-LABEL: name: void_func_i8_zeroext 144 ; CHECK: bb.1 (%ir-block.0): 145 ; CHECK: liveins: $vgpr0, $sgpr30_sgpr31 146 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 147 ; CHECK: [[ASSERT_ZEXT:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[COPY]], 8 148 ; CHECK: [[TRUNC:%[0-9]+]]:_(s8) = G_TRUNC [[ASSERT_ZEXT]](s32) 149 ; CHECK: [[COPY1:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 150 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 12 151 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 152 ; CHECK: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[TRUNC]](s8) 153 ; CHECK: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[ZEXT]], [[C]] 154 ; CHECK: G_STORE [[ADD]](s32), [[DEF]](p1) :: (store (s32) into `i32 addrspace(1)* undef`, addrspace 1) 155 ; CHECK: [[COPY2:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY1]] 156 ; CHECK: S_SETPC_B64_return [[COPY2]] 157 %ext = zext i8 %arg0 to i32 158 %add = add i32 %ext, 12 159 store i32 %add, i32 addrspace(1)* undef 160 ret void 161} 162 163define void @void_func_i8_signext(i8 signext %arg0) #0 { 164 ; CHECK-LABEL: name: void_func_i8_signext 165 ; CHECK: bb.1 (%ir-block.0): 166 ; CHECK: liveins: $vgpr0, $sgpr30_sgpr31 167 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 168 ; CHECK: [[ASSERT_SEXT:%[0-9]+]]:_(s32) = G_ASSERT_SEXT [[COPY]], 8 169 ; CHECK: [[TRUNC:%[0-9]+]]:_(s8) = G_TRUNC [[ASSERT_SEXT]](s32) 170 ; CHECK: [[COPY1:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 171 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 12 172 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 173 ; CHECK: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[TRUNC]](s8) 174 ; CHECK: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[SEXT]], [[C]] 175 ; CHECK: G_STORE [[ADD]](s32), [[DEF]](p1) :: (store (s32) into `i32 addrspace(1)* undef`, addrspace 1) 176 ; CHECK: [[COPY2:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY1]] 177 ; CHECK: S_SETPC_B64_return [[COPY2]] 178 %ext = sext i8 %arg0 to i32 179 %add = add i32 %ext, 12 180 store i32 %add, i32 addrspace(1)* undef 181 ret void 182} 183 184define void @void_func_i16(i16 %arg0) #0 { 185 ; CHECK-LABEL: name: void_func_i16 186 ; CHECK: bb.1 (%ir-block.0): 187 ; CHECK: liveins: $vgpr0, $sgpr30_sgpr31 188 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 189 ; CHECK: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32) 190 ; CHECK: [[COPY1:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 191 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 192 ; CHECK: G_STORE [[TRUNC]](s16), [[DEF]](p1) :: (store (s16) into `i16 addrspace(1)* undef`, addrspace 1) 193 ; CHECK: [[COPY2:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY1]] 194 ; CHECK: S_SETPC_B64_return [[COPY2]] 195 store i16 %arg0, i16 addrspace(1)* undef 196 ret void 197} 198 199define void @void_func_i16_zeroext(i16 zeroext %arg0) #0 { 200 ; CHECK-LABEL: name: void_func_i16_zeroext 201 ; CHECK: bb.1 (%ir-block.0): 202 ; CHECK: liveins: $vgpr0, $sgpr30_sgpr31 203 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 204 ; CHECK: [[ASSERT_ZEXT:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[COPY]], 16 205 ; CHECK: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[ASSERT_ZEXT]](s32) 206 ; CHECK: [[COPY1:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 207 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 12 208 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 209 ; CHECK: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[TRUNC]](s16) 210 ; CHECK: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[ZEXT]], [[C]] 211 ; CHECK: G_STORE [[ADD]](s32), [[DEF]](p1) :: (store (s32) into `i32 addrspace(1)* undef`, addrspace 1) 212 ; CHECK: [[COPY2:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY1]] 213 ; CHECK: S_SETPC_B64_return [[COPY2]] 214 %ext = zext i16 %arg0 to i32 215 %add = add i32 %ext, 12 216 store i32 %add, i32 addrspace(1)* undef 217 ret void 218} 219 220define void @void_func_i16_signext(i16 signext %arg0) #0 { 221 ; CHECK-LABEL: name: void_func_i16_signext 222 ; CHECK: bb.1 (%ir-block.0): 223 ; CHECK: liveins: $vgpr0, $sgpr30_sgpr31 224 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 225 ; CHECK: [[ASSERT_SEXT:%[0-9]+]]:_(s32) = G_ASSERT_SEXT [[COPY]], 16 226 ; CHECK: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[ASSERT_SEXT]](s32) 227 ; CHECK: [[COPY1:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 228 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 12 229 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 230 ; CHECK: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[TRUNC]](s16) 231 ; CHECK: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[SEXT]], [[C]] 232 ; CHECK: G_STORE [[ADD]](s32), [[DEF]](p1) :: (store (s32) into `i32 addrspace(1)* undef`, addrspace 1) 233 ; CHECK: [[COPY2:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY1]] 234 ; CHECK: S_SETPC_B64_return [[COPY2]] 235 %ext = sext i16 %arg0 to i32 236 %add = add i32 %ext, 12 237 store i32 %add, i32 addrspace(1)* undef 238 ret void 239} 240 241define void @void_func_i24(i24 %arg0) #0 { 242 ; CHECK-LABEL: name: void_func_i24 243 ; CHECK: bb.1 (%ir-block.0): 244 ; CHECK: liveins: $vgpr0, $sgpr30_sgpr31 245 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 246 ; CHECK: [[TRUNC:%[0-9]+]]:_(s24) = G_TRUNC [[COPY]](s32) 247 ; CHECK: [[COPY1:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 248 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 249 ; CHECK: G_STORE [[TRUNC]](s24), [[DEF]](p1) :: (store (s24) into `i24 addrspace(1)* undef`, align 4, addrspace 1) 250 ; CHECK: [[COPY2:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY1]] 251 ; CHECK: S_SETPC_B64_return [[COPY2]] 252 store i24 %arg0, i24 addrspace(1)* undef 253 ret void 254} 255 256define void @void_func_i24_zeroext(i24 zeroext %arg0) #0 { 257 ; CHECK-LABEL: name: void_func_i24_zeroext 258 ; CHECK: bb.1 (%ir-block.0): 259 ; CHECK: liveins: $vgpr0, $sgpr30_sgpr31 260 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 261 ; CHECK: [[ASSERT_ZEXT:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[COPY]], 24 262 ; CHECK: [[TRUNC:%[0-9]+]]:_(s24) = G_TRUNC [[ASSERT_ZEXT]](s32) 263 ; CHECK: [[COPY1:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 264 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 265 ; CHECK: G_STORE [[TRUNC]](s24), [[DEF]](p1) :: (store (s24) into `i24 addrspace(1)* undef`, align 4, addrspace 1) 266 ; CHECK: [[COPY2:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY1]] 267 ; CHECK: S_SETPC_B64_return [[COPY2]] 268 store i24 %arg0, i24 addrspace(1)* undef 269 ret void 270} 271 272define void @void_func_i24_signext(i24 signext %arg0) #0 { 273 ; CHECK-LABEL: name: void_func_i24_signext 274 ; CHECK: bb.1 (%ir-block.0): 275 ; CHECK: liveins: $vgpr0, $sgpr30_sgpr31 276 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 277 ; CHECK: [[ASSERT_SEXT:%[0-9]+]]:_(s32) = G_ASSERT_SEXT [[COPY]], 24 278 ; CHECK: [[TRUNC:%[0-9]+]]:_(s24) = G_TRUNC [[ASSERT_SEXT]](s32) 279 ; CHECK: [[COPY1:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 280 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 281 ; CHECK: G_STORE [[TRUNC]](s24), [[DEF]](p1) :: (store (s24) into `i24 addrspace(1)* undef`, align 4, addrspace 1) 282 ; CHECK: [[COPY2:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY1]] 283 ; CHECK: S_SETPC_B64_return [[COPY2]] 284 store i24 %arg0, i24 addrspace(1)* undef 285 ret void 286} 287 288define void @void_func_i32(i32 %arg0) #0 { 289 ; CHECK-LABEL: name: void_func_i32 290 ; CHECK: bb.1 (%ir-block.0): 291 ; CHECK: liveins: $vgpr0, $sgpr30_sgpr31 292 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 293 ; CHECK: [[COPY1:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 294 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 295 ; CHECK: G_STORE [[COPY]](s32), [[DEF]](p1) :: (store (s32) into `i32 addrspace(1)* undef`, addrspace 1) 296 ; CHECK: [[COPY2:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY1]] 297 ; CHECK: S_SETPC_B64_return [[COPY2]] 298 store i32 %arg0, i32 addrspace(1)* undef 299 ret void 300} 301 302; The signext is an no-op 303define void @void_func_i32_signext(i32 signext %arg0) #0 { 304 ; CHECK-LABEL: name: void_func_i32_signext 305 ; CHECK: bb.1 (%ir-block.0): 306 ; CHECK: liveins: $vgpr0, $sgpr30_sgpr31 307 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 308 ; CHECK: [[COPY1:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 309 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 310 ; CHECK: G_STORE [[COPY]](s32), [[DEF]](p1) :: (store (s32) into `i32 addrspace(1)* undef`, addrspace 1) 311 ; CHECK: [[COPY2:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY1]] 312 ; CHECK: S_SETPC_B64_return [[COPY2]] 313 store i32 %arg0, i32 addrspace(1)* undef 314 ret void 315} 316 317; The zeroext is an no-op 318define void @void_func_i32_zeroext(i32 zeroext %arg0) #0 { 319 ; CHECK-LABEL: name: void_func_i32_zeroext 320 ; CHECK: bb.1 (%ir-block.0): 321 ; CHECK: liveins: $vgpr0, $sgpr30_sgpr31 322 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 323 ; CHECK: [[COPY1:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 324 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 325 ; CHECK: G_STORE [[COPY]](s32), [[DEF]](p1) :: (store (s32) into `i32 addrspace(1)* undef`, addrspace 1) 326 ; CHECK: [[COPY2:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY1]] 327 ; CHECK: S_SETPC_B64_return [[COPY2]] 328 store i32 %arg0, i32 addrspace(1)* undef 329 ret void 330} 331 332define void @void_func_p3i8(i8 addrspace(3)* %arg0) #0 { 333 ; CHECK-LABEL: name: void_func_p3i8 334 ; CHECK: bb.1 (%ir-block.0): 335 ; CHECK: liveins: $vgpr0, $sgpr30_sgpr31 336 ; CHECK: [[COPY:%[0-9]+]]:_(p3) = COPY $vgpr0 337 ; CHECK: [[COPY1:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 338 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 339 ; CHECK: G_STORE [[COPY]](p3), [[DEF]](p1) :: (store (p3) into `i8 addrspace(3)* addrspace(1)* undef`, addrspace 1) 340 ; CHECK: [[COPY2:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY1]] 341 ; CHECK: S_SETPC_B64_return [[COPY2]] 342 store i8 addrspace(3)* %arg0, i8 addrspace(3)* addrspace(1)* undef 343 ret void 344} 345 346define void @void_func_i48(i48 %arg0) #0 { 347 ; CHECK-LABEL: name: void_func_i48 348 ; CHECK: bb.1 (%ir-block.0): 349 ; CHECK: liveins: $vgpr0, $vgpr1, $sgpr30_sgpr31 350 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 351 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 352 ; CHECK: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32) 353 ; CHECK: [[TRUNC:%[0-9]+]]:_(s48) = G_TRUNC [[MV]](s64) 354 ; CHECK: [[COPY2:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 355 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 356 ; CHECK: G_STORE [[TRUNC]](s48), [[DEF]](p1) :: (store (s48) into `i48 addrspace(1)* undef`, align 8, addrspace 1) 357 ; CHECK: [[COPY3:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY2]] 358 ; CHECK: S_SETPC_B64_return [[COPY3]] 359 store i48 %arg0, i48 addrspace(1)* undef 360 ret void 361} 362 363define void @void_func_i48_zeroext(i48 zeroext %arg0) #0 { 364 ; CHECK-LABEL: name: void_func_i48_zeroext 365 ; CHECK: bb.1 (%ir-block.0): 366 ; CHECK: liveins: $vgpr0, $vgpr1, $sgpr30_sgpr31 367 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 368 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 369 ; CHECK: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32) 370 ; CHECK: [[TRUNC:%[0-9]+]]:_(s48) = G_TRUNC [[MV]](s64) 371 ; CHECK: [[COPY2:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 372 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 12 373 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 374 ; CHECK: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[TRUNC]](s48) 375 ; CHECK: [[ADD:%[0-9]+]]:_(s64) = G_ADD [[ZEXT]], [[C]] 376 ; CHECK: G_STORE [[ADD]](s64), [[DEF]](p1) :: (store (s64) into `i64 addrspace(1)* undef`, addrspace 1) 377 ; CHECK: [[COPY3:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY2]] 378 ; CHECK: S_SETPC_B64_return [[COPY3]] 379 %ext = zext i48 %arg0 to i64 380 %add = add i64 %ext, 12 381 store i64 %add, i64 addrspace(1)* undef 382 ret void 383} 384 385define void @void_func_i48_signext(i48 signext %arg0) #0 { 386 ; CHECK-LABEL: name: void_func_i48_signext 387 ; CHECK: bb.1 (%ir-block.0): 388 ; CHECK: liveins: $vgpr0, $vgpr1, $sgpr30_sgpr31 389 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 390 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 391 ; CHECK: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32) 392 ; CHECK: [[TRUNC:%[0-9]+]]:_(s48) = G_TRUNC [[MV]](s64) 393 ; CHECK: [[COPY2:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 394 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 12 395 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 396 ; CHECK: [[SEXT:%[0-9]+]]:_(s64) = G_SEXT [[TRUNC]](s48) 397 ; CHECK: [[ADD:%[0-9]+]]:_(s64) = G_ADD [[SEXT]], [[C]] 398 ; CHECK: G_STORE [[ADD]](s64), [[DEF]](p1) :: (store (s64) into `i64 addrspace(1)* undef`, addrspace 1) 399 ; CHECK: [[COPY3:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY2]] 400 ; CHECK: S_SETPC_B64_return [[COPY3]] 401 %ext = sext i48 %arg0 to i64 402 %add = add i64 %ext, 12 403 store i64 %add, i64 addrspace(1)* undef 404 ret void 405} 406 407define void @void_func_i64(i64 %arg0) #0 { 408 ; CHECK-LABEL: name: void_func_i64 409 ; CHECK: bb.1 (%ir-block.0): 410 ; CHECK: liveins: $vgpr0, $vgpr1, $sgpr30_sgpr31 411 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 412 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 413 ; CHECK: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32) 414 ; CHECK: [[COPY2:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 415 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 416 ; CHECK: G_STORE [[MV]](s64), [[DEF]](p1) :: (store (s64) into `i64 addrspace(1)* undef`, addrspace 1) 417 ; CHECK: [[COPY3:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY2]] 418 ; CHECK: S_SETPC_B64_return [[COPY3]] 419 store i64 %arg0, i64 addrspace(1)* undef 420 ret void 421} 422 423define void @void_func_i95(i95 %arg0) #0 { 424 ; CHECK-LABEL: name: void_func_i95 425 ; CHECK: bb.1 (%ir-block.0): 426 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $sgpr30_sgpr31 427 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 428 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 429 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 430 ; CHECK: [[MV:%[0-9]+]]:_(s96) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32) 431 ; CHECK: [[TRUNC:%[0-9]+]]:_(s95) = G_TRUNC [[MV]](s96) 432 ; CHECK: [[COPY3:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 433 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 434 ; CHECK: G_STORE [[TRUNC]](s95), [[DEF]](p1) :: (store (s95) into `i95 addrspace(1)* undef`, align 8, addrspace 1) 435 ; CHECK: [[COPY4:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY3]] 436 ; CHECK: S_SETPC_B64_return [[COPY4]] 437 store i95 %arg0, i95 addrspace(1)* undef 438 ret void 439} 440 441define void @void_func_i95_zeroext(i95 zeroext %arg0) #0 { 442 ; CHECK-LABEL: name: void_func_i95_zeroext 443 ; CHECK: bb.1 (%ir-block.0): 444 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $sgpr30_sgpr31 445 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 446 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 447 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 448 ; CHECK: [[MV:%[0-9]+]]:_(s96) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32) 449 ; CHECK: [[TRUNC:%[0-9]+]]:_(s95) = G_TRUNC [[MV]](s96) 450 ; CHECK: [[COPY3:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 451 ; CHECK: [[C:%[0-9]+]]:_(s96) = G_CONSTANT i96 12 452 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 453 ; CHECK: [[ZEXT:%[0-9]+]]:_(s96) = G_ZEXT [[TRUNC]](s95) 454 ; CHECK: [[ADD:%[0-9]+]]:_(s96) = G_ADD [[ZEXT]], [[C]] 455 ; CHECK: G_STORE [[ADD]](s96), [[DEF]](p1) :: (store (s96) into `i96 addrspace(1)* undef`, align 8, addrspace 1) 456 ; CHECK: [[COPY4:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY3]] 457 ; CHECK: S_SETPC_B64_return [[COPY4]] 458 %ext = zext i95 %arg0 to i96 459 %add = add i96 %ext, 12 460 store i96 %add, i96 addrspace(1)* undef 461 ret void 462} 463 464define void @void_func_i95_signext(i95 signext %arg0) #0 { 465 ; CHECK-LABEL: name: void_func_i95_signext 466 ; CHECK: bb.1 (%ir-block.0): 467 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $sgpr30_sgpr31 468 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 469 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 470 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 471 ; CHECK: [[MV:%[0-9]+]]:_(s96) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32) 472 ; CHECK: [[TRUNC:%[0-9]+]]:_(s95) = G_TRUNC [[MV]](s96) 473 ; CHECK: [[COPY3:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 474 ; CHECK: [[C:%[0-9]+]]:_(s96) = G_CONSTANT i96 12 475 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 476 ; CHECK: [[SEXT:%[0-9]+]]:_(s96) = G_SEXT [[TRUNC]](s95) 477 ; CHECK: [[ADD:%[0-9]+]]:_(s96) = G_ADD [[SEXT]], [[C]] 478 ; CHECK: G_STORE [[ADD]](s96), [[DEF]](p1) :: (store (s96) into `i96 addrspace(1)* undef`, align 8, addrspace 1) 479 ; CHECK: [[COPY4:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY3]] 480 ; CHECK: S_SETPC_B64_return [[COPY4]] 481 %ext = sext i95 %arg0 to i96 482 %add = add i96 %ext, 12 483 store i96 %add, i96 addrspace(1)* undef 484 ret void 485} 486 487define void @void_func_i96(i96 %arg0) #0 { 488 ; CHECK-LABEL: name: void_func_i96 489 ; CHECK: bb.1 (%ir-block.0): 490 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $sgpr30_sgpr31 491 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 492 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 493 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 494 ; CHECK: [[MV:%[0-9]+]]:_(s96) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32) 495 ; CHECK: [[COPY3:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 496 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 497 ; CHECK: G_STORE [[MV]](s96), [[DEF]](p1) :: (store (s96) into `i96 addrspace(1)* undef`, align 8, addrspace 1) 498 ; CHECK: [[COPY4:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY3]] 499 ; CHECK: S_SETPC_B64_return [[COPY4]] 500 store i96 %arg0, i96 addrspace(1)* undef 501 ret void 502} 503 504define void @void_func_p0i8(i8* %arg0) #0 { 505 ; CHECK-LABEL: name: void_func_p0i8 506 ; CHECK: bb.1 (%ir-block.0): 507 ; CHECK: liveins: $vgpr0, $vgpr1, $sgpr30_sgpr31 508 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 509 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 510 ; CHECK: [[MV:%[0-9]+]]:_(p0) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32) 511 ; CHECK: [[COPY2:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 512 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 513 ; CHECK: G_STORE [[MV]](p0), [[DEF]](p1) :: (store (p0) into `i8* addrspace(1)* undef`, addrspace 1) 514 ; CHECK: [[COPY3:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY2]] 515 ; CHECK: S_SETPC_B64_return [[COPY3]] 516 store i8* %arg0, i8* addrspace(1)* undef 517 ret void 518} 519 520define void @void_func_p1i8(i8 addrspace(1)* %arg0) #0 { 521 ; CHECK-LABEL: name: void_func_p1i8 522 ; CHECK: bb.1 (%ir-block.0): 523 ; CHECK: liveins: $vgpr0, $vgpr1, $sgpr30_sgpr31 524 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 525 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 526 ; CHECK: [[MV:%[0-9]+]]:_(p1) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32) 527 ; CHECK: [[COPY2:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 528 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 529 ; CHECK: G_STORE [[MV]](p1), [[DEF]](p1) :: (store (p1) into `i8 addrspace(1)* addrspace(1)* undef`, addrspace 1) 530 ; CHECK: [[COPY3:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY2]] 531 ; CHECK: S_SETPC_B64_return [[COPY3]] 532 store i8 addrspace(1)* %arg0, i8 addrspace(1)* addrspace(1)* undef 533 ret void 534} 535 536define void @void_func_f16(half %arg0) #0 { 537 ; CHECK-LABEL: name: void_func_f16 538 ; CHECK: bb.1 (%ir-block.0): 539 ; CHECK: liveins: $vgpr0, $sgpr30_sgpr31 540 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 541 ; CHECK: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32) 542 ; CHECK: [[COPY1:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 543 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 544 ; CHECK: G_STORE [[TRUNC]](s16), [[DEF]](p1) :: (store (s16) into `half addrspace(1)* undef`, addrspace 1) 545 ; CHECK: [[COPY2:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY1]] 546 ; CHECK: S_SETPC_B64_return [[COPY2]] 547 store half %arg0, half addrspace(1)* undef 548 ret void 549} 550 551define void @void_func_f32(float %arg0) #0 { 552 ; CHECK-LABEL: name: void_func_f32 553 ; CHECK: bb.1 (%ir-block.0): 554 ; CHECK: liveins: $vgpr0, $sgpr30_sgpr31 555 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 556 ; CHECK: [[COPY1:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 557 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 558 ; CHECK: G_STORE [[COPY]](s32), [[DEF]](p1) :: (store (s32) into `float addrspace(1)* undef`, addrspace 1) 559 ; CHECK: [[COPY2:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY1]] 560 ; CHECK: S_SETPC_B64_return [[COPY2]] 561 store float %arg0, float addrspace(1)* undef 562 ret void 563} 564 565define void @void_func_f64(double %arg0) #0 { 566 ; CHECK-LABEL: name: void_func_f64 567 ; CHECK: bb.1 (%ir-block.0): 568 ; CHECK: liveins: $vgpr0, $vgpr1, $sgpr30_sgpr31 569 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 570 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 571 ; CHECK: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32) 572 ; CHECK: [[COPY2:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 573 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 574 ; CHECK: G_STORE [[MV]](s64), [[DEF]](p1) :: (store (s64) into `double addrspace(1)* undef`, addrspace 1) 575 ; CHECK: [[COPY3:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY2]] 576 ; CHECK: S_SETPC_B64_return [[COPY3]] 577 store double %arg0, double addrspace(1)* undef 578 ret void 579} 580 581define void @void_func_v2i32(<2 x i32> %arg0) #0 { 582 ; CHECK-LABEL: name: void_func_v2i32 583 ; CHECK: bb.1 (%ir-block.0): 584 ; CHECK: liveins: $vgpr0, $vgpr1, $sgpr30_sgpr31 585 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 586 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 587 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32) 588 ; CHECK: [[COPY2:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 589 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 590 ; CHECK: G_STORE [[BUILD_VECTOR]](<2 x s32>), [[DEF]](p1) :: (store (<2 x s32>) into `<2 x i32> addrspace(1)* undef`, addrspace 1) 591 ; CHECK: [[COPY3:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY2]] 592 ; CHECK: S_SETPC_B64_return [[COPY3]] 593 store <2 x i32> %arg0, <2 x i32> addrspace(1)* undef 594 ret void 595} 596 597define void @void_func_v2i24(<2 x i24> %arg0) #0 { 598 ; CHECK-LABEL: name: void_func_v2i24 599 ; CHECK: bb.1 (%ir-block.0): 600 ; CHECK: liveins: $vgpr0, $vgpr1, $sgpr30_sgpr31 601 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 602 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 603 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32) 604 ; CHECK: [[TRUNC:%[0-9]+]]:_(<2 x s24>) = G_TRUNC [[BUILD_VECTOR]](<2 x s32>) 605 ; CHECK: [[COPY2:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 606 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 607 ; CHECK: G_STORE [[TRUNC]](<2 x s24>), [[DEF]](p1) :: (store (<2 x s24>) into `<2 x i24> addrspace(1)* undef`, align 8, addrspace 1) 608 ; CHECK: [[COPY3:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY2]] 609 ; CHECK: S_SETPC_B64_return [[COPY3]] 610 store <2 x i24> %arg0, <2 x i24> addrspace(1)* undef 611 ret void 612} 613 614define void @void_func_v3i24(<3 x i24> %arg0) #0 { 615 ; CHECK-LABEL: name: void_func_v3i24 616 ; CHECK: bb.1 (%ir-block.0): 617 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $sgpr30_sgpr31 618 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 619 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 620 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 621 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32) 622 ; CHECK: [[TRUNC:%[0-9]+]]:_(<3 x s24>) = G_TRUNC [[BUILD_VECTOR]](<3 x s32>) 623 ; CHECK: [[COPY3:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 624 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 625 ; CHECK: G_STORE [[TRUNC]](<3 x s24>), [[DEF]](p1) :: (store (<3 x s24>) into `<3 x i24> addrspace(1)* undef`, align 16, addrspace 1) 626 ; CHECK: [[COPY4:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY3]] 627 ; CHECK: S_SETPC_B64_return [[COPY4]] 628 store <3 x i24> %arg0, <3 x i24> addrspace(1)* undef 629 ret void 630} 631 632define void @void_func_v2i8(<2 x i8> %arg0) #0 { 633 ; CHECK-LABEL: name: void_func_v2i8 634 ; CHECK: bb.1 (%ir-block.0): 635 ; CHECK: liveins: $vgpr0, $vgpr1, $sgpr30_sgpr31 636 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 637 ; CHECK: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32) 638 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 639 ; CHECK: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32) 640 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR [[TRUNC]](s16), [[TRUNC1]](s16) 641 ; CHECK: [[TRUNC2:%[0-9]+]]:_(<2 x s8>) = G_TRUNC [[BUILD_VECTOR]](<2 x s16>) 642 ; CHECK: [[COPY2:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 643 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 644 ; CHECK: G_STORE [[TRUNC2]](<2 x s8>), [[DEF]](p1) :: (store (<2 x s8>) into `<2 x i8> addrspace(1)* undef`, addrspace 1) 645 ; CHECK: [[COPY3:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY2]] 646 ; CHECK: S_SETPC_B64_return [[COPY3]] 647 store <2 x i8> %arg0, <2 x i8> addrspace(1)* undef 648 ret void 649} 650 651define void @void_func_v3i8(<3 x i8> %arg0) #0 { 652 ; CHECK-LABEL: name: void_func_v3i8 653 ; CHECK: bb.1 (%ir-block.0): 654 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $sgpr30_sgpr31 655 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 656 ; CHECK: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32) 657 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 658 ; CHECK: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32) 659 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 660 ; CHECK: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[COPY2]](s32) 661 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s16>) = G_BUILD_VECTOR [[TRUNC]](s16), [[TRUNC1]](s16), [[TRUNC2]](s16) 662 ; CHECK: [[TRUNC3:%[0-9]+]]:_(<3 x s8>) = G_TRUNC [[BUILD_VECTOR]](<3 x s16>) 663 ; CHECK: [[COPY3:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 664 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 665 ; CHECK: G_STORE [[TRUNC3]](<3 x s8>), [[DEF]](p1) :: (store (<3 x s8>) into `<3 x i8> addrspace(1)* undef`, align 4, addrspace 1) 666 ; CHECK: [[COPY4:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY3]] 667 ; CHECK: S_SETPC_B64_return [[COPY4]] 668 store <3 x i8> %arg0, <3 x i8> addrspace(1)* undef 669 ret void 670} 671 672define void @void_func_v4i8(<4 x i8> %arg0) #0 { 673 ; CHECK-LABEL: name: void_func_v4i8 674 ; CHECK: bb.1 (%ir-block.0): 675 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $sgpr30_sgpr31 676 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 677 ; CHECK: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32) 678 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 679 ; CHECK: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32) 680 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 681 ; CHECK: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[COPY2]](s32) 682 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 683 ; CHECK: [[TRUNC3:%[0-9]+]]:_(s16) = G_TRUNC [[COPY3]](s32) 684 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s16>) = G_BUILD_VECTOR [[TRUNC]](s16), [[TRUNC1]](s16), [[TRUNC2]](s16), [[TRUNC3]](s16) 685 ; CHECK: [[TRUNC4:%[0-9]+]]:_(<4 x s8>) = G_TRUNC [[BUILD_VECTOR]](<4 x s16>) 686 ; CHECK: [[COPY4:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 687 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 688 ; CHECK: G_STORE [[TRUNC4]](<4 x s8>), [[DEF]](p1) :: (store (<4 x s8>) into `<4 x i8> addrspace(1)* undef`, addrspace 1) 689 ; CHECK: [[COPY5:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY4]] 690 ; CHECK: S_SETPC_B64_return [[COPY5]] 691 store <4 x i8> %arg0, <4 x i8> addrspace(1)* undef 692 ret void 693} 694 695define void @void_func_v2p3i8(<2 x i8 addrspace(3)*> %arg0) #0 { 696 ; CHECK-LABEL: name: void_func_v2p3i8 697 ; CHECK: bb.1 (%ir-block.0): 698 ; CHECK: liveins: $vgpr0, $vgpr1, $sgpr30_sgpr31 699 ; CHECK: [[COPY:%[0-9]+]]:_(p3) = COPY $vgpr0 700 ; CHECK: [[COPY1:%[0-9]+]]:_(p3) = COPY $vgpr1 701 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x p3>) = G_BUILD_VECTOR [[COPY]](p3), [[COPY1]](p3) 702 ; CHECK: [[COPY2:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 703 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 704 ; CHECK: G_STORE [[BUILD_VECTOR]](<2 x p3>), [[DEF]](p1) :: (store (<2 x p3>) into `<2 x i8 addrspace(3)*> addrspace(1)* undef`, addrspace 1) 705 ; CHECK: [[COPY3:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY2]] 706 ; CHECK: S_SETPC_B64_return [[COPY3]] 707 store <2 x i8 addrspace(3)*> %arg0, <2 x i8 addrspace(3)*> addrspace(1)* undef 708 ret void 709} 710 711define void @void_func_v3i32(<3 x i32> %arg0) #0 { 712 ; CHECK-LABEL: name: void_func_v3i32 713 ; CHECK: bb.1 (%ir-block.0): 714 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $sgpr30_sgpr31 715 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 716 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 717 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 718 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32) 719 ; CHECK: [[COPY3:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 720 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 721 ; CHECK: G_STORE [[BUILD_VECTOR]](<3 x s32>), [[DEF]](p1) :: (store (<3 x s32>) into `<3 x i32> addrspace(1)* undef`, align 16, addrspace 1) 722 ; CHECK: [[COPY4:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY3]] 723 ; CHECK: S_SETPC_B64_return [[COPY4]] 724 store <3 x i32> %arg0, <3 x i32> addrspace(1)* undef 725 ret void 726} 727 728define void @void_func_v4i32(<4 x i32> %arg0) #0 { 729 ; CHECK-LABEL: name: void_func_v4i32 730 ; CHECK: bb.1 (%ir-block.0): 731 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $sgpr30_sgpr31 732 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 733 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 734 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 735 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 736 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32) 737 ; CHECK: [[COPY4:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 738 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 739 ; CHECK: G_STORE [[BUILD_VECTOR]](<4 x s32>), [[DEF]](p1) :: (store (<4 x s32>) into `<4 x i32> addrspace(1)* undef`, addrspace 1) 740 ; CHECK: [[COPY5:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY4]] 741 ; CHECK: S_SETPC_B64_return [[COPY5]] 742 store <4 x i32> %arg0, <4 x i32> addrspace(1)* undef 743 ret void 744} 745 746define void @void_func_v5i32(<5 x i32> %arg0) #0 { 747 ; CHECK-LABEL: name: void_func_v5i32 748 ; CHECK: bb.1 (%ir-block.0): 749 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $sgpr30_sgpr31 750 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 751 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 752 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 753 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 754 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 755 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<5 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32) 756 ; CHECK: [[COPY5:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 757 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 758 ; CHECK: G_STORE [[BUILD_VECTOR]](<5 x s32>), [[DEF]](p1) :: (store (<5 x s32>) into `<5 x i32> addrspace(1)* undef`, align 32, addrspace 1) 759 ; CHECK: [[COPY6:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY5]] 760 ; CHECK: S_SETPC_B64_return [[COPY6]] 761 store <5 x i32> %arg0, <5 x i32> addrspace(1)* undef 762 ret void 763} 764 765define void @void_func_v8i32(<8 x i32> %arg0) #0 { 766 ; CHECK-LABEL: name: void_func_v8i32 767 ; CHECK: bb.1 (%ir-block.0): 768 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $sgpr30_sgpr31 769 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 770 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 771 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 772 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 773 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 774 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 775 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 776 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 777 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32) 778 ; CHECK: [[COPY8:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 779 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 780 ; CHECK: G_STORE [[BUILD_VECTOR]](<8 x s32>), [[DEF]](p1) :: (store (<8 x s32>) into `<8 x i32> addrspace(1)* undef`, addrspace 1) 781 ; CHECK: [[COPY9:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY8]] 782 ; CHECK: S_SETPC_B64_return [[COPY9]] 783 store <8 x i32> %arg0, <8 x i32> addrspace(1)* undef 784 ret void 785} 786 787define void @void_func_v16i32(<16 x i32> %arg0) #0 { 788 ; CHECK-LABEL: name: void_func_v16i32 789 ; CHECK: bb.1 (%ir-block.0): 790 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $sgpr30_sgpr31 791 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 792 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 793 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 794 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 795 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 796 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 797 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 798 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 799 ; CHECK: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8 800 ; CHECK: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9 801 ; CHECK: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10 802 ; CHECK: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11 803 ; CHECK: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12 804 ; CHECK: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13 805 ; CHECK: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14 806 ; CHECK: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15 807 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<16 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32), [[COPY12]](s32), [[COPY13]](s32), [[COPY14]](s32), [[COPY15]](s32) 808 ; CHECK: [[COPY16:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 809 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 810 ; CHECK: G_STORE [[BUILD_VECTOR]](<16 x s32>), [[DEF]](p1) :: (store (<16 x s32>) into `<16 x i32> addrspace(1)* undef`, addrspace 1) 811 ; CHECK: [[COPY17:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY16]] 812 ; CHECK: S_SETPC_B64_return [[COPY17]] 813 store <16 x i32> %arg0, <16 x i32> addrspace(1)* undef 814 ret void 815} 816 817define void @void_func_v32i32(<32 x i32> %arg0) #0 { 818 ; CHECK-LABEL: name: void_func_v32i32 819 ; CHECK: bb.1 (%ir-block.0): 820 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr23, $vgpr24, $vgpr25, $vgpr26, $vgpr27, $vgpr28, $vgpr29, $vgpr30, $vgpr31, $sgpr30_sgpr31 821 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 822 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 823 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 824 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 825 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 826 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 827 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 828 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 829 ; CHECK: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8 830 ; CHECK: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9 831 ; CHECK: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10 832 ; CHECK: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11 833 ; CHECK: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12 834 ; CHECK: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13 835 ; CHECK: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14 836 ; CHECK: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15 837 ; CHECK: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr16 838 ; CHECK: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr17 839 ; CHECK: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr18 840 ; CHECK: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr19 841 ; CHECK: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr20 842 ; CHECK: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr21 843 ; CHECK: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr22 844 ; CHECK: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr23 845 ; CHECK: [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr24 846 ; CHECK: [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr25 847 ; CHECK: [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr26 848 ; CHECK: [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr27 849 ; CHECK: [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr28 850 ; CHECK: [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr29 851 ; CHECK: [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr30 852 ; CHECK: [[COPY31:%[0-9]+]]:_(s32) = COPY $vgpr31 853 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<32 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32), [[COPY12]](s32), [[COPY13]](s32), [[COPY14]](s32), [[COPY15]](s32), [[COPY16]](s32), [[COPY17]](s32), [[COPY18]](s32), [[COPY19]](s32), [[COPY20]](s32), [[COPY21]](s32), [[COPY22]](s32), [[COPY23]](s32), [[COPY24]](s32), [[COPY25]](s32), [[COPY26]](s32), [[COPY27]](s32), [[COPY28]](s32), [[COPY29]](s32), [[COPY30]](s32), [[COPY31]](s32) 854 ; CHECK: [[COPY32:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 855 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 856 ; CHECK: G_STORE [[BUILD_VECTOR]](<32 x s32>), [[DEF]](p1) :: (store (<32 x s32>) into `<32 x i32> addrspace(1)* undef`, addrspace 1) 857 ; CHECK: [[COPY33:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY32]] 858 ; CHECK: S_SETPC_B64_return [[COPY33]] 859 store <32 x i32> %arg0, <32 x i32> addrspace(1)* undef 860 ret void 861} 862 863; 1 over register limit 864define void @void_func_v33i32(<33 x i32> %arg0) #0 { 865 ; CHECK-LABEL: name: void_func_v33i32 866 ; CHECK: bb.1 (%ir-block.0): 867 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr23, $vgpr24, $vgpr25, $vgpr26, $vgpr27, $vgpr28, $vgpr29, $vgpr30, $vgpr31, $sgpr30_sgpr31 868 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 869 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 870 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 871 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 872 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 873 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 874 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 875 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 876 ; CHECK: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8 877 ; CHECK: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9 878 ; CHECK: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10 879 ; CHECK: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11 880 ; CHECK: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12 881 ; CHECK: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13 882 ; CHECK: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14 883 ; CHECK: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15 884 ; CHECK: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr16 885 ; CHECK: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr17 886 ; CHECK: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr18 887 ; CHECK: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr19 888 ; CHECK: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr20 889 ; CHECK: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr21 890 ; CHECK: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr22 891 ; CHECK: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr23 892 ; CHECK: [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr24 893 ; CHECK: [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr25 894 ; CHECK: [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr26 895 ; CHECK: [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr27 896 ; CHECK: [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr28 897 ; CHECK: [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr29 898 ; CHECK: [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr30 899 ; CHECK: [[COPY31:%[0-9]+]]:_(s32) = COPY $vgpr31 900 ; CHECK: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.0 901 ; CHECK: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load (s32) from %fixed-stack.0, align 16, addrspace 5) 902 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<33 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32), [[COPY12]](s32), [[COPY13]](s32), [[COPY14]](s32), [[COPY15]](s32), [[COPY16]](s32), [[COPY17]](s32), [[COPY18]](s32), [[COPY19]](s32), [[COPY20]](s32), [[COPY21]](s32), [[COPY22]](s32), [[COPY23]](s32), [[COPY24]](s32), [[COPY25]](s32), [[COPY26]](s32), [[COPY27]](s32), [[COPY28]](s32), [[COPY29]](s32), [[COPY30]](s32), [[COPY31]](s32), [[LOAD]](s32) 903 ; CHECK: [[COPY32:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 904 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 905 ; CHECK: G_STORE [[BUILD_VECTOR]](<33 x s32>), [[DEF]](p1) :: (store (<33 x s32>) into `<33 x i32> addrspace(1)* undef`, align 256, addrspace 1) 906 ; CHECK: [[COPY33:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY32]] 907 ; CHECK: S_SETPC_B64_return [[COPY33]] 908 store <33 x i32> %arg0, <33 x i32> addrspace(1)* undef 909 ret void 910} 911 912define void @void_func_v2i64(<2 x i64> %arg0) #0 { 913 ; CHECK-LABEL: name: void_func_v2i64 914 ; CHECK: bb.1 (%ir-block.0): 915 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $sgpr30_sgpr31 916 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 917 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 918 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 919 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 920 ; CHECK: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32) 921 ; CHECK: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32) 922 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64) 923 ; CHECK: [[COPY4:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 924 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 925 ; CHECK: G_STORE [[BUILD_VECTOR]](<2 x s64>), [[DEF]](p1) :: (store (<2 x s64>) into `<2 x i64> addrspace(1)* undef`, addrspace 1) 926 ; CHECK: [[COPY5:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY4]] 927 ; CHECK: S_SETPC_B64_return [[COPY5]] 928 store <2 x i64> %arg0, <2 x i64> addrspace(1)* undef 929 ret void 930} 931 932define void @void_func_v2p0i8(<2 x i8*> %arg0) #0 { 933 ; CHECK-LABEL: name: void_func_v2p0i8 934 ; CHECK: bb.1 (%ir-block.0): 935 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $sgpr30_sgpr31 936 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 937 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 938 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 939 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 940 ; CHECK: [[MV:%[0-9]+]]:_(p0) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32) 941 ; CHECK: [[MV1:%[0-9]+]]:_(p0) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32) 942 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x p0>) = G_BUILD_VECTOR [[MV]](p0), [[MV1]](p0) 943 ; CHECK: [[COPY4:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 944 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 945 ; CHECK: G_STORE [[BUILD_VECTOR]](<2 x p0>), [[DEF]](p1) :: (store (<2 x p0>) into `<2 x i8*> addrspace(1)* undef`, addrspace 1) 946 ; CHECK: [[COPY5:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY4]] 947 ; CHECK: S_SETPC_B64_return [[COPY5]] 948 store <2 x i8*> %arg0, <2 x i8*> addrspace(1)* undef 949 ret void 950} 951 952define void @void_func_v2p1i8(<2 x i8 addrspace(1)*> %arg0) #0 { 953 ; CHECK-LABEL: name: void_func_v2p1i8 954 ; CHECK: bb.1 (%ir-block.0): 955 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $sgpr30_sgpr31 956 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 957 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 958 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 959 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 960 ; CHECK: [[MV:%[0-9]+]]:_(p1) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32) 961 ; CHECK: [[MV1:%[0-9]+]]:_(p1) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32) 962 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x p1>) = G_BUILD_VECTOR [[MV]](p1), [[MV1]](p1) 963 ; CHECK: [[COPY4:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 964 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 965 ; CHECK: G_STORE [[BUILD_VECTOR]](<2 x p1>), [[DEF]](p1) :: (store (<2 x p1>) into `<2 x i8 addrspace(1)*> addrspace(1)* undef`, addrspace 1) 966 ; CHECK: [[COPY5:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY4]] 967 ; CHECK: S_SETPC_B64_return [[COPY5]] 968 store <2 x i8 addrspace(1)*> %arg0, <2 x i8 addrspace(1)*> addrspace(1)* undef 969 ret void 970} 971 972define void @void_func_v3i64(<3 x i64> %arg0) #0 { 973 ; CHECK-LABEL: name: void_func_v3i64 974 ; CHECK: bb.1 (%ir-block.0): 975 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $sgpr30_sgpr31 976 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 977 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 978 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 979 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 980 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 981 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 982 ; CHECK: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32) 983 ; CHECK: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32) 984 ; CHECK: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32) 985 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64) 986 ; CHECK: [[COPY6:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 987 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 988 ; CHECK: G_STORE [[BUILD_VECTOR]](<3 x s64>), [[DEF]](p1) :: (store (<3 x s64>) into `<3 x i64> addrspace(1)* undef`, align 32, addrspace 1) 989 ; CHECK: [[COPY7:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY6]] 990 ; CHECK: S_SETPC_B64_return [[COPY7]] 991 store <3 x i64> %arg0, <3 x i64> addrspace(1)* undef 992 ret void 993} 994 995define void @void_func_v4i64(<4 x i64> %arg0) #0 { 996 ; CHECK-LABEL: name: void_func_v4i64 997 ; CHECK: bb.1 (%ir-block.0): 998 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $sgpr30_sgpr31 999 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 1000 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 1001 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 1002 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 1003 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 1004 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 1005 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 1006 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 1007 ; CHECK: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32) 1008 ; CHECK: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32) 1009 ; CHECK: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32) 1010 ; CHECK: [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY6]](s32), [[COPY7]](s32) 1011 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64), [[MV3]](s64) 1012 ; CHECK: [[COPY8:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 1013 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1014 ; CHECK: G_STORE [[BUILD_VECTOR]](<4 x s64>), [[DEF]](p1) :: (store (<4 x s64>) into `<4 x i64> addrspace(1)* undef`, addrspace 1) 1015 ; CHECK: [[COPY9:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY8]] 1016 ; CHECK: S_SETPC_B64_return [[COPY9]] 1017 store <4 x i64> %arg0, <4 x i64> addrspace(1)* undef 1018 ret void 1019} 1020 1021define void @void_func_v5i64(<5 x i64> %arg0) #0 { 1022 ; CHECK-LABEL: name: void_func_v5i64 1023 ; CHECK: bb.1 (%ir-block.0): 1024 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $sgpr30_sgpr31 1025 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 1026 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 1027 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 1028 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 1029 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 1030 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 1031 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 1032 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 1033 ; CHECK: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8 1034 ; CHECK: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9 1035 ; CHECK: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32) 1036 ; CHECK: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32) 1037 ; CHECK: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32) 1038 ; CHECK: [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY6]](s32), [[COPY7]](s32) 1039 ; CHECK: [[MV4:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY8]](s32), [[COPY9]](s32) 1040 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<5 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64), [[MV3]](s64), [[MV4]](s64) 1041 ; CHECK: [[COPY10:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 1042 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1043 ; CHECK: G_STORE [[BUILD_VECTOR]](<5 x s64>), [[DEF]](p1) :: (store (<5 x s64>) into `<5 x i64> addrspace(1)* undef`, align 64, addrspace 1) 1044 ; CHECK: [[COPY11:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY10]] 1045 ; CHECK: S_SETPC_B64_return [[COPY11]] 1046 store <5 x i64> %arg0, <5 x i64> addrspace(1)* undef 1047 ret void 1048} 1049 1050define void @void_func_v8i64(<8 x i64> %arg0) #0 { 1051 ; CHECK-LABEL: name: void_func_v8i64 1052 ; CHECK: bb.1 (%ir-block.0): 1053 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $sgpr30_sgpr31 1054 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 1055 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 1056 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 1057 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 1058 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 1059 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 1060 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 1061 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 1062 ; CHECK: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8 1063 ; CHECK: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9 1064 ; CHECK: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10 1065 ; CHECK: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11 1066 ; CHECK: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12 1067 ; CHECK: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13 1068 ; CHECK: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14 1069 ; CHECK: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15 1070 ; CHECK: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32) 1071 ; CHECK: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32) 1072 ; CHECK: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32) 1073 ; CHECK: [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY6]](s32), [[COPY7]](s32) 1074 ; CHECK: [[MV4:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY8]](s32), [[COPY9]](s32) 1075 ; CHECK: [[MV5:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY10]](s32), [[COPY11]](s32) 1076 ; CHECK: [[MV6:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY12]](s32), [[COPY13]](s32) 1077 ; CHECK: [[MV7:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY14]](s32), [[COPY15]](s32) 1078 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64), [[MV3]](s64), [[MV4]](s64), [[MV5]](s64), [[MV6]](s64), [[MV7]](s64) 1079 ; CHECK: [[COPY16:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 1080 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1081 ; CHECK: G_STORE [[BUILD_VECTOR]](<8 x s64>), [[DEF]](p1) :: (store (<8 x s64>) into `<8 x i64> addrspace(1)* undef`, addrspace 1) 1082 ; CHECK: [[COPY17:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY16]] 1083 ; CHECK: S_SETPC_B64_return [[COPY17]] 1084 store <8 x i64> %arg0, <8 x i64> addrspace(1)* undef 1085 ret void 1086} 1087 1088define void @void_func_v16i64(<16 x i64> %arg0) #0 { 1089 ; CHECK-LABEL: name: void_func_v16i64 1090 ; CHECK: bb.1 (%ir-block.0): 1091 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr23, $vgpr24, $vgpr25, $vgpr26, $vgpr27, $vgpr28, $vgpr29, $vgpr30, $vgpr31, $sgpr30_sgpr31 1092 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 1093 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 1094 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 1095 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 1096 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 1097 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 1098 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 1099 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 1100 ; CHECK: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8 1101 ; CHECK: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9 1102 ; CHECK: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10 1103 ; CHECK: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11 1104 ; CHECK: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12 1105 ; CHECK: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13 1106 ; CHECK: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14 1107 ; CHECK: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15 1108 ; CHECK: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr16 1109 ; CHECK: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr17 1110 ; CHECK: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr18 1111 ; CHECK: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr19 1112 ; CHECK: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr20 1113 ; CHECK: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr21 1114 ; CHECK: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr22 1115 ; CHECK: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr23 1116 ; CHECK: [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr24 1117 ; CHECK: [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr25 1118 ; CHECK: [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr26 1119 ; CHECK: [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr27 1120 ; CHECK: [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr28 1121 ; CHECK: [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr29 1122 ; CHECK: [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr30 1123 ; CHECK: [[COPY31:%[0-9]+]]:_(s32) = COPY $vgpr31 1124 ; CHECK: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32) 1125 ; CHECK: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32) 1126 ; CHECK: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32) 1127 ; CHECK: [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY6]](s32), [[COPY7]](s32) 1128 ; CHECK: [[MV4:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY8]](s32), [[COPY9]](s32) 1129 ; CHECK: [[MV5:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY10]](s32), [[COPY11]](s32) 1130 ; CHECK: [[MV6:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY12]](s32), [[COPY13]](s32) 1131 ; CHECK: [[MV7:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY14]](s32), [[COPY15]](s32) 1132 ; CHECK: [[MV8:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY16]](s32), [[COPY17]](s32) 1133 ; CHECK: [[MV9:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY18]](s32), [[COPY19]](s32) 1134 ; CHECK: [[MV10:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY20]](s32), [[COPY21]](s32) 1135 ; CHECK: [[MV11:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY22]](s32), [[COPY23]](s32) 1136 ; CHECK: [[MV12:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY24]](s32), [[COPY25]](s32) 1137 ; CHECK: [[MV13:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY26]](s32), [[COPY27]](s32) 1138 ; CHECK: [[MV14:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY28]](s32), [[COPY29]](s32) 1139 ; CHECK: [[MV15:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY30]](s32), [[COPY31]](s32) 1140 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<16 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64), [[MV3]](s64), [[MV4]](s64), [[MV5]](s64), [[MV6]](s64), [[MV7]](s64), [[MV8]](s64), [[MV9]](s64), [[MV10]](s64), [[MV11]](s64), [[MV12]](s64), [[MV13]](s64), [[MV14]](s64), [[MV15]](s64) 1141 ; CHECK: [[COPY32:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 1142 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1143 ; CHECK: G_STORE [[BUILD_VECTOR]](<16 x s64>), [[DEF]](p1) :: (store (<16 x s64>) into `<16 x i64> addrspace(1)* undef`, addrspace 1) 1144 ; CHECK: [[COPY33:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY32]] 1145 ; CHECK: S_SETPC_B64_return [[COPY33]] 1146 store <16 x i64> %arg0, <16 x i64> addrspace(1)* undef 1147 ret void 1148} 1149 1150define void @void_func_v2i16(<2 x i16> %arg0) #0 { 1151 ; CHECK-LABEL: name: void_func_v2i16 1152 ; CHECK: bb.1 (%ir-block.0): 1153 ; CHECK: liveins: $vgpr0, $sgpr30_sgpr31 1154 ; CHECK: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0 1155 ; CHECK: [[COPY1:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 1156 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1157 ; CHECK: G_STORE [[COPY]](<2 x s16>), [[DEF]](p1) :: (store (<2 x s16>) into `<2 x i16> addrspace(1)* undef`, addrspace 1) 1158 ; CHECK: [[COPY2:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY1]] 1159 ; CHECK: S_SETPC_B64_return [[COPY2]] 1160 store <2 x i16> %arg0, <2 x i16> addrspace(1)* undef 1161 ret void 1162} 1163 1164define void @void_func_v3i16(<3 x i16> %arg0) #0 { 1165 ; CHECK-LABEL: name: void_func_v3i16 1166 ; CHECK: bb.1 (%ir-block.0): 1167 ; CHECK: liveins: $vgpr0, $vgpr1, $sgpr30_sgpr31 1168 ; CHECK: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0 1169 ; CHECK: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr1 1170 ; CHECK: [[DEF:%[0-9]+]]:_(<2 x s16>) = G_IMPLICIT_DEF 1171 ; CHECK: [[CONCAT_VECTORS:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[COPY]](<2 x s16>), [[COPY1]](<2 x s16>), [[DEF]](<2 x s16>) 1172 ; CHECK: [[UV:%[0-9]+]]:_(<3 x s16>), [[UV1:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS]](<6 x s16>) 1173 ; CHECK: [[COPY2:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 1174 ; CHECK: [[DEF1:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1175 ; CHECK: G_STORE [[UV]](<3 x s16>), [[DEF1]](p1) :: (store (<3 x s16>) into `<3 x i16> addrspace(1)* undef`, align 8, addrspace 1) 1176 ; CHECK: [[COPY3:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY2]] 1177 ; CHECK: S_SETPC_B64_return [[COPY3]] 1178 store <3 x i16> %arg0, <3 x i16> addrspace(1)* undef 1179 ret void 1180} 1181 1182define void @void_func_v4i16(<4 x i16> %arg0) #0 { 1183 ; CHECK-LABEL: name: void_func_v4i16 1184 ; CHECK: bb.1 (%ir-block.0): 1185 ; CHECK: liveins: $vgpr0, $vgpr1, $sgpr30_sgpr31 1186 ; CHECK: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0 1187 ; CHECK: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr1 1188 ; CHECK: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[COPY]](<2 x s16>), [[COPY1]](<2 x s16>) 1189 ; CHECK: [[COPY2:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 1190 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1191 ; CHECK: G_STORE [[CONCAT_VECTORS]](<4 x s16>), [[DEF]](p1) :: (store (<4 x s16>) into `<4 x i16> addrspace(1)* undef`, addrspace 1) 1192 ; CHECK: [[COPY3:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY2]] 1193 ; CHECK: S_SETPC_B64_return [[COPY3]] 1194 store <4 x i16> %arg0, <4 x i16> addrspace(1)* undef 1195 ret void 1196} 1197 1198define void @void_func_v5i16(<5 x i16> %arg0) #0 { 1199 ; CHECK-LABEL: name: void_func_v5i16 1200 ; CHECK: bb.1 (%ir-block.0): 1201 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $sgpr30_sgpr31 1202 ; CHECK: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0 1203 ; CHECK: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr1 1204 ; CHECK: [[COPY2:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr2 1205 ; CHECK: [[DEF:%[0-9]+]]:_(<2 x s16>) = G_IMPLICIT_DEF 1206 ; CHECK: [[CONCAT_VECTORS:%[0-9]+]]:_(<10 x s16>) = G_CONCAT_VECTORS [[COPY]](<2 x s16>), [[COPY1]](<2 x s16>), [[COPY2]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>) 1207 ; CHECK: [[UV:%[0-9]+]]:_(<5 x s16>), [[UV1:%[0-9]+]]:_(<5 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS]](<10 x s16>) 1208 ; CHECK: [[COPY3:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 1209 ; CHECK: [[DEF1:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1210 ; CHECK: G_STORE [[UV]](<5 x s16>), [[DEF1]](p1) :: (store (<5 x s16>) into `<5 x i16> addrspace(1)* undef`, align 16, addrspace 1) 1211 ; CHECK: [[COPY4:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY3]] 1212 ; CHECK: S_SETPC_B64_return [[COPY4]] 1213 store <5 x i16> %arg0, <5 x i16> addrspace(1)* undef 1214 ret void 1215} 1216 1217define void @void_func_v8i16(<8 x i16> %arg0) #0 { 1218 ; CHECK-LABEL: name: void_func_v8i16 1219 ; CHECK: bb.1 (%ir-block.0): 1220 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $sgpr30_sgpr31 1221 ; CHECK: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0 1222 ; CHECK: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr1 1223 ; CHECK: [[COPY2:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr2 1224 ; CHECK: [[COPY3:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr3 1225 ; CHECK: [[CONCAT_VECTORS:%[0-9]+]]:_(<8 x s16>) = G_CONCAT_VECTORS [[COPY]](<2 x s16>), [[COPY1]](<2 x s16>), [[COPY2]](<2 x s16>), [[COPY3]](<2 x s16>) 1226 ; CHECK: [[COPY4:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 1227 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1228 ; CHECK: G_STORE [[CONCAT_VECTORS]](<8 x s16>), [[DEF]](p1) :: (store (<8 x s16>) into `<8 x i16> addrspace(1)* undef`, addrspace 1) 1229 ; CHECK: [[COPY5:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY4]] 1230 ; CHECK: S_SETPC_B64_return [[COPY5]] 1231 store <8 x i16> %arg0, <8 x i16> addrspace(1)* undef 1232 ret void 1233} 1234 1235define void @void_func_v16i16(<16 x i16> %arg0) #0 { 1236 ; CHECK-LABEL: name: void_func_v16i16 1237 ; CHECK: bb.1 (%ir-block.0): 1238 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $sgpr30_sgpr31 1239 ; CHECK: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0 1240 ; CHECK: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr1 1241 ; CHECK: [[COPY2:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr2 1242 ; CHECK: [[COPY3:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr3 1243 ; CHECK: [[COPY4:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr4 1244 ; CHECK: [[COPY5:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr5 1245 ; CHECK: [[COPY6:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr6 1246 ; CHECK: [[COPY7:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr7 1247 ; CHECK: [[CONCAT_VECTORS:%[0-9]+]]:_(<16 x s16>) = G_CONCAT_VECTORS [[COPY]](<2 x s16>), [[COPY1]](<2 x s16>), [[COPY2]](<2 x s16>), [[COPY3]](<2 x s16>), [[COPY4]](<2 x s16>), [[COPY5]](<2 x s16>), [[COPY6]](<2 x s16>), [[COPY7]](<2 x s16>) 1248 ; CHECK: [[COPY8:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 1249 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1250 ; CHECK: G_STORE [[CONCAT_VECTORS]](<16 x s16>), [[DEF]](p1) :: (store (<16 x s16>) into `<16 x i16> addrspace(1)* undef`, addrspace 1) 1251 ; CHECK: [[COPY9:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY8]] 1252 ; CHECK: S_SETPC_B64_return [[COPY9]] 1253 store <16 x i16> %arg0, <16 x i16> addrspace(1)* undef 1254 ret void 1255} 1256 1257; <2 x i16> pieces that start spilling to the stack. 1258; FIXME: load of 2 would be sufficient for last piece 1259define void @void_func_v65i16(<65 x i16> %arg0) #0 { 1260 ; CHECK-LABEL: name: void_func_v65i16 1261 ; CHECK: bb.1 (%ir-block.0): 1262 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr23, $vgpr24, $vgpr25, $vgpr26, $vgpr27, $vgpr28, $vgpr29, $vgpr30, $vgpr31, $sgpr30_sgpr31 1263 ; CHECK: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0 1264 ; CHECK: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr1 1265 ; CHECK: [[COPY2:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr2 1266 ; CHECK: [[COPY3:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr3 1267 ; CHECK: [[COPY4:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr4 1268 ; CHECK: [[COPY5:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr5 1269 ; CHECK: [[COPY6:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr6 1270 ; CHECK: [[COPY7:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr7 1271 ; CHECK: [[COPY8:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr8 1272 ; CHECK: [[COPY9:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr9 1273 ; CHECK: [[COPY10:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr10 1274 ; CHECK: [[COPY11:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr11 1275 ; CHECK: [[COPY12:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr12 1276 ; CHECK: [[COPY13:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr13 1277 ; CHECK: [[COPY14:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr14 1278 ; CHECK: [[COPY15:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr15 1279 ; CHECK: [[COPY16:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr16 1280 ; CHECK: [[COPY17:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr17 1281 ; CHECK: [[COPY18:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr18 1282 ; CHECK: [[COPY19:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr19 1283 ; CHECK: [[COPY20:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr20 1284 ; CHECK: [[COPY21:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr21 1285 ; CHECK: [[COPY22:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr22 1286 ; CHECK: [[COPY23:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr23 1287 ; CHECK: [[COPY24:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr24 1288 ; CHECK: [[COPY25:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr25 1289 ; CHECK: [[COPY26:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr26 1290 ; CHECK: [[COPY27:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr27 1291 ; CHECK: [[COPY28:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr28 1292 ; CHECK: [[COPY29:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr29 1293 ; CHECK: [[COPY30:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr30 1294 ; CHECK: [[COPY31:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr31 1295 ; CHECK: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.0 1296 ; CHECK: [[LOAD:%[0-9]+]]:_(<2 x s16>) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load (<2 x s16>) from %fixed-stack.0, align 16, addrspace 5) 1297 ; CHECK: [[DEF:%[0-9]+]]:_(<2 x s16>) = G_IMPLICIT_DEF 1298 ; CHECK: [[CONCAT_VECTORS:%[0-9]+]]:_(<130 x s16>) = G_CONCAT_VECTORS [[COPY]](<2 x s16>), [[COPY1]](<2 x s16>), [[COPY2]](<2 x s16>), [[COPY3]](<2 x s16>), [[COPY4]](<2 x s16>), [[COPY5]](<2 x s16>), [[COPY6]](<2 x s16>), [[COPY7]](<2 x s16>), [[COPY8]](<2 x s16>), [[COPY9]](<2 x s16>), [[COPY10]](<2 x s16>), [[COPY11]](<2 x s16>), [[COPY12]](<2 x s16>), [[COPY13]](<2 x s16>), [[COPY14]](<2 x s16>), [[COPY15]](<2 x s16>), [[COPY16]](<2 x s16>), [[COPY17]](<2 x s16>), [[COPY18]](<2 x s16>), [[COPY19]](<2 x s16>), [[COPY20]](<2 x s16>), [[COPY21]](<2 x s16>), [[COPY22]](<2 x s16>), [[COPY23]](<2 x s16>), [[COPY24]](<2 x s16>), [[COPY25]](<2 x s16>), [[COPY26]](<2 x s16>), [[COPY27]](<2 x s16>), [[COPY28]](<2 x s16>), [[COPY29]](<2 x s16>), [[COPY30]](<2 x s16>), [[COPY31]](<2 x s16>), [[LOAD]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>) 1299 ; CHECK: [[UV:%[0-9]+]]:_(<65 x s16>), [[UV1:%[0-9]+]]:_(<65 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS]](<130 x s16>) 1300 ; CHECK: [[COPY32:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 1301 ; CHECK: [[DEF1:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1302 ; CHECK: G_STORE [[UV]](<65 x s16>), [[DEF1]](p1) :: (store (<65 x s16>) into `<65 x i16> addrspace(1)* undef`, align 256, addrspace 1) 1303 ; CHECK: [[COPY33:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY32]] 1304 ; CHECK: S_SETPC_B64_return [[COPY33]] 1305 store <65 x i16> %arg0, <65 x i16> addrspace(1)* undef 1306 ret void 1307} 1308 1309define void @void_func_v2f32(<2 x float> %arg0) #0 { 1310 ; CHECK-LABEL: name: void_func_v2f32 1311 ; CHECK: bb.1 (%ir-block.0): 1312 ; CHECK: liveins: $vgpr0, $vgpr1, $sgpr30_sgpr31 1313 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 1314 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 1315 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32) 1316 ; CHECK: [[COPY2:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 1317 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1318 ; CHECK: G_STORE [[BUILD_VECTOR]](<2 x s32>), [[DEF]](p1) :: (store (<2 x s32>) into `<2 x float> addrspace(1)* undef`, addrspace 1) 1319 ; CHECK: [[COPY3:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY2]] 1320 ; CHECK: S_SETPC_B64_return [[COPY3]] 1321 store <2 x float> %arg0, <2 x float> addrspace(1)* undef 1322 ret void 1323} 1324 1325define void @void_func_v3f32(<3 x float> %arg0) #0 { 1326 ; CHECK-LABEL: name: void_func_v3f32 1327 ; CHECK: bb.1 (%ir-block.0): 1328 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $sgpr30_sgpr31 1329 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 1330 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 1331 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 1332 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32) 1333 ; CHECK: [[COPY3:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 1334 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1335 ; CHECK: G_STORE [[BUILD_VECTOR]](<3 x s32>), [[DEF]](p1) :: (store (<3 x s32>) into `<3 x float> addrspace(1)* undef`, align 16, addrspace 1) 1336 ; CHECK: [[COPY4:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY3]] 1337 ; CHECK: S_SETPC_B64_return [[COPY4]] 1338 store <3 x float> %arg0, <3 x float> addrspace(1)* undef 1339 ret void 1340} 1341 1342define void @void_func_v4f32(<4 x float> %arg0) #0 { 1343 ; CHECK-LABEL: name: void_func_v4f32 1344 ; CHECK: bb.1 (%ir-block.0): 1345 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $sgpr30_sgpr31 1346 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 1347 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 1348 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 1349 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 1350 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32) 1351 ; CHECK: [[COPY4:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 1352 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1353 ; CHECK: G_STORE [[BUILD_VECTOR]](<4 x s32>), [[DEF]](p1) :: (store (<4 x s32>) into `<4 x float> addrspace(1)* undef`, addrspace 1) 1354 ; CHECK: [[COPY5:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY4]] 1355 ; CHECK: S_SETPC_B64_return [[COPY5]] 1356 store <4 x float> %arg0, <4 x float> addrspace(1)* undef 1357 ret void 1358} 1359 1360define void @void_func_v8f32(<8 x float> %arg0) #0 { 1361 ; CHECK-LABEL: name: void_func_v8f32 1362 ; CHECK: bb.1 (%ir-block.0): 1363 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $sgpr30_sgpr31 1364 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 1365 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 1366 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 1367 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 1368 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 1369 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 1370 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 1371 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 1372 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32) 1373 ; CHECK: [[COPY8:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 1374 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1375 ; CHECK: G_STORE [[BUILD_VECTOR]](<8 x s32>), [[DEF]](p1) :: (store (<8 x s32>) into `<8 x float> addrspace(1)* undef`, addrspace 1) 1376 ; CHECK: [[COPY9:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY8]] 1377 ; CHECK: S_SETPC_B64_return [[COPY9]] 1378 store <8 x float> %arg0, <8 x float> addrspace(1)* undef 1379 ret void 1380} 1381 1382define void @void_func_v16f32(<16 x float> %arg0) #0 { 1383 ; CHECK-LABEL: name: void_func_v16f32 1384 ; CHECK: bb.1 (%ir-block.0): 1385 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $sgpr30_sgpr31 1386 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 1387 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 1388 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 1389 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 1390 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 1391 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 1392 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 1393 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 1394 ; CHECK: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8 1395 ; CHECK: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9 1396 ; CHECK: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10 1397 ; CHECK: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11 1398 ; CHECK: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12 1399 ; CHECK: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13 1400 ; CHECK: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14 1401 ; CHECK: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15 1402 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<16 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32), [[COPY12]](s32), [[COPY13]](s32), [[COPY14]](s32), [[COPY15]](s32) 1403 ; CHECK: [[COPY16:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 1404 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1405 ; CHECK: G_STORE [[BUILD_VECTOR]](<16 x s32>), [[DEF]](p1) :: (store (<16 x s32>) into `<16 x float> addrspace(1)* undef`, addrspace 1) 1406 ; CHECK: [[COPY17:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY16]] 1407 ; CHECK: S_SETPC_B64_return [[COPY17]] 1408 store <16 x float> %arg0, <16 x float> addrspace(1)* undef 1409 ret void 1410} 1411 1412define void @void_func_v2f64(<2 x double> %arg0) #0 { 1413 ; CHECK-LABEL: name: void_func_v2f64 1414 ; CHECK: bb.1 (%ir-block.0): 1415 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $sgpr30_sgpr31 1416 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 1417 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 1418 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 1419 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 1420 ; CHECK: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32) 1421 ; CHECK: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32) 1422 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64) 1423 ; CHECK: [[COPY4:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 1424 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1425 ; CHECK: G_STORE [[BUILD_VECTOR]](<2 x s64>), [[DEF]](p1) :: (store (<2 x s64>) into `<2 x double> addrspace(1)* undef`, addrspace 1) 1426 ; CHECK: [[COPY5:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY4]] 1427 ; CHECK: S_SETPC_B64_return [[COPY5]] 1428 store <2 x double> %arg0, <2 x double> addrspace(1)* undef 1429 ret void 1430} 1431 1432define void @void_func_v3f64(<3 x double> %arg0) #0 { 1433 ; CHECK-LABEL: name: void_func_v3f64 1434 ; CHECK: bb.1 (%ir-block.0): 1435 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $sgpr30_sgpr31 1436 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 1437 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 1438 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 1439 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 1440 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 1441 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 1442 ; CHECK: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32) 1443 ; CHECK: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32) 1444 ; CHECK: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32) 1445 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64) 1446 ; CHECK: [[COPY6:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 1447 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1448 ; CHECK: G_STORE [[BUILD_VECTOR]](<3 x s64>), [[DEF]](p1) :: (store (<3 x s64>) into `<3 x double> addrspace(1)* undef`, align 32, addrspace 1) 1449 ; CHECK: [[COPY7:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY6]] 1450 ; CHECK: S_SETPC_B64_return [[COPY7]] 1451 store <3 x double> %arg0, <3 x double> addrspace(1)* undef 1452 ret void 1453} 1454 1455define void @void_func_v4f64(<4 x double> %arg0) #0 { 1456 ; CHECK-LABEL: name: void_func_v4f64 1457 ; CHECK: bb.1 (%ir-block.0): 1458 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $sgpr30_sgpr31 1459 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 1460 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 1461 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 1462 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 1463 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 1464 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 1465 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 1466 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 1467 ; CHECK: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32) 1468 ; CHECK: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32) 1469 ; CHECK: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32) 1470 ; CHECK: [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY6]](s32), [[COPY7]](s32) 1471 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64), [[MV3]](s64) 1472 ; CHECK: [[COPY8:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 1473 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1474 ; CHECK: G_STORE [[BUILD_VECTOR]](<4 x s64>), [[DEF]](p1) :: (store (<4 x s64>) into `<4 x double> addrspace(1)* undef`, addrspace 1) 1475 ; CHECK: [[COPY9:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY8]] 1476 ; CHECK: S_SETPC_B64_return [[COPY9]] 1477 store <4 x double> %arg0, <4 x double> addrspace(1)* undef 1478 ret void 1479} 1480 1481define void @void_func_v8f64(<8 x double> %arg0) #0 { 1482 ; CHECK-LABEL: name: void_func_v8f64 1483 ; CHECK: bb.1 (%ir-block.0): 1484 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $sgpr30_sgpr31 1485 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 1486 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 1487 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 1488 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 1489 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 1490 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 1491 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 1492 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 1493 ; CHECK: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8 1494 ; CHECK: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9 1495 ; CHECK: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10 1496 ; CHECK: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11 1497 ; CHECK: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12 1498 ; CHECK: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13 1499 ; CHECK: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14 1500 ; CHECK: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15 1501 ; CHECK: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32) 1502 ; CHECK: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32) 1503 ; CHECK: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32) 1504 ; CHECK: [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY6]](s32), [[COPY7]](s32) 1505 ; CHECK: [[MV4:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY8]](s32), [[COPY9]](s32) 1506 ; CHECK: [[MV5:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY10]](s32), [[COPY11]](s32) 1507 ; CHECK: [[MV6:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY12]](s32), [[COPY13]](s32) 1508 ; CHECK: [[MV7:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY14]](s32), [[COPY15]](s32) 1509 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64), [[MV3]](s64), [[MV4]](s64), [[MV5]](s64), [[MV6]](s64), [[MV7]](s64) 1510 ; CHECK: [[COPY16:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 1511 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1512 ; CHECK: G_STORE [[BUILD_VECTOR]](<8 x s64>), [[DEF]](p1) :: (store (<8 x s64>) into `<8 x double> addrspace(1)* undef`, addrspace 1) 1513 ; CHECK: [[COPY17:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY16]] 1514 ; CHECK: S_SETPC_B64_return [[COPY17]] 1515 store <8 x double> %arg0, <8 x double> addrspace(1)* undef 1516 ret void 1517} 1518 1519define void @void_func_v16f64(<16 x double> %arg0) #0 { 1520 ; CHECK-LABEL: name: void_func_v16f64 1521 ; CHECK: bb.1 (%ir-block.0): 1522 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr23, $vgpr24, $vgpr25, $vgpr26, $vgpr27, $vgpr28, $vgpr29, $vgpr30, $vgpr31, $sgpr30_sgpr31 1523 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 1524 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 1525 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 1526 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 1527 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 1528 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 1529 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 1530 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 1531 ; CHECK: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8 1532 ; CHECK: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9 1533 ; CHECK: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10 1534 ; CHECK: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11 1535 ; CHECK: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12 1536 ; CHECK: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13 1537 ; CHECK: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14 1538 ; CHECK: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15 1539 ; CHECK: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr16 1540 ; CHECK: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr17 1541 ; CHECK: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr18 1542 ; CHECK: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr19 1543 ; CHECK: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr20 1544 ; CHECK: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr21 1545 ; CHECK: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr22 1546 ; CHECK: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr23 1547 ; CHECK: [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr24 1548 ; CHECK: [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr25 1549 ; CHECK: [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr26 1550 ; CHECK: [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr27 1551 ; CHECK: [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr28 1552 ; CHECK: [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr29 1553 ; CHECK: [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr30 1554 ; CHECK: [[COPY31:%[0-9]+]]:_(s32) = COPY $vgpr31 1555 ; CHECK: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32) 1556 ; CHECK: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32) 1557 ; CHECK: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32) 1558 ; CHECK: [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY6]](s32), [[COPY7]](s32) 1559 ; CHECK: [[MV4:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY8]](s32), [[COPY9]](s32) 1560 ; CHECK: [[MV5:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY10]](s32), [[COPY11]](s32) 1561 ; CHECK: [[MV6:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY12]](s32), [[COPY13]](s32) 1562 ; CHECK: [[MV7:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY14]](s32), [[COPY15]](s32) 1563 ; CHECK: [[MV8:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY16]](s32), [[COPY17]](s32) 1564 ; CHECK: [[MV9:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY18]](s32), [[COPY19]](s32) 1565 ; CHECK: [[MV10:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY20]](s32), [[COPY21]](s32) 1566 ; CHECK: [[MV11:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY22]](s32), [[COPY23]](s32) 1567 ; CHECK: [[MV12:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY24]](s32), [[COPY25]](s32) 1568 ; CHECK: [[MV13:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY26]](s32), [[COPY27]](s32) 1569 ; CHECK: [[MV14:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY28]](s32), [[COPY29]](s32) 1570 ; CHECK: [[MV15:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY30]](s32), [[COPY31]](s32) 1571 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<16 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64), [[MV3]](s64), [[MV4]](s64), [[MV5]](s64), [[MV6]](s64), [[MV7]](s64), [[MV8]](s64), [[MV9]](s64), [[MV10]](s64), [[MV11]](s64), [[MV12]](s64), [[MV13]](s64), [[MV14]](s64), [[MV15]](s64) 1572 ; CHECK: [[COPY32:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 1573 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1574 ; CHECK: G_STORE [[BUILD_VECTOR]](<16 x s64>), [[DEF]](p1) :: (store (<16 x s64>) into `<16 x double> addrspace(1)* undef`, addrspace 1) 1575 ; CHECK: [[COPY33:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY32]] 1576 ; CHECK: S_SETPC_B64_return [[COPY33]] 1577 store <16 x double> %arg0, <16 x double> addrspace(1)* undef 1578 ret void 1579} 1580 1581define void @void_func_v2f16(<2 x half> %arg0) #0 { 1582 ; CHECK-LABEL: name: void_func_v2f16 1583 ; CHECK: bb.1 (%ir-block.0): 1584 ; CHECK: liveins: $vgpr0, $sgpr30_sgpr31 1585 ; CHECK: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0 1586 ; CHECK: [[COPY1:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 1587 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1588 ; CHECK: G_STORE [[COPY]](<2 x s16>), [[DEF]](p1) :: (store (<2 x s16>) into `<2 x half> addrspace(1)* undef`, addrspace 1) 1589 ; CHECK: [[COPY2:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY1]] 1590 ; CHECK: S_SETPC_B64_return [[COPY2]] 1591 store <2 x half> %arg0, <2 x half> addrspace(1)* undef 1592 ret void 1593} 1594 1595define void @void_func_v3f16(<3 x half> %arg0) #0 { 1596 ; CHECK-LABEL: name: void_func_v3f16 1597 ; CHECK: bb.1 (%ir-block.0): 1598 ; CHECK: liveins: $vgpr0, $vgpr1, $sgpr30_sgpr31 1599 ; CHECK: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0 1600 ; CHECK: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr1 1601 ; CHECK: [[DEF:%[0-9]+]]:_(<2 x s16>) = G_IMPLICIT_DEF 1602 ; CHECK: [[CONCAT_VECTORS:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[COPY]](<2 x s16>), [[COPY1]](<2 x s16>), [[DEF]](<2 x s16>) 1603 ; CHECK: [[UV:%[0-9]+]]:_(<3 x s16>), [[UV1:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS]](<6 x s16>) 1604 ; CHECK: [[COPY2:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 1605 ; CHECK: [[DEF1:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1606 ; CHECK: G_STORE [[UV]](<3 x s16>), [[DEF1]](p1) :: (store (<3 x s16>) into `<3 x half> addrspace(1)* undef`, align 8, addrspace 1) 1607 ; CHECK: [[COPY3:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY2]] 1608 ; CHECK: S_SETPC_B64_return [[COPY3]] 1609 store <3 x half> %arg0, <3 x half> addrspace(1)* undef 1610 ret void 1611} 1612 1613define void @void_func_v4f16(<4 x half> %arg0) #0 { 1614 ; CHECK-LABEL: name: void_func_v4f16 1615 ; CHECK: bb.1 (%ir-block.0): 1616 ; CHECK: liveins: $vgpr0, $vgpr1, $sgpr30_sgpr31 1617 ; CHECK: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0 1618 ; CHECK: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr1 1619 ; CHECK: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[COPY]](<2 x s16>), [[COPY1]](<2 x s16>) 1620 ; CHECK: [[COPY2:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 1621 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1622 ; CHECK: G_STORE [[CONCAT_VECTORS]](<4 x s16>), [[DEF]](p1) :: (store (<4 x s16>) into `<4 x half> addrspace(1)* undef`, addrspace 1) 1623 ; CHECK: [[COPY3:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY2]] 1624 ; CHECK: S_SETPC_B64_return [[COPY3]] 1625 store <4 x half> %arg0, <4 x half> addrspace(1)* undef 1626 ret void 1627} 1628 1629define void @void_func_v8f16(<8 x half> %arg0) #0 { 1630 ; CHECK-LABEL: name: void_func_v8f16 1631 ; CHECK: bb.1 (%ir-block.0): 1632 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $sgpr30_sgpr31 1633 ; CHECK: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0 1634 ; CHECK: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr1 1635 ; CHECK: [[COPY2:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr2 1636 ; CHECK: [[COPY3:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr3 1637 ; CHECK: [[CONCAT_VECTORS:%[0-9]+]]:_(<8 x s16>) = G_CONCAT_VECTORS [[COPY]](<2 x s16>), [[COPY1]](<2 x s16>), [[COPY2]](<2 x s16>), [[COPY3]](<2 x s16>) 1638 ; CHECK: [[COPY4:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 1639 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1640 ; CHECK: G_STORE [[CONCAT_VECTORS]](<8 x s16>), [[DEF]](p1) :: (store (<8 x s16>) into `<8 x half> addrspace(1)* undef`, addrspace 1) 1641 ; CHECK: [[COPY5:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY4]] 1642 ; CHECK: S_SETPC_B64_return [[COPY5]] 1643 store <8 x half> %arg0, <8 x half> addrspace(1)* undef 1644 ret void 1645} 1646 1647define void @void_func_v16f16(<16 x half> %arg0) #0 { 1648 ; CHECK-LABEL: name: void_func_v16f16 1649 ; CHECK: bb.1 (%ir-block.0): 1650 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $sgpr30_sgpr31 1651 ; CHECK: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0 1652 ; CHECK: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr1 1653 ; CHECK: [[COPY2:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr2 1654 ; CHECK: [[COPY3:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr3 1655 ; CHECK: [[COPY4:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr4 1656 ; CHECK: [[COPY5:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr5 1657 ; CHECK: [[COPY6:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr6 1658 ; CHECK: [[COPY7:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr7 1659 ; CHECK: [[CONCAT_VECTORS:%[0-9]+]]:_(<16 x s16>) = G_CONCAT_VECTORS [[COPY]](<2 x s16>), [[COPY1]](<2 x s16>), [[COPY2]](<2 x s16>), [[COPY3]](<2 x s16>), [[COPY4]](<2 x s16>), [[COPY5]](<2 x s16>), [[COPY6]](<2 x s16>), [[COPY7]](<2 x s16>) 1660 ; CHECK: [[COPY8:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 1661 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1662 ; CHECK: G_STORE [[CONCAT_VECTORS]](<16 x s16>), [[DEF]](p1) :: (store (<16 x s16>) into `<16 x half> addrspace(1)* undef`, addrspace 1) 1663 ; CHECK: [[COPY9:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY8]] 1664 ; CHECK: S_SETPC_B64_return [[COPY9]] 1665 store <16 x half> %arg0, <16 x half> addrspace(1)* undef 1666 ret void 1667} 1668 1669; Make sure there is no alignment requirement for passed vgprs. 1670define void @void_func_i32_i64_i32(i32 %arg0, i64 %arg1, i32 %arg2) #0 { 1671 ; CHECK-LABEL: name: void_func_i32_i64_i32 1672 ; CHECK: bb.1 (%ir-block.0): 1673 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $sgpr30_sgpr31 1674 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 1675 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 1676 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 1677 ; CHECK: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY1]](s32), [[COPY2]](s32) 1678 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 1679 ; CHECK: [[COPY4:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 1680 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1681 ; CHECK: [[COPY5:%[0-9]+]]:_(p1) = COPY [[DEF]](p1) 1682 ; CHECK: G_STORE [[COPY]](s32), [[DEF]](p1) :: (volatile store (s32) into `i32 addrspace(1)* undef`, addrspace 1) 1683 ; CHECK: G_STORE [[MV]](s64), [[COPY5]](p1) :: (volatile store (s64) into `i64 addrspace(1)* undef`, addrspace 1) 1684 ; CHECK: G_STORE [[COPY3]](s32), [[DEF]](p1) :: (volatile store (s32) into `i32 addrspace(1)* undef`, addrspace 1) 1685 ; CHECK: [[COPY6:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY4]] 1686 ; CHECK: S_SETPC_B64_return [[COPY6]] 1687 store volatile i32 %arg0, i32 addrspace(1)* undef 1688 store volatile i64 %arg1, i64 addrspace(1)* undef 1689 store volatile i32 %arg2, i32 addrspace(1)* undef 1690 ret void 1691} 1692 1693define void @void_func_struct_i32({ i32 } %arg0) #0 { 1694 ; CHECK-LABEL: name: void_func_struct_i32 1695 ; CHECK: bb.1 (%ir-block.0): 1696 ; CHECK: liveins: $vgpr0, $sgpr30_sgpr31 1697 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 1698 ; CHECK: [[COPY1:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 1699 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1700 ; CHECK: G_STORE [[COPY]](s32), [[DEF]](p1) :: (store (s32) into `{ i32 } addrspace(1)* undef`, addrspace 1) 1701 ; CHECK: [[COPY2:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY1]] 1702 ; CHECK: S_SETPC_B64_return [[COPY2]] 1703 store { i32 } %arg0, { i32 } addrspace(1)* undef 1704 ret void 1705} 1706 1707define void @void_func_struct_i8_i32({ i8, i32 } %arg0) #0 { 1708 ; CHECK-LABEL: name: void_func_struct_i8_i32 1709 ; CHECK: bb.1 (%ir-block.0): 1710 ; CHECK: liveins: $vgpr0, $vgpr1, $sgpr30_sgpr31 1711 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 1712 ; CHECK: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32) 1713 ; CHECK: [[TRUNC1:%[0-9]+]]:_(s8) = G_TRUNC [[TRUNC]](s16) 1714 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 1715 ; CHECK: [[COPY2:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 1716 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1717 ; CHECK: G_STORE [[TRUNC1]](s8), [[DEF]](p1) :: (store (s8) into `{ i8, i32 } addrspace(1)* undef`, align 4, addrspace 1) 1718 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 4 1719 ; CHECK: [[PTR_ADD:%[0-9]+]]:_(p1) = G_PTR_ADD [[DEF]], [[C]](s64) 1720 ; CHECK: G_STORE [[COPY1]](s32), [[PTR_ADD]](p1) :: (store (s32) into `{ i8, i32 } addrspace(1)* undef` + 4, addrspace 1) 1721 ; CHECK: [[COPY3:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY2]] 1722 ; CHECK: S_SETPC_B64_return [[COPY3]] 1723 store { i8, i32 } %arg0, { i8, i32 } addrspace(1)* undef 1724 ret void 1725} 1726 1727define void @void_func_byval_struct_i8_i32({ i8, i32 } addrspace(5)* byval({ i8, i32 }) %arg0) #0 { 1728 ; CHECK-LABEL: name: void_func_byval_struct_i8_i32 1729 ; CHECK: bb.1 (%ir-block.0): 1730 ; CHECK: liveins: $sgpr30_sgpr31 1731 ; CHECK: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.0 1732 ; CHECK: [[COPY:%[0-9]+]]:_(p5) = COPY [[FRAME_INDEX]](p5) 1733 ; CHECK: [[COPY1:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 1734 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1735 ; CHECK: [[LOAD:%[0-9]+]]:_(s8) = G_LOAD [[COPY]](p5) :: (dereferenceable load (s8) from %ir.arg0, align 4, addrspace 5) 1736 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 4 1737 ; CHECK: [[PTR_ADD:%[0-9]+]]:_(p5) = G_PTR_ADD [[COPY]], [[C]](s32) 1738 ; CHECK: [[LOAD1:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD]](p5) :: (dereferenceable load (s32) from %ir.arg0 + 4, addrspace 5) 1739 ; CHECK: G_STORE [[LOAD]](s8), [[DEF]](p1) :: (store (s8) into `{ i8, i32 } addrspace(1)* undef`, align 4, addrspace 1) 1740 ; CHECK: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 4 1741 ; CHECK: [[PTR_ADD1:%[0-9]+]]:_(p1) = G_PTR_ADD [[DEF]], [[C1]](s64) 1742 ; CHECK: G_STORE [[LOAD1]](s32), [[PTR_ADD1]](p1) :: (store (s32) into `{ i8, i32 } addrspace(1)* undef` + 4, addrspace 1) 1743 ; CHECK: [[COPY2:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY1]] 1744 ; CHECK: S_SETPC_B64_return [[COPY2]] 1745 %arg0.load = load { i8, i32 }, { i8, i32 } addrspace(5)* %arg0 1746 store { i8, i32 } %arg0.load, { i8, i32 } addrspace(1)* undef 1747 ret void 1748} 1749 1750define void @void_func_byval_struct_i8_i32_x2({ i8, i32 } addrspace(5)* byval({ i8, i32 }) %arg0, { i8, i32 } addrspace(5)* byval({ i8, i32 }) %arg1, i32 %arg2) #0 { 1751 ; CHECK-LABEL: name: void_func_byval_struct_i8_i32_x2 1752 ; CHECK: bb.1 (%ir-block.0): 1753 ; CHECK: liveins: $vgpr0, $sgpr30_sgpr31 1754 ; CHECK: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.1 1755 ; CHECK: [[COPY:%[0-9]+]]:_(p5) = COPY [[FRAME_INDEX]](p5) 1756 ; CHECK: [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.0 1757 ; CHECK: [[COPY1:%[0-9]+]]:_(p5) = COPY [[FRAME_INDEX1]](p5) 1758 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr0 1759 ; CHECK: [[COPY3:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 1760 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1761 ; CHECK: [[DEF1:%[0-9]+]]:_(p3) = G_IMPLICIT_DEF 1762 ; CHECK: [[LOAD:%[0-9]+]]:_(s8) = G_LOAD [[COPY]](p5) :: (volatile dereferenceable load (s8) from %ir.arg0, align 4, addrspace 5) 1763 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 4 1764 ; CHECK: [[PTR_ADD:%[0-9]+]]:_(p5) = G_PTR_ADD [[COPY]], [[C]](s32) 1765 ; CHECK: [[LOAD1:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD]](p5) :: (volatile dereferenceable load (s32) from %ir.arg0 + 4, addrspace 5) 1766 ; CHECK: [[LOAD2:%[0-9]+]]:_(s8) = G_LOAD [[COPY1]](p5) :: (volatile dereferenceable load (s8) from %ir.arg1, align 4, addrspace 5) 1767 ; CHECK: [[PTR_ADD1:%[0-9]+]]:_(p5) = G_PTR_ADD [[COPY1]], [[C]](s32) 1768 ; CHECK: [[LOAD3:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD1]](p5) :: (volatile dereferenceable load (s32) from %ir.arg1 + 4, addrspace 5) 1769 ; CHECK: G_STORE [[LOAD]](s8), [[DEF]](p1) :: (volatile store (s8) into `{ i8, i32 } addrspace(1)* undef`, align 4, addrspace 1) 1770 ; CHECK: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 4 1771 ; CHECK: [[PTR_ADD2:%[0-9]+]]:_(p1) = G_PTR_ADD [[DEF]], [[C1]](s64) 1772 ; CHECK: G_STORE [[LOAD1]](s32), [[PTR_ADD2]](p1) :: (volatile store (s32) into `{ i8, i32 } addrspace(1)* undef` + 4, addrspace 1) 1773 ; CHECK: G_STORE [[LOAD2]](s8), [[DEF]](p1) :: (volatile store (s8) into `{ i8, i32 } addrspace(1)* undef`, align 4, addrspace 1) 1774 ; CHECK: [[PTR_ADD3:%[0-9]+]]:_(p1) = G_PTR_ADD [[DEF]], [[C1]](s64) 1775 ; CHECK: G_STORE [[LOAD3]](s32), [[PTR_ADD3]](p1) :: (volatile store (s32) into `{ i8, i32 } addrspace(1)* undef` + 4, addrspace 1) 1776 ; CHECK: G_STORE [[COPY2]](s32), [[DEF1]](p3) :: (volatile store (s32) into `i32 addrspace(3)* undef`, addrspace 3) 1777 ; CHECK: [[COPY4:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY3]] 1778 ; CHECK: S_SETPC_B64_return [[COPY4]] 1779 %arg0.load = load volatile { i8, i32 }, { i8, i32 } addrspace(5)* %arg0 1780 %arg1.load = load volatile { i8, i32 }, { i8, i32 } addrspace(5)* %arg1 1781 store volatile { i8, i32 } %arg0.load, { i8, i32 } addrspace(1)* undef 1782 store volatile { i8, i32 } %arg1.load, { i8, i32 } addrspace(1)* undef 1783 store volatile i32 %arg2, i32 addrspace(3)* undef 1784 ret void 1785} 1786 1787define void @void_func_byval_i32_byval_i64(i32 addrspace(5)* byval(i32) %arg0, i64 addrspace(5)* byval(i64) %arg1) #0 { 1788 ; CHECK-LABEL: name: void_func_byval_i32_byval_i64 1789 ; CHECK: bb.1 (%ir-block.0): 1790 ; CHECK: liveins: $sgpr30_sgpr31 1791 ; CHECK: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.1 1792 ; CHECK: [[COPY:%[0-9]+]]:_(p5) = COPY [[FRAME_INDEX]](p5) 1793 ; CHECK: [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.0 1794 ; CHECK: [[COPY1:%[0-9]+]]:_(p5) = COPY [[FRAME_INDEX1]](p5) 1795 ; CHECK: [[COPY2:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 1796 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 1797 ; CHECK: [[COPY3:%[0-9]+]]:_(p1) = COPY [[DEF]](p1) 1798 ; CHECK: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p5) :: (dereferenceable load (s32) from %ir.arg0, addrspace 5) 1799 ; CHECK: [[LOAD1:%[0-9]+]]:_(s64) = G_LOAD [[COPY1]](p5) :: (dereferenceable load (s64) from %ir.arg1, addrspace 5) 1800 ; CHECK: G_STORE [[LOAD]](s32), [[DEF]](p1) :: (store (s32) into `i32 addrspace(1)* undef`, addrspace 1) 1801 ; CHECK: G_STORE [[LOAD1]](s64), [[COPY3]](p1) :: (store (s64) into `i64 addrspace(1)* undef`, addrspace 1) 1802 ; CHECK: [[COPY4:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY2]] 1803 ; CHECK: S_SETPC_B64_return [[COPY4]] 1804 %arg0.load = load i32, i32 addrspace(5)* %arg0 1805 %arg1.load = load i64, i64 addrspace(5)* %arg1 1806 store i32 %arg0.load, i32 addrspace(1)* undef 1807 store i64 %arg1.load, i64 addrspace(1)* undef 1808 ret void 1809} 1810 1811define void @void_func_byval_i8_align32_i16_align64(i8 addrspace(5)* byval(i8) %arg0, i16 addrspace(5)* byval(i16) align 64 %arg1) #0 { 1812 ; CHECK-LABEL: name: void_func_byval_i8_align32_i16_align64 1813 ; CHECK: bb.1 (%ir-block.0): 1814 ; CHECK: liveins: $sgpr30_sgpr31 1815 ; CHECK: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.1 1816 ; CHECK: [[COPY:%[0-9]+]]:_(p5) = COPY [[FRAME_INDEX]](p5) 1817 ; CHECK: [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.0 1818 ; CHECK: [[COPY1:%[0-9]+]]:_(p5) = COPY [[FRAME_INDEX1]](p5) 1819 ; CHECK: [[COPY2:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 1820 ; CHECK: [[C:%[0-9]+]]:_(p1) = G_CONSTANT i64 0 1821 ; CHECK: [[COPY3:%[0-9]+]]:_(p1) = COPY [[C]](p1) 1822 ; CHECK: [[LOAD:%[0-9]+]]:_(s8) = G_LOAD [[COPY]](p5) :: (dereferenceable load (s8) from %ir.arg0, addrspace 5) 1823 ; CHECK: [[LOAD1:%[0-9]+]]:_(s16) = G_LOAD [[COPY1]](p5) :: (dereferenceable load (s16) from %ir.arg1, addrspace 5) 1824 ; CHECK: G_STORE [[LOAD]](s8), [[C]](p1) :: (store (s8) into `i8 addrspace(1)* null`, addrspace 1) 1825 ; CHECK: G_STORE [[LOAD1]](s16), [[COPY3]](p1) :: (store (s16) into `i16 addrspace(1)* null`, addrspace 1) 1826 ; CHECK: [[COPY4:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY2]] 1827 ; CHECK: S_SETPC_B64_return [[COPY4]] 1828 %arg0.load = load i8, i8 addrspace(5)* %arg0 1829 %arg1.load = load i16, i16 addrspace(5)* %arg1 1830 store i8 %arg0.load, i8 addrspace(1)* null 1831 store i16 %arg1.load, i16 addrspace(1)* null 1832 ret void 1833} 1834 1835; Make sure the alignment is taken from the correct parameter. 1836define void @byval_a3i32_align128_byval_i16_align64([3 x i32] addrspace(5)* byval([3 x i32]) align 128 %arg0, i16 addrspace(5)* byval(i16) align 64 %arg1) #0 { 1837 ; CHECK-LABEL: name: byval_a3i32_align128_byval_i16_align64 1838 ; CHECK: bb.1 (%ir-block.0): 1839 ; CHECK: liveins: $sgpr30_sgpr31 1840 ; CHECK: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.1 1841 ; CHECK: [[COPY:%[0-9]+]]:_(p5) = COPY [[FRAME_INDEX]](p5) 1842 ; CHECK: [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.0 1843 ; CHECK: [[COPY1:%[0-9]+]]:_(p5) = COPY [[FRAME_INDEX1]](p5) 1844 ; CHECK: [[COPY2:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 1845 ; CHECK: [[C:%[0-9]+]]:_(p1) = G_CONSTANT i64 0 1846 ; CHECK: [[COPY3:%[0-9]+]]:_(p1) = COPY [[C]](p1) 1847 ; CHECK: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p5) :: (dereferenceable load (s32) from %ir.arg0, addrspace 5) 1848 ; CHECK: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 4 1849 ; CHECK: [[PTR_ADD:%[0-9]+]]:_(p5) = G_PTR_ADD [[COPY]], [[C1]](s32) 1850 ; CHECK: [[LOAD1:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD]](p5) :: (dereferenceable load (s32) from %ir.arg0 + 4, addrspace 5) 1851 ; CHECK: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 8 1852 ; CHECK: [[PTR_ADD1:%[0-9]+]]:_(p5) = G_PTR_ADD [[COPY]], [[C2]](s32) 1853 ; CHECK: [[LOAD2:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD1]](p5) :: (dereferenceable load (s32) from %ir.arg0 + 8, addrspace 5) 1854 ; CHECK: [[LOAD3:%[0-9]+]]:_(s16) = G_LOAD [[COPY1]](p5) :: (dereferenceable load (s16) from %ir.arg1, addrspace 5) 1855 ; CHECK: G_STORE [[LOAD]](s32), [[C]](p1) :: (store (s32) into `[3 x i32] addrspace(1)* null`, addrspace 1) 1856 ; CHECK: [[C3:%[0-9]+]]:_(s64) = G_CONSTANT i64 4 1857 ; CHECK: [[PTR_ADD2:%[0-9]+]]:_(p1) = G_PTR_ADD [[C]], [[C3]](s64) 1858 ; CHECK: G_STORE [[LOAD1]](s32), [[PTR_ADD2]](p1) :: (store (s32) into `[3 x i32] addrspace(1)* null` + 4, addrspace 1) 1859 ; CHECK: [[C4:%[0-9]+]]:_(s64) = G_CONSTANT i64 8 1860 ; CHECK: [[PTR_ADD3:%[0-9]+]]:_(p1) = G_PTR_ADD [[C]], [[C4]](s64) 1861 ; CHECK: G_STORE [[LOAD2]](s32), [[PTR_ADD3]](p1) :: (store (s32) into `[3 x i32] addrspace(1)* null` + 8, addrspace 1) 1862 ; CHECK: G_STORE [[LOAD3]](s16), [[COPY3]](p1) :: (store (s16) into `i16 addrspace(1)* null`, addrspace 1) 1863 ; CHECK: [[COPY4:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY2]] 1864 ; CHECK: S_SETPC_B64_return [[COPY4]] 1865 %arg0.load = load [3 x i32], [3 x i32] addrspace(5)* %arg0 1866 %arg1.load = load i16, i16 addrspace(5)* %arg1 1867 store [3 x i32] %arg0.load, [3 x i32] addrspace(1)* null 1868 store i16 %arg1.load, i16 addrspace(1)* null 1869 ret void 1870} 1871 1872; byval argument after non-byval stack passed argument 1873define void @void_func_v32i32_i32_byval_i8(<32 x i32> %arg0, i32 %arg1, i8 addrspace(5)* byval(i8) align 8 %arg2) #0 { 1874 ; CHECK-LABEL: name: void_func_v32i32_i32_byval_i8 1875 ; CHECK: bb.1 (%ir-block.0): 1876 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr23, $vgpr24, $vgpr25, $vgpr26, $vgpr27, $vgpr28, $vgpr29, $vgpr30, $vgpr31, $sgpr30_sgpr31 1877 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 1878 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 1879 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 1880 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 1881 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 1882 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 1883 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 1884 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 1885 ; CHECK: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8 1886 ; CHECK: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9 1887 ; CHECK: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10 1888 ; CHECK: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11 1889 ; CHECK: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12 1890 ; CHECK: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13 1891 ; CHECK: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14 1892 ; CHECK: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15 1893 ; CHECK: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr16 1894 ; CHECK: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr17 1895 ; CHECK: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr18 1896 ; CHECK: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr19 1897 ; CHECK: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr20 1898 ; CHECK: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr21 1899 ; CHECK: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr22 1900 ; CHECK: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr23 1901 ; CHECK: [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr24 1902 ; CHECK: [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr25 1903 ; CHECK: [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr26 1904 ; CHECK: [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr27 1905 ; CHECK: [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr28 1906 ; CHECK: [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr29 1907 ; CHECK: [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr30 1908 ; CHECK: [[COPY31:%[0-9]+]]:_(s32) = COPY $vgpr31 1909 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<32 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32), [[COPY12]](s32), [[COPY13]](s32), [[COPY14]](s32), [[COPY15]](s32), [[COPY16]](s32), [[COPY17]](s32), [[COPY18]](s32), [[COPY19]](s32), [[COPY20]](s32), [[COPY21]](s32), [[COPY22]](s32), [[COPY23]](s32), [[COPY24]](s32), [[COPY25]](s32), [[COPY26]](s32), [[COPY27]](s32), [[COPY28]](s32), [[COPY29]](s32), [[COPY30]](s32), [[COPY31]](s32) 1910 ; CHECK: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.1 1911 ; CHECK: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load (s32) from %fixed-stack.1, align 16, addrspace 5) 1912 ; CHECK: [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.0 1913 ; CHECK: [[COPY32:%[0-9]+]]:_(p5) = COPY [[FRAME_INDEX1]](p5) 1914 ; CHECK: [[COPY33:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 1915 ; CHECK: [[C:%[0-9]+]]:_(p1) = G_CONSTANT i64 0 1916 ; CHECK: [[COPY34:%[0-9]+]]:_(p1) = COPY [[C]](p1) 1917 ; CHECK: G_STORE [[LOAD]](s32), [[C]](p1) :: (store (s32) into `i32 addrspace(1)* null`, addrspace 1) 1918 ; CHECK: [[LOAD1:%[0-9]+]]:_(s8) = G_LOAD [[COPY32]](p5) :: (dereferenceable load (s8) from %ir.arg2, addrspace 5) 1919 ; CHECK: G_STORE [[LOAD1]](s8), [[COPY34]](p1) :: (store (s8) into `i8 addrspace(1)* null`, addrspace 1) 1920 ; CHECK: [[COPY35:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY33]] 1921 ; CHECK: S_SETPC_B64_return [[COPY35]] 1922 store i32 %arg1, i32 addrspace(1)* null 1923 %arg2.load = load i8, i8 addrspace(5)* %arg2 1924 store i8 %arg2.load, i8 addrspace(1)* null 1925 ret void 1926} 1927 1928; byval argument before non-byval stack passed argument 1929define void @void_func_v32i32_byval_i8_i32(<32 x i32> %arg0, i8 addrspace(5)* byval(i8) %arg1, i32 %arg2) #0 { 1930 ; CHECK-LABEL: name: void_func_v32i32_byval_i8_i32 1931 ; CHECK: bb.1 (%ir-block.0): 1932 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr23, $vgpr24, $vgpr25, $vgpr26, $vgpr27, $vgpr28, $vgpr29, $vgpr30, $vgpr31, $sgpr30_sgpr31 1933 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 1934 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 1935 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 1936 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 1937 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 1938 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 1939 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 1940 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 1941 ; CHECK: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8 1942 ; CHECK: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9 1943 ; CHECK: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10 1944 ; CHECK: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11 1945 ; CHECK: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12 1946 ; CHECK: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13 1947 ; CHECK: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14 1948 ; CHECK: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15 1949 ; CHECK: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr16 1950 ; CHECK: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr17 1951 ; CHECK: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr18 1952 ; CHECK: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr19 1953 ; CHECK: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr20 1954 ; CHECK: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr21 1955 ; CHECK: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr22 1956 ; CHECK: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr23 1957 ; CHECK: [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr24 1958 ; CHECK: [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr25 1959 ; CHECK: [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr26 1960 ; CHECK: [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr27 1961 ; CHECK: [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr28 1962 ; CHECK: [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr29 1963 ; CHECK: [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr30 1964 ; CHECK: [[COPY31:%[0-9]+]]:_(s32) = COPY $vgpr31 1965 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<32 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32), [[COPY12]](s32), [[COPY13]](s32), [[COPY14]](s32), [[COPY15]](s32), [[COPY16]](s32), [[COPY17]](s32), [[COPY18]](s32), [[COPY19]](s32), [[COPY20]](s32), [[COPY21]](s32), [[COPY22]](s32), [[COPY23]](s32), [[COPY24]](s32), [[COPY25]](s32), [[COPY26]](s32), [[COPY27]](s32), [[COPY28]](s32), [[COPY29]](s32), [[COPY30]](s32), [[COPY31]](s32) 1966 ; CHECK: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.1 1967 ; CHECK: [[COPY32:%[0-9]+]]:_(p5) = COPY [[FRAME_INDEX]](p5) 1968 ; CHECK: [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.0 1969 ; CHECK: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX1]](p5) :: (invariant load (s32) from %fixed-stack.0, addrspace 5) 1970 ; CHECK: [[COPY33:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 1971 ; CHECK: [[C:%[0-9]+]]:_(p1) = G_CONSTANT i64 0 1972 ; CHECK: [[COPY34:%[0-9]+]]:_(p1) = COPY [[C]](p1) 1973 ; CHECK: G_STORE [[LOAD]](s32), [[C]](p1) :: (store (s32) into `i32 addrspace(1)* null`, addrspace 1) 1974 ; CHECK: [[LOAD1:%[0-9]+]]:_(s8) = G_LOAD [[COPY32]](p5) :: (dereferenceable load (s8) from %ir.arg1, addrspace 5) 1975 ; CHECK: G_STORE [[LOAD1]](s8), [[COPY34]](p1) :: (store (s8) into `i8 addrspace(1)* null`, addrspace 1) 1976 ; CHECK: [[COPY35:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY33]] 1977 ; CHECK: S_SETPC_B64_return [[COPY35]] 1978 store i32 %arg2, i32 addrspace(1)* null 1979 %arg1.load = load i8, i8 addrspace(5)* %arg1 1980 store i8 %arg1.load, i8 addrspace(1)* null 1981 ret void 1982} 1983 1984define void @void_func_v32i32_i32_i64(<32 x i32> %arg0, i32 %arg1, i64 %arg2) #0 { 1985 ; CHECK-LABEL: name: void_func_v32i32_i32_i64 1986 ; CHECK: bb.1 (%ir-block.0): 1987 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr23, $vgpr24, $vgpr25, $vgpr26, $vgpr27, $vgpr28, $vgpr29, $vgpr30, $vgpr31, $sgpr30_sgpr31 1988 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 1989 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 1990 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 1991 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 1992 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 1993 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 1994 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 1995 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 1996 ; CHECK: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8 1997 ; CHECK: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9 1998 ; CHECK: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10 1999 ; CHECK: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11 2000 ; CHECK: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12 2001 ; CHECK: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13 2002 ; CHECK: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14 2003 ; CHECK: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15 2004 ; CHECK: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr16 2005 ; CHECK: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr17 2006 ; CHECK: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr18 2007 ; CHECK: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr19 2008 ; CHECK: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr20 2009 ; CHECK: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr21 2010 ; CHECK: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr22 2011 ; CHECK: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr23 2012 ; CHECK: [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr24 2013 ; CHECK: [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr25 2014 ; CHECK: [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr26 2015 ; CHECK: [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr27 2016 ; CHECK: [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr28 2017 ; CHECK: [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr29 2018 ; CHECK: [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr30 2019 ; CHECK: [[COPY31:%[0-9]+]]:_(s32) = COPY $vgpr31 2020 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<32 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32), [[COPY12]](s32), [[COPY13]](s32), [[COPY14]](s32), [[COPY15]](s32), [[COPY16]](s32), [[COPY17]](s32), [[COPY18]](s32), [[COPY19]](s32), [[COPY20]](s32), [[COPY21]](s32), [[COPY22]](s32), [[COPY23]](s32), [[COPY24]](s32), [[COPY25]](s32), [[COPY26]](s32), [[COPY27]](s32), [[COPY28]](s32), [[COPY29]](s32), [[COPY30]](s32), [[COPY31]](s32) 2021 ; CHECK: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.2 2022 ; CHECK: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load (s32) from %fixed-stack.2, align 16, addrspace 5) 2023 ; CHECK: [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.1 2024 ; CHECK: [[LOAD1:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX1]](p5) :: (invariant load (s32) from %fixed-stack.1, addrspace 5) 2025 ; CHECK: [[FRAME_INDEX2:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.0 2026 ; CHECK: [[LOAD2:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX2]](p5) :: (invariant load (s32) from %fixed-stack.0, align 8, addrspace 5) 2027 ; CHECK: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[LOAD1]](s32), [[LOAD2]](s32) 2028 ; CHECK: [[COPY32:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 2029 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 2030 ; CHECK: [[COPY33:%[0-9]+]]:_(p1) = COPY [[DEF]](p1) 2031 ; CHECK: [[COPY34:%[0-9]+]]:_(p1) = COPY [[DEF]](p1) 2032 ; CHECK: G_STORE [[BUILD_VECTOR]](<32 x s32>), [[DEF]](p1) :: (volatile store (<32 x s32>) into `<32 x i32> addrspace(1)* undef`, addrspace 1) 2033 ; CHECK: G_STORE [[LOAD]](s32), [[COPY33]](p1) :: (volatile store (s32) into `i32 addrspace(1)* undef`, addrspace 1) 2034 ; CHECK: G_STORE [[MV]](s64), [[COPY34]](p1) :: (volatile store (s64) into `i64 addrspace(1)* undef`, addrspace 1) 2035 ; CHECK: [[COPY35:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY32]] 2036 ; CHECK: S_SETPC_B64_return [[COPY35]] 2037 store volatile <32 x i32> %arg0, <32 x i32> addrspace(1)* undef 2038 store volatile i32 %arg1, i32 addrspace(1)* undef 2039 store volatile i64 %arg2, i64 addrspace(1)* undef 2040 ret void 2041} 2042 2043; FIXME: Different ext load types on CI vs. VI 2044define void @void_func_v32i32_i1_i8_i16(<32 x i32> %arg0, i1 %arg1, i8 %arg2, i16 %arg3, half %arg4) #0 { 2045 ; CHECK-LABEL: name: void_func_v32i32_i1_i8_i16 2046 ; CHECK: bb.1 (%ir-block.0): 2047 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr23, $vgpr24, $vgpr25, $vgpr26, $vgpr27, $vgpr28, $vgpr29, $vgpr30, $vgpr31, $sgpr30_sgpr31 2048 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 2049 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 2050 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 2051 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 2052 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 2053 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 2054 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 2055 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 2056 ; CHECK: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8 2057 ; CHECK: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9 2058 ; CHECK: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10 2059 ; CHECK: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11 2060 ; CHECK: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12 2061 ; CHECK: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13 2062 ; CHECK: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14 2063 ; CHECK: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15 2064 ; CHECK: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr16 2065 ; CHECK: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr17 2066 ; CHECK: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr18 2067 ; CHECK: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr19 2068 ; CHECK: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr20 2069 ; CHECK: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr21 2070 ; CHECK: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr22 2071 ; CHECK: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr23 2072 ; CHECK: [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr24 2073 ; CHECK: [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr25 2074 ; CHECK: [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr26 2075 ; CHECK: [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr27 2076 ; CHECK: [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr28 2077 ; CHECK: [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr29 2078 ; CHECK: [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr30 2079 ; CHECK: [[COPY31:%[0-9]+]]:_(s32) = COPY $vgpr31 2080 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<32 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32), [[COPY12]](s32), [[COPY13]](s32), [[COPY14]](s32), [[COPY15]](s32), [[COPY16]](s32), [[COPY17]](s32), [[COPY18]](s32), [[COPY19]](s32), [[COPY20]](s32), [[COPY21]](s32), [[COPY22]](s32), [[COPY23]](s32), [[COPY24]](s32), [[COPY25]](s32), [[COPY26]](s32), [[COPY27]](s32), [[COPY28]](s32), [[COPY29]](s32), [[COPY30]](s32), [[COPY31]](s32) 2081 ; CHECK: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.3 2082 ; CHECK: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load (s1) from %fixed-stack.3, align 16, addrspace 5) 2083 ; CHECK: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[LOAD]](s32) 2084 ; CHECK: [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.2 2085 ; CHECK: [[LOAD1:%[0-9]+]]:_(s16) = G_LOAD [[FRAME_INDEX1]](p5) :: (invariant load (s16) from %fixed-stack.2, align 4, addrspace 5) 2086 ; CHECK: [[TRUNC1:%[0-9]+]]:_(s8) = G_TRUNC [[LOAD1]](s16) 2087 ; CHECK: [[FRAME_INDEX2:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.1 2088 ; CHECK: [[LOAD2:%[0-9]+]]:_(s16) = G_LOAD [[FRAME_INDEX2]](p5) :: (invariant load (s16) from %fixed-stack.1, align 8, addrspace 5) 2089 ; CHECK: [[FRAME_INDEX3:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.0 2090 ; CHECK: [[LOAD3:%[0-9]+]]:_(s16) = G_LOAD [[FRAME_INDEX3]](p5) :: (invariant load (s16) from %fixed-stack.0, align 4, addrspace 5) 2091 ; CHECK: [[COPY32:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 2092 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 2093 ; CHECK: [[COPY33:%[0-9]+]]:_(p1) = COPY [[DEF]](p1) 2094 ; CHECK: [[COPY34:%[0-9]+]]:_(p1) = COPY [[DEF]](p1) 2095 ; CHECK: [[COPY35:%[0-9]+]]:_(p1) = COPY [[DEF]](p1) 2096 ; CHECK: [[COPY36:%[0-9]+]]:_(p1) = COPY [[DEF]](p1) 2097 ; CHECK: G_STORE [[BUILD_VECTOR]](<32 x s32>), [[DEF]](p1) :: (volatile store (<32 x s32>) into `<32 x i32> addrspace(1)* undef`, addrspace 1) 2098 ; CHECK: G_STORE [[TRUNC]](s1), [[COPY33]](p1) :: (volatile store (s1) into `i1 addrspace(1)* undef`, addrspace 1) 2099 ; CHECK: G_STORE [[TRUNC1]](s8), [[COPY34]](p1) :: (volatile store (s8) into `i8 addrspace(1)* undef`, addrspace 1) 2100 ; CHECK: G_STORE [[LOAD2]](s16), [[COPY35]](p1) :: (volatile store (s16) into `i16 addrspace(1)* undef`, addrspace 1) 2101 ; CHECK: G_STORE [[LOAD3]](s16), [[COPY36]](p1) :: (volatile store (s16) into `half addrspace(1)* undef`, addrspace 1) 2102 ; CHECK: [[COPY37:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY32]] 2103 ; CHECK: S_SETPC_B64_return [[COPY37]] 2104 store volatile <32 x i32> %arg0, <32 x i32> addrspace(1)* undef 2105 store volatile i1 %arg1, i1 addrspace(1)* undef 2106 store volatile i8 %arg2, i8 addrspace(1)* undef 2107 store volatile i16 %arg3, i16 addrspace(1)* undef 2108 store volatile half %arg4, half addrspace(1)* undef 2109 ret void 2110} 2111 2112define void @void_func_v32i32_p3_p5_i16(<32 x i32> %arg0, i8 addrspace(3)* %arg1, i8 addrspace(5)* %arg2) #0 { 2113 ; CHECK-LABEL: name: void_func_v32i32_p3_p5_i16 2114 ; CHECK: bb.1 (%ir-block.0): 2115 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr23, $vgpr24, $vgpr25, $vgpr26, $vgpr27, $vgpr28, $vgpr29, $vgpr30, $vgpr31, $sgpr30_sgpr31 2116 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 2117 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 2118 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 2119 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 2120 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 2121 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 2122 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 2123 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 2124 ; CHECK: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8 2125 ; CHECK: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9 2126 ; CHECK: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10 2127 ; CHECK: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11 2128 ; CHECK: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12 2129 ; CHECK: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13 2130 ; CHECK: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14 2131 ; CHECK: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15 2132 ; CHECK: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr16 2133 ; CHECK: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr17 2134 ; CHECK: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr18 2135 ; CHECK: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr19 2136 ; CHECK: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr20 2137 ; CHECK: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr21 2138 ; CHECK: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr22 2139 ; CHECK: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr23 2140 ; CHECK: [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr24 2141 ; CHECK: [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr25 2142 ; CHECK: [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr26 2143 ; CHECK: [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr27 2144 ; CHECK: [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr28 2145 ; CHECK: [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr29 2146 ; CHECK: [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr30 2147 ; CHECK: [[COPY31:%[0-9]+]]:_(s32) = COPY $vgpr31 2148 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<32 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32), [[COPY12]](s32), [[COPY13]](s32), [[COPY14]](s32), [[COPY15]](s32), [[COPY16]](s32), [[COPY17]](s32), [[COPY18]](s32), [[COPY19]](s32), [[COPY20]](s32), [[COPY21]](s32), [[COPY22]](s32), [[COPY23]](s32), [[COPY24]](s32), [[COPY25]](s32), [[COPY26]](s32), [[COPY27]](s32), [[COPY28]](s32), [[COPY29]](s32), [[COPY30]](s32), [[COPY31]](s32) 2149 ; CHECK: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.1 2150 ; CHECK: [[LOAD:%[0-9]+]]:_(p3) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load (p3) from %fixed-stack.1, align 16, addrspace 5) 2151 ; CHECK: [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.0 2152 ; CHECK: [[LOAD1:%[0-9]+]]:_(p5) = G_LOAD [[FRAME_INDEX1]](p5) :: (invariant load (p5) from %fixed-stack.0, addrspace 5) 2153 ; CHECK: [[COPY32:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 2154 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 2155 ; CHECK: [[COPY33:%[0-9]+]]:_(p1) = COPY [[DEF]](p1) 2156 ; CHECK: [[COPY34:%[0-9]+]]:_(p1) = COPY [[DEF]](p1) 2157 ; CHECK: G_STORE [[BUILD_VECTOR]](<32 x s32>), [[DEF]](p1) :: (volatile store (<32 x s32>) into `<32 x i32> addrspace(1)* undef`, addrspace 1) 2158 ; CHECK: G_STORE [[LOAD]](p3), [[COPY33]](p1) :: (volatile store (p3) into `i8 addrspace(3)* addrspace(1)* undef`, addrspace 1) 2159 ; CHECK: G_STORE [[LOAD1]](p5), [[COPY34]](p1) :: (volatile store (p5) into `i8 addrspace(5)* addrspace(1)* undef`, addrspace 1) 2160 ; CHECK: [[COPY35:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY32]] 2161 ; CHECK: S_SETPC_B64_return [[COPY35]] 2162 store volatile <32 x i32> %arg0, <32 x i32> addrspace(1)* undef 2163 store volatile i8 addrspace(3)* %arg1, i8 addrspace(3)* addrspace(1)* undef 2164 store volatile i8 addrspace(5)* %arg2, i8 addrspace(5)* addrspace(1)* undef 2165 ret void 2166} 2167 2168define void @void_func_v32i32_v2i32_v2f32(<32 x i32> %arg0, <2 x i32> %arg1, <2 x float> %arg2) #0 { 2169 ; CHECK-LABEL: name: void_func_v32i32_v2i32_v2f32 2170 ; CHECK: bb.1 (%ir-block.0): 2171 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr23, $vgpr24, $vgpr25, $vgpr26, $vgpr27, $vgpr28, $vgpr29, $vgpr30, $vgpr31, $sgpr30_sgpr31 2172 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 2173 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 2174 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 2175 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 2176 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 2177 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 2178 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 2179 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 2180 ; CHECK: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8 2181 ; CHECK: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9 2182 ; CHECK: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10 2183 ; CHECK: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11 2184 ; CHECK: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12 2185 ; CHECK: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13 2186 ; CHECK: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14 2187 ; CHECK: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15 2188 ; CHECK: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr16 2189 ; CHECK: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr17 2190 ; CHECK: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr18 2191 ; CHECK: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr19 2192 ; CHECK: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr20 2193 ; CHECK: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr21 2194 ; CHECK: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr22 2195 ; CHECK: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr23 2196 ; CHECK: [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr24 2197 ; CHECK: [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr25 2198 ; CHECK: [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr26 2199 ; CHECK: [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr27 2200 ; CHECK: [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr28 2201 ; CHECK: [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr29 2202 ; CHECK: [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr30 2203 ; CHECK: [[COPY31:%[0-9]+]]:_(s32) = COPY $vgpr31 2204 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<32 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32), [[COPY12]](s32), [[COPY13]](s32), [[COPY14]](s32), [[COPY15]](s32), [[COPY16]](s32), [[COPY17]](s32), [[COPY18]](s32), [[COPY19]](s32), [[COPY20]](s32), [[COPY21]](s32), [[COPY22]](s32), [[COPY23]](s32), [[COPY24]](s32), [[COPY25]](s32), [[COPY26]](s32), [[COPY27]](s32), [[COPY28]](s32), [[COPY29]](s32), [[COPY30]](s32), [[COPY31]](s32) 2205 ; CHECK: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.3 2206 ; CHECK: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load (s32) from %fixed-stack.3, align 16, addrspace 5) 2207 ; CHECK: [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.2 2208 ; CHECK: [[LOAD1:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX1]](p5) :: (invariant load (s32) from %fixed-stack.2, addrspace 5) 2209 ; CHECK: [[BUILD_VECTOR1:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[LOAD]](s32), [[LOAD1]](s32) 2210 ; CHECK: [[FRAME_INDEX2:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.1 2211 ; CHECK: [[LOAD2:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX2]](p5) :: (invariant load (s32) from %fixed-stack.1, align 8, addrspace 5) 2212 ; CHECK: [[FRAME_INDEX3:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.0 2213 ; CHECK: [[LOAD3:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX3]](p5) :: (invariant load (s32) from %fixed-stack.0, addrspace 5) 2214 ; CHECK: [[BUILD_VECTOR2:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[LOAD2]](s32), [[LOAD3]](s32) 2215 ; CHECK: [[COPY32:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 2216 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 2217 ; CHECK: [[COPY33:%[0-9]+]]:_(p1) = COPY [[DEF]](p1) 2218 ; CHECK: [[COPY34:%[0-9]+]]:_(p1) = COPY [[DEF]](p1) 2219 ; CHECK: G_STORE [[BUILD_VECTOR]](<32 x s32>), [[DEF]](p1) :: (volatile store (<32 x s32>) into `<32 x i32> addrspace(1)* undef`, addrspace 1) 2220 ; CHECK: G_STORE [[BUILD_VECTOR1]](<2 x s32>), [[COPY33]](p1) :: (volatile store (<2 x s32>) into `<2 x i32> addrspace(1)* undef`, addrspace 1) 2221 ; CHECK: G_STORE [[BUILD_VECTOR2]](<2 x s32>), [[COPY34]](p1) :: (volatile store (<2 x s32>) into `<2 x float> addrspace(1)* undef`, addrspace 1) 2222 ; CHECK: [[COPY35:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY32]] 2223 ; CHECK: S_SETPC_B64_return [[COPY35]] 2224 store volatile <32 x i32> %arg0, <32 x i32> addrspace(1)* undef 2225 store volatile <2 x i32> %arg1, <2 x i32> addrspace(1)* undef 2226 store volatile <2 x float> %arg2, <2 x float> addrspace(1)* undef 2227 ret void 2228} 2229 2230define void @void_func_v32i32_v2i16_v2f16(<32 x i32> %arg0, <2 x i16> %arg1, <2 x half> %arg2) #0 { 2231 ; CHECK-LABEL: name: void_func_v32i32_v2i16_v2f16 2232 ; CHECK: bb.1 (%ir-block.0): 2233 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr23, $vgpr24, $vgpr25, $vgpr26, $vgpr27, $vgpr28, $vgpr29, $vgpr30, $vgpr31, $sgpr30_sgpr31 2234 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 2235 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 2236 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 2237 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 2238 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 2239 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 2240 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 2241 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 2242 ; CHECK: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8 2243 ; CHECK: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9 2244 ; CHECK: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10 2245 ; CHECK: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11 2246 ; CHECK: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12 2247 ; CHECK: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13 2248 ; CHECK: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14 2249 ; CHECK: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15 2250 ; CHECK: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr16 2251 ; CHECK: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr17 2252 ; CHECK: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr18 2253 ; CHECK: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr19 2254 ; CHECK: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr20 2255 ; CHECK: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr21 2256 ; CHECK: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr22 2257 ; CHECK: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr23 2258 ; CHECK: [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr24 2259 ; CHECK: [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr25 2260 ; CHECK: [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr26 2261 ; CHECK: [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr27 2262 ; CHECK: [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr28 2263 ; CHECK: [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr29 2264 ; CHECK: [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr30 2265 ; CHECK: [[COPY31:%[0-9]+]]:_(s32) = COPY $vgpr31 2266 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<32 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32), [[COPY12]](s32), [[COPY13]](s32), [[COPY14]](s32), [[COPY15]](s32), [[COPY16]](s32), [[COPY17]](s32), [[COPY18]](s32), [[COPY19]](s32), [[COPY20]](s32), [[COPY21]](s32), [[COPY22]](s32), [[COPY23]](s32), [[COPY24]](s32), [[COPY25]](s32), [[COPY26]](s32), [[COPY27]](s32), [[COPY28]](s32), [[COPY29]](s32), [[COPY30]](s32), [[COPY31]](s32) 2267 ; CHECK: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.1 2268 ; CHECK: [[LOAD:%[0-9]+]]:_(<2 x s16>) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load (<2 x s16>) from %fixed-stack.1, align 16, addrspace 5) 2269 ; CHECK: [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.0 2270 ; CHECK: [[LOAD1:%[0-9]+]]:_(<2 x s16>) = G_LOAD [[FRAME_INDEX1]](p5) :: (invariant load (<2 x s16>) from %fixed-stack.0, addrspace 5) 2271 ; CHECK: [[COPY32:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 2272 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 2273 ; CHECK: [[COPY33:%[0-9]+]]:_(p1) = COPY [[DEF]](p1) 2274 ; CHECK: [[COPY34:%[0-9]+]]:_(p1) = COPY [[DEF]](p1) 2275 ; CHECK: G_STORE [[BUILD_VECTOR]](<32 x s32>), [[DEF]](p1) :: (volatile store (<32 x s32>) into `<32 x i32> addrspace(1)* undef`, addrspace 1) 2276 ; CHECK: G_STORE [[LOAD]](<2 x s16>), [[COPY33]](p1) :: (volatile store (<2 x s16>) into `<2 x i16> addrspace(1)* undef`, addrspace 1) 2277 ; CHECK: G_STORE [[LOAD1]](<2 x s16>), [[COPY34]](p1) :: (volatile store (<2 x s16>) into `<2 x half> addrspace(1)* undef`, addrspace 1) 2278 ; CHECK: [[COPY35:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY32]] 2279 ; CHECK: S_SETPC_B64_return [[COPY35]] 2280 store volatile <32 x i32> %arg0, <32 x i32> addrspace(1)* undef 2281 store volatile <2 x i16> %arg1, <2 x i16> addrspace(1)* undef 2282 store volatile <2 x half> %arg2, <2 x half> addrspace(1)* undef 2283 ret void 2284} 2285 2286define void @void_func_v32i32_v2i64_v2f64(<32 x i32> %arg0, <2 x i64> %arg1, <2 x double> %arg2) #0 { 2287 ; CHECK-LABEL: name: void_func_v32i32_v2i64_v2f64 2288 ; CHECK: bb.1 (%ir-block.0): 2289 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr23, $vgpr24, $vgpr25, $vgpr26, $vgpr27, $vgpr28, $vgpr29, $vgpr30, $vgpr31, $sgpr30_sgpr31 2290 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 2291 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 2292 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 2293 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 2294 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 2295 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 2296 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 2297 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 2298 ; CHECK: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8 2299 ; CHECK: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9 2300 ; CHECK: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10 2301 ; CHECK: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11 2302 ; CHECK: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12 2303 ; CHECK: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13 2304 ; CHECK: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14 2305 ; CHECK: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15 2306 ; CHECK: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr16 2307 ; CHECK: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr17 2308 ; CHECK: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr18 2309 ; CHECK: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr19 2310 ; CHECK: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr20 2311 ; CHECK: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr21 2312 ; CHECK: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr22 2313 ; CHECK: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr23 2314 ; CHECK: [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr24 2315 ; CHECK: [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr25 2316 ; CHECK: [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr26 2317 ; CHECK: [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr27 2318 ; CHECK: [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr28 2319 ; CHECK: [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr29 2320 ; CHECK: [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr30 2321 ; CHECK: [[COPY31:%[0-9]+]]:_(s32) = COPY $vgpr31 2322 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<32 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32), [[COPY12]](s32), [[COPY13]](s32), [[COPY14]](s32), [[COPY15]](s32), [[COPY16]](s32), [[COPY17]](s32), [[COPY18]](s32), [[COPY19]](s32), [[COPY20]](s32), [[COPY21]](s32), [[COPY22]](s32), [[COPY23]](s32), [[COPY24]](s32), [[COPY25]](s32), [[COPY26]](s32), [[COPY27]](s32), [[COPY28]](s32), [[COPY29]](s32), [[COPY30]](s32), [[COPY31]](s32) 2323 ; CHECK: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.7 2324 ; CHECK: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load (s32) from %fixed-stack.7, align 16, addrspace 5) 2325 ; CHECK: [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.6 2326 ; CHECK: [[LOAD1:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX1]](p5) :: (invariant load (s32) from %fixed-stack.6, addrspace 5) 2327 ; CHECK: [[FRAME_INDEX2:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.5 2328 ; CHECK: [[LOAD2:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX2]](p5) :: (invariant load (s32) from %fixed-stack.5, align 8, addrspace 5) 2329 ; CHECK: [[FRAME_INDEX3:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.4 2330 ; CHECK: [[LOAD3:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX3]](p5) :: (invariant load (s32) from %fixed-stack.4, addrspace 5) 2331 ; CHECK: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[LOAD]](s32), [[LOAD1]](s32) 2332 ; CHECK: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[LOAD2]](s32), [[LOAD3]](s32) 2333 ; CHECK: [[BUILD_VECTOR1:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64) 2334 ; CHECK: [[FRAME_INDEX4:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.3 2335 ; CHECK: [[LOAD4:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX4]](p5) :: (invariant load (s32) from %fixed-stack.3, align 16, addrspace 5) 2336 ; CHECK: [[FRAME_INDEX5:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.2 2337 ; CHECK: [[LOAD5:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX5]](p5) :: (invariant load (s32) from %fixed-stack.2, addrspace 5) 2338 ; CHECK: [[FRAME_INDEX6:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.1 2339 ; CHECK: [[LOAD6:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX6]](p5) :: (invariant load (s32) from %fixed-stack.1, align 8, addrspace 5) 2340 ; CHECK: [[FRAME_INDEX7:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.0 2341 ; CHECK: [[LOAD7:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX7]](p5) :: (invariant load (s32) from %fixed-stack.0, addrspace 5) 2342 ; CHECK: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[LOAD4]](s32), [[LOAD5]](s32) 2343 ; CHECK: [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[LOAD6]](s32), [[LOAD7]](s32) 2344 ; CHECK: [[BUILD_VECTOR2:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[MV2]](s64), [[MV3]](s64) 2345 ; CHECK: [[COPY32:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 2346 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 2347 ; CHECK: [[COPY33:%[0-9]+]]:_(p1) = COPY [[DEF]](p1) 2348 ; CHECK: [[COPY34:%[0-9]+]]:_(p1) = COPY [[DEF]](p1) 2349 ; CHECK: G_STORE [[BUILD_VECTOR]](<32 x s32>), [[DEF]](p1) :: (volatile store (<32 x s32>) into `<32 x i32> addrspace(1)* undef`, addrspace 1) 2350 ; CHECK: G_STORE [[BUILD_VECTOR1]](<2 x s64>), [[COPY33]](p1) :: (volatile store (<2 x s64>) into `<2 x i64> addrspace(1)* undef`, addrspace 1) 2351 ; CHECK: G_STORE [[BUILD_VECTOR2]](<2 x s64>), [[COPY34]](p1) :: (volatile store (<2 x s64>) into `<2 x double> addrspace(1)* undef`, addrspace 1) 2352 ; CHECK: [[COPY35:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY32]] 2353 ; CHECK: S_SETPC_B64_return [[COPY35]] 2354 store volatile <32 x i32> %arg0, <32 x i32> addrspace(1)* undef 2355 store volatile <2 x i64> %arg1, <2 x i64> addrspace(1)* undef 2356 store volatile <2 x double> %arg2, <2 x double> addrspace(1)* undef 2357 ret void 2358} 2359 2360define void @void_func_v32i32_v4i32_v4f32(<32 x i32> %arg0, <4 x i32> %arg1, <4 x float> %arg2) #0 { 2361 ; CHECK-LABEL: name: void_func_v32i32_v4i32_v4f32 2362 ; CHECK: bb.1 (%ir-block.0): 2363 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr23, $vgpr24, $vgpr25, $vgpr26, $vgpr27, $vgpr28, $vgpr29, $vgpr30, $vgpr31, $sgpr30_sgpr31 2364 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 2365 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 2366 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 2367 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 2368 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 2369 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 2370 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 2371 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 2372 ; CHECK: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8 2373 ; CHECK: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9 2374 ; CHECK: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10 2375 ; CHECK: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11 2376 ; CHECK: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12 2377 ; CHECK: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13 2378 ; CHECK: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14 2379 ; CHECK: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15 2380 ; CHECK: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr16 2381 ; CHECK: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr17 2382 ; CHECK: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr18 2383 ; CHECK: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr19 2384 ; CHECK: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr20 2385 ; CHECK: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr21 2386 ; CHECK: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr22 2387 ; CHECK: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr23 2388 ; CHECK: [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr24 2389 ; CHECK: [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr25 2390 ; CHECK: [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr26 2391 ; CHECK: [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr27 2392 ; CHECK: [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr28 2393 ; CHECK: [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr29 2394 ; CHECK: [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr30 2395 ; CHECK: [[COPY31:%[0-9]+]]:_(s32) = COPY $vgpr31 2396 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<32 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32), [[COPY12]](s32), [[COPY13]](s32), [[COPY14]](s32), [[COPY15]](s32), [[COPY16]](s32), [[COPY17]](s32), [[COPY18]](s32), [[COPY19]](s32), [[COPY20]](s32), [[COPY21]](s32), [[COPY22]](s32), [[COPY23]](s32), [[COPY24]](s32), [[COPY25]](s32), [[COPY26]](s32), [[COPY27]](s32), [[COPY28]](s32), [[COPY29]](s32), [[COPY30]](s32), [[COPY31]](s32) 2397 ; CHECK: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.7 2398 ; CHECK: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load (s32) from %fixed-stack.7, align 16, addrspace 5) 2399 ; CHECK: [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.6 2400 ; CHECK: [[LOAD1:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX1]](p5) :: (invariant load (s32) from %fixed-stack.6, addrspace 5) 2401 ; CHECK: [[FRAME_INDEX2:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.5 2402 ; CHECK: [[LOAD2:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX2]](p5) :: (invariant load (s32) from %fixed-stack.5, align 8, addrspace 5) 2403 ; CHECK: [[FRAME_INDEX3:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.4 2404 ; CHECK: [[LOAD3:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX3]](p5) :: (invariant load (s32) from %fixed-stack.4, addrspace 5) 2405 ; CHECK: [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[LOAD]](s32), [[LOAD1]](s32), [[LOAD2]](s32), [[LOAD3]](s32) 2406 ; CHECK: [[FRAME_INDEX4:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.3 2407 ; CHECK: [[LOAD4:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX4]](p5) :: (invariant load (s32) from %fixed-stack.3, align 16, addrspace 5) 2408 ; CHECK: [[FRAME_INDEX5:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.2 2409 ; CHECK: [[LOAD5:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX5]](p5) :: (invariant load (s32) from %fixed-stack.2, addrspace 5) 2410 ; CHECK: [[FRAME_INDEX6:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.1 2411 ; CHECK: [[LOAD6:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX6]](p5) :: (invariant load (s32) from %fixed-stack.1, align 8, addrspace 5) 2412 ; CHECK: [[FRAME_INDEX7:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.0 2413 ; CHECK: [[LOAD7:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX7]](p5) :: (invariant load (s32) from %fixed-stack.0, addrspace 5) 2414 ; CHECK: [[BUILD_VECTOR2:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[LOAD4]](s32), [[LOAD5]](s32), [[LOAD6]](s32), [[LOAD7]](s32) 2415 ; CHECK: [[COPY32:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 2416 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 2417 ; CHECK: [[COPY33:%[0-9]+]]:_(p1) = COPY [[DEF]](p1) 2418 ; CHECK: [[COPY34:%[0-9]+]]:_(p1) = COPY [[DEF]](p1) 2419 ; CHECK: G_STORE [[BUILD_VECTOR]](<32 x s32>), [[DEF]](p1) :: (volatile store (<32 x s32>) into `<32 x i32> addrspace(1)* undef`, addrspace 1) 2420 ; CHECK: G_STORE [[BUILD_VECTOR1]](<4 x s32>), [[COPY33]](p1) :: (volatile store (<4 x s32>) into `<4 x i32> addrspace(1)* undef`, addrspace 1) 2421 ; CHECK: G_STORE [[BUILD_VECTOR2]](<4 x s32>), [[COPY34]](p1) :: (volatile store (<4 x s32>) into `<4 x float> addrspace(1)* undef`, addrspace 1) 2422 ; CHECK: [[COPY35:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY32]] 2423 ; CHECK: S_SETPC_B64_return [[COPY35]] 2424 store volatile <32 x i32> %arg0, <32 x i32> addrspace(1)* undef 2425 store volatile <4 x i32> %arg1, <4 x i32> addrspace(1)* undef 2426 store volatile <4 x float> %arg2, <4 x float> addrspace(1)* undef 2427 ret void 2428} 2429 2430define void @void_func_v32i32_v8i32_v8f32(<32 x i32> %arg0, <8 x i32> %arg1, <8 x float> %arg2) #0 { 2431 ; CHECK-LABEL: name: void_func_v32i32_v8i32_v8f32 2432 ; CHECK: bb.1 (%ir-block.0): 2433 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr23, $vgpr24, $vgpr25, $vgpr26, $vgpr27, $vgpr28, $vgpr29, $vgpr30, $vgpr31, $sgpr30_sgpr31 2434 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 2435 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 2436 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 2437 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 2438 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 2439 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 2440 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 2441 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 2442 ; CHECK: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8 2443 ; CHECK: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9 2444 ; CHECK: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10 2445 ; CHECK: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11 2446 ; CHECK: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12 2447 ; CHECK: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13 2448 ; CHECK: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14 2449 ; CHECK: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15 2450 ; CHECK: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr16 2451 ; CHECK: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr17 2452 ; CHECK: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr18 2453 ; CHECK: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr19 2454 ; CHECK: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr20 2455 ; CHECK: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr21 2456 ; CHECK: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr22 2457 ; CHECK: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr23 2458 ; CHECK: [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr24 2459 ; CHECK: [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr25 2460 ; CHECK: [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr26 2461 ; CHECK: [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr27 2462 ; CHECK: [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr28 2463 ; CHECK: [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr29 2464 ; CHECK: [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr30 2465 ; CHECK: [[COPY31:%[0-9]+]]:_(s32) = COPY $vgpr31 2466 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<32 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32), [[COPY12]](s32), [[COPY13]](s32), [[COPY14]](s32), [[COPY15]](s32), [[COPY16]](s32), [[COPY17]](s32), [[COPY18]](s32), [[COPY19]](s32), [[COPY20]](s32), [[COPY21]](s32), [[COPY22]](s32), [[COPY23]](s32), [[COPY24]](s32), [[COPY25]](s32), [[COPY26]](s32), [[COPY27]](s32), [[COPY28]](s32), [[COPY29]](s32), [[COPY30]](s32), [[COPY31]](s32) 2467 ; CHECK: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.15 2468 ; CHECK: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load (s32) from %fixed-stack.15, align 16, addrspace 5) 2469 ; CHECK: [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.14 2470 ; CHECK: [[LOAD1:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX1]](p5) :: (invariant load (s32) from %fixed-stack.14, addrspace 5) 2471 ; CHECK: [[FRAME_INDEX2:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.13 2472 ; CHECK: [[LOAD2:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX2]](p5) :: (invariant load (s32) from %fixed-stack.13, align 8, addrspace 5) 2473 ; CHECK: [[FRAME_INDEX3:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.12 2474 ; CHECK: [[LOAD3:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX3]](p5) :: (invariant load (s32) from %fixed-stack.12, addrspace 5) 2475 ; CHECK: [[FRAME_INDEX4:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.11 2476 ; CHECK: [[LOAD4:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX4]](p5) :: (invariant load (s32) from %fixed-stack.11, align 16, addrspace 5) 2477 ; CHECK: [[FRAME_INDEX5:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.10 2478 ; CHECK: [[LOAD5:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX5]](p5) :: (invariant load (s32) from %fixed-stack.10, addrspace 5) 2479 ; CHECK: [[FRAME_INDEX6:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.9 2480 ; CHECK: [[LOAD6:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX6]](p5) :: (invariant load (s32) from %fixed-stack.9, align 8, addrspace 5) 2481 ; CHECK: [[FRAME_INDEX7:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.8 2482 ; CHECK: [[LOAD7:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX7]](p5) :: (invariant load (s32) from %fixed-stack.8, addrspace 5) 2483 ; CHECK: [[BUILD_VECTOR1:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[LOAD]](s32), [[LOAD1]](s32), [[LOAD2]](s32), [[LOAD3]](s32), [[LOAD4]](s32), [[LOAD5]](s32), [[LOAD6]](s32), [[LOAD7]](s32) 2484 ; CHECK: [[FRAME_INDEX8:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.7 2485 ; CHECK: [[LOAD8:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX8]](p5) :: (invariant load (s32) from %fixed-stack.7, align 16, addrspace 5) 2486 ; CHECK: [[FRAME_INDEX9:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.6 2487 ; CHECK: [[LOAD9:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX9]](p5) :: (invariant load (s32) from %fixed-stack.6, addrspace 5) 2488 ; CHECK: [[FRAME_INDEX10:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.5 2489 ; CHECK: [[LOAD10:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX10]](p5) :: (invariant load (s32) from %fixed-stack.5, align 8, addrspace 5) 2490 ; CHECK: [[FRAME_INDEX11:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.4 2491 ; CHECK: [[LOAD11:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX11]](p5) :: (invariant load (s32) from %fixed-stack.4, addrspace 5) 2492 ; CHECK: [[FRAME_INDEX12:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.3 2493 ; CHECK: [[LOAD12:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX12]](p5) :: (invariant load (s32) from %fixed-stack.3, align 16, addrspace 5) 2494 ; CHECK: [[FRAME_INDEX13:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.2 2495 ; CHECK: [[LOAD13:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX13]](p5) :: (invariant load (s32) from %fixed-stack.2, addrspace 5) 2496 ; CHECK: [[FRAME_INDEX14:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.1 2497 ; CHECK: [[LOAD14:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX14]](p5) :: (invariant load (s32) from %fixed-stack.1, align 8, addrspace 5) 2498 ; CHECK: [[FRAME_INDEX15:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.0 2499 ; CHECK: [[LOAD15:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX15]](p5) :: (invariant load (s32) from %fixed-stack.0, addrspace 5) 2500 ; CHECK: [[BUILD_VECTOR2:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[LOAD8]](s32), [[LOAD9]](s32), [[LOAD10]](s32), [[LOAD11]](s32), [[LOAD12]](s32), [[LOAD13]](s32), [[LOAD14]](s32), [[LOAD15]](s32) 2501 ; CHECK: [[COPY32:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 2502 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 2503 ; CHECK: [[COPY33:%[0-9]+]]:_(p1) = COPY [[DEF]](p1) 2504 ; CHECK: [[COPY34:%[0-9]+]]:_(p1) = COPY [[DEF]](p1) 2505 ; CHECK: G_STORE [[BUILD_VECTOR]](<32 x s32>), [[DEF]](p1) :: (volatile store (<32 x s32>) into `<32 x i32> addrspace(1)* undef`, addrspace 1) 2506 ; CHECK: G_STORE [[BUILD_VECTOR1]](<8 x s32>), [[COPY33]](p1) :: (volatile store (<8 x s32>) into `<8 x i32> addrspace(1)* undef`, addrspace 1) 2507 ; CHECK: G_STORE [[BUILD_VECTOR2]](<8 x s32>), [[COPY34]](p1) :: (volatile store (<8 x s32>) into `<8 x float> addrspace(1)* undef`, addrspace 1) 2508 ; CHECK: [[COPY35:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY32]] 2509 ; CHECK: S_SETPC_B64_return [[COPY35]] 2510 store volatile <32 x i32> %arg0, <32 x i32> addrspace(1)* undef 2511 store volatile <8 x i32> %arg1, <8 x i32> addrspace(1)* undef 2512 store volatile <8 x float> %arg2, <8 x float> addrspace(1)* undef 2513 ret void 2514} 2515 2516define void @void_func_v32i32_v16i32_v16f32(<32 x i32> %arg0, <16 x i32> %arg1, <16 x float> %arg2) #0 { 2517 ; CHECK-LABEL: name: void_func_v32i32_v16i32_v16f32 2518 ; CHECK: bb.1 (%ir-block.0): 2519 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr23, $vgpr24, $vgpr25, $vgpr26, $vgpr27, $vgpr28, $vgpr29, $vgpr30, $vgpr31, $sgpr30_sgpr31 2520 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 2521 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 2522 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 2523 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 2524 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 2525 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 2526 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 2527 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 2528 ; CHECK: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8 2529 ; CHECK: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9 2530 ; CHECK: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10 2531 ; CHECK: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11 2532 ; CHECK: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12 2533 ; CHECK: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13 2534 ; CHECK: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14 2535 ; CHECK: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15 2536 ; CHECK: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr16 2537 ; CHECK: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr17 2538 ; CHECK: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr18 2539 ; CHECK: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr19 2540 ; CHECK: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr20 2541 ; CHECK: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr21 2542 ; CHECK: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr22 2543 ; CHECK: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr23 2544 ; CHECK: [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr24 2545 ; CHECK: [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr25 2546 ; CHECK: [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr26 2547 ; CHECK: [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr27 2548 ; CHECK: [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr28 2549 ; CHECK: [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr29 2550 ; CHECK: [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr30 2551 ; CHECK: [[COPY31:%[0-9]+]]:_(s32) = COPY $vgpr31 2552 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<32 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32), [[COPY12]](s32), [[COPY13]](s32), [[COPY14]](s32), [[COPY15]](s32), [[COPY16]](s32), [[COPY17]](s32), [[COPY18]](s32), [[COPY19]](s32), [[COPY20]](s32), [[COPY21]](s32), [[COPY22]](s32), [[COPY23]](s32), [[COPY24]](s32), [[COPY25]](s32), [[COPY26]](s32), [[COPY27]](s32), [[COPY28]](s32), [[COPY29]](s32), [[COPY30]](s32), [[COPY31]](s32) 2553 ; CHECK: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.31 2554 ; CHECK: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load (s32) from %fixed-stack.31, align 16, addrspace 5) 2555 ; CHECK: [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.30 2556 ; CHECK: [[LOAD1:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX1]](p5) :: (invariant load (s32) from %fixed-stack.30, addrspace 5) 2557 ; CHECK: [[FRAME_INDEX2:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.29 2558 ; CHECK: [[LOAD2:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX2]](p5) :: (invariant load (s32) from %fixed-stack.29, align 8, addrspace 5) 2559 ; CHECK: [[FRAME_INDEX3:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.28 2560 ; CHECK: [[LOAD3:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX3]](p5) :: (invariant load (s32) from %fixed-stack.28, addrspace 5) 2561 ; CHECK: [[FRAME_INDEX4:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.27 2562 ; CHECK: [[LOAD4:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX4]](p5) :: (invariant load (s32) from %fixed-stack.27, align 16, addrspace 5) 2563 ; CHECK: [[FRAME_INDEX5:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.26 2564 ; CHECK: [[LOAD5:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX5]](p5) :: (invariant load (s32) from %fixed-stack.26, addrspace 5) 2565 ; CHECK: [[FRAME_INDEX6:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.25 2566 ; CHECK: [[LOAD6:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX6]](p5) :: (invariant load (s32) from %fixed-stack.25, align 8, addrspace 5) 2567 ; CHECK: [[FRAME_INDEX7:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.24 2568 ; CHECK: [[LOAD7:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX7]](p5) :: (invariant load (s32) from %fixed-stack.24, addrspace 5) 2569 ; CHECK: [[FRAME_INDEX8:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.23 2570 ; CHECK: [[LOAD8:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX8]](p5) :: (invariant load (s32) from %fixed-stack.23, align 16, addrspace 5) 2571 ; CHECK: [[FRAME_INDEX9:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.22 2572 ; CHECK: [[LOAD9:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX9]](p5) :: (invariant load (s32) from %fixed-stack.22, addrspace 5) 2573 ; CHECK: [[FRAME_INDEX10:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.21 2574 ; CHECK: [[LOAD10:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX10]](p5) :: (invariant load (s32) from %fixed-stack.21, align 8, addrspace 5) 2575 ; CHECK: [[FRAME_INDEX11:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.20 2576 ; CHECK: [[LOAD11:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX11]](p5) :: (invariant load (s32) from %fixed-stack.20, addrspace 5) 2577 ; CHECK: [[FRAME_INDEX12:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.19 2578 ; CHECK: [[LOAD12:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX12]](p5) :: (invariant load (s32) from %fixed-stack.19, align 16, addrspace 5) 2579 ; CHECK: [[FRAME_INDEX13:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.18 2580 ; CHECK: [[LOAD13:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX13]](p5) :: (invariant load (s32) from %fixed-stack.18, addrspace 5) 2581 ; CHECK: [[FRAME_INDEX14:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.17 2582 ; CHECK: [[LOAD14:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX14]](p5) :: (invariant load (s32) from %fixed-stack.17, align 8, addrspace 5) 2583 ; CHECK: [[FRAME_INDEX15:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.16 2584 ; CHECK: [[LOAD15:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX15]](p5) :: (invariant load (s32) from %fixed-stack.16, addrspace 5) 2585 ; CHECK: [[BUILD_VECTOR1:%[0-9]+]]:_(<16 x s32>) = G_BUILD_VECTOR [[LOAD]](s32), [[LOAD1]](s32), [[LOAD2]](s32), [[LOAD3]](s32), [[LOAD4]](s32), [[LOAD5]](s32), [[LOAD6]](s32), [[LOAD7]](s32), [[LOAD8]](s32), [[LOAD9]](s32), [[LOAD10]](s32), [[LOAD11]](s32), [[LOAD12]](s32), [[LOAD13]](s32), [[LOAD14]](s32), [[LOAD15]](s32) 2586 ; CHECK: [[FRAME_INDEX16:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.15 2587 ; CHECK: [[LOAD16:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX16]](p5) :: (invariant load (s32) from %fixed-stack.15, align 16, addrspace 5) 2588 ; CHECK: [[FRAME_INDEX17:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.14 2589 ; CHECK: [[LOAD17:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX17]](p5) :: (invariant load (s32) from %fixed-stack.14, addrspace 5) 2590 ; CHECK: [[FRAME_INDEX18:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.13 2591 ; CHECK: [[LOAD18:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX18]](p5) :: (invariant load (s32) from %fixed-stack.13, align 8, addrspace 5) 2592 ; CHECK: [[FRAME_INDEX19:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.12 2593 ; CHECK: [[LOAD19:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX19]](p5) :: (invariant load (s32) from %fixed-stack.12, addrspace 5) 2594 ; CHECK: [[FRAME_INDEX20:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.11 2595 ; CHECK: [[LOAD20:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX20]](p5) :: (invariant load (s32) from %fixed-stack.11, align 16, addrspace 5) 2596 ; CHECK: [[FRAME_INDEX21:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.10 2597 ; CHECK: [[LOAD21:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX21]](p5) :: (invariant load (s32) from %fixed-stack.10, addrspace 5) 2598 ; CHECK: [[FRAME_INDEX22:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.9 2599 ; CHECK: [[LOAD22:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX22]](p5) :: (invariant load (s32) from %fixed-stack.9, align 8, addrspace 5) 2600 ; CHECK: [[FRAME_INDEX23:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.8 2601 ; CHECK: [[LOAD23:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX23]](p5) :: (invariant load (s32) from %fixed-stack.8, addrspace 5) 2602 ; CHECK: [[FRAME_INDEX24:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.7 2603 ; CHECK: [[LOAD24:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX24]](p5) :: (invariant load (s32) from %fixed-stack.7, align 16, addrspace 5) 2604 ; CHECK: [[FRAME_INDEX25:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.6 2605 ; CHECK: [[LOAD25:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX25]](p5) :: (invariant load (s32) from %fixed-stack.6, addrspace 5) 2606 ; CHECK: [[FRAME_INDEX26:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.5 2607 ; CHECK: [[LOAD26:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX26]](p5) :: (invariant load (s32) from %fixed-stack.5, align 8, addrspace 5) 2608 ; CHECK: [[FRAME_INDEX27:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.4 2609 ; CHECK: [[LOAD27:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX27]](p5) :: (invariant load (s32) from %fixed-stack.4, addrspace 5) 2610 ; CHECK: [[FRAME_INDEX28:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.3 2611 ; CHECK: [[LOAD28:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX28]](p5) :: (invariant load (s32) from %fixed-stack.3, align 16, addrspace 5) 2612 ; CHECK: [[FRAME_INDEX29:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.2 2613 ; CHECK: [[LOAD29:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX29]](p5) :: (invariant load (s32) from %fixed-stack.2, addrspace 5) 2614 ; CHECK: [[FRAME_INDEX30:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.1 2615 ; CHECK: [[LOAD30:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX30]](p5) :: (invariant load (s32) from %fixed-stack.1, align 8, addrspace 5) 2616 ; CHECK: [[FRAME_INDEX31:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.0 2617 ; CHECK: [[LOAD31:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX31]](p5) :: (invariant load (s32) from %fixed-stack.0, addrspace 5) 2618 ; CHECK: [[BUILD_VECTOR2:%[0-9]+]]:_(<16 x s32>) = G_BUILD_VECTOR [[LOAD16]](s32), [[LOAD17]](s32), [[LOAD18]](s32), [[LOAD19]](s32), [[LOAD20]](s32), [[LOAD21]](s32), [[LOAD22]](s32), [[LOAD23]](s32), [[LOAD24]](s32), [[LOAD25]](s32), [[LOAD26]](s32), [[LOAD27]](s32), [[LOAD28]](s32), [[LOAD29]](s32), [[LOAD30]](s32), [[LOAD31]](s32) 2619 ; CHECK: [[COPY32:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 2620 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 2621 ; CHECK: [[COPY33:%[0-9]+]]:_(p1) = COPY [[DEF]](p1) 2622 ; CHECK: [[COPY34:%[0-9]+]]:_(p1) = COPY [[DEF]](p1) 2623 ; CHECK: G_STORE [[BUILD_VECTOR]](<32 x s32>), [[DEF]](p1) :: (volatile store (<32 x s32>) into `<32 x i32> addrspace(1)* undef`, addrspace 1) 2624 ; CHECK: G_STORE [[BUILD_VECTOR1]](<16 x s32>), [[COPY33]](p1) :: (volatile store (<16 x s32>) into `<16 x i32> addrspace(1)* undef`, addrspace 1) 2625 ; CHECK: G_STORE [[BUILD_VECTOR2]](<16 x s32>), [[COPY34]](p1) :: (volatile store (<16 x s32>) into `<16 x float> addrspace(1)* undef`, addrspace 1) 2626 ; CHECK: [[COPY35:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY32]] 2627 ; CHECK: S_SETPC_B64_return [[COPY35]] 2628 store volatile <32 x i32> %arg0, <32 x i32> addrspace(1)* undef 2629 store volatile <16 x i32> %arg1, <16 x i32> addrspace(1)* undef 2630 store volatile <16 x float> %arg2, <16 x float> addrspace(1)* undef 2631 ret void 2632} 2633 2634; Make sure v3 isn't a wasted register because of v3 types being promoted to v4 2635define void @void_func_v3f32_wasted_reg(<3 x float> %arg0, i32 %arg1) #0 { 2636 ; CHECK-LABEL: name: void_func_v3f32_wasted_reg 2637 ; CHECK: bb.1 (%ir-block.0): 2638 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $sgpr30_sgpr31 2639 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 2640 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 2641 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 2642 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32) 2643 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 2644 ; CHECK: [[COPY4:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 2645 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 2646 ; CHECK: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1 2647 ; CHECK: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 2 2648 ; CHECK: [[DEF:%[0-9]+]]:_(p3) = G_IMPLICIT_DEF 2649 ; CHECK: [[COPY5:%[0-9]+]]:_(p3) = COPY [[DEF]](p3) 2650 ; CHECK: [[EVEC:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[BUILD_VECTOR]](<3 x s32>), [[C]](s32) 2651 ; CHECK: [[EVEC1:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[BUILD_VECTOR]](<3 x s32>), [[C1]](s32) 2652 ; CHECK: [[EVEC2:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[BUILD_VECTOR]](<3 x s32>), [[C2]](s32) 2653 ; CHECK: G_STORE [[EVEC]](s32), [[DEF]](p3) :: (volatile store (s32) into `float addrspace(3)* undef`, addrspace 3) 2654 ; CHECK: G_STORE [[EVEC1]](s32), [[DEF]](p3) :: (volatile store (s32) into `float addrspace(3)* undef`, addrspace 3) 2655 ; CHECK: G_STORE [[EVEC2]](s32), [[DEF]](p3) :: (volatile store (s32) into `float addrspace(3)* undef`, addrspace 3) 2656 ; CHECK: G_STORE [[COPY3]](s32), [[COPY5]](p3) :: (volatile store (s32) into `i32 addrspace(3)* undef`, addrspace 3) 2657 ; CHECK: [[COPY6:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY4]] 2658 ; CHECK: S_SETPC_B64_return [[COPY6]] 2659 %arg0.0 = extractelement <3 x float> %arg0, i32 0 2660 %arg0.1 = extractelement <3 x float> %arg0, i32 1 2661 %arg0.2 = extractelement <3 x float> %arg0, i32 2 2662 store volatile float %arg0.0, float addrspace(3)* undef 2663 store volatile float %arg0.1, float addrspace(3)* undef 2664 store volatile float %arg0.2, float addrspace(3)* undef 2665 store volatile i32 %arg1, i32 addrspace(3)* undef 2666 ret void 2667} 2668 2669define void @void_func_v3i32_wasted_reg(<3 x i32> %arg0, i32 %arg1) #0 { 2670 ; CHECK-LABEL: name: void_func_v3i32_wasted_reg 2671 ; CHECK: bb.1 (%ir-block.0): 2672 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $sgpr30_sgpr31 2673 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 2674 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 2675 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 2676 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32) 2677 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 2678 ; CHECK: [[COPY4:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 2679 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 2680 ; CHECK: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1 2681 ; CHECK: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 2 2682 ; CHECK: [[DEF:%[0-9]+]]:_(p3) = G_IMPLICIT_DEF 2683 ; CHECK: [[EVEC:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[BUILD_VECTOR]](<3 x s32>), [[C]](s32) 2684 ; CHECK: [[EVEC1:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[BUILD_VECTOR]](<3 x s32>), [[C1]](s32) 2685 ; CHECK: [[EVEC2:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[BUILD_VECTOR]](<3 x s32>), [[C2]](s32) 2686 ; CHECK: G_STORE [[EVEC]](s32), [[DEF]](p3) :: (volatile store (s32) into `i32 addrspace(3)* undef`, addrspace 3) 2687 ; CHECK: G_STORE [[EVEC1]](s32), [[DEF]](p3) :: (volatile store (s32) into `i32 addrspace(3)* undef`, addrspace 3) 2688 ; CHECK: G_STORE [[EVEC2]](s32), [[DEF]](p3) :: (volatile store (s32) into `i32 addrspace(3)* undef`, addrspace 3) 2689 ; CHECK: G_STORE [[COPY3]](s32), [[DEF]](p3) :: (volatile store (s32) into `i32 addrspace(3)* undef`, addrspace 3) 2690 ; CHECK: [[COPY5:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY4]] 2691 ; CHECK: S_SETPC_B64_return [[COPY5]] 2692 %arg0.0 = extractelement <3 x i32> %arg0, i32 0 2693 %arg0.1 = extractelement <3 x i32> %arg0, i32 1 2694 %arg0.2 = extractelement <3 x i32> %arg0, i32 2 2695 store volatile i32 %arg0.0, i32 addrspace(3)* undef 2696 store volatile i32 %arg0.1, i32 addrspace(3)* undef 2697 store volatile i32 %arg0.2, i32 addrspace(3)* undef 2698 store volatile i32 %arg1, i32 addrspace(3)* undef 2699 ret void 2700} 2701 2702; Check there is no crash. 2703define void @void_func_v16i8(<16 x i8> %arg0) #0 { 2704 ; CHECK-LABEL: name: void_func_v16i8 2705 ; CHECK: bb.1 (%ir-block.0): 2706 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $sgpr30_sgpr31 2707 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 2708 ; CHECK: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32) 2709 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 2710 ; CHECK: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32) 2711 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 2712 ; CHECK: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[COPY2]](s32) 2713 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 2714 ; CHECK: [[TRUNC3:%[0-9]+]]:_(s16) = G_TRUNC [[COPY3]](s32) 2715 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 2716 ; CHECK: [[TRUNC4:%[0-9]+]]:_(s16) = G_TRUNC [[COPY4]](s32) 2717 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 2718 ; CHECK: [[TRUNC5:%[0-9]+]]:_(s16) = G_TRUNC [[COPY5]](s32) 2719 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 2720 ; CHECK: [[TRUNC6:%[0-9]+]]:_(s16) = G_TRUNC [[COPY6]](s32) 2721 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 2722 ; CHECK: [[TRUNC7:%[0-9]+]]:_(s16) = G_TRUNC [[COPY7]](s32) 2723 ; CHECK: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8 2724 ; CHECK: [[TRUNC8:%[0-9]+]]:_(s16) = G_TRUNC [[COPY8]](s32) 2725 ; CHECK: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9 2726 ; CHECK: [[TRUNC9:%[0-9]+]]:_(s16) = G_TRUNC [[COPY9]](s32) 2727 ; CHECK: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10 2728 ; CHECK: [[TRUNC10:%[0-9]+]]:_(s16) = G_TRUNC [[COPY10]](s32) 2729 ; CHECK: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11 2730 ; CHECK: [[TRUNC11:%[0-9]+]]:_(s16) = G_TRUNC [[COPY11]](s32) 2731 ; CHECK: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12 2732 ; CHECK: [[TRUNC12:%[0-9]+]]:_(s16) = G_TRUNC [[COPY12]](s32) 2733 ; CHECK: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13 2734 ; CHECK: [[TRUNC13:%[0-9]+]]:_(s16) = G_TRUNC [[COPY13]](s32) 2735 ; CHECK: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14 2736 ; CHECK: [[TRUNC14:%[0-9]+]]:_(s16) = G_TRUNC [[COPY14]](s32) 2737 ; CHECK: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15 2738 ; CHECK: [[TRUNC15:%[0-9]+]]:_(s16) = G_TRUNC [[COPY15]](s32) 2739 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<16 x s16>) = G_BUILD_VECTOR [[TRUNC]](s16), [[TRUNC1]](s16), [[TRUNC2]](s16), [[TRUNC3]](s16), [[TRUNC4]](s16), [[TRUNC5]](s16), [[TRUNC6]](s16), [[TRUNC7]](s16), [[TRUNC8]](s16), [[TRUNC9]](s16), [[TRUNC10]](s16), [[TRUNC11]](s16), [[TRUNC12]](s16), [[TRUNC13]](s16), [[TRUNC14]](s16), [[TRUNC15]](s16) 2740 ; CHECK: [[TRUNC16:%[0-9]+]]:_(<16 x s8>) = G_TRUNC [[BUILD_VECTOR]](<16 x s16>) 2741 ; CHECK: [[COPY16:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 2742 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 2743 ; CHECK: G_STORE [[TRUNC16]](<16 x s8>), [[DEF]](p1) :: (volatile store (<16 x s8>) into `<16 x i8> addrspace(1)* undef`, addrspace 1) 2744 ; CHECK: [[COPY17:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY16]] 2745 ; CHECK: S_SETPC_B64_return [[COPY17]] 2746 store volatile <16 x i8> %arg0, <16 x i8> addrspace(1)* undef 2747 ret void 2748} 2749 2750; Check there is no crash. 2751define void @void_func_v32i32_v16i8(<32 x i32> %arg0, <16 x i8> %arg1) #0 { 2752 ; CHECK-LABEL: name: void_func_v32i32_v16i8 2753 ; CHECK: bb.1 (%ir-block.0): 2754 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr23, $vgpr24, $vgpr25, $vgpr26, $vgpr27, $vgpr28, $vgpr29, $vgpr30, $vgpr31, $sgpr30_sgpr31 2755 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 2756 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 2757 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 2758 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 2759 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4 2760 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 2761 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 2762 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7 2763 ; CHECK: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8 2764 ; CHECK: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9 2765 ; CHECK: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10 2766 ; CHECK: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11 2767 ; CHECK: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr12 2768 ; CHECK: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr13 2769 ; CHECK: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr14 2770 ; CHECK: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr15 2771 ; CHECK: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr16 2772 ; CHECK: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr17 2773 ; CHECK: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr18 2774 ; CHECK: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr19 2775 ; CHECK: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr20 2776 ; CHECK: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr21 2777 ; CHECK: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr22 2778 ; CHECK: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr23 2779 ; CHECK: [[COPY24:%[0-9]+]]:_(s32) = COPY $vgpr24 2780 ; CHECK: [[COPY25:%[0-9]+]]:_(s32) = COPY $vgpr25 2781 ; CHECK: [[COPY26:%[0-9]+]]:_(s32) = COPY $vgpr26 2782 ; CHECK: [[COPY27:%[0-9]+]]:_(s32) = COPY $vgpr27 2783 ; CHECK: [[COPY28:%[0-9]+]]:_(s32) = COPY $vgpr28 2784 ; CHECK: [[COPY29:%[0-9]+]]:_(s32) = COPY $vgpr29 2785 ; CHECK: [[COPY30:%[0-9]+]]:_(s32) = COPY $vgpr30 2786 ; CHECK: [[COPY31:%[0-9]+]]:_(s32) = COPY $vgpr31 2787 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<32 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32), [[COPY12]](s32), [[COPY13]](s32), [[COPY14]](s32), [[COPY15]](s32), [[COPY16]](s32), [[COPY17]](s32), [[COPY18]](s32), [[COPY19]](s32), [[COPY20]](s32), [[COPY21]](s32), [[COPY22]](s32), [[COPY23]](s32), [[COPY24]](s32), [[COPY25]](s32), [[COPY26]](s32), [[COPY27]](s32), [[COPY28]](s32), [[COPY29]](s32), [[COPY30]](s32), [[COPY31]](s32) 2788 ; CHECK: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.15 2789 ; CHECK: [[LOAD:%[0-9]+]]:_(s16) = G_LOAD [[FRAME_INDEX]](p5) :: (invariant load (s16) from %fixed-stack.15, align 16, addrspace 5) 2790 ; CHECK: [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.14 2791 ; CHECK: [[LOAD1:%[0-9]+]]:_(s16) = G_LOAD [[FRAME_INDEX1]](p5) :: (invariant load (s16) from %fixed-stack.14, align 4, addrspace 5) 2792 ; CHECK: [[FRAME_INDEX2:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.13 2793 ; CHECK: [[LOAD2:%[0-9]+]]:_(s16) = G_LOAD [[FRAME_INDEX2]](p5) :: (invariant load (s16) from %fixed-stack.13, align 8, addrspace 5) 2794 ; CHECK: [[FRAME_INDEX3:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.12 2795 ; CHECK: [[LOAD3:%[0-9]+]]:_(s16) = G_LOAD [[FRAME_INDEX3]](p5) :: (invariant load (s16) from %fixed-stack.12, align 4, addrspace 5) 2796 ; CHECK: [[FRAME_INDEX4:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.11 2797 ; CHECK: [[LOAD4:%[0-9]+]]:_(s16) = G_LOAD [[FRAME_INDEX4]](p5) :: (invariant load (s16) from %fixed-stack.11, align 16, addrspace 5) 2798 ; CHECK: [[FRAME_INDEX5:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.10 2799 ; CHECK: [[LOAD5:%[0-9]+]]:_(s16) = G_LOAD [[FRAME_INDEX5]](p5) :: (invariant load (s16) from %fixed-stack.10, align 4, addrspace 5) 2800 ; CHECK: [[FRAME_INDEX6:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.9 2801 ; CHECK: [[LOAD6:%[0-9]+]]:_(s16) = G_LOAD [[FRAME_INDEX6]](p5) :: (invariant load (s16) from %fixed-stack.9, align 8, addrspace 5) 2802 ; CHECK: [[FRAME_INDEX7:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.8 2803 ; CHECK: [[LOAD7:%[0-9]+]]:_(s16) = G_LOAD [[FRAME_INDEX7]](p5) :: (invariant load (s16) from %fixed-stack.8, align 4, addrspace 5) 2804 ; CHECK: [[FRAME_INDEX8:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.7 2805 ; CHECK: [[LOAD8:%[0-9]+]]:_(s16) = G_LOAD [[FRAME_INDEX8]](p5) :: (invariant load (s16) from %fixed-stack.7, align 16, addrspace 5) 2806 ; CHECK: [[FRAME_INDEX9:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.6 2807 ; CHECK: [[LOAD9:%[0-9]+]]:_(s16) = G_LOAD [[FRAME_INDEX9]](p5) :: (invariant load (s16) from %fixed-stack.6, align 4, addrspace 5) 2808 ; CHECK: [[FRAME_INDEX10:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.5 2809 ; CHECK: [[LOAD10:%[0-9]+]]:_(s16) = G_LOAD [[FRAME_INDEX10]](p5) :: (invariant load (s16) from %fixed-stack.5, align 8, addrspace 5) 2810 ; CHECK: [[FRAME_INDEX11:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.4 2811 ; CHECK: [[LOAD11:%[0-9]+]]:_(s16) = G_LOAD [[FRAME_INDEX11]](p5) :: (invariant load (s16) from %fixed-stack.4, align 4, addrspace 5) 2812 ; CHECK: [[FRAME_INDEX12:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.3 2813 ; CHECK: [[LOAD12:%[0-9]+]]:_(s16) = G_LOAD [[FRAME_INDEX12]](p5) :: (invariant load (s16) from %fixed-stack.3, align 16, addrspace 5) 2814 ; CHECK: [[FRAME_INDEX13:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.2 2815 ; CHECK: [[LOAD13:%[0-9]+]]:_(s16) = G_LOAD [[FRAME_INDEX13]](p5) :: (invariant load (s16) from %fixed-stack.2, align 4, addrspace 5) 2816 ; CHECK: [[FRAME_INDEX14:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.1 2817 ; CHECK: [[LOAD14:%[0-9]+]]:_(s16) = G_LOAD [[FRAME_INDEX14]](p5) :: (invariant load (s16) from %fixed-stack.1, align 8, addrspace 5) 2818 ; CHECK: [[FRAME_INDEX15:%[0-9]+]]:_(p5) = G_FRAME_INDEX %fixed-stack.0 2819 ; CHECK: [[LOAD15:%[0-9]+]]:_(s16) = G_LOAD [[FRAME_INDEX15]](p5) :: (invariant load (s16) from %fixed-stack.0, align 4, addrspace 5) 2820 ; CHECK: [[BUILD_VECTOR1:%[0-9]+]]:_(<16 x s16>) = G_BUILD_VECTOR [[LOAD]](s16), [[LOAD1]](s16), [[LOAD2]](s16), [[LOAD3]](s16), [[LOAD4]](s16), [[LOAD5]](s16), [[LOAD6]](s16), [[LOAD7]](s16), [[LOAD8]](s16), [[LOAD9]](s16), [[LOAD10]](s16), [[LOAD11]](s16), [[LOAD12]](s16), [[LOAD13]](s16), [[LOAD14]](s16), [[LOAD15]](s16) 2821 ; CHECK: [[TRUNC:%[0-9]+]]:_(<16 x s8>) = G_TRUNC [[BUILD_VECTOR1]](<16 x s16>) 2822 ; CHECK: [[COPY32:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 2823 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 2824 ; CHECK: [[COPY33:%[0-9]+]]:_(p1) = COPY [[DEF]](p1) 2825 ; CHECK: G_STORE [[BUILD_VECTOR]](<32 x s32>), [[DEF]](p1) :: (volatile store (<32 x s32>) into `<32 x i32> addrspace(1)* undef`, addrspace 1) 2826 ; CHECK: G_STORE [[TRUNC]](<16 x s8>), [[COPY33]](p1) :: (volatile store (<16 x s8>) into `<16 x i8> addrspace(1)* undef`, addrspace 1) 2827 ; CHECK: [[COPY34:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY32]] 2828 ; CHECK: S_SETPC_B64_return [[COPY34]] 2829 store volatile <32 x i32> %arg0, <32 x i32> addrspace(1)* undef 2830 store volatile <16 x i8> %arg1, <16 x i8> addrspace(1)* undef 2831 ret void 2832} 2833 2834define void @pointer_in_struct_argument({i8 addrspace(3)*, i8 addrspace(1)*} %arg0, i8 %pad, {i8 addrspace(3)*, i8 addrspace(1234)*} %arg1) { 2835 ; CHECK-LABEL: name: pointer_in_struct_argument 2836 ; CHECK: bb.1 (%ir-block.0): 2837 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $sgpr30_sgpr31 2838 ; CHECK: [[COPY:%[0-9]+]]:_(p3) = COPY $vgpr0 2839 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 2840 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 2841 ; CHECK: [[MV:%[0-9]+]]:_(p1) = G_MERGE_VALUES [[COPY1]](s32), [[COPY2]](s32) 2842 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 2843 ; CHECK: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY3]](s32) 2844 ; CHECK: [[TRUNC1:%[0-9]+]]:_(s8) = G_TRUNC [[TRUNC]](s16) 2845 ; CHECK: [[COPY4:%[0-9]+]]:_(p3) = COPY $vgpr4 2846 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5 2847 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6 2848 ; CHECK: [[MV1:%[0-9]+]]:_(p1234) = G_MERGE_VALUES [[COPY5]](s32), [[COPY6]](s32) 2849 ; CHECK: [[COPY7:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 2850 ; CHECK: [[C:%[0-9]+]]:_(p1) = G_CONSTANT i64 0 2851 ; CHECK: [[COPY8:%[0-9]+]]:_(p1) = COPY [[C]](p1) 2852 ; CHECK: [[COPY9:%[0-9]+]]:_(p1) = COPY [[C]](p1) 2853 ; CHECK: [[COPY10:%[0-9]+]]:_(p1) = COPY [[C]](p1) 2854 ; CHECK: G_STORE [[COPY]](p3), [[C]](p1) :: (volatile store (p3) into `i8 addrspace(3)* addrspace(1)* null`, addrspace 1) 2855 ; CHECK: G_STORE [[MV]](p1), [[COPY8]](p1) :: (volatile store (p1) into `i8 addrspace(1)* addrspace(1)* null`, addrspace 1) 2856 ; CHECK: G_STORE [[TRUNC1]](s8), [[COPY9]](p1) :: (volatile store (s8) into `i8 addrspace(1)* null`, addrspace 1) 2857 ; CHECK: G_STORE [[COPY4]](p3), [[C]](p1) :: (volatile store (p3) into `i8 addrspace(3)* addrspace(1)* null`, addrspace 1) 2858 ; CHECK: G_STORE [[MV1]](p1234), [[COPY10]](p1) :: (volatile store (p1234) into `i8 addrspace(1234)* addrspace(1)* null`, addrspace 1) 2859 ; CHECK: [[COPY11:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY7]] 2860 ; CHECK: S_SETPC_B64_return [[COPY11]] 2861 %val0 = extractvalue {i8 addrspace(3)*, i8 addrspace(1)*} %arg0, 0 2862 %val1 = extractvalue {i8 addrspace(3)*, i8 addrspace(1)*} %arg0, 1 2863 %val2 = extractvalue {i8 addrspace(3)*, i8 addrspace(1234)*} %arg1, 0 2864 %val3 = extractvalue {i8 addrspace(3)*, i8 addrspace(1234)*} %arg1, 1 2865 store volatile i8 addrspace(3)* %val0, i8 addrspace(3)* addrspace(1)* null 2866 store volatile i8 addrspace(1)* %val1, i8 addrspace(1)* addrspace(1)* null 2867 store volatile i8 %pad, i8 addrspace(1)* null 2868 store volatile i8 addrspace(3)* %val2, i8 addrspace(3)* addrspace(1)* null 2869 store volatile i8 addrspace(1234)* %val3, i8 addrspace(1234)* addrspace(1)* null 2870 ret void 2871} 2872 2873define void @vector_ptr_in_struct_arg({ <2 x i8 addrspace(1)*>, <2 x i8 addrspace(3)*> } %arg) { 2874 ; CHECK-LABEL: name: vector_ptr_in_struct_arg 2875 ; CHECK: bb.1 (%ir-block.0): 2876 ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $sgpr30_sgpr31 2877 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 2878 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 2879 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 2880 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3 2881 ; CHECK: [[MV:%[0-9]+]]:_(p1) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32) 2882 ; CHECK: [[MV1:%[0-9]+]]:_(p1) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32) 2883 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x p1>) = G_BUILD_VECTOR [[MV]](p1), [[MV1]](p1) 2884 ; CHECK: [[COPY4:%[0-9]+]]:_(p3) = COPY $vgpr4 2885 ; CHECK: [[COPY5:%[0-9]+]]:_(p3) = COPY $vgpr5 2886 ; CHECK: [[BUILD_VECTOR1:%[0-9]+]]:_(<2 x p3>) = G_BUILD_VECTOR [[COPY4]](p3), [[COPY5]](p3) 2887 ; CHECK: [[COPY6:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31 2888 ; CHECK: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 2889 ; CHECK: G_STORE [[BUILD_VECTOR]](<2 x p1>), [[DEF]](p1) :: (store (<2 x p1>) into `{ <2 x i8 addrspace(1)*>, <2 x i8 addrspace(3)*> } addrspace(1)* undef`, addrspace 1) 2890 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 16 2891 ; CHECK: [[PTR_ADD:%[0-9]+]]:_(p1) = G_PTR_ADD [[DEF]], [[C]](s64) 2892 ; CHECK: G_STORE [[BUILD_VECTOR1]](<2 x p3>), [[PTR_ADD]](p1) :: (store (<2 x p3>) into `{ <2 x i8 addrspace(1)*>, <2 x i8 addrspace(3)*> } addrspace(1)* undef` + 16, align 16, addrspace 1) 2893 ; CHECK: [[COPY7:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY6]] 2894 ; CHECK: S_SETPC_B64_return [[COPY7]] 2895 store { <2 x i8 addrspace(1)*>, <2 x i8 addrspace(3)*> } %arg, { <2 x i8 addrspace(1)*>, <2 x i8 addrspace(3)*> } addrspace(1)* undef 2896 ret void 2897} 2898 2899attributes #0 = { nounwind } 2900