comparison test/CodeGen/AMDGPU/function-args.ll @ 147:c2174574ed3a

LLVM 10
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Wed, 14 Aug 2019 16:55:33 +0900
parents 3a76565eade5
children
comparison
equal deleted inserted replaced
134:3a76565eade5 147:c2174574ed3a
159 store <2 x i32> %arg0, <2 x i32> addrspace(1)* undef 159 store <2 x i32> %arg0, <2 x i32> addrspace(1)* undef
160 ret void 160 ret void
161 } 161 }
162 162
163 ; GCN-LABEL: {{^}}void_func_v3i32: 163 ; GCN-LABEL: {{^}}void_func_v3i32:
164 ; GCN-DAG: buffer_store_dword v2, off 164 ; GCN-DAG: buffer_store_dwordx3 v[0:2], off
165 ; GCN-DAG: buffer_store_dwordx2 v[0:1], off
166 define void @void_func_v3i32(<3 x i32> %arg0) #0 { 165 define void @void_func_v3i32(<3 x i32> %arg0) #0 {
167 store <3 x i32> %arg0, <3 x i32> addrspace(1)* undef 166 store <3 x i32> %arg0, <3 x i32> addrspace(1)* undef
168 ret void 167 ret void
169 } 168 }
170 169
219 ; GCN-LABEL: {{^}}void_func_v33i32: 218 ; GCN-LABEL: {{^}}void_func_v33i32:
220 ; GCN-DAG: buffer_store_dwordx4 v[0:3], off 219 ; GCN-DAG: buffer_store_dwordx4 v[0:3], off
221 ; GCN-DAG: buffer_store_dwordx4 v[4:7], off 220 ; GCN-DAG: buffer_store_dwordx4 v[4:7], off
222 ; GCN-DAG: buffer_store_dwordx4 v[8:11], off 221 ; GCN-DAG: buffer_store_dwordx4 v[8:11], off
223 ; GCN-DAG: buffer_store_dwordx4 v[12:15], off 222 ; GCN-DAG: buffer_store_dwordx4 v[12:15], off
224 ; GCN-DAG: buffer_load_dword [[STACKLOAD:v[0-9]+]], off, s[0:3], s5 223 ; GCN-DAG: buffer_load_dword [[STACKLOAD:v[0-9]+]], off, s[0:3], s32
225 ; GCN-DAG: buffer_store_dwordx4 v[16:19], off 224 ; GCN-DAG: buffer_store_dwordx4 v[16:19], off
226 ; GCN-DAG: buffer_store_dwordx4 v[20:23], off 225 ; GCN-DAG: buffer_store_dwordx4 v[20:23], off
227 ; GCN-DAG: buffer_store_dwordx4 v[24:27], off 226 ; GCN-DAG: buffer_store_dwordx4 v[24:27], off
228 ; GCN-DAG: buffer_store_dwordx4 v[28:31], off 227 ; GCN-DAG: buffer_store_dwordx4 v[28:31], off
229 ; GCN: buffer_store_dword [[STACKLOAD]], off 228 ; GCN: buffer_store_dword [[STACKLOAD]], off
295 store <2 x i16> %arg0, <2 x i16> addrspace(1)* undef 294 store <2 x i16> %arg0, <2 x i16> addrspace(1)* undef
296 ret void 295 ret void
297 } 296 }
298 297
299 ; GCN-LABEL: {{^}}void_func_v3i16: 298 ; GCN-LABEL: {{^}}void_func_v3i16:
300 ; GCN-DAG: buffer_store_dword v0, off 299 ; GCN-DAG: buffer_store_dword v{{[0-9]+}}, off
301 ; GCN-DAG: buffer_store_short v2, off 300 ; GCN-DAG: buffer_store_short v{{[0-9]+}}, off
302 define void @void_func_v3i16(<3 x i16> %arg0) #0 { 301 define void @void_func_v3i16(<3 x i16> %arg0) #0 {
303 store <3 x i16> %arg0, <3 x i16> addrspace(1)* undef 302 store <3 x i16> %arg0, <3 x i16> addrspace(1)* undef
304 ret void 303 ret void
305 } 304 }
306 305
312 store <4 x i16> %arg0, <4 x i16> addrspace(1)* undef 311 store <4 x i16> %arg0, <4 x i16> addrspace(1)* undef
313 ret void 312 ret void
314 } 313 }
315 314
316 ; GCN-LABEL: {{^}}void_func_v5i16: 315 ; GCN-LABEL: {{^}}void_func_v5i16:
317 ; GCN-DAG: buffer_store_short v4, off, 316 ; CI: v_lshlrev_b32
318 ; GCN-DAG: buffer_store_dwordx2 v[1:2], off 317 ; CI: v_and_b32
318 ; CI: v_lshlrev_b32
319 ; CI: v_or_b32
320 ; CI: v_or_b32
321 ; CI-DAG: buffer_store_short v
322 ; CI-DAG: buffer_store_dwordx2 v
323
324 ; GFX89-DAG: buffer_store_short v2, off,
325 ; GFX89-DAG: buffer_store_dwordx2 v[0:1], off
326
319 define void @void_func_v5i16(<5 x i16> %arg0) #0 { 327 define void @void_func_v5i16(<5 x i16> %arg0) #0 {
320 store <5 x i16> %arg0, <5 x i16> addrspace(1)* undef 328 store <5 x i16> %arg0, <5 x i16> addrspace(1)* undef
321 ret void 329 ret void
322 } 330 }
323 331
345 store <2 x float> %arg0, <2 x float> addrspace(1)* undef 353 store <2 x float> %arg0, <2 x float> addrspace(1)* undef
346 ret void 354 ret void
347 } 355 }
348 356
349 ; GCN-LABEL: {{^}}void_func_v3f32: 357 ; GCN-LABEL: {{^}}void_func_v3f32:
350 ; GCN-DAG: buffer_store_dword v2, off 358 ; GCN-DAG: buffer_store_dwordx3 v[0:2], off
351 ; GCN-DAG: buffer_store_dwordx2 v[0:1], off
352 define void @void_func_v3f32(<3 x float> %arg0) #0 { 359 define void @void_func_v3f32(<3 x float> %arg0) #0 {
353 store <3 x float> %arg0, <3 x float> addrspace(1)* undef 360 store <3 x float> %arg0, <3 x float> addrspace(1)* undef
354 ret void 361 ret void
355 } 362 }
356 363
432 define void @void_func_v2f16(<2 x half> %arg0) #0 { 439 define void @void_func_v2f16(<2 x half> %arg0) #0 {
433 store <2 x half> %arg0, <2 x half> addrspace(1)* undef 440 store <2 x half> %arg0, <2 x half> addrspace(1)* undef
434 ret void 441 ret void
435 } 442 }
436 443
444 ; FIXME: Different abi if f16 legal
437 ; GCN-LABEL: {{^}}void_func_v3f16: 445 ; GCN-LABEL: {{^}}void_func_v3f16:
438 ; GFX9-NOT: v0 446 ; CI-DAG: v_cvt_f16_f32_e32 v{{[0-9]+}}, v0
439 ; GCN-DAG: buffer_store_dword v0, off 447 ; CI-DAG: v_cvt_f16_f32_e32 v{{[0-9]+}}, v1
440 ; GCN-DAG: buffer_store_short v2, off 448 ; CI-DAG: v_cvt_f16_f32_e32 v{{[0-9]+}}, v2
449
450 ; GFX89-DAG: v0
451 ; GFX89-DAG: v1
452
453 ; GCN-DAG: buffer_store_short
454 ; GCN-DAG: buffer_store_dword
441 define void @void_func_v3f16(<3 x half> %arg0) #0 { 455 define void @void_func_v3f16(<3 x half> %arg0) #0 {
442 store <3 x half> %arg0, <3 x half> addrspace(1)* undef 456 store <3 x half> %arg0, <3 x half> addrspace(1)* undef
443 ret void 457 ret void
444 } 458 }
445 459
500 store { i8, i32 } %arg0, { i8, i32 } addrspace(1)* undef 514 store { i8, i32 } %arg0, { i8, i32 } addrspace(1)* undef
501 ret void 515 ret void
502 } 516 }
503 517
504 ; GCN-LABEL: {{^}}void_func_byval_struct_i8_i32: 518 ; GCN-LABEL: {{^}}void_func_byval_struct_i8_i32:
505 ; GCN-DAG: buffer_load_ubyte v[[ELT0:[0-9]+]], off, s[0:3], s5 offset:4{{$}} 519 ; GCN-DAG: buffer_load_ubyte v[[ELT0:[0-9]+]], off, s[0:3], s32{{$}}
506 ; GCN-DAG: buffer_load_dword v[[ELT1:[0-9]+]], off, s[0:3], s5 offset:8{{$}} 520 ; GCN-DAG: buffer_load_dword v[[ELT1:[0-9]+]], off, s[0:3], s32 offset:4{{$}}
507 ; GCN-DAG: buffer_store_dword v[[ELT1]] 521 ; GCN-DAG: buffer_store_dword v[[ELT1]]
508 ; GCN-DAG: buffer_store_byte v[[ELT0]] 522 ; GCN-DAG: buffer_store_byte v[[ELT0]]
509 define void @void_func_byval_struct_i8_i32({ i8, i32 } addrspace(5)* byval %arg0) #0 { 523 define void @void_func_byval_struct_i8_i32({ i8, i32 } addrspace(5)* byval %arg0) #0 {
510 %arg0.load = load { i8, i32 }, { i8, i32 } addrspace(5)* %arg0 524 %arg0.load = load { i8, i32 }, { i8, i32 } addrspace(5)* %arg0
511 store { i8, i32 } %arg0.load, { i8, i32 } addrspace(1)* undef 525 store { i8, i32 } %arg0.load, { i8, i32 } addrspace(1)* undef
512 ret void 526 ret void
513 } 527 }
514 528
515 ; GCN-LABEL: {{^}}void_func_byval_struct_i8_i32_x2: 529 ; GCN-LABEL: {{^}}void_func_byval_struct_i8_i32_x2:
516 ; GCN: buffer_load_ubyte v[[ELT0_0:[0-9]+]], off, s[0:3], s5 offset:4{{$}} 530 ; GCN: buffer_load_ubyte v[[ELT0_0:[0-9]+]], off, s[0:3], s32{{$}}
517 ; GCN: buffer_load_dword v[[ELT1_0:[0-9]+]], off, s[0:3], s5 offset:8{{$}} 531 ; GCN: buffer_load_dword v[[ELT1_0:[0-9]+]], off, s[0:3], s32 offset:4{{$}}
518 ; GCN: buffer_load_ubyte v[[ELT0_1:[0-9]+]], off, s[0:3], s5 offset:12{{$}} 532 ; GCN: buffer_load_ubyte v[[ELT0_1:[0-9]+]], off, s[0:3], s32 offset:8{{$}}
519 ; GCN: buffer_load_dword v[[ELT1_1:[0-9]+]], off, s[0:3], s5 offset:16{{$}} 533 ; GCN: buffer_load_dword v[[ELT1_1:[0-9]+]], off, s[0:3], s32 offset:12{{$}}
520 534
521 ; GCN: ds_write_b32 v0, v0 535 ; GCN: ds_write_b32 v0, v0
522 ; GCN: s_setpc_b64 536 ; GCN: s_setpc_b64
523 define void @void_func_byval_struct_i8_i32_x2({ i8, i32 } addrspace(5)* byval %arg0, { i8, i32 } addrspace(5)* byval %arg1, i32 %arg2) #0 { 537 define void @void_func_byval_struct_i8_i32_x2({ i8, i32 } addrspace(5)* byval %arg0, { i8, i32 } addrspace(5)* byval %arg1, i32 %arg2) #0 {
524 %arg0.load = load volatile { i8, i32 }, { i8, i32 } addrspace(5)* %arg0 538 %arg0.load = load volatile { i8, i32 }, { i8, i32 } addrspace(5)* %arg0
528 store volatile i32 %arg2, i32 addrspace(3)* undef 542 store volatile i32 %arg2, i32 addrspace(3)* undef
529 ret void 543 ret void
530 } 544 }
531 545
532 ; GCN-LABEL: {{^}}void_func_byval_i32_byval_i64: 546 ; GCN-LABEL: {{^}}void_func_byval_i32_byval_i64:
533 ; GCN-DAG: buffer_load_dword v[[ARG0_LOAD:[0-9]+]], off, s[0:3], s5 offset:4{{$}} 547 ; GCN-DAG: buffer_load_dword v[[ARG0_LOAD:[0-9]+]], off, s[0:3], s32{{$}}
534 ; GCN-DAG: buffer_load_dword v[[ARG1_LOAD0:[0-9]+]], off, s[0:3], s5 offset:8{{$}} 548 ; GCN-DAG: buffer_load_dword v[[ARG1_LOAD0:[0-9]+]], off, s[0:3], s32 offset:8{{$}}
535 ; GCN-DAG: buffer_load_dword v[[ARG1_LOAD1:[0-9]+]], off, s[0:3], s5 offset:12{{$}} 549 ; GCN-DAG: buffer_load_dword v[[ARG1_LOAD1:[0-9]+]], off, s[0:3], s32 offset:12{{$}}
536 ; GCN-DAG: buffer_store_dword v[[ARG0_LOAD]], off 550 ; GCN-DAG: buffer_store_dword v[[ARG0_LOAD]], off
537 ; GCN-DAG: buffer_store_dwordx2 v{{\[}}[[ARG1_LOAD0]]:[[ARG1_LOAD1]]{{\]}}, off 551 ; GCN-DAG: buffer_store_dwordx2 v{{\[}}[[ARG1_LOAD0]]:[[ARG1_LOAD1]]{{\]}}, off
538 define void @void_func_byval_i32_byval_i64(i32 addrspace(5)* byval %arg0, i64 addrspace(5)* byval %arg1) #0 { 552 define void @void_func_byval_i32_byval_i64(i32 addrspace(5)* byval %arg0, i64 addrspace(5)* byval %arg1) #0 {
539 %arg0.load = load i32, i32 addrspace(5)* %arg0 553 %arg0.load = load i32, i32 addrspace(5)* %arg0
540 %arg1.load = load i64, i64 addrspace(5)* %arg1 554 %arg1.load = load i64, i64 addrspace(5)* %arg1
550 ; GCN-DAG: buffer_store_dwordx4 v[12:15], off 564 ; GCN-DAG: buffer_store_dwordx4 v[12:15], off
551 ; GCN-DAG: buffer_store_dwordx4 v[16:19], off 565 ; GCN-DAG: buffer_store_dwordx4 v[16:19], off
552 ; GCN-DAG: buffer_store_dwordx4 v[20:23], off 566 ; GCN-DAG: buffer_store_dwordx4 v[20:23], off
553 ; GCN-DAG: buffer_store_dwordx4 v[24:27], off 567 ; GCN-DAG: buffer_store_dwordx4 v[24:27], off
554 ; GCN-DAG: buffer_store_dwordx4 v[28:31], off 568 ; GCN-DAG: buffer_store_dwordx4 v[28:31], off
555 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1:[0-9]+]], off, s[0:3], s5 offset:4{{$}} 569 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1:[0-9]+]], off, s[0:3], s32{{$}}
556 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_0:[0-9]+]], off, s[0:3], s5 offset:8 570 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_0:[0-9]+]], off, s[0:3], s32 offset:4
557 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_1:[0-9]+]], off, s[0:3], s5 offset:12 571 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_1:[0-9]+]], off, s[0:3], s32 offset:8
558 572
559 ; GCN: buffer_store_dword v[[LOAD_ARG1]] 573 ; GCN: buffer_store_dword v[[LOAD_ARG1]]
560 ; GCN: buffer_store_dwordx2 v{{\[}}[[LOAD_ARG2_0]]:[[LOAD_ARG2_1]]{{\]}}, off 574 ; GCN: buffer_store_dwordx2 v{{\[}}[[LOAD_ARG2_0]]:[[LOAD_ARG2_1]]{{\]}}, off
561 define void @void_func_v32i32_i32_i64(<32 x i32> %arg0, i32 %arg1, i64 %arg2) #0 { 575 define void @void_func_v32i32_i32_i64(<32 x i32> %arg0, i32 %arg1, i64 %arg2) #0 {
562 store volatile <32 x i32> %arg0, <32 x i32> addrspace(1)* undef 576 store volatile <32 x i32> %arg0, <32 x i32> addrspace(1)* undef
565 ret void 579 ret void
566 } 580 }
567 581
568 ; FIXME: Different ext load types on CI vs. VI 582 ; FIXME: Different ext load types on CI vs. VI
569 ; GCN-LABEL: {{^}}void_func_v32i32_i1_i8_i16: 583 ; GCN-LABEL: {{^}}void_func_v32i32_i1_i8_i16:
570 ; GCN-DAG: buffer_load_ubyte [[LOAD_ARG1:v[0-9]+]], off, s[0:3], s5 offset:4{{$}} 584 ; GCN-DAG: buffer_load_ubyte [[LOAD_ARG1:v[0-9]+]], off, s[0:3], s32{{$}}
571 ; VI-DAG: buffer_load_ushort [[LOAD_ARG2:v[0-9]+]], off, s[0:3], s5 offset:8{{$}} 585 ; VI-DAG: buffer_load_ushort [[LOAD_ARG2:v[0-9]+]], off, s[0:3], s32 offset:4{{$}}
572 ; VI-DAG: buffer_load_ushort [[LOAD_ARG3:v[0-9]+]], off, s[0:3], s5 offset:12{{$}} 586 ; VI-DAG: buffer_load_ushort [[LOAD_ARG3:v[0-9]+]], off, s[0:3], s32 offset:8{{$}}
573 ; VI-DAG: buffer_load_ushort [[LOAD_ARG4:v[0-9]+]], off, s[0:3], s5 offset:16{{$}} 587 ; VI-DAG: buffer_load_ushort [[LOAD_ARG4:v[0-9]+]], off, s[0:3], s32 offset:12{{$}}
574 588
575 ; CI-DAG: buffer_load_dword [[LOAD_ARG2:v[0-9]+]], off, s[0:3], s5 offset:8{{$}} 589 ; CI-DAG: buffer_load_dword [[LOAD_ARG2:v[0-9]+]], off, s[0:3], s32 offset:4{{$}}
576 ; CI-DAG: buffer_load_dword [[LOAD_ARG3:v[0-9]+]], off, s[0:3], s5 offset:12{{$}} 590 ; CI-DAG: buffer_load_dword [[LOAD_ARG3:v[0-9]+]], off, s[0:3], s32 offset:8{{$}}
577 ; CI-DAG: buffer_load_dword [[LOAD_ARG4:v[0-9]+]], off, s[0:3], s5 offset:16{{$}} 591 ; CI-DAG: buffer_load_dword [[LOAD_ARG4:v[0-9]+]], off, s[0:3], s32 offset:12{{$}}
578 592
579 ; GCN-DAG: v_and_b32_e32 [[TRUNC_ARG1_I1:v[0-9]+]], 1, [[LOAD_ARG1]] 593 ; GCN-DAG: v_and_b32_e32 [[TRUNC_ARG1_I1:v[0-9]+]], 1, [[LOAD_ARG1]]
580 ; CI-DAG: v_cvt_f16_f32_e32 [[CVT_ARG4:v[0-9]+]], [[LOAD_ARG4]] 594 ; CI-DAG: v_cvt_f16_f32_e32 [[CVT_ARG4:v[0-9]+]], [[LOAD_ARG4]]
581 595
582 ; GCN: buffer_store_byte [[TRUNC_ARG1_I1]], off 596 ; GCN: buffer_store_byte [[TRUNC_ARG1_I1]], off
593 store volatile half %arg4, half addrspace(1)* undef 607 store volatile half %arg4, half addrspace(1)* undef
594 ret void 608 ret void
595 } 609 }
596 610
597 ; GCN-LABEL: {{^}}void_func_v32i32_v2i32_v2f32: 611 ; GCN-LABEL: {{^}}void_func_v32i32_v2i32_v2f32:
598 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_0:[0-9]+]], off, s[0:3], s5 offset:4{{$}} 612 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_0:[0-9]+]], off, s[0:3], s32{{$}}
599 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_1:[0-9]+]], off, s[0:3], s5 offset:8{{$}} 613 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_1:[0-9]+]], off, s[0:3], s32 offset:4{{$}}
600 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_0:[0-9]+]], off, s[0:3], s5 offset:12{{$}} 614 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_0:[0-9]+]], off, s[0:3], s32 offset:8{{$}}
601 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_1:[0-9]+]], off, s[0:3], s5 offset:16{{$}} 615 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_1:[0-9]+]], off, s[0:3], s32 offset:12{{$}}
602 616
603 ; GCN: buffer_store_dwordx2 v{{\[}}[[LOAD_ARG1_0]]:[[LOAD_ARG1_1]]{{\]}}, off 617 ; GCN: buffer_store_dwordx2 v{{\[}}[[LOAD_ARG1_0]]:[[LOAD_ARG1_1]]{{\]}}, off
604 ; GCN: buffer_store_dwordx2 v{{\[}}[[LOAD_ARG2_0]]:[[LOAD_ARG2_1]]{{\]}}, off 618 ; GCN: buffer_store_dwordx2 v{{\[}}[[LOAD_ARG2_0]]:[[LOAD_ARG2_1]]{{\]}}, off
605 define void @void_func_v32i32_v2i32_v2f32(<32 x i32> %arg0, <2 x i32> %arg1, <2 x float> %arg2) #0 { 619 define void @void_func_v32i32_v2i32_v2f32(<32 x i32> %arg0, <2 x i32> %arg1, <2 x float> %arg2) #0 {
606 store volatile <32 x i32> %arg0, <32 x i32> addrspace(1)* undef 620 store volatile <32 x i32> %arg0, <32 x i32> addrspace(1)* undef
608 store volatile <2 x float> %arg2, <2 x float> addrspace(1)* undef 622 store volatile <2 x float> %arg2, <2 x float> addrspace(1)* undef
609 ret void 623 ret void
610 } 624 }
611 625
612 ; GCN-LABEL: {{^}}void_func_v32i32_v2i16_v2f16: 626 ; GCN-LABEL: {{^}}void_func_v32i32_v2i16_v2f16:
613 ; GFX9-DAG: buffer_load_dword [[LOAD_ARG1:v[0-9]+]], off, s[0:3], s5 offset:4{{$}} 627 ; GFX9-DAG: buffer_load_dword [[LOAD_ARG1:v[0-9]+]], off, s[0:3], s32 offset:4{{$}}
614 ; GFX9-DAG: buffer_load_dword [[LOAD_ARG2:v[0-9]+]], off, s[0:3], s5 offset:8{{$}} 628 ; GFX9-DAG: buffer_load_dword [[LOAD_ARG2:v[0-9]+]], off, s[0:3], s32 offset:8{{$}}
615 ; GFX9: buffer_store_dword [[LOAD_ARG1]], off 629 ; GFX9: buffer_store_dword [[LOAD_ARG1]], off
616 ; GFX9: buffer_store_short [[LOAD_ARG2]], off 630 ; GFX9: buffer_store_short [[LOAD_ARG2]], off
617 define void @void_func_v32i32_v2i16_v2f16(<32 x i32> %arg0, <2 x i16> %arg1, <2 x half> %arg2) #0 { 631 define void @void_func_v32i32_v2i16_v2f16(<32 x i32> %arg0, <2 x i16> %arg1, <2 x half> %arg2) #0 {
618 store volatile <32 x i32> %arg0, <32 x i32> addrspace(1)* undef 632 store volatile <32 x i32> %arg0, <32 x i32> addrspace(1)* undef
619 store volatile <2 x i16> %arg1, <2 x i16> addrspace(1)* undef 633 store volatile <2 x i16> %arg1, <2 x i16> addrspace(1)* undef
620 store volatile <2 x half> %arg2, <2 x half> addrspace(1)* undef 634 store volatile <2 x half> %arg2, <2 x half> addrspace(1)* undef
621 ret void 635 ret void
622 } 636 }
623 637
624 ; GCN-LABEL: {{^}}void_func_v32i32_v2i64_v2f64: 638 ; GCN-LABEL: {{^}}void_func_v32i32_v2i64_v2f64:
625 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_0:[0-9]+]], off, s[0:3], s5 offset:4{{$}} 639 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_0:[0-9]+]], off, s[0:3], s32{{$}}
626 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_1:[0-9]+]], off, s[0:3], s5 offset:8{{$}} 640 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_1:[0-9]+]], off, s[0:3], s32 offset:4{{$}}
627 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_2:[0-9]+]], off, s[0:3], s5 offset:12{{$}} 641 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_2:[0-9]+]], off, s[0:3], s32 offset:8{{$}}
628 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_3:[0-9]+]], off, s[0:3], s5 offset:16{{$}} 642 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_3:[0-9]+]], off, s[0:3], s32 offset:12{{$}}
629 643
630 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_0:[0-9]+]], off, s[0:3], s5 offset:20{{$}} 644 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_0:[0-9]+]], off, s[0:3], s32 offset:16{{$}}
631 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_1:[0-9]+]], off, s[0:3], s5 offset:24{{$}} 645 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_1:[0-9]+]], off, s[0:3], s32 offset:20{{$}}
632 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_2:[0-9]+]], off, s[0:3], s5 offset:28{{$}} 646 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_2:[0-9]+]], off, s[0:3], s32 offset:24{{$}}
633 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_3:[0-9]+]], off, s[0:3], s5 offset:32{{$}} 647 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_3:[0-9]+]], off, s[0:3], s32 offset:28{{$}}
634 648
635 ; GCN: buffer_store_dwordx4 v{{\[}}[[LOAD_ARG1_0]]:[[LOAD_ARG1_3]]{{\]}}, off 649 ; GCN: buffer_store_dwordx4 v{{\[}}[[LOAD_ARG1_0]]:[[LOAD_ARG1_3]]{{\]}}, off
636 ; GCN: buffer_store_dwordx4 v{{\[}}[[LOAD_ARG2_0]]:[[LOAD_ARG2_3]]{{\]}}, off 650 ; GCN: buffer_store_dwordx4 v{{\[}}[[LOAD_ARG2_0]]:[[LOAD_ARG2_3]]{{\]}}, off
637 define void @void_func_v32i32_v2i64_v2f64(<32 x i32> %arg0, <2 x i64> %arg1, <2 x double> %arg2) #0 { 651 define void @void_func_v32i32_v2i64_v2f64(<32 x i32> %arg0, <2 x i64> %arg1, <2 x double> %arg2) #0 {
638 store volatile <32 x i32> %arg0, <32 x i32> addrspace(1)* undef 652 store volatile <32 x i32> %arg0, <32 x i32> addrspace(1)* undef
640 store volatile <2 x double> %arg2, <2 x double> addrspace(1)* undef 654 store volatile <2 x double> %arg2, <2 x double> addrspace(1)* undef
641 ret void 655 ret void
642 } 656 }
643 657
644 ; GCN-LABEL: {{^}}void_func_v32i32_v4i32_v4f32: 658 ; GCN-LABEL: {{^}}void_func_v32i32_v4i32_v4f32:
645 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_0:[0-9]+]], off, s[0:3], s5 offset:4{{$}} 659 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_0:[0-9]+]], off, s[0:3], s32{{$}}
646 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_1:[0-9]+]], off, s[0:3], s5 offset:8{{$}} 660 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_1:[0-9]+]], off, s[0:3], s32 offset:4{{$}}
647 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_2:[0-9]+]], off, s[0:3], s5 offset:12{{$}} 661 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_2:[0-9]+]], off, s[0:3], s32 offset:8{{$}}
648 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_3:[0-9]+]], off, s[0:3], s5 offset:16{{$}} 662 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_3:[0-9]+]], off, s[0:3], s32 offset:12{{$}}
649 663
650 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_0:[0-9]+]], off, s[0:3], s5 offset:20{{$}} 664 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_0:[0-9]+]], off, s[0:3], s32 offset:16{{$}}
651 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_1:[0-9]+]], off, s[0:3], s5 offset:24{{$}} 665 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_1:[0-9]+]], off, s[0:3], s32 offset:20{{$}}
652 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_2:[0-9]+]], off, s[0:3], s5 offset:28{{$}} 666 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_2:[0-9]+]], off, s[0:3], s32 offset:24{{$}}
653 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_3:[0-9]+]], off, s[0:3], s5 offset:32{{$}} 667 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_3:[0-9]+]], off, s[0:3], s32 offset:28{{$}}
654 668
655 ; GCN: buffer_store_dwordx4 v{{\[}}[[LOAD_ARG1_0]]:[[LOAD_ARG1_3]]{{\]}}, off 669 ; GCN: buffer_store_dwordx4 v{{\[}}[[LOAD_ARG1_0]]:[[LOAD_ARG1_3]]{{\]}}, off
656 ; GCN: buffer_store_dwordx4 v{{\[}}[[LOAD_ARG2_0]]:[[LOAD_ARG2_3]]{{\]}}, off 670 ; GCN: buffer_store_dwordx4 v{{\[}}[[LOAD_ARG2_0]]:[[LOAD_ARG2_3]]{{\]}}, off
657 define void @void_func_v32i32_v4i32_v4f32(<32 x i32> %arg0, <4 x i32> %arg1, <4 x float> %arg2) #0 { 671 define void @void_func_v32i32_v4i32_v4f32(<32 x i32> %arg0, <4 x i32> %arg1, <4 x float> %arg2) #0 {
658 store volatile <32 x i32> %arg0, <32 x i32> addrspace(1)* undef 672 store volatile <32 x i32> %arg0, <32 x i32> addrspace(1)* undef
660 store volatile <4 x float> %arg2, <4 x float> addrspace(1)* undef 674 store volatile <4 x float> %arg2, <4 x float> addrspace(1)* undef
661 ret void 675 ret void
662 } 676 }
663 677
664 ; GCN-LABEL: {{^}}void_func_v32i32_v8i32_v8f32: 678 ; GCN-LABEL: {{^}}void_func_v32i32_v8i32_v8f32:
665 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_0:[0-9]+]], off, s[0:3], s5 offset:4{{$}} 679 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_0:[0-9]+]], off, s[0:3], s32{{$}}
666 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_1:[0-9]+]], off, s[0:3], s5 offset:8{{$}} 680 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_1:[0-9]+]], off, s[0:3], s32 offset:4{{$}}
667 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_2:[0-9]+]], off, s[0:3], s5 offset:12{{$}} 681 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_2:[0-9]+]], off, s[0:3], s32 offset:8{{$}}
668 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_3:[0-9]+]], off, s[0:3], s5 offset:16{{$}} 682 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_3:[0-9]+]], off, s[0:3], s32 offset:12{{$}}
669 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_4:[0-9]+]], off, s[0:3], s5 offset:20{{$}} 683 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_4:[0-9]+]], off, s[0:3], s32 offset:16{{$}}
670 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_5:[0-9]+]], off, s[0:3], s5 offset:24{{$}} 684 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_5:[0-9]+]], off, s[0:3], s32 offset:20{{$}}
671 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_6:[0-9]+]], off, s[0:3], s5 offset:28{{$}} 685 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_6:[0-9]+]], off, s[0:3], s32 offset:24{{$}}
672 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_7:[0-9]+]], off, s[0:3], s5 offset:32{{$}} 686 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_7:[0-9]+]], off, s[0:3], s32 offset:28{{$}}
673 687
674 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_0:[0-9]+]], off, s[0:3], s5 offset:36{{$}} 688 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_0:[0-9]+]], off, s[0:3], s32 offset:32{{$}}
675 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_1:[0-9]+]], off, s[0:3], s5 offset:40{{$}} 689 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_1:[0-9]+]], off, s[0:3], s32 offset:36{{$}}
676 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_2:[0-9]+]], off, s[0:3], s5 offset:44{{$}} 690 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_2:[0-9]+]], off, s[0:3], s32 offset:40{{$}}
677 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_3:[0-9]+]], off, s[0:3], s5 offset:48{{$}} 691 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_3:[0-9]+]], off, s[0:3], s32 offset:44{{$}}
678 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_4:[0-9]+]], off, s[0:3], s5 offset:52{{$}} 692 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_4:[0-9]+]], off, s[0:3], s32 offset:48{{$}}
679 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_5:[0-9]+]], off, s[0:3], s5 offset:56{{$}} 693 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_5:[0-9]+]], off, s[0:3], s32 offset:52{{$}}
680 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_6:[0-9]+]], off, s[0:3], s5 offset:60{{$}} 694 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_6:[0-9]+]], off, s[0:3], s32 offset:56{{$}}
681 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_7:[0-9]+]], off, s[0:3], s5 offset:64{{$}} 695 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_7:[0-9]+]], off, s[0:3], s32 offset:60{{$}}
682 696
683 ; GCN: buffer_store_dwordx4 v{{\[}}[[LOAD_ARG1_4]]:[[LOAD_ARG1_7]]{{\]}}, off 697 ; GCN: buffer_store_dwordx4 v{{\[}}[[LOAD_ARG1_4]]:[[LOAD_ARG1_7]]{{\]}}, off
684 ; GCN: buffer_store_dwordx4 v{{\[}}[[LOAD_ARG1_0]]:[[LOAD_ARG1_3]]{{\]}}, off 698 ; GCN: buffer_store_dwordx4 v{{\[}}[[LOAD_ARG1_0]]:[[LOAD_ARG1_3]]{{\]}}, off
685 ; GCN: buffer_store_dwordx4 v{{\[}}[[LOAD_ARG2_4]]:[[LOAD_ARG2_7]]{{\]}}, off 699 ; GCN: buffer_store_dwordx4 v{{\[}}[[LOAD_ARG2_4]]:[[LOAD_ARG2_7]]{{\]}}, off
686 ; GCN: buffer_store_dwordx4 v{{\[}}[[LOAD_ARG2_0]]:[[LOAD_ARG2_3]]{{\]}}, off 700 ; GCN: buffer_store_dwordx4 v{{\[}}[[LOAD_ARG2_0]]:[[LOAD_ARG2_3]]{{\]}}, off
690 store volatile <8 x float> %arg2, <8 x float> addrspace(1)* undef 704 store volatile <8 x float> %arg2, <8 x float> addrspace(1)* undef
691 ret void 705 ret void
692 } 706 }
693 707
694 ; GCN-LABEL: {{^}}void_func_v32i32_v16i32_v16f32: 708 ; GCN-LABEL: {{^}}void_func_v32i32_v16i32_v16f32:
695 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_0:[0-9]+]], off, s[0:3], s5 offset:4{{$}} 709 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_0:[0-9]+]], off, s[0:3], s32{{$}}
696 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_1:[0-9]+]], off, s[0:3], s5 offset:8{{$}} 710 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_1:[0-9]+]], off, s[0:3], s32 offset:4{{$}}
697 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_2:[0-9]+]], off, s[0:3], s5 offset:12{{$}} 711 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_2:[0-9]+]], off, s[0:3], s32 offset:8{{$}}
698 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_:[0-9]+]], off, s[0:3], s5 offset:16{{$}} 712 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_:[0-9]+]], off, s[0:3], s32 offset:12{{$}}
699 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_4:[0-9]+]], off, s[0:3], s5 offset:20{{$}} 713 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_4:[0-9]+]], off, s[0:3], s32 offset:16{{$}}
700 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_5:[0-9]+]], off, s[0:3], s5 offset:24{{$}} 714 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_5:[0-9]+]], off, s[0:3], s32 offset:20{{$}}
701 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_6:[0-9]+]], off, s[0:3], s5 offset:28{{$}} 715 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_6:[0-9]+]], off, s[0:3], s32 offset:24{{$}}
702 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_7:[0-9]+]], off, s[0:3], s5 offset:32{{$}} 716 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_7:[0-9]+]], off, s[0:3], s32 offset:28{{$}}
703 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_8:[0-9]+]], off, s[0:3], s5 offset:36{{$}} 717 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_8:[0-9]+]], off, s[0:3], s32 offset:32{{$}}
704 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_9:[0-9]+]], off, s[0:3], s5 offset:40{{$}} 718 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_9:[0-9]+]], off, s[0:3], s32 offset:36{{$}}
705 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_10:[0-9]+]], off, s[0:3], s5 offset:44{{$}} 719 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_10:[0-9]+]], off, s[0:3], s32 offset:40{{$}}
706 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_11:[0-9]+]], off, s[0:3], s5 offset:48{{$}} 720 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_11:[0-9]+]], off, s[0:3], s32 offset:44{{$}}
707 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_12:[0-9]+]], off, s[0:3], s5 offset:52{{$}} 721 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_12:[0-9]+]], off, s[0:3], s32 offset:48{{$}}
708 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_13:[0-9]+]], off, s[0:3], s5 offset:56{{$}} 722 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_13:[0-9]+]], off, s[0:3], s32 offset:52{{$}}
709 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_14:[0-9]+]], off, s[0:3], s5 offset:60{{$}} 723 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG1_14:[0-9]+]], off, s[0:3], s32 offset:56{{$}}
710 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_15:[0-9]+]], off, s[0:3], s5 offset:64{{$}} 724 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_15:[0-9]+]], off, s[0:3], s32 offset:60{{$}}
711 725
712 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_0:[0-9]+]], off, s[0:3], s5 offset:68{{$}} 726 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_0:[0-9]+]], off, s[0:3], s32 offset:64{{$}}
713 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_1:[0-9]+]], off, s[0:3], s5 offset:72{{$}} 727 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_1:[0-9]+]], off, s[0:3], s32 offset:68{{$}}
714 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_2:[0-9]+]], off, s[0:3], s5 offset:76{{$}} 728 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_2:[0-9]+]], off, s[0:3], s32 offset:72{{$}}
715 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_3:[0-9]+]], off, s[0:3], s5 offset:80{{$}} 729 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_3:[0-9]+]], off, s[0:3], s32 offset:76{{$}}
716 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_4:[0-9]+]], off, s[0:3], s5 offset:84{{$}} 730 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_4:[0-9]+]], off, s[0:3], s32 offset:80{{$}}
717 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_5:[0-9]+]], off, s[0:3], s5 offset:88{{$}} 731 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_5:[0-9]+]], off, s[0:3], s32 offset:84{{$}}
718 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_6:[0-9]+]], off, s[0:3], s5 offset:92{{$}} 732 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_6:[0-9]+]], off, s[0:3], s32 offset:88{{$}}
719 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_7:[0-9]+]], off, s[0:3], s5 offset:96{{$}} 733 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_7:[0-9]+]], off, s[0:3], s32 offset:92{{$}}
720 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_8:[0-9]+]], off, s[0:3], s5 offset:100{{$}} 734 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_8:[0-9]+]], off, s[0:3], s32 offset:96{{$}}
721 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_9:[0-9]+]], off, s[0:3], s5 offset:104{{$}} 735 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_9:[0-9]+]], off, s[0:3], s32 offset:100{{$}}
722 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_10:[0-9]+]], off, s[0:3], s5 offset:108{{$}} 736 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_10:[0-9]+]], off, s[0:3], s32 offset:104{{$}}
723 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_11:[0-9]+]], off, s[0:3], s5 offset:112{{$}} 737 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_11:[0-9]+]], off, s[0:3], s32 offset:108{{$}}
724 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_12:[0-9]+]], off, s[0:3], s5 offset:116{{$}} 738 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_12:[0-9]+]], off, s[0:3], s32 offset:112{{$}}
725 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_13:[0-9]+]], off, s[0:3], s5 offset:120{{$}} 739 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_13:[0-9]+]], off, s[0:3], s32 offset:116{{$}}
726 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_14:[0-9]+]], off, s[0:3], s5 offset:124{{$}} 740 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_14:[0-9]+]], off, s[0:3], s32 offset:120{{$}}
727 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_15:[0-9]+]], off, s[0:3], s5 offset:128{{$}} 741 ; GCN-DAG: buffer_load_dword v[[LOAD_ARG2_15:[0-9]+]], off, s[0:3], s32 offset:124{{$}}
728 define void @void_func_v32i32_v16i32_v16f32(<32 x i32> %arg0, <16 x i32> %arg1, <16 x float> %arg2) #0 { 742 define void @void_func_v32i32_v16i32_v16f32(<32 x i32> %arg0, <16 x i32> %arg1, <16 x float> %arg2) #0 {
729 store volatile <32 x i32> %arg0, <32 x i32> addrspace(1)* undef 743 store volatile <32 x i32> %arg0, <32 x i32> addrspace(1)* undef
730 store volatile <16 x i32> %arg1, <16 x i32> addrspace(1)* undef 744 store volatile <16 x i32> %arg1, <16 x i32> addrspace(1)* undef
731 store volatile <16 x float> %arg2, <16 x float> addrspace(1)* undef 745 store volatile <16 x float> %arg2, <16 x float> addrspace(1)* undef
746 ret void
747 }
748
749 ; Make sure v3 isn't a wasted register because of v3 types being promoted to v4
750 ; GCN-LABEL: {{^}}void_func_v3f32_wasted_reg:
751 ; GCN: s_waitcnt
752 ; GCN: ds_write_b32 v{{[0-9]+}}, v0
753 ; GCN-NEXT: ds_write_b32 v{{[0-9]+}}, v1
754 ; GCN-NEXT: ds_write_b32 v{{[0-9]+}}, v2
755 ; GCN-NEXT: ds_write_b32 v{{[0-9]+}}, v3
756 ; GCN-NEXT: s_waitcnt
757 ; GCN-NEXT: s_setpc_b64
758 define void @void_func_v3f32_wasted_reg(<3 x float> %arg0, i32 %arg1) #0 {
759 %arg0.0 = extractelement <3 x float> %arg0, i32 0
760 %arg0.1 = extractelement <3 x float> %arg0, i32 1
761 %arg0.2 = extractelement <3 x float> %arg0, i32 2
762 store volatile float %arg0.0, float addrspace(3)* undef
763 store volatile float %arg0.1, float addrspace(3)* undef
764 store volatile float %arg0.2, float addrspace(3)* undef
765 store volatile i32 %arg1, i32 addrspace(3)* undef
766 ret void
767 }
768
769 ; GCN-LABEL: {{^}}void_func_v3i32_wasted_reg:
770 ; GCN: s_waitcnt
771 ; GCN: ds_write_b32 v{{[0-9]+}}, v0
772 ; GCN-NEXT: ds_write_b32 v{{[0-9]+}}, v1
773 ; GCN-NEXT: ds_write_b32 v{{[0-9]+}}, v2
774 ; GCN-NEXT: ds_write_b32 v{{[0-9]+}}, v3
775 ; GCN-NEXT: s_waitcnt
776 ; GCN-NEXT: s_setpc_b64
777 define void @void_func_v3i32_wasted_reg(<3 x i32> %arg0, i32 %arg1) #0 {
778 %arg0.0 = extractelement <3 x i32> %arg0, i32 0
779 %arg0.1 = extractelement <3 x i32> %arg0, i32 1
780 %arg0.2 = extractelement <3 x i32> %arg0, i32 2
781 store volatile i32 %arg0.0, i32 addrspace(3)* undef
782 store volatile i32 %arg0.1, i32 addrspace(3)* undef
783 store volatile i32 %arg0.2, i32 addrspace(3)* undef
784 store volatile i32 %arg1, i32 addrspace(3)* undef
732 ret void 785 ret void
733 } 786 }
734 787
735 ; Check there is no crash. 788 ; Check there is no crash.
736 ; GCN-LABEL: {{^}}void_func_v16i8: 789 ; GCN-LABEL: {{^}}void_func_v16i8: