1; RUN: llc -mtriple=amdgcn -amdgpu-codegenprepare-break-large-phis-threshold=4096 < %s | FileCheck %s 2; RUN: llc -mtriple=amdgcn -mcpu=tonga -amdgpu-codegenprepare-break-large-phis-threshold=4096 < %s | FileCheck %s 3; RUN: llc -mtriple=amdgcn -mcpu=gfx900 -amdgpu-codegenprepare-break-large-phis-threshold=4096 < %s | FileCheck %s 4; RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -amdgpu-codegenprepare-break-large-phis-threshold=4096 < %s | FileCheck %s 5 6; This test just checks that the compiler doesn't crash. 7 8; CHECK-LABEL: {{^}}v32i8_to_v8i32: 9define amdgpu_ps float @v32i8_to_v8i32(ptr addrspace(4) inreg) #0 { 10entry: 11 %1 = load <32 x i8>, ptr addrspace(4) %0 12 %2 = bitcast <32 x i8> %1 to <8 x i32> 13 %3 = extractelement <8 x i32> %2, i32 1 14 %4 = icmp ne i32 %3, 0 15 %5 = select i1 %4, float 0.0, float 1.0 16 ret float %5 17} 18 19; CHECK-LABEL: {{^}}i8ptr_v16i8ptr: 20; CHECK: s_endpgm 21define amdgpu_kernel void @i8ptr_v16i8ptr(ptr addrspace(1) %out, ptr addrspace(1) %in) { 22entry: 23 %0 = load <16 x i8>, ptr addrspace(1) %in 24 store <16 x i8> %0, ptr addrspace(1) %out 25 ret void 26} 27 28define amdgpu_kernel void @f32_to_v2i16(ptr addrspace(1) %out, ptr addrspace(1) %in) nounwind { 29 %load = load float, ptr addrspace(1) %in, align 4 30 %fadd32 = fadd float %load, 1.0 31 %bc = bitcast float %fadd32 to <2 x i16> 32 %add.bitcast = add <2 x i16> %bc, <i16 2, i16 2> 33 store <2 x i16> %add.bitcast, ptr addrspace(1) %out 34 ret void 35} 36 37define amdgpu_kernel void @v2i16_to_f32(ptr addrspace(1) %out, ptr addrspace(1) %in) nounwind { 38 %load = load <2 x i16>, ptr addrspace(1) %in, align 4 39 %add.v2i16 = add <2 x i16> %load, <i16 2, i16 2> 40 %bc = bitcast <2 x i16> %add.v2i16 to float 41 %fadd.bitcast = fadd float %bc, 1.0 42 store float %fadd.bitcast, ptr addrspace(1) %out 43 ret void 44} 45 46define amdgpu_kernel void @f32_to_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %in) nounwind { 47 %load = load float, ptr addrspace(1) %in, align 4 48 %fadd32 = fadd float %load, 1.0 49 %bc = bitcast float %fadd32 to <2 x half> 50 %add.bitcast = fadd <2 x half> %bc, <half 2.0, half 2.0> 51 store <2 x half> %add.bitcast, ptr addrspace(1) %out 52 ret void 53} 54 55define amdgpu_kernel void @v2f16_to_f32(ptr addrspace(1) %out, ptr addrspace(1) %in) nounwind { 56 %load = load <2 x half>, ptr addrspace(1) %in, align 4 57 %add.v2f16 = fadd <2 x half> %load, <half 2.0, half 2.0> 58 %bc = bitcast <2 x half> %add.v2f16 to float 59 %fadd.bitcast = fadd float %bc, 1.0 60 store float %fadd.bitcast, ptr addrspace(1) %out 61 ret void 62} 63 64define amdgpu_kernel void @v4i8_to_i32(ptr addrspace(1) %out, ptr addrspace(1) %in) nounwind { 65 %load = load <4 x i8>, ptr addrspace(1) %in, align 4 66 %bc = bitcast <4 x i8> %load to i32 67 store i32 %bc, ptr addrspace(1) %out, align 4 68 ret void 69} 70 71define amdgpu_kernel void @i32_to_v4i8(ptr addrspace(1) %out, ptr addrspace(1) %in) nounwind { 72 %load = load i32, ptr addrspace(1) %in, align 4 73 %bc = bitcast i32 %load to <4 x i8> 74 store <4 x i8> %bc, ptr addrspace(1) %out, align 4 75 ret void 76} 77 78; CHECK-LABEL: {{^}}bitcast_v2i32_to_f64: 79; CHECK: s_endpgm 80define amdgpu_kernel void @bitcast_v2i32_to_f64(ptr addrspace(1) %out, ptr addrspace(1) %in) { 81 %val = load <2 x i32>, ptr addrspace(1) %in, align 8 82 %add = add <2 x i32> %val, <i32 4, i32 9> 83 %bc = bitcast <2 x i32> %add to double 84 %fadd.bc = fadd double %bc, 1.0 85 store double %fadd.bc, ptr addrspace(1) %out, align 8 86 ret void 87} 88 89; CHECK-LABEL: {{^}}bitcast_f64_to_v2i32: 90; CHECK: s_endpgm 91define amdgpu_kernel void @bitcast_f64_to_v2i32(ptr addrspace(1) %out, ptr addrspace(1) %in) { 92 %val = load double, ptr addrspace(1) %in, align 8 93 %add = fadd double %val, 4.0 94 %bc = bitcast double %add to <2 x i32> 95 store <2 x i32> %bc, ptr addrspace(1) %out, align 8 96 ret void 97} 98 99; CHECK-LABEL: {{^}}bitcast_v2i64_to_v2f64: 100define amdgpu_kernel void @bitcast_v2i64_to_v2f64(i32 %cond, ptr addrspace(1) %out, <2 x i64> %value) { 101entry: 102 %cmp0 = icmp eq i32 %cond, 0 103 br i1 %cmp0, label %if, label %end 104 105if: 106 %cast = bitcast <2 x i64> %value to <2 x double> 107 br label %end 108 109end: 110 %phi = phi <2 x double> [zeroinitializer, %entry], [%cast, %if] 111 store <2 x double> %phi, ptr addrspace(1) %out 112 ret void 113} 114 115; CHECK-LABEL: {{^}}bitcast_v2f64_to_v2i64: 116define amdgpu_kernel void @bitcast_v2f64_to_v2i64(i32 %cond, ptr addrspace(1) %out, <2 x double> %value) { 117entry: 118 %cmp0 = icmp eq i32 %cond, 0 119 br i1 %cmp0, label %if, label %end 120 121if: 122 %cast = bitcast <2 x double> %value to <2 x i64> 123 br label %end 124 125end: 126 %phi = phi <2 x i64> [zeroinitializer, %entry], [%cast, %if] 127 store <2 x i64> %phi, ptr addrspace(1) %out 128 ret void 129} 130 131; CHECK-LABEL: {{^}}v4i16_to_f64: 132define amdgpu_kernel void @v4i16_to_f64(ptr addrspace(1) %out, ptr addrspace(1) %in) nounwind { 133 %load = load <4 x i16>, ptr addrspace(1) %in, align 4 134 %add.v4i16 = add <4 x i16> %load, <i16 4, i16 4, i16 4, i16 4> 135 %bc = bitcast <4 x i16> %add.v4i16 to double 136 %fadd.bitcast = fadd double %bc, 1.0 137 store double %fadd.bitcast, ptr addrspace(1) %out 138 ret void 139} 140 141; CHECK-LABEL: {{^}}v4f16_to_f64: 142define amdgpu_kernel void @v4f16_to_f64(ptr addrspace(1) %out, ptr addrspace(1) %in) nounwind { 143 %load = load <4 x half>, ptr addrspace(1) %in, align 4 144 %add.v4half = fadd <4 x half> %load, <half 4.0, half 4.0, half 4.0, half 4.0> 145 %bc = bitcast <4 x half> %add.v4half to double 146 %fadd.bitcast = fadd double %bc, 1.0 147 store double %fadd.bitcast, ptr addrspace(1) %out 148 ret void 149} 150 151; CHECK-LABEL: {{^}}f64_to_v4f16: 152define amdgpu_kernel void @f64_to_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %in) nounwind { 153 %load = load double, ptr addrspace(1) %in, align 4 154 %fadd32 = fadd double %load, 1.0 155 %bc = bitcast double %fadd32 to <4 x half> 156 %add.bitcast = fadd <4 x half> %bc, <half 2.0, half 2.0, half 2.0, half 2.0> 157 store <4 x half> %add.bitcast, ptr addrspace(1) %out 158 ret void 159} 160 161; CHECK-LABEL: {{^}}f64_to_v4i16: 162define amdgpu_kernel void @f64_to_v4i16(ptr addrspace(1) %out, ptr addrspace(1) %in) nounwind { 163 %load = load double, ptr addrspace(1) %in, align 4 164 %fadd32 = fadd double %load, 1.0 165 %bc = bitcast double %fadd32 to <4 x i16> 166 %add.bitcast = add <4 x i16> %bc, <i16 2, i16 2, i16 2, i16 2> 167 store <4 x i16> %add.bitcast, ptr addrspace(1) %out 168 ret void 169} 170 171; CHECK-LABEL: {{^}}v4i16_to_i64: 172define amdgpu_kernel void @v4i16_to_i64(ptr addrspace(1) %out, ptr addrspace(1) %in) nounwind { 173 %load = load <4 x i16>, ptr addrspace(1) %in, align 4 174 %add.v4i16 = add <4 x i16> %load, <i16 4, i16 4, i16 4, i16 4> 175 %bc = bitcast <4 x i16> %add.v4i16 to i64 176 %add.bitcast = add i64 %bc, 1 177 store i64 %add.bitcast, ptr addrspace(1) %out 178 ret void 179} 180 181; CHECK-LABEL: {{^}}v4f16_to_i64: 182define amdgpu_kernel void @v4f16_to_i64(ptr addrspace(1) %out, ptr addrspace(1) %in) nounwind { 183 %load = load <4 x half>, ptr addrspace(1) %in, align 4 184 %add.v4half = fadd <4 x half> %load, <half 4.0, half 4.0, half 4.0, half 4.0> 185 %bc = bitcast <4 x half> %add.v4half to i64 186 %add.bitcast = add i64 %bc, 1 187 store i64 %add.bitcast, ptr addrspace(1) %out 188 ret void 189} 190 191; CHECK-LABEL: {{^}}bitcast_i64_to_v4i16: 192define amdgpu_kernel void @bitcast_i64_to_v4i16(ptr addrspace(1) %out, ptr addrspace(1) %in) { 193 %val = load i64, ptr addrspace(1) %in, align 8 194 %add = add i64 %val, 4 195 %bc = bitcast i64 %add to <4 x i16> 196 %add.v4i16 = add <4 x i16> %bc, <i16 1, i16 2, i16 3, i16 4> 197 store <4 x i16> %add.v4i16, ptr addrspace(1) %out, align 8 198 ret void 199} 200 201; CHECK-LABEL: {{^}}bitcast_i64_to_v4f16: 202define amdgpu_kernel void @bitcast_i64_to_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %in) { 203 %val = load i64, ptr addrspace(1) %in, align 8 204 %add = add i64 %val, 4 205 %bc = bitcast i64 %add to <4 x half> 206 %add.v4i16 = fadd <4 x half> %bc, <half 1.0, half 2.0, half 4.0, half 8.0> 207 store <4 x half> %add.v4i16, ptr addrspace(1) %out, align 8 208 ret void 209} 210 211; CHECK-LABEL: {{^}}v4i16_to_v2f32: 212define amdgpu_kernel void @v4i16_to_v2f32(ptr addrspace(1) %out, ptr addrspace(1) %in) nounwind { 213 %load = load <4 x i16>, ptr addrspace(1) %in, align 4 214 %add.v4i16 = add <4 x i16> %load, <i16 4, i16 4, i16 4, i16 4> 215 %bc = bitcast <4 x i16> %add.v4i16 to <2 x float> 216 %fadd.bitcast = fadd <2 x float> %bc, <float 1.0, float 1.0> 217 store <2 x float> %fadd.bitcast, ptr addrspace(1) %out 218 ret void 219} 220 221; CHECK-LABEL: {{^}}v4f16_to_v2f32: 222define amdgpu_kernel void @v4f16_to_v2f32(ptr addrspace(1) %out, ptr addrspace(1) %in) nounwind { 223 %load = load <4 x half>, ptr addrspace(1) %in, align 4 224 %add.v4half = fadd <4 x half> %load, <half 4.0, half 4.0, half 4.0, half 4.0> 225 %bc = bitcast <4 x half> %add.v4half to <2 x float> 226 %fadd.bitcast = fadd <2 x float> %bc, <float 1.0, float 1.0> 227 store <2 x float> %fadd.bitcast, ptr addrspace(1) %out 228 ret void 229} 230 231; CHECK-LABEL: {{^}}v2f32_to_v4i16: 232define amdgpu_kernel void @v2f32_to_v4i16(ptr addrspace(1) %out, ptr addrspace(1) %in) nounwind { 233 %load = load <2 x float>, ptr addrspace(1) %in, align 4 234 %add.v2f32 = fadd <2 x float> %load, <float 2.0, float 4.0> 235 %bc = bitcast <2 x float> %add.v2f32 to <4 x i16> 236 %add.bitcast = add <4 x i16> %bc, <i16 1, i16 2, i16 3, i16 4> 237 store <4 x i16> %add.bitcast, ptr addrspace(1) %out 238 ret void 239} 240 241; CHECK-LABEL: {{^}}v2f32_to_v4f16: 242define amdgpu_kernel void @v2f32_to_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %in) nounwind { 243 %load = load <2 x float>, ptr addrspace(1) %in, align 4 244 %add.v2f32 = fadd <2 x float> %load, <float 2.0, float 4.0> 245 %bc = bitcast <2 x float> %add.v2f32 to <4 x half> 246 %add.bitcast = fadd <4 x half> %bc, <half 1.0, half 2.0, half 4.0, half 8.0> 247 store <4 x half> %add.bitcast, ptr addrspace(1) %out 248 ret void 249} 250 251; CHECK-LABEL: {{^}}v4i16_to_v2i32: 252define amdgpu_kernel void @v4i16_to_v2i32(ptr addrspace(1) %out, ptr addrspace(1) %in) nounwind { 253 %load = load <4 x i16>, ptr addrspace(1) %in, align 4 254 %add.v4i16 = add <4 x i16> %load, <i16 4, i16 4, i16 4, i16 4> 255 %bc = bitcast <4 x i16> %add.v4i16 to <2 x i32> 256 %add.bitcast = add <2 x i32> %bc, <i32 1, i32 1> 257 store <2 x i32> %add.bitcast, ptr addrspace(1) %out 258 ret void 259} 260 261; CHECK-LABEL: {{^}}v4f16_to_v2i32: 262define amdgpu_kernel void @v4f16_to_v2i32(ptr addrspace(1) %out, ptr addrspace(1) %in) nounwind { 263 %load = load <4 x half>, ptr addrspace(1) %in, align 4 264 %add.v4half = fadd <4 x half> %load, <half 4.0, half 4.0, half 4.0, half 4.0> 265 %bc = bitcast <4 x half> %add.v4half to <2 x i32> 266 %add.bitcast = add <2 x i32> %bc, <i32 1, i32 1> 267 store <2 x i32> %add.bitcast, ptr addrspace(1) %out 268 ret void 269} 270 271; CHECK-LABEL: {{^}}v2i32_to_v4i16: 272define amdgpu_kernel void @v2i32_to_v4i16(ptr addrspace(1) %out, ptr addrspace(1) %in) nounwind { 273 %load = load <2 x i32>, ptr addrspace(1) %in, align 4 274 %add.v2i32 = add <2 x i32> %load, <i32 2, i32 4> 275 %bc = bitcast <2 x i32> %add.v2i32 to <4 x i16> 276 %add.bitcast = add <4 x i16> %bc, <i16 1, i16 2, i16 3, i16 4> 277 store <4 x i16> %add.bitcast, ptr addrspace(1) %out 278 ret void 279} 280 281; CHECK-LABEL: {{^}}v2i32_to_v4f16: 282define amdgpu_kernel void @v2i32_to_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %in) nounwind { 283 %load = load <2 x i32>, ptr addrspace(1) %in, align 4 284 %add.v2i32 = add <2 x i32> %load, <i32 2, i32 4> 285 %bc = bitcast <2 x i32> %add.v2i32 to <4 x half> 286 %add.bitcast = fadd <4 x half> %bc, <half 1.0, half 2.0, half 4.0, half 8.0> 287 store <4 x half> %add.bitcast, ptr addrspace(1) %out 288 ret void 289} 290 291declare <4 x float> @llvm.amdgcn.s.buffer.load.v4f32(<4 x i32>, i32, i32 immarg) 292 293; CHECK-LABEL: {{^}}bitcast_v4f32_to_v2i64: 294; CHECK: s_buffer_load_{{dwordx4|b128}} 295define <2 x i64> @bitcast_v4f32_to_v2i64(<2 x i64> %arg) { 296 %val = call <4 x float> @llvm.amdgcn.s.buffer.load.v4f32(<4 x i32> undef, i32 0, i32 0) 297 %cast = bitcast <4 x float> %val to <2 x i64> 298 %div = udiv <2 x i64> %cast, %arg 299 ret <2 x i64> %div 300} 301 302declare half @llvm.canonicalize.f16(half) 303 304; CHECK-LABEL: {{^}}bitcast_f32_to_v1i32: 305define amdgpu_kernel void @bitcast_f32_to_v1i32(ptr addrspace(1) %out) { 306 %f16 = call arcp afn half @llvm.canonicalize.f16(half 0xH03F0) 307 %f32 = fpext half %f16 to float 308 %v = bitcast float %f32 to <1 x i32> 309 %v1 = extractelement <1 x i32> %v, i32 0 310 store i32 %v1, ptr addrspace(1) %out 311 ret void 312} 313 314; CHECK-LABEL: {{^}}bitcast_v4i64_to_v16i16: 315define amdgpu_kernel void @bitcast_v4i64_to_v16i16(i32 %cond, ptr addrspace(1) %out, <4 x i64> %value) { 316entry: 317 %cmp0 = icmp eq i32 %cond, 0 318 br i1 %cmp0, label %if, label %end 319 320if: 321 %phi_value = phi <4 x i64> [zeroinitializer, %entry], [%value, %if] 322 %cast = bitcast <4 x i64> %phi_value to <16 x i16> 323 %cmp1 = icmp eq i32 %cond, 1 324 br i1 %cmp1, label %if, label %end 325 326end: 327 %phi_cast = phi <16 x i16> [zeroinitializer, %entry], [%cast, %if] 328 store <16 x i16> %phi_cast, ptr addrspace(1) %out 329 ret void 330} 331 332; CHECK-LABEL: {{^}}bitcast_v4f64_to_v16f16: 333define amdgpu_kernel void @bitcast_v4f64_to_v16f16(i32 %cond, ptr addrspace(1) %out, <4 x double> %value) { 334entry: 335 %cmp0 = icmp eq i32 %cond, 0 336 br i1 %cmp0, label %if, label %end 337 338if: 339 %phi_value = phi <4 x double> [zeroinitializer, %entry], [%value, %if] 340 %cast = bitcast <4 x double> %phi_value to <16 x half> 341 %cmp1 = icmp eq i32 %cond, 1 342 br i1 %cmp1, label %if, label %end 343 344end: 345 %phi_cast = phi <16 x half> [zeroinitializer, %entry], [%cast, %if] 346 store <16 x half> %phi_cast, ptr addrspace(1) %out 347 ret void 348} 349 350; CHECK-LABEL: {{^}}bitcast_v16i16_to_v4i64: 351define amdgpu_kernel void @bitcast_v16i16_to_v4i64(i32 %cond, ptr addrspace(1) %out, <16 x i16> %value) { 352entry: 353 %cmp0 = icmp eq i32 %cond, 0 354 br i1 %cmp0, label %if, label %end 355 356if: 357 %phi_value = phi <16 x i16> [zeroinitializer, %entry], [%value, %if] 358 %cast = bitcast <16 x i16> %phi_value to <4 x i64> 359 %cmp1 = icmp eq i32 %cond, 1 360 br i1 %cmp1, label %if, label %end 361 362end: 363 %phi_cast = phi <4 x i64> [zeroinitializer, %entry], [%cast, %if] 364 store <4 x i64> %phi_cast, ptr addrspace(1) %out 365 ret void 366} 367 368; CHECK-LABEL: {{^}}bitcast_v16f16_to_v4f64: 369define amdgpu_kernel void @bitcast_v16f16_to_v4f64(i32 %cond, ptr addrspace(1) %out, <16 x half> %value) { 370entry: 371 %cmp0 = icmp eq i32 %cond, 0 372 br i1 %cmp0, label %if, label %end 373 374if: 375 %phi_value = phi <16 x half> [zeroinitializer, %entry], [%value, %if] 376 %cast = bitcast <16 x half> %phi_value to <4 x double> 377 %cmp1 = icmp eq i32 %cond, 1 378 br i1 %cmp1, label %if, label %end 379 380end: 381 %phi_cast = phi <4 x double> [zeroinitializer, %entry], [%cast, %if] 382 store <4 x double> %phi_cast, ptr addrspace(1) %out 383 ret void 384} 385 386; CHECK-LABEL: {{^}}bitcast_v20f16_to_v5f64: 387; CHECK: ScratchSize: 0 388define amdgpu_kernel void @bitcast_v20f16_to_v5f64(i32 %cond, ptr addrspace(1) %out, <20 x half> %value) { 389entry: 390 %cmp0 = icmp eq i32 %cond, 0 391 br i1 %cmp0, label %if, label %end 392 393if: 394 %phi_value = phi <20 x half> [zeroinitializer, %entry], [%value, %if] 395 %cast = bitcast <20 x half> %phi_value to <5 x double> 396 %cmp1 = icmp eq i32 %cond, 1 397 br i1 %cmp1, label %if, label %end 398 399end: 400 %phi_cast = phi <5 x double> [zeroinitializer, %entry], [%cast, %if] 401 store <5 x double> %phi_cast, ptr addrspace(1) %out 402 ret void 403} 404 405; CHECK-LABEL: {{^}}bitcast_v10f32_to_v5f64: 406; CHECK: ScratchSize: 0 407define amdgpu_kernel void @bitcast_v10f32_to_v5f64(i32 %cond, ptr addrspace(1) %out, <10 x float> %value) { 408entry: 409 %cmp0 = icmp eq i32 %cond, 0 410 br i1 %cmp0, label %if, label %end 411 412if: 413 %phi_value = phi <10 x float> [zeroinitializer, %entry], [%value, %if] 414 %cast = bitcast <10 x float> %phi_value to <5 x double> 415 %cmp1 = icmp eq i32 %cond, 1 416 br i1 %cmp1, label %if, label %end 417 418end: 419 %phi_cast = phi <5 x double> [zeroinitializer, %entry], [%cast, %if] 420 store <5 x double> %phi_cast, ptr addrspace(1) %out 421 ret void 422} 423 424; CHECK-LABEL: {{^}}bitcast_v10i32_to_v5f64: 425; CHECK: ScratchSize: 0 426define amdgpu_kernel void @bitcast_v10i32_to_v5f64(i32 %cond, ptr addrspace(1) %out, <10 x i32> %value) { 427entry: 428 %cmp0 = icmp eq i32 %cond, 0 429 br i1 %cmp0, label %if, label %end 430 431if: 432 %phi_value = phi <10 x i32> [zeroinitializer, %entry], [%value, %if] 433 %cast = bitcast <10 x i32> %phi_value to <5 x double> 434 %cmp1 = icmp eq i32 %cond, 1 435 br i1 %cmp1, label %if, label %end 436 437end: 438 %phi_cast = phi <5 x double> [zeroinitializer, %entry], [%cast, %if] 439 store <5 x double> %phi_cast, ptr addrspace(1) %out 440 ret void 441} 442 443; CHECK-LABEL: {{^}}bitcast_v10f32_to_v5i64: 444; CHECK: ScratchSize: 0 445define amdgpu_kernel void @bitcast_v10f32_to_v5i64(i32 %cond, ptr addrspace(1) %out, <10 x float> %value) { 446entry: 447 %cmp0 = icmp eq i32 %cond, 0 448 br i1 %cmp0, label %if, label %end 449 450if: 451 %phi_value = phi <10 x float> [zeroinitializer, %entry], [%value, %if] 452 %cast = bitcast <10 x float> %phi_value to <5 x i64> 453 %cmp1 = icmp eq i32 %cond, 1 454 br i1 %cmp1, label %if, label %end 455 456end: 457 %phi_cast = phi <5 x i64> [zeroinitializer, %entry], [%cast, %if] 458 store <5 x i64> %phi_cast, ptr addrspace(1) %out 459 ret void 460} 461 462; CHECK-LABEL: {{^}}bitcast_v10i32_to_v5i64: 463; CHECK: ScratchSize: 0 464define amdgpu_kernel void @bitcast_v10i32_to_v5i64(i32 %cond, ptr addrspace(1) %out, <10 x i32> %value) { 465entry: 466 %cmp0 = icmp eq i32 %cond, 0 467 br i1 %cmp0, label %if, label %end 468 469if: 470 %phi_value = phi <10 x i32> [zeroinitializer, %entry], [%value, %if] 471 %cast = bitcast <10 x i32> %phi_value to <5 x i64> 472 %cmp1 = icmp eq i32 %cond, 1 473 br i1 %cmp1, label %if, label %end 474 475end: 476 %phi_cast = phi <5 x i64> [zeroinitializer, %entry], [%cast, %if] 477 store <5 x i64> %phi_cast, ptr addrspace(1) %out 478 ret void 479} 480 481; CHECK-LABEL: {{^}}bitcast_v40i8_to_v5f64: 482; CHECK: ScratchSize: 0 483define amdgpu_kernel void @bitcast_v40i8_to_v5f64(i32 %cond, ptr addrspace(1) %out, <40 x i8> %value) { 484entry: 485 %cmp0 = icmp eq i32 %cond, 0 486 br i1 %cmp0, label %if, label %end 487 488if: 489 %phi_value = phi <40 x i8> [zeroinitializer, %entry], [%value, %if] 490 %cast = bitcast <40 x i8> %phi_value to <5 x double> 491 %cmp1 = icmp eq i32 %cond, 1 492 br i1 %cmp1, label %if, label %end 493 494end: 495 %phi_cast = phi <5 x double> [zeroinitializer, %entry], [%cast, %if] 496 store <5 x double> %phi_cast, ptr addrspace(1) %out 497 ret void 498} 499 500; CHECK-LABEL: {{^}}bitcast_v40i8_to_v5i64: 501; CHECK: ScratchSize: 0 502define amdgpu_kernel void @bitcast_v40i8_to_v5i64(i32 %cond, ptr addrspace(1) %out, <40 x i8> %value) { 503entry: 504 %cmp0 = icmp eq i32 %cond, 0 505 br i1 %cmp0, label %if, label %end 506 507if: 508 %phi_value = phi <40 x i8> [zeroinitializer, %entry], [%value, %if] 509 %cast = bitcast <40 x i8> %phi_value to <5 x i64> 510 %cmp1 = icmp eq i32 %cond, 1 511 br i1 %cmp1, label %if, label %end 512 513end: 514 %phi_cast = phi <5 x i64> [zeroinitializer, %entry], [%cast, %if] 515 store <5 x i64> %phi_cast, ptr addrspace(1) %out 516 ret void 517} 518 519; CHECK-LABEL: {{^}}bitcast_v5f64_to_v10f32: 520; CHECK: ScratchSize: 0 521define amdgpu_kernel void @bitcast_v5f64_to_v10f32(i32 %cond, ptr addrspace(1) %out, <5 x double> %value) { 522entry: 523 %cmp0 = icmp eq i32 %cond, 0 524 br i1 %cmp0, label %if, label %end 525 526if: 527 %phi_value = phi <5 x double> [zeroinitializer, %entry], [%value, %if] 528 %cast = bitcast <5 x double> %phi_value to <10 x float> 529 %cmp1 = icmp eq i32 %cond, 1 530 br i1 %cmp1, label %if, label %end 531 532end: 533 %phi_cast = phi <10 x float> [zeroinitializer, %entry], [%cast, %if] 534 store <10 x float> %phi_cast, ptr addrspace(1) %out 535 ret void 536} 537 538; CHECK-LABEL: {{^}}bitcast_v5f64_to_v10i32: 539; CHECK: ScratchSize: 0 540define amdgpu_kernel void @bitcast_v5f64_to_v10i32(i32 %cond, ptr addrspace(1) %out, <5 x double> %value) { 541entry: 542 %cmp0 = icmp eq i32 %cond, 0 543 br i1 %cmp0, label %if, label %end 544 545if: 546 %phi_value = phi <5 x double> [zeroinitializer, %entry], [%value, %if] 547 %cast = bitcast <5 x double> %phi_value to <10 x i32> 548 %cmp1 = icmp eq i32 %cond, 1 549 br i1 %cmp1, label %if, label %end 550 551end: 552 %phi_cast = phi <10 x i32> [zeroinitializer, %entry], [%cast, %if] 553 store <10 x i32> %phi_cast, ptr addrspace(1) %out 554 ret void 555} 556 557; CHECK-LABEL: {{^}}bitcast_v5i64_to_v10f32: 558; CHECK: ScratchSize: 0 559define amdgpu_kernel void @bitcast_v5i64_to_v10f32(i32 %cond, ptr addrspace(1) %out, <5 x i64> %value) { 560entry: 561 %cmp0 = icmp eq i32 %cond, 0 562 br i1 %cmp0, label %if, label %end 563 564if: 565 %phi_value = phi <5 x i64> [zeroinitializer, %entry], [%value, %if] 566 %cast = bitcast <5 x i64> %phi_value to <10 x float> 567 %cmp1 = icmp eq i32 %cond, 1 568 br i1 %cmp1, label %if, label %end 569 570end: 571 %phi_cast = phi <10 x float> [zeroinitializer, %entry], [%cast, %if] 572 store <10 x float> %phi_cast, ptr addrspace(1) %out 573 ret void 574} 575 576; CHECK-LABEL: {{^}}bitcast_v5i64_to_v10i32: 577; CHECK: ScratchSize: 0 578define amdgpu_kernel void @bitcast_v5i64_to_v10i32(i32 %cond, ptr addrspace(1) %out, <5 x i64> %value) { 579entry: 580 %cmp0 = icmp eq i32 %cond, 0 581 br i1 %cmp0, label %if, label %end 582 583if: 584 %phi_value = phi <5 x i64> [zeroinitializer, %entry], [%value, %if] 585 %cast = bitcast <5 x i64> %phi_value to <10 x i32> 586 %cmp1 = icmp eq i32 %cond, 1 587 br i1 %cmp1, label %if, label %end 588 589end: 590 %phi_cast = phi <10 x i32> [zeroinitializer, %entry], [%cast, %if] 591 store <10 x i32> %phi_cast, ptr addrspace(1) %out 592 ret void 593} 594 595; CHECK-LABEL: {{^}}bitcast_v6f64_to_v12i32: 596; CHECK: ScratchSize: 0 597define amdgpu_kernel void @bitcast_v6f64_to_v12i32(i32 %cond, ptr addrspace(1) %out, <6 x double> %value) { 598entry: 599 %cmp0 = icmp eq i32 %cond, 0 600 br i1 %cmp0, label %if, label %end 601 602if: 603 %phi_value = phi <6 x double> [zeroinitializer, %entry], [%value, %if] 604 %cast = bitcast <6 x double> %phi_value to <12 x i32> 605 %cmp1 = icmp eq i32 %cond, 1 606 br i1 %cmp1, label %if, label %end 607 608end: 609 %phi_cast = phi <12 x i32> [zeroinitializer, %entry], [%cast, %if] 610 store <12 x i32> %phi_cast, ptr addrspace(1) %out 611 ret void 612} 613 614; CHECK-LABEL: {{^}}bitcast_v6f64_to_v12f32: 615; CHECK: ScratchSize: 0 616define amdgpu_kernel void @bitcast_v6f64_to_v12f32(i32 %cond, ptr addrspace(1) %out, <6 x double> %value) { 617entry: 618 %cmp0 = icmp eq i32 %cond, 0 619 br i1 %cmp0, label %if, label %end 620 621if: 622 %phi_value = phi <6 x double> [zeroinitializer, %entry], [%value, %if] 623 %cast = bitcast <6 x double> %phi_value to <12 x float> 624 %cmp1 = icmp eq i32 %cond, 1 625 br i1 %cmp1, label %if, label %end 626 627end: 628 %phi_cast = phi <12 x float> [zeroinitializer, %entry], [%cast, %if] 629 store <12 x float> %phi_cast, ptr addrspace(1) %out 630 ret void 631} 632 633; CHECK-LABEL: {{^}}bitcast_v12i32_to_v6i64: 634; CHECK: ScratchSize: 0 635define amdgpu_kernel void @bitcast_v12i32_to_v6i64(i32 %cond, ptr addrspace(1) %out, <12 x i32> %value) { 636entry: 637 %cmp0 = icmp eq i32 %cond, 0 638 br i1 %cmp0, label %if, label %end 639 640if: 641 %phi_value = phi <12 x i32> [zeroinitializer, %entry], [%value, %if] 642 %cast = bitcast <12 x i32> %phi_value to <6 x i64> 643 %cmp1 = icmp eq i32 %cond, 1 644 br i1 %cmp1, label %if, label %end 645 646end: 647 %phi_cast = phi <6 x i64> [zeroinitializer, %entry], [%cast, %if] 648 store <6 x i64> %phi_cast, ptr addrspace(1) %out 649 ret void 650} 651 652; CHECK-LABEL: {{^}}bitcast_v12i32_to_v6f64: 653; CHECK: ScratchSize: 0 654define amdgpu_kernel void @bitcast_v12i32_to_v6f64(i32 %cond, ptr addrspace(1) %out, <12 x i32> %value) { 655entry: 656 %cmp0 = icmp eq i32 %cond, 0 657 br i1 %cmp0, label %if, label %end 658 659if: 660 %phi_value = phi <12 x i32> [zeroinitializer, %entry], [%value, %if] 661 %cast = bitcast <12 x i32> %phi_value to <6 x double> 662 %cmp1 = icmp eq i32 %cond, 1 663 br i1 %cmp1, label %if, label %end 664 665end: 666 %phi_cast = phi <6 x double> [zeroinitializer, %entry], [%cast, %if] 667 store <6 x double> %phi_cast, ptr addrspace(1) %out 668 ret void 669} 670 671; CHECK-LABEL: {{^}}bitcast_v6i64_to_v12i32: 672; CHECK: ScratchSize: 0 673define amdgpu_kernel void @bitcast_v6i64_to_v12i32(i32 %cond, ptr addrspace(1) %out, <6 x i64> %value) { 674entry: 675 %cmp0 = icmp eq i32 %cond, 0 676 br i1 %cmp0, label %if, label %end 677 678if: 679 %phi_value = phi <6 x i64> [zeroinitializer, %entry], [%value, %if] 680 %cast = bitcast <6 x i64> %phi_value to <12 x i32> 681 %cmp1 = icmp eq i32 %cond, 1 682 br i1 %cmp1, label %if, label %end 683 684end: 685 %phi_cast = phi <12 x i32> [zeroinitializer, %entry], [%cast, %if] 686 store <12 x i32> %phi_cast, ptr addrspace(1) %out 687 ret void 688} 689 690; CHECK-LABEL: {{^}}bitcast_v7i64_to_v14i32: 691; CHECK: ScratchSize: 0 692define amdgpu_kernel void @bitcast_v7i64_to_v14i32(i32 %cond, ptr addrspace(1) %out, <7 x i64> %value) { 693entry: 694 %cmp0 = icmp eq i32 %cond, 0 695 br i1 %cmp0, label %if, label %end 696 697if: 698 %phi_value = phi <7 x i64> [zeroinitializer, %entry], [%value, %if] 699 %cast = bitcast <7 x i64> %phi_value to <14 x i32> 700 %cmp1 = icmp eq i32 %cond, 1 701 br i1 %cmp1, label %if, label %end 702 703end: 704 %phi_cast = phi <14 x i32> [zeroinitializer, %entry], [%cast, %if] 705 store <14 x i32> %phi_cast, ptr addrspace(1) %out 706 ret void 707} 708 709; CHECK-LABEL: {{^}}bitcast_v7f64_to_v14i32: 710; CHECK: ScratchSize: 0 711define amdgpu_kernel void @bitcast_v7f64_to_v14i32(i32 %cond, ptr addrspace(1) %out, <7 x double> %value) { 712entry: 713 %cmp0 = icmp eq i32 %cond, 0 714 br i1 %cmp0, label %if, label %end 715 716if: 717 %phi_value = phi <7 x double> [zeroinitializer, %entry], [%value, %if] 718 %cast = bitcast <7 x double> %phi_value to <14 x i32> 719 %cmp1 = icmp eq i32 %cond, 1 720 br i1 %cmp1, label %if, label %end 721 722end: 723 %phi_cast = phi <14 x i32> [zeroinitializer, %entry], [%cast, %if] 724 store <14 x i32> %phi_cast, ptr addrspace(1) %out 725 ret void 726} 727 728; CHECK-LABEL: {{^}}bitcast_v9i64_to_v18i32: 729; CHECK: ScratchSize: 0 730define amdgpu_kernel void @bitcast_v9i64_to_v18i32(i32 %cond, ptr addrspace(1) %out, <9 x i64> %value) { 731entry: 732 %cmp0 = icmp eq i32 %cond, 0 733 br i1 %cmp0, label %if, label %end 734 735if: 736 %phi_value = phi <9 x i64> [zeroinitializer, %entry], [%value, %if] 737 %cast = bitcast <9 x i64> %phi_value to <18 x i32> 738 %cmp1 = icmp eq i32 %cond, 1 739 br i1 %cmp1, label %if, label %end 740 741end: 742 %phi_cast = phi <18 x i32> [zeroinitializer, %entry], [%cast, %if] 743 store <18 x i32> %phi_cast, ptr addrspace(1) %out 744 ret void 745} 746 747; CHECK-LABEL: {{^}}bitcast_v10i64_to_v20i32: 748; CHECK: ScratchSize: 0 749define amdgpu_kernel void @bitcast_v10i64_to_v20i32(i32 %cond, ptr addrspace(1) %out, <10 x i64> %value) { 750entry: 751 %cmp0 = icmp eq i32 %cond, 0 752 br i1 %cmp0, label %if, label %end 753 754if: 755 %phi_value = phi <10 x i64> [zeroinitializer, %entry], [%value, %if] 756 %cast = bitcast <10 x i64> %phi_value to <20 x i32> 757 %cmp1 = icmp eq i32 %cond, 1 758 br i1 %cmp1, label %if, label %end 759 760end: 761 %phi_cast = phi <20 x i32> [zeroinitializer, %entry], [%cast, %if] 762 store <20 x i32> %phi_cast, ptr addrspace(1) %out 763 ret void 764} 765 766; CHECK-LABEL: {{^}}bitcast_v11i64_to_v20i32: 767; CHECK: ScratchSize: 0 768define amdgpu_kernel void @bitcast_v11i64_to_v20i32(i32 %cond, ptr addrspace(1) %out, <11 x i64> %value) { 769entry: 770 %cmp0 = icmp eq i32 %cond, 0 771 br i1 %cmp0, label %if, label %end 772 773if: 774 %phi_value = phi <11 x i64> [zeroinitializer, %entry], [%value, %if] 775 %cast = bitcast <11 x i64> %phi_value to <22 x i32> 776 %cmp1 = icmp eq i32 %cond, 1 777 br i1 %cmp1, label %if, label %end 778 779end: 780 %phi_cast = phi <22 x i32> [zeroinitializer, %entry], [%cast, %if] 781 store <22 x i32> %phi_cast, ptr addrspace(1) %out 782 ret void 783} 784 785; CHECK-LABEL: {{^}}bitcast_v12i64_to_v22i32: 786; CHECK: ScratchSize: 0 787define amdgpu_kernel void @bitcast_v12i64_to_v22i32(i32 %cond, ptr addrspace(1) %out, <12 x i64> %value) { 788entry: 789 %cmp0 = icmp eq i32 %cond, 0 790 br i1 %cmp0, label %if, label %end 791 792if: 793 %phi_value = phi <12 x i64> [zeroinitializer, %entry], [%value, %if] 794 %cast = bitcast <12 x i64> %phi_value to <24 x i32> 795 %cmp1 = icmp eq i32 %cond, 1 796 br i1 %cmp1, label %if, label %end 797 798end: 799 %phi_cast = phi <24 x i32> [zeroinitializer, %entry], [%cast, %if] 800 store <24 x i32> %phi_cast, ptr addrspace(1) %out 801 ret void 802} 803 804; CHECK-LABEL: {{^}}bitcast_v13i64_to_v24i32: 805; CHECK: ScratchSize: 0 806define amdgpu_kernel void @bitcast_v13i64_to_v24i32(i32 %cond, ptr addrspace(1) %out, <13 x i64> %value) { 807entry: 808 %cmp0 = icmp eq i32 %cond, 0 809 br i1 %cmp0, label %if, label %end 810 811if: 812 %phi_value = phi <13 x i64> [zeroinitializer, %entry], [%value, %if] 813 %cast = bitcast <13 x i64> %phi_value to <26 x i32> 814 %cmp1 = icmp eq i32 %cond, 1 815 br i1 %cmp1, label %if, label %end 816 817end: 818 %phi_cast = phi <26 x i32> [zeroinitializer, %entry], [%cast, %if] 819 store <26 x i32> %phi_cast, ptr addrspace(1) %out 820 ret void 821} 822 823; CHECK-LABEL: {{^}}bitcast_v14i64_to_v26i32: 824; CHECK: ScratchSize: 0 825define amdgpu_kernel void @bitcast_v14i64_to_v26i32(i32 %cond, ptr addrspace(1) %out, <14 x i64> %value) { 826entry: 827 %cmp0 = icmp eq i32 %cond, 0 828 br i1 %cmp0, label %if, label %end 829 830if: 831 %phi_value = phi <14 x i64> [zeroinitializer, %entry], [%value, %if] 832 %cast = bitcast <14 x i64> %phi_value to <28 x i32> 833 %cmp1 = icmp eq i32 %cond, 1 834 br i1 %cmp1, label %if, label %end 835 836end: 837 %phi_cast = phi <28 x i32> [zeroinitializer, %entry], [%cast, %if] 838 store <28 x i32> %phi_cast, ptr addrspace(1) %out 839 ret void 840} 841 842; CHECK-LABEL: {{^}}bitcast_v15i64_to_v26i32: 843; CHECK: ScratchSize: 0 844define amdgpu_kernel void @bitcast_v15i64_to_v26i32(i32 %cond, ptr addrspace(1) %out, <15 x i64> %value) { 845entry: 846 %cmp0 = icmp eq i32 %cond, 0 847 br i1 %cmp0, label %if, label %end 848 849if: 850 %phi_value = phi <15 x i64> [zeroinitializer, %entry], [%value, %if] 851 %cast = bitcast <15 x i64> %phi_value to <30 x i32> 852 %cmp1 = icmp eq i32 %cond, 1 853 br i1 %cmp1, label %if, label %end 854 855end: 856 %phi_cast = phi <30 x i32> [zeroinitializer, %entry], [%cast, %if] 857 store <30 x i32> %phi_cast, ptr addrspace(1) %out 858 ret void 859} 860 861; CHECK-LABEL: {{^}}v_bitcast_v2bf16_to_i32: 862define void @v_bitcast_v2bf16_to_i32(i32 %cond, ptr addrspace(1) %out, <2 x bfloat> %value) { 863entry: 864 %cmp0 = icmp eq i32 %cond, 0 865 br i1 %cmp0, label %if, label %end 866 867if: 868 %cast = bitcast <2 x bfloat> %value to i32 869 br label %end 870 871end: 872 %phi = phi i32 [0, %entry], [%cast, %if] 873 store i32 %phi, ptr addrspace(1) %out 874 ret void 875} 876 877; CHECK-LABEL: {{^}}v_bitcast_v2bf16_to_v2i16: 878define void @v_bitcast_v2bf16_to_v2i16(i32 %cond, ptr addrspace(1) %out, <2 x bfloat> %value) { 879entry: 880 %cmp0 = icmp eq i32 %cond, 0 881 br i1 %cmp0, label %if, label %end 882 883if: 884 %cast = bitcast <2 x bfloat> %value to <2 x i16> 885 br label %end 886 887end: 888 %phi = phi <2 x i16> [zeroinitializer, %entry], [%cast, %if] 889 store <2 x i16> %phi, ptr addrspace(1) %out 890 ret void 891} 892 893; CHECK-LABEL: {{^}}v_bitcast_v2bf16_to_v2f16: 894define void @v_bitcast_v2bf16_to_v2f16(i32 %cond, ptr addrspace(1) %out, <2 x bfloat> %value) { 895entry: 896 %cmp0 = icmp eq i32 %cond, 0 897 br i1 %cmp0, label %if, label %end 898 899if: 900 %cast = bitcast <2 x bfloat> %value to <2 x half> 901 br label %end 902 903end: 904 %phi = phi <2 x half> [zeroinitializer, %entry], [%cast, %if] 905 store <2 x half> %phi, ptr addrspace(1) %out 906 ret void 907} 908 909; CHECK-LABEL: {{^}}v_bitcast_v2bf16_to_v4i8: 910define void @v_bitcast_v2bf16_to_v4i8(i32 %cond, ptr addrspace(1) %out, <2 x bfloat> %value) { 911entry: 912 %cmp0 = icmp eq i32 %cond, 0 913 br i1 %cmp0, label %if, label %end 914 915if: 916 %cast = bitcast <2 x bfloat> %value to <4 x i8> 917 br label %end 918 919end: 920 %phi = phi <4 x i8> [zeroinitializer, %entry], [%cast, %if] 921 store <4 x i8> %phi, ptr addrspace(1) %out 922 ret void 923} 924 925; CHECK-LABEL: {{^}}v_bitcast_v3bf16_to_v3i16: 926define void @v_bitcast_v3bf16_to_v3i16(i32 %cond, ptr addrspace(1) %out, <3 x bfloat> %value) { 927entry: 928 %cmp0 = icmp eq i32 %cond, 0 929 br i1 %cmp0, label %if, label %end 930 931if: 932 %cast = bitcast <3 x bfloat> %value to <3 x i16> 933 br label %end 934 935end: 936 %phi = phi <3 x i16> [zeroinitializer, %entry], [%cast, %if] 937 store <3 x i16> %phi, ptr addrspace(1) %out 938 ret void 939} 940 941; CHECK-LABEL: {{^}}v_bitcast_v3bf16_to_v3f16: 942define void @v_bitcast_v3bf16_to_v3f16(i32 %cond, ptr addrspace(1) %out, <3 x bfloat> %value) { 943entry: 944 %cmp0 = icmp eq i32 %cond, 0 945 br i1 %cmp0, label %if, label %end 946 947if: 948 %cast = bitcast <3 x bfloat> %value to <3 x half> 949 br label %end 950 951end: 952 %phi = phi <3 x half> [zeroinitializer, %entry], [%cast, %if] 953 store <3 x half> %phi, ptr addrspace(1) %out 954 ret void 955} 956 957; CHECK-LABEL: {{^}}v_bitcast_i32_to_v2bf16: 958define void @v_bitcast_i32_to_v2bf16(i32 %cond, ptr addrspace(1) %out, i32 %value) { 959entry: 960 %cmp0 = icmp eq i32 %cond, 0 961 br i1 %cmp0, label %if, label %end 962 963if: 964 %cast = bitcast i32 %value to <2 x bfloat> 965 br label %end 966 967end: 968 %phi = phi <2 x bfloat> [zeroinitializer, %entry], [%cast, %if] 969 store <2 x bfloat> %phi, ptr addrspace(1) %out 970 ret void 971} 972 973; CHECK-LABEL: {{^}}v_bitcast_v2i16_to_v2bf16: 974define void @v_bitcast_v2i16_to_v2bf16(i32 %cond, ptr addrspace(1) %out, <2 x i16> %value) { 975entry: 976 %cmp0 = icmp eq i32 %cond, 0 977 br i1 %cmp0, label %if, label %end 978 979if: 980 %cast = bitcast <2 x i16> %value to <2 x bfloat> 981 br label %end 982 983end: 984 %phi = phi <2 x bfloat> [zeroinitializer, %entry], [%cast, %if] 985 store <2 x bfloat> %phi, ptr addrspace(1) %out 986 ret void 987} 988 989; CHECK-LABEL: {{^}}v_bitcast_v2f16_to_v2bf16: 990define void @v_bitcast_v2f16_to_v2bf16(i32 %cond, ptr addrspace(1) %out, <2 x half> %value) { 991entry: 992 %cmp0 = icmp eq i32 %cond, 0 993 br i1 %cmp0, label %if, label %end 994 995if: 996 %cast = bitcast <2 x half> %value to <2 x bfloat> 997 br label %end 998 999end: 1000 %phi = phi <2 x bfloat> [zeroinitializer, %entry], [%cast, %if] 1001 store <2 x bfloat> %phi, ptr addrspace(1) %out 1002 ret void 1003} 1004 1005; CHECK-LABEL: {{^}}v_bitcast_v4i8_to_v2bf16: 1006define void @v_bitcast_v4i8_to_v2bf16(i32 %cond, ptr addrspace(1) %out, <4 x i8> %value) { 1007entry: 1008 %cmp0 = icmp eq i32 %cond, 0 1009 br i1 %cmp0, label %if, label %end 1010 1011if: 1012 %cast = bitcast <4 x i8> %value to <2 x bfloat> 1013 br label %end 1014 1015end: 1016 %phi = phi <2 x bfloat> [zeroinitializer, %entry], [%cast, %if] 1017 store <2 x bfloat> %phi, ptr addrspace(1) %out 1018 ret void 1019} 1020 1021; CHECK-LABEL: {{^}}v_bitcast_v3i16_to_v3bf16: 1022define void @v_bitcast_v3i16_to_v3bf16(i32 %cond, ptr addrspace(1) %out, <3 x i16> %value) { 1023entry: 1024 %cmp0 = icmp eq i32 %cond, 0 1025 br i1 %cmp0, label %if, label %end 1026 1027if: 1028 %cast = bitcast <3 x i16> %value to <3 x bfloat> 1029 br label %end 1030 1031end: 1032 %phi = phi <3 x bfloat> [zeroinitializer, %entry], [%cast, %if] 1033 store <3 x bfloat> %phi, ptr addrspace(1) %out 1034 ret void 1035} 1036 1037; CHECK-LABEL: {{^}}v_bitcast_v4bf16_to_v4f16: 1038define void @v_bitcast_v4bf16_to_v4f16(i32 %cond, ptr addrspace(1) %out, <4 x bfloat> %value) { 1039entry: 1040 %cmp0 = icmp eq i32 %cond, 0 1041 br i1 %cmp0, label %if, label %end 1042 1043if: 1044 %cast = bitcast <4 x bfloat> %value to <4 x half> 1045 br label %end 1046 1047end: 1048 %phi = phi <4 x half> [zeroinitializer, %entry], [%cast, %if] 1049 store <4 x half> %phi, ptr addrspace(1) %out 1050 ret void 1051} 1052 1053; CHECK-LABEL: {{^}}v_bitcast_v4bf16_to_v4i16: 1054define void @v_bitcast_v4bf16_to_v4i16(i32 %cond, ptr addrspace(1) %out, <4 x bfloat> %value) { 1055entry: 1056 %cmp0 = icmp eq i32 %cond, 0 1057 br i1 %cmp0, label %if, label %end 1058 1059if: 1060 %cast = bitcast <4 x bfloat> %value to <4 x i16> 1061 br label %end 1062 1063end: 1064 %phi = phi <4 x i16> [zeroinitializer, %entry], [%cast, %if] 1065 store <4 x i16> %phi, ptr addrspace(1) %out 1066 ret void 1067} 1068 1069; CHECK-LABEL: {{^}}v_bitcast_v4bf16_to_v2i32: 1070define void @v_bitcast_v4bf16_to_v2i32(i32 %cond, ptr addrspace(1) %out, <4 x bfloat> %value) { 1071entry: 1072 %cmp0 = icmp eq i32 %cond, 0 1073 br i1 %cmp0, label %if, label %end 1074 1075if: 1076 %cast = bitcast <4 x bfloat> %value to <2 x i32> 1077 br label %end 1078 1079end: 1080 %phi = phi <2 x i32> [zeroinitializer, %entry], [%cast, %if] 1081 store <2 x i32> %phi, ptr addrspace(1) %out 1082 ret void 1083} 1084 1085; CHECK-LABEL: {{^}}v_bitcast_v4bf16_to_v2f32: 1086define void @v_bitcast_v4bf16_to_v2f32(i32 %cond, ptr addrspace(1) %out, <4 x bfloat> %value) { 1087entry: 1088 %cmp0 = icmp eq i32 %cond, 0 1089 br i1 %cmp0, label %if, label %end 1090 1091if: 1092 %cast = bitcast <4 x bfloat> %value to <2 x float> 1093 br label %end 1094 1095end: 1096 %phi = phi <2 x float> [zeroinitializer, %entry], [%cast, %if] 1097 store <2 x float> %phi, ptr addrspace(1) %out 1098 ret void 1099} 1100 1101; CHECK-LABEL: {{^}}v_bitcast_v4bf16_to_f64: 1102define void @v_bitcast_v4bf16_to_f64(i32 %cond, ptr addrspace(1) %out, <4 x bfloat> %value) { 1103entry: 1104 %cmp0 = icmp eq i32 %cond, 0 1105 br i1 %cmp0, label %if, label %end 1106 1107if: 1108 %cast = bitcast <4 x bfloat> %value to double 1109 br label %end 1110 1111end: 1112 %phi = phi double [0.0, %entry], [%cast, %if] 1113 store double %phi, ptr addrspace(1) %out 1114 ret void 1115} 1116 1117; CHECK-LABEL: {{^}}v_bitcast_v4bf16_to_i64: 1118define void @v_bitcast_v4bf16_to_i64(i32 %cond, ptr addrspace(1) %out, <4 x bfloat> %value) { 1119entry: 1120 %cmp0 = icmp eq i32 %cond, 0 1121 br i1 %cmp0, label %if, label %end 1122 1123if: 1124 %cast = bitcast <4 x bfloat> %value to i64 1125 br label %end 1126 1127end: 1128 %phi = phi i64 [0, %entry], [%cast, %if] 1129 store i64 %phi, ptr addrspace(1) %out 1130 ret void 1131} 1132 1133; CHECK-LABEL: {{^}}v_bitcast_v4bf16_to_v8i8: 1134define void @v_bitcast_v4bf16_to_v8i8(i32 %cond, ptr addrspace(1) %out, <4 x bfloat> %value) { 1135entry: 1136 %cmp0 = icmp eq i32 %cond, 0 1137 br i1 %cmp0, label %if, label %end 1138 1139if: 1140 %cast = bitcast <4 x bfloat> %value to <8 x i8> 1141 br label %end 1142 1143end: 1144 %phi = phi <8 x i8> [zeroinitializer, %entry], [%cast, %if] 1145 store <8 x i8> %phi, ptr addrspace(1) %out 1146 ret void 1147} 1148 1149; CHECK-LABEL: {{^}}v_bitcast_i64_to_v4bf16: 1150define void @v_bitcast_i64_to_v4bf16(i32 %cond, ptr addrspace(1) %out, i64 %value) { 1151entry: 1152 %cmp0 = icmp eq i32 %cond, 0 1153 br i1 %cmp0, label %if, label %end 1154 1155if: 1156 %cast = bitcast i64 %value to <4 x bfloat> 1157 br label %end 1158 1159end: 1160 %phi = phi <4 x bfloat> [zeroinitializer, %entry], [%cast, %if] 1161 store <4 x bfloat> %phi, ptr addrspace(1) %out 1162 ret void 1163} 1164 1165; CHECK-LABEL: {{^}}v_bitcast_v2f32_to_v4bf16: 1166define void @v_bitcast_v2f32_to_v4bf16(i32 %cond, ptr addrspace(1) %out, <2 x float> %value) { 1167entry: 1168 %cmp0 = icmp eq i32 %cond, 0 1169 br i1 %cmp0, label %if, label %end 1170 1171if: 1172 %cast = bitcast <2 x float> %value to <4 x bfloat> 1173 br label %end 1174 1175end: 1176 %phi = phi <4 x bfloat> [zeroinitializer, %entry], [%cast, %if] 1177 store <4 x bfloat> %phi, ptr addrspace(1) %out 1178 ret void 1179} 1180 1181; CHECK-LABEL: {{^}}v_bitcast_v2i32_to_v4bf16: 1182define void @v_bitcast_v2i32_to_v4bf16(i32 %cond, ptr addrspace(1) %out, <2 x i32> %value) { 1183entry: 1184 %cmp0 = icmp eq i32 %cond, 0 1185 br i1 %cmp0, label %if, label %end 1186 1187if: 1188 %cast = bitcast <2 x i32> %value to <4 x bfloat> 1189 br label %end 1190 1191end: 1192 %phi = phi <4 x bfloat> [zeroinitializer, %entry], [%cast, %if] 1193 store <4 x bfloat> %phi, ptr addrspace(1) %out 1194 ret void 1195} 1196 1197; CHECK-LABEL: {{^}}v_bitcast_v4i16_to_v4bf16: 1198define void @v_bitcast_v4i16_to_v4bf16(i32 %cond, ptr addrspace(1) %out, <4 x i16> %value) { 1199entry: 1200 %cmp0 = icmp eq i32 %cond, 0 1201 br i1 %cmp0, label %if, label %end 1202 1203if: 1204 %cast = bitcast <4 x i16> %value to <4 x bfloat> 1205 br label %end 1206 1207end: 1208 %phi = phi <4 x bfloat> [zeroinitializer, %entry], [%cast, %if] 1209 store <4 x bfloat> %phi, ptr addrspace(1) %out 1210 ret void 1211} 1212 1213; CHECK-LABEL: {{^}}v_bitcast_v4f16_to_v4bf16: 1214define void @v_bitcast_v4f16_to_v4bf16(i32 %cond, ptr addrspace(1) %out, <4 x half> %value) { 1215entry: 1216 %cmp0 = icmp eq i32 %cond, 0 1217 br i1 %cmp0, label %if, label %end 1218 1219if: 1220 %cast = bitcast <4 x half> %value to <4 x bfloat> 1221 br label %end 1222 1223end: 1224 %phi = phi <4 x bfloat> [zeroinitializer, %entry], [%cast, %if] 1225 store <4 x bfloat> %phi, ptr addrspace(1) %out 1226 ret void 1227} 1228 1229; CHECK-LABEL: {{^}}v_bitcast_v6bf16_to_v6i16: 1230define void @v_bitcast_v6bf16_to_v6i16(i32 %cond, ptr addrspace(1) %out, <6 x bfloat> %value) { 1231entry: 1232 %cmp0 = icmp eq i32 %cond, 0 1233 br i1 %cmp0, label %if, label %end 1234 1235if: 1236 %cast = bitcast <6 x bfloat> %value to <6 x i16> 1237 br label %end 1238 1239end: 1240 %phi = phi <6 x i16> [zeroinitializer, %entry], [%cast, %if] 1241 store <6 x i16> %phi, ptr addrspace(1) %out 1242 ret void 1243} 1244 1245; CHECK-LABEL: {{^}}v_bitcast_v6bf16_to_v6f16: 1246define void @v_bitcast_v6bf16_to_v6f16(i32 %cond, ptr addrspace(1) %out, <6 x bfloat> %value) { 1247entry: 1248 %cmp0 = icmp eq i32 %cond, 0 1249 br i1 %cmp0, label %if, label %end 1250 1251if: 1252 %cast = bitcast <6 x bfloat> %value to <6 x half> 1253 br label %end 1254 1255end: 1256 %phi = phi <6 x half> [zeroinitializer, %entry], [%cast, %if] 1257 store <6 x half> %phi, ptr addrspace(1) %out 1258 ret void 1259} 1260 1261; CHECK-LABEL: {{^}}v_bitcast_v6bf16_to_v12i8: 1262define void @v_bitcast_v6bf16_to_v12i8(i32 %cond, ptr addrspace(1) %out, <6 x bfloat> %value) { 1263entry: 1264 %cmp0 = icmp eq i32 %cond, 0 1265 br i1 %cmp0, label %if, label %end 1266 1267if: 1268 %cast = bitcast <6 x bfloat> %value to <12 x i8> 1269 br label %end 1270 1271end: 1272 %phi = phi <12 x i8> [zeroinitializer, %entry], [%cast, %if] 1273 store <12 x i8> %phi, ptr addrspace(1) %out 1274 ret void 1275} 1276 1277; CHECK-LABEL: {{^}}v_bitcast_v6f16_to_v6bf16: 1278define void @v_bitcast_v6f16_to_v6bf16(i32 %cond, ptr addrspace(1) %out, <6 x half> %value) { 1279entry: 1280 %cmp0 = icmp eq i32 %cond, 0 1281 br i1 %cmp0, label %if, label %end 1282 1283if: 1284 %cast = bitcast <6 x half> %value to <6 x bfloat> 1285 br label %end 1286 1287end: 1288 %phi = phi <6 x bfloat> [zeroinitializer, %entry], [%cast, %if] 1289 store <6 x bfloat> %phi, ptr addrspace(1) %out 1290 ret void 1291} 1292 1293; CHECK-LABEL: {{^}}v_bitcast_v6i16_to_v6bf16: 1294define void @v_bitcast_v6i16_to_v6bf16(i32 %cond, ptr addrspace(1) %out, <6 x i16> %value) { 1295entry: 1296 %cmp0 = icmp eq i32 %cond, 0 1297 br i1 %cmp0, label %if, label %end 1298 1299if: 1300 %cast = bitcast <6 x i16> %value to <6 x bfloat> 1301 br label %end 1302 1303end: 1304 %phi = phi <6 x bfloat> [zeroinitializer, %entry], [%cast, %if] 1305 store <6 x bfloat> %phi, ptr addrspace(1) %out 1306 ret void 1307} 1308 1309; CHECK-LABEL: {{^}}v_bitcast_v12i8_to_v6bf16: 1310define void @v_bitcast_v12i8_to_v6bf16(i32 %cond, ptr addrspace(1) %out, <12 x i8> %value) { 1311entry: 1312 %cmp0 = icmp eq i32 %cond, 0 1313 br i1 %cmp0, label %if, label %end 1314 1315if: 1316 %cast = bitcast <12 x i8> %value to <6 x bfloat> 1317 br label %end 1318 1319end: 1320 %phi = phi <6 x bfloat> [zeroinitializer, %entry], [%cast, %if] 1321 store <6 x bfloat> %phi, ptr addrspace(1) %out 1322 ret void 1323} 1324 1325; CHECK-LABEL: {{^}}v_bitcast_v8bf16_to_v2f64: 1326define void @v_bitcast_v8bf16_to_v2f64(i32 %cond, ptr addrspace(1) %out, <8 x bfloat> %value) { 1327entry: 1328 %cmp0 = icmp eq i32 %cond, 0 1329 br i1 %cmp0, label %if, label %end 1330 1331if: 1332 %cast = bitcast <8 x bfloat> %value to <2 x double> 1333 br label %end 1334 1335end: 1336 %phi = phi <2 x double> [zeroinitializer, %entry], [%cast, %if] 1337 store <2 x double> %phi, ptr addrspace(1) %out 1338 ret void 1339} 1340 1341; CHECK-LABEL: {{^}}v_bitcast_v8bf16_to_v2i64: 1342define void @v_bitcast_v8bf16_to_v2i64(i32 %cond, ptr addrspace(1) %out, <8 x bfloat> %value) { 1343entry: 1344 %cmp0 = icmp eq i32 %cond, 0 1345 br i1 %cmp0, label %if, label %end 1346 1347if: 1348 %cast = bitcast <8 x bfloat> %value to <2 x i64> 1349 br label %end 1350 1351end: 1352 %phi = phi <2 x i64> [zeroinitializer, %entry], [%cast, %if] 1353 store <2 x i64> %phi, ptr addrspace(1) %out 1354 ret void 1355} 1356 1357; CHECK-LABEL: {{^}}v_bitcast_v8bf16_to_v4f32: 1358define void @v_bitcast_v8bf16_to_v4f32(i32 %cond, ptr addrspace(1) %out, <8 x bfloat> %value) { 1359entry: 1360 %cmp0 = icmp eq i32 %cond, 0 1361 br i1 %cmp0, label %if, label %end 1362 1363if: 1364 %cast = bitcast <8 x bfloat> %value to <4 x float> 1365 br label %end 1366 1367end: 1368 %phi = phi <4 x float> [zeroinitializer, %entry], [%cast, %if] 1369 store <4 x float> %phi, ptr addrspace(1) %out 1370 ret void 1371} 1372 1373; CHECK-LABEL: {{^}}v_bitcast_v8bf16_to_v4i32: 1374define void @v_bitcast_v8bf16_to_v4i32(i32 %cond, ptr addrspace(1) %out, <8 x bfloat> %value) { 1375entry: 1376 %cmp0 = icmp eq i32 %cond, 0 1377 br i1 %cmp0, label %if, label %end 1378 1379if: 1380 %cast = bitcast <8 x bfloat> %value to <4 x i32> 1381 br label %end 1382 1383end: 1384 %phi = phi <4 x i32> [zeroinitializer, %entry], [%cast, %if] 1385 store <4 x i32> %phi, ptr addrspace(1) %out 1386 ret void 1387} 1388 1389; CHECK-LABEL: {{^}}v_bitcast_v8bf16_to_v8f16: 1390define void @v_bitcast_v8bf16_to_v8f16(i32 %cond, ptr addrspace(1) %out, <8 x bfloat> %value) { 1391entry: 1392 %cmp0 = icmp eq i32 %cond, 0 1393 br i1 %cmp0, label %if, label %end 1394 1395if: 1396 %cast = bitcast <8 x bfloat> %value to <8 x half> 1397 br label %end 1398 1399end: 1400 %phi = phi <8 x half> [zeroinitializer, %entry], [%cast, %if] 1401 store <8 x half> %phi, ptr addrspace(1) %out 1402 ret void 1403} 1404 1405; CHECK-LABEL: {{^}}v_bitcast_v8bf16_to_v8i16: 1406define void @v_bitcast_v8bf16_to_v8i16(i32 %cond, ptr addrspace(1) %out, <8 x bfloat> %value) { 1407entry: 1408 %cmp0 = icmp eq i32 %cond, 0 1409 br i1 %cmp0, label %if, label %end 1410 1411if: 1412 %cast = bitcast <8 x bfloat> %value to <8 x i16> 1413 br label %end 1414 1415end: 1416 %phi = phi <8 x i16> [zeroinitializer, %entry], [%cast, %if] 1417 store <8 x i16> %phi, ptr addrspace(1) %out 1418 ret void 1419} 1420 1421; CHECK-LABEL: {{^}}v_bitcast_v8f16_to_v8bf16: 1422define void @v_bitcast_v8f16_to_v8bf16(i32 %cond, ptr addrspace(1) %out, <8 x half> %value) { 1423entry: 1424 %cmp0 = icmp eq i32 %cond, 0 1425 br i1 %cmp0, label %if, label %end 1426 1427if: 1428 %cast = bitcast <8 x half> %value to <8 x bfloat> 1429 br label %end 1430 1431end: 1432 %phi = phi <8 x bfloat> [zeroinitializer, %entry], [%cast, %if] 1433 store <8 x bfloat> %phi, ptr addrspace(1) %out 1434 ret void 1435} 1436 1437; CHECK-LABEL: {{^}}v_bitcast_v8i16_to_v8bf16: 1438define void @v_bitcast_v8i16_to_v8bf16(i32 %cond, ptr addrspace(1) %out, <8 x i16> %value) { 1439entry: 1440 %cmp0 = icmp eq i32 %cond, 0 1441 br i1 %cmp0, label %if, label %end 1442 1443if: 1444 %cast = bitcast <8 x i16> %value to <8 x bfloat> 1445 br label %end 1446 1447end: 1448 %phi = phi <8 x bfloat> [zeroinitializer, %entry], [%cast, %if] 1449 store <8 x bfloat> %phi, ptr addrspace(1) %out 1450 ret void 1451} 1452 1453; CHECK-LABEL: {{^}}v_bitcast_v16i8_to_v8bf16: 1454define void @v_bitcast_v16i8_to_v8bf16(i32 %cond, ptr addrspace(1) %out, <16 x i8> %value) { 1455entry: 1456 %cmp0 = icmp eq i32 %cond, 0 1457 br i1 %cmp0, label %if, label %end 1458 1459if: 1460 %cast = bitcast <16 x i8> %value to <8 x bfloat> 1461 br label %end 1462 1463end: 1464 %phi = phi <8 x bfloat> [zeroinitializer, %entry], [%cast, %if] 1465 store <8 x bfloat> %phi, ptr addrspace(1) %out 1466 ret void 1467} 1468 1469; CHECK-LABEL: {{^}}v_bitcast_v2i64_to_v8bf16: 1470define void @v_bitcast_v2i64_to_v8bf16(i32 %cond, ptr addrspace(1) %out, <2 x i64> %value) { 1471entry: 1472 %cmp0 = icmp eq i32 %cond, 0 1473 br i1 %cmp0, label %if, label %end 1474 1475if: 1476 %cast = bitcast <2 x i64> %value to <8 x bfloat> 1477 br label %end 1478 1479end: 1480 %phi = phi <8 x bfloat> [zeroinitializer, %entry], [%cast, %if] 1481 store <8 x bfloat> %phi, ptr addrspace(1) %out 1482 ret void 1483} 1484 1485; CHECK-LABEL: {{^}}v_bitcast_v2f64_to_v8bf16: 1486define void @v_bitcast_v2f64_to_v8bf16(i32 %cond, ptr addrspace(1) %out, <2 x double> %value) { 1487entry: 1488 %cmp0 = icmp eq i32 %cond, 0 1489 br i1 %cmp0, label %if, label %end 1490 1491if: 1492 %cast = bitcast <2 x double> %value to <8 x bfloat> 1493 br label %end 1494 1495end: 1496 %phi = phi <8 x bfloat> [zeroinitializer, %entry], [%cast, %if] 1497 store <8 x bfloat> %phi, ptr addrspace(1) %out 1498 ret void 1499} 1500 1501; CHECK-LABEL: {{^}}v_bitcast_v4i32_to_v8bf16: 1502define void @v_bitcast_v4i32_to_v8bf16(i32 %cond, ptr addrspace(1) %out, <4 x i32> %value) { 1503entry: 1504 %cmp0 = icmp eq i32 %cond, 0 1505 br i1 %cmp0, label %if, label %end 1506 1507if: 1508 %cast = bitcast <4 x i32> %value to <8 x bfloat> 1509 br label %end 1510 1511end: 1512 %phi = phi <8 x bfloat> [zeroinitializer, %entry], [%cast, %if] 1513 store <8 x bfloat> %phi, ptr addrspace(1) %out 1514 ret void 1515} 1516 1517; CHECK-LABEL: {{^}}v_bitcast_v4f32_to_v8bf16: 1518define void @v_bitcast_v4f32_to_v8bf16(i32 %cond, ptr addrspace(1) %out, <4 x float> %value) { 1519entry: 1520 %cmp0 = icmp eq i32 %cond, 0 1521 br i1 %cmp0, label %if, label %end 1522 1523if: 1524 %cast = bitcast <4 x float> %value to <8 x bfloat> 1525 br label %end 1526 1527end: 1528 %phi = phi <8 x bfloat> [zeroinitializer, %entry], [%cast, %if] 1529 store <8 x bfloat> %phi, ptr addrspace(1) %out 1530 ret void 1531} 1532 1533; CHECK-LABEL: {{^}}v_bitcast_v16bf16_to_v16i16: 1534define void @v_bitcast_v16bf16_to_v16i16(i32 %cond, ptr addrspace(1) %out, <16 x bfloat> %value) { 1535entry: 1536 %cmp0 = icmp eq i32 %cond, 0 1537 br i1 %cmp0, label %if, label %end 1538 1539if: 1540 %cast = bitcast <16 x bfloat> %value to <16 x i16> 1541 br label %end 1542 1543end: 1544 %phi = phi <16 x i16> [zeroinitializer, %entry], [%cast, %if] 1545 store <16 x i16> %phi, ptr addrspace(1) %out 1546 ret void 1547} 1548 1549; CHECK-LABEL: {{^}}v_bitcast_v16bf16_to_v16f16: 1550define void @v_bitcast_v16bf16_to_v16f16(i32 %cond, ptr addrspace(1) %out, <16 x bfloat> %value) { 1551entry: 1552 %cmp0 = icmp eq i32 %cond, 0 1553 br i1 %cmp0, label %if, label %end 1554 1555if: 1556 %cast = bitcast <16 x bfloat> %value to <16 x half> 1557 br label %end 1558 1559end: 1560 %phi = phi <16 x half> [zeroinitializer, %entry], [%cast, %if] 1561 store <16 x half> %phi, ptr addrspace(1) %out 1562 ret void 1563} 1564 1565; CHECK-LABEL: {{^}}v_bitcast_v16bf16_to_v8i32: 1566define void @v_bitcast_v16bf16_to_v8i32(i32 %cond, ptr addrspace(1) %out, <16 x bfloat> %value) { 1567entry: 1568 %cmp0 = icmp eq i32 %cond, 0 1569 br i1 %cmp0, label %if, label %end 1570 1571if: 1572 %cast = bitcast <16 x bfloat> %value to <8 x i32> 1573 br label %end 1574 1575end: 1576 %phi = phi <8 x i32> [zeroinitializer, %entry], [%cast, %if] 1577 store <8 x i32> %phi, ptr addrspace(1) %out 1578 ret void 1579} 1580 1581; CHECK-LABEL: {{^}}v_bitcast_v16bf16_to_v8f32: 1582define void @v_bitcast_v16bf16_to_v8f32(i32 %cond, ptr addrspace(1) %out, <16 x bfloat> %value) { 1583entry: 1584 %cmp0 = icmp eq i32 %cond, 0 1585 br i1 %cmp0, label %if, label %end 1586 1587if: 1588 %cast = bitcast <16 x bfloat> %value to <8 x float> 1589 br label %end 1590 1591end: 1592 %phi = phi <8 x float> [zeroinitializer, %entry], [%cast, %if] 1593 store <8 x float> %phi, ptr addrspace(1) %out 1594 ret void 1595} 1596 1597; CHECK-LABEL: {{^}}v_bitcast_v16bf16_to_v4f64: 1598define void @v_bitcast_v16bf16_to_v4f64(i32 %cond, ptr addrspace(1) %out, <16 x bfloat> %value) { 1599entry: 1600 %cmp0 = icmp eq i32 %cond, 0 1601 br i1 %cmp0, label %if, label %end 1602 1603if: 1604 %cast = bitcast <16 x bfloat> %value to <4 x double> 1605 br label %end 1606 1607end: 1608 %phi = phi <4 x double> [zeroinitializer, %entry], [%cast, %if] 1609 store <4 x double> %phi, ptr addrspace(1) %out 1610 ret void 1611} 1612 1613; CHECK-LABEL: {{^}}v_bitcast_v16bf16_to_v4i64: 1614define void @v_bitcast_v16bf16_to_v4i64(i32 %cond, ptr addrspace(1) %out, <16 x bfloat> %value) { 1615entry: 1616 %cmp0 = icmp eq i32 %cond, 0 1617 br i1 %cmp0, label %if, label %end 1618 1619if: 1620 %cast = bitcast <16 x bfloat> %value to <4 x i64> 1621 br label %end 1622 1623end: 1624 %phi = phi <4 x i64> [zeroinitializer, %entry], [%cast, %if] 1625 store <4 x i64> %phi, ptr addrspace(1) %out 1626 ret void 1627} 1628 1629; CHECK-LABEL: {{^}}v_bitcast_v16bf16_to_v32i8: 1630define void @v_bitcast_v16bf16_to_v32i8(i32 %cond, ptr addrspace(1) %out, <16 x bfloat> %value) { 1631entry: 1632 %cmp0 = icmp eq i32 %cond, 0 1633 br i1 %cmp0, label %if, label %end 1634 1635if: 1636 %cast = bitcast <16 x bfloat> %value to <32 x i8> 1637 br label %end 1638 1639end: 1640 %phi = phi <32 x i8> [zeroinitializer, %entry], [%cast, %if] 1641 store <32 x i8> %phi, ptr addrspace(1) %out 1642 ret void 1643} 1644 1645; CHECK-LABEL: {{^}}v_bitcast_v8f32_to_v16bf16: 1646define void @v_bitcast_v8f32_to_v16bf16(i32 %cond, ptr addrspace(1) %out, <8 x float> %value) { 1647entry: 1648 %cmp0 = icmp eq i32 %cond, 0 1649 br i1 %cmp0, label %if, label %end 1650 1651if: 1652 %cast = bitcast <8 x float> %value to <16 x bfloat> 1653 br label %end 1654 1655end: 1656 %phi = phi <16 x bfloat> [zeroinitializer, %entry], [%cast, %if] 1657 store <16 x bfloat> %phi, ptr addrspace(1) %out 1658 ret void 1659} 1660 1661; CHECK-LABEL: {{^}}v_bitcast_v8i32_to_v16bf16: 1662define void @v_bitcast_v8i32_to_v16bf16(i32 %cond, ptr addrspace(1) %out, <8 x i32> %value) { 1663entry: 1664 %cmp0 = icmp eq i32 %cond, 0 1665 br i1 %cmp0, label %if, label %end 1666 1667if: 1668 %cast = bitcast <8 x i32> %value to <16 x bfloat> 1669 br label %end 1670 1671end: 1672 %phi = phi <16 x bfloat> [zeroinitializer, %entry], [%cast, %if] 1673 store <16 x bfloat> %phi, ptr addrspace(1) %out 1674 ret void 1675} 1676 1677; CHECK-LABEL: {{^}}v_bitcast_v4i64_to_v16bf16: 1678define void @v_bitcast_v4i64_to_v16bf16(i32 %cond, ptr addrspace(1) %out, <4 x i64> %value) { 1679entry: 1680 %cmp0 = icmp eq i32 %cond, 0 1681 br i1 %cmp0, label %if, label %end 1682 1683if: 1684 %cast = bitcast <4 x i64> %value to <16 x bfloat> 1685 br label %end 1686 1687end: 1688 %phi = phi <16 x bfloat> [zeroinitializer, %entry], [%cast, %if] 1689 store <16 x bfloat> %phi, ptr addrspace(1) %out 1690 ret void 1691} 1692 1693; CHECK-LABEL: {{^}}v_bitcast_v4f64_to_v16bf16: 1694define void @v_bitcast_v4f64_to_v16bf16(i32 %cond, ptr addrspace(1) %out, <4 x double> %value) { 1695entry: 1696 %cmp0 = icmp eq i32 %cond, 0 1697 br i1 %cmp0, label %if, label %end 1698 1699if: 1700 %cast = bitcast <4 x double> %value to <16 x bfloat> 1701 br label %end 1702 1703end: 1704 %phi = phi <16 x bfloat> [zeroinitializer, %entry], [%cast, %if] 1705 store <16 x bfloat> %phi, ptr addrspace(1) %out 1706 ret void 1707} 1708 1709; CHECK-LABEL: {{^}}v_bitcast_v32i8_to_v16bf16: 1710define void @v_bitcast_v32i8_to_v16bf16(i32 %cond, ptr addrspace(1) %out, <32 x i8> %value) { 1711entry: 1712 %cmp0 = icmp eq i32 %cond, 0 1713 br i1 %cmp0, label %if, label %end 1714 1715if: 1716 %cast = bitcast <32 x i8> %value to <16 x bfloat> 1717 br label %end 1718 1719end: 1720 %phi = phi <16 x bfloat> [zeroinitializer, %entry], [%cast, %if] 1721 store <16 x bfloat> %phi, ptr addrspace(1) %out 1722 ret void 1723} 1724 1725; CHECK-LABEL: {{^}}v_bitcast_v32bf16_to_v8i64: 1726define void @v_bitcast_v32bf16_to_v8i64(i32 %cond, ptr addrspace(1) %out, <32 x bfloat> %value) { 1727entry: 1728 %cmp0 = icmp eq i32 %cond, 0 1729 br i1 %cmp0, label %if, label %end 1730 1731if: 1732 %cast = bitcast <32 x bfloat> %value to <8 x i64> 1733 br label %end 1734 1735end: 1736 %phi = phi <8 x i64> [zeroinitializer, %entry], [%cast, %if] 1737 store <8 x i64> %phi, ptr addrspace(1) %out 1738 ret void 1739} 1740 1741; CHECK-LABEL: {{^}}v_bitcast_v32bf16_to_v8f64: 1742define void @v_bitcast_v32bf16_to_v8f64(i32 %cond, ptr addrspace(1) %out, <32 x bfloat> %value) { 1743entry: 1744 %cmp0 = icmp eq i32 %cond, 0 1745 br i1 %cmp0, label %if, label %end 1746 1747if: 1748 %cast = bitcast <32 x bfloat> %value to <8 x double> 1749 br label %end 1750 1751end: 1752 %phi = phi <8 x double> [zeroinitializer, %entry], [%cast, %if] 1753 store <8 x double> %phi, ptr addrspace(1) %out 1754 ret void 1755} 1756 1757; CHECK-LABEL: {{^}}v_bitcast_v32bf16_to_v16i32: 1758define void @v_bitcast_v32bf16_to_v16i32(i32 %cond, ptr addrspace(1) %out, <32 x bfloat> %value) { 1759entry: 1760 %cmp0 = icmp eq i32 %cond, 0 1761 br i1 %cmp0, label %if, label %end 1762 1763if: 1764 %cast = bitcast <32 x bfloat> %value to <16 x i32> 1765 br label %end 1766 1767end: 1768 %phi = phi <16 x i32> [zeroinitializer, %entry], [%cast, %if] 1769 store <16 x i32> %phi, ptr addrspace(1) %out 1770 ret void 1771} 1772 1773; CHECK-LABEL: {{^}}v_bitcast_v32bf16_to_v16f32: 1774define void @v_bitcast_v32bf16_to_v16f32(i32 %cond, ptr addrspace(1) %out, <32 x bfloat> %value) { 1775entry: 1776 %cmp0 = icmp eq i32 %cond, 0 1777 br i1 %cmp0, label %if, label %end 1778 1779if: 1780 %cast = bitcast <32 x bfloat> %value to <16 x float> 1781 br label %end 1782 1783end: 1784 %phi = phi <16 x float> [zeroinitializer, %entry], [%cast, %if] 1785 store <16 x float> %phi, ptr addrspace(1) %out 1786 ret void 1787} 1788 1789; CHECK-LABEL: {{^}}v_bitcast_v32bf16_to_v32f16: 1790define void @v_bitcast_v32bf16_to_v32f16(i32 %cond, ptr addrspace(1) %out, <32 x bfloat> %value) { 1791entry: 1792 %cmp0 = icmp eq i32 %cond, 0 1793 br i1 %cmp0, label %if, label %end 1794 1795if: 1796 %cast = bitcast <32 x bfloat> %value to <32 x half> 1797 br label %end 1798 1799end: 1800 %phi = phi <32 x half> [zeroinitializer, %entry], [%cast, %if] 1801 store <32 x half> %phi, ptr addrspace(1) %out 1802 ret void 1803} 1804 1805; CHECK-LABEL: {{^}}v_bitcast_v32bf16_to_v32i16: 1806define void @v_bitcast_v32bf16_to_v32i16(i32 %cond, ptr addrspace(1) %out, <32 x bfloat> %value) { 1807entry: 1808 %cmp0 = icmp eq i32 %cond, 0 1809 br i1 %cmp0, label %if, label %end 1810 1811if: 1812 %cast = bitcast <32 x bfloat> %value to <32 x i16> 1813 br label %end 1814 1815end: 1816 %phi = phi <32 x i16> [zeroinitializer, %entry], [%cast, %if] 1817 store <32 x i16> %phi, ptr addrspace(1) %out 1818 ret void 1819} 1820 1821; CHECK-LABEL: {{^}}v_bitcast_v32bf16_to_v64i8: 1822define void @v_bitcast_v32bf16_to_v64i8(i32 %cond, ptr addrspace(1) %out, <32 x bfloat> %value) { 1823entry: 1824 %cmp0 = icmp eq i32 %cond, 0 1825 br i1 %cmp0, label %if, label %end 1826 1827if: 1828 %cast = bitcast <32 x bfloat> %value to <64 x i8> 1829 br label %end 1830 1831end: 1832 %phi = phi <64 x i8> [zeroinitializer, %entry], [%cast, %if] 1833 store <64 x i8> %phi, ptr addrspace(1) %out 1834 ret void 1835} 1836 1837; CHECK-LABEL: {{^}}v_bitcast_v64i8_to_v32bf16: 1838define void @v_bitcast_v64i8_to_v32bf16(i32 %cond, ptr addrspace(1) %out, <64 x i8> %value) { 1839entry: 1840 %cmp0 = icmp eq i32 %cond, 0 1841 br i1 %cmp0, label %if, label %end 1842 1843if: 1844 %cast = bitcast <64 x i8> %value to <32 x bfloat> 1845 br label %end 1846 1847end: 1848 %phi = phi <32 x bfloat> [zeroinitializer, %entry], [%cast, %if] 1849 store <32 x bfloat> %phi, ptr addrspace(1) %out 1850 ret void 1851} 1852 1853; CHECK-LABEL: {{^}}v_bitcast_v32i16_to_v32bf16: 1854define void @v_bitcast_v32i16_to_v32bf16(i32 %cond, ptr addrspace(1) %out, <32 x i16> %value) { 1855entry: 1856 %cmp0 = icmp eq i32 %cond, 0 1857 br i1 %cmp0, label %if, label %end 1858 1859if: 1860 %cast = bitcast <32 x i16> %value to <32 x bfloat> 1861 br label %end 1862 1863end: 1864 %phi = phi <32 x bfloat> [zeroinitializer, %entry], [%cast, %if] 1865 store <32 x bfloat> %phi, ptr addrspace(1) %out 1866 ret void 1867} 1868 1869; CHECK-LABEL: {{^}}v_bitcast_v32f16_to_v32bf16: 1870define void @v_bitcast_v32f16_to_v32bf16(i32 %cond, ptr addrspace(1) %out, <32 x half> %value) { 1871entry: 1872 %cmp0 = icmp eq i32 %cond, 0 1873 br i1 %cmp0, label %if, label %end 1874 1875if: 1876 %cast = bitcast <32 x half> %value to <32 x bfloat> 1877 br label %end 1878 1879end: 1880 %phi = phi <32 x bfloat> [zeroinitializer, %entry], [%cast, %if] 1881 store <32 x bfloat> %phi, ptr addrspace(1) %out 1882 ret void 1883} 1884 1885; CHECK-LABEL: {{^}}v_bitcast_v16i32_to_v32bf16: 1886define void @v_bitcast_v16i32_to_v32bf16(i32 %cond, ptr addrspace(1) %out, <16 x i32> %value) { 1887entry: 1888 %cmp0 = icmp eq i32 %cond, 0 1889 br i1 %cmp0, label %if, label %end 1890 1891if: 1892 %cast = bitcast <16 x i32> %value to <32 x bfloat> 1893 br label %end 1894 1895end: 1896 %phi = phi <32 x bfloat> [zeroinitializer, %entry], [%cast, %if] 1897 store <32 x bfloat> %phi, ptr addrspace(1) %out 1898 ret void 1899} 1900 1901; CHECK-LABEL: {{^}}v_bitcast_v16f32_to_v32bf16: 1902define void @v_bitcast_v16f32_to_v32bf16(i32 %cond, ptr addrspace(1) %out, <16 x float> %value) { 1903entry: 1904 %cmp0 = icmp eq i32 %cond, 0 1905 br i1 %cmp0, label %if, label %end 1906 1907if: 1908 %cast = bitcast <16 x float> %value to <32 x bfloat> 1909 br label %end 1910 1911end: 1912 %phi = phi <32 x bfloat> [zeroinitializer, %entry], [%cast, %if] 1913 store <32 x bfloat> %phi, ptr addrspace(1) %out 1914 ret void 1915} 1916 1917; CHECK-LABEL: {{^}}v_bitcast_v8f64_to_v32bf16: 1918define void @v_bitcast_v8f64_to_v32bf16(i32 %cond, ptr addrspace(1) %out, <8 x double> %value) { 1919entry: 1920 %cmp0 = icmp eq i32 %cond, 0 1921 br i1 %cmp0, label %if, label %end 1922 1923if: 1924 %cast = bitcast <8 x double> %value to <32 x bfloat> 1925 br label %end 1926 1927end: 1928 %phi = phi <32 x bfloat> [zeroinitializer, %entry], [%cast, %if] 1929 store <32 x bfloat> %phi, ptr addrspace(1) %out 1930 ret void 1931} 1932 1933; CHECK-LABEL: {{^}}v_bitcast_v8i64_to_v32bf16: 1934define void @v_bitcast_v8i64_to_v32bf16(i32 %cond, ptr addrspace(1) %out, <8 x i64> %value) { 1935entry: 1936 %cmp0 = icmp eq i32 %cond, 0 1937 br i1 %cmp0, label %if, label %end 1938 1939if: 1940 %cast = bitcast <8 x i64> %value to <32 x bfloat> 1941 br label %end 1942 1943end: 1944 %phi = phi <32 x bfloat> [zeroinitializer, %entry], [%cast, %if] 1945 store <32 x bfloat> %phi, ptr addrspace(1) %out 1946 ret void 1947} 1948 1949 1950 1951 1952 1953 1954 1955 1956; CHECK-LABEL: {{^}}v_bitcast_v32f32_to_v64bf16: 1957define void @v_bitcast_v32f32_to_v64bf16(i32 %cond, ptr addrspace(1) %out, <32 x float> %value) { 1958entry: 1959 %cmp0 = icmp eq i32 %cond, 0 1960 br i1 %cmp0, label %if, label %end 1961 1962if: 1963 %cast = bitcast <32 x float> %value to <64 x bfloat> 1964 br label %end 1965 1966end: 1967 %phi = phi <64 x bfloat> [zeroinitializer, %entry], [%cast, %if] 1968 store <64 x bfloat> %phi, ptr addrspace(1) %out 1969 ret void 1970} 1971 1972; CHECK-LABEL: {{^}}v_bitcast_v32i32_to_v64bf16: 1973define void @v_bitcast_v32i32_to_v64bf16(i32 %cond, ptr addrspace(1) %out, <32 x i32> %value) { 1974entry: 1975 %cmp0 = icmp eq i32 %cond, 0 1976 br i1 %cmp0, label %if, label %end 1977 1978if: 1979 %cast = bitcast <32 x i32> %value to <64 x bfloat> 1980 br label %end 1981 1982end: 1983 %phi = phi <64 x bfloat> [zeroinitializer, %entry], [%cast, %if] 1984 store <64 x bfloat> %phi, ptr addrspace(1) %out 1985 ret void 1986} 1987 1988; CHECK-LABEL: {{^}}v_bitcast_v64i16_to_v64bf16: 1989define void @v_bitcast_v64i16_to_v64bf16(i32 %cond, ptr addrspace(1) %out, <64 x i16> %value) { 1990entry: 1991 %cmp0 = icmp eq i32 %cond, 0 1992 br i1 %cmp0, label %if, label %end 1993 1994if: 1995 %cast = bitcast <64 x i16> %value to <64 x bfloat> 1996 br label %end 1997 1998end: 1999 %phi = phi <64 x bfloat> [zeroinitializer, %entry], [%cast, %if] 2000 store <64 x bfloat> %phi, ptr addrspace(1) %out 2001 ret void 2002} 2003 2004; CHECK-LABEL: {{^}}v_bitcast_v64f16_to_v64bf16: 2005define void @v_bitcast_v64f16_to_v64bf16(i32 %cond, ptr addrspace(1) %out, <64 x half> %value) { 2006entry: 2007 %cmp0 = icmp eq i32 %cond, 0 2008 br i1 %cmp0, label %if, label %end 2009 2010if: 2011 %cast = bitcast <64 x half> %value to <64 x bfloat> 2012 br label %end 2013 2014end: 2015 %phi = phi <64 x bfloat> [zeroinitializer, %entry], [%cast, %if] 2016 store <64 x bfloat> %phi, ptr addrspace(1) %out 2017 ret void 2018} 2019 2020; CHECK-LABEL: {{^}}v_bitcast_v128i8_to_v64bf16: 2021define void @v_bitcast_v128i8_to_v64bf16(i32 %cond, ptr addrspace(1) %out, <128 x i8> %value) { 2022entry: 2023 %cmp0 = icmp eq i32 %cond, 0 2024 br i1 %cmp0, label %if, label %end 2025 2026if: 2027 %cast = bitcast <128 x i8> %value to <64 x bfloat> 2028 br label %end 2029 2030end: 2031 %phi = phi <64 x bfloat> [zeroinitializer, %entry], [%cast, %if] 2032 store <64 x bfloat> %phi, ptr addrspace(1) %out 2033 ret void 2034} 2035 2036; CHECK-LABEL: {{^}}v_bitcast_v64bf16_to_v64i16: 2037define void @v_bitcast_v64bf16_to_v64i16(i32 %cond, ptr addrspace(1) %out, <64 x bfloat> %value) { 2038entry: 2039 %cmp0 = icmp eq i32 %cond, 0 2040 br i1 %cmp0, label %if, label %end 2041 2042if: 2043 %cast = bitcast <64 x bfloat> %value to <64 x i16> 2044 br label %end 2045 2046end: 2047 %phi = phi <64 x i16> [zeroinitializer, %entry], [%cast, %if] 2048 store <64 x i16> %phi, ptr addrspace(1) %out 2049 ret void 2050} 2051 2052; CHECK-LABEL: {{^}}v_bitcast_v64bf16_to_v64f16: 2053define void @v_bitcast_v64bf16_to_v64f16(i32 %cond, ptr addrspace(1) %out, <64 x bfloat> %value) { 2054entry: 2055 %cmp0 = icmp eq i32 %cond, 0 2056 br i1 %cmp0, label %if, label %end 2057 2058if: 2059 %cast = bitcast <64 x bfloat> %value to <64 x half> 2060 br label %end 2061 2062end: 2063 %phi = phi <64 x half> [zeroinitializer, %entry], [%cast, %if] 2064 store <64 x half> %phi, ptr addrspace(1) %out 2065 ret void 2066} 2067 2068; CHECK-LABEL: {{^}}v_bitcast_v64bf16_to_v128i8: 2069define void @v_bitcast_v64bf16_to_v128i8(i32 %cond, ptr addrspace(1) %out, <64 x bfloat> %value) { 2070entry: 2071 %cmp0 = icmp eq i32 %cond, 0 2072 br i1 %cmp0, label %if, label %end 2073 2074if: 2075 %cast = bitcast <64 x bfloat> %value to <128 x i8> 2076 br label %end 2077 2078end: 2079 %phi = phi <128 x i8> [zeroinitializer, %entry], [%cast, %if] 2080 store <128 x i8> %phi, ptr addrspace(1) %out 2081 ret void 2082} 2083 2084; CHECK-LABEL: {{^}}v_bitcast_v64bf16_to_v16i64: 2085define void @v_bitcast_v64bf16_to_v16i64(i32 %cond, ptr addrspace(1) %out, <64 x bfloat> %value) { 2086entry: 2087 %cmp0 = icmp eq i32 %cond, 0 2088 br i1 %cmp0, label %if, label %end 2089 2090if: 2091 %cast = bitcast <64 x bfloat> %value to <16 x i64> 2092 br label %end 2093 2094end: 2095 %phi = phi <16 x i64> [zeroinitializer, %entry], [%cast, %if] 2096 store <16 x i64> %phi, ptr addrspace(1) %out 2097 ret void 2098} 2099 2100; CHECK-LABEL: {{^}}v_bitcast_v64bf16_to_v16f64: 2101define void @v_bitcast_v64bf16_to_v16f64(i32 %cond, ptr addrspace(1) %out, <64 x bfloat> %value) { 2102entry: 2103 %cmp0 = icmp eq i32 %cond, 0 2104 br i1 %cmp0, label %if, label %end 2105 2106if: 2107 %cast = bitcast <64 x bfloat> %value to <16 x double> 2108 br label %end 2109 2110end: 2111 %phi = phi <16 x double> [zeroinitializer, %entry], [%cast, %if] 2112 store <16 x double> %phi, ptr addrspace(1) %out 2113 ret void 2114} 2115