1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -march=amdgcn -mcpu=gfx908 -run-pass postrapseudos -verify-machineinstrs %s -o - | FileCheck -check-prefix=GFX908 %s 3# RUN: llc -march=amdgcn -mcpu=gfx90a -run-pass postrapseudos -verify-machineinstrs %s -o - | FileCheck -check-prefix=GFX90A %s 4# RUN: llc -march=amdgcn -mcpu=gfx940 -run-pass postrapseudos -verify-machineinstrs %s -o - | FileCheck -check-prefix=GFX940 %s 5# RUN: llc -march=amdgcn -mcpu=gfx1010 -run-pass postrapseudos -verify-machineinstrs %s -o - | FileCheck -check-prefix=GFX10 %s 6# RUN: llc -march=amdgcn -mcpu=gfx1100 -run-pass postrapseudos -verify-machineinstrs %s -o - | FileCheck -check-prefix=GFX10 %s 7 8--- 9name: copy_v64_to_v64 10tracksRegLiveness: true 11body: | 12 bb.0: 13 liveins: $vgpr2_vgpr3 14 ; GFX908-LABEL: name: copy_v64_to_v64 15 ; GFX908: liveins: $vgpr2_vgpr3 16 ; GFX908-NEXT: {{ $}} 17 ; GFX908-NEXT: $vgpr0 = V_MOV_B32_e32 $vgpr2, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $vgpr2_vgpr3 18 ; GFX908-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr3, implicit $exec, implicit killed $vgpr2_vgpr3, implicit $exec 19 ; GFX90A-LABEL: name: copy_v64_to_v64 20 ; GFX90A: liveins: $vgpr2_vgpr3 21 ; GFX90A-NEXT: {{ $}} 22 ; GFX90A-NEXT: $vgpr0_vgpr1 = V_PK_MOV_B32 8, $vgpr2_vgpr3, 12, $vgpr2_vgpr3, 0, 0, 0, 0, 0, implicit $exec, implicit killed $vgpr2_vgpr3, implicit $exec 23 ; GFX940-LABEL: name: copy_v64_to_v64 24 ; GFX940: liveins: $vgpr2_vgpr3 25 ; GFX940-NEXT: {{ $}} 26 ; GFX940-NEXT: $vgpr0_vgpr1 = V_MOV_B64_e32 killed $vgpr2_vgpr3, implicit $exec, implicit $exec 27 ; GFX10-LABEL: name: copy_v64_to_v64 28 ; GFX10: liveins: $vgpr2_vgpr3 29 ; GFX10-NEXT: {{ $}} 30 ; GFX10-NEXT: $vgpr0 = V_MOV_B32_e32 $vgpr2, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $vgpr2_vgpr3 31 ; GFX10-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr3, implicit $exec, implicit killed $vgpr2_vgpr3, implicit $exec 32 $vgpr0_vgpr1 = COPY killed $vgpr2_vgpr3, implicit $exec 33... 34 35--- 36name: copy_s64_to_v64 37tracksRegLiveness: true 38body: | 39 bb.0: 40 liveins: $sgpr2_sgpr3 41 ; GFX908-LABEL: name: copy_s64_to_v64 42 ; GFX908: liveins: $sgpr2_sgpr3 43 ; GFX908-NEXT: {{ $}} 44 ; GFX908-NEXT: $vgpr0 = V_MOV_B32_e32 $sgpr2, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $sgpr2_sgpr3 45 ; GFX908-NEXT: $vgpr1 = V_MOV_B32_e32 $sgpr3, implicit $exec, implicit killed $sgpr2_sgpr3, implicit $exec 46 ; GFX90A-LABEL: name: copy_s64_to_v64 47 ; GFX90A: liveins: $sgpr2_sgpr3 48 ; GFX90A-NEXT: {{ $}} 49 ; GFX90A-NEXT: $vgpr0_vgpr1 = V_PK_MOV_B32 8, $sgpr2_sgpr3, 12, $sgpr2_sgpr3, 0, 0, 0, 0, 0, implicit $exec, implicit killed $sgpr2_sgpr3, implicit $exec 50 ; GFX940-LABEL: name: copy_s64_to_v64 51 ; GFX940: liveins: $sgpr2_sgpr3 52 ; GFX940-NEXT: {{ $}} 53 ; GFX940-NEXT: $vgpr0_vgpr1 = V_MOV_B64_e32 killed $sgpr2_sgpr3, implicit $exec, implicit $exec 54 ; GFX10-LABEL: name: copy_s64_to_v64 55 ; GFX10: liveins: $sgpr2_sgpr3 56 ; GFX10-NEXT: {{ $}} 57 ; GFX10-NEXT: $vgpr0 = V_MOV_B32_e32 $sgpr2, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $sgpr2_sgpr3 58 ; GFX10-NEXT: $vgpr1 = V_MOV_B32_e32 $sgpr3, implicit $exec, implicit killed $sgpr2_sgpr3, implicit $exec 59 $vgpr0_vgpr1 = COPY killed $sgpr2_sgpr3, implicit $exec 60... 61 62--- 63name: copy_a64_to_v64 64tracksRegLiveness: true 65body: | 66 bb.0: 67 liveins: $agpr2_agpr3 68 ; GFX908-LABEL: name: copy_a64_to_v64 69 ; GFX908: liveins: $agpr2_agpr3 70 ; GFX908-NEXT: {{ $}} 71 ; GFX908-NEXT: $vgpr0 = V_ACCVGPR_READ_B32_e64 $agpr2, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $agpr2_agpr3 72 ; GFX908-NEXT: $vgpr1 = V_ACCVGPR_READ_B32_e64 $agpr3, implicit $exec, implicit killed $agpr2_agpr3, implicit $exec 73 ; GFX90A-LABEL: name: copy_a64_to_v64 74 ; GFX90A: liveins: $agpr2_agpr3 75 ; GFX90A-NEXT: {{ $}} 76 ; GFX90A-NEXT: $vgpr0 = V_ACCVGPR_READ_B32_e64 $agpr2, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $agpr2_agpr3 77 ; GFX90A-NEXT: $vgpr1 = V_ACCVGPR_READ_B32_e64 $agpr3, implicit $exec, implicit killed $agpr2_agpr3, implicit $exec 78 ; GFX940-LABEL: name: copy_a64_to_v64 79 ; GFX940: liveins: $agpr2_agpr3 80 ; GFX940-NEXT: {{ $}} 81 ; GFX940-NEXT: $vgpr0 = V_ACCVGPR_READ_B32_e64 $agpr2, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $agpr2_agpr3 82 ; GFX940-NEXT: $vgpr1 = V_ACCVGPR_READ_B32_e64 $agpr3, implicit $exec, implicit killed $agpr2_agpr3, implicit $exec 83 ; GFX10-LABEL: name: copy_a64_to_v64 84 ; GFX10: liveins: $agpr2_agpr3 85 ; GFX10-NEXT: {{ $}} 86 ; GFX10-NEXT: $vgpr0 = V_ACCVGPR_READ_B32_e64 $agpr2, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $agpr2_agpr3 87 ; GFX10-NEXT: $vgpr1 = V_ACCVGPR_READ_B32_e64 $agpr3, implicit $exec, implicit killed $agpr2_agpr3, implicit $exec 88 $vgpr0_vgpr1 = COPY killed $agpr2_agpr3, implicit $exec 89... 90 91--- 92name: copy_v128_to_v128_fwd 93tracksRegLiveness: true 94body: | 95 bb.0: 96 liveins: $vgpr2_vgpr3_vgpr4_vgpr5 97 ; GFX908-LABEL: name: copy_v128_to_v128_fwd 98 ; GFX908: liveins: $vgpr2_vgpr3_vgpr4_vgpr5 99 ; GFX908-NEXT: {{ $}} 100 ; GFX908-NEXT: $vgpr0 = V_MOV_B32_e32 $vgpr2, implicit $exec, implicit-def $vgpr0_vgpr1_vgpr2_vgpr3, implicit $vgpr2_vgpr3_vgpr4_vgpr5 101 ; GFX908-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr3, implicit $exec, implicit $vgpr2_vgpr3_vgpr4_vgpr5 102 ; GFX908-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr4, implicit $exec, implicit $vgpr2_vgpr3_vgpr4_vgpr5 103 ; GFX908-NEXT: $vgpr3 = V_MOV_B32_e32 $vgpr5, implicit $exec, implicit $vgpr2_vgpr3_vgpr4_vgpr5, implicit $exec 104 ; GFX90A-LABEL: name: copy_v128_to_v128_fwd 105 ; GFX90A: liveins: $vgpr2_vgpr3_vgpr4_vgpr5 106 ; GFX90A-NEXT: {{ $}} 107 ; GFX90A-NEXT: $vgpr0_vgpr1 = V_PK_MOV_B32 8, $vgpr2_vgpr3, 12, $vgpr2_vgpr3, 0, 0, 0, 0, 0, implicit $exec, implicit $vgpr2_vgpr3_vgpr4_vgpr5, implicit-def $vgpr0_vgpr1_vgpr2_vgpr3 108 ; GFX90A-NEXT: $vgpr2_vgpr3 = V_PK_MOV_B32 8, $vgpr4_vgpr5, 12, $vgpr4_vgpr5, 0, 0, 0, 0, 0, implicit $exec, implicit $vgpr2_vgpr3_vgpr4_vgpr5, implicit $exec 109 ; GFX940-LABEL: name: copy_v128_to_v128_fwd 110 ; GFX940: liveins: $vgpr2_vgpr3_vgpr4_vgpr5 111 ; GFX940-NEXT: {{ $}} 112 ; GFX940-NEXT: $vgpr0_vgpr1 = V_MOV_B64_e32 $vgpr2_vgpr3, implicit $exec, implicit-def $vgpr0_vgpr1_vgpr2_vgpr3, implicit $vgpr2_vgpr3_vgpr4_vgpr5 113 ; GFX940-NEXT: $vgpr2_vgpr3 = V_MOV_B64_e32 $vgpr4_vgpr5, implicit $exec, implicit $vgpr2_vgpr3_vgpr4_vgpr5, implicit $exec 114 ; GFX10-LABEL: name: copy_v128_to_v128_fwd 115 ; GFX10: liveins: $vgpr2_vgpr3_vgpr4_vgpr5 116 ; GFX10-NEXT: {{ $}} 117 ; GFX10-NEXT: $vgpr0 = V_MOV_B32_e32 $vgpr2, implicit $exec, implicit-def $vgpr0_vgpr1_vgpr2_vgpr3, implicit $vgpr2_vgpr3_vgpr4_vgpr5 118 ; GFX10-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr3, implicit $exec, implicit $vgpr2_vgpr3_vgpr4_vgpr5 119 ; GFX10-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr4, implicit $exec, implicit $vgpr2_vgpr3_vgpr4_vgpr5 120 ; GFX10-NEXT: $vgpr3 = V_MOV_B32_e32 $vgpr5, implicit $exec, implicit $vgpr2_vgpr3_vgpr4_vgpr5, implicit $exec 121 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY killed $vgpr2_vgpr3_vgpr4_vgpr5, implicit $exec 122... 123 124--- 125name: copy_v128_to_v128_back 126tracksRegLiveness: true 127body: | 128 bb.0: 129 liveins: $vgpr0_vgpr1_vgpr2_vgpr3 130 ; GFX908-LABEL: name: copy_v128_to_v128_back 131 ; GFX908: liveins: $vgpr0_vgpr1_vgpr2_vgpr3 132 ; GFX908-NEXT: {{ $}} 133 ; GFX908-NEXT: $vgpr5 = V_MOV_B32_e32 $vgpr3, implicit $exec, implicit-def $vgpr2_vgpr3_vgpr4_vgpr5, implicit $vgpr0_vgpr1_vgpr2_vgpr3 134 ; GFX908-NEXT: $vgpr4 = V_MOV_B32_e32 $vgpr2, implicit $exec, implicit $vgpr0_vgpr1_vgpr2_vgpr3 135 ; GFX908-NEXT: $vgpr3 = V_MOV_B32_e32 $vgpr1, implicit $exec, implicit $vgpr0_vgpr1_vgpr2_vgpr3 136 ; GFX908-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr0, implicit $exec, implicit $vgpr0_vgpr1_vgpr2_vgpr3, implicit $exec 137 ; GFX90A-LABEL: name: copy_v128_to_v128_back 138 ; GFX90A: liveins: $vgpr0_vgpr1_vgpr2_vgpr3 139 ; GFX90A-NEXT: {{ $}} 140 ; GFX90A-NEXT: $vgpr4_vgpr5 = V_PK_MOV_B32 8, $vgpr2_vgpr3, 12, $vgpr2_vgpr3, 0, 0, 0, 0, 0, implicit $exec, implicit $vgpr0_vgpr1_vgpr2_vgpr3, implicit-def $vgpr2_vgpr3_vgpr4_vgpr5 141 ; GFX90A-NEXT: $vgpr2_vgpr3 = V_PK_MOV_B32 8, $vgpr0_vgpr1, 12, $vgpr0_vgpr1, 0, 0, 0, 0, 0, implicit $exec, implicit $vgpr0_vgpr1_vgpr2_vgpr3, implicit $exec 142 ; GFX940-LABEL: name: copy_v128_to_v128_back 143 ; GFX940: liveins: $vgpr0_vgpr1_vgpr2_vgpr3 144 ; GFX940-NEXT: {{ $}} 145 ; GFX940-NEXT: $vgpr4_vgpr5 = V_MOV_B64_e32 $vgpr2_vgpr3, implicit $exec, implicit-def $vgpr2_vgpr3_vgpr4_vgpr5, implicit $vgpr0_vgpr1_vgpr2_vgpr3 146 ; GFX940-NEXT: $vgpr2_vgpr3 = V_MOV_B64_e32 $vgpr0_vgpr1, implicit $exec, implicit $vgpr0_vgpr1_vgpr2_vgpr3, implicit $exec 147 ; GFX10-LABEL: name: copy_v128_to_v128_back 148 ; GFX10: liveins: $vgpr0_vgpr1_vgpr2_vgpr3 149 ; GFX10-NEXT: {{ $}} 150 ; GFX10-NEXT: $vgpr5 = V_MOV_B32_e32 $vgpr3, implicit $exec, implicit-def $vgpr2_vgpr3_vgpr4_vgpr5, implicit $vgpr0_vgpr1_vgpr2_vgpr3 151 ; GFX10-NEXT: $vgpr4 = V_MOV_B32_e32 $vgpr2, implicit $exec, implicit $vgpr0_vgpr1_vgpr2_vgpr3 152 ; GFX10-NEXT: $vgpr3 = V_MOV_B32_e32 $vgpr1, implicit $exec, implicit $vgpr0_vgpr1_vgpr2_vgpr3 153 ; GFX10-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr0, implicit $exec, implicit $vgpr0_vgpr1_vgpr2_vgpr3, implicit $exec 154 $vgpr2_vgpr3_vgpr4_vgpr5 = COPY killed $vgpr0_vgpr1_vgpr2_vgpr3, implicit $exec 155... 156 157--- 158name: copy_v96_to_v96 159tracksRegLiveness: true 160body: | 161 bb.0: 162 liveins: $vgpr4_vgpr5_vgpr6 163 ; GFX908-LABEL: name: copy_v96_to_v96 164 ; GFX908: liveins: $vgpr4_vgpr5_vgpr6 165 ; GFX908-NEXT: {{ $}} 166 ; GFX908-NEXT: $vgpr0 = V_MOV_B32_e32 $vgpr4, implicit $exec, implicit-def $vgpr0_vgpr1_vgpr2, implicit $vgpr4_vgpr5_vgpr6 167 ; GFX908-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr5, implicit $exec, implicit $vgpr4_vgpr5_vgpr6 168 ; GFX908-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr6, implicit $exec, implicit killed $vgpr4_vgpr5_vgpr6, implicit $exec 169 ; GFX90A-LABEL: name: copy_v96_to_v96 170 ; GFX90A: liveins: $vgpr4_vgpr5_vgpr6 171 ; GFX90A-NEXT: {{ $}} 172 ; GFX90A-NEXT: $vgpr0 = V_MOV_B32_e32 $vgpr4, implicit $exec, implicit-def $vgpr0_vgpr1_vgpr2, implicit $vgpr4_vgpr5_vgpr6 173 ; GFX90A-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr5, implicit $exec, implicit $vgpr4_vgpr5_vgpr6 174 ; GFX90A-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr6, implicit $exec, implicit killed $vgpr4_vgpr5_vgpr6, implicit $exec 175 ; GFX940-LABEL: name: copy_v96_to_v96 176 ; GFX940: liveins: $vgpr4_vgpr5_vgpr6 177 ; GFX940-NEXT: {{ $}} 178 ; GFX940-NEXT: $vgpr0 = V_MOV_B32_e32 $vgpr4, implicit $exec, implicit-def $vgpr0_vgpr1_vgpr2, implicit $vgpr4_vgpr5_vgpr6 179 ; GFX940-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr5, implicit $exec, implicit $vgpr4_vgpr5_vgpr6 180 ; GFX940-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr6, implicit $exec, implicit killed $vgpr4_vgpr5_vgpr6, implicit $exec 181 ; GFX10-LABEL: name: copy_v96_to_v96 182 ; GFX10: liveins: $vgpr4_vgpr5_vgpr6 183 ; GFX10-NEXT: {{ $}} 184 ; GFX10-NEXT: $vgpr0 = V_MOV_B32_e32 $vgpr4, implicit $exec, implicit-def $vgpr0_vgpr1_vgpr2, implicit $vgpr4_vgpr5_vgpr6 185 ; GFX10-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr5, implicit $exec, implicit $vgpr4_vgpr5_vgpr6 186 ; GFX10-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr6, implicit $exec, implicit killed $vgpr4_vgpr5_vgpr6, implicit $exec 187 $vgpr0_vgpr1_vgpr2 = COPY killed $vgpr4_vgpr5_vgpr6, implicit $exec 188... 189 190--- 191name: copy_v64_to_v64_undef_sub0 192tracksRegLiveness: true 193body: | 194 bb.0: 195 liveins: $vgpr3 196 ; GFX908-LABEL: name: copy_v64_to_v64_undef_sub0 197 ; GFX908: liveins: $vgpr3 198 ; GFX908-NEXT: {{ $}} 199 ; GFX908-NEXT: $vgpr0 = V_MOV_B32_e32 $vgpr2, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $vgpr2_vgpr3 200 ; GFX908-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr3, implicit $exec, implicit killed $vgpr2_vgpr3, implicit $exec 201 ; GFX90A-LABEL: name: copy_v64_to_v64_undef_sub0 202 ; GFX90A: liveins: $vgpr3 203 ; GFX90A-NEXT: {{ $}} 204 ; GFX90A-NEXT: $vgpr0_vgpr1 = V_PK_MOV_B32 8, $vgpr2_vgpr3, 12, $vgpr2_vgpr3, 0, 0, 0, 0, 0, implicit $exec, implicit killed $vgpr2_vgpr3, implicit $exec 205 ; GFX940-LABEL: name: copy_v64_to_v64_undef_sub0 206 ; GFX940: liveins: $vgpr3 207 ; GFX940-NEXT: {{ $}} 208 ; GFX940-NEXT: $vgpr0_vgpr1 = V_MOV_B64_e32 killed $vgpr2_vgpr3, implicit $exec, implicit $exec 209 ; GFX10-LABEL: name: copy_v64_to_v64_undef_sub0 210 ; GFX10: liveins: $vgpr3 211 ; GFX10-NEXT: {{ $}} 212 ; GFX10-NEXT: $vgpr0 = V_MOV_B32_e32 $vgpr2, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $vgpr2_vgpr3 213 ; GFX10-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr3, implicit $exec, implicit killed $vgpr2_vgpr3, implicit $exec 214 $vgpr0_vgpr1 = COPY killed $vgpr2_vgpr3, implicit $exec 215... 216 217--- 218name: copy_v64_to_v64_undef_sub1 219tracksRegLiveness: true 220body: | 221 bb.0: 222 liveins: $vgpr2 223 ; GFX908-LABEL: name: copy_v64_to_v64_undef_sub1 224 ; GFX908: liveins: $vgpr2 225 ; GFX908-NEXT: {{ $}} 226 ; GFX908-NEXT: $vgpr0 = V_MOV_B32_e32 $vgpr2, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $vgpr2_vgpr3 227 ; GFX908-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr3, implicit $exec, implicit killed $vgpr2_vgpr3, implicit $exec 228 ; GFX90A-LABEL: name: copy_v64_to_v64_undef_sub1 229 ; GFX90A: liveins: $vgpr2 230 ; GFX90A-NEXT: {{ $}} 231 ; GFX90A-NEXT: $vgpr0_vgpr1 = V_PK_MOV_B32 8, $vgpr2_vgpr3, 12, $vgpr2_vgpr3, 0, 0, 0, 0, 0, implicit $exec, implicit killed $vgpr2_vgpr3, implicit $exec 232 ; GFX940-LABEL: name: copy_v64_to_v64_undef_sub1 233 ; GFX940: liveins: $vgpr2 234 ; GFX940-NEXT: {{ $}} 235 ; GFX940-NEXT: $vgpr0_vgpr1 = V_MOV_B64_e32 killed $vgpr2_vgpr3, implicit $exec, implicit $exec 236 ; GFX10-LABEL: name: copy_v64_to_v64_undef_sub1 237 ; GFX10: liveins: $vgpr2 238 ; GFX10-NEXT: {{ $}} 239 ; GFX10-NEXT: $vgpr0 = V_MOV_B32_e32 $vgpr2, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $vgpr2_vgpr3 240 ; GFX10-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr3, implicit $exec, implicit killed $vgpr2_vgpr3, implicit $exec 241 $vgpr0_vgpr1 = COPY killed $vgpr2_vgpr3, implicit $exec 242... 243 244--- 245name: copy_s128_to_v128_killed 246tracksRegLiveness: true 247body: | 248 bb.0: 249 liveins: $sgpr4_sgpr5_sgpr6_sgpr7 250 ; GFX908-LABEL: name: copy_s128_to_v128_killed 251 ; GFX908: liveins: $sgpr4_sgpr5_sgpr6_sgpr7 252 ; GFX908-NEXT: {{ $}} 253 ; GFX908-NEXT: $vgpr0 = V_MOV_B32_e32 $sgpr4, implicit $exec, implicit-def $vgpr0_vgpr1_vgpr2_vgpr3, implicit $sgpr4_sgpr5_sgpr6_sgpr7 254 ; GFX908-NEXT: $vgpr1 = V_MOV_B32_e32 $sgpr5, implicit $exec, implicit $sgpr4_sgpr5_sgpr6_sgpr7 255 ; GFX908-NEXT: $vgpr2 = V_MOV_B32_e32 $sgpr6, implicit $exec, implicit $sgpr4_sgpr5_sgpr6_sgpr7 256 ; GFX908-NEXT: $vgpr3 = V_MOV_B32_e32 $sgpr7, implicit $exec, implicit killed $sgpr4_sgpr5_sgpr6_sgpr7 257 ; GFX90A-LABEL: name: copy_s128_to_v128_killed 258 ; GFX90A: liveins: $sgpr4_sgpr5_sgpr6_sgpr7 259 ; GFX90A-NEXT: {{ $}} 260 ; GFX90A-NEXT: $vgpr0_vgpr1 = V_PK_MOV_B32 8, $sgpr4_sgpr5, 12, $sgpr4_sgpr5, 0, 0, 0, 0, 0, implicit $exec, implicit $sgpr4_sgpr5_sgpr6_sgpr7, implicit-def $vgpr0_vgpr1_vgpr2_vgpr3 261 ; GFX90A-NEXT: $vgpr2_vgpr3 = V_PK_MOV_B32 8, $sgpr6_sgpr7, 12, $sgpr6_sgpr7, 0, 0, 0, 0, 0, implicit $exec, implicit killed $sgpr4_sgpr5_sgpr6_sgpr7 262 ; GFX940-LABEL: name: copy_s128_to_v128_killed 263 ; GFX940: liveins: $sgpr4_sgpr5_sgpr6_sgpr7 264 ; GFX940-NEXT: {{ $}} 265 ; GFX940-NEXT: $vgpr0_vgpr1 = V_MOV_B64_e32 $sgpr4_sgpr5, implicit $exec, implicit-def $vgpr0_vgpr1_vgpr2_vgpr3, implicit $sgpr4_sgpr5_sgpr6_sgpr7 266 ; GFX940-NEXT: $vgpr2_vgpr3 = V_MOV_B64_e32 $sgpr6_sgpr7, implicit $exec, implicit killed $sgpr4_sgpr5_sgpr6_sgpr7 267 ; GFX10-LABEL: name: copy_s128_to_v128_killed 268 ; GFX10: liveins: $sgpr4_sgpr5_sgpr6_sgpr7 269 ; GFX10-NEXT: {{ $}} 270 ; GFX10-NEXT: $vgpr0 = V_MOV_B32_e32 $sgpr4, implicit $exec, implicit-def $vgpr0_vgpr1_vgpr2_vgpr3, implicit $sgpr4_sgpr5_sgpr6_sgpr7 271 ; GFX10-NEXT: $vgpr1 = V_MOV_B32_e32 $sgpr5, implicit $exec, implicit $sgpr4_sgpr5_sgpr6_sgpr7 272 ; GFX10-NEXT: $vgpr2 = V_MOV_B32_e32 $sgpr6, implicit $exec, implicit $sgpr4_sgpr5_sgpr6_sgpr7 273 ; GFX10-NEXT: $vgpr3 = V_MOV_B32_e32 $sgpr7, implicit $exec, implicit killed $sgpr4_sgpr5_sgpr6_sgpr7 274 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY killed $sgpr4_sgpr5_sgpr6_sgpr7 275... 276 277--- 278name: copy_v64_to_v64_unaligned 279tracksRegLiveness: true 280body: | 281 bb.0: 282 liveins: $vgpr2_vgpr3 283 ; GFX908-LABEL: name: copy_v64_to_v64_unaligned 284 ; GFX908: liveins: $vgpr2_vgpr3 285 ; GFX908-NEXT: {{ $}} 286 ; GFX908-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr2, implicit $exec, implicit-def $vgpr1_vgpr2, implicit $vgpr2_vgpr3 287 ; GFX908-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr3, implicit $exec, implicit $vgpr2_vgpr3, implicit $exec 288 ; GFX90A-LABEL: name: copy_v64_to_v64_unaligned 289 ; GFX90A: liveins: $vgpr2_vgpr3 290 ; GFX90A-NEXT: {{ $}} 291 ; GFX90A-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr2, implicit $exec, implicit-def $vgpr1_vgpr2, implicit $vgpr2_vgpr3 292 ; GFX90A-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr3, implicit $exec, implicit $vgpr2_vgpr3, implicit $exec 293 ; GFX940-LABEL: name: copy_v64_to_v64_unaligned 294 ; GFX940: liveins: $vgpr2_vgpr3 295 ; GFX940-NEXT: {{ $}} 296 ; GFX940-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr2, implicit $exec, implicit-def $vgpr1_vgpr2, implicit $vgpr2_vgpr3 297 ; GFX940-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr3, implicit $exec, implicit $vgpr2_vgpr3, implicit $exec 298 ; GFX10-LABEL: name: copy_v64_to_v64_unaligned 299 ; GFX10: liveins: $vgpr2_vgpr3 300 ; GFX10-NEXT: {{ $}} 301 ; GFX10-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr2, implicit $exec, implicit-def $vgpr1_vgpr2, implicit $vgpr2_vgpr3 302 ; GFX10-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr3, implicit $exec, implicit $vgpr2_vgpr3, implicit $exec 303 $vgpr1_vgpr2 = COPY killed $vgpr2_vgpr3, implicit $exec 304... 305 306--- 307name: copy_v64_unaligned_to_v64 308tracksRegLiveness: true 309body: | 310 bb.0: 311 liveins: $vgpr3_vgpr4 312 ; GFX908-LABEL: name: copy_v64_unaligned_to_v64 313 ; GFX908: liveins: $vgpr3_vgpr4 314 ; GFX908-NEXT: {{ $}} 315 ; GFX908-NEXT: $vgpr0 = V_MOV_B32_e32 $vgpr3, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $vgpr3_vgpr4 316 ; GFX908-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr4, implicit $exec, implicit killed $vgpr3_vgpr4, implicit $exec 317 ; GFX90A-LABEL: name: copy_v64_unaligned_to_v64 318 ; GFX90A: liveins: $vgpr3_vgpr4 319 ; GFX90A-NEXT: {{ $}} 320 ; GFX90A-NEXT: $vgpr0 = V_MOV_B32_e32 $vgpr3, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $vgpr3_vgpr4 321 ; GFX90A-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr4, implicit $exec, implicit killed $vgpr3_vgpr4, implicit $exec 322 ; GFX940-LABEL: name: copy_v64_unaligned_to_v64 323 ; GFX940: liveins: $vgpr3_vgpr4 324 ; GFX940-NEXT: {{ $}} 325 ; GFX940-NEXT: $vgpr0 = V_MOV_B32_e32 $vgpr3, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $vgpr3_vgpr4 326 ; GFX940-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr4, implicit $exec, implicit killed $vgpr3_vgpr4, implicit $exec 327 ; GFX10-LABEL: name: copy_v64_unaligned_to_v64 328 ; GFX10: liveins: $vgpr3_vgpr4 329 ; GFX10-NEXT: {{ $}} 330 ; GFX10-NEXT: $vgpr0 = V_MOV_B32_e32 $vgpr3, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $vgpr3_vgpr4 331 ; GFX10-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr4, implicit $exec, implicit killed $vgpr3_vgpr4, implicit $exec 332 $vgpr0_vgpr1 = COPY killed $vgpr3_vgpr4, implicit $exec 333... 334 335--- 336name: copy_v128_to_v128_unaligned 337tracksRegLiveness: true 338body: | 339 bb.0: 340 liveins: $vgpr8_vgpr9_vgpr10_vgpr11 341 ; GFX908-LABEL: name: copy_v128_to_v128_unaligned 342 ; GFX908: liveins: $vgpr8_vgpr9_vgpr10_vgpr11 343 ; GFX908-NEXT: {{ $}} 344 ; GFX908-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr8, implicit $exec, implicit-def $vgpr1_vgpr2_vgpr3_vgpr4, implicit $vgpr8_vgpr9_vgpr10_vgpr11 345 ; GFX908-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr9, implicit $exec, implicit $vgpr8_vgpr9_vgpr10_vgpr11 346 ; GFX908-NEXT: $vgpr3 = V_MOV_B32_e32 $vgpr10, implicit $exec, implicit $vgpr8_vgpr9_vgpr10_vgpr11 347 ; GFX908-NEXT: $vgpr4 = V_MOV_B32_e32 $vgpr11, implicit $exec, implicit killed $vgpr8_vgpr9_vgpr10_vgpr11, implicit $exec 348 ; GFX90A-LABEL: name: copy_v128_to_v128_unaligned 349 ; GFX90A: liveins: $vgpr8_vgpr9_vgpr10_vgpr11 350 ; GFX90A-NEXT: {{ $}} 351 ; GFX90A-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr8, implicit $exec, implicit-def $vgpr1_vgpr2_vgpr3_vgpr4, implicit $vgpr8_vgpr9_vgpr10_vgpr11 352 ; GFX90A-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr9, implicit $exec, implicit $vgpr8_vgpr9_vgpr10_vgpr11 353 ; GFX90A-NEXT: $vgpr3 = V_MOV_B32_e32 $vgpr10, implicit $exec, implicit $vgpr8_vgpr9_vgpr10_vgpr11 354 ; GFX90A-NEXT: $vgpr4 = V_MOV_B32_e32 $vgpr11, implicit $exec, implicit killed $vgpr8_vgpr9_vgpr10_vgpr11, implicit $exec 355 ; GFX940-LABEL: name: copy_v128_to_v128_unaligned 356 ; GFX940: liveins: $vgpr8_vgpr9_vgpr10_vgpr11 357 ; GFX940-NEXT: {{ $}} 358 ; GFX940-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr8, implicit $exec, implicit-def $vgpr1_vgpr2_vgpr3_vgpr4, implicit $vgpr8_vgpr9_vgpr10_vgpr11 359 ; GFX940-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr9, implicit $exec, implicit $vgpr8_vgpr9_vgpr10_vgpr11 360 ; GFX940-NEXT: $vgpr3 = V_MOV_B32_e32 $vgpr10, implicit $exec, implicit $vgpr8_vgpr9_vgpr10_vgpr11 361 ; GFX940-NEXT: $vgpr4 = V_MOV_B32_e32 $vgpr11, implicit $exec, implicit killed $vgpr8_vgpr9_vgpr10_vgpr11, implicit $exec 362 ; GFX10-LABEL: name: copy_v128_to_v128_unaligned 363 ; GFX10: liveins: $vgpr8_vgpr9_vgpr10_vgpr11 364 ; GFX10-NEXT: {{ $}} 365 ; GFX10-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr8, implicit $exec, implicit-def $vgpr1_vgpr2_vgpr3_vgpr4, implicit $vgpr8_vgpr9_vgpr10_vgpr11 366 ; GFX10-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr9, implicit $exec, implicit $vgpr8_vgpr9_vgpr10_vgpr11 367 ; GFX10-NEXT: $vgpr3 = V_MOV_B32_e32 $vgpr10, implicit $exec, implicit $vgpr8_vgpr9_vgpr10_vgpr11 368 ; GFX10-NEXT: $vgpr4 = V_MOV_B32_e32 $vgpr11, implicit $exec, implicit killed $vgpr8_vgpr9_vgpr10_vgpr11, implicit $exec 369 $vgpr1_vgpr2_vgpr3_vgpr4 = COPY killed $vgpr8_vgpr9_vgpr10_vgpr11, implicit $exec 370... 371 372--- 373name: copy_v128_unaligned_to_v128 374tracksRegLiveness: true 375body: | 376 bb.0: 377 liveins: $vgpr7_vgpr8_vgpr9_vgpr10 378 ; GFX908-LABEL: name: copy_v128_unaligned_to_v128 379 ; GFX908: liveins: $vgpr7_vgpr8_vgpr9_vgpr10 380 ; GFX908-NEXT: {{ $}} 381 ; GFX908-NEXT: $vgpr0 = V_MOV_B32_e32 $vgpr7, implicit $exec, implicit-def $vgpr0_vgpr1_vgpr2_vgpr3, implicit $vgpr7_vgpr8_vgpr9_vgpr10 382 ; GFX908-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr8, implicit $exec, implicit $vgpr7_vgpr8_vgpr9_vgpr10 383 ; GFX908-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr9, implicit $exec, implicit $vgpr7_vgpr8_vgpr9_vgpr10 384 ; GFX908-NEXT: $vgpr3 = V_MOV_B32_e32 $vgpr10, implicit $exec, implicit killed $vgpr7_vgpr8_vgpr9_vgpr10, implicit $exec 385 ; GFX90A-LABEL: name: copy_v128_unaligned_to_v128 386 ; GFX90A: liveins: $vgpr7_vgpr8_vgpr9_vgpr10 387 ; GFX90A-NEXT: {{ $}} 388 ; GFX90A-NEXT: $vgpr0 = V_MOV_B32_e32 $vgpr7, implicit $exec, implicit-def $vgpr0_vgpr1_vgpr2_vgpr3, implicit $vgpr7_vgpr8_vgpr9_vgpr10 389 ; GFX90A-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr8, implicit $exec, implicit $vgpr7_vgpr8_vgpr9_vgpr10 390 ; GFX90A-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr9, implicit $exec, implicit $vgpr7_vgpr8_vgpr9_vgpr10 391 ; GFX90A-NEXT: $vgpr3 = V_MOV_B32_e32 $vgpr10, implicit $exec, implicit killed $vgpr7_vgpr8_vgpr9_vgpr10, implicit $exec 392 ; GFX940-LABEL: name: copy_v128_unaligned_to_v128 393 ; GFX940: liveins: $vgpr7_vgpr8_vgpr9_vgpr10 394 ; GFX940-NEXT: {{ $}} 395 ; GFX940-NEXT: $vgpr0 = V_MOV_B32_e32 $vgpr7, implicit $exec, implicit-def $vgpr0_vgpr1_vgpr2_vgpr3, implicit $vgpr7_vgpr8_vgpr9_vgpr10 396 ; GFX940-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr8, implicit $exec, implicit $vgpr7_vgpr8_vgpr9_vgpr10 397 ; GFX940-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr9, implicit $exec, implicit $vgpr7_vgpr8_vgpr9_vgpr10 398 ; GFX940-NEXT: $vgpr3 = V_MOV_B32_e32 $vgpr10, implicit $exec, implicit killed $vgpr7_vgpr8_vgpr9_vgpr10, implicit $exec 399 ; GFX10-LABEL: name: copy_v128_unaligned_to_v128 400 ; GFX10: liveins: $vgpr7_vgpr8_vgpr9_vgpr10 401 ; GFX10-NEXT: {{ $}} 402 ; GFX10-NEXT: $vgpr0 = V_MOV_B32_e32 $vgpr7, implicit $exec, implicit-def $vgpr0_vgpr1_vgpr2_vgpr3, implicit $vgpr7_vgpr8_vgpr9_vgpr10 403 ; GFX10-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr8, implicit $exec, implicit $vgpr7_vgpr8_vgpr9_vgpr10 404 ; GFX10-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr9, implicit $exec, implicit $vgpr7_vgpr8_vgpr9_vgpr10 405 ; GFX10-NEXT: $vgpr3 = V_MOV_B32_e32 $vgpr10, implicit $exec, implicit killed $vgpr7_vgpr8_vgpr9_vgpr10, implicit $exec 406 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY killed $vgpr7_vgpr8_vgpr9_vgpr10, implicit $exec 407... 408 409--- 410name: copy_s64_to_v64_unaligned 411tracksRegLiveness: true 412body: | 413 bb.0: 414 liveins: $sgpr8_sgpr9 415 ; GFX908-LABEL: name: copy_s64_to_v64_unaligned 416 ; GFX908: liveins: $sgpr8_sgpr9 417 ; GFX908-NEXT: {{ $}} 418 ; GFX908-NEXT: $vgpr1 = V_MOV_B32_e32 $sgpr8, implicit $exec, implicit-def $vgpr1_vgpr2, implicit $sgpr8_sgpr9 419 ; GFX908-NEXT: $vgpr2 = V_MOV_B32_e32 $sgpr9, implicit $exec, implicit killed $sgpr8_sgpr9, implicit $exec 420 ; GFX90A-LABEL: name: copy_s64_to_v64_unaligned 421 ; GFX90A: liveins: $sgpr8_sgpr9 422 ; GFX90A-NEXT: {{ $}} 423 ; GFX90A-NEXT: $vgpr1 = V_MOV_B32_e32 $sgpr8, implicit $exec, implicit-def $vgpr1_vgpr2, implicit $sgpr8_sgpr9 424 ; GFX90A-NEXT: $vgpr2 = V_MOV_B32_e32 $sgpr9, implicit $exec, implicit killed $sgpr8_sgpr9, implicit $exec 425 ; GFX940-LABEL: name: copy_s64_to_v64_unaligned 426 ; GFX940: liveins: $sgpr8_sgpr9 427 ; GFX940-NEXT: {{ $}} 428 ; GFX940-NEXT: $vgpr1 = V_MOV_B32_e32 $sgpr8, implicit $exec, implicit-def $vgpr1_vgpr2, implicit $sgpr8_sgpr9 429 ; GFX940-NEXT: $vgpr2 = V_MOV_B32_e32 $sgpr9, implicit $exec, implicit killed $sgpr8_sgpr9, implicit $exec 430 ; GFX10-LABEL: name: copy_s64_to_v64_unaligned 431 ; GFX10: liveins: $sgpr8_sgpr9 432 ; GFX10-NEXT: {{ $}} 433 ; GFX10-NEXT: $vgpr1 = V_MOV_B32_e32 $sgpr8, implicit $exec, implicit-def $vgpr1_vgpr2, implicit $sgpr8_sgpr9 434 ; GFX10-NEXT: $vgpr2 = V_MOV_B32_e32 $sgpr9, implicit $exec, implicit killed $sgpr8_sgpr9, implicit $exec 435 $vgpr1_vgpr2 = COPY killed $sgpr8_sgpr9, implicit $exec 436... 437 438--- 439name: copy_s128_to_v128_unaligned 440tracksRegLiveness: true 441body: | 442 bb.0: 443 liveins: $sgpr8_sgpr9_sgpr10_sgpr11 444 ; GFX908-LABEL: name: copy_s128_to_v128_unaligned 445 ; GFX908: liveins: $sgpr8_sgpr9_sgpr10_sgpr11 446 ; GFX908-NEXT: {{ $}} 447 ; GFX908-NEXT: $vgpr1 = V_MOV_B32_e32 $sgpr8, implicit $exec, implicit-def $vgpr1_vgpr2_vgpr3_vgpr4, implicit $sgpr8_sgpr9_sgpr10_sgpr11 448 ; GFX908-NEXT: $vgpr2 = V_MOV_B32_e32 $sgpr9, implicit $exec, implicit $sgpr8_sgpr9_sgpr10_sgpr11 449 ; GFX908-NEXT: $vgpr3 = V_MOV_B32_e32 $sgpr10, implicit $exec, implicit $sgpr8_sgpr9_sgpr10_sgpr11 450 ; GFX908-NEXT: $vgpr4 = V_MOV_B32_e32 $sgpr11, implicit $exec, implicit killed $sgpr8_sgpr9_sgpr10_sgpr11, implicit $exec 451 ; GFX90A-LABEL: name: copy_s128_to_v128_unaligned 452 ; GFX90A: liveins: $sgpr8_sgpr9_sgpr10_sgpr11 453 ; GFX90A-NEXT: {{ $}} 454 ; GFX90A-NEXT: $vgpr1 = V_MOV_B32_e32 $sgpr8, implicit $exec, implicit-def $vgpr1_vgpr2_vgpr3_vgpr4, implicit $sgpr8_sgpr9_sgpr10_sgpr11 455 ; GFX90A-NEXT: $vgpr2 = V_MOV_B32_e32 $sgpr9, implicit $exec, implicit $sgpr8_sgpr9_sgpr10_sgpr11 456 ; GFX90A-NEXT: $vgpr3 = V_MOV_B32_e32 $sgpr10, implicit $exec, implicit $sgpr8_sgpr9_sgpr10_sgpr11 457 ; GFX90A-NEXT: $vgpr4 = V_MOV_B32_e32 $sgpr11, implicit $exec, implicit killed $sgpr8_sgpr9_sgpr10_sgpr11, implicit $exec 458 ; GFX940-LABEL: name: copy_s128_to_v128_unaligned 459 ; GFX940: liveins: $sgpr8_sgpr9_sgpr10_sgpr11 460 ; GFX940-NEXT: {{ $}} 461 ; GFX940-NEXT: $vgpr1 = V_MOV_B32_e32 $sgpr8, implicit $exec, implicit-def $vgpr1_vgpr2_vgpr3_vgpr4, implicit $sgpr8_sgpr9_sgpr10_sgpr11 462 ; GFX940-NEXT: $vgpr2 = V_MOV_B32_e32 $sgpr9, implicit $exec, implicit $sgpr8_sgpr9_sgpr10_sgpr11 463 ; GFX940-NEXT: $vgpr3 = V_MOV_B32_e32 $sgpr10, implicit $exec, implicit $sgpr8_sgpr9_sgpr10_sgpr11 464 ; GFX940-NEXT: $vgpr4 = V_MOV_B32_e32 $sgpr11, implicit $exec, implicit killed $sgpr8_sgpr9_sgpr10_sgpr11, implicit $exec 465 ; GFX10-LABEL: name: copy_s128_to_v128_unaligned 466 ; GFX10: liveins: $sgpr8_sgpr9_sgpr10_sgpr11 467 ; GFX10-NEXT: {{ $}} 468 ; GFX10-NEXT: $vgpr1 = V_MOV_B32_e32 $sgpr8, implicit $exec, implicit-def $vgpr1_vgpr2_vgpr3_vgpr4, implicit $sgpr8_sgpr9_sgpr10_sgpr11 469 ; GFX10-NEXT: $vgpr2 = V_MOV_B32_e32 $sgpr9, implicit $exec, implicit $sgpr8_sgpr9_sgpr10_sgpr11 470 ; GFX10-NEXT: $vgpr3 = V_MOV_B32_e32 $sgpr10, implicit $exec, implicit $sgpr8_sgpr9_sgpr10_sgpr11 471 ; GFX10-NEXT: $vgpr4 = V_MOV_B32_e32 $sgpr11, implicit $exec, implicit killed $sgpr8_sgpr9_sgpr10_sgpr11, implicit $exec 472 $vgpr1_vgpr2_vgpr3_vgpr4 = COPY killed $sgpr8_sgpr9_sgpr10_sgpr11, implicit $exec 473... 474 475--- 476name: copy_v96_to_v96_unaligned 477tracksRegLiveness: true 478body: | 479 bb.0: 480 liveins: $vgpr8_vgpr9_vgpr10 481 ; GFX908-LABEL: name: copy_v96_to_v96_unaligned 482 ; GFX908: liveins: $vgpr8_vgpr9_vgpr10 483 ; GFX908-NEXT: {{ $}} 484 ; GFX908-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr8, implicit $exec, implicit-def $vgpr1_vgpr2_vgpr3, implicit $vgpr8_vgpr9_vgpr10 485 ; GFX908-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr9, implicit $exec, implicit $vgpr8_vgpr9_vgpr10 486 ; GFX908-NEXT: $vgpr3 = V_MOV_B32_e32 $vgpr10, implicit $exec, implicit killed $vgpr8_vgpr9_vgpr10, implicit $exec 487 ; GFX90A-LABEL: name: copy_v96_to_v96_unaligned 488 ; GFX90A: liveins: $vgpr8_vgpr9_vgpr10 489 ; GFX90A-NEXT: {{ $}} 490 ; GFX90A-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr8, implicit $exec, implicit-def $vgpr1_vgpr2_vgpr3, implicit $vgpr8_vgpr9_vgpr10 491 ; GFX90A-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr9, implicit $exec, implicit $vgpr8_vgpr9_vgpr10 492 ; GFX90A-NEXT: $vgpr3 = V_MOV_B32_e32 $vgpr10, implicit $exec, implicit killed $vgpr8_vgpr9_vgpr10, implicit $exec 493 ; GFX940-LABEL: name: copy_v96_to_v96_unaligned 494 ; GFX940: liveins: $vgpr8_vgpr9_vgpr10 495 ; GFX940-NEXT: {{ $}} 496 ; GFX940-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr8, implicit $exec, implicit-def $vgpr1_vgpr2_vgpr3, implicit $vgpr8_vgpr9_vgpr10 497 ; GFX940-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr9, implicit $exec, implicit $vgpr8_vgpr9_vgpr10 498 ; GFX940-NEXT: $vgpr3 = V_MOV_B32_e32 $vgpr10, implicit $exec, implicit killed $vgpr8_vgpr9_vgpr10, implicit $exec 499 ; GFX10-LABEL: name: copy_v96_to_v96_unaligned 500 ; GFX10: liveins: $vgpr8_vgpr9_vgpr10 501 ; GFX10-NEXT: {{ $}} 502 ; GFX10-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr8, implicit $exec, implicit-def $vgpr1_vgpr2_vgpr3, implicit $vgpr8_vgpr9_vgpr10 503 ; GFX10-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr9, implicit $exec, implicit $vgpr8_vgpr9_vgpr10 504 ; GFX10-NEXT: $vgpr3 = V_MOV_B32_e32 $vgpr10, implicit $exec, implicit killed $vgpr8_vgpr9_vgpr10, implicit $exec 505 $vgpr1_vgpr2_vgpr3 = COPY killed $vgpr8_vgpr9_vgpr10, implicit $exec 506... 507 508--- 509name: copy_v96_unaligned_to_v96 510tracksRegLiveness: true 511body: | 512 bb.0: 513 liveins: $vgpr7_vgpr8_vgpr9 514 ; GFX908-LABEL: name: copy_v96_unaligned_to_v96 515 ; GFX908: liveins: $vgpr7_vgpr8_vgpr9 516 ; GFX908-NEXT: {{ $}} 517 ; GFX908-NEXT: $vgpr0 = V_MOV_B32_e32 $vgpr7, implicit $exec, implicit-def $vgpr0_vgpr1_vgpr2, implicit $vgpr7_vgpr8_vgpr9 518 ; GFX908-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr8, implicit $exec, implicit $vgpr7_vgpr8_vgpr9 519 ; GFX908-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr9, implicit $exec, implicit killed $vgpr7_vgpr8_vgpr9, implicit $exec 520 ; GFX90A-LABEL: name: copy_v96_unaligned_to_v96 521 ; GFX90A: liveins: $vgpr7_vgpr8_vgpr9 522 ; GFX90A-NEXT: {{ $}} 523 ; GFX90A-NEXT: $vgpr0 = V_MOV_B32_e32 $vgpr7, implicit $exec, implicit-def $vgpr0_vgpr1_vgpr2, implicit $vgpr7_vgpr8_vgpr9 524 ; GFX90A-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr8, implicit $exec, implicit $vgpr7_vgpr8_vgpr9 525 ; GFX90A-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr9, implicit $exec, implicit killed $vgpr7_vgpr8_vgpr9, implicit $exec 526 ; GFX940-LABEL: name: copy_v96_unaligned_to_v96 527 ; GFX940: liveins: $vgpr7_vgpr8_vgpr9 528 ; GFX940-NEXT: {{ $}} 529 ; GFX940-NEXT: $vgpr0 = V_MOV_B32_e32 $vgpr7, implicit $exec, implicit-def $vgpr0_vgpr1_vgpr2, implicit $vgpr7_vgpr8_vgpr9 530 ; GFX940-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr8, implicit $exec, implicit $vgpr7_vgpr8_vgpr9 531 ; GFX940-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr9, implicit $exec, implicit killed $vgpr7_vgpr8_vgpr9, implicit $exec 532 ; GFX10-LABEL: name: copy_v96_unaligned_to_v96 533 ; GFX10: liveins: $vgpr7_vgpr8_vgpr9 534 ; GFX10-NEXT: {{ $}} 535 ; GFX10-NEXT: $vgpr0 = V_MOV_B32_e32 $vgpr7, implicit $exec, implicit-def $vgpr0_vgpr1_vgpr2, implicit $vgpr7_vgpr8_vgpr9 536 ; GFX10-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr8, implicit $exec, implicit $vgpr7_vgpr8_vgpr9 537 ; GFX10-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr9, implicit $exec, implicit killed $vgpr7_vgpr8_vgpr9, implicit $exec 538 $vgpr0_vgpr1_vgpr2 = COPY killed $vgpr7_vgpr8_vgpr9, implicit $exec 539... 540 541--- 542name: copy_s96_to_v96 543tracksRegLiveness: true 544body: | 545 bb.0: 546 liveins: $sgpr0_sgpr1_sgpr2 547 ; GFX908-LABEL: name: copy_s96_to_v96 548 ; GFX908: liveins: $sgpr0_sgpr1_sgpr2 549 ; GFX908-NEXT: {{ $}} 550 ; GFX908-NEXT: $vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit-def $vgpr0_vgpr1_vgpr2, implicit $sgpr0_sgpr1_sgpr2 551 ; GFX908-NEXT: $vgpr1 = V_MOV_B32_e32 $sgpr1, implicit $exec, implicit $sgpr0_sgpr1_sgpr2 552 ; GFX908-NEXT: $vgpr2 = V_MOV_B32_e32 $sgpr2, implicit $exec, implicit killed $sgpr0_sgpr1_sgpr2, implicit $exec 553 ; GFX90A-LABEL: name: copy_s96_to_v96 554 ; GFX90A: liveins: $sgpr0_sgpr1_sgpr2 555 ; GFX90A-NEXT: {{ $}} 556 ; GFX90A-NEXT: $vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit-def $vgpr0_vgpr1_vgpr2, implicit $sgpr0_sgpr1_sgpr2 557 ; GFX90A-NEXT: $vgpr1 = V_MOV_B32_e32 $sgpr1, implicit $exec, implicit $sgpr0_sgpr1_sgpr2 558 ; GFX90A-NEXT: $vgpr2 = V_MOV_B32_e32 $sgpr2, implicit $exec, implicit killed $sgpr0_sgpr1_sgpr2, implicit $exec 559 ; GFX940-LABEL: name: copy_s96_to_v96 560 ; GFX940: liveins: $sgpr0_sgpr1_sgpr2 561 ; GFX940-NEXT: {{ $}} 562 ; GFX940-NEXT: $vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit-def $vgpr0_vgpr1_vgpr2, implicit $sgpr0_sgpr1_sgpr2 563 ; GFX940-NEXT: $vgpr1 = V_MOV_B32_e32 $sgpr1, implicit $exec, implicit $sgpr0_sgpr1_sgpr2 564 ; GFX940-NEXT: $vgpr2 = V_MOV_B32_e32 $sgpr2, implicit $exec, implicit killed $sgpr0_sgpr1_sgpr2, implicit $exec 565 ; GFX10-LABEL: name: copy_s96_to_v96 566 ; GFX10: liveins: $sgpr0_sgpr1_sgpr2 567 ; GFX10-NEXT: {{ $}} 568 ; GFX10-NEXT: $vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit-def $vgpr0_vgpr1_vgpr2, implicit $sgpr0_sgpr1_sgpr2 569 ; GFX10-NEXT: $vgpr1 = V_MOV_B32_e32 $sgpr1, implicit $exec, implicit $sgpr0_sgpr1_sgpr2 570 ; GFX10-NEXT: $vgpr2 = V_MOV_B32_e32 $sgpr2, implicit $exec, implicit killed $sgpr0_sgpr1_sgpr2, implicit $exec 571 $vgpr0_vgpr1_vgpr2 = COPY killed $sgpr0_sgpr1_sgpr2, implicit $exec 572... 573 574--- 575name: copy_s96_to_v96_unaligned 576tracksRegLiveness: true 577body: | 578 bb.0: 579 liveins: $sgpr0_sgpr1_sgpr2 580 ; GFX908-LABEL: name: copy_s96_to_v96_unaligned 581 ; GFX908: liveins: $sgpr0_sgpr1_sgpr2 582 ; GFX908-NEXT: {{ $}} 583 ; GFX908-NEXT: $vgpr3 = V_MOV_B32_e32 $sgpr2, implicit $exec, implicit-def $vgpr1_vgpr2_vgpr3, implicit $sgpr0_sgpr1_sgpr2 584 ; GFX908-NEXT: $vgpr2 = V_MOV_B32_e32 $sgpr1, implicit $exec, implicit $sgpr0_sgpr1_sgpr2 585 ; GFX908-NEXT: $vgpr1 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit killed $sgpr0_sgpr1_sgpr2, implicit $exec 586 ; GFX90A-LABEL: name: copy_s96_to_v96_unaligned 587 ; GFX90A: liveins: $sgpr0_sgpr1_sgpr2 588 ; GFX90A-NEXT: {{ $}} 589 ; GFX90A-NEXT: $vgpr3 = V_MOV_B32_e32 $sgpr2, implicit $exec, implicit-def $vgpr1_vgpr2_vgpr3, implicit $sgpr0_sgpr1_sgpr2 590 ; GFX90A-NEXT: $vgpr2 = V_MOV_B32_e32 $sgpr1, implicit $exec, implicit $sgpr0_sgpr1_sgpr2 591 ; GFX90A-NEXT: $vgpr1 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit killed $sgpr0_sgpr1_sgpr2, implicit $exec 592 ; GFX940-LABEL: name: copy_s96_to_v96_unaligned 593 ; GFX940: liveins: $sgpr0_sgpr1_sgpr2 594 ; GFX940-NEXT: {{ $}} 595 ; GFX940-NEXT: $vgpr3 = V_MOV_B32_e32 $sgpr2, implicit $exec, implicit-def $vgpr1_vgpr2_vgpr3, implicit $sgpr0_sgpr1_sgpr2 596 ; GFX940-NEXT: $vgpr2 = V_MOV_B32_e32 $sgpr1, implicit $exec, implicit $sgpr0_sgpr1_sgpr2 597 ; GFX940-NEXT: $vgpr1 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit killed $sgpr0_sgpr1_sgpr2, implicit $exec 598 ; GFX10-LABEL: name: copy_s96_to_v96_unaligned 599 ; GFX10: liveins: $sgpr0_sgpr1_sgpr2 600 ; GFX10-NEXT: {{ $}} 601 ; GFX10-NEXT: $vgpr3 = V_MOV_B32_e32 $sgpr2, implicit $exec, implicit-def $vgpr1_vgpr2_vgpr3, implicit $sgpr0_sgpr1_sgpr2 602 ; GFX10-NEXT: $vgpr2 = V_MOV_B32_e32 $sgpr1, implicit $exec, implicit $sgpr0_sgpr1_sgpr2 603 ; GFX10-NEXT: $vgpr1 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit killed $sgpr0_sgpr1_sgpr2, implicit $exec 604 $vgpr1_vgpr2_vgpr3 = COPY killed $sgpr0_sgpr1_sgpr2, implicit $exec 605... 606