Mercurial > hg > CbC > CbC_llvm
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: |