204 lines · plain
1# RUN: llc -mtriple=amdgcn -mcpu=gfx802 -start-before postrapseudos -asm-verbose=0 -verify-machineinstrs %s -o - | FileCheck -check-prefix=GCN %s2# RUN: llc -mtriple=amdgcn -mcpu=gfx900 -start-before postrapseudos -asm-verbose=0 -verify-machineinstrs %s -o - | FileCheck -check-prefix=GCN %s3# RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -start-before postrapseudos -asm-verbose=0 -verify-machineinstrs %s -o - | FileCheck -check-prefix=GCN %s4 5# GCN-LABEL: {{^}}lo_to_lo:6# GCN: v_mov_b32_sdwa v1, v0 dst_sel:WORD_0 dst_unused:UNUSED_PRESERVE src0_sel:WORD_07name: lo_to_lo8tracksRegLiveness: true9body: |10 bb.0:11 $vgpr0 = IMPLICIT_DEF12 $vgpr1_lo16 = COPY $vgpr0_lo1613 S_ENDPGM 014...15 16# GCN-LABEL: {{^}}lo_to_hi:17# GCN: v_mov_b32_sdwa v1, v0 dst_sel:WORD_1 dst_unused:UNUSED_PRESERVE src0_sel:WORD_018name: lo_to_hi19tracksRegLiveness: true20body: |21 bb.0:22 $vgpr0 = IMPLICIT_DEF23 $vgpr1_hi16 = COPY killed $vgpr0_lo1624 S_ENDPGM 025...26 27# GCN-LABEL: {{^}}hi_to_lo:28# GCN: v_mov_b32_sdwa v1, v0 dst_sel:WORD_0 dst_unused:UNUSED_PRESERVE src0_sel:WORD_129name: hi_to_lo30tracksRegLiveness: true31body: |32 bb.0:33 $vgpr0 = IMPLICIT_DEF34 $vgpr1_lo16 = COPY $vgpr0_hi1635 S_ENDPGM 036...37 38# GCN-LABEL: {{^}}hi_to_hi:39# GCN: v_mov_b32_sdwa v1, v0 dst_sel:WORD_1 dst_unused:UNUSED_PRESERVE src0_sel:WORD_140name: hi_to_hi41tracksRegLiveness: true42body: |43 bb.0:44 $vgpr0 = IMPLICIT_DEF45 $vgpr1_hi16 = COPY $vgpr0_hi1646 S_ENDPGM 047...48 49# GCN-LABEL: {{^}}lo_to_lo_samereg:50# GCN: s_waitcnt51# GCN-NEXT: s_endpgm52name: lo_to_lo_samereg53tracksRegLiveness: true54body: |55 bb.0:56 $vgpr0 = IMPLICIT_DEF57 $vgpr0_lo16 = COPY $vgpr0_lo1658 S_ENDPGM 059...60 61# GCN-LABEL: {{^}}lo_to_hi_samereg:62# GCN: v_mov_b32_sdwa v0, v0 dst_sel:WORD_1 dst_unused:UNUSED_PRESERVE src0_sel:WORD_063name: lo_to_hi_samereg64tracksRegLiveness: true65body: |66 bb.0:67 $vgpr0 = IMPLICIT_DEF68 $vgpr0_hi16 = COPY $vgpr0_lo1669 S_ENDPGM 070...71 72# GCN-LABEL: {{^}}hi_to_lo_samereg:73# GCN: v_mov_b32_sdwa v0, v0 dst_sel:WORD_0 dst_unused:UNUSED_PRESERVE src0_sel:WORD_174name: hi_to_lo_samereg75tracksRegLiveness: true76body: |77 bb.0:78 $vgpr0 = IMPLICIT_DEF79 $vgpr0_lo16 = COPY killed $vgpr0_hi1680 S_ENDPGM 081...82 83# GCN-LABEL: {{^}}hi_to_hi_samereg:84# GCN: s_waitcnt85# GCN-NEXT: s_endpgm86name: hi_to_hi_samereg87tracksRegLiveness: true88body: |89 bb.0:90 $vgpr0 = IMPLICIT_DEF91 $vgpr0_hi16 = COPY killed $vgpr0_hi1692 S_ENDPGM 093...94 95# GCN-LABEL: {{^}}lo_to_lo_def_livein:96# GCN: v_mov_b32_sdwa v1, v0 dst_sel:WORD_0 dst_unused:UNUSED_PRESERVE src0_sel:WORD_097name: lo_to_lo_def_livein98tracksRegLiveness: true99body: |100 bb.0:101 liveins: $vgpr0102 103 $vgpr1 = IMPLICIT_DEF104 $vgpr1_lo16 = COPY $vgpr0_lo16105 S_ENDPGM 0106...107 108# GCN-LABEL: {{^}}lo_to_hi_def_livein:109# GCN: v_mov_b32_sdwa v1, v0 dst_sel:WORD_1 dst_unused:UNUSED_PRESERVE src0_sel:WORD_0110name: lo_to_hi_def_livein111tracksRegLiveness: true112body: |113 bb.0:114 liveins: $vgpr0115 116 $vgpr1 = IMPLICIT_DEF117 $vgpr1_hi16 = COPY $vgpr0_lo16118 S_ENDPGM 0119...120 121# GCN-LABEL: {{^}}hi_to_lo_def_livein:122# GCN: v_mov_b32_sdwa v1, v0 dst_sel:WORD_0 dst_unused:UNUSED_PRESERVE src0_sel:WORD_1123name: hi_to_lo_def_livein124tracksRegLiveness: true125body: |126 bb.0:127 liveins: $vgpr0128 129 $vgpr1 = IMPLICIT_DEF130 $vgpr1_lo16 = COPY killed $vgpr0_hi16131 S_ENDPGM 0132...133 134# GCN-LABEL: {{^}}hi_to_hi_def_livein:135# GCN: v_mov_b32_sdwa v1, v0 dst_sel:WORD_1 dst_unused:UNUSED_PRESERVE src0_sel:WORD_1136name: hi_to_hi_def_livein137tracksRegLiveness: true138body: |139 bb.0:140 liveins: $vgpr0141 142 $vgpr1 = IMPLICIT_DEF143 $vgpr1_hi16 = COPY $vgpr0_hi16144 S_ENDPGM 0145...146 147# TODO: This can be coalesced into a VGPR_32 copy148# GCN-LABEL: {{^}}lo_to_lo_hi_to_hi:149# GCN: v_mov_b32_sdwa v1, v0 dst_sel:WORD_0 dst_unused:UNUSED_PRESERVE src0_sel:WORD_0150# GCN-NEXT: v_mov_b32_sdwa v1, v0 dst_sel:WORD_1 dst_unused:UNUSED_PRESERVE src0_sel:WORD_1151# GCN-NEXT: v_mov_b32_e32 v2, v1152# GCN-NEXT: s_endpgm153name: lo_to_lo_hi_to_hi154tracksRegLiveness: true155body: |156 bb.0:157 $vgpr0 = IMPLICIT_DEF158 $vgpr1_lo16 = COPY $vgpr0_lo16159 $vgpr1_hi16 = COPY $vgpr0_hi16160 $vgpr2 = COPY killed $vgpr1161 S_ENDPGM 0162...163 164# GCN-LABEL: {{^}}lo_to_hi_hi_to_lo:165# GCN: v_mov_b32_sdwa v1, v0 dst_sel:WORD_0 dst_unused:UNUSED_PRESERVE src0_sel:WORD_1166# GCN-NEXT: v_mov_b32_sdwa v1, v0 dst_sel:WORD_1 dst_unused:UNUSED_PRESERVE src0_sel:WORD_0167# GCN-NEXT: v_mov_b32_e32 v2, v1168# GCN-NEXT: s_endpgm169name: lo_to_hi_hi_to_lo170tracksRegLiveness: true171body: |172 bb.0:173 $vgpr0 = IMPLICIT_DEF174 $vgpr1_lo16 = COPY $vgpr0_hi16175 $vgpr1_hi16 = COPY $vgpr0_lo16176 $vgpr2 = COPY killed $vgpr1177 S_ENDPGM 0178...179 180# NB: copy of undef just killed instead of expansion181# GCN-LABEL: {{^}}lo_to_lo_undef:182# GCN: s_waitcnt183# GCN-NEXT: v_mov_b32_e32 v2, v1184# GCN-NEXT: s_endpgm185name: lo_to_lo_undef186tracksRegLiveness: true187body: |188 bb.0:189 $vgpr1_lo16 = COPY undef $vgpr0_lo16190 $vgpr2 = COPY killed $vgpr1191 S_ENDPGM 0192...193 194# GCN-LABEL: {{^}}lo_to_lo_sgpr_to_sgpr:195# GCN: s_mov_b32 s1, s0196name: lo_to_lo_sgpr_to_sgpr197tracksRegLiveness: true198body: |199 bb.0:200 $sgpr0 = IMPLICIT_DEF201 $sgpr1_lo16 = COPY $sgpr0_lo16202 S_ENDPGM 0203...204