There is a problem with the SILoadStoreOptimizer::dmasksCanBeCombined() function that can lead to UB. This boolean function decides if two masks can be combined into 1. The idea here is that the bits which are "on" in one mask, don't overlap with the "on" bits of the other. Consider an example (10 bits for simplicity): Mask 1: 0101101000 Mask 2: 0000000110 Those can be combined into a single mask: 0101101110. To check if such an operation is possible, the code takes the mask which is greater and counts how many 0s there are, starting from the LSB and stopping at the first 1. Then, it shifts 1u by this number and compares it with the smaller mask. The problem is that when both masks are 0, the counter will find 32 zeroes in the first mask and will try to do a shift by 32 positions which leads to UB. The fix is a simple sanity check, if the bigger mask is 0 or not. https://reviews.llvm.org/D155051
1152 lines
66 KiB
YAML
1152 lines
66 KiB
YAML
# RUN: llc -march=amdgcn -mcpu=gfx900 -verify-machineinstrs -run-pass si-load-store-opt -o - %s | FileCheck -check-prefix=GFX9 %s
|
|
|
|
# GFX9-LABEL: name: image_sample_l_merged_v1v3
|
|
# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_L_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
|
|
# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
|
|
# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
|
|
|
|
name: image_sample_l_merged_v1v3
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%4:vgpr_32 = COPY %2.sub3
|
|
%5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%6:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
%7:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
...
|
|
---
|
|
|
|
# GFX9-LABEL: name: image_sample_l_merged_v1v3_reversed
|
|
# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_L_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), addrspace 4)
|
|
# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub3
|
|
# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub0_sub1_sub2
|
|
|
|
name: image_sample_l_merged_v1v3_reversed
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%4:vgpr_32 = COPY %2.sub3
|
|
%5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%6:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
%7:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 7, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
...
|
|
---
|
|
|
|
# GFX9-LABEL: name: image_sample_l_merged_v2v2
|
|
# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_L_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), addrspace 4)
|
|
# GFX9: %{{[0-9]+}}:vreg_64 = COPY %8.sub0_sub1
|
|
# GFX9: %{{[0-9]+}}:vreg_64 = COPY killed %8.sub2_sub3
|
|
|
|
name: image_sample_l_merged_v2v2
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%4:vgpr_32 = COPY %2.sub3
|
|
%5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%6:vreg_64 = IMAGE_SAMPLE_L_V2_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 3, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s64), align 16, addrspace 4)
|
|
%7:vreg_64 = IMAGE_SAMPLE_L_V2_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 12, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s64), align 16, addrspace 4)
|
|
...
|
|
---
|
|
|
|
# GFX9-LABEL: name: image_sample_l_merged_v2v2_reversed
|
|
# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_L_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), addrspace 4)
|
|
# GFX9: %{{[0-9]+}}:vreg_64 = COPY %8.sub2_sub3
|
|
# GFX9: %{{[0-9]+}}:vreg_64 = COPY killed %8.sub0_sub1
|
|
|
|
name: image_sample_l_merged_v2v2_reversed
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%4:vgpr_32 = COPY %2.sub3
|
|
%5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%6:vreg_64 = IMAGE_SAMPLE_L_V2_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 12, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s64), align 16, addrspace 4)
|
|
%7:vreg_64 = IMAGE_SAMPLE_L_V2_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 3, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s64), align 16, addrspace 4)
|
|
...
|
|
---
|
|
|
|
# GFX9-LABEL: name: image_sample_l_merged_v3v1
|
|
# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_L_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), addrspace 4)
|
|
# GFX9: %{{[0-9]+}}:vreg_96 = COPY %8.sub0_sub1_sub2
|
|
# GFX9: %{{[0-9]+}}:vgpr_32 = COPY killed %8.sub3
|
|
|
|
name: image_sample_l_merged_v3v1
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%4:vgpr_32 = COPY %2.sub3
|
|
%5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%6:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 7, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
%7:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
...
|
|
---
|
|
|
|
# GFX9-LABEL: name: image_sample_l_merged_v3v1_reversed
|
|
# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_L_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
|
|
# GFX9: %{{[0-9]+}}:vreg_96 = COPY %8.sub1_sub2_sub3
|
|
# GFX9: %{{[0-9]+}}:vgpr_32 = COPY killed %8.sub0
|
|
|
|
name: image_sample_l_merged_v3v1_reversed
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%4:vgpr_32 = COPY %2.sub3
|
|
%5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%6:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
%7:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
...
|
|
---
|
|
|
|
# GFX9-LABEL: name: image_sample_l_divided_merged
|
|
# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_L_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), addrspace 4)
|
|
|
|
name: image_sample_l_divided_merged
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%4:vgpr_32 = COPY %2.sub3
|
|
%5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%6:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
%7:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%8:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%9:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %7:vreg_128, %3:sgpr_256, %2:sgpr_128, 7, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
%10:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%11:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 7, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
...
|
|
---
|
|
|
|
# GFX9-LABEL: name: image_sample_l_divided_not_merged
|
|
# GFX9: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5, %3, %2, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
# GFX9: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5, %3, %2, 7, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
|
|
name: image_sample_l_divided_not_merged
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%4:vreg_128 = COPY %2
|
|
%5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%6:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
IMAGE_STORE_V4_V4 %4:vreg_128, %5:vreg_128, %3:sgpr_256, 15, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (store (s128))
|
|
%7:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 7, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
...
|
|
---
|
|
|
|
# GFX9-LABEL: name: image_sample_l_dmask_overlapped_not_merged
|
|
# GFX9: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5, %3, %2, 4, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
# GFX9: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5, %3, %2, 7, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
|
|
name: image_sample_l_dmask_overlapped_not_merged
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%4:vgpr_32 = COPY %2.sub3
|
|
%5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%6:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 4, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
%7:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 7, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
...
|
|
---
|
|
|
|
# GFX9-LABEL: name: image_sample_l_dmask_zero_not_merged
|
|
# GFX9: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5, %3, %2, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
# GFX9: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5, %3, %2, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
|
|
name: image_sample_l_dmask_zero_not_merged
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%4:vgpr_32 = COPY %2.sub3
|
|
%5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%6:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
%7:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
...
|
|
---
|
|
|
|
# GFX9-LABEL: name: image_sample_l_dmask_not_disjoint_not_merged
|
|
# GFX9: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5, %3, %2, 4, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
# GFX9: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5, %3, %2, 11, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
|
|
name: image_sample_l_dmask_not_disjoint_not_merged
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%4:vgpr_32 = COPY %2.sub3
|
|
%5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%6:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 4, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
%7:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 11, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
...
|
|
---
|
|
|
|
# GFX9-LABEL: name: image_sample_l_not_merged_0
|
|
# GFX9: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5, %3, %2, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
# GFX9: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %6, %3, %2, 7, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
|
|
name: image_sample_l_not_merged_0
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%4:vgpr_32 = COPY %2.sub3
|
|
%5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%6:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2, 1, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%7:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5, %3, %2, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
%8:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %6, %3, %2, 7, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
...
|
|
---
|
|
|
|
# GFX9-LABEL: name: image_sample_l_not_merged_1
|
|
# GFX9: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %6, %3, %2, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
# GFX9: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %6, %4, %2, 7, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
|
|
name: image_sample_l_not_merged_1
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%4:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%5:vgpr_32 = COPY %2.sub3
|
|
%6:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%7:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %6, %3, %2, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
%8:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %6, %4, %2, 7, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
...
|
|
---
|
|
|
|
# GFX9-LABEL: name: image_sample_l_not_merged_2
|
|
# GFX9: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %6, %4, %2, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
# GFX9: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %6, %4, %3, 7, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
|
|
name: image_sample_l_not_merged_2
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_128 = COPY $sgpr92_sgpr93_sgpr94_sgpr95
|
|
%4:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%5:vgpr_32 = COPY %2.sub3
|
|
%6:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%7:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %6, %4, %2, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
%8:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %6, %4, %3, 7, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
...
|
|
---
|
|
|
|
# GFX9-LABEL: name: image_sample_l_not_merged_3
|
|
# GFX9: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5, %3, %2, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
# GFX9: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5, %3, %2, 7, 1, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
|
|
name: image_sample_l_not_merged_3
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%4:vgpr_32 = COPY %2.sub3
|
|
%5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%6:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5, %3, %2, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
%7:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5, %3, %2, 7, 1, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
...
|
|
---
|
|
|
|
# GFX9-LABEL: name: image_sample_l_not_merged_4
|
|
# GFX9: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5, %3, %2, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
# GFX9: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5, %3, %2, 7, 0, 0, 1, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
|
|
name: image_sample_l_not_merged_4
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%4:vgpr_32 = COPY %2.sub3
|
|
%5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%6:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5, %3, %2, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
%7:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5, %3, %2, 7, 0, 0, 1, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
...
|
|
---
|
|
|
|
# GFX9-LABEL: name: image_sample_l_not_merged_5
|
|
# GFX9: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5, %3, %2, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
# GFX9: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5, %3, %2, 7, 0, 1, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
|
|
name: image_sample_l_not_merged_5
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%4:vgpr_32 = COPY %2.sub3
|
|
%5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%6:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5, %3, %2, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
%7:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5, %3, %2, 7, 0, 1, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
...
|
|
---
|
|
|
|
# GFX9-LABEL: name: image_sample_l_not_merged_6
|
|
# GFX9: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5, %3, %2, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
# GFX9: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5, %3, %2, 7, 0, 0, 1, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
|
|
name: image_sample_l_not_merged_6
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%4:vgpr_32 = COPY %2.sub3
|
|
%5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%6:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5, %3, %2, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
%7:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5, %3, %2, 7, 0, 0, 1, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
...
|
|
---
|
|
|
|
# GFX9-LABEL: name: image_sample_l_not_merged_7
|
|
# GFX9: %{{[0-9]+}}:vreg_64 = IMAGE_SAMPLE_L_V2_V4 %5, %3, %2, 8, 0, 0, 0, 1, 0, -1, 0, implicit $exec :: (dereferenceable load (s64), addrspace 4)
|
|
# GFX9: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5, %3, %2, 7, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
|
|
name: image_sample_l_not_merged_7
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%4:vgpr_32 = COPY %2.sub3
|
|
%5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%6:vreg_64 = IMAGE_SAMPLE_L_V2_V4 %5, %3, %2, 8, 0, 0, 0, 1, 0, -1, 0, implicit $exec :: (dereferenceable load (s64), addrspace 4)
|
|
%7:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5, %3, %2, 7, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
...
|
|
---
|
|
|
|
# GFX9-LABEL: name: image_sample_l_not_merged_8
|
|
# GFX9: %{{[0-9]+}}:vreg_64 = IMAGE_SAMPLE_L_V2_V4 %5, %3, %2, 8, 0, 0, 0, 0, 1, -1, 0, implicit $exec :: (dereferenceable load (s64), addrspace 4)
|
|
# GFX9: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5, %3, %2, 7, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
|
|
name: image_sample_l_not_merged_8
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%4:vgpr_32 = COPY %2.sub3
|
|
%5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%6:vreg_64 = IMAGE_SAMPLE_L_V2_V4 %5, %3, %2, 8, 0, 0, 0, 0, 1, -1, 0, implicit $exec :: (dereferenceable load (s64), addrspace 4)
|
|
%7:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5, %3, %2, 7, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
...
|
|
---
|
|
|
|
# GFX9-LABEL: name: image_sample_l_not_merged_9
|
|
# GFX9: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5, %3, %2, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
# GFX9: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5, %3, %2, 7, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
|
|
name: image_sample_l_not_merged_9
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%4:vgpr_32 = COPY %2.sub3
|
|
%5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%6:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5, %3, %2, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
%7:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5, %3, %2, 7, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
...
|
|
---
|
|
|
|
# GFX9-LABEL: name: image_sample_l_not_merged_10
|
|
# GFX9: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5, %3, %2, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
# GFX9: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5, %3, %2, 7, 0, 0, 0, 0, 0, -1, 1, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
|
|
name: image_sample_l_not_merged_10
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%4:vgpr_32 = COPY %2.sub3
|
|
%5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%6:vgpr_32 = IMAGE_SAMPLE_L_V1_V4 %5, %3, %2, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
%7:vreg_96 = IMAGE_SAMPLE_L_V3_V4 %5, %3, %2, 7, 0, 0, 0, 0, 0, -1, 1, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
...
|
|
---
|
|
|
|
# GFX9-LABEL: name: image_sample_merged_v1v3
|
|
# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
|
|
# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
|
|
# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
|
|
|
|
name: image_sample_merged_v1v3
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%4:vgpr_32 = COPY %2.sub3
|
|
%5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%6:vgpr_32 = IMAGE_SAMPLE_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
%7:vreg_96 = IMAGE_SAMPLE_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
...
|
|
---
|
|
|
|
# GFX9-LABEL: name: image_sample_b_merged_v1v3
|
|
# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_B_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
|
|
# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
|
|
# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
|
|
|
|
name: image_sample_b_merged_v1v3
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%4:vgpr_32 = COPY %2.sub3
|
|
%5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%6:vgpr_32 = IMAGE_SAMPLE_B_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
%7:vreg_96 = IMAGE_SAMPLE_B_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
...
|
|
---
|
|
|
|
# GFX9-LABEL: name: image_sample_b_cl_merged_v1v3
|
|
# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_B_CL_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
|
|
# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
|
|
# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
|
|
|
|
name: image_sample_b_cl_merged_v1v3
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%4:vgpr_32 = COPY %2.sub3
|
|
%5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%6:vgpr_32 = IMAGE_SAMPLE_B_CL_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
%7:vreg_96 = IMAGE_SAMPLE_B_CL_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
...
|
|
---
|
|
|
|
# GFX9-LABEL: name: image_sample_b_cl_o_merged_v1v3
|
|
# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_B_CL_O_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
|
|
# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
|
|
# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
|
|
|
|
name: image_sample_b_cl_o_merged_v1v3
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%4:vgpr_32 = COPY %2.sub3
|
|
%5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%6:vgpr_32 = IMAGE_SAMPLE_B_CL_O_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
%7:vreg_96 = IMAGE_SAMPLE_B_CL_O_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
...
|
|
---
|
|
|
|
# GFX9-LABEL: name: image_sample_b_o_merged_v1v3
|
|
# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_B_O_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
|
|
# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
|
|
# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
|
|
|
|
name: image_sample_b_o_merged_v1v3
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%4:vgpr_32 = COPY %2.sub3
|
|
%5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%6:vgpr_32 = IMAGE_SAMPLE_B_O_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
%7:vreg_96 = IMAGE_SAMPLE_B_O_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
...
|
|
---
|
|
|
|
# GFX9-LABEL: name: image_sample_c_merged_v1v3
|
|
# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
|
|
# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
|
|
# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
|
|
|
|
name: image_sample_c_merged_v1v3
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%4:vgpr_32 = COPY %2.sub3
|
|
%5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%6:vgpr_32 = IMAGE_SAMPLE_C_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
%7:vreg_96 = IMAGE_SAMPLE_C_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
...
|
|
---
|
|
|
|
# GFX9-LABEL: name: image_sample_cd_merged_v1v3
|
|
# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_CD_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
|
|
# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
|
|
# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
|
|
|
|
name: image_sample_cd_merged_v1v3
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%4:vgpr_32 = COPY %2.sub3
|
|
%5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%6:vgpr_32 = IMAGE_SAMPLE_CD_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
%7:vreg_96 = IMAGE_SAMPLE_CD_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
...
|
|
---
|
|
|
|
# GFX9-LABEL: name: image_sample_cd_cl_merged_v1v3
|
|
# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_CD_CL_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
|
|
# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
|
|
# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
|
|
|
|
name: image_sample_cd_cl_merged_v1v3
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%4:vgpr_32 = COPY %2.sub3
|
|
%5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%6:vgpr_32 = IMAGE_SAMPLE_CD_CL_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
%7:vreg_96 = IMAGE_SAMPLE_CD_CL_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
...
|
|
---
|
|
|
|
# GFX9-LABEL: name: image_sample_cd_cl_o_merged_v1v3
|
|
# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_CD_CL_O_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
|
|
# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
|
|
# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
|
|
|
|
name: image_sample_cd_cl_o_merged_v1v3
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%4:vgpr_32 = COPY %2.sub3
|
|
%5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%6:vgpr_32 = IMAGE_SAMPLE_CD_CL_O_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
%7:vreg_96 = IMAGE_SAMPLE_CD_CL_O_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
...
|
|
---
|
|
|
|
# GFX9-LABEL: name: image_sample_cd_o_merged_v1v3
|
|
# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_CD_O_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
|
|
# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
|
|
# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
|
|
|
|
name: image_sample_cd_o_merged_v1v3
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%4:vgpr_32 = COPY %2.sub3
|
|
%5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%6:vgpr_32 = IMAGE_SAMPLE_CD_O_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
%7:vreg_96 = IMAGE_SAMPLE_CD_O_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
...
|
|
---
|
|
|
|
# GFX9-LABEL: name: image_sample_cl_merged_v1v3
|
|
# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_CL_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
|
|
# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
|
|
# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
|
|
|
|
name: image_sample_cl_merged_v1v3
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%4:vgpr_32 = COPY %2.sub3
|
|
%5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%6:vgpr_32 = IMAGE_SAMPLE_CL_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
%7:vreg_96 = IMAGE_SAMPLE_CL_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
...
|
|
---
|
|
|
|
# GFX9-LABEL: name: image_sample_cl_o_merged_v1v3
|
|
# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_CL_O_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
|
|
# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
|
|
# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
|
|
|
|
name: image_sample_cl_o_merged_v1v3
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%4:vgpr_32 = COPY %2.sub3
|
|
%5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%6:vgpr_32 = IMAGE_SAMPLE_CL_O_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
%7:vreg_96 = IMAGE_SAMPLE_CL_O_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
...
|
|
---
|
|
|
|
# GFX9-LABEL: name: image_sample_c_b_merged_v1v3
|
|
# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_B_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
|
|
# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
|
|
# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
|
|
|
|
name: image_sample_c_b_merged_v1v3
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%4:vgpr_32 = COPY %2.sub3
|
|
%5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%6:vgpr_32 = IMAGE_SAMPLE_C_B_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
%7:vreg_96 = IMAGE_SAMPLE_C_B_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
...
|
|
---
|
|
|
|
# GFX9-LABEL: name: image_sample_c_b_cl_merged_v1v3
|
|
# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_B_CL_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
|
|
# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
|
|
# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
|
|
|
|
name: image_sample_c_b_cl_merged_v1v3
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%4:vgpr_32 = COPY %2.sub3
|
|
%5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%6:vgpr_32 = IMAGE_SAMPLE_C_B_CL_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
%7:vreg_96 = IMAGE_SAMPLE_C_B_CL_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
...
|
|
---
|
|
|
|
# GFX9-LABEL: name: image_sample_c_b_cl_o_merged_v1v3
|
|
# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_B_CL_O_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
|
|
# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
|
|
# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
|
|
|
|
name: image_sample_c_b_cl_o_merged_v1v3
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%4:vgpr_32 = COPY %2.sub3
|
|
%5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%6:vgpr_32 = IMAGE_SAMPLE_C_B_CL_O_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
%7:vreg_96 = IMAGE_SAMPLE_C_B_CL_O_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
...
|
|
---
|
|
|
|
# GFX9-LABEL: name: image_sample_c_b_o_merged_v1v3
|
|
# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_B_O_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
|
|
# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
|
|
# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
|
|
|
|
name: image_sample_c_b_o_merged_v1v3
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%4:vgpr_32 = COPY %2.sub3
|
|
%5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%6:vgpr_32 = IMAGE_SAMPLE_C_B_O_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
%7:vreg_96 = IMAGE_SAMPLE_C_B_O_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
...
|
|
---
|
|
|
|
# GFX9-LABEL: name: image_sample_c_cd_merged_v1v3
|
|
# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_CD_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
|
|
# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
|
|
# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
|
|
|
|
name: image_sample_c_cd_merged_v1v3
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%4:vgpr_32 = COPY %2.sub3
|
|
%5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%6:vgpr_32 = IMAGE_SAMPLE_C_CD_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
%7:vreg_96 = IMAGE_SAMPLE_C_CD_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
...
|
|
---
|
|
|
|
# GFX9-LABEL: name: image_sample_c_cd_cl_merged_v1v3
|
|
# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_CD_CL_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
|
|
# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
|
|
# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
|
|
|
|
name: image_sample_c_cd_cl_merged_v1v3
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%4:vgpr_32 = COPY %2.sub3
|
|
%5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%6:vgpr_32 = IMAGE_SAMPLE_C_CD_CL_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
%7:vreg_96 = IMAGE_SAMPLE_C_CD_CL_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
...
|
|
---
|
|
|
|
# GFX9-LABEL: name: image_sample_c_cd_cl_o_merged_v1v3
|
|
# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_CD_CL_O_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
|
|
# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
|
|
# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
|
|
|
|
name: image_sample_c_cd_cl_o_merged_v1v3
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%4:vgpr_32 = COPY %2.sub3
|
|
%5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%6:vgpr_32 = IMAGE_SAMPLE_C_CD_CL_O_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
%7:vreg_96 = IMAGE_SAMPLE_C_CD_CL_O_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
...
|
|
---
|
|
|
|
# GFX9-LABEL: name: image_sample_c_cd_o_merged_v1v3
|
|
# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_CD_O_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
|
|
# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
|
|
# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
|
|
|
|
name: image_sample_c_cd_o_merged_v1v3
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%4:vgpr_32 = COPY %2.sub3
|
|
%5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%6:vgpr_32 = IMAGE_SAMPLE_C_CD_O_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
%7:vreg_96 = IMAGE_SAMPLE_C_CD_O_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
...
|
|
---
|
|
|
|
# GFX9-LABEL: name: image_sample_c_cl_merged_v1v3
|
|
# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_CL_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
|
|
# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
|
|
# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
|
|
|
|
name: image_sample_c_cl_merged_v1v3
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%4:vgpr_32 = COPY %2.sub3
|
|
%5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%6:vgpr_32 = IMAGE_SAMPLE_C_CL_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
%7:vreg_96 = IMAGE_SAMPLE_C_CL_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
...
|
|
---
|
|
|
|
# GFX9-LABEL: name: image_sample_c_cl_o_merged_v1v3
|
|
# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_CL_O_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
|
|
# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
|
|
# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
|
|
|
|
name: image_sample_c_cl_o_merged_v1v3
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%4:vgpr_32 = COPY %2.sub3
|
|
%5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%6:vgpr_32 = IMAGE_SAMPLE_C_CL_O_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
%7:vreg_96 = IMAGE_SAMPLE_C_CL_O_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
...
|
|
---
|
|
|
|
# GFX9-LABEL: name: image_sample_c_d_merged_v1v3
|
|
# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_D_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
|
|
# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
|
|
# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
|
|
|
|
name: image_sample_c_d_merged_v1v3
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%4:vgpr_32 = COPY %2.sub3
|
|
%5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%6:vgpr_32 = IMAGE_SAMPLE_C_D_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
%7:vreg_96 = IMAGE_SAMPLE_C_D_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
...
|
|
---
|
|
|
|
# GFX9-LABEL: name: image_sample_c_d_cl_merged_v1v3
|
|
# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_D_CL_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
|
|
# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
|
|
# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
|
|
|
|
name: image_sample_c_d_cl_merged_v1v3
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%4:vgpr_32 = COPY %2.sub3
|
|
%5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%6:vgpr_32 = IMAGE_SAMPLE_C_D_CL_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
%7:vreg_96 = IMAGE_SAMPLE_C_D_CL_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
...
|
|
---
|
|
|
|
# GFX9-LABEL: name: image_sample_c_d_cl_o_merged_v1v3
|
|
# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_D_CL_O_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
|
|
# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
|
|
# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
|
|
|
|
name: image_sample_c_d_cl_o_merged_v1v3
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%4:vgpr_32 = COPY %2.sub3
|
|
%5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%6:vgpr_32 = IMAGE_SAMPLE_C_D_CL_O_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
%7:vreg_96 = IMAGE_SAMPLE_C_D_CL_O_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
...
|
|
---
|
|
|
|
# GFX9-LABEL: name: image_sample_c_d_o_merged_v1v3
|
|
# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_D_O_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
|
|
# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
|
|
# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
|
|
|
|
name: image_sample_c_d_o_merged_v1v3
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%4:vgpr_32 = COPY %2.sub3
|
|
%5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%6:vgpr_32 = IMAGE_SAMPLE_C_D_O_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
%7:vreg_96 = IMAGE_SAMPLE_C_D_O_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
...
|
|
---
|
|
|
|
# GFX9-LABEL: name: image_sample_c_l_merged_v1v3
|
|
# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_L_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
|
|
# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
|
|
# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
|
|
|
|
name: image_sample_c_l_merged_v1v3
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%4:vgpr_32 = COPY %2.sub3
|
|
%5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%6:vgpr_32 = IMAGE_SAMPLE_C_L_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
%7:vreg_96 = IMAGE_SAMPLE_C_L_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
...
|
|
---
|
|
|
|
# GFX9-LABEL: name: image_sample_c_lz_merged_v1v3
|
|
# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_LZ_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
|
|
# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
|
|
# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
|
|
|
|
name: image_sample_c_lz_merged_v1v3
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%4:vgpr_32 = COPY %2.sub3
|
|
%5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%6:vgpr_32 = IMAGE_SAMPLE_C_LZ_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
%7:vreg_96 = IMAGE_SAMPLE_C_LZ_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
...
|
|
---
|
|
|
|
# GFX9-LABEL: name: image_sample_c_lz_o_merged_v1v3
|
|
# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_LZ_O_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
|
|
# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
|
|
# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
|
|
|
|
name: image_sample_c_lz_o_merged_v1v3
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%4:vgpr_32 = COPY %2.sub3
|
|
%5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%6:vgpr_32 = IMAGE_SAMPLE_C_LZ_O_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
%7:vreg_96 = IMAGE_SAMPLE_C_LZ_O_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
...
|
|
---
|
|
|
|
# GFX9-LABEL: name: image_sample_c_l_o_merged_v1v3
|
|
# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_L_O_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
|
|
# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
|
|
# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
|
|
|
|
name: image_sample_c_l_o_merged_v1v3
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%4:vgpr_32 = COPY %2.sub3
|
|
%5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%6:vgpr_32 = IMAGE_SAMPLE_C_L_O_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
%7:vreg_96 = IMAGE_SAMPLE_C_L_O_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
...
|
|
---
|
|
|
|
# GFX9-LABEL: name: image_sample_c_o_merged_v1v3
|
|
# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_O_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
|
|
# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
|
|
# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
|
|
|
|
name: image_sample_c_o_merged_v1v3
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%4:vgpr_32 = COPY %2.sub3
|
|
%5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%6:vgpr_32 = IMAGE_SAMPLE_C_O_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
%7:vreg_96 = IMAGE_SAMPLE_C_O_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
...
|
|
---
|
|
|
|
# GFX9-LABEL: name: image_sample_d_merged_v1v3
|
|
# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_D_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
|
|
# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
|
|
# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
|
|
|
|
name: image_sample_d_merged_v1v3
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%4:vgpr_32 = COPY %2.sub3
|
|
%5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%6:vgpr_32 = IMAGE_SAMPLE_D_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
%7:vreg_96 = IMAGE_SAMPLE_D_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
...
|
|
---
|
|
|
|
# GFX9-LABEL: name: image_sample_d_cl_merged_v1v3
|
|
# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_D_CL_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
|
|
# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
|
|
# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
|
|
|
|
name: image_sample_d_cl_merged_v1v3
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%4:vgpr_32 = COPY %2.sub3
|
|
%5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%6:vgpr_32 = IMAGE_SAMPLE_D_CL_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
%7:vreg_96 = IMAGE_SAMPLE_D_CL_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
...
|
|
---
|
|
|
|
# GFX9-LABEL: name: image_sample_d_cl_o_merged_v1v3
|
|
# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_D_CL_O_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
|
|
# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
|
|
# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
|
|
|
|
name: image_sample_d_cl_o_merged_v1v3
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%4:vgpr_32 = COPY %2.sub3
|
|
%5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%6:vgpr_32 = IMAGE_SAMPLE_D_CL_O_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
%7:vreg_96 = IMAGE_SAMPLE_D_CL_O_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
...
|
|
---
|
|
|
|
# GFX9-LABEL: name: image_sample_d_o_merged_v1v3
|
|
# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_D_O_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
|
|
# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
|
|
# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
|
|
|
|
name: image_sample_d_o_merged_v1v3
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%4:vgpr_32 = COPY %2.sub3
|
|
%5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%6:vgpr_32 = IMAGE_SAMPLE_D_O_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
%7:vreg_96 = IMAGE_SAMPLE_D_O_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
...
|
|
---
|
|
|
|
# GFX9-LABEL: name: image_sample_lz_merged_v1v3
|
|
# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_LZ_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
|
|
# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
|
|
# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
|
|
|
|
name: image_sample_lz_merged_v1v3
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%4:vgpr_32 = COPY %2.sub3
|
|
%5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%6:vgpr_32 = IMAGE_SAMPLE_LZ_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
%7:vreg_96 = IMAGE_SAMPLE_LZ_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
...
|
|
---
|
|
|
|
# GFX9-LABEL: name: image_sample_lz_o_merged_v1v3
|
|
# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_LZ_O_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
|
|
# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
|
|
# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
|
|
|
|
name: image_sample_lz_o_merged_v1v3
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%4:vgpr_32 = COPY %2.sub3
|
|
%5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%6:vgpr_32 = IMAGE_SAMPLE_LZ_O_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
%7:vreg_96 = IMAGE_SAMPLE_LZ_O_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
...
|
|
---
|
|
|
|
# GFX9-LABEL: name: image_sample_l_o_merged_v1v3
|
|
# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_L_O_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
|
|
# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
|
|
# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
|
|
|
|
name: image_sample_l_o_merged_v1v3
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%4:vgpr_32 = COPY %2.sub3
|
|
%5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%6:vgpr_32 = IMAGE_SAMPLE_L_O_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
%7:vreg_96 = IMAGE_SAMPLE_L_O_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
...
|
|
---
|
|
|
|
# GFX9-LABEL: name: image_sample_o_merged_v1v3
|
|
# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_O_V4_V4 %5, %3, %2, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)
|
|
# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0
|
|
# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3
|
|
|
|
name: image_sample_o_merged_v1v3
|
|
body: |
|
|
bb.0.entry:
|
|
%0:sgpr_64 = COPY $sgpr0_sgpr1
|
|
%1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0
|
|
%2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99
|
|
%3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0
|
|
%4:vgpr_32 = COPY %2.sub3
|
|
%5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))
|
|
%6:vgpr_32 = IMAGE_SAMPLE_O_V1_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)
|
|
%7:vreg_96 = IMAGE_SAMPLE_O_V3_V4 %5:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)
|
|
...
|
|
---
|