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