1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -mtriple=amdgcn -mcpu=gfx1150 -run-pass=regbankselect %s -verify-machineinstrs -o - -regbankselect-fast | FileCheck --check-prefixes=GFX1150 %s 3# RUN: llc -mtriple=amdgcn -mcpu=gfx1150 -run-pass=regbankselect %s -verify-machineinstrs -o - -regbankselect-greedy | FileCheck --check-prefixes=GFX1150 %s 4 5--- 6name: fadd_f32 7legalized: true 8body: | 9 bb.0: 10 liveins: $sgpr0, $sgpr1 11 12 ; GFX1150-LABEL: name: fadd_f32 13 ; GFX1150: liveins: $sgpr0, $sgpr1 14 ; GFX1150-NEXT: {{ $}} 15 ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 16 ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 17 ; GFX1150-NEXT: [[FADD:%[0-9]+]]:sgpr(s32) = G_FADD [[COPY]], [[COPY1]] 18 %0:_(s32) = COPY $sgpr0 19 %1:_(s32) = COPY $sgpr1 20 %2:_(s32) = G_FADD %0, %1 21... 22 23--- 24name: fptosi_f32_to_i32 25legalized: true 26body: | 27 bb.0: 28 liveins: $sgpr0 29 30 ; GFX1150-LABEL: name: fptosi_f32_to_i32 31 ; GFX1150: liveins: $sgpr0 32 ; GFX1150-NEXT: {{ $}} 33 ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 34 ; GFX1150-NEXT: [[FPTOSI:%[0-9]+]]:sgpr(s32) = G_FPTOSI [[COPY]](s32) 35 %0:_(s32) = COPY $sgpr0 36 %1:_(s32) = G_FPTOSI %0(s32) 37... 38 39--- 40name: fptoui_f32_to_u32 41legalized: true 42body: | 43 bb.0: 44 liveins: $sgpr0 45 46 ; GFX1150-LABEL: name: fptoui_f32_to_u32 47 ; GFX1150: liveins: $sgpr0 48 ; GFX1150-NEXT: {{ $}} 49 ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 50 ; GFX1150-NEXT: [[FPTOUI:%[0-9]+]]:sgpr(s32) = G_FPTOUI [[COPY]](s32) 51 %0:_(s32) = COPY $sgpr0 52 %1:_(s32) = G_FPTOUI %0(s32) 53... 54 55--- 56name: sitofp_i32_to_f32 57legalized: true 58body: | 59 bb.0: 60 liveins: $sgpr0 61 62 ; GFX1150-LABEL: name: sitofp_i32_to_f32 63 ; GFX1150: liveins: $sgpr0 64 ; GFX1150-NEXT: {{ $}} 65 ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 66 ; GFX1150-NEXT: [[SITOFP:%[0-9]+]]:sgpr(s32) = G_SITOFP [[COPY]](s32) 67 %0:_(s32) = COPY $sgpr0 68 %1:_(s32) = G_SITOFP %0(s32) 69... 70 71--- 72name: uitofp_u32_to_f32 73legalized: true 74body: | 75 bb.0: 76 liveins: $sgpr0 77 78 ; GFX1150-LABEL: name: uitofp_u32_to_f32 79 ; GFX1150: liveins: $sgpr0 80 ; GFX1150-NEXT: {{ $}} 81 ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 82 ; GFX1150-NEXT: [[UITOFP:%[0-9]+]]:sgpr(s32) = G_UITOFP [[COPY]](s32) 83 %0:_(s32) = COPY $sgpr0 84 %1:_(s32) = G_UITOFP %0(s32) 85... 86 87--- 88name: fptrunc_f32_to_f16 89legalized: true 90body: | 91 bb.0: 92 liveins: $sgpr0 93 94 ; GFX1150-LABEL: name: fptrunc_f32_to_f16 95 ; GFX1150: liveins: $sgpr0 96 ; GFX1150-NEXT: {{ $}} 97 ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 98 ; GFX1150-NEXT: [[FPTRUNC:%[0-9]+]]:sgpr(s16) = G_FPTRUNC [[COPY]](s32) 99 %0:_(s32) = COPY $sgpr0 100 %1:_(s16) = G_FPTRUNC %0(s32) 101... 102 103--- 104name: fpext_f16_to_f32 105legalized: true 106body: | 107 bb.0: 108 liveins: $sgpr0 109 110 ; GFX1150-LABEL: name: fpext_f16_to_f32 111 ; GFX1150: liveins: $sgpr0 112 ; GFX1150-NEXT: {{ $}} 113 ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 114 ; GFX1150-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32) 115 %1:_(s32) = COPY $sgpr0 116 %0:_(s16) = G_TRUNC %1(s32) 117... 118 119# Tests below should not select scalar registers 120 121--- 122name: fadd_f64 123legalized: true 124body: | 125 bb.0: 126 liveins: $sgpr0_sgpr1, $sgpr2_sgpr3 127 128 ; GFX1150-LABEL: name: fadd_f64 129 ; GFX1150: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3 130 ; GFX1150-NEXT: {{ $}} 131 ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1 132 ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:sgpr(s64) = COPY $sgpr2_sgpr3 133 ; GFX1150-NEXT: [[COPY2:%[0-9]+]]:vgpr(s64) = COPY [[COPY]](s64) 134 ; GFX1150-NEXT: [[COPY3:%[0-9]+]]:vgpr(s64) = COPY [[COPY1]](s64) 135 ; GFX1150-NEXT: [[FADD:%[0-9]+]]:vgpr(s64) = G_FADD [[COPY2]], [[COPY3]] 136 %0:_(s64) = COPY $sgpr0_sgpr1 137 %1:_(s64) = COPY $sgpr2_sgpr3 138 %2:_(s64) = G_FADD %0, %1 139... 140 141--- 142name: fptosi_f64_to_i32 143legalized: true 144body: | 145 bb.0: 146 liveins: $sgpr0, $sgpr1 147 148 ; GFX1150-LABEL: name: fptosi_f64_to_i32 149 ; GFX1150: liveins: $sgpr0, $sgpr1 150 ; GFX1150-NEXT: {{ $}} 151 ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1 152 ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY [[COPY]](s64) 153 ; GFX1150-NEXT: [[FPTOSI:%[0-9]+]]:vgpr(s32) = G_FPTOSI [[COPY1]](s64) 154 %0:_(s64) = COPY $sgpr0_sgpr1 155 %1:_(s32) = G_FPTOSI %0(s64) 156... 157 158--- 159name: fptoui_f16_to_u16 160legalized: true 161body: | 162 bb.0: 163 liveins: $sgpr0 164 165 ; GFX1150-LABEL: name: fptoui_f16_to_u16 166 ; GFX1150: liveins: $sgpr0 167 ; GFX1150-NEXT: {{ $}} 168 ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 169 ; GFX1150-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32) 170 ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:vgpr(s16) = COPY [[TRUNC]](s16) 171 ; GFX1150-NEXT: [[FPTOUI:%[0-9]+]]:vgpr(s16) = G_FPTOUI [[COPY1]](s16) 172 %1:_(s32) = COPY $sgpr0 173 %0:_(s16) = G_TRUNC %1(s32) 174 %2:_(s16) = G_FPTOUI %0(s16) 175... 176 177--- 178name: sitofp_i32_to_f64 179legalized: true 180body: | 181 bb.0: 182 liveins: $sgpr0 183 184 ; GFX1150-LABEL: name: sitofp_i32_to_f64 185 ; GFX1150: liveins: $sgpr0 186 ; GFX1150-NEXT: {{ $}} 187 ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 188 ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32) 189 ; GFX1150-NEXT: [[SITOFP:%[0-9]+]]:vgpr(s64) = G_SITOFP [[COPY1]](s32) 190 %0:_(s32) = COPY $sgpr0 191 %1:_(s64) = G_SITOFP %0(s32) 192... 193 194--- 195name: uitofp_u16_to_f16 196legalized: true 197body: | 198 bb.0: 199 liveins: $sgpr0 200 201 ; GFX1150-LABEL: name: uitofp_u16_to_f16 202 ; GFX1150: liveins: $sgpr0 203 ; GFX1150-NEXT: {{ $}} 204 ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 205 ; GFX1150-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32) 206 ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:vgpr(s16) = COPY [[TRUNC]](s16) 207 ; GFX1150-NEXT: [[UITOFP:%[0-9]+]]:vgpr(s16) = G_UITOFP [[COPY1]](s16) 208 %1:_(s32) = COPY $sgpr0 209 %0:_(s16) = G_TRUNC %1(s32) 210 %2:_(s16) = G_UITOFP %0(s16) 211... 212 213--- 214name: fptrunc_f64_to_f32 215legalized: true 216body: | 217 bb.0: 218 liveins: $sgpr0_sgpr1 219 220 ; GFX1150-LABEL: name: fptrunc_f64_to_f32 221 ; GFX1150: liveins: $sgpr0_sgpr1 222 ; GFX1150-NEXT: {{ $}} 223 ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1 224 ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY [[COPY]](s64) 225 ; GFX1150-NEXT: [[FPTRUNC:%[0-9]+]]:vgpr(s32) = G_FPTRUNC [[COPY1]](s64) 226 %0:_(s64) = COPY $sgpr0_sgpr1 227 %1:_(s32) = G_FPTRUNC %0(s64) 228... 229 230--- 231name: fpext_f32_to_f64 232legalized: true 233body: | 234 bb.0: 235 liveins: $sgpr0 236 237 ; GFX1150-LABEL: name: fpext_f32_to_f64 238 ; GFX1150: liveins: $sgpr0 239 ; GFX1150-NEXT: {{ $}} 240 ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 241 ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32) 242 ; GFX1150-NEXT: [[FPEXT:%[0-9]+]]:vgpr(s64) = G_FPEXT [[COPY1]](s32) 243 %0:_(s32) = COPY $sgpr0 244 %1:_(s64) = G_FPEXT %0(s32) 245 246... 247