340 lines
14 KiB
Plaintext
340 lines
14 KiB
Plaintext
|
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
||
|
# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=tahiti -run-pass=instruction-select -global-isel-abort=2 -pass-remarks-missed='gisel*' -o - %s | FileCheck -check-prefix=GCN %s
|
||
|
|
||
|
---
|
||
|
name: test_unmerge_values_v_s32_v_s32_v_s64
|
||
|
legalized: true
|
||
|
regBankSelected: true
|
||
|
tracksRegLiveness: true
|
||
|
|
||
|
body: |
|
||
|
bb.0:
|
||
|
liveins: $vgpr0_vgpr1
|
||
|
|
||
|
; GCN-LABEL: name: test_unmerge_values_v_s32_v_s32_v_s64
|
||
|
; GCN: liveins: $vgpr0_vgpr1
|
||
|
; GCN: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
|
||
|
; GCN: [[COPY1:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub0
|
||
|
; GCN: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub1
|
||
|
; GCN: S_ENDPGM 0, implicit [[COPY1]], implicit [[COPY2]]
|
||
|
%0:vgpr(s64) = COPY $vgpr0_vgpr1
|
||
|
%1:vgpr(s32), %2:vgpr(s32) = G_UNMERGE_VALUES %0
|
||
|
S_ENDPGM 0, implicit %1, implicit %2
|
||
|
...
|
||
|
|
||
|
---
|
||
|
name: test_unmerge_values_s_s32_s_s32_s_s64
|
||
|
legalized: true
|
||
|
regBankSelected: true
|
||
|
tracksRegLiveness: true
|
||
|
|
||
|
body: |
|
||
|
bb.0:
|
||
|
liveins: $sgpr0_sgpr1
|
||
|
|
||
|
; GCN-LABEL: name: test_unmerge_values_s_s32_s_s32_s_s64
|
||
|
; GCN: liveins: $sgpr0_sgpr1
|
||
|
; GCN: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
|
||
|
; GCN: [[COPY1:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub0
|
||
|
; GCN: [[COPY2:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub1
|
||
|
; GCN: S_ENDPGM 0, implicit [[COPY1]], implicit [[COPY2]]
|
||
|
%0:sgpr(s64) = COPY $sgpr0_sgpr1
|
||
|
%1:sgpr(s32), %2:sgpr(s32) = G_UNMERGE_VALUES %0
|
||
|
S_ENDPGM 0, implicit %1, implicit %2
|
||
|
...
|
||
|
|
||
|
---
|
||
|
name: test_unmerge_values_v_s32_s_s32_s_s64
|
||
|
legalized: true
|
||
|
regBankSelected: true
|
||
|
tracksRegLiveness: true
|
||
|
|
||
|
body: |
|
||
|
bb.0:
|
||
|
liveins: $sgpr0_sgpr1
|
||
|
|
||
|
; GCN-LABEL: name: test_unmerge_values_v_s32_s_s32_s_s64
|
||
|
; GCN: liveins: $sgpr0_sgpr1
|
||
|
; GCN: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
|
||
|
; GCN: [[COPY1:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub0
|
||
|
; GCN: [[COPY2:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub1
|
||
|
; GCN: S_ENDPGM 0, implicit [[COPY1]], implicit [[COPY2]]
|
||
|
%0:sgpr(s64) = COPY $sgpr0_sgpr1
|
||
|
%1:vgpr(s32), %2:sgpr(s32) = G_UNMERGE_VALUES %0
|
||
|
S_ENDPGM 0, implicit %1, implicit %2
|
||
|
...
|
||
|
|
||
|
---
|
||
|
name: test_unmerge_values_s_s32_v_s32_s_s64
|
||
|
legalized: true
|
||
|
regBankSelected: true
|
||
|
tracksRegLiveness: true
|
||
|
|
||
|
body: |
|
||
|
bb.0:
|
||
|
liveins: $sgpr0_sgpr1
|
||
|
|
||
|
; GCN-LABEL: name: test_unmerge_values_s_s32_v_s32_s_s64
|
||
|
; GCN: liveins: $sgpr0_sgpr1
|
||
|
; GCN: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
|
||
|
; GCN: [[COPY1:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub0
|
||
|
; GCN: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub1
|
||
|
; GCN: S_ENDPGM 0, implicit [[COPY1]], implicit [[COPY2]]
|
||
|
%0:sgpr(s64) = COPY $sgpr0_sgpr1
|
||
|
%1:sgpr(s32), %2:vgpr(s32) = G_UNMERGE_VALUES %0
|
||
|
S_ENDPGM 0, implicit %1, implicit %2
|
||
|
...
|
||
|
|
||
|
---
|
||
|
name: test_unmerge_values_s_s32_s_s32_s32_s_s96
|
||
|
legalized: true
|
||
|
regBankSelected: true
|
||
|
tracksRegLiveness: true
|
||
|
|
||
|
body: |
|
||
|
bb.0:
|
||
|
liveins: $sgpr0_sgpr1_sgpr2
|
||
|
|
||
|
; GCN-LABEL: name: test_unmerge_values_s_s32_s_s32_s32_s_s96
|
||
|
; GCN: liveins: $sgpr0_sgpr1_sgpr2
|
||
|
; GCN: [[COPY:%[0-9]+]]:sgpr_96 = COPY $sgpr0_sgpr1_sgpr2
|
||
|
; GCN: [[COPY1:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub0
|
||
|
; GCN: [[COPY2:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub1
|
||
|
; GCN: [[COPY3:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub2
|
||
|
; GCN: S_ENDPGM 0, implicit [[COPY1]], implicit [[COPY2]], implicit [[COPY3]]
|
||
|
%0:sgpr(s96) = COPY $sgpr0_sgpr1_sgpr2
|
||
|
%1:sgpr(s32), %2:sgpr(s32), %3:sgpr(s32) = G_UNMERGE_VALUES %0
|
||
|
S_ENDPGM 0, implicit %1, implicit %2, implicit %3
|
||
|
...
|
||
|
|
||
|
---
|
||
|
name: test_unmerge_values_s_s32_s_s32_s32_s_s32_s_s128
|
||
|
legalized: true
|
||
|
regBankSelected: true
|
||
|
tracksRegLiveness: true
|
||
|
|
||
|
body: |
|
||
|
bb.0:
|
||
|
liveins: $sgpr0_sgpr1_sgpr2_sgpr3
|
||
|
|
||
|
; GCN-LABEL: name: test_unmerge_values_s_s32_s_s32_s32_s_s32_s_s128
|
||
|
; GCN: liveins: $sgpr0_sgpr1_sgpr2_sgpr3
|
||
|
; GCN: [[COPY:%[0-9]+]]:sgpr_128 = COPY $sgpr0_sgpr1_sgpr2_sgpr3
|
||
|
; GCN: [[COPY1:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub0
|
||
|
; GCN: [[COPY2:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub1
|
||
|
; GCN: [[COPY3:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub2
|
||
|
; GCN: [[COPY4:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub3
|
||
|
; GCN: S_ENDPGM 0, implicit [[COPY1]], implicit [[COPY2]], implicit [[COPY3]], implicit [[COPY4]]
|
||
|
%0:sgpr(s128) = COPY $sgpr0_sgpr1_sgpr2_sgpr3
|
||
|
%1:sgpr(s32), %2:sgpr(s32), %3:sgpr(s32), %4:sgpr(s32) = G_UNMERGE_VALUES %0
|
||
|
S_ENDPGM 0, implicit %1, implicit %2, implicit %3, implicit %4
|
||
|
...
|
||
|
|
||
|
---
|
||
|
name: test_unmerge_values_s_s64_s_s64_s_s128
|
||
|
legalized: true
|
||
|
regBankSelected: true
|
||
|
tracksRegLiveness: true
|
||
|
|
||
|
body: |
|
||
|
bb.0:
|
||
|
liveins: $sgpr0_sgpr1_sgpr2_sgpr3
|
||
|
|
||
|
; GCN-LABEL: name: test_unmerge_values_s_s64_s_s64_s_s128
|
||
|
; GCN: liveins: $sgpr0_sgpr1_sgpr2_sgpr3
|
||
|
; GCN: [[COPY:%[0-9]+]]:sgpr_128 = COPY $sgpr0_sgpr1_sgpr2_sgpr3
|
||
|
; GCN: [[COPY1:%[0-9]+]]:sreg_64 = COPY [[COPY]].sub0_sub1
|
||
|
; GCN: [[COPY2:%[0-9]+]]:sreg_64 = COPY [[COPY]].sub2_sub3
|
||
|
; GCN: S_ENDPGM 0, implicit [[COPY1]], implicit [[COPY2]]
|
||
|
%0:sgpr(s128) = COPY $sgpr0_sgpr1_sgpr2_sgpr3
|
||
|
%1:sgpr(s64), %2:sgpr(s64) = G_UNMERGE_VALUES %0
|
||
|
S_ENDPGM 0, implicit %1, implicit %2
|
||
|
...
|
||
|
|
||
|
---
|
||
|
name: test_unmerge_values_s_s64_s_s64_s64_s_s192
|
||
|
legalized: true
|
||
|
regBankSelected: true
|
||
|
tracksRegLiveness: true
|
||
|
|
||
|
body: |
|
||
|
bb.0:
|
||
|
liveins: $sgpr0_sgpr1_sgpr2_sgpr3
|
||
|
|
||
|
; GCN-LABEL: name: test_unmerge_values_s_s64_s_s64_s64_s_s192
|
||
|
; GCN: liveins: $sgpr0_sgpr1_sgpr2_sgpr3
|
||
|
; GCN: [[DEF:%[0-9]+]]:sgpr_192 = IMPLICIT_DEF
|
||
|
; GCN: [[COPY:%[0-9]+]]:sreg_64 = COPY [[DEF]].sub0_sub1
|
||
|
; GCN: [[COPY1:%[0-9]+]]:sreg_64 = COPY [[DEF]].sub2_sub3
|
||
|
; GCN: [[COPY2:%[0-9]+]]:sreg_64 = COPY [[DEF]].sub4_sub5
|
||
|
; GCN: S_ENDPGM 0, implicit [[COPY]], implicit [[COPY1]], implicit [[COPY2]]
|
||
|
%0:sgpr(s192) = G_IMPLICIT_DEF
|
||
|
%1:sgpr(s64), %2:sgpr(s64), %3:sgpr(s64) = G_UNMERGE_VALUES %0
|
||
|
S_ENDPGM 0, implicit %1, implicit %2, implicit %3
|
||
|
...
|
||
|
|
||
|
---
|
||
|
name: test_unmerge_values_rc_set_def_v_s32_v_s32_v_s64
|
||
|
legalized: true
|
||
|
regBankSelected: true
|
||
|
tracksRegLiveness: true
|
||
|
|
||
|
body: |
|
||
|
bb.0:
|
||
|
liveins: $vgpr0_vgpr1
|
||
|
|
||
|
; GCN-LABEL: name: test_unmerge_values_rc_set_def_v_s32_v_s32_v_s64
|
||
|
; GCN: liveins: $vgpr0_vgpr1
|
||
|
; GCN: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
|
||
|
; GCN: [[COPY1:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub0
|
||
|
; GCN: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub1
|
||
|
; GCN: S_ENDPGM 0, implicit [[COPY1]], implicit [[COPY2]]
|
||
|
%0:vgpr(s64) = COPY $vgpr0_vgpr1
|
||
|
%1:vgpr_32(s32), %2:vgpr_32(s32) = G_UNMERGE_VALUES %0
|
||
|
S_ENDPGM 0, implicit %1, implicit %2
|
||
|
...
|
||
|
|
||
|
---
|
||
|
name: test_unmerge_values_rc_set_use_v_s32_v_s32_v_s64
|
||
|
legalized: true
|
||
|
regBankSelected: true
|
||
|
tracksRegLiveness: true
|
||
|
|
||
|
body: |
|
||
|
bb.0:
|
||
|
liveins: $vgpr0_vgpr1
|
||
|
|
||
|
; GCN-LABEL: name: test_unmerge_values_rc_set_use_v_s32_v_s32_v_s64
|
||
|
; GCN: liveins: $vgpr0_vgpr1
|
||
|
; GCN: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
|
||
|
; GCN: [[COPY1:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub0
|
||
|
; GCN: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub1
|
||
|
; GCN: S_ENDPGM 0, implicit [[COPY1]], implicit [[COPY2]]
|
||
|
%0:vreg_64(s64) = COPY $vgpr0_vgpr1
|
||
|
%1:vgpr(s32), %2:vgpr(s32) = G_UNMERGE_VALUES %0
|
||
|
S_ENDPGM 0, implicit %1, implicit %2
|
||
|
...
|
||
|
|
||
|
---
|
||
|
name: test_unmerge_values_s_s256_s_s1024
|
||
|
legalized: true
|
||
|
regBankSelected: true
|
||
|
tracksRegLiveness: true
|
||
|
|
||
|
body: |
|
||
|
bb.0:
|
||
|
liveins: $sgpr0_sgpr1_sgpr2_sgpr3
|
||
|
|
||
|
; GCN-LABEL: name: test_unmerge_values_s_s256_s_s1024
|
||
|
; GCN: liveins: $sgpr0_sgpr1_sgpr2_sgpr3
|
||
|
; GCN: [[DEF:%[0-9]+]]:sgpr_1024 = IMPLICIT_DEF
|
||
|
; GCN: [[COPY:%[0-9]+]]:sgpr_256 = COPY [[DEF]].sub0_sub1_sub2_sub3_sub4_sub5_sub6_sub7
|
||
|
; GCN: [[COPY1:%[0-9]+]]:sgpr_256 = COPY [[DEF]].sub8_sub9_sub10_sub11_sub12_sub13_sub14_sub15
|
||
|
; GCN: [[COPY2:%[0-9]+]]:sgpr_256 = COPY [[DEF]].sub16_sub17_sub18_sub19_sub20_sub21_sub22_sub23
|
||
|
; GCN: [[COPY3:%[0-9]+]]:sgpr_256 = COPY [[DEF]].sub24_sub25_sub26_sub27_sub28_sub29_sub30_sub31
|
||
|
; GCN: S_ENDPGM 0, implicit [[COPY]], implicit [[COPY1]], implicit [[COPY2]], implicit [[COPY3]]
|
||
|
%0:sgpr(s1024) = G_IMPLICIT_DEF
|
||
|
%1:sgpr(s256), %2:sgpr(s256), %3:sgpr(s256), %4:sgpr(s256) = G_UNMERGE_VALUES %0
|
||
|
S_ENDPGM 0, implicit %1, implicit %2, implicit %3, implicit %4
|
||
|
...
|
||
|
|
||
|
---
|
||
|
|
||
|
name: test_unmerge_values_s_s512_s_s1024
|
||
|
legalized: true
|
||
|
regBankSelected: true
|
||
|
tracksRegLiveness: true
|
||
|
|
||
|
body: |
|
||
|
bb.0:
|
||
|
liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15_sgpr16_sgpr17_sgpr18_sgpr19_sgpr20_sgpr21_sgpr22_sgpr23_sgpr24_sgpr25_sgpr26_sgpr27_sgpr28_sgpr29_sgpr30_sgpr31
|
||
|
|
||
|
; CHECK-LABEL: name: test_unmerge_s512_s1024
|
||
|
; CHECK: [[COPY:%[0-9]+]]:_(s1024) = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15_sgpr16_sgpr17_sgpr18_sgpr19_sgpr20_sgpr21_sgpr22_sgpr23_sgpr24_sgpr25_sgpr26_sgpr27_sgpr28_sgpr29_sgpr30_sgpr31
|
||
|
; CHECK: [[UV:%[0-9]+]]:_(s512), [[UV1:%[0-9]+]]:_(s512) = G_UNMERGE_VALUES [[COPY]](s1024)
|
||
|
; CHECK: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 = COPY [[UV]](s512)
|
||
|
; CHECK: $sgpr16_sgpr17_sgpr18_sgpr19_sgpr20_sgpr21_sgpr22_sgpr23_sgpr24_sgpr25_sgpr26_sgpr27_sgpr28_sgpr29_sgpr30_sgpr31 = COPY [[UV1]](s512)
|
||
|
; GCN-LABEL: name: test_unmerge_values_s_s512_s_s1024
|
||
|
; GCN: liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15_sgpr16_sgpr17_sgpr18_sgpr19_sgpr20_sgpr21_sgpr22_sgpr23_sgpr24_sgpr25_sgpr26_sgpr27_sgpr28_sgpr29_sgpr30_sgpr31
|
||
|
; GCN: [[COPY:%[0-9]+]]:sgpr_1024 = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15_sgpr16_sgpr17_sgpr18_sgpr19_sgpr20_sgpr21_sgpr22_sgpr23_sgpr24_sgpr25_sgpr26_sgpr27_sgpr28_sgpr29_sgpr30_sgpr31
|
||
|
; GCN: [[COPY1:%[0-9]+]]:sgpr_512 = COPY [[COPY]].sub0_sub1_sub2_sub3_sub4_sub5_sub6_sub7_sub8_sub9_sub10_sub11_sub12_sub13_sub14_sub15
|
||
|
; GCN: [[COPY2:%[0-9]+]]:sgpr_512 = COPY [[COPY]].sub16_sub17_sub18_sub19_sub20_sub21_sub22_sub23_sub24_sub25_sub26_sub27_sub28_sub29_sub30_sub31
|
||
|
; GCN: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 = COPY [[COPY1]]
|
||
|
; GCN: $sgpr16_sgpr17_sgpr18_sgpr19_sgpr20_sgpr21_sgpr22_sgpr23_sgpr24_sgpr25_sgpr26_sgpr27_sgpr28_sgpr29_sgpr30_sgpr31 = COPY [[COPY2]]
|
||
|
%0:sgpr(s1024) = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15_sgpr16_sgpr17_sgpr18_sgpr19_sgpr20_sgpr21_sgpr22_sgpr23_sgpr24_sgpr25_sgpr26_sgpr27_sgpr28_sgpr29_sgpr30_sgpr31
|
||
|
%1:sgpr(s512), %2:sgpr(s512) = G_UNMERGE_VALUES %0
|
||
|
$sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 = COPY %1
|
||
|
$sgpr16_sgpr17_sgpr18_sgpr19_sgpr20_sgpr21_sgpr22_sgpr23_sgpr24_sgpr25_sgpr26_sgpr27_sgpr28_sgpr29_sgpr30_sgpr31 = COPY %2
|
||
|
...
|
||
|
|
||
|
---
|
||
|
name: test_unmerge_s_v3s32_s_v12s32
|
||
|
legalized: true
|
||
|
regBankSelected: true
|
||
|
tracksRegLiveness: true
|
||
|
|
||
|
body: |
|
||
|
bb.0:
|
||
|
liveins: $sgpr0_sgpr1_sgpr2, $sgpr3_sgpr4_sgpr5, $sgpr6_sgpr7_sgpr8, $sgpr9_sgpr10_sgpr11
|
||
|
|
||
|
; GCN-LABEL: name: test_unmerge_s_v3s32_s_v12s32
|
||
|
; GCN: liveins: $sgpr0_sgpr1_sgpr2, $sgpr3_sgpr4_sgpr5, $sgpr6_sgpr7_sgpr8, $sgpr9_sgpr10_sgpr11
|
||
|
; GCN: [[COPY:%[0-9]+]]:sgpr_96 = COPY $sgpr0_sgpr1_sgpr2
|
||
|
; GCN: [[COPY1:%[0-9]+]]:sgpr_96 = COPY $sgpr3_sgpr4_sgpr5
|
||
|
; GCN: [[COPY2:%[0-9]+]]:sgpr_96 = COPY $sgpr6_sgpr7_sgpr8
|
||
|
; GCN: [[COPY3:%[0-9]+]]:sgpr_96 = COPY $sgpr9_sgpr10_sgpr11
|
||
|
; GCN: [[REG_SEQUENCE:%[0-9]+]]:sgpr_512_with_sub0_sub1_sub2 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1_sub2, [[COPY1]], %subreg.sub3_sub4_sub5, [[COPY2]], %subreg.sub6_sub7_sub8, [[COPY3]], %subreg.sub9_sub10_sub11
|
||
|
; GCN: [[COPY4:%[0-9]+]]:sgpr_96 = COPY [[REG_SEQUENCE]].sub0_sub1_sub2
|
||
|
; GCN: [[COPY5:%[0-9]+]]:sgpr_96 = COPY [[REG_SEQUENCE]].sub3_sub4_sub5
|
||
|
; GCN: [[COPY6:%[0-9]+]]:sgpr_96 = COPY [[REG_SEQUENCE]].sub6_sub7_sub8
|
||
|
; GCN: [[COPY7:%[0-9]+]]:sgpr_96 = COPY [[REG_SEQUENCE]].sub9_sub10_sub11
|
||
|
; GCN: $sgpr0_sgpr1_sgpr2 = COPY [[COPY4]]
|
||
|
; GCN: $sgpr3_sgpr4_sgpr5 = COPY [[COPY5]]
|
||
|
; GCN: $sgpr6_sgpr7_sgpr8 = COPY [[COPY6]]
|
||
|
; GCN: $sgpr9_sgpr10_sgpr11 = COPY [[COPY7]]
|
||
|
%0:sgpr(<3 x s32>) = COPY $sgpr0_sgpr1_sgpr2
|
||
|
%1:sgpr(<3 x s32>) = COPY $sgpr3_sgpr4_sgpr5
|
||
|
%2:sgpr(<3 x s32>) = COPY $sgpr6_sgpr7_sgpr8
|
||
|
%3:sgpr(<3 x s32>) = COPY $sgpr9_sgpr10_sgpr11
|
||
|
%4:sgpr(<12 x s32>) = G_CONCAT_VECTORS %0, %1, %2, %3
|
||
|
%5:sgpr(<3 x s32>), %6:sgpr(<3 x s32>), %7:sgpr(<3 x s32>), %8:sgpr(<3 x s32>) = G_UNMERGE_VALUES %4
|
||
|
$sgpr0_sgpr1_sgpr2 = COPY %5
|
||
|
$sgpr3_sgpr4_sgpr5 = COPY %6
|
||
|
$sgpr6_sgpr7_sgpr8 = COPY %7
|
||
|
$sgpr9_sgpr10_sgpr11 = COPY %8
|
||
|
|
||
|
...
|
||
|
|
||
|
---
|
||
|
name: test_unmerge_v_v3s32_v_v12s32
|
||
|
legalized: true
|
||
|
regBankSelected: true
|
||
|
tracksRegLiveness: true
|
||
|
body: |
|
||
|
bb.0:
|
||
|
liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5, $vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11
|
||
|
|
||
|
; GCN-LABEL: name: test_unmerge_v_v3s32_v_v12s32
|
||
|
; GCN: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5, $vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11
|
||
|
; GCN: [[COPY:%[0-9]+]]:vreg_192 = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5
|
||
|
; GCN: [[COPY1:%[0-9]+]]:vreg_192 = COPY $vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11
|
||
|
; GCN: [[REG_SEQUENCE:%[0-9]+]]:vreg_512 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1_sub2_sub3_sub4_sub5, [[COPY1]], %subreg.sub6_sub7_sub8_sub9_sub10_sub11
|
||
|
; GCN: [[COPY2:%[0-9]+]]:vreg_96 = COPY [[REG_SEQUENCE]].sub0_sub1_sub2
|
||
|
; GCN: [[COPY3:%[0-9]+]]:vreg_96 = COPY [[REG_SEQUENCE]].sub3_sub4_sub5
|
||
|
; GCN: [[COPY4:%[0-9]+]]:vreg_96 = COPY [[REG_SEQUENCE]].sub6_sub7_sub8
|
||
|
; GCN: [[COPY5:%[0-9]+]]:vreg_96 = COPY [[REG_SEQUENCE]].sub9_sub10_sub11
|
||
|
; GCN: $vgpr0_vgpr1_vgpr2 = COPY [[COPY2]]
|
||
|
; GCN: $vgpr3_vgpr4_vgpr5 = COPY [[COPY3]]
|
||
|
; GCN: $vgpr6_vgpr7_vgpr8 = COPY [[COPY4]]
|
||
|
; GCN: $vgpr9_vgpr10_vgpr11 = COPY [[COPY5]]
|
||
|
%0:vgpr(<6 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5
|
||
|
%1:vgpr(<6 x s32>) = COPY $vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11
|
||
|
%2:vgpr(<12 x s32>) = G_CONCAT_VECTORS %0, %1
|
||
|
%3:vgpr(<3 x s32>), %4:vgpr(<3 x s32>), %5:vgpr(<3 x s32>), %6:vgpr(<3 x s32>) = G_UNMERGE_VALUES %2
|
||
|
$vgpr0_vgpr1_vgpr2 = COPY %3
|
||
|
$vgpr3_vgpr4_vgpr5 = COPY %4
|
||
|
$vgpr6_vgpr7_vgpr8 = COPY %5
|
||
|
$vgpr9_vgpr10_vgpr11 = COPY %6
|
||
|
|
||
|
...
|