246 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=riscv64 -mattr=+d -run-pass=regbankselect \3# RUN: -simplify-mir -verify-machineinstrs %s \4# RUN: -o - | FileCheck -check-prefix=RV32I %s5 6---7name: fp_select_s328legalized: true9tracksRegLiveness: true10body: |11 bb.0.entry:12 liveins: $x10, $f10_f, $f11_f13 14 ; RV32I-LABEL: name: fp_select_s3215 ; RV32I: liveins: $x10, $f10_f, $f11_f16 ; RV32I-NEXT: {{ $}}17 ; RV32I-NEXT: [[COPY:%[0-9]+]]:gprb(s64) = COPY $x1018 ; RV32I-NEXT: [[COPY1:%[0-9]+]]:fprb(s32) = COPY $f10_f19 ; RV32I-NEXT: [[COPY2:%[0-9]+]]:fprb(s32) = COPY $f11_f20 ; RV32I-NEXT: [[C:%[0-9]+]]:gprb(s64) = G_CONSTANT i64 121 ; RV32I-NEXT: [[AND:%[0-9]+]]:gprb(s64) = G_AND [[COPY]], [[C]]22 ; RV32I-NEXT: [[SELECT:%[0-9]+]]:fprb(s32) = G_SELECT [[AND]](s64), [[COPY1]], [[COPY2]]23 ; RV32I-NEXT: $f10_f = COPY [[SELECT]](s32)24 ; RV32I-NEXT: PseudoRET implicit $f10_f25 %3:_(s64) = COPY $x1026 %4:_(s32) = COPY $f10_f27 %5:_(s32) = COPY $f11_f28 %12:_(s64) = G_CONSTANT i64 129 %11:_(s64) = G_AND %3, %1230 %10:_(s32) = G_SELECT %11(s64), %4(s32), %531 $f10_f = COPY %10(s32)32 PseudoRET implicit $f10_f33 34...35---36name: fp_select_s6437legalized: true38tracksRegLiveness: true39body: |40 bb.0.entry:41 liveins: $x10, $f10_d, $f11_d42 43 ; RV32I-LABEL: name: fp_select_s6444 ; RV32I: liveins: $x10, $f10_d, $f11_d45 ; RV32I-NEXT: {{ $}}46 ; RV32I-NEXT: [[COPY:%[0-9]+]]:gprb(s64) = COPY $x1047 ; RV32I-NEXT: [[COPY1:%[0-9]+]]:fprb(s64) = COPY $f10_d48 ; RV32I-NEXT: [[COPY2:%[0-9]+]]:fprb(s64) = COPY $f11_d49 ; RV32I-NEXT: [[C:%[0-9]+]]:gprb(s64) = G_CONSTANT i64 150 ; RV32I-NEXT: [[AND:%[0-9]+]]:gprb(s64) = G_AND [[COPY]], [[C]]51 ; RV32I-NEXT: [[SELECT:%[0-9]+]]:fprb(s64) = G_SELECT [[AND]](s64), [[COPY1]], [[COPY2]]52 ; RV32I-NEXT: $f10_d = COPY [[SELECT]](s64)53 ; RV32I-NEXT: PseudoRET implicit $f10_d54 %3:_(s64) = COPY $x1055 %4:_(s64) = COPY $f10_d56 %5:_(s64) = COPY $f11_d57 %12:_(s64) = G_CONSTANT i64 158 %11:_(s64) = G_AND %3, %1259 %10:_(s64) = G_SELECT %11(s64), %4, %560 $f10_d = COPY %10(s64)61 PseudoRET implicit $f10_d62 63...64---65name: fp_select_gpr_use_s3266legalized: true67tracksRegLiveness: true68body: |69 bb.0.entry:70 liveins: $x10, $f10_f, $f11_f71 72 ; RV32I-LABEL: name: fp_select_gpr_use_s3273 ; RV32I: liveins: $x10, $f10_f, $f11_f74 ; RV32I-NEXT: {{ $}}75 ; RV32I-NEXT: [[COPY:%[0-9]+]]:gprb(s64) = COPY $x1076 ; RV32I-NEXT: [[COPY1:%[0-9]+]]:fprb(s32) = COPY $f10_f77 ; RV32I-NEXT: [[COPY2:%[0-9]+]]:fprb(s32) = COPY $f11_f78 ; RV32I-NEXT: [[C:%[0-9]+]]:gprb(s64) = G_CONSTANT i64 179 ; RV32I-NEXT: [[AND:%[0-9]+]]:gprb(s64) = G_AND [[COPY]], [[C]]80 ; RV32I-NEXT: [[SELECT:%[0-9]+]]:fprb(s32) = G_SELECT [[AND]](s64), [[COPY1]], [[COPY2]]81 ; RV32I-NEXT: [[COPY3:%[0-9]+]]:gprb(s32) = COPY [[SELECT]](s32)82 ; RV32I-NEXT: [[ANYEXT:%[0-9]+]]:gprb(s64) = G_ANYEXT [[COPY3]](s32)83 ; RV32I-NEXT: $x10 = COPY [[ANYEXT]](s64)84 ; RV32I-NEXT: PseudoRET implicit $x1085 %3:_(s64) = COPY $x1086 %4:_(s32) = COPY $f10_f87 %5:_(s32) = COPY $f11_f88 %12:_(s64) = G_CONSTANT i64 189 %11:_(s64) = G_AND %3, %1290 %10:_(s32) = G_SELECT %11(s64), %4(s32), %591 %13:_(s64) = G_ANYEXT %10(s32)92 $x10 = COPY %13(s64)93 PseudoRET implicit $x1094 95...96---97name: fp_select_gpr_use_s6498legalized: true99tracksRegLiveness: true100body: |101 bb.0.entry:102 liveins: $x10, $f10_d, $f11_d103 104 ; RV32I-LABEL: name: fp_select_gpr_use_s64105 ; RV32I: liveins: $x10, $f10_d, $f11_d106 ; RV32I-NEXT: {{ $}}107 ; RV32I-NEXT: [[COPY:%[0-9]+]]:gprb(s64) = COPY $x10108 ; RV32I-NEXT: [[COPY1:%[0-9]+]]:fprb(s64) = COPY $f10_d109 ; RV32I-NEXT: [[COPY2:%[0-9]+]]:fprb(s64) = COPY $f11_d110 ; RV32I-NEXT: [[C:%[0-9]+]]:gprb(s64) = G_CONSTANT i64 1111 ; RV32I-NEXT: [[AND:%[0-9]+]]:gprb(s64) = G_AND [[COPY]], [[C]]112 ; RV32I-NEXT: [[SELECT:%[0-9]+]]:fprb(s64) = G_SELECT [[AND]](s64), [[COPY1]], [[COPY2]]113 ; RV32I-NEXT: $x10 = COPY [[SELECT]](s64)114 ; RV32I-NEXT: PseudoRET implicit $x10115 %3:_(s64) = COPY $x10116 %4:_(s64) = COPY $f10_d117 %5:_(s64) = COPY $f11_d118 %12:_(s64) = G_CONSTANT i64 1119 %11:_(s64) = G_AND %3, %12120 %10:_(s64) = G_SELECT %11(s64), %4, %5121 $x10 = COPY %10(s64)122 PseudoRET implicit $x10123 124...125---126name: fp_select_gpr_def_s32127legalized: true128tracksRegLiveness: true129body: |130 bb.0.entry:131 liveins: $x10, $x11, $f10_f132 133 ; RV32I-LABEL: name: fp_select_gpr_def_s32134 ; RV32I: liveins: $x10, $x11, $f10_f135 ; RV32I-NEXT: {{ $}}136 ; RV32I-NEXT: [[COPY:%[0-9]+]]:gprb(s64) = COPY $x10137 ; RV32I-NEXT: [[COPY1:%[0-9]+]]:fprb(s32) = COPY $f10_f138 ; RV32I-NEXT: [[COPY2:%[0-9]+]]:gprb(s64) = COPY $x11139 ; RV32I-NEXT: [[TRUNC:%[0-9]+]]:gprb(s32) = G_TRUNC [[COPY2]](s64)140 ; RV32I-NEXT: [[C:%[0-9]+]]:gprb(s64) = G_CONSTANT i64 1141 ; RV32I-NEXT: [[AND:%[0-9]+]]:gprb(s64) = G_AND [[COPY]], [[C]]142 ; RV32I-NEXT: [[COPY3:%[0-9]+]]:fprb(s32) = COPY [[TRUNC]](s32)143 ; RV32I-NEXT: [[SELECT:%[0-9]+]]:fprb(s32) = G_SELECT [[AND]](s64), [[COPY3]], [[COPY1]]144 ; RV32I-NEXT: $f10_f = COPY [[SELECT]](s32)145 ; RV32I-NEXT: PseudoRET implicit $f10_f146 %3:_(s64) = COPY $x10147 %4:_(s32) = COPY $f10_f148 %5:_(s64) = COPY $x11149 %6:_(s32) = G_TRUNC %5(s64)150 %12:_(s64) = G_CONSTANT i64 1151 %11:_(s64) = G_AND %3, %12152 %10:_(s32) = G_SELECT %11(s64), %6(s32), %4153 $f10_f = COPY %10(s32)154 PseudoRET implicit $f10_f155 156...157---158name: fp_select_gpr_def_s64159legalized: true160tracksRegLiveness: true161body: |162 bb.0.entry:163 liveins: $x10, $x11, $f10_d164 165 ; RV32I-LABEL: name: fp_select_gpr_def_s64166 ; RV32I: liveins: $x10, $x11, $f10_d167 ; RV32I-NEXT: {{ $}}168 ; RV32I-NEXT: [[COPY:%[0-9]+]]:gprb(s64) = COPY $x10169 ; RV32I-NEXT: [[COPY1:%[0-9]+]]:fprb(s64) = COPY $f10_d170 ; RV32I-NEXT: [[COPY2:%[0-9]+]]:gprb(s64) = COPY $x11171 ; RV32I-NEXT: [[C:%[0-9]+]]:gprb(s64) = G_CONSTANT i64 1172 ; RV32I-NEXT: [[AND:%[0-9]+]]:gprb(s64) = G_AND [[COPY]], [[C]]173 ; RV32I-NEXT: [[COPY3:%[0-9]+]]:fprb(s64) = COPY [[COPY2]](s64)174 ; RV32I-NEXT: [[SELECT:%[0-9]+]]:fprb(s64) = G_SELECT [[AND]](s64), [[COPY1]], [[COPY3]]175 ; RV32I-NEXT: $f10_d = COPY [[SELECT]](s64)176 ; RV32I-NEXT: PseudoRET implicit $f10_d177 %3:_(s64) = COPY $x10178 %4:_(s64) = COPY $f10_d179 %5:_(s64) = COPY $x11180 %12:_(s64) = G_CONSTANT i64 1181 %11:_(s64) = G_AND %3, %12182 %10:_(s64) = G_SELECT %11(s64), %4, %5183 $f10_d = COPY %10(s64)184 PseudoRET implicit $f10_d185 186...187---188name: fp_select_only_fpr_use_s64189legalized: true190tracksRegLiveness: true191body: |192 bb.0.entry:193 liveins: $x10, $x11, $x12194 195 ; RV32I-LABEL: name: fp_select_only_fpr_use_s64196 ; RV32I: liveins: $x10, $x11, $x12197 ; RV32I-NEXT: {{ $}}198 ; RV32I-NEXT: [[COPY:%[0-9]+]]:gprb(s64) = COPY $x10199 ; RV32I-NEXT: [[COPY1:%[0-9]+]]:gprb(s64) = COPY $x11200 ; RV32I-NEXT: [[COPY2:%[0-9]+]]:gprb(s64) = COPY $x12201 ; RV32I-NEXT: [[C:%[0-9]+]]:gprb(s64) = G_CONSTANT i64 1202 ; RV32I-NEXT: [[AND:%[0-9]+]]:gprb(s64) = G_AND [[COPY]], [[C]]203 ; RV32I-NEXT: [[SELECT:%[0-9]+]]:gprb(s64) = G_SELECT [[AND]](s64), [[COPY1]], [[COPY2]]204 ; RV32I-NEXT: $f10_d = COPY [[SELECT]](s64)205 ; RV32I-NEXT: PseudoRET implicit $f10_d206 %3:_(s64) = COPY $x10207 %4:_(s64) = COPY $x11208 %5:_(s64) = COPY $x12209 %12:_(s64) = G_CONSTANT i64 1210 %11:_(s64) = G_AND %3, %12211 %10:_(s64) = G_SELECT %11(s64), %4, %5212 $f10_d = COPY %10(s64)213 PseudoRET implicit $f10_d214 215...216---217name: fp_select_only_one_fpr_def_s64218legalized: true219tracksRegLiveness: true220body: |221 bb.0.entry:222 liveins: $x10, $x11, $f10_d223 224 ; RV32I-LABEL: name: fp_select_only_one_fpr_def_s64225 ; RV32I: liveins: $x10, $x11, $f10_d226 ; RV32I-NEXT: {{ $}}227 ; RV32I-NEXT: [[COPY:%[0-9]+]]:gprb(s64) = COPY $x10228 ; RV32I-NEXT: [[COPY1:%[0-9]+]]:fprb(s64) = COPY $f10_d229 ; RV32I-NEXT: [[COPY2:%[0-9]+]]:gprb(s64) = COPY $x11230 ; RV32I-NEXT: [[C:%[0-9]+]]:gprb(s64) = G_CONSTANT i64 1231 ; RV32I-NEXT: [[AND:%[0-9]+]]:gprb(s64) = G_AND [[COPY]], [[C]]232 ; RV32I-NEXT: [[COPY3:%[0-9]+]]:gprb(s64) = COPY [[COPY1]](s64)233 ; RV32I-NEXT: [[SELECT:%[0-9]+]]:gprb(s64) = G_SELECT [[AND]](s64), [[COPY3]], [[COPY2]]234 ; RV32I-NEXT: $x10 = COPY [[SELECT]](s64)235 ; RV32I-NEXT: PseudoRET implicit $x10236 %3:_(s64) = COPY $x10237 %4:_(s64) = COPY $f10_d238 %5:_(s64) = COPY $x11239 %12:_(s64) = G_CONSTANT i64 1240 %11:_(s64) = G_AND %3, %12241 %10:_(s64) = G_SELECT %11(s64), %4, %5242 $x10 = COPY %10(s64)243 PseudoRET implicit $x10244 245...246