1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=fiji -run-pass=si-fold-operands -o - %s | FileCheck -check-prefix=GFX8 %s 3# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx906 -run-pass=si-fold-operands -o - %s | FileCheck -check-prefix=GFX9 %s 4# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1030 -run-pass=si-fold-operands -o - %s | FileCheck -check-prefix=GFX10 %s 5 6# Test we recognize all forms of and with mask as clearing the high bits. 7--- 8name: v_cvt_f16_f32_altmask 9tracksRegLiveness: true 10body: | 11 bb.0: 12 liveins: $vgpr0 13 ; GFX8-LABEL: name: v_cvt_f16_f32_altmask 14 ; GFX8: liveins: $vgpr0 15 ; GFX8-NEXT: {{ $}} 16 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 17 ; GFX8-NEXT: %op:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, killed [[COPY]], 0, 0, implicit $mode, implicit $exec 18 ; GFX8-NEXT: %smask:sreg_32 = S_MOV_B32 65535 19 ; GFX8-NEXT: %vmask:vgpr_32 = V_MOV_B32_e32 65535, implicit $exec 20 ; GFX8-NEXT: $vgpr0 = COPY %op 21 ; GFX8-NEXT: $vgpr1 = COPY %op 22 ; GFX8-NEXT: $vgpr2 = COPY %op 23 ; GFX9-LABEL: name: v_cvt_f16_f32_altmask 24 ; GFX9: liveins: $vgpr0 25 ; GFX9-NEXT: {{ $}} 26 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 27 ; GFX9-NEXT: %op:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, killed [[COPY]], 0, 0, implicit $mode, implicit $exec 28 ; GFX9-NEXT: %smask:sreg_32 = S_MOV_B32 65535 29 ; GFX9-NEXT: %vmask:vgpr_32 = V_MOV_B32_e32 65535, implicit $exec 30 ; GFX9-NEXT: $vgpr0 = COPY %op 31 ; GFX9-NEXT: $vgpr1 = COPY %op 32 ; GFX9-NEXT: $vgpr2 = COPY %op 33 ; GFX10-LABEL: name: v_cvt_f16_f32_altmask 34 ; GFX10: liveins: $vgpr0 35 ; GFX10-NEXT: {{ $}} 36 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 37 ; GFX10-NEXT: %op:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, killed [[COPY]], 0, 0, implicit $mode, implicit $exec 38 ; GFX10-NEXT: %and0:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec 39 ; GFX10-NEXT: %and1:vgpr_32 = V_AND_B32_e64 65535, %op, implicit $exec 40 ; GFX10-NEXT: %and2:vgpr_32 = V_AND_B32_e64 65535, %op, implicit $exec 41 ; GFX10-NEXT: $vgpr0 = COPY %and0 42 ; GFX10-NEXT: $vgpr1 = COPY %and1 43 ; GFX10-NEXT: $vgpr2 = COPY %and2 44 %0:vgpr_32 = COPY $vgpr0 45 %op:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, killed %0, 0, 0, implicit $mode, implicit $exec 46 %and0:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec 47 %smask:sreg_32 = S_MOV_B32 65535 48 %and1:vgpr_32 = V_AND_B32_e64 %smask, %op, implicit $exec 49 %vmask:vgpr_32 = V_MOV_B32_e32 65535, implicit $exec 50 %and2:vgpr_32 = V_AND_B32_e64 %vmask, %op, implicit $exec 51 $vgpr0 = COPY %and0 52 $vgpr1 = COPY %and1 53 $vgpr2 = COPY %and2 54 55... 56 57# Test we do not assume the high bits are zero 58--- 59name: wrong_mask_value 60tracksRegLiveness: true 61body: | 62 bb.0: 63 liveins: $vgpr0 64 ; GFX8-LABEL: name: wrong_mask_value 65 ; GFX8: liveins: $vgpr0 66 ; GFX8-NEXT: {{ $}} 67 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 68 ; GFX8-NEXT: %op:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, killed [[COPY]], 0, 0, implicit $mode, implicit $exec 69 ; GFX8-NEXT: %mask:sreg_32 = S_MOV_B32 65534 70 ; GFX8-NEXT: %and:vgpr_32 = V_AND_B32_e64 %mask, %op, implicit $exec 71 ; GFX8-NEXT: $vgpr0 = COPY %and 72 ; GFX9-LABEL: name: wrong_mask_value 73 ; GFX9: liveins: $vgpr0 74 ; GFX9-NEXT: {{ $}} 75 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 76 ; GFX9-NEXT: %op:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, killed [[COPY]], 0, 0, implicit $mode, implicit $exec 77 ; GFX9-NEXT: %mask:sreg_32 = S_MOV_B32 65534 78 ; GFX9-NEXT: %and:vgpr_32 = V_AND_B32_e64 %mask, %op, implicit $exec 79 ; GFX9-NEXT: $vgpr0 = COPY %and 80 ; GFX10-LABEL: name: wrong_mask_value 81 ; GFX10: liveins: $vgpr0 82 ; GFX10-NEXT: {{ $}} 83 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 84 ; GFX10-NEXT: %op:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, killed [[COPY]], 0, 0, implicit $mode, implicit $exec 85 ; GFX10-NEXT: %and:vgpr_32 = V_AND_B32_e64 65534, %op, implicit $exec 86 ; GFX10-NEXT: $vgpr0 = COPY %and 87 %0:vgpr_32 = COPY $vgpr0 88 %op:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, killed %0, 0, 0, implicit $mode, implicit $exec 89 %mask:sreg_32 = S_MOV_B32 65534 90 %and:vgpr_32 = V_AND_B32_e64 %mask, %op, implicit $exec 91 $vgpr0 = COPY %and 92 93... 94 95--- 96name: v_cvt_f16_f32 97tracksRegLiveness: true 98body: | 99 bb.0: 100 liveins: $vgpr0 101 ; GFX8-LABEL: name: v_cvt_f16_f32 102 ; GFX8: liveins: $vgpr0 103 ; GFX8-NEXT: {{ $}} 104 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 105 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec 106 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_CVT_F16_F32_e32 [[COPY]], implicit $mode, implicit $exec 107 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3 108 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1 109 ; GFX9-LABEL: name: v_cvt_f16_f32 110 ; GFX9: liveins: $vgpr0 111 ; GFX9-NEXT: {{ $}} 112 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 113 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec 114 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_CVT_F16_F32_e32 [[COPY]], implicit $mode, implicit $exec 115 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3 116 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1 117 ; GFX10-LABEL: name: v_cvt_f16_f32 118 ; GFX10: liveins: $vgpr0 119 ; GFX10-NEXT: {{ $}} 120 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 121 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec 122 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_CVT_F16_F32_e32 [[COPY]], implicit $mode, implicit $exec 123 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 124 ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec 125 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3 126 ; GFX10-NEXT: $vgpr1 = COPY %and_vop1 127 %0:vgpr_32 = COPY $vgpr0 128 %op_vop3:vgpr_32 = nofpexcept V_CVT_F16_F32_e64 0, %0, 0, 0, implicit $mode, implicit $exec 129 %op_vop1:vgpr_32 = nofpexcept V_CVT_F16_F32_e32 %0, implicit $mode, implicit $exec 130 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 131 %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec 132 $vgpr0 = COPY %and_vop3 133 $vgpr1 = COPY %and_vop1 134 135... 136 137--- 138name: v_cvt_f16_u16 139tracksRegLiveness: true 140body: | 141 bb.0: 142 liveins: $vgpr0 143 ; GFX8-LABEL: name: v_cvt_f16_u16 144 ; GFX8: liveins: $vgpr0 145 ; GFX8-NEXT: {{ $}} 146 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 147 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_CVT_F16_U16_e64 [[COPY]], 0, 0, implicit $mode, implicit $exec 148 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_CVT_F16_U16_e32 [[COPY]], implicit $mode, implicit $exec 149 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3 150 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1 151 ; GFX9-LABEL: name: v_cvt_f16_u16 152 ; GFX9: liveins: $vgpr0 153 ; GFX9-NEXT: {{ $}} 154 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 155 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_CVT_F16_U16_e64 [[COPY]], 0, 0, implicit $mode, implicit $exec 156 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_CVT_F16_U16_e32 [[COPY]], implicit $mode, implicit $exec 157 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3 158 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1 159 ; GFX10-LABEL: name: v_cvt_f16_u16 160 ; GFX10: liveins: $vgpr0 161 ; GFX10-NEXT: {{ $}} 162 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 163 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_CVT_F16_U16_e64 [[COPY]], 0, 0, implicit $mode, implicit $exec 164 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_CVT_F16_U16_e32 [[COPY]], implicit $mode, implicit $exec 165 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 166 ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec 167 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3 168 ; GFX10-NEXT: $vgpr1 = COPY %and_vop1 169 %0:vgpr_32 = COPY $vgpr0 170 %op_vop3:vgpr_32 = nofpexcept V_CVT_F16_U16_e64 %0, 0, 0, implicit $mode, implicit $exec 171 %op_vop1:vgpr_32 = nofpexcept V_CVT_F16_U16_e32 %0, implicit $mode, implicit $exec 172 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 173 %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec 174 $vgpr0 = COPY %and_vop3 175 $vgpr1 = COPY %and_vop1 176 177... 178 179--- 180name: v_cvt_f16_i16 181tracksRegLiveness: true 182body: | 183 bb.0: 184 liveins: $vgpr0 185 ; GFX8-LABEL: name: v_cvt_f16_i16 186 ; GFX8: liveins: $vgpr0 187 ; GFX8-NEXT: {{ $}} 188 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 189 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_CVT_F16_I16_e64 [[COPY]], 0, 0, implicit $mode, implicit $exec 190 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_CVT_F16_I16_e32 [[COPY]], implicit $mode, implicit $exec 191 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3 192 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1 193 ; GFX9-LABEL: name: v_cvt_f16_i16 194 ; GFX9: liveins: $vgpr0 195 ; GFX9-NEXT: {{ $}} 196 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 197 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_CVT_F16_I16_e64 [[COPY]], 0, 0, implicit $mode, implicit $exec 198 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_CVT_F16_I16_e32 [[COPY]], implicit $mode, implicit $exec 199 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3 200 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1 201 ; GFX10-LABEL: name: v_cvt_f16_i16 202 ; GFX10: liveins: $vgpr0 203 ; GFX10-NEXT: {{ $}} 204 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 205 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_CVT_F16_I16_e64 [[COPY]], 0, 0, implicit $mode, implicit $exec 206 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_CVT_F16_I16_e32 [[COPY]], implicit $mode, implicit $exec 207 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 208 ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec 209 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3 210 ; GFX10-NEXT: $vgpr1 = COPY %and_vop1 211 %0:vgpr_32 = COPY $vgpr0 212 %op_vop3:vgpr_32 = nofpexcept V_CVT_F16_I16_e64 %0, 0, 0, implicit $mode, implicit $exec 213 %op_vop1:vgpr_32 = nofpexcept V_CVT_F16_I16_e32 %0, implicit $mode, implicit $exec 214 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 215 %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec 216 $vgpr0 = COPY %and_vop3 217 $vgpr1 = COPY %and_vop1 218 219... 220 221--- 222name: v_rcp_f16 223tracksRegLiveness: true 224body: | 225 bb.0: 226 liveins: $vgpr0 227 ; GFX8-LABEL: name: v_rcp_f16 228 ; GFX8: liveins: $vgpr0 229 ; GFX8-NEXT: {{ $}} 230 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 231 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_RCP_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec 232 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_RCP_F16_e32 [[COPY]], implicit $mode, implicit $exec 233 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3 234 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1 235 ; GFX9-LABEL: name: v_rcp_f16 236 ; GFX9: liveins: $vgpr0 237 ; GFX9-NEXT: {{ $}} 238 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 239 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_RCP_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec 240 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_RCP_F16_e32 [[COPY]], implicit $mode, implicit $exec 241 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3 242 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1 243 ; GFX10-LABEL: name: v_rcp_f16 244 ; GFX10: liveins: $vgpr0 245 ; GFX10-NEXT: {{ $}} 246 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 247 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_RCP_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec 248 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_RCP_F16_e32 [[COPY]], implicit $mode, implicit $exec 249 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 250 ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec 251 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3 252 ; GFX10-NEXT: $vgpr1 = COPY %and_vop1 253 %0:vgpr_32 = COPY $vgpr0 254 %op_vop3:vgpr_32 = nofpexcept V_RCP_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec 255 %op_vop1:vgpr_32 = nofpexcept V_RCP_F16_e32 %0, implicit $mode, implicit $exec 256 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 257 %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec 258 $vgpr0 = COPY %and_vop3 259 $vgpr1 = COPY %and_vop1 260 261... 262--- 263name: v_rsq_f16 264tracksRegLiveness: true 265body: | 266 bb.0: 267 liveins: $vgpr0 268 ; GFX8-LABEL: name: v_rsq_f16 269 ; GFX8: liveins: $vgpr0 270 ; GFX8-NEXT: {{ $}} 271 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 272 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_RSQ_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec 273 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_RSQ_F16_e32 [[COPY]], implicit $mode, implicit $exec 274 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3 275 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1 276 ; GFX9-LABEL: name: v_rsq_f16 277 ; GFX9: liveins: $vgpr0 278 ; GFX9-NEXT: {{ $}} 279 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 280 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_RSQ_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec 281 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_RSQ_F16_e32 [[COPY]], implicit $mode, implicit $exec 282 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3 283 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1 284 ; GFX10-LABEL: name: v_rsq_f16 285 ; GFX10: liveins: $vgpr0 286 ; GFX10-NEXT: {{ $}} 287 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 288 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_RSQ_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec 289 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_RSQ_F16_e32 [[COPY]], implicit $mode, implicit $exec 290 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 291 ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec 292 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3 293 ; GFX10-NEXT: $vgpr1 = COPY %and_vop1 294 %0:vgpr_32 = COPY $vgpr0 295 %op_vop3:vgpr_32 = nofpexcept V_RSQ_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec 296 %op_vop1:vgpr_32 = nofpexcept V_RSQ_F16_e32 %0, implicit $mode, implicit $exec 297 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 298 %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec 299 $vgpr0 = COPY %and_vop3 300 $vgpr1 = COPY %and_vop1 301 302... 303--- 304name: v_sqrt_f16 305tracksRegLiveness: true 306body: | 307 bb.0: 308 liveins: $vgpr0 309 ; GFX8-LABEL: name: v_sqrt_f16 310 ; GFX8: liveins: $vgpr0 311 ; GFX8-NEXT: {{ $}} 312 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 313 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_SQRT_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec 314 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_SQRT_F16_e32 [[COPY]], implicit $mode, implicit $exec 315 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3 316 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1 317 ; GFX9-LABEL: name: v_sqrt_f16 318 ; GFX9: liveins: $vgpr0 319 ; GFX9-NEXT: {{ $}} 320 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 321 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_SQRT_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec 322 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_SQRT_F16_e32 [[COPY]], implicit $mode, implicit $exec 323 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3 324 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1 325 ; GFX10-LABEL: name: v_sqrt_f16 326 ; GFX10: liveins: $vgpr0 327 ; GFX10-NEXT: {{ $}} 328 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 329 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_SQRT_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec 330 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_SQRT_F16_e32 [[COPY]], implicit $mode, implicit $exec 331 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 332 ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec 333 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3 334 ; GFX10-NEXT: $vgpr1 = COPY %and_vop1 335 %0:vgpr_32 = COPY $vgpr0 336 %op_vop3:vgpr_32 = nofpexcept V_SQRT_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec 337 %op_vop1:vgpr_32 = nofpexcept V_SQRT_F16_e32 %0, implicit $mode, implicit $exec 338 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 339 %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec 340 $vgpr0 = COPY %and_vop3 341 $vgpr1 = COPY %and_vop1 342 343... 344 345--- 346name: v_log_f16 347tracksRegLiveness: true 348body: | 349 bb.0: 350 liveins: $vgpr0 351 ; GFX8-LABEL: name: v_log_f16 352 ; GFX8: liveins: $vgpr0 353 ; GFX8-NEXT: {{ $}} 354 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 355 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_LOG_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec 356 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_LOG_F16_e32 [[COPY]], implicit $mode, implicit $exec 357 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3 358 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1 359 ; GFX9-LABEL: name: v_log_f16 360 ; GFX9: liveins: $vgpr0 361 ; GFX9-NEXT: {{ $}} 362 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 363 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_LOG_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec 364 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_LOG_F16_e32 [[COPY]], implicit $mode, implicit $exec 365 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3 366 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1 367 ; GFX10-LABEL: name: v_log_f16 368 ; GFX10: liveins: $vgpr0 369 ; GFX10-NEXT: {{ $}} 370 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 371 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_LOG_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec 372 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_LOG_F16_e32 [[COPY]], implicit $mode, implicit $exec 373 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 374 ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec 375 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3 376 ; GFX10-NEXT: $vgpr1 = COPY %and_vop1 377 %0:vgpr_32 = COPY $vgpr0 378 %op_vop3:vgpr_32 = nofpexcept V_LOG_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec 379 %op_vop1:vgpr_32 = nofpexcept V_LOG_F16_e32 %0, implicit $mode, implicit $exec 380 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 381 %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec 382 $vgpr0 = COPY %and_vop3 383 $vgpr1 = COPY %and_vop1 384 385... 386 387--- 388name: v_exp_f16 389tracksRegLiveness: true 390body: | 391 bb.0: 392 liveins: $vgpr0 393 ; GFX8-LABEL: name: v_exp_f16 394 ; GFX8: liveins: $vgpr0 395 ; GFX8-NEXT: {{ $}} 396 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 397 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_EXP_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec 398 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_EXP_F16_e32 [[COPY]], implicit $mode, implicit $exec 399 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3 400 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1 401 ; GFX9-LABEL: name: v_exp_f16 402 ; GFX9: liveins: $vgpr0 403 ; GFX9-NEXT: {{ $}} 404 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 405 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_EXP_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec 406 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_EXP_F16_e32 [[COPY]], implicit $mode, implicit $exec 407 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3 408 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1 409 ; GFX10-LABEL: name: v_exp_f16 410 ; GFX10: liveins: $vgpr0 411 ; GFX10-NEXT: {{ $}} 412 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 413 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_EXP_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec 414 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_EXP_F16_e32 [[COPY]], implicit $mode, implicit $exec 415 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 416 ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec 417 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3 418 ; GFX10-NEXT: $vgpr1 = COPY %and_vop1 419 %0:vgpr_32 = COPY $vgpr0 420 %op_vop3:vgpr_32 = nofpexcept V_EXP_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec 421 %op_vop1:vgpr_32 = nofpexcept V_EXP_F16_e32 %0, implicit $mode, implicit $exec 422 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 423 %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec 424 $vgpr0 = COPY %and_vop3 425 $vgpr1 = COPY %and_vop1 426 427... 428 429--- 430name: v_sin_f16 431tracksRegLiveness: true 432body: | 433 bb.0: 434 liveins: $vgpr0 435 ; GFX8-LABEL: name: v_sin_f16 436 ; GFX8: liveins: $vgpr0 437 ; GFX8-NEXT: {{ $}} 438 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 439 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_SIN_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec 440 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_SIN_F16_e32 [[COPY]], implicit $mode, implicit $exec 441 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3 442 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1 443 ; GFX9-LABEL: name: v_sin_f16 444 ; GFX9: liveins: $vgpr0 445 ; GFX9-NEXT: {{ $}} 446 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 447 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_SIN_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec 448 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_SIN_F16_e32 [[COPY]], implicit $mode, implicit $exec 449 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3 450 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1 451 ; GFX10-LABEL: name: v_sin_f16 452 ; GFX10: liveins: $vgpr0 453 ; GFX10-NEXT: {{ $}} 454 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 455 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_SIN_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec 456 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_SIN_F16_e32 [[COPY]], implicit $mode, implicit $exec 457 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 458 ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec 459 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3 460 ; GFX10-NEXT: $vgpr1 = COPY %and_vop1 461 %0:vgpr_32 = COPY $vgpr0 462 %op_vop3:vgpr_32 = nofpexcept V_SIN_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec 463 %op_vop1:vgpr_32 = nofpexcept V_SIN_F16_e32 %0, implicit $mode, implicit $exec 464 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 465 %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec 466 $vgpr0 = COPY %and_vop3 467 $vgpr1 = COPY %and_vop1 468 469... 470 471--- 472name: v_cos_f16 473tracksRegLiveness: true 474body: | 475 bb.0: 476 liveins: $vgpr0 477 ; GFX8-LABEL: name: v_cos_f16 478 ; GFX8: liveins: $vgpr0 479 ; GFX8-NEXT: {{ $}} 480 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 481 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_COS_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec 482 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_COS_F16_e32 [[COPY]], implicit $mode, implicit $exec 483 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3 484 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1 485 ; GFX9-LABEL: name: v_cos_f16 486 ; GFX9: liveins: $vgpr0 487 ; GFX9-NEXT: {{ $}} 488 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 489 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_COS_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec 490 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_COS_F16_e32 [[COPY]], implicit $mode, implicit $exec 491 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3 492 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1 493 ; GFX10-LABEL: name: v_cos_f16 494 ; GFX10: liveins: $vgpr0 495 ; GFX10-NEXT: {{ $}} 496 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 497 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_COS_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec 498 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_COS_F16_e32 [[COPY]], implicit $mode, implicit $exec 499 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 500 ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec 501 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3 502 ; GFX10-NEXT: $vgpr1 = COPY %and_vop1 503 %0:vgpr_32 = COPY $vgpr0 504 %op_vop3:vgpr_32 = nofpexcept V_COS_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec 505 %op_vop1:vgpr_32 = nofpexcept V_COS_F16_e32 %0, implicit $mode, implicit $exec 506 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 507 %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec 508 $vgpr0 = COPY %and_vop3 509 $vgpr1 = COPY %and_vop1 510 511... 512 513--- 514name: v_floor_f16 515tracksRegLiveness: true 516body: | 517 bb.0: 518 liveins: $vgpr0 519 ; GFX8-LABEL: name: v_floor_f16 520 ; GFX8: liveins: $vgpr0 521 ; GFX8-NEXT: {{ $}} 522 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 523 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_FLOOR_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec 524 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_FLOOR_F16_e32 [[COPY]], implicit $mode, implicit $exec 525 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3 526 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1 527 ; GFX9-LABEL: name: v_floor_f16 528 ; GFX9: liveins: $vgpr0 529 ; GFX9-NEXT: {{ $}} 530 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 531 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_FLOOR_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec 532 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_FLOOR_F16_e32 [[COPY]], implicit $mode, implicit $exec 533 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3 534 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1 535 ; GFX10-LABEL: name: v_floor_f16 536 ; GFX10: liveins: $vgpr0 537 ; GFX10-NEXT: {{ $}} 538 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 539 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_FLOOR_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec 540 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_FLOOR_F16_e32 [[COPY]], implicit $mode, implicit $exec 541 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 542 ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec 543 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3 544 ; GFX10-NEXT: $vgpr1 = COPY %and_vop1 545 %0:vgpr_32 = COPY $vgpr0 546 %op_vop3:vgpr_32 = nofpexcept V_FLOOR_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec 547 %op_vop1:vgpr_32 = nofpexcept V_FLOOR_F16_e32 %0, implicit $mode, implicit $exec 548 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 549 %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec 550 $vgpr0 = COPY %and_vop3 551 $vgpr1 = COPY %and_vop1 552 553... 554 555--- 556name: v_ceil_f16 557tracksRegLiveness: true 558body: | 559 bb.0: 560 liveins: $vgpr0 561 ; GFX8-LABEL: name: v_ceil_f16 562 ; GFX8: liveins: $vgpr0 563 ; GFX8-NEXT: {{ $}} 564 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 565 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_CEIL_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec 566 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_CEIL_F16_e32 [[COPY]], implicit $mode, implicit $exec 567 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3 568 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1 569 ; GFX9-LABEL: name: v_ceil_f16 570 ; GFX9: liveins: $vgpr0 571 ; GFX9-NEXT: {{ $}} 572 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 573 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_CEIL_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec 574 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_CEIL_F16_e32 [[COPY]], implicit $mode, implicit $exec 575 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3 576 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1 577 ; GFX10-LABEL: name: v_ceil_f16 578 ; GFX10: liveins: $vgpr0 579 ; GFX10-NEXT: {{ $}} 580 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 581 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_CEIL_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec 582 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_CEIL_F16_e32 [[COPY]], implicit $mode, implicit $exec 583 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 584 ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec 585 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3 586 ; GFX10-NEXT: $vgpr1 = COPY %and_vop1 587 %0:vgpr_32 = COPY $vgpr0 588 %op_vop3:vgpr_32 = nofpexcept V_CEIL_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec 589 %op_vop1:vgpr_32 = nofpexcept V_CEIL_F16_e32 %0, implicit $mode, implicit $exec 590 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 591 %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec 592 $vgpr0 = COPY %and_vop3 593 $vgpr1 = COPY %and_vop1 594 595... 596 597--- 598name: v_trunc_f16 599tracksRegLiveness: true 600body: | 601 bb.0: 602 liveins: $vgpr0 603 ; GFX8-LABEL: name: v_trunc_f16 604 ; GFX8: liveins: $vgpr0 605 ; GFX8-NEXT: {{ $}} 606 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 607 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_TRUNC_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec 608 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_TRUNC_F16_e32 [[COPY]], implicit $mode, implicit $exec 609 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3 610 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1 611 ; GFX9-LABEL: name: v_trunc_f16 612 ; GFX9: liveins: $vgpr0 613 ; GFX9-NEXT: {{ $}} 614 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 615 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_TRUNC_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec 616 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_TRUNC_F16_e32 [[COPY]], implicit $mode, implicit $exec 617 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3 618 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1 619 ; GFX10-LABEL: name: v_trunc_f16 620 ; GFX10: liveins: $vgpr0 621 ; GFX10-NEXT: {{ $}} 622 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 623 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_TRUNC_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec 624 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_TRUNC_F16_e32 [[COPY]], implicit $mode, implicit $exec 625 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 626 ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec 627 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3 628 ; GFX10-NEXT: $vgpr1 = COPY %and_vop1 629 %0:vgpr_32 = COPY $vgpr0 630 %op_vop3:vgpr_32 = nofpexcept V_TRUNC_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec 631 %op_vop1:vgpr_32 = nofpexcept V_TRUNC_F16_e32 %0, implicit $mode, implicit $exec 632 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 633 %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec 634 $vgpr0 = COPY %and_vop3 635 $vgpr1 = COPY %and_vop1 636 637... 638 639--- 640name: v_rndne_f16 641tracksRegLiveness: true 642body: | 643 bb.0: 644 liveins: $vgpr0 645 ; GFX8-LABEL: name: v_rndne_f16 646 ; GFX8: liveins: $vgpr0 647 ; GFX8-NEXT: {{ $}} 648 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 649 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_RNDNE_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec 650 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_RNDNE_F16_e32 [[COPY]], implicit $mode, implicit $exec 651 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3 652 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1 653 ; GFX9-LABEL: name: v_rndne_f16 654 ; GFX9: liveins: $vgpr0 655 ; GFX9-NEXT: {{ $}} 656 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 657 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_RNDNE_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec 658 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_RNDNE_F16_e32 [[COPY]], implicit $mode, implicit $exec 659 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3 660 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1 661 ; GFX10-LABEL: name: v_rndne_f16 662 ; GFX10: liveins: $vgpr0 663 ; GFX10-NEXT: {{ $}} 664 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 665 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_RNDNE_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec 666 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_RNDNE_F16_e32 [[COPY]], implicit $mode, implicit $exec 667 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 668 ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec 669 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3 670 ; GFX10-NEXT: $vgpr1 = COPY %and_vop1 671 %0:vgpr_32 = COPY $vgpr0 672 %op_vop3:vgpr_32 = nofpexcept V_RNDNE_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec 673 %op_vop1:vgpr_32 = nofpexcept V_RNDNE_F16_e32 %0, implicit $mode, implicit $exec 674 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 675 %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec 676 $vgpr0 = COPY %and_vop3 677 $vgpr1 = COPY %and_vop1 678 679... 680 681--- 682name: v_fract_f16 683tracksRegLiveness: true 684body: | 685 bb.0: 686 liveins: $vgpr0 687 ; GFX8-LABEL: name: v_fract_f16 688 ; GFX8: liveins: $vgpr0 689 ; GFX8-NEXT: {{ $}} 690 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 691 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_FRACT_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec 692 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_FRACT_F16_e32 [[COPY]], implicit $mode, implicit $exec 693 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3 694 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1 695 ; GFX9-LABEL: name: v_fract_f16 696 ; GFX9: liveins: $vgpr0 697 ; GFX9-NEXT: {{ $}} 698 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 699 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_FRACT_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec 700 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_FRACT_F16_e32 [[COPY]], implicit $mode, implicit $exec 701 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3 702 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1 703 ; GFX10-LABEL: name: v_fract_f16 704 ; GFX10: liveins: $vgpr0 705 ; GFX10-NEXT: {{ $}} 706 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 707 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_FRACT_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec 708 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_FRACT_F16_e32 [[COPY]], implicit $mode, implicit $exec 709 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 710 ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec 711 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3 712 ; GFX10-NEXT: $vgpr1 = COPY %and_vop1 713 %0:vgpr_32 = COPY $vgpr0 714 %op_vop3:vgpr_32 = nofpexcept V_FRACT_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec 715 %op_vop1:vgpr_32 = nofpexcept V_FRACT_F16_e32 %0, implicit $mode, implicit $exec 716 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 717 %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec 718 $vgpr0 = COPY %and_vop3 719 $vgpr1 = COPY %and_vop1 720 721... 722 723--- 724name: v_frexp_mant_f16 725tracksRegLiveness: true 726body: | 727 bb.0: 728 liveins: $vgpr0 729 ; GFX8-LABEL: name: v_frexp_mant_f16 730 ; GFX8: liveins: $vgpr0 731 ; GFX8-NEXT: {{ $}} 732 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 733 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_FREXP_MANT_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec 734 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_FREXP_MANT_F16_e32 [[COPY]], implicit $mode, implicit $exec 735 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3 736 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1 737 ; GFX9-LABEL: name: v_frexp_mant_f16 738 ; GFX9: liveins: $vgpr0 739 ; GFX9-NEXT: {{ $}} 740 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 741 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_FREXP_MANT_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec 742 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_FREXP_MANT_F16_e32 [[COPY]], implicit $mode, implicit $exec 743 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3 744 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1 745 ; GFX10-LABEL: name: v_frexp_mant_f16 746 ; GFX10: liveins: $vgpr0 747 ; GFX10-NEXT: {{ $}} 748 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 749 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_FREXP_MANT_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec 750 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_FREXP_MANT_F16_e32 [[COPY]], implicit $mode, implicit $exec 751 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 752 ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec 753 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3 754 ; GFX10-NEXT: $vgpr1 = COPY %and_vop1 755 %0:vgpr_32 = COPY $vgpr0 756 %op_vop3:vgpr_32 = nofpexcept V_FREXP_MANT_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec 757 %op_vop1:vgpr_32 = nofpexcept V_FREXP_MANT_F16_e32 %0, implicit $mode, implicit $exec 758 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 759 %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec 760 $vgpr0 = COPY %and_vop3 761 $vgpr1 = COPY %and_vop1 762 763... 764 765--- 766name: v_frexp_exp_f16 767tracksRegLiveness: true 768body: | 769 bb.0: 770 liveins: $vgpr0 771 ; GFX8-LABEL: name: v_frexp_exp_f16 772 ; GFX8: liveins: $vgpr0 773 ; GFX8-NEXT: {{ $}} 774 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 775 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_FREXP_EXP_I16_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec 776 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_FREXP_EXP_I16_F16_e32 [[COPY]], implicit $mode, implicit $exec 777 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3 778 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1 779 ; GFX9-LABEL: name: v_frexp_exp_f16 780 ; GFX9: liveins: $vgpr0 781 ; GFX9-NEXT: {{ $}} 782 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 783 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_FREXP_EXP_I16_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec 784 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_FREXP_EXP_I16_F16_e32 [[COPY]], implicit $mode, implicit $exec 785 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3 786 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1 787 ; GFX10-LABEL: name: v_frexp_exp_f16 788 ; GFX10: liveins: $vgpr0 789 ; GFX10-NEXT: {{ $}} 790 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 791 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_FREXP_EXP_I16_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec 792 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_FREXP_EXP_I16_F16_e32 [[COPY]], implicit $mode, implicit $exec 793 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 794 ; GFX10-NEXT: %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec 795 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3 796 ; GFX10-NEXT: $vgpr1 = COPY %and_vop1 797 %0:vgpr_32 = COPY $vgpr0 798 %op_vop3:vgpr_32 = nofpexcept V_FREXP_EXP_I16_F16_e64 0, %0, 0, 0, implicit $mode, implicit $exec 799 %op_vop1:vgpr_32 = nofpexcept V_FREXP_EXP_I16_F16_e32 %0, implicit $mode, implicit $exec 800 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 801 %and_vop1:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec 802 $vgpr0 = COPY %and_vop3 803 $vgpr1 = COPY %and_vop1 804 805... 806 807--- 808name: v_ldexp_f16 809tracksRegLiveness: true 810body: | 811 bb.0: 812 liveins: $vgpr0, $vgpr1 813 ; GFX8-LABEL: name: v_ldexp_f16 814 ; GFX8: liveins: $vgpr0, $vgpr1 815 ; GFX8-NEXT: {{ $}} 816 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 817 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 818 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_LDEXP_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec 819 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_LDEXP_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 820 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3 821 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1 822 ; GFX9-LABEL: name: v_ldexp_f16 823 ; GFX9: liveins: $vgpr0, $vgpr1 824 ; GFX9-NEXT: {{ $}} 825 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 826 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 827 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_LDEXP_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec 828 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_LDEXP_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 829 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3 830 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1 831 ; GFX10-LABEL: name: v_ldexp_f16 832 ; GFX10: liveins: $vgpr0, $vgpr1 833 ; GFX10-NEXT: {{ $}} 834 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 835 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 836 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_LDEXP_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec 837 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_LDEXP_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 838 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 839 ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec 840 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3 841 ; GFX10-NEXT: $vgpr1 = COPY %and_vop2 842 %0:vgpr_32 = COPY $vgpr0 843 %1:vgpr_32 = COPY $vgpr1 844 %op_vop3:vgpr_32 = nofpexcept V_LDEXP_F16_e64 0, %0, 0, %1, 0, 0, implicit $mode, implicit $exec 845 %op_vop1:vgpr_32 = nofpexcept V_LDEXP_F16_e32 %0, %1, implicit $mode, implicit $exec 846 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 847 %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec 848 $vgpr0 = COPY %and_vop3 849 $vgpr1 = COPY %and_vop2 850 851... 852 853--- 854name: v_lshlrev_b16 855tracksRegLiveness: true 856body: | 857 bb.0: 858 liveins: $vgpr0, $vgpr1 859 ; GFX8-LABEL: name: v_lshlrev_b16 860 ; GFX8: liveins: $vgpr0, $vgpr1 861 ; GFX8-NEXT: {{ $}} 862 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 863 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 864 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_LSHLREV_B16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 865 ; GFX8-NEXT: %op_vop2:vgpr_32 = nofpexcept V_LSHLREV_B16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 866 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3 867 ; GFX8-NEXT: $vgpr1 = COPY %op_vop2 868 ; GFX9-LABEL: name: v_lshlrev_b16 869 ; GFX9: liveins: $vgpr0, $vgpr1 870 ; GFX9-NEXT: {{ $}} 871 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 872 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 873 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_LSHLREV_B16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 874 ; GFX9-NEXT: %op_vop2:vgpr_32 = nofpexcept V_LSHLREV_B16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 875 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3 876 ; GFX9-NEXT: $vgpr1 = COPY %op_vop2 877 ; GFX10-LABEL: name: v_lshlrev_b16 878 ; GFX10: liveins: $vgpr0, $vgpr1 879 ; GFX10-NEXT: {{ $}} 880 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 881 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 882 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_LSHLREV_B16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 883 ; GFX10-NEXT: %op_vop2:vgpr_32 = nofpexcept V_LSHLREV_B16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 884 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 885 ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec 886 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3 887 ; GFX10-NEXT: $vgpr1 = COPY %and_vop2 888 %0:vgpr_32 = COPY $vgpr0 889 %1:vgpr_32 = COPY $vgpr1 890 %op_vop3:vgpr_32 = nofpexcept V_LSHLREV_B16_e64 %0, %1, implicit $mode, implicit $exec 891 %op_vop2:vgpr_32 = nofpexcept V_LSHLREV_B16_e32 %0, %1, implicit $mode, implicit $exec 892 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 893 %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec 894 $vgpr0 = COPY %and_vop3 895 $vgpr1 = COPY %and_vop2 896 897... 898 899--- 900name: v_lshrrev_b16 901tracksRegLiveness: true 902body: | 903 bb.0: 904 liveins: $vgpr0, $vgpr1 905 ; GFX8-LABEL: name: v_lshrrev_b16 906 ; GFX8: liveins: $vgpr0, $vgpr1 907 ; GFX8-NEXT: {{ $}} 908 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 909 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 910 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_LSHRREV_B16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 911 ; GFX8-NEXT: %op_vop2:vgpr_32 = nofpexcept V_LSHRREV_B16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 912 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3 913 ; GFX8-NEXT: $vgpr1 = COPY %op_vop2 914 ; GFX9-LABEL: name: v_lshrrev_b16 915 ; GFX9: liveins: $vgpr0, $vgpr1 916 ; GFX9-NEXT: {{ $}} 917 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 918 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 919 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_LSHRREV_B16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 920 ; GFX9-NEXT: %op_vop2:vgpr_32 = nofpexcept V_LSHRREV_B16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 921 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3 922 ; GFX9-NEXT: $vgpr1 = COPY %op_vop2 923 ; GFX10-LABEL: name: v_lshrrev_b16 924 ; GFX10: liveins: $vgpr0, $vgpr1 925 ; GFX10-NEXT: {{ $}} 926 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 927 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 928 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_LSHRREV_B16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 929 ; GFX10-NEXT: %op_vop2:vgpr_32 = nofpexcept V_LSHRREV_B16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 930 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 931 ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec 932 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3 933 ; GFX10-NEXT: $vgpr1 = COPY %and_vop2 934 %0:vgpr_32 = COPY $vgpr0 935 %1:vgpr_32 = COPY $vgpr1 936 %op_vop3:vgpr_32 = nofpexcept V_LSHRREV_B16_e64 %0, %1, implicit $mode, implicit $exec 937 %op_vop2:vgpr_32 = nofpexcept V_LSHRREV_B16_e32 %0, %1, implicit $mode, implicit $exec 938 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 939 %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec 940 $vgpr0 = COPY %and_vop3 941 $vgpr1 = COPY %and_vop2 942 943... 944 945--- 946name: v_ashrrev_i16 947tracksRegLiveness: true 948body: | 949 bb.0: 950 liveins: $vgpr0, $vgpr1 951 ; GFX8-LABEL: name: v_ashrrev_i16 952 ; GFX8: liveins: $vgpr0, $vgpr1 953 ; GFX8-NEXT: {{ $}} 954 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 955 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 956 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ASHRREV_I16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 957 ; GFX8-NEXT: %op_vop2:vgpr_32 = nofpexcept V_ASHRREV_I16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 958 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3 959 ; GFX8-NEXT: $vgpr1 = COPY %op_vop2 960 ; GFX9-LABEL: name: v_ashrrev_i16 961 ; GFX9: liveins: $vgpr0, $vgpr1 962 ; GFX9-NEXT: {{ $}} 963 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 964 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 965 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ASHRREV_I16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 966 ; GFX9-NEXT: %op_vop2:vgpr_32 = nofpexcept V_ASHRREV_I16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 967 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3 968 ; GFX9-NEXT: $vgpr1 = COPY %op_vop2 969 ; GFX10-LABEL: name: v_ashrrev_i16 970 ; GFX10: liveins: $vgpr0, $vgpr1 971 ; GFX10-NEXT: {{ $}} 972 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 973 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 974 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ASHRREV_I16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 975 ; GFX10-NEXT: %op_vop2:vgpr_32 = nofpexcept V_ASHRREV_I16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 976 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 977 ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec 978 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3 979 ; GFX10-NEXT: $vgpr1 = COPY %and_vop2 980 %0:vgpr_32 = COPY $vgpr0 981 %1:vgpr_32 = COPY $vgpr1 982 %op_vop3:vgpr_32 = nofpexcept V_ASHRREV_I16_e64 %0, %1, implicit $mode, implicit $exec 983 %op_vop2:vgpr_32 = nofpexcept V_ASHRREV_I16_e32 %0, %1, implicit $mode, implicit $exec 984 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 985 %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec 986 $vgpr0 = COPY %and_vop3 987 $vgpr1 = COPY %and_vop2 988 989... 990 991--- 992name: v_add_u16 993tracksRegLiveness: true 994body: | 995 bb.0: 996 liveins: $vgpr0, $vgpr1 997 ; GFX8-LABEL: name: v_add_u16 998 ; GFX8: liveins: $vgpr0, $vgpr1 999 ; GFX8-NEXT: {{ $}} 1000 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1001 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1002 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_U16_e64 [[COPY]], [[COPY1]], 0, implicit $mode, implicit $exec 1003 ; GFX8-NEXT: %op_vop2:vgpr_32 = nofpexcept V_ADD_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 1004 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3 1005 ; GFX8-NEXT: $vgpr1 = COPY %op_vop2 1006 ; GFX9-LABEL: name: v_add_u16 1007 ; GFX9: liveins: $vgpr0, $vgpr1 1008 ; GFX9-NEXT: {{ $}} 1009 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1010 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1011 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_U16_e64 [[COPY]], [[COPY1]], 0, implicit $mode, implicit $exec 1012 ; GFX9-NEXT: %op_vop2:vgpr_32 = nofpexcept V_ADD_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 1013 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3 1014 ; GFX9-NEXT: $vgpr1 = COPY %op_vop2 1015 ; GFX10-LABEL: name: v_add_u16 1016 ; GFX10: liveins: $vgpr0, $vgpr1 1017 ; GFX10-NEXT: {{ $}} 1018 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1019 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1020 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_U16_e64 [[COPY]], [[COPY1]], 0, implicit $mode, implicit $exec 1021 ; GFX10-NEXT: %op_vop2:vgpr_32 = nofpexcept V_ADD_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 1022 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 1023 ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec 1024 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3 1025 ; GFX10-NEXT: $vgpr1 = COPY %and_vop2 1026 %0:vgpr_32 = COPY $vgpr0 1027 %1:vgpr_32 = COPY $vgpr1 1028 %op_vop3:vgpr_32 = nofpexcept V_ADD_U16_e64 %0, %1, 0, implicit $mode, implicit $exec 1029 %op_vop2:vgpr_32 = nofpexcept V_ADD_U16_e32 %0, %1, implicit $mode, implicit $exec 1030 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 1031 %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec 1032 $vgpr0 = COPY %and_vop3 1033 $vgpr1 = COPY %and_vop2 1034 1035... 1036 1037--- 1038name: v_sub_u16 1039tracksRegLiveness: true 1040body: | 1041 bb.0: 1042 liveins: $vgpr0, $vgpr1 1043 ; GFX8-LABEL: name: v_sub_u16 1044 ; GFX8: liveins: $vgpr0, $vgpr1 1045 ; GFX8-NEXT: {{ $}} 1046 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1047 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1048 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_SUB_U16_e64 [[COPY]], [[COPY1]], 0, implicit $mode, implicit $exec 1049 ; GFX8-NEXT: %op_vop2:vgpr_32 = nofpexcept V_SUB_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 1050 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3 1051 ; GFX8-NEXT: $vgpr1 = COPY %op_vop2 1052 ; GFX9-LABEL: name: v_sub_u16 1053 ; GFX9: liveins: $vgpr0, $vgpr1 1054 ; GFX9-NEXT: {{ $}} 1055 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1056 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1057 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_SUB_U16_e64 [[COPY]], [[COPY1]], 0, implicit $mode, implicit $exec 1058 ; GFX9-NEXT: %op_vop2:vgpr_32 = nofpexcept V_SUB_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 1059 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3 1060 ; GFX9-NEXT: $vgpr1 = COPY %op_vop2 1061 ; GFX10-LABEL: name: v_sub_u16 1062 ; GFX10: liveins: $vgpr0, $vgpr1 1063 ; GFX10-NEXT: {{ $}} 1064 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1065 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1066 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_SUB_U16_e64 [[COPY]], [[COPY1]], 0, implicit $mode, implicit $exec 1067 ; GFX10-NEXT: %op_vop2:vgpr_32 = nofpexcept V_SUB_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 1068 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 1069 ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec 1070 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3 1071 ; GFX10-NEXT: $vgpr1 = COPY %and_vop2 1072 %0:vgpr_32 = COPY $vgpr0 1073 %1:vgpr_32 = COPY $vgpr1 1074 %op_vop3:vgpr_32 = nofpexcept V_SUB_U16_e64 %0, %1, 0, implicit $mode, implicit $exec 1075 %op_vop2:vgpr_32 = nofpexcept V_SUB_U16_e32 %0, %1, implicit $mode, implicit $exec 1076 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 1077 %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec 1078 $vgpr0 = COPY %and_vop3 1079 $vgpr1 = COPY %and_vop2 1080 1081... 1082 1083--- 1084name: v_subrev_u16 1085tracksRegLiveness: true 1086body: | 1087 bb.0: 1088 liveins: $vgpr0, $vgpr1 1089 ; GFX8-LABEL: name: v_subrev_u16 1090 ; GFX8: liveins: $vgpr0, $vgpr1 1091 ; GFX8-NEXT: {{ $}} 1092 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1093 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1094 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_SUBREV_U16_e64 [[COPY]], [[COPY1]], 0, implicit $mode, implicit $exec 1095 ; GFX8-NEXT: %op_vop2:vgpr_32 = nofpexcept V_SUBREV_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 1096 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3 1097 ; GFX8-NEXT: $vgpr1 = COPY %op_vop2 1098 ; GFX9-LABEL: name: v_subrev_u16 1099 ; GFX9: liveins: $vgpr0, $vgpr1 1100 ; GFX9-NEXT: {{ $}} 1101 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1102 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1103 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_SUBREV_U16_e64 [[COPY]], [[COPY1]], 0, implicit $mode, implicit $exec 1104 ; GFX9-NEXT: %op_vop2:vgpr_32 = nofpexcept V_SUBREV_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 1105 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3 1106 ; GFX9-NEXT: $vgpr1 = COPY %op_vop2 1107 ; GFX10-LABEL: name: v_subrev_u16 1108 ; GFX10: liveins: $vgpr0, $vgpr1 1109 ; GFX10-NEXT: {{ $}} 1110 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1111 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1112 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_SUBREV_U16_e64 [[COPY]], [[COPY1]], 0, implicit $mode, implicit $exec 1113 ; GFX10-NEXT: %op_vop2:vgpr_32 = nofpexcept V_SUBREV_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 1114 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 1115 ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec 1116 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3 1117 ; GFX10-NEXT: $vgpr1 = COPY %and_vop2 1118 %0:vgpr_32 = COPY $vgpr0 1119 %1:vgpr_32 = COPY $vgpr1 1120 %op_vop3:vgpr_32 = nofpexcept V_SUBREV_U16_e64 %0, %1, 0, implicit $mode, implicit $exec 1121 %op_vop2:vgpr_32 = nofpexcept V_SUBREV_U16_e32 %0, %1, implicit $mode, implicit $exec 1122 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 1123 %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec 1124 $vgpr0 = COPY %and_vop3 1125 $vgpr1 = COPY %and_vop2 1126 1127... 1128 1129--- 1130name: v_mul_lo_u16 1131tracksRegLiveness: true 1132body: | 1133 bb.0: 1134 liveins: $vgpr0, $vgpr1 1135 ; GFX8-LABEL: name: v_mul_lo_u16 1136 ; GFX8: liveins: $vgpr0, $vgpr1 1137 ; GFX8-NEXT: {{ $}} 1138 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1139 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1140 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MUL_LO_U16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 1141 ; GFX8-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MUL_LO_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 1142 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3 1143 ; GFX8-NEXT: $vgpr1 = COPY %op_vop2 1144 ; GFX9-LABEL: name: v_mul_lo_u16 1145 ; GFX9: liveins: $vgpr0, $vgpr1 1146 ; GFX9-NEXT: {{ $}} 1147 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1148 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1149 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MUL_LO_U16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 1150 ; GFX9-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MUL_LO_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 1151 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3 1152 ; GFX9-NEXT: $vgpr1 = COPY %op_vop2 1153 ; GFX10-LABEL: name: v_mul_lo_u16 1154 ; GFX10: liveins: $vgpr0, $vgpr1 1155 ; GFX10-NEXT: {{ $}} 1156 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1157 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1158 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MUL_LO_U16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 1159 ; GFX10-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MUL_LO_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 1160 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 1161 ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec 1162 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3 1163 ; GFX10-NEXT: $vgpr1 = COPY %and_vop2 1164 %0:vgpr_32 = COPY $vgpr0 1165 %1:vgpr_32 = COPY $vgpr1 1166 %op_vop3:vgpr_32 = nofpexcept V_MUL_LO_U16_e64 %0, %1, implicit $mode, implicit $exec 1167 %op_vop2:vgpr_32 = nofpexcept V_MUL_LO_U16_e32 %0, %1, implicit $mode, implicit $exec 1168 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 1169 %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec 1170 $vgpr0 = COPY %and_vop3 1171 $vgpr1 = COPY %and_vop2 1172 1173... 1174 1175--- 1176name: v_add_f16 1177tracksRegLiveness: true 1178body: | 1179 bb.0: 1180 liveins: $vgpr0, $vgpr1 1181 ; GFX8-LABEL: name: v_add_f16 1182 ; GFX8: liveins: $vgpr0, $vgpr1 1183 ; GFX8-NEXT: {{ $}} 1184 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1185 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1186 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec 1187 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 1188 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3 1189 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1 1190 ; GFX9-LABEL: name: v_add_f16 1191 ; GFX9: liveins: $vgpr0, $vgpr1 1192 ; GFX9-NEXT: {{ $}} 1193 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1194 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1195 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec 1196 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 1197 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3 1198 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1 1199 ; GFX10-LABEL: name: v_add_f16 1200 ; GFX10: liveins: $vgpr0, $vgpr1 1201 ; GFX10-NEXT: {{ $}} 1202 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1203 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1204 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec 1205 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 1206 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 1207 ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec 1208 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3 1209 ; GFX10-NEXT: $vgpr1 = COPY %and_vop2 1210 %0:vgpr_32 = COPY $vgpr0 1211 %1:vgpr_32 = COPY $vgpr1 1212 %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, %0, 0, %1, 0, 0, implicit $mode, implicit $exec 1213 %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 %0, %1, implicit $mode, implicit $exec 1214 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 1215 %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec 1216 $vgpr0 = COPY %and_vop3 1217 $vgpr1 = COPY %and_vop2 1218 1219... 1220 1221--- 1222name: v_sub_f16 1223tracksRegLiveness: true 1224body: | 1225 bb.0: 1226 liveins: $vgpr0, $vgpr1 1227 ; GFX8-LABEL: name: v_sub_f16 1228 ; GFX8: liveins: $vgpr0, $vgpr1 1229 ; GFX8-NEXT: {{ $}} 1230 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1231 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1232 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec 1233 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 1234 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3 1235 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1 1236 ; GFX9-LABEL: name: v_sub_f16 1237 ; GFX9: liveins: $vgpr0, $vgpr1 1238 ; GFX9-NEXT: {{ $}} 1239 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1240 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1241 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec 1242 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 1243 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3 1244 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1 1245 ; GFX10-LABEL: name: v_sub_f16 1246 ; GFX10: liveins: $vgpr0, $vgpr1 1247 ; GFX10-NEXT: {{ $}} 1248 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1249 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1250 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec 1251 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 1252 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 1253 ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec 1254 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3 1255 ; GFX10-NEXT: $vgpr1 = COPY %and_vop2 1256 %0:vgpr_32 = COPY $vgpr0 1257 %1:vgpr_32 = COPY $vgpr1 1258 %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, %0, 0, %1, 0, 0, implicit $mode, implicit $exec 1259 %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 %0, %1, implicit $mode, implicit $exec 1260 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 1261 %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec 1262 $vgpr0 = COPY %and_vop3 1263 $vgpr1 = COPY %and_vop2 1264 1265... 1266 1267--- 1268name: v_subrev_f16 1269tracksRegLiveness: true 1270body: | 1271 bb.0: 1272 liveins: $vgpr0, $vgpr1 1273 ; GFX8-LABEL: name: v_subrev_f16 1274 ; GFX8: liveins: $vgpr0, $vgpr1 1275 ; GFX8-NEXT: {{ $}} 1276 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1277 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1278 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec 1279 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 1280 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3 1281 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1 1282 ; GFX9-LABEL: name: v_subrev_f16 1283 ; GFX9: liveins: $vgpr0, $vgpr1 1284 ; GFX9-NEXT: {{ $}} 1285 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1286 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1287 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec 1288 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 1289 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3 1290 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1 1291 ; GFX10-LABEL: name: v_subrev_f16 1292 ; GFX10: liveins: $vgpr0, $vgpr1 1293 ; GFX10-NEXT: {{ $}} 1294 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1295 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1296 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec 1297 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 1298 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 1299 ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec 1300 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3 1301 ; GFX10-NEXT: $vgpr1 = COPY %and_vop2 1302 %0:vgpr_32 = COPY $vgpr0 1303 %1:vgpr_32 = COPY $vgpr1 1304 %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, %0, 0, %1, 0, 0, implicit $mode, implicit $exec 1305 %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 %0, %1, implicit $mode, implicit $exec 1306 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 1307 %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec 1308 $vgpr0 = COPY %and_vop3 1309 $vgpr1 = COPY %and_vop2 1310 1311... 1312 1313--- 1314name: v_mul_f16 1315tracksRegLiveness: true 1316body: | 1317 bb.0: 1318 liveins: $vgpr0, $vgpr1 1319 ; GFX8-LABEL: name: v_mul_f16 1320 ; GFX8: liveins: $vgpr0, $vgpr1 1321 ; GFX8-NEXT: {{ $}} 1322 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1323 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1324 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec 1325 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 1326 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3 1327 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1 1328 ; GFX9-LABEL: name: v_mul_f16 1329 ; GFX9: liveins: $vgpr0, $vgpr1 1330 ; GFX9-NEXT: {{ $}} 1331 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1332 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1333 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec 1334 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 1335 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3 1336 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1 1337 ; GFX10-LABEL: name: v_mul_f16 1338 ; GFX10: liveins: $vgpr0, $vgpr1 1339 ; GFX10-NEXT: {{ $}} 1340 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1341 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1342 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec 1343 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 1344 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 1345 ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec 1346 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3 1347 ; GFX10-NEXT: $vgpr1 = COPY %and_vop2 1348 %0:vgpr_32 = COPY $vgpr0 1349 %1:vgpr_32 = COPY $vgpr1 1350 %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, %0, 0, %1, 0, 0, implicit $mode, implicit $exec 1351 %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 %0, %1, implicit $mode, implicit $exec 1352 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 1353 %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec 1354 $vgpr0 = COPY %and_vop3 1355 $vgpr1 = COPY %and_vop2 1356 1357... 1358 1359--- 1360name: v_max_f16 1361tracksRegLiveness: true 1362body: | 1363 bb.0: 1364 liveins: $vgpr0, $vgpr1 1365 ; GFX8-LABEL: name: v_max_f16 1366 ; GFX8: liveins: $vgpr0, $vgpr1 1367 ; GFX8-NEXT: {{ $}} 1368 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1369 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1370 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec 1371 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 1372 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3 1373 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1 1374 ; GFX9-LABEL: name: v_max_f16 1375 ; GFX9: liveins: $vgpr0, $vgpr1 1376 ; GFX9-NEXT: {{ $}} 1377 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1378 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1379 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec 1380 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 1381 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3 1382 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1 1383 ; GFX10-LABEL: name: v_max_f16 1384 ; GFX10: liveins: $vgpr0, $vgpr1 1385 ; GFX10-NEXT: {{ $}} 1386 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1387 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1388 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec 1389 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 1390 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 1391 ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec 1392 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3 1393 ; GFX10-NEXT: $vgpr1 = COPY %and_vop2 1394 %0:vgpr_32 = COPY $vgpr0 1395 %1:vgpr_32 = COPY $vgpr1 1396 %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, %0, 0, %1, 0, 0, implicit $mode, implicit $exec 1397 %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 %0, %1, implicit $mode, implicit $exec 1398 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 1399 %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec 1400 $vgpr0 = COPY %and_vop3 1401 $vgpr1 = COPY %and_vop2 1402 1403... 1404 1405--- 1406name: v_min_f16 1407tracksRegLiveness: true 1408body: | 1409 bb.0: 1410 liveins: $vgpr0, $vgpr1 1411 ; GFX8-LABEL: name: v_min_f16 1412 ; GFX8: liveins: $vgpr0, $vgpr1 1413 ; GFX8-NEXT: {{ $}} 1414 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1415 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1416 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec 1417 ; GFX8-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 1418 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3 1419 ; GFX8-NEXT: $vgpr1 = COPY %op_vop1 1420 ; GFX9-LABEL: name: v_min_f16 1421 ; GFX9: liveins: $vgpr0, $vgpr1 1422 ; GFX9-NEXT: {{ $}} 1423 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1424 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1425 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec 1426 ; GFX9-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 1427 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3 1428 ; GFX9-NEXT: $vgpr1 = COPY %op_vop1 1429 ; GFX10-LABEL: name: v_min_f16 1430 ; GFX10: liveins: $vgpr0, $vgpr1 1431 ; GFX10-NEXT: {{ $}} 1432 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1433 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1434 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec 1435 ; GFX10-NEXT: %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 1436 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 1437 ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec 1438 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3 1439 ; GFX10-NEXT: $vgpr1 = COPY %and_vop2 1440 %0:vgpr_32 = COPY $vgpr0 1441 %1:vgpr_32 = COPY $vgpr1 1442 %op_vop3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, %0, 0, %1, 0, 0, implicit $mode, implicit $exec 1443 %op_vop1:vgpr_32 = nofpexcept V_ADD_F16_e32 %0, %1, implicit $mode, implicit $exec 1444 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 1445 %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop1, implicit $exec 1446 $vgpr0 = COPY %and_vop3 1447 $vgpr1 = COPY %and_vop2 1448 1449... 1450 1451--- 1452name: v_max_u16 1453tracksRegLiveness: true 1454body: | 1455 bb.0: 1456 liveins: $vgpr0, $vgpr1 1457 ; GFX8-LABEL: name: v_max_u16 1458 ; GFX8: liveins: $vgpr0, $vgpr1 1459 ; GFX8-NEXT: {{ $}} 1460 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1461 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1462 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MAX_U16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 1463 ; GFX8-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MAX_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 1464 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3 1465 ; GFX8-NEXT: $vgpr1 = COPY %op_vop2 1466 ; GFX9-LABEL: name: v_max_u16 1467 ; GFX9: liveins: $vgpr0, $vgpr1 1468 ; GFX9-NEXT: {{ $}} 1469 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1470 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1471 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MAX_U16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 1472 ; GFX9-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MAX_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 1473 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3 1474 ; GFX9-NEXT: $vgpr1 = COPY %op_vop2 1475 ; GFX10-LABEL: name: v_max_u16 1476 ; GFX10: liveins: $vgpr0, $vgpr1 1477 ; GFX10-NEXT: {{ $}} 1478 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1479 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1480 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MAX_U16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 1481 ; GFX10-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MAX_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 1482 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 1483 ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec 1484 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3 1485 ; GFX10-NEXT: $vgpr1 = COPY %and_vop2 1486 %0:vgpr_32 = COPY $vgpr0 1487 %1:vgpr_32 = COPY $vgpr1 1488 %op_vop3:vgpr_32 = nofpexcept V_MAX_U16_e64 %0, %1, implicit $mode, implicit $exec 1489 %op_vop2:vgpr_32 = nofpexcept V_MAX_U16_e32 %0, %1, implicit $mode, implicit $exec 1490 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 1491 %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec 1492 $vgpr0 = COPY %and_vop3 1493 $vgpr1 = COPY %and_vop2 1494 1495... 1496--- 1497name: v_min_u16 1498tracksRegLiveness: true 1499body: | 1500 bb.0: 1501 liveins: $vgpr0, $vgpr1 1502 ; GFX8-LABEL: name: v_min_u16 1503 ; GFX8: liveins: $vgpr0, $vgpr1 1504 ; GFX8-NEXT: {{ $}} 1505 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1506 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1507 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MIN_U16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 1508 ; GFX8-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MIN_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 1509 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3 1510 ; GFX8-NEXT: $vgpr1 = COPY %op_vop2 1511 ; GFX9-LABEL: name: v_min_u16 1512 ; GFX9: liveins: $vgpr0, $vgpr1 1513 ; GFX9-NEXT: {{ $}} 1514 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1515 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1516 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MIN_U16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 1517 ; GFX9-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MIN_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 1518 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3 1519 ; GFX9-NEXT: $vgpr1 = COPY %op_vop2 1520 ; GFX10-LABEL: name: v_min_u16 1521 ; GFX10: liveins: $vgpr0, $vgpr1 1522 ; GFX10-NEXT: {{ $}} 1523 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1524 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1525 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MIN_U16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 1526 ; GFX10-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MIN_U16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 1527 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 1528 ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec 1529 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3 1530 ; GFX10-NEXT: $vgpr1 = COPY %and_vop2 1531 %0:vgpr_32 = COPY $vgpr0 1532 %1:vgpr_32 = COPY $vgpr1 1533 %op_vop3:vgpr_32 = nofpexcept V_MIN_U16_e64 %0, %1, implicit $mode, implicit $exec 1534 %op_vop2:vgpr_32 = nofpexcept V_MIN_U16_e32 %0, %1, implicit $mode, implicit $exec 1535 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 1536 %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec 1537 $vgpr0 = COPY %and_vop3 1538 $vgpr1 = COPY %and_vop2 1539 1540... 1541 1542--- 1543name: v_max_i16 1544tracksRegLiveness: true 1545body: | 1546 bb.0: 1547 liveins: $vgpr0, $vgpr1 1548 ; GFX8-LABEL: name: v_max_i16 1549 ; GFX8: liveins: $vgpr0, $vgpr1 1550 ; GFX8-NEXT: {{ $}} 1551 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1552 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1553 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MAX_I16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 1554 ; GFX8-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MAX_I16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 1555 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3 1556 ; GFX8-NEXT: $vgpr1 = COPY %op_vop2 1557 ; GFX9-LABEL: name: v_max_i16 1558 ; GFX9: liveins: $vgpr0, $vgpr1 1559 ; GFX9-NEXT: {{ $}} 1560 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1561 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1562 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MAX_I16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 1563 ; GFX9-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MAX_I16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 1564 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3 1565 ; GFX9-NEXT: $vgpr1 = COPY %op_vop2 1566 ; GFX10-LABEL: name: v_max_i16 1567 ; GFX10: liveins: $vgpr0, $vgpr1 1568 ; GFX10-NEXT: {{ $}} 1569 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1570 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1571 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MAX_I16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 1572 ; GFX10-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MAX_I16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 1573 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 1574 ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec 1575 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3 1576 ; GFX10-NEXT: $vgpr1 = COPY %and_vop2 1577 %0:vgpr_32 = COPY $vgpr0 1578 %1:vgpr_32 = COPY $vgpr1 1579 %op_vop3:vgpr_32 = nofpexcept V_MAX_I16_e64 %0, %1, implicit $mode, implicit $exec 1580 %op_vop2:vgpr_32 = nofpexcept V_MAX_I16_e32 %0, %1, implicit $mode, implicit $exec 1581 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 1582 %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec 1583 $vgpr0 = COPY %and_vop3 1584 $vgpr1 = COPY %and_vop2 1585 1586... 1587--- 1588name: v_min_i16 1589tracksRegLiveness: true 1590body: | 1591 bb.0: 1592 liveins: $vgpr0, $vgpr1 1593 ; GFX8-LABEL: name: v_min_i16 1594 ; GFX8: liveins: $vgpr0, $vgpr1 1595 ; GFX8-NEXT: {{ $}} 1596 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1597 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1598 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MIN_I16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 1599 ; GFX8-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MIN_I16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 1600 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3 1601 ; GFX8-NEXT: $vgpr1 = COPY %op_vop2 1602 ; GFX9-LABEL: name: v_min_i16 1603 ; GFX9: liveins: $vgpr0, $vgpr1 1604 ; GFX9-NEXT: {{ $}} 1605 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1606 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1607 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MIN_I16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 1608 ; GFX9-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MIN_I16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 1609 ; GFX9-NEXT: $vgpr0 = COPY %op_vop3 1610 ; GFX9-NEXT: $vgpr1 = COPY %op_vop2 1611 ; GFX10-LABEL: name: v_min_i16 1612 ; GFX10: liveins: $vgpr0, $vgpr1 1613 ; GFX10-NEXT: {{ $}} 1614 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1615 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1616 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MIN_I16_e64 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 1617 ; GFX10-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MIN_I16_e32 [[COPY]], [[COPY1]], implicit $mode, implicit $exec 1618 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 1619 ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec 1620 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3 1621 ; GFX10-NEXT: $vgpr1 = COPY %and_vop2 1622 %0:vgpr_32 = COPY $vgpr0 1623 %1:vgpr_32 = COPY $vgpr1 1624 %op_vop3:vgpr_32 = nofpexcept V_MIN_I16_e64 %0, %1, implicit $mode, implicit $exec 1625 %op_vop2:vgpr_32 = nofpexcept V_MIN_I16_e32 %0, %1, implicit $mode, implicit $exec 1626 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 1627 %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec 1628 $vgpr0 = COPY %and_vop3 1629 $vgpr1 = COPY %and_vop2 1630 1631... 1632 1633--- 1634name: v_mad_f16 1635tracksRegLiveness: true 1636body: | 1637 bb.0: 1638 liveins: $vgpr0, $vgpr1, $vgpr2 1639 ; GFX8-LABEL: name: v_mad_f16 1640 ; GFX8: liveins: $vgpr0, $vgpr1, $vgpr2 1641 ; GFX8-NEXT: {{ $}} 1642 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1643 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1644 ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2 1645 ; GFX8-NEXT: %op:vgpr_32 = nofpexcept V_MAD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec 1646 ; GFX8-NEXT: $vgpr0 = COPY %op 1647 ; GFX9-LABEL: name: v_mad_f16 1648 ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2 1649 ; GFX9-NEXT: {{ $}} 1650 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1651 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1652 ; GFX9-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2 1653 ; GFX9-NEXT: %op:vgpr_32 = nofpexcept V_MAD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec 1654 ; GFX9-NEXT: $vgpr0 = COPY %op 1655 ; GFX10-LABEL: name: v_mad_f16 1656 ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2 1657 ; GFX10-NEXT: {{ $}} 1658 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1659 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1660 ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2 1661 ; GFX10-NEXT: %op:vgpr_32 = nofpexcept V_MAD_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec 1662 ; GFX10-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec 1663 ; GFX10-NEXT: $vgpr0 = COPY %and 1664 %0:vgpr_32 = COPY $vgpr0 1665 %1:vgpr_32 = COPY $vgpr1 1666 %2:vgpr_32 = COPY $vgpr2 1667 %op:vgpr_32 = nofpexcept V_MAD_F16_e64 0, %0, 0, %1, 0, %2, 0, 0, implicit $mode, implicit $exec 1668 %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec 1669 $vgpr0 = COPY %and 1670 1671... 1672 1673--- 1674name: v_fma_f16 1675tracksRegLiveness: true 1676body: | 1677 bb.0: 1678 liveins: $vgpr0, $vgpr1, $vgpr2 1679 ; GFX8-LABEL: name: v_fma_f16 1680 ; GFX8: liveins: $vgpr0, $vgpr1, $vgpr2 1681 ; GFX8-NEXT: {{ $}} 1682 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1683 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1684 ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2 1685 ; GFX8-NEXT: %op:vgpr_32 = nofpexcept V_FMA_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec 1686 ; GFX8-NEXT: $vgpr0 = COPY %op 1687 ; GFX9-LABEL: name: v_fma_f16 1688 ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2 1689 ; GFX9-NEXT: {{ $}} 1690 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1691 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1692 ; GFX9-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2 1693 ; GFX9-NEXT: %op:vgpr_32 = nofpexcept V_FMA_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec 1694 ; GFX9-NEXT: $vgpr0 = COPY %op 1695 ; GFX10-LABEL: name: v_fma_f16 1696 ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2 1697 ; GFX10-NEXT: {{ $}} 1698 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1699 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1700 ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2 1701 ; GFX10-NEXT: %op:vgpr_32 = nofpexcept V_FMA_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec 1702 ; GFX10-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec 1703 ; GFX10-NEXT: $vgpr0 = COPY %and 1704 %0:vgpr_32 = COPY $vgpr0 1705 %1:vgpr_32 = COPY $vgpr1 1706 %2:vgpr_32 = COPY $vgpr2 1707 %op:vgpr_32 = nofpexcept V_FMA_F16_e64 0, %0, 0, %1, 0, %2, 0, 0, implicit $mode, implicit $exec 1708 %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec 1709 $vgpr0 = COPY %and 1710 1711... 1712 1713--- 1714name: v_div_fixup_f16 1715tracksRegLiveness: true 1716body: | 1717 bb.0: 1718 liveins: $vgpr0, $vgpr1, $vgpr2 1719 ; GFX8-LABEL: name: v_div_fixup_f16 1720 ; GFX8: liveins: $vgpr0, $vgpr1, $vgpr2 1721 ; GFX8-NEXT: {{ $}} 1722 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1723 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1724 ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2 1725 ; GFX8-NEXT: %op:vgpr_32 = nofpexcept V_DIV_FIXUP_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec 1726 ; GFX8-NEXT: $vgpr0 = COPY %op 1727 ; GFX9-LABEL: name: v_div_fixup_f16 1728 ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2 1729 ; GFX9-NEXT: {{ $}} 1730 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1731 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1732 ; GFX9-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2 1733 ; GFX9-NEXT: %op:vgpr_32 = nofpexcept V_DIV_FIXUP_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec 1734 ; GFX9-NEXT: $vgpr0 = COPY %op 1735 ; GFX10-LABEL: name: v_div_fixup_f16 1736 ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2 1737 ; GFX10-NEXT: {{ $}} 1738 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1739 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1740 ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2 1741 ; GFX10-NEXT: %op:vgpr_32 = nofpexcept V_DIV_FIXUP_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec 1742 ; GFX10-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec 1743 ; GFX10-NEXT: $vgpr0 = COPY %and 1744 %0:vgpr_32 = COPY $vgpr0 1745 %1:vgpr_32 = COPY $vgpr1 1746 %2:vgpr_32 = COPY $vgpr2 1747 %op:vgpr_32 = nofpexcept V_DIV_FIXUP_F16_e64 0, %0, 0, %1, 0, %2, 0, 0, implicit $mode, implicit $exec 1748 %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec 1749 $vgpr0 = COPY %and 1750 1751... 1752 1753--- 1754name: v_madak_f16 1755tracksRegLiveness: true 1756body: | 1757 bb.0: 1758 liveins: $vgpr0, $vgpr1 1759 ; GFX8-LABEL: name: v_madak_f16 1760 ; GFX8: liveins: $vgpr0, $vgpr1 1761 ; GFX8-NEXT: {{ $}} 1762 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1763 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1764 ; GFX8-NEXT: %op:vgpr_32 = nofpexcept V_MADAK_F16 [[COPY]], [[COPY1]], 1234, implicit $mode, implicit $exec 1765 ; GFX8-NEXT: $vgpr0 = COPY %op 1766 ; GFX9-LABEL: name: v_madak_f16 1767 ; GFX9: liveins: $vgpr0, $vgpr1 1768 ; GFX9-NEXT: {{ $}} 1769 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1770 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1771 ; GFX9-NEXT: %op:vgpr_32 = nofpexcept V_MADAK_F16 [[COPY]], [[COPY1]], 1234, implicit $mode, implicit $exec 1772 ; GFX9-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec 1773 ; GFX9-NEXT: $vgpr0 = COPY %and 1774 ; GFX10-LABEL: name: v_madak_f16 1775 ; GFX10: liveins: $vgpr0, $vgpr1 1776 ; GFX10-NEXT: {{ $}} 1777 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1778 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1779 ; GFX10-NEXT: %op:vgpr_32 = nofpexcept V_MADAK_F16 [[COPY]], [[COPY1]], 1234, implicit $mode, implicit $exec 1780 ; GFX10-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec 1781 ; GFX10-NEXT: $vgpr0 = COPY %and 1782 %0:vgpr_32 = COPY $vgpr0 1783 %1:vgpr_32 = COPY $vgpr1 1784 %op:vgpr_32 = nofpexcept V_MADAK_F16 %0, %1, 1234, implicit $mode, implicit $exec 1785 %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec 1786 $vgpr0 = COPY %and 1787 1788... 1789 1790--- 1791name: v_madmk_f16 1792tracksRegLiveness: true 1793body: | 1794 bb.0: 1795 liveins: $vgpr0, $vgpr1 1796 ; GFX8-LABEL: name: v_madmk_f16 1797 ; GFX8: liveins: $vgpr0, $vgpr1 1798 ; GFX8-NEXT: {{ $}} 1799 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1800 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1801 ; GFX8-NEXT: %op:vgpr_32 = nofpexcept V_MADMK_F16 [[COPY]], 1234, [[COPY1]], implicit $mode, implicit $exec 1802 ; GFX8-NEXT: $vgpr0 = COPY %op 1803 ; GFX9-LABEL: name: v_madmk_f16 1804 ; GFX9: liveins: $vgpr0, $vgpr1 1805 ; GFX9-NEXT: {{ $}} 1806 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1807 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1808 ; GFX9-NEXT: %op:vgpr_32 = nofpexcept V_MADMK_F16 [[COPY]], 1234, [[COPY1]], implicit $mode, implicit $exec 1809 ; GFX9-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec 1810 ; GFX9-NEXT: $vgpr0 = COPY %and 1811 ; GFX10-LABEL: name: v_madmk_f16 1812 ; GFX10: liveins: $vgpr0, $vgpr1 1813 ; GFX10-NEXT: {{ $}} 1814 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1815 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1816 ; GFX10-NEXT: %op:vgpr_32 = nofpexcept V_MADMK_F16 [[COPY]], 1234, [[COPY1]], implicit $mode, implicit $exec 1817 ; GFX10-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec 1818 ; GFX10-NEXT: $vgpr0 = COPY %and 1819 %0:vgpr_32 = COPY $vgpr0 1820 %1:vgpr_32 = COPY $vgpr1 1821 %op:vgpr_32 = nofpexcept V_MADMK_F16 %0, 1234, %1, implicit $mode, implicit $exec 1822 %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec 1823 $vgpr0 = COPY %and 1824 1825... 1826 1827--- 1828name: v_fmaak_f16 1829tracksRegLiveness: true 1830body: | 1831 bb.0: 1832 liveins: $vgpr0, $vgpr1 1833 ; GFX8-LABEL: name: v_fmaak_f16 1834 ; GFX8: liveins: $vgpr0, $vgpr1 1835 ; GFX8-NEXT: {{ $}} 1836 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1837 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1838 ; GFX8-NEXT: %op:vgpr_32 = nofpexcept V_FMAAK_F16 [[COPY]], [[COPY1]], 1234, implicit $mode, implicit $exec 1839 ; GFX8-NEXT: $vgpr0 = COPY %op 1840 ; GFX9-LABEL: name: v_fmaak_f16 1841 ; GFX9: liveins: $vgpr0, $vgpr1 1842 ; GFX9-NEXT: {{ $}} 1843 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1844 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1845 ; GFX9-NEXT: %op:vgpr_32 = nofpexcept V_FMAAK_F16 [[COPY]], [[COPY1]], 1234, implicit $mode, implicit $exec 1846 ; GFX9-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec 1847 ; GFX9-NEXT: $vgpr0 = COPY %and 1848 ; GFX10-LABEL: name: v_fmaak_f16 1849 ; GFX10: liveins: $vgpr0, $vgpr1 1850 ; GFX10-NEXT: {{ $}} 1851 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1852 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1853 ; GFX10-NEXT: %op:vgpr_32 = nofpexcept V_FMAAK_F16 [[COPY]], [[COPY1]], 1234, implicit $mode, implicit $exec 1854 ; GFX10-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec 1855 ; GFX10-NEXT: $vgpr0 = COPY %and 1856 %0:vgpr_32 = COPY $vgpr0 1857 %1:vgpr_32 = COPY $vgpr1 1858 %op:vgpr_32 = nofpexcept V_FMAAK_F16 %0, %1, 1234, implicit $mode, implicit $exec 1859 %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec 1860 $vgpr0 = COPY %and 1861 1862... 1863 1864--- 1865name: v_fmamk_f16 1866tracksRegLiveness: true 1867body: | 1868 bb.0: 1869 liveins: $vgpr0, $vgpr1 1870 ; GFX8-LABEL: name: v_fmamk_f16 1871 ; GFX8: liveins: $vgpr0, $vgpr1 1872 ; GFX8-NEXT: {{ $}} 1873 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1874 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1875 ; GFX8-NEXT: %op:vgpr_32 = nofpexcept V_FMAMK_F16 [[COPY]], 1234, [[COPY1]], implicit $mode, implicit $exec 1876 ; GFX8-NEXT: $vgpr0 = COPY %op 1877 ; GFX9-LABEL: name: v_fmamk_f16 1878 ; GFX9: liveins: $vgpr0, $vgpr1 1879 ; GFX9-NEXT: {{ $}} 1880 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1881 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1882 ; GFX9-NEXT: %op:vgpr_32 = nofpexcept V_FMAMK_F16 [[COPY]], 1234, [[COPY1]], implicit $mode, implicit $exec 1883 ; GFX9-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec 1884 ; GFX9-NEXT: $vgpr0 = COPY %and 1885 ; GFX10-LABEL: name: v_fmamk_f16 1886 ; GFX10: liveins: $vgpr0, $vgpr1 1887 ; GFX10-NEXT: {{ $}} 1888 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1889 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1890 ; GFX10-NEXT: %op:vgpr_32 = nofpexcept V_FMAMK_F16 [[COPY]], 1234, [[COPY1]], implicit $mode, implicit $exec 1891 ; GFX10-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec 1892 ; GFX10-NEXT: $vgpr0 = COPY %and 1893 %0:vgpr_32 = COPY $vgpr0 1894 %1:vgpr_32 = COPY $vgpr1 1895 %op:vgpr_32 = nofpexcept V_FMAMK_F16 %0, 1234, %1, implicit $mode, implicit $exec 1896 %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec 1897 $vgpr0 = COPY %and 1898 1899... 1900 1901--- 1902name: v_mac_f16 1903tracksRegLiveness: true 1904body: | 1905 bb.0: 1906 liveins: $vgpr0, $vgpr1, $vgpr2 1907 ; GFX8-LABEL: name: v_mac_f16 1908 ; GFX8: liveins: $vgpr0, $vgpr1, $vgpr2 1909 ; GFX8-NEXT: {{ $}} 1910 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1911 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1912 ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2 1913 ; GFX8-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MAC_F16_e32 [[COPY]], [[COPY1]], [[COPY2]], implicit $mode, implicit $exec 1914 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MAC_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec 1915 ; GFX8-NEXT: $vgpr0 = COPY %op_vop2 1916 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3 1917 ; GFX9-LABEL: name: v_mac_f16 1918 ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2 1919 ; GFX9-NEXT: {{ $}} 1920 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1921 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1922 ; GFX9-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2 1923 ; GFX9-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MAC_F16_e32 [[COPY]], [[COPY1]], [[COPY2]], implicit $mode, implicit $exec 1924 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MAC_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec 1925 ; GFX9-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec 1926 ; GFX9-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 1927 ; GFX9-NEXT: $vgpr0 = COPY %and_vop2 1928 ; GFX9-NEXT: $vgpr0 = COPY %and_vop3 1929 ; GFX10-LABEL: name: v_mac_f16 1930 ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2 1931 ; GFX10-NEXT: {{ $}} 1932 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1933 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1934 ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2 1935 ; GFX10-NEXT: %op_vop2:vgpr_32 = nofpexcept V_MAC_F16_e32 [[COPY]], [[COPY1]], [[COPY2]], implicit $mode, implicit $exec 1936 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_MAC_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec 1937 ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec 1938 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 1939 ; GFX10-NEXT: $vgpr0 = COPY %and_vop2 1940 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3 1941 %0:vgpr_32 = COPY $vgpr0 1942 %1:vgpr_32 = COPY $vgpr1 1943 %2:vgpr_32 = COPY $vgpr2 1944 %op_vop2:vgpr_32 = nofpexcept V_MAC_F16_e32 %0, %1, %2, implicit $mode, implicit $exec 1945 %op_vop3:vgpr_32 = nofpexcept V_MAC_F16_e64 0, %0, 0, %1, 0, %2, 0, 0, implicit $mode, implicit $exec 1946 %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec 1947 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 1948 $vgpr0 = COPY %and_vop2 1949 $vgpr0 = COPY %and_vop3 1950 1951... 1952 1953--- 1954name: v_fmac_f16 1955tracksRegLiveness: true 1956body: | 1957 bb.0: 1958 liveins: $vgpr0, $vgpr1, $vgpr2 1959 ; GFX8-LABEL: name: v_fmac_f16 1960 ; GFX8: liveins: $vgpr0, $vgpr1, $vgpr2 1961 ; GFX8-NEXT: {{ $}} 1962 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1963 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1964 ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2 1965 ; GFX8-NEXT: %op_vop2:vgpr_32 = nofpexcept V_FMAC_F16_e32 [[COPY]], [[COPY1]], [[COPY2]], implicit $mode, implicit $exec 1966 ; GFX8-NEXT: %op_vop3:vgpr_32 = nofpexcept V_FMAC_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec 1967 ; GFX8-NEXT: $vgpr0 = COPY %op_vop2 1968 ; GFX8-NEXT: $vgpr0 = COPY %op_vop3 1969 ; GFX9-LABEL: name: v_fmac_f16 1970 ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2 1971 ; GFX9-NEXT: {{ $}} 1972 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1973 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1974 ; GFX9-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2 1975 ; GFX9-NEXT: %op_vop2:vgpr_32 = nofpexcept V_FMAC_F16_e32 [[COPY]], [[COPY1]], [[COPY2]], implicit $mode, implicit $exec 1976 ; GFX9-NEXT: %op_vop3:vgpr_32 = nofpexcept V_FMAC_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec 1977 ; GFX9-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec 1978 ; GFX9-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 1979 ; GFX9-NEXT: $vgpr0 = COPY %and_vop2 1980 ; GFX9-NEXT: $vgpr0 = COPY %and_vop3 1981 ; GFX10-LABEL: name: v_fmac_f16 1982 ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2 1983 ; GFX10-NEXT: {{ $}} 1984 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1985 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1986 ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2 1987 ; GFX10-NEXT: %op_vop2:vgpr_32 = nofpexcept V_FMAC_F16_e32 [[COPY]], [[COPY1]], [[COPY2]], implicit $mode, implicit $exec 1988 ; GFX10-NEXT: %op_vop3:vgpr_32 = nofpexcept V_FMAC_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec 1989 ; GFX10-NEXT: %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec 1990 ; GFX10-NEXT: %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 1991 ; GFX10-NEXT: $vgpr0 = COPY %and_vop2 1992 ; GFX10-NEXT: $vgpr0 = COPY %and_vop3 1993 %0:vgpr_32 = COPY $vgpr0 1994 %1:vgpr_32 = COPY $vgpr1 1995 %2:vgpr_32 = COPY $vgpr2 1996 %op_vop2:vgpr_32 = nofpexcept V_FMAC_F16_e32 %0, %1, %2, implicit $mode, implicit $exec 1997 %op_vop3:vgpr_32 = nofpexcept V_FMAC_F16_e64 0, %0, 0, %1, 0, %2, 0, 0, implicit $mode, implicit $exec 1998 %and_vop2:vgpr_32 = V_AND_B32_e32 65535, %op_vop2, implicit $exec 1999 %and_vop3:vgpr_32 = V_AND_B32_e32 65535, %op_vop3, implicit $exec 2000 $vgpr0 = COPY %and_vop2 2001 $vgpr0 = COPY %and_vop3 2002 2003... 2004 2005--- 2006name: no_fold_v_mad_mixlo_f16 2007tracksRegLiveness: true 2008body: | 2009 bb.0: 2010 liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3 2011 ; GFX8-LABEL: name: no_fold_v_mad_mixlo_f16 2012 ; GFX8: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3 2013 ; GFX8-NEXT: {{ $}} 2014 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 2015 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 2016 ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2 2017 ; GFX8-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr3 2018 ; GFX8-NEXT: %op:vgpr_32 = nofpexcept V_MAD_MIXLO_F16 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, [[COPY3]], 0, 0, implicit $mode, implicit $exec 2019 ; GFX8-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec 2020 ; GFX8-NEXT: $vgpr0 = COPY %and 2021 ; GFX9-LABEL: name: no_fold_v_mad_mixlo_f16 2022 ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3 2023 ; GFX9-NEXT: {{ $}} 2024 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 2025 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 2026 ; GFX9-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2 2027 ; GFX9-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr3 2028 ; GFX9-NEXT: %op:vgpr_32 = nofpexcept V_MAD_MIXLO_F16 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, [[COPY3]], 0, 0, implicit $mode, implicit $exec 2029 ; GFX9-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec 2030 ; GFX9-NEXT: $vgpr0 = COPY %and 2031 ; GFX10-LABEL: name: no_fold_v_mad_mixlo_f16 2032 ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3 2033 ; GFX10-NEXT: {{ $}} 2034 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 2035 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 2036 ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2 2037 ; GFX10-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr3 2038 ; GFX10-NEXT: %op:vgpr_32 = nofpexcept V_MAD_MIXLO_F16 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, [[COPY3]], 0, 0, implicit $mode, implicit $exec 2039 ; GFX10-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec 2040 ; GFX10-NEXT: $vgpr0 = COPY %and 2041 %0:vgpr_32 = COPY $vgpr0 2042 %1:vgpr_32 = COPY $vgpr1 2043 %2:vgpr_32 = COPY $vgpr2 2044 %3:vgpr_32 = COPY $vgpr3 2045 %op:vgpr_32 = nofpexcept V_MAD_MIXLO_F16 0, %0, 0, %1, 0, %2, 0, %3, 0, 0, implicit $mode, implicit $exec 2046 %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec 2047 $vgpr0 = COPY %and 2048 2049... 2050 2051--- 2052name: no_fold_v_mad_mixhi_f16 2053tracksRegLiveness: true 2054body: | 2055 bb.0: 2056 liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3 2057 ; GFX8-LABEL: name: no_fold_v_mad_mixhi_f16 2058 ; GFX8: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3 2059 ; GFX8-NEXT: {{ $}} 2060 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 2061 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 2062 ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2 2063 ; GFX8-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr3 2064 ; GFX8-NEXT: %op:vgpr_32 = nofpexcept V_MAD_MIXHI_F16 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, [[COPY3]], 0, 0, implicit $mode, implicit $exec 2065 ; GFX8-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec 2066 ; GFX8-NEXT: $vgpr0 = COPY %and 2067 ; GFX9-LABEL: name: no_fold_v_mad_mixhi_f16 2068 ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3 2069 ; GFX9-NEXT: {{ $}} 2070 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 2071 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 2072 ; GFX9-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2 2073 ; GFX9-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr3 2074 ; GFX9-NEXT: %op:vgpr_32 = nofpexcept V_MAD_MIXHI_F16 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, [[COPY3]], 0, 0, implicit $mode, implicit $exec 2075 ; GFX9-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec 2076 ; GFX9-NEXT: $vgpr0 = COPY %and 2077 ; GFX10-LABEL: name: no_fold_v_mad_mixhi_f16 2078 ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3 2079 ; GFX10-NEXT: {{ $}} 2080 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 2081 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 2082 ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2 2083 ; GFX10-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr3 2084 ; GFX10-NEXT: %op:vgpr_32 = nofpexcept V_MAD_MIXHI_F16 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, [[COPY3]], 0, 0, implicit $mode, implicit $exec 2085 ; GFX10-NEXT: %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec 2086 ; GFX10-NEXT: $vgpr0 = COPY %and 2087 %0:vgpr_32 = COPY $vgpr0 2088 %1:vgpr_32 = COPY $vgpr1 2089 %2:vgpr_32 = COPY $vgpr2 2090 %3:vgpr_32 = COPY $vgpr3 2091 %op:vgpr_32 = nofpexcept V_MAD_MIXHI_F16 0, %0, 0, %1, 0, %2, 0, %3, 0, 0, implicit $mode, implicit $exec 2092 %and:vgpr_32 = V_AND_B32_e32 65535, %op, implicit $exec 2093 $vgpr0 = COPY %and 2094 2095... 2096