1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -O0 -mtriple=mipsel-linux-gnu -run-pass=regbankselect -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=FP32 3# RUN: llc -O0 -mtriple=mipsel-linux-gnu -mattr=+fp64,+mips32r2 -run-pass=regbankselect -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=FP64 4 5--- | 6 7 define void @float_add() {entry: ret void} 8 define void @float_sub() {entry: ret void} 9 define void @float_mul() {entry: ret void} 10 define void @float_div() {entry: ret void} 11 define void @double_add() {entry: ret void} 12 define void @double_sub() {entry: ret void} 13 define void @double_mul() {entry: ret void} 14 define void @double_div() {entry: ret void} 15 16... 17--- 18name: float_add 19alignment: 4 20legalized: true 21tracksRegLiveness: true 22body: | 23 bb.1.entry: 24 liveins: $f12, $f14 25 26 ; FP32-LABEL: name: float_add 27 ; FP32: liveins: $f12, $f14 28 ; FP32: [[COPY:%[0-9]+]]:fprb(s32) = COPY $f12 29 ; FP32: [[COPY1:%[0-9]+]]:fprb(s32) = COPY $f14 30 ; FP32: [[FADD:%[0-9]+]]:fprb(s32) = G_FADD [[COPY]], [[COPY1]] 31 ; FP32: $f0 = COPY [[FADD]](s32) 32 ; FP32: RetRA implicit $f0 33 ; FP64-LABEL: name: float_add 34 ; FP64: liveins: $f12, $f14 35 ; FP64: [[COPY:%[0-9]+]]:fprb(s32) = COPY $f12 36 ; FP64: [[COPY1:%[0-9]+]]:fprb(s32) = COPY $f14 37 ; FP64: [[FADD:%[0-9]+]]:fprb(s32) = G_FADD [[COPY]], [[COPY1]] 38 ; FP64: $f0 = COPY [[FADD]](s32) 39 ; FP64: RetRA implicit $f0 40 %0:_(s32) = COPY $f12 41 %1:_(s32) = COPY $f14 42 %2:_(s32) = G_FADD %0, %1 43 $f0 = COPY %2(s32) 44 RetRA implicit $f0 45 46... 47--- 48name: float_sub 49alignment: 4 50legalized: true 51tracksRegLiveness: true 52body: | 53 bb.1.entry: 54 liveins: $f12, $f14 55 56 ; FP32-LABEL: name: float_sub 57 ; FP32: liveins: $f12, $f14 58 ; FP32: [[COPY:%[0-9]+]]:fprb(s32) = COPY $f12 59 ; FP32: [[COPY1:%[0-9]+]]:fprb(s32) = COPY $f14 60 ; FP32: [[FSUB:%[0-9]+]]:fprb(s32) = G_FSUB [[COPY]], [[COPY1]] 61 ; FP32: $f0 = COPY [[FSUB]](s32) 62 ; FP32: RetRA implicit $f0 63 ; FP64-LABEL: name: float_sub 64 ; FP64: liveins: $f12, $f14 65 ; FP64: [[COPY:%[0-9]+]]:fprb(s32) = COPY $f12 66 ; FP64: [[COPY1:%[0-9]+]]:fprb(s32) = COPY $f14 67 ; FP64: [[FSUB:%[0-9]+]]:fprb(s32) = G_FSUB [[COPY]], [[COPY1]] 68 ; FP64: $f0 = COPY [[FSUB]](s32) 69 ; FP64: RetRA implicit $f0 70 %0:_(s32) = COPY $f12 71 %1:_(s32) = COPY $f14 72 %2:_(s32) = G_FSUB %0, %1 73 $f0 = COPY %2(s32) 74 RetRA implicit $f0 75 76... 77--- 78name: float_mul 79alignment: 4 80legalized: true 81tracksRegLiveness: true 82body: | 83 bb.1.entry: 84 liveins: $f12, $f14 85 86 ; FP32-LABEL: name: float_mul 87 ; FP32: liveins: $f12, $f14 88 ; FP32: [[COPY:%[0-9]+]]:fprb(s32) = COPY $f12 89 ; FP32: [[COPY1:%[0-9]+]]:fprb(s32) = COPY $f14 90 ; FP32: [[FMUL:%[0-9]+]]:fprb(s32) = G_FMUL [[COPY]], [[COPY1]] 91 ; FP32: $f0 = COPY [[FMUL]](s32) 92 ; FP32: RetRA implicit $f0 93 ; FP64-LABEL: name: float_mul 94 ; FP64: liveins: $f12, $f14 95 ; FP64: [[COPY:%[0-9]+]]:fprb(s32) = COPY $f12 96 ; FP64: [[COPY1:%[0-9]+]]:fprb(s32) = COPY $f14 97 ; FP64: [[FMUL:%[0-9]+]]:fprb(s32) = G_FMUL [[COPY]], [[COPY1]] 98 ; FP64: $f0 = COPY [[FMUL]](s32) 99 ; FP64: RetRA implicit $f0 100 %0:_(s32) = COPY $f12 101 %1:_(s32) = COPY $f14 102 %2:_(s32) = G_FMUL %0, %1 103 $f0 = COPY %2(s32) 104 RetRA implicit $f0 105 106... 107--- 108name: float_div 109alignment: 4 110legalized: true 111tracksRegLiveness: true 112body: | 113 bb.1.entry: 114 liveins: $f12, $f14 115 116 ; FP32-LABEL: name: float_div 117 ; FP32: liveins: $f12, $f14 118 ; FP32: [[COPY:%[0-9]+]]:fprb(s32) = COPY $f12 119 ; FP32: [[COPY1:%[0-9]+]]:fprb(s32) = COPY $f14 120 ; FP32: [[FDIV:%[0-9]+]]:fprb(s32) = G_FDIV [[COPY]], [[COPY1]] 121 ; FP32: $f0 = COPY [[FDIV]](s32) 122 ; FP32: RetRA implicit $f0 123 ; FP64-LABEL: name: float_div 124 ; FP64: liveins: $f12, $f14 125 ; FP64: [[COPY:%[0-9]+]]:fprb(s32) = COPY $f12 126 ; FP64: [[COPY1:%[0-9]+]]:fprb(s32) = COPY $f14 127 ; FP64: [[FDIV:%[0-9]+]]:fprb(s32) = G_FDIV [[COPY]], [[COPY1]] 128 ; FP64: $f0 = COPY [[FDIV]](s32) 129 ; FP64: RetRA implicit $f0 130 %0:_(s32) = COPY $f12 131 %1:_(s32) = COPY $f14 132 %2:_(s32) = G_FDIV %0, %1 133 $f0 = COPY %2(s32) 134 RetRA implicit $f0 135 136... 137--- 138name: double_add 139alignment: 4 140legalized: true 141tracksRegLiveness: true 142body: | 143 bb.1.entry: 144 liveins: $d6, $d7 145 146 ; FP32-LABEL: name: double_add 147 ; FP32: liveins: $d6, $d7 148 ; FP32: [[COPY:%[0-9]+]]:fprb(s64) = COPY $d6 149 ; FP32: [[COPY1:%[0-9]+]]:fprb(s64) = COPY $d7 150 ; FP32: [[FADD:%[0-9]+]]:fprb(s64) = G_FADD [[COPY]], [[COPY1]] 151 ; FP32: $d0 = COPY [[FADD]](s64) 152 ; FP32: RetRA implicit $d0 153 ; FP64-LABEL: name: double_add 154 ; FP64: liveins: $d6, $d7 155 ; FP64: [[COPY:%[0-9]+]]:fprb(s64) = COPY $d6 156 ; FP64: [[COPY1:%[0-9]+]]:fprb(s64) = COPY $d7 157 ; FP64: [[FADD:%[0-9]+]]:fprb(s64) = G_FADD [[COPY]], [[COPY1]] 158 ; FP64: $d0 = COPY [[FADD]](s64) 159 ; FP64: RetRA implicit $d0 160 %0:_(s64) = COPY $d6 161 %1:_(s64) = COPY $d7 162 %2:_(s64) = G_FADD %0, %1 163 $d0 = COPY %2(s64) 164 RetRA implicit $d0 165 166... 167--- 168name: double_sub 169alignment: 4 170legalized: true 171tracksRegLiveness: true 172body: | 173 bb.1.entry: 174 liveins: $d6, $d7 175 176 ; FP32-LABEL: name: double_sub 177 ; FP32: liveins: $d6, $d7 178 ; FP32: [[COPY:%[0-9]+]]:fprb(s64) = COPY $d6 179 ; FP32: [[COPY1:%[0-9]+]]:fprb(s64) = COPY $d7 180 ; FP32: [[FSUB:%[0-9]+]]:fprb(s64) = G_FSUB [[COPY]], [[COPY1]] 181 ; FP32: $d0 = COPY [[FSUB]](s64) 182 ; FP32: RetRA implicit $d0 183 ; FP64-LABEL: name: double_sub 184 ; FP64: liveins: $d6, $d7 185 ; FP64: [[COPY:%[0-9]+]]:fprb(s64) = COPY $d6 186 ; FP64: [[COPY1:%[0-9]+]]:fprb(s64) = COPY $d7 187 ; FP64: [[FSUB:%[0-9]+]]:fprb(s64) = G_FSUB [[COPY]], [[COPY1]] 188 ; FP64: $d0 = COPY [[FSUB]](s64) 189 ; FP64: RetRA implicit $d0 190 %0:_(s64) = COPY $d6 191 %1:_(s64) = COPY $d7 192 %2:_(s64) = G_FSUB %0, %1 193 $d0 = COPY %2(s64) 194 RetRA implicit $d0 195 196... 197--- 198name: double_mul 199alignment: 4 200legalized: true 201tracksRegLiveness: true 202body: | 203 bb.1.entry: 204 liveins: $d6, $d7 205 206 ; FP32-LABEL: name: double_mul 207 ; FP32: liveins: $d6, $d7 208 ; FP32: [[COPY:%[0-9]+]]:fprb(s64) = COPY $d6 209 ; FP32: [[COPY1:%[0-9]+]]:fprb(s64) = COPY $d7 210 ; FP32: [[FMUL:%[0-9]+]]:fprb(s64) = G_FMUL [[COPY]], [[COPY1]] 211 ; FP32: $d0 = COPY [[FMUL]](s64) 212 ; FP32: RetRA implicit $d0 213 ; FP64-LABEL: name: double_mul 214 ; FP64: liveins: $d6, $d7 215 ; FP64: [[COPY:%[0-9]+]]:fprb(s64) = COPY $d6 216 ; FP64: [[COPY1:%[0-9]+]]:fprb(s64) = COPY $d7 217 ; FP64: [[FMUL:%[0-9]+]]:fprb(s64) = G_FMUL [[COPY]], [[COPY1]] 218 ; FP64: $d0 = COPY [[FMUL]](s64) 219 ; FP64: RetRA implicit $d0 220 %0:_(s64) = COPY $d6 221 %1:_(s64) = COPY $d7 222 %2:_(s64) = G_FMUL %0, %1 223 $d0 = COPY %2(s64) 224 RetRA implicit $d0 225 226... 227--- 228name: double_div 229alignment: 4 230legalized: true 231tracksRegLiveness: true 232body: | 233 bb.1.entry: 234 liveins: $d6, $d7 235 236 ; FP32-LABEL: name: double_div 237 ; FP32: liveins: $d6, $d7 238 ; FP32: [[COPY:%[0-9]+]]:fprb(s64) = COPY $d6 239 ; FP32: [[COPY1:%[0-9]+]]:fprb(s64) = COPY $d7 240 ; FP32: [[FDIV:%[0-9]+]]:fprb(s64) = G_FDIV [[COPY]], [[COPY1]] 241 ; FP32: $d0 = COPY [[FDIV]](s64) 242 ; FP32: RetRA implicit $d0 243 ; FP64-LABEL: name: double_div 244 ; FP64: liveins: $d6, $d7 245 ; FP64: [[COPY:%[0-9]+]]:fprb(s64) = COPY $d6 246 ; FP64: [[COPY1:%[0-9]+]]:fprb(s64) = COPY $d7 247 ; FP64: [[FDIV:%[0-9]+]]:fprb(s64) = G_FDIV [[COPY]], [[COPY1]] 248 ; FP64: $d0 = COPY [[FDIV]](s64) 249 ; FP64: RetRA implicit $d0 250 %0:_(s64) = COPY $d6 251 %1:_(s64) = COPY $d7 252 %2:_(s64) = G_FDIV %0, %1 253 $d0 = COPY %2(s64) 254 RetRA implicit $d0 255 256... 257