179 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -O0 -mtriple=mipsel-linux-gnu -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=MIPS32FP323# RUN: llc -O0 -mtriple=mipsel-linux-gnu -mattr=+fp64,+mips32r2 -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=MIPS32FP644--- |5 6 define void @select_i32() {entry: ret void}7 define void @select_ptr() {entry: ret void}8 define void @select_float() {entry: ret void}9 define void @select_double() {entry: ret void}10 11...12---13name: select_i3214alignment: 415legalized: true16regBankSelected: true17tracksRegLiveness: true18body: |19 bb.1.entry:20 liveins: $a0, $a1, $a221 22 ; MIPS32FP32-LABEL: name: select_i3223 ; MIPS32FP32: liveins: $a0, $a1, $a224 ; MIPS32FP32: [[COPY:%[0-9]+]]:gpr32 = COPY $a025 ; MIPS32FP32: [[COPY1:%[0-9]+]]:gpr32 = COPY $a126 ; MIPS32FP32: [[COPY2:%[0-9]+]]:gpr32 = COPY $a227 ; MIPS32FP32: [[ANDi:%[0-9]+]]:gpr32 = ANDi [[COPY]], 128 ; MIPS32FP32: [[MOVN_I_I:%[0-9]+]]:gpr32 = MOVN_I_I [[COPY1]], [[ANDi]], [[COPY2]]29 ; MIPS32FP32: $v0 = COPY [[MOVN_I_I]]30 ; MIPS32FP32: RetRA implicit $v031 ; MIPS32FP64-LABEL: name: select_i3232 ; MIPS32FP64: liveins: $a0, $a1, $a233 ; MIPS32FP64: [[COPY:%[0-9]+]]:gpr32 = COPY $a034 ; MIPS32FP64: [[COPY1:%[0-9]+]]:gpr32 = COPY $a135 ; MIPS32FP64: [[COPY2:%[0-9]+]]:gpr32 = COPY $a236 ; MIPS32FP64: [[ANDi:%[0-9]+]]:gpr32 = ANDi [[COPY]], 137 ; MIPS32FP64: [[MOVN_I_I:%[0-9]+]]:gpr32 = MOVN_I_I [[COPY1]], [[ANDi]], [[COPY2]]38 ; MIPS32FP64: $v0 = COPY [[MOVN_I_I]]39 ; MIPS32FP64: RetRA implicit $v040 %3:gprb(s32) = COPY $a041 %1:gprb(s32) = COPY $a142 %2:gprb(s32) = COPY $a243 %6:gprb(s32) = G_CONSTANT i32 144 %7:gprb(s32) = COPY %3(s32)45 %5:gprb(s32) = G_AND %7, %646 %4:gprb(s32) = G_SELECT %5(s32), %1, %247 $v0 = COPY %4(s32)48 RetRA implicit $v049 50...51---52name: select_ptr53alignment: 454legalized: true55regBankSelected: true56tracksRegLiveness: true57body: |58 bb.1.entry:59 liveins: $a0, $a1, $a260 61 ; MIPS32FP32-LABEL: name: select_ptr62 ; MIPS32FP32: liveins: $a0, $a1, $a263 ; MIPS32FP32: [[COPY:%[0-9]+]]:gpr32 = COPY $a064 ; MIPS32FP32: [[COPY1:%[0-9]+]]:gpr32 = COPY $a165 ; MIPS32FP32: [[COPY2:%[0-9]+]]:gpr32 = COPY $a266 ; MIPS32FP32: [[ANDi:%[0-9]+]]:gpr32 = ANDi [[COPY]], 167 ; MIPS32FP32: [[MOVN_I_I:%[0-9]+]]:gpr32 = MOVN_I_I [[COPY1]], [[ANDi]], [[COPY2]]68 ; MIPS32FP32: $v0 = COPY [[MOVN_I_I]]69 ; MIPS32FP32: RetRA implicit $v070 ; MIPS32FP64-LABEL: name: select_ptr71 ; MIPS32FP64: liveins: $a0, $a1, $a272 ; MIPS32FP64: [[COPY:%[0-9]+]]:gpr32 = COPY $a073 ; MIPS32FP64: [[COPY1:%[0-9]+]]:gpr32 = COPY $a174 ; MIPS32FP64: [[COPY2:%[0-9]+]]:gpr32 = COPY $a275 ; MIPS32FP64: [[ANDi:%[0-9]+]]:gpr32 = ANDi [[COPY]], 176 ; MIPS32FP64: [[MOVN_I_I:%[0-9]+]]:gpr32 = MOVN_I_I [[COPY1]], [[ANDi]], [[COPY2]]77 ; MIPS32FP64: $v0 = COPY [[MOVN_I_I]]78 ; MIPS32FP64: RetRA implicit $v079 %3:gprb(s32) = COPY $a080 %1:gprb(p0) = COPY $a181 %2:gprb(p0) = COPY $a282 %6:gprb(s32) = G_CONSTANT i32 183 %7:gprb(s32) = COPY %3(s32)84 %5:gprb(s32) = G_AND %7, %685 %4:gprb(p0) = G_SELECT %5(s32), %1, %286 $v0 = COPY %4(p0)87 RetRA implicit $v088 89...90---91name: select_float92alignment: 493legalized: true94regBankSelected: true95tracksRegLiveness: true96body: |97 bb.1.entry:98 liveins: $a0, $a1, $a299 100 ; MIPS32FP32-LABEL: name: select_float101 ; MIPS32FP32: liveins: $a0, $a1, $a2102 ; MIPS32FP32: [[COPY:%[0-9]+]]:gpr32 = COPY $a0103 ; MIPS32FP32: [[COPY1:%[0-9]+]]:gpr32 = COPY $a1104 ; MIPS32FP32: [[COPY2:%[0-9]+]]:gpr32 = COPY $a2105 ; MIPS32FP32: [[ANDi:%[0-9]+]]:gpr32 = ANDi [[COPY]], 1106 ; MIPS32FP32: [[COPY3:%[0-9]+]]:fgr32 = COPY [[COPY1]]107 ; MIPS32FP32: [[COPY4:%[0-9]+]]:fgr32 = COPY [[COPY2]]108 ; MIPS32FP32: [[MOVN_I_S:%[0-9]+]]:fgr32 = MOVN_I_S [[COPY3]], [[ANDi]], [[COPY4]]109 ; MIPS32FP32: $f0 = COPY [[MOVN_I_S]]110 ; MIPS32FP32: RetRA implicit $f0111 ; MIPS32FP64-LABEL: name: select_float112 ; MIPS32FP64: liveins: $a0, $a1, $a2113 ; MIPS32FP64: [[COPY:%[0-9]+]]:gpr32 = COPY $a0114 ; MIPS32FP64: [[COPY1:%[0-9]+]]:gpr32 = COPY $a1115 ; MIPS32FP64: [[COPY2:%[0-9]+]]:gpr32 = COPY $a2116 ; MIPS32FP64: [[ANDi:%[0-9]+]]:gpr32 = ANDi [[COPY]], 1117 ; MIPS32FP64: [[COPY3:%[0-9]+]]:fgr32 = COPY [[COPY1]]118 ; MIPS32FP64: [[COPY4:%[0-9]+]]:fgr32 = COPY [[COPY2]]119 ; MIPS32FP64: [[MOVN_I_S:%[0-9]+]]:fgr32 = MOVN_I_S [[COPY3]], [[ANDi]], [[COPY4]]120 ; MIPS32FP64: $f0 = COPY [[MOVN_I_S]]121 ; MIPS32FP64: RetRA implicit $f0122 %3:gprb(s32) = COPY $a0123 %1:gprb(s32) = COPY $a1124 %2:gprb(s32) = COPY $a2125 %6:gprb(s32) = G_CONSTANT i32 1126 %7:gprb(s32) = COPY %3(s32)127 %5:gprb(s32) = G_AND %7, %6128 %8:fprb(s32) = COPY %1(s32)129 %9:fprb(s32) = COPY %2(s32)130 %4:fprb(s32) = G_SELECT %5(s32), %8, %9131 $f0 = COPY %4(s32)132 RetRA implicit $f0133 134...135---136name: select_double137alignment: 4138legalized: true139regBankSelected: true140tracksRegLiveness: true141fixedStack:142 - { id: 0, offset: 16, size: 4, alignment: 8, isImmutable: true }143body: |144 bb.1.entry:145 liveins: $d6, $d7146 147 ; MIPS32FP32-LABEL: name: select_double148 ; MIPS32FP32: liveins: $d6, $d7149 ; MIPS32FP32: [[COPY:%[0-9]+]]:afgr64 = COPY $d6150 ; MIPS32FP32: [[COPY1:%[0-9]+]]:afgr64 = COPY $d7151 ; MIPS32FP32: [[ADDiu:%[0-9]+]]:gpr32 = ADDiu %fixed-stack.0, 0152 ; MIPS32FP32: [[LW:%[0-9]+]]:gpr32 = LW [[ADDiu]], 0 :: (load (s32) from %fixed-stack.0, align 8)153 ; MIPS32FP32: [[ANDi:%[0-9]+]]:gpr32 = ANDi [[LW]], 1154 ; MIPS32FP32: [[MOVN_I_D32_:%[0-9]+]]:afgr64 = MOVN_I_D32 [[COPY]], [[ANDi]], [[COPY1]]155 ; MIPS32FP32: $d0 = COPY [[MOVN_I_D32_]]156 ; MIPS32FP32: RetRA implicit $d0157 ; MIPS32FP64-LABEL: name: select_double158 ; MIPS32FP64: liveins: $d6, $d7159 ; MIPS32FP64: [[COPY:%[0-9]+]]:fgr64 = COPY $d6160 ; MIPS32FP64: [[COPY1:%[0-9]+]]:fgr64 = COPY $d7161 ; MIPS32FP64: [[ADDiu:%[0-9]+]]:gpr32 = ADDiu %fixed-stack.0, 0162 ; MIPS32FP64: [[LW:%[0-9]+]]:gpr32 = LW [[ADDiu]], 0 :: (load (s32) from %fixed-stack.0, align 8)163 ; MIPS32FP64: [[ANDi:%[0-9]+]]:gpr32 = ANDi [[LW]], 1164 ; MIPS32FP64: [[MOVN_I_D64_:%[0-9]+]]:fgr64 = MOVN_I_D64 [[COPY]], [[ANDi]], [[COPY1]]165 ; MIPS32FP64: $d0 = COPY [[MOVN_I_D64_]]166 ; MIPS32FP64: RetRA implicit $d0167 %0:fprb(s64) = COPY $d6168 %1:fprb(s64) = COPY $d7169 %4:gprb(p0) = G_FRAME_INDEX %fixed-stack.0170 %3:gprb(s32) = G_LOAD %4(p0) :: (load (s32) from %fixed-stack.0, align 8)171 %7:gprb(s32) = G_CONSTANT i32 1172 %8:gprb(s32) = COPY %3(s32)173 %6:gprb(s32) = G_AND %8, %7174 %5:fprb(s64) = G_SELECT %6(s32), %0, %1175 $d0 = COPY %5(s64)176 RetRA implicit $d0177 178...179