273 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -O0 -mtriple=mipsel-linux-gnu -run-pass=legalizer -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=MIPS323--- |4 5 define void @select_i8() {entry: ret void}6 define void @select_i16() {entry: ret void}7 define void @select_i32() {entry: ret void}8 define void @select_ptr() {entry: ret void}9 define void @select_with_negation() {entry: ret void}10 define void @select_i64() {entry: ret void}11 define void @select_float() {entry: ret void}12 define void @select_double() {entry: ret void}13 14...15---16name: select_i817alignment: 418tracksRegLiveness: true19body: |20 bb.1.entry:21 liveins: $a0, $a1, $a222 23 ; MIPS32-LABEL: name: select_i824 ; MIPS32: liveins: $a0, $a1, $a225 ; MIPS32-NEXT: {{ $}}26 ; MIPS32-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $a027 ; MIPS32-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $a128 ; MIPS32-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $a229 ; MIPS32-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 130 ; MIPS32-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]31 ; MIPS32-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[AND]](s32), [[COPY1]], [[COPY2]]32 ; MIPS32-NEXT: $v0 = COPY [[SELECT]](s32)33 ; MIPS32-NEXT: RetRA implicit $v034 %3:_(s32) = COPY $a035 %0:_(s1) = G_TRUNC %3(s32)36 %4:_(s32) = COPY $a137 %1:_(s8) = G_TRUNC %4(s32)38 %5:_(s32) = COPY $a239 %2:_(s8) = G_TRUNC %5(s32)40 %6:_(s8) = G_SELECT %0(s1), %1, %241 %7:_(s32) = G_ANYEXT %6(s8)42 $v0 = COPY %7(s32)43 RetRA implicit $v044 45...46---47name: select_i1648alignment: 449tracksRegLiveness: true50body: |51 bb.1.entry:52 liveins: $a0, $a1, $a253 54 ; MIPS32-LABEL: name: select_i1655 ; MIPS32: liveins: $a0, $a1, $a256 ; MIPS32-NEXT: {{ $}}57 ; MIPS32-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $a058 ; MIPS32-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $a159 ; MIPS32-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $a260 ; MIPS32-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 161 ; MIPS32-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]62 ; MIPS32-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[AND]](s32), [[COPY1]], [[COPY2]]63 ; MIPS32-NEXT: $v0 = COPY [[SELECT]](s32)64 ; MIPS32-NEXT: RetRA implicit $v065 %3:_(s32) = COPY $a066 %0:_(s1) = G_TRUNC %3(s32)67 %4:_(s32) = COPY $a168 %1:_(s16) = G_TRUNC %4(s32)69 %5:_(s32) = COPY $a270 %2:_(s16) = G_TRUNC %5(s32)71 %6:_(s16) = G_SELECT %0(s1), %1, %272 %7:_(s32) = G_ANYEXT %6(s16)73 $v0 = COPY %7(s32)74 RetRA implicit $v075 76...77---78name: select_i3279alignment: 480tracksRegLiveness: true81body: |82 bb.1.entry:83 liveins: $a0, $a1, $a284 85 ; MIPS32-LABEL: name: select_i3286 ; MIPS32: liveins: $a0, $a1, $a287 ; MIPS32-NEXT: {{ $}}88 ; MIPS32-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $a089 ; MIPS32-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $a190 ; MIPS32-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $a291 ; MIPS32-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 192 ; MIPS32-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]93 ; MIPS32-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[AND]](s32), [[COPY1]], [[COPY2]]94 ; MIPS32-NEXT: $v0 = COPY [[SELECT]](s32)95 ; MIPS32-NEXT: RetRA implicit $v096 %3:_(s32) = COPY $a097 %0:_(s1) = G_TRUNC %3(s32)98 %1:_(s32) = COPY $a199 %2:_(s32) = COPY $a2100 %4:_(s32) = G_SELECT %0(s1), %1, %2101 $v0 = COPY %4(s32)102 RetRA implicit $v0103 104...105---106name: select_ptr107alignment: 4108tracksRegLiveness: true109body: |110 bb.1.entry:111 liveins: $a0, $a1, $a2112 113 ; MIPS32-LABEL: name: select_ptr114 ; MIPS32: liveins: $a0, $a1, $a2115 ; MIPS32-NEXT: {{ $}}116 ; MIPS32-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $a0117 ; MIPS32-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $a1118 ; MIPS32-NEXT: [[COPY2:%[0-9]+]]:_(p0) = COPY $a2119 ; MIPS32-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1120 ; MIPS32-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]121 ; MIPS32-NEXT: [[SELECT:%[0-9]+]]:_(p0) = G_SELECT [[AND]](s32), [[COPY1]], [[COPY2]]122 ; MIPS32-NEXT: $v0 = COPY [[SELECT]](p0)123 ; MIPS32-NEXT: RetRA implicit $v0124 %3:_(s32) = COPY $a0125 %0:_(s1) = G_TRUNC %3(s32)126 %1:_(p0) = COPY $a1127 %2:_(p0) = COPY $a2128 %4:_(p0) = G_SELECT %0(s1), %1, %2129 $v0 = COPY %4(p0)130 RetRA implicit $v0131 132...133---134name: select_with_negation135alignment: 4136tracksRegLiveness: true137body: |138 bb.1.entry:139 liveins: $a0, $a1, $a2, $a3140 141 ; MIPS32-LABEL: name: select_with_negation142 ; MIPS32: liveins: $a0, $a1, $a2, $a3143 ; MIPS32-NEXT: {{ $}}144 ; MIPS32-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $a0145 ; MIPS32-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $a1146 ; MIPS32-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $a2147 ; MIPS32-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $a3148 ; MIPS32-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1149 ; MIPS32-NEXT: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(slt), [[COPY]](s32), [[COPY1]]150 ; MIPS32-NEXT: [[XOR:%[0-9]+]]:_(s32) = G_XOR [[ICMP]], [[C]]151 ; MIPS32-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[XOR]](s32), [[COPY2]], [[COPY3]]152 ; MIPS32-NEXT: $v0 = COPY [[SELECT]](s32)153 ; MIPS32-NEXT: RetRA implicit $v0154 %0:_(s32) = COPY $a0155 %1:_(s32) = COPY $a1156 %2:_(s32) = COPY $a2157 %3:_(s32) = COPY $a3158 %5:_(s1) = G_CONSTANT i1 true159 %4:_(s1) = G_ICMP intpred(slt), %0(s32), %1160 %6:_(s1) = G_XOR %4, %5161 %7:_(s32) = G_SELECT %6(s1), %2, %3162 $v0 = COPY %7(s32)163 RetRA implicit $v0164 165...166---167name: select_i64168alignment: 4169tracksRegLiveness: true170fixedStack:171 - { id: 0, offset: 20, size: 4, alignment: 4, isImmutable: true }172 - { id: 1, offset: 16, size: 4, alignment: 8, isImmutable: true }173body: |174 bb.1.entry:175 liveins: $a0, $a2, $a3176 177 ; MIPS32-LABEL: name: select_i64178 ; MIPS32: liveins: $a0, $a2, $a3179 ; MIPS32-NEXT: {{ $}}180 ; MIPS32-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $a0181 ; MIPS32-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $a2182 ; MIPS32-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $a3183 ; MIPS32-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY1]](s32), [[COPY2]](s32)184 ; MIPS32-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p0) = G_FRAME_INDEX %fixed-stack.0185 ; MIPS32-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p0) :: (load (s32) from %fixed-stack.0, align 8)186 ; MIPS32-NEXT: [[FRAME_INDEX1:%[0-9]+]]:_(p0) = G_FRAME_INDEX %fixed-stack.1187 ; MIPS32-NEXT: [[LOAD1:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX1]](p0) :: (load (s32) from %fixed-stack.1)188 ; MIPS32-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[LOAD]](s32), [[LOAD1]](s32)189 ; MIPS32-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1190 ; MIPS32-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]191 ; MIPS32-NEXT: [[SELECT:%[0-9]+]]:_(s64) = G_SELECT [[AND]](s32), [[MV]], [[MV1]]192 ; MIPS32-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[SELECT]](s64)193 ; MIPS32-NEXT: $v0 = COPY [[UV]](s32)194 ; MIPS32-NEXT: $v1 = COPY [[UV1]](s32)195 ; MIPS32-NEXT: RetRA implicit $v0, implicit $v1196 %3:_(s32) = COPY $a0197 %0:_(s1) = G_TRUNC %3(s32)198 %4:_(s32) = COPY $a2199 %5:_(s32) = COPY $a3200 %1:_(s64) = G_MERGE_VALUES %4(s32), %5(s32)201 %8:_(p0) = G_FRAME_INDEX %fixed-stack.1202 %6:_(s32) = G_LOAD %8(p0) :: (load (s32) from %fixed-stack.1, align 8)203 %9:_(p0) = G_FRAME_INDEX %fixed-stack.0204 %7:_(s32) = G_LOAD %9(p0) :: (load (s32) from %fixed-stack.0)205 %2:_(s64) = G_MERGE_VALUES %6(s32), %7(s32)206 %10:_(s64) = G_SELECT %0(s1), %1, %2207 %11:_(s32), %12:_(s32) = G_UNMERGE_VALUES %10(s64)208 $v0 = COPY %11(s32)209 $v1 = COPY %12(s32)210 RetRA implicit $v0, implicit $v1211 212...213---214name: select_float215alignment: 4216tracksRegLiveness: true217body: |218 bb.1.entry:219 liveins: $a0, $a1, $a2220 221 ; MIPS32-LABEL: name: select_float222 ; MIPS32: liveins: $a0, $a1, $a2223 ; MIPS32-NEXT: {{ $}}224 ; MIPS32-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $a0225 ; MIPS32-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $a1226 ; MIPS32-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $a2227 ; MIPS32-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1228 ; MIPS32-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]229 ; MIPS32-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[AND]](s32), [[COPY1]], [[COPY2]]230 ; MIPS32-NEXT: $f0 = COPY [[SELECT]](s32)231 ; MIPS32-NEXT: RetRA implicit $f0232 %3:_(s32) = COPY $a0233 %0:_(s1) = G_TRUNC %3(s32)234 %1:_(s32) = COPY $a1235 %2:_(s32) = COPY $a2236 %4:_(s32) = G_SELECT %0(s1), %1, %2237 $f0 = COPY %4(s32)238 RetRA implicit $f0239 240...241---242name: select_double243alignment: 4244tracksRegLiveness: true245fixedStack:246 - { id: 0, offset: 16, size: 4, alignment: 8, isImmutable: true }247body: |248 bb.1.entry:249 liveins: $d6, $d7250 251 ; MIPS32-LABEL: name: select_double252 ; MIPS32: liveins: $d6, $d7253 ; MIPS32-NEXT: {{ $}}254 ; MIPS32-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $d6255 ; MIPS32-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $d7256 ; MIPS32-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p0) = G_FRAME_INDEX %fixed-stack.0257 ; MIPS32-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p0) :: (load (s32) from %fixed-stack.0, align 8)258 ; MIPS32-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1259 ; MIPS32-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[LOAD]], [[C]]260 ; MIPS32-NEXT: [[SELECT:%[0-9]+]]:_(s64) = G_SELECT [[AND]](s32), [[COPY]], [[COPY1]]261 ; MIPS32-NEXT: $d0 = COPY [[SELECT]](s64)262 ; MIPS32-NEXT: RetRA implicit $d0263 %0:_(s64) = COPY $d6264 %1:_(s64) = COPY $d7265 %4:_(p0) = G_FRAME_INDEX %fixed-stack.0266 %3:_(s32) = G_LOAD %4(p0) :: (load (s32) from %fixed-stack.0, align 8)267 %2:_(s1) = G_TRUNC %3(s32)268 %5:_(s64) = G_SELECT %2(s1), %0, %1269 $d0 = COPY %5(s64)270 RetRA implicit $d0271 272...273