1 # RUN: llc -run-pass ppc-mi-peepholes -ppc-convert-rr-to-ri %s -o - | FileCheck %s 2 # RUN: llc -start-after ppc-mi-peepholes -ppc-late-peephole %s -o - | FileCheck %s --check-prefix=CHECK-LATE 3 4 --- | 5 ; ModuleID = 'convert-rr-to-ri-instrs.ll' 6 source_filename = "convert-rr-to-ri-instrs.c" 7 target datalayout = "e-m:e-i64:64-n32:64" 8 target triple = "powerpc64le-unknown-linux-gnu" 9 10 ; Function Attrs: norecurse nounwind readnone 11 define signext i32 @testADD4(i32 signext %a, i32 signext %b) local_unnamed_addr #0 { 12 entry: 13 %add = add nsw i32 %a, 33 14 %add1 = add nsw i32 %add, %b 15 ret i32 %add1 16 } 17 18 ; Function Attrs: norecurse nounwind readnone 19 define i64 @testADD8(i64 %a, i64 %b) local_unnamed_addr #0 { 20 entry: 21 %add = add nsw i64 %a, 33 22 %add1 = add nsw i64 %add, %b 23 ret i64 %add1 24 } 25 26 ; Function Attrs: norecurse nounwind readnone 27 define i128 @testADDC(i128 %a, i128 %b) local_unnamed_addr #0 { 28 entry: 29 %add = add nsw i128 %b, %a 30 ret i128 %add 31 } 32 33 ; Function Attrs: norecurse nounwind readnone 34 define i128 @testADDC8(i128 %a, i128 %b) local_unnamed_addr #0 { 35 entry: 36 %add = add nsw i128 %b, %a 37 ret i128 %add 38 } 39 40 ; Function Attrs: norecurse nounwind readnone 41 define i64 @testADDCo(i64 %a, i64 %b) local_unnamed_addr #0 { 42 entry: 43 %add = add nsw i64 %b, %a 44 %cmp = icmp eq i64 %add, 0 45 %neg = sext i1 %cmp to i64 46 %retval.0 = xor i64 %add, %neg 47 ret i64 %retval.0 48 } 49 50 ; Function Attrs: norecurse nounwind readnone 51 define signext i32 @testADDI(i32 signext %a) local_unnamed_addr #0 { 52 entry: 53 %add = add nsw i32 %a, 44 54 ret i32 %add 55 } 56 57 ; Function Attrs: norecurse nounwind readnone 58 define signext i32 @testADDI8(i32 signext %a) local_unnamed_addr #0 { 59 entry: 60 %add = add nsw i32 %a, 44 61 ret i32 %add 62 } 63 64 ; Function Attrs: norecurse nounwind readnone 65 define signext i32 @testANDo(i64 %a, i64 %b) local_unnamed_addr #0 { 66 entry: 67 %and = and i64 %b, %a 68 %tobool = icmp eq i64 %and, 0 69 %cond = select i1 %tobool, i64 %b, i64 %a 70 %conv = trunc i64 %cond to i32 71 ret i32 %conv 72 } 73 74 ; Function Attrs: norecurse nounwind readnone 75 define i64 @testAND8o(i64 %a, i64 %b) local_unnamed_addr #0 { 76 entry: 77 %and = and i64 %b, %a 78 %tobool = icmp eq i64 %and, 0 79 %cond = select i1 %tobool, i64 %b, i64 %a 80 ret i64 %cond 81 } 82 83 ; Function Attrs: norecurse nounwind readnone 84 define i64 @testCMPD(i64 %a, i64 %b) local_unnamed_addr #0 { 85 entry: 86 %cmp = icmp sgt i64 %a, %b 87 %add = select i1 %cmp, i64 0, i64 %a 88 %cond = add nsw i64 %add, %b 89 ret i64 %cond 90 } 91 92 ; Function Attrs: norecurse nounwind readnone 93 define i64 @testCMPDI(i64 %a, i64 %b) local_unnamed_addr #0 { 94 entry: 95 %cmp = icmp sgt i64 %a, 87 96 %add = select i1 %cmp, i64 0, i64 %a 97 %cond = add nsw i64 %add, %b 98 ret i64 %cond 99 } 100 101 ; Function Attrs: norecurse nounwind readnone 102 define i64 @testCMPDI_F(i64 %a, i64 %b) local_unnamed_addr #0 { 103 entry: 104 %cmp = icmp sgt i64 %a, 87 105 %add = select i1 %cmp, i64 0, i64 %a 106 %cond = add nsw i64 %add, %b 107 ret i64 %cond 108 } 109 110 ; Function Attrs: norecurse nounwind readnone 111 define i64 @testCMPLD(i64 %a, i64 %b) local_unnamed_addr #0 { 112 entry: 113 %cmp = icmp ugt i64 %a, %b 114 %add = select i1 %cmp, i64 0, i64 %a 115 %cond = add i64 %add, %b 116 ret i64 %cond 117 } 118 119 ; Function Attrs: norecurse nounwind readnone 120 define i64 @testCMPLDI(i64 %a, i64 %b) local_unnamed_addr #0 { 121 entry: 122 %cmp = icmp ugt i64 %a, 87 123 %add = select i1 %cmp, i64 0, i64 %a 124 %cond = add i64 %add, %b 125 ret i64 %cond 126 } 127 128 ; Function Attrs: norecurse nounwind readnone 129 define signext i32 @testCMPW(i32 signext %a, i32 signext %b) local_unnamed_addr #0 { 130 entry: 131 %cmp = icmp sgt i32 %a, %b 132 %add = select i1 %cmp, i32 0, i32 %a 133 %cond = add nsw i32 %add, %b 134 ret i32 %cond 135 } 136 137 ; Function Attrs: norecurse nounwind readnone 138 define signext i32 @testCMPWI(i32 signext %a, i32 signext %b) local_unnamed_addr #0 { 139 entry: 140 %cmp = icmp sgt i32 %a, 87 141 %add = select i1 %cmp, i32 0, i32 %a 142 %cond = add nsw i32 %add, %b 143 ret i32 %cond 144 } 145 146 ; Function Attrs: norecurse nounwind readnone 147 define zeroext i32 @testCMPLW(i32 zeroext %a, i32 zeroext %b) local_unnamed_addr #0 { 148 entry: 149 %cmp = icmp ugt i32 %a, %b 150 %add = select i1 %cmp, i32 0, i32 %a 151 %cond = add i32 %add, %b 152 ret i32 %cond 153 } 154 155 ; Function Attrs: norecurse nounwind readnone 156 define zeroext i32 @testCMPLWI(i32 zeroext %a, i32 zeroext %b) local_unnamed_addr #0 { 157 entry: 158 %cmp = icmp ugt i32 %a, 87 159 %add = select i1 %cmp, i32 0, i32 %a 160 %cond = add i32 %add, %b 161 ret i32 %cond 162 } 163 164 ; Function Attrs: norecurse nounwind readonly 165 define zeroext i8 @testLBZUX(i8* nocapture readonly %ptr, i32 zeroext %idx) local_unnamed_addr #1 { 166 entry: 167 %add = add i32 %idx, 1 168 %idxprom = zext i32 %add to i64 169 %arrayidx = getelementptr inbounds i8, i8* %ptr, i64 %idxprom 170 %0 = load i8, i8* %arrayidx, align 1, !tbaa !3 171 %conv = zext i8 %0 to i32 172 %add1 = add i32 %idx, 2 173 %idxprom2 = zext i32 %add1 to i64 174 %arrayidx3 = getelementptr inbounds i8, i8* %ptr, i64 %idxprom2 175 %1 = load i8, i8* %arrayidx3, align 1, !tbaa !3 176 %conv4 = zext i8 %1 to i32 177 %add5 = add nuw nsw i32 %conv4, %conv 178 %conv6 = trunc i32 %add5 to i8 179 ret i8 %conv6 180 } 181 182 ; Function Attrs: norecurse nounwind readonly 183 define zeroext i8 @testLBZX(i8* nocapture readonly %ptr, i32 zeroext %idx) local_unnamed_addr #1 { 184 entry: 185 %add = add i32 %idx, 1 186 %idxprom = zext i32 %add to i64 187 %arrayidx = getelementptr inbounds i8, i8* %ptr, i64 %idxprom 188 %0 = load i8, i8* %arrayidx, align 1, !tbaa !3 189 %conv = zext i8 %0 to i32 190 %add1 = add i32 %idx, 2 191 %idxprom2 = zext i32 %add1 to i64 192 %arrayidx3 = getelementptr inbounds i8, i8* %ptr, i64 %idxprom2 193 %1 = load i8, i8* %arrayidx3, align 1, !tbaa !3 194 %conv4 = zext i8 %1 to i32 195 %add5 = add nuw nsw i32 %conv4, %conv 196 %conv6 = trunc i32 %add5 to i8 197 ret i8 %conv6 198 } 199 200 ; Function Attrs: norecurse nounwind readonly 201 define zeroext i16 @testLHZUX(i16* nocapture readonly %ptr, i32 zeroext %idx) local_unnamed_addr #1 { 202 entry: 203 %add = add i32 %idx, 1 204 %idxprom = zext i32 %add to i64 205 %arrayidx = getelementptr inbounds i16, i16* %ptr, i64 %idxprom 206 %0 = load i16, i16* %arrayidx, align 2, !tbaa !6 207 %conv = zext i16 %0 to i32 208 %add1 = add i32 %idx, 2 209 %idxprom2 = zext i32 %add1 to i64 210 %arrayidx3 = getelementptr inbounds i16, i16* %ptr, i64 %idxprom2 211 %1 = load i16, i16* %arrayidx3, align 2, !tbaa !6 212 %conv4 = zext i16 %1 to i32 213 %add5 = add nuw nsw i32 %conv4, %conv 214 %conv6 = trunc i32 %add5 to i16 215 ret i16 %conv6 216 } 217 218 ; Function Attrs: norecurse nounwind readonly 219 define zeroext i16 @testLHZX(i16* nocapture readonly %ptr, i32 zeroext %idx) local_unnamed_addr #1 { 220 entry: 221 %add = add i32 %idx, 1 222 %idxprom = zext i32 %add to i64 223 %arrayidx = getelementptr inbounds i16, i16* %ptr, i64 %idxprom 224 %0 = load i16, i16* %arrayidx, align 2, !tbaa !6 225 %conv = zext i16 %0 to i32 226 %add1 = add i32 %idx, 2 227 %idxprom2 = zext i32 %add1 to i64 228 %arrayidx3 = getelementptr inbounds i16, i16* %ptr, i64 %idxprom2 229 %1 = load i16, i16* %arrayidx3, align 2, !tbaa !6 230 %conv4 = zext i16 %1 to i32 231 %add5 = add nuw nsw i32 %conv4, %conv 232 %conv6 = trunc i32 %add5 to i16 233 ret i16 %conv6 234 } 235 236 ; Function Attrs: norecurse nounwind readonly 237 define signext i16 @testLHAUX(i16* nocapture readonly %ptr, i32 zeroext %idx) local_unnamed_addr #1 { 238 entry: 239 %add = add i32 %idx, 1 240 %idxprom = zext i32 %add to i64 241 %arrayidx = getelementptr inbounds i16, i16* %ptr, i64 %idxprom 242 %0 = load i16, i16* %arrayidx, align 2, !tbaa !6 243 %conv9 = zext i16 %0 to i32 244 %add1 = add i32 %idx, 2 245 %idxprom2 = zext i32 %add1 to i64 246 %arrayidx3 = getelementptr inbounds i16, i16* %ptr, i64 %idxprom2 247 %1 = load i16, i16* %arrayidx3, align 2, !tbaa !6 248 %conv410 = zext i16 %1 to i32 249 %add5 = add nuw nsw i32 %conv410, %conv9 250 %conv6 = trunc i32 %add5 to i16 251 ret i16 %conv6 252 } 253 254 ; Function Attrs: norecurse nounwind readonly 255 define signext i16 @testLHAX(i16* nocapture readonly %ptr, i32 zeroext %idx) local_unnamed_addr #1 { 256 entry: 257 %add = add i32 %idx, 1 258 %idxprom = zext i32 %add to i64 259 %arrayidx = getelementptr inbounds i16, i16* %ptr, i64 %idxprom 260 %0 = load i16, i16* %arrayidx, align 2, !tbaa !6 261 %conv9 = zext i16 %0 to i32 262 %add1 = add i32 %idx, 2 263 %idxprom2 = zext i32 %add1 to i64 264 %arrayidx3 = getelementptr inbounds i16, i16* %ptr, i64 %idxprom2 265 %1 = load i16, i16* %arrayidx3, align 2, !tbaa !6 266 %conv410 = zext i16 %1 to i32 267 %add5 = add nuw nsw i32 %conv410, %conv9 268 %conv6 = trunc i32 %add5 to i16 269 ret i16 %conv6 270 } 271 272 ; Function Attrs: norecurse nounwind readonly 273 define zeroext i32 @testLWZUX(i32* nocapture readonly %ptr, i32 zeroext %idx) local_unnamed_addr #1 { 274 entry: 275 %add = add i32 %idx, 1 276 %idxprom = zext i32 %add to i64 277 %arrayidx = getelementptr inbounds i32, i32* %ptr, i64 %idxprom 278 %0 = load i32, i32* %arrayidx, align 4, !tbaa !8 279 %add1 = add i32 %idx, 2 280 %idxprom2 = zext i32 %add1 to i64 281 %arrayidx3 = getelementptr inbounds i32, i32* %ptr, i64 %idxprom2 282 %1 = load i32, i32* %arrayidx3, align 4, !tbaa !8 283 %add4 = add i32 %1, %0 284 ret i32 %add4 285 } 286 287 ; Function Attrs: norecurse nounwind readonly 288 define zeroext i32 @testLWZX(i32* nocapture readonly %ptr, i32 zeroext %idx) local_unnamed_addr #1 { 289 entry: 290 %add = add i32 %idx, 1 291 %idxprom = zext i32 %add to i64 292 %arrayidx = getelementptr inbounds i32, i32* %ptr, i64 %idxprom 293 %0 = load i32, i32* %arrayidx, align 4, !tbaa !8 294 %add1 = add i32 %idx, 2 295 %idxprom2 = zext i32 %add1 to i64 296 %arrayidx3 = getelementptr inbounds i32, i32* %ptr, i64 %idxprom2 297 %1 = load i32, i32* %arrayidx3, align 4, !tbaa !8 298 %add4 = add i32 %1, %0 299 ret i32 %add4 300 } 301 302 ; Function Attrs: norecurse nounwind readonly 303 define i64 @testLWAX(i32* nocapture readonly %ptr, i32 zeroext %idx) local_unnamed_addr #1 { 304 entry: 305 %add = add i32 %idx, 1 306 %idxprom = zext i32 %add to i64 307 %arrayidx = getelementptr inbounds i32, i32* %ptr, i64 %idxprom 308 %0 = load i32, i32* %arrayidx, align 4, !tbaa !8 309 %conv = sext i32 %0 to i64 310 %add1 = add i32 %idx, 2 311 %idxprom2 = zext i32 %add1 to i64 312 %arrayidx3 = getelementptr inbounds i32, i32* %ptr, i64 %idxprom2 313 %1 = load i32, i32* %arrayidx3, align 4, !tbaa !8 314 %conv4 = sext i32 %1 to i64 315 %add5 = add nsw i64 %conv4, %conv 316 ret i64 %add5 317 } 318 319 ; Function Attrs: norecurse nounwind readonly 320 define i64 @testLDUX(i64* nocapture readonly %ptr, i32 zeroext %idx) local_unnamed_addr #1 { 321 entry: 322 %add = add i32 %idx, 1 323 %idxprom = zext i32 %add to i64 324 %arrayidx = getelementptr inbounds i64, i64* %ptr, i64 %idxprom 325 %0 = load i64, i64* %arrayidx, align 8, !tbaa !10 326 %add1 = add i32 %idx, 2 327 %idxprom2 = zext i32 %add1 to i64 328 %arrayidx3 = getelementptr inbounds i64, i64* %ptr, i64 %idxprom2 329 %1 = load i64, i64* %arrayidx3, align 8, !tbaa !10 330 %add4 = add i64 %1, %0 331 ret i64 %add4 332 } 333 334 ; Function Attrs: norecurse nounwind readonly 335 define i64 @testLDX(i64* nocapture readonly %ptr, i32 zeroext %idx) local_unnamed_addr #1 { 336 entry: 337 %add = add i32 %idx, 1 338 %idxprom = zext i32 %add to i64 339 %arrayidx = getelementptr inbounds i64, i64* %ptr, i64 %idxprom 340 %0 = load i64, i64* %arrayidx, align 8, !tbaa !10 341 %add1 = add i32 %idx, 2 342 %idxprom2 = zext i32 %add1 to i64 343 %arrayidx3 = getelementptr inbounds i64, i64* %ptr, i64 %idxprom2 344 %1 = load i64, i64* %arrayidx3, align 8, !tbaa !10 345 %add4 = add i64 %1, %0 346 ret i64 %add4 347 } 348 349 ; Function Attrs: norecurse nounwind readonly 350 define double @testLFDUX(double* nocapture readonly %ptr, i32 zeroext %idx) local_unnamed_addr #2 { 351 entry: 352 %add = add i32 %idx, 1 353 %idxprom = zext i32 %add to i64 354 %arrayidx = getelementptr inbounds double, double* %ptr, i64 %idxprom 355 %0 = load double, double* %arrayidx, align 8, !tbaa !12 356 %add1 = add i32 %idx, 2 357 %idxprom2 = zext i32 %add1 to i64 358 %arrayidx3 = getelementptr inbounds double, double* %ptr, i64 %idxprom2 359 %1 = load double, double* %arrayidx3, align 8, !tbaa !12 360 %add4 = fadd double %0, %1 361 ret double %add4 362 } 363 364 ; Function Attrs: norecurse nounwind readonly 365 define double @testLFDX(double* nocapture readonly %ptr, i32 zeroext %idx) local_unnamed_addr #2 { 366 entry: 367 %add = add i32 %idx, 1 368 %idxprom = zext i32 %add to i64 369 %arrayidx = getelementptr inbounds double, double* %ptr, i64 %idxprom 370 %0 = load double, double* %arrayidx, align 8, !tbaa !12 371 %add1 = add i32 %idx, 2 372 %idxprom2 = zext i32 %add1 to i64 373 %arrayidx3 = getelementptr inbounds double, double* %ptr, i64 %idxprom2 374 %1 = load double, double* %arrayidx3, align 8, !tbaa !12 375 %add4 = fadd double %0, %1 376 ret double %add4 377 } 378 379 ; Function Attrs: norecurse nounwind readonly 380 define <4 x float> @testLFSUX(float* nocapture readonly %ptr, i32 signext %idx) local_unnamed_addr #2 { 381 entry: 382 %idxprom = sext i32 %idx to i64 383 %arrayidx = getelementptr inbounds float, float* %ptr, i64 %idxprom 384 %0 = load float, float* %arrayidx, align 4, !tbaa !14 385 %conv = fptoui float %0 to i32 386 %vecinit = insertelement <4 x i32> undef, i32 %conv, i32 0 387 %1 = bitcast float* %ptr to i8* 388 %2 = shl i64 %idxprom, 2 389 %uglygep = getelementptr i8, i8* %1, i64 %2 390 %uglygep2 = getelementptr i8, i8* %uglygep, i64 4 391 %3 = bitcast i8* %uglygep2 to float* 392 %4 = load float, float* %3, align 4, !tbaa !14 393 %conv3 = fptoui float %4 to i32 394 %vecinit4 = insertelement <4 x i32> %vecinit, i32 %conv3, i32 1 395 %uglygep5 = getelementptr i8, i8* %uglygep, i64 8 396 %5 = bitcast i8* %uglygep5 to float* 397 %6 = load float, float* %5, align 4, !tbaa !14 398 %conv8 = fptoui float %6 to i32 399 %vecinit9 = insertelement <4 x i32> %vecinit4, i32 %conv8, i32 2 400 %uglygep8 = getelementptr i8, i8* %uglygep, i64 12 401 %7 = bitcast i8* %uglygep8 to float* 402 %8 = load float, float* %7, align 4, !tbaa !14 403 %conv13 = fptoui float %8 to i32 404 %vecinit14 = insertelement <4 x i32> %vecinit9, i32 %conv13, i32 3 405 %9 = bitcast <4 x i32> %vecinit14 to <4 x float> 406 ret <4 x float> %9 407 } 408 409 ; Function Attrs: norecurse nounwind readonly 410 define float @testLFSX(float* nocapture readonly %ptr, i32 zeroext %idx) local_unnamed_addr #2 { 411 entry: 412 %add = add i32 %idx, 1 413 %idxprom = zext i32 %add to i64 414 %arrayidx = getelementptr inbounds float, float* %ptr, i64 %idxprom 415 %0 = load float, float* %arrayidx, align 4, !tbaa !14 416 %add1 = add i32 %idx, 2 417 %idxprom2 = zext i32 %add1 to i64 418 %arrayidx3 = getelementptr inbounds float, float* %ptr, i64 %idxprom2 419 %1 = load float, float* %arrayidx3, align 4, !tbaa !14 420 %add4 = fadd float %0, %1 421 ret float %add4 422 } 423 424 ; Function Attrs: norecurse nounwind readonly 425 define double @testLXSDX(double* nocapture readonly %ptr, i32 zeroext %idx) local_unnamed_addr #1 { 426 entry: 427 %add = add i32 %idx, 1 428 %idxprom = zext i32 %add to i64 429 %arrayidx = getelementptr inbounds double, double* %ptr, i64 %idxprom 430 %0 = load double, double* %arrayidx, align 8, !tbaa !12 431 %add1 = add i32 %idx, 2 432 %idxprom2 = zext i32 %add1 to i64 433 %arrayidx3 = getelementptr inbounds double, double* %ptr, i64 %idxprom2 434 %1 = load double, double* %arrayidx3, align 8, !tbaa !12 435 %add4 = fadd double %0, %1 436 ret double %add4 437 } 438 439 ; Function Attrs: norecurse nounwind readonly 440 define float @testLXSSPX(float* nocapture readonly %ptr, i32 zeroext %idx) local_unnamed_addr #1 { 441 entry: 442 %add = add i32 %idx, 1 443 %idxprom = zext i32 %add to i64 444 %arrayidx = getelementptr inbounds float, float* %ptr, i64 %idxprom 445 %0 = load float, float* %arrayidx, align 4, !tbaa !14 446 %add1 = add i32 %idx, 2 447 %idxprom2 = zext i32 %add1 to i64 448 %arrayidx3 = getelementptr inbounds float, float* %ptr, i64 %idxprom2 449 %1 = load float, float* %arrayidx3, align 4, !tbaa !14 450 %add4 = fadd float %0, %1 451 ret float %add4 452 } 453 454 ; Function Attrs: norecurse nounwind readonly 455 define <4 x i32> @testLXVX(<4 x i32>* nocapture readonly %ptr, i32 zeroext %idx) local_unnamed_addr #1 { 456 entry: 457 %add = add i32 %idx, 1 458 %idxprom = zext i32 %add to i64 459 %arrayidx = getelementptr inbounds <4 x i32>, <4 x i32>* %ptr, i64 %idxprom 460 %0 = load <4 x i32>, <4 x i32>* %arrayidx, align 16, !tbaa !3 461 %add1 = add i32 %idx, 2 462 %idxprom2 = zext i32 %add1 to i64 463 %arrayidx3 = getelementptr inbounds <4 x i32>, <4 x i32>* %ptr, i64 %idxprom2 464 %1 = load <4 x i32>, <4 x i32>* %arrayidx3, align 16, !tbaa !3 465 %add4 = add <4 x i32> %1, %0 466 ret <4 x i32> %add4 467 } 468 469 ; Function Attrs: norecurse nounwind readnone 470 define signext i32 @testOR(i32 signext %a, i32 signext %b) local_unnamed_addr #0 { 471 entry: 472 %or = or i32 %b, %a 473 ret i32 %or 474 } 475 476 ; Function Attrs: norecurse nounwind readnone 477 define i64 @testOR8(i64 %a, i64 %b) local_unnamed_addr #0 { 478 entry: 479 %or = or i64 %b, %a 480 ret i64 %or 481 } 482 483 ; Function Attrs: norecurse nounwind readnone 484 define signext i32 @testORI(i32 signext %a) local_unnamed_addr #0 { 485 entry: 486 %or = or i32 %a, 88 487 ret i32 %or 488 } 489 490 ; Function Attrs: norecurse nounwind readnone 491 define i64 @testORI8(i64 %a) local_unnamed_addr #0 { 492 entry: 493 %or = or i64 %a, 99 494 ret i64 %or 495 } 496 497 ; Function Attrs: norecurse nounwind readnone 498 define i64 @testRLDCL(i64 %a, i64 %b) local_unnamed_addr #0 { 499 entry: 500 %and = and i64 %b, 63 501 %shl = shl i64 %a, %and 502 %sub = sub nsw i64 64, %and 503 %shr = lshr i64 %a, %sub 504 %or = or i64 %shr, %shl 505 ret i64 %or 506 } 507 508 ; Function Attrs: norecurse nounwind readnone 509 define i64 @testRLDCLo(i64 %a, i64 %b) local_unnamed_addr #0 { 510 entry: 511 %and = and i64 %b, 63 512 %shl = shl i64 %a, %and 513 %sub = sub nsw i64 64, %and 514 %shr = lshr i64 %a, %sub 515 %or = or i64 %shr, %shl 516 %tobool = icmp eq i64 %or, 0 517 %cond = select i1 %tobool, i64 %and, i64 %a 518 ret i64 %cond 519 } 520 521 ; Function Attrs: norecurse nounwind readnone 522 define i64 @testRLDCR(i64 %a, i64 %b) local_unnamed_addr #0 { 523 entry: 524 %and = and i64 %b, 63 525 %shl = shl i64 %a, %and 526 %sub = sub nsw i64 64, %and 527 %shr = lshr i64 %a, %sub 528 %or = or i64 %shr, %shl 529 ret i64 %or 530 } 531 532 ; Function Attrs: norecurse nounwind readnone 533 define i64 @testRLDCRo(i64 %a, i64 %b) local_unnamed_addr #0 { 534 entry: 535 %and = and i64 %b, 63 536 %shl = shl i64 %a, %and 537 %sub = sub nsw i64 64, %and 538 %shr = lshr i64 %a, %sub 539 %or = or i64 %shr, %shl 540 %tobool = icmp eq i64 %or, 0 541 %cond = select i1 %tobool, i64 %and, i64 %a 542 ret i64 %cond 543 } 544 545 ; Function Attrs: norecurse nounwind readnone 546 define i64 @testRLDICL(i64 %a) local_unnamed_addr #0 { 547 entry: 548 %shr = lshr i64 %a, 11 549 %and = and i64 %shr, 16777215 550 ret i64 %and 551 } 552 553 ; Function Attrs: norecurse nounwind readnone 554 define i64 @testRLDICLo(i64 %a, i64 %b) local_unnamed_addr #0 { 555 entry: 556 %shr = lshr i64 %a, 11 557 %and = and i64 %shr, 16777215 558 %tobool = icmp eq i64 %and, 0 559 %cond = select i1 %tobool, i64 %b, i64 %and 560 ret i64 %cond 561 } 562 563 ; Function Attrs: norecurse nounwind readnone 564 define i64 @testRLDICLo2(i64 %a, i64 %b) local_unnamed_addr #0 { 565 entry: 566 %shr = lshr i64 %a, 11 567 %and = and i64 %shr, 16777215 568 %tobool = icmp eq i64 %and, 0 569 %cond = select i1 %tobool, i64 %b, i64 %and 570 ret i64 %cond 571 } 572 573 ; Function Attrs: norecurse nounwind readnone 574 define i64 @testRLDICLo3(i64 %a, i64 %b) local_unnamed_addr #0 { 575 entry: 576 %shr = lshr i64 %a, 11 577 %and = and i64 %shr, 16777215 578 %tobool = icmp eq i64 %and, 0 579 %cond = select i1 %tobool, i64 %b, i64 %and 580 ret i64 %cond 581 } 582 583 ; Function Attrs: norecurse nounwind readnone 584 define zeroext i32 @testRLWINM(i32 zeroext %a) local_unnamed_addr #0 { 585 entry: 586 %shl = shl i32 %a, 4 587 %and = and i32 %shl, 4080 588 ret i32 %and 589 } 590 591 ; Function Attrs: norecurse nounwind readnone 592 define zeroext i32 @testRLWINMFullReg(i32 zeroext %a) local_unnamed_addr #0 { 593 entry: 594 %shl = shl i32 %a, 4 595 %and = and i32 %shl, 4080 596 ret i32 %and 597 } 598 599 ; Function Attrs: norecurse nounwind readnone 600 define zeroext i32 @testRLWINMFullRegOutOfRange(i32 zeroext %a) local_unnamed_addr #0 { 601 entry: 602 %shl = shl i32 %a, 4 603 %and = and i32 %shl, 4080 604 ret i32 %and 605 } 606 607 ; Function Attrs: norecurse nounwind readnone 608 define i64 @testRLWINM8(i64 %a) local_unnamed_addr #0 { 609 entry: 610 %shl = shl i64 %a, 4 611 %and = and i64 %shl, 4080 612 ret i64 %and 613 } 614 615 ; Function Attrs: norecurse nounwind readnone 616 define zeroext i32 @testRLWINMo(i32 zeroext %a, i32 zeroext %b) local_unnamed_addr #0 { 617 entry: 618 %and = and i32 %a, 255 619 %tobool = icmp eq i32 %and, 0 620 %cond = select i1 %tobool, i32 %b, i32 %a 621 ret i32 %cond 622 } 623 624 ; Function Attrs: norecurse nounwind readnone 625 define zeroext i32 @testRLWINMo2(i32 zeroext %a, i32 zeroext %b) local_unnamed_addr #0 { 626 entry: 627 %and = and i32 %a, 255 628 %tobool = icmp eq i32 %and, 0 629 %cond = select i1 %tobool, i32 %b, i32 %a 630 ret i32 %cond 631 } 632 633 ; Function Attrs: norecurse nounwind readnone 634 define i64 @testRLWINM8o(i64 %a, i64 %b) local_unnamed_addr #0 { 635 entry: 636 %a.tr = trunc i64 %a to i32 637 %0 = shl i32 %a.tr, 4 638 %conv = and i32 %0, 4080 639 %tobool = icmp eq i32 %conv, 0 640 %conv1 = zext i32 %conv to i64 641 %cond = select i1 %tobool, i64 %b, i64 %conv1 642 ret i64 %cond 643 } 644 645 ; Function Attrs: norecurse nounwind readnone 646 define i64 @testSLD(i64 %a, i64 %b) local_unnamed_addr #0 { 647 entry: 648 %shl = shl i64 %a, %b 649 ret i64 %shl 650 } 651 652 ; Function Attrs: norecurse nounwind readnone 653 define i64 @testSLDo(i64 %a, i64 %b) local_unnamed_addr #0 { 654 entry: 655 %shl = shl i64 %a, %b 656 %tobool = icmp eq i64 %shl, 0 657 %cond = select i1 %tobool, i64 %b, i64 %a 658 ret i64 %cond 659 } 660 661 ; Function Attrs: norecurse nounwind readnone 662 define i64 @testSRD(i64 %a, i64 %b) local_unnamed_addr #0 { 663 entry: 664 %shr = lshr i64 %a, %b 665 ret i64 %shr 666 } 667 668 ; Function Attrs: norecurse nounwind readnone 669 define i64 @testSRDo(i64 %a, i64 %b) local_unnamed_addr #0 { 670 entry: 671 %shr = lshr i64 %a, %b 672 %tobool = icmp eq i64 %shr, 0 673 %cond = select i1 %tobool, i64 %b, i64 %a 674 ret i64 %cond 675 } 676 677 ; Function Attrs: norecurse nounwind readnone 678 define zeroext i32 @testSLW(i32 zeroext %a, i32 zeroext %b) local_unnamed_addr #0 { 679 entry: 680 %shl = shl i32 %a, %b 681 ret i32 %shl 682 } 683 684 ; Function Attrs: norecurse nounwind readnone 685 define zeroext i32 @testSLWo(i32 zeroext %a, i32 zeroext %b) local_unnamed_addr #0 { 686 entry: 687 %shl = shl i32 %a, %b 688 %tobool = icmp eq i32 %shl, 0 689 %cond = select i1 %tobool, i32 %b, i32 %a 690 ret i32 %cond 691 } 692 693 ; Function Attrs: norecurse nounwind readnone 694 define zeroext i32 @testSRW(i32 zeroext %a, i32 zeroext %b) local_unnamed_addr #0 { 695 entry: 696 %shr = lshr i32 %a, %b 697 ret i32 %shr 698 } 699 700 ; Function Attrs: norecurse nounwind readnone 701 define zeroext i32 @testSRWo(i32 zeroext %a, i32 zeroext %b) local_unnamed_addr #0 { 702 entry: 703 %shr = lshr i32 %a, %b 704 %tobool = icmp eq i32 %shr, 0 705 %cond = select i1 %tobool, i32 %b, i32 %a 706 ret i32 %cond 707 } 708 709 ; Function Attrs: norecurse nounwind readnone 710 define signext i32 @testSRAW(i32 signext %a, i32 signext %b) local_unnamed_addr #0 { 711 entry: 712 %shr = ashr i32 %a, %b 713 ret i32 %shr 714 } 715 716 ; Function Attrs: norecurse nounwind readnone 717 define signext i32 @testSRAWo(i32 signext %a, i32 signext %b) local_unnamed_addr #0 { 718 entry: 719 %shr = ashr i32 %a, %b 720 %tobool = icmp eq i32 %shr, 0 721 %cond = select i1 %tobool, i32 %b, i32 %shr 722 ret i32 %cond 723 } 724 725 ; Function Attrs: norecurse nounwind readnone 726 define i64 @testSRAD(i64 %a, i64 %b) local_unnamed_addr #0 { 727 entry: 728 %shr = ashr i64 %a, %b 729 ret i64 %shr 730 } 731 732 ; Function Attrs: norecurse nounwind readnone 733 define i64 @testSRADo(i64 %a, i64 %b) local_unnamed_addr #0 { 734 entry: 735 %shr = ashr i64 %a, %b 736 %tobool = icmp eq i64 %shr, 0 737 %cond = select i1 %tobool, i64 %b, i64 %shr 738 ret i64 %cond 739 } 740 741 ; Function Attrs: norecurse nounwind 742 define void @testSTBUX(i8* nocapture %ptr, i8 zeroext %a, i32 zeroext %idx) local_unnamed_addr #3 { 743 entry: 744 %add = add i32 %idx, 1 745 %idxprom = zext i32 %add to i64 746 %arrayidx = getelementptr inbounds i8, i8* %ptr, i64 %idxprom 747 store i8 %a, i8* %arrayidx, align 1, !tbaa !3 748 %add1 = add i32 %idx, 2 749 %idxprom2 = zext i32 %add1 to i64 750 %arrayidx3 = getelementptr inbounds i8, i8* %ptr, i64 %idxprom2 751 store i8 %a, i8* %arrayidx3, align 1, !tbaa !3 752 ret void 753 } 754 755 ; Function Attrs: norecurse nounwind 756 define void @testSTBX(i8* nocapture %ptr, i8 zeroext %a, i32 zeroext %idx) local_unnamed_addr #3 { 757 entry: 758 %add = add i32 %idx, 1 759 %idxprom = zext i32 %add to i64 760 %arrayidx = getelementptr inbounds i8, i8* %ptr, i64 %idxprom 761 store i8 %a, i8* %arrayidx, align 1, !tbaa !3 762 %add1 = add i32 %idx, 2 763 %idxprom2 = zext i32 %add1 to i64 764 %arrayidx3 = getelementptr inbounds i8, i8* %ptr, i64 %idxprom2 765 store i8 %a, i8* %arrayidx3, align 1, !tbaa !3 766 ret void 767 } 768 769 ; Function Attrs: norecurse nounwind 770 define void @testSTHUX(i16* nocapture %ptr, i16 zeroext %a, i32 zeroext %idx) local_unnamed_addr #3 { 771 entry: 772 %add = add i32 %idx, 1 773 %idxprom = zext i32 %add to i64 774 %arrayidx = getelementptr inbounds i16, i16* %ptr, i64 %idxprom 775 store i16 %a, i16* %arrayidx, align 2, !tbaa !6 776 %add1 = add i32 %idx, 2 777 %idxprom2 = zext i32 %add1 to i64 778 %arrayidx3 = getelementptr inbounds i16, i16* %ptr, i64 %idxprom2 779 store i16 %a, i16* %arrayidx3, align 2, !tbaa !6 780 ret void 781 } 782 783 ; Function Attrs: norecurse nounwind 784 define void @testSTHX(i16* nocapture %ptr, i16 zeroext %a, i32 zeroext %idx) local_unnamed_addr #3 { 785 entry: 786 %add = add i32 %idx, 1 787 %idxprom = zext i32 %add to i64 788 %arrayidx = getelementptr inbounds i16, i16* %ptr, i64 %idxprom 789 store i16 %a, i16* %arrayidx, align 1, !tbaa !3 790 %add1 = add i32 %idx, 2 791 %idxprom2 = zext i32 %add1 to i64 792 %arrayidx3 = getelementptr inbounds i16, i16* %ptr, i64 %idxprom2 793 store i16 %a, i16* %arrayidx3, align 1, !tbaa !3 794 ret void 795 } 796 797 ; Function Attrs: norecurse nounwind 798 define void @testSTWUX(i32* nocapture %ptr, i32 zeroext %a, i32 zeroext %idx) local_unnamed_addr #3 { 799 entry: 800 %add = add i32 %idx, 1 801 %idxprom = zext i32 %add to i64 802 %arrayidx = getelementptr inbounds i32, i32* %ptr, i64 %idxprom 803 store i32 %a, i32* %arrayidx, align 4, !tbaa !8 804 %add1 = add i32 %idx, 2 805 %idxprom2 = zext i32 %add1 to i64 806 %arrayidx3 = getelementptr inbounds i32, i32* %ptr, i64 %idxprom2 807 store i32 %a, i32* %arrayidx3, align 4, !tbaa !8 808 ret void 809 } 810 811 ; Function Attrs: norecurse nounwind 812 define void @testSTWX(i32* nocapture %ptr, i32 zeroext %a, i32 zeroext %idx) local_unnamed_addr #3 { 813 entry: 814 %add = add i32 %idx, 1 815 %idxprom = zext i32 %add to i64 816 %arrayidx = getelementptr inbounds i32, i32* %ptr, i64 %idxprom 817 store i32 %a, i32* %arrayidx, align 4, !tbaa !8 818 %add1 = add i32 %idx, 2 819 %idxprom2 = zext i32 %add1 to i64 820 %arrayidx3 = getelementptr inbounds i32, i32* %ptr, i64 %idxprom2 821 store i32 %a, i32* %arrayidx3, align 4, !tbaa !8 822 ret void 823 } 824 825 ; Function Attrs: norecurse nounwind 826 define void @testSTDUX(i64* nocapture %ptr, i64 %a, i32 zeroext %idx) local_unnamed_addr #3 { 827 entry: 828 %add = add i32 %idx, 1 829 %idxprom = zext i32 %add to i64 830 %arrayidx = getelementptr inbounds i64, i64* %ptr, i64 %idxprom 831 store i64 %a, i64* %arrayidx, align 8, !tbaa !10 832 %add1 = add i32 %idx, 2 833 %idxprom2 = zext i32 %add1 to i64 834 %arrayidx3 = getelementptr inbounds i64, i64* %ptr, i64 %idxprom2 835 store i64 %a, i64* %arrayidx3, align 8, !tbaa !10 836 ret void 837 } 838 839 ; Function Attrs: norecurse nounwind 840 define void @testSTDX(i64* nocapture %ptr, i64 %a, i32 zeroext %idx) local_unnamed_addr #3 { 841 entry: 842 %add = add i32 %idx, 1 843 %idxprom = zext i32 %add to i64 844 %arrayidx = getelementptr inbounds i64, i64* %ptr, i64 %idxprom 845 store i64 %a, i64* %arrayidx, align 8, !tbaa !10 846 %add1 = add i32 %idx, 2 847 %idxprom2 = zext i32 %add1 to i64 848 %arrayidx3 = getelementptr inbounds i64, i64* %ptr, i64 %idxprom2 849 store i64 %a, i64* %arrayidx3, align 8, !tbaa !10 850 ret void 851 } 852 853 ; Function Attrs: norecurse nounwind readonly 854 define void @testSTFSX(float* nocapture %ptr, float %a, i32 zeroext %idx) local_unnamed_addr #2 { 855 entry: 856 %add = add i32 %idx, 1 857 %idxprom = zext i32 %add to i64 858 %arrayidx = getelementptr inbounds float, float* %ptr, i64 %idxprom 859 store float %a, float* %arrayidx, align 4, !tbaa !14 860 %add1 = add i32 %idx, 2 861 %idxprom2 = zext i32 %add1 to i64 862 %arrayidx3 = getelementptr inbounds float, float* %ptr, i64 %idxprom2 863 store float %a, float* %arrayidx3, align 4, !tbaa !14 864 ret void 865 } 866 867 ; Function Attrs: norecurse nounwind readonly 868 define void @testSTFSUX(float* nocapture %ptr, float %a, i32 zeroext %idx) local_unnamed_addr #2 { 869 entry: 870 %add = add i32 %idx, 1 871 %idxprom = zext i32 %add to i64 872 %arrayidx = getelementptr inbounds float, float* %ptr, i64 %idxprom 873 store float %a, float* %arrayidx, align 4, !tbaa !14 874 %add1 = add i32 %idx, 2 875 %idxprom2 = zext i32 %add1 to i64 876 %arrayidx3 = getelementptr inbounds float, float* %ptr, i64 %idxprom2 877 store float %a, float* %arrayidx3, align 4, !tbaa !14 878 ret void 879 } 880 881 ; Function Attrs: norecurse nounwind readonly 882 define void @testSTFDX(double* nocapture %ptr, double %a, i32 zeroext %idx) local_unnamed_addr #2 { 883 entry: 884 %add = add i32 %idx, 1 885 %idxprom = zext i32 %add to i64 886 %arrayidx = getelementptr inbounds double, double* %ptr, i64 %idxprom 887 store double %a, double* %arrayidx, align 8, !tbaa !12 888 %add1 = add i32 %idx, 2 889 %idxprom2 = zext i32 %add1 to i64 890 %arrayidx3 = getelementptr inbounds double, double* %ptr, i64 %idxprom2 891 store double %a, double* %arrayidx3, align 8, !tbaa !12 892 ret void 893 } 894 895 ; Function Attrs: norecurse nounwind readonly 896 define void @testSTFDUX(double* nocapture %ptr, double %a, i32 zeroext %idx) local_unnamed_addr #2 { 897 entry: 898 %add = add i32 %idx, 1 899 %idxprom = zext i32 %add to i64 900 %arrayidx = getelementptr inbounds double, double* %ptr, i64 %idxprom 901 store double %a, double* %arrayidx, align 8, !tbaa !12 902 %add1 = add i32 %idx, 2 903 %idxprom2 = zext i32 %add1 to i64 904 %arrayidx3 = getelementptr inbounds double, double* %ptr, i64 %idxprom2 905 store double %a, double* %arrayidx3, align 8, !tbaa !12 906 ret void 907 } 908 909 ; Function Attrs: norecurse nounwind 910 define void @testSTXSSPX(float* nocapture %ptr, float %a, i32 zeroext %idx) local_unnamed_addr #3 { 911 entry: 912 %idxprom = zext i32 %idx to i64 913 %arrayidx = getelementptr inbounds float, float* %ptr, i64 %idxprom 914 store float %a, float* %arrayidx, align 4, !tbaa !14 915 ret void 916 } 917 918 ; Function Attrs: norecurse nounwind 919 define void @testSTXSDX(double* nocapture %ptr, double %a, i32 zeroext %idx) local_unnamed_addr #3 { 920 entry: 921 %idxprom = zext i32 %idx to i64 922 %arrayidx = getelementptr inbounds double, double* %ptr, i64 %idxprom 923 store double %a, double* %arrayidx, align 8, !tbaa !12 924 ret void 925 } 926 927 ; Function Attrs: norecurse nounwind 928 define void @testSTXVX(<4 x i32>* nocapture %ptr, <4 x i32> %a, i32 zeroext %idx) local_unnamed_addr #3 { 929 entry: 930 %idxprom = zext i32 %idx to i64 931 %arrayidx = getelementptr inbounds <4 x i32>, <4 x i32>* %ptr, i64 %idxprom 932 store <4 x i32> %a, <4 x i32>* %arrayidx, align 16, !tbaa !3 933 ret void 934 } 935 936 ; Function Attrs: norecurse nounwind readnone 937 define i128 @testSUBFC(i128 %a, i128 %b) local_unnamed_addr #0 { 938 entry: 939 %sub = sub nsw i128 %a, %b 940 ret i128 %sub 941 } 942 943 ; Function Attrs: norecurse nounwind readnone 944 define i128 @testSUBFC8(i128 %a, i128 %b) local_unnamed_addr #0 { 945 entry: 946 %sub = sub nsw i128 %a, %b 947 ret i128 %sub 948 } 949 950 ; Function Attrs: norecurse nounwind readnone 951 define signext i32 @testXOR(i32 signext %a, i32 signext %b) local_unnamed_addr #0 { 952 entry: 953 %xor = xor i32 %b, %a 954 ret i32 %xor 955 } 956 957 ; Function Attrs: norecurse nounwind readnone 958 define i64 @testXOR8(i64 %a, i64 %b) local_unnamed_addr #0 { 959 entry: 960 %xor = xor i64 %b, %a 961 ret i64 %xor 962 } 963 964 ; Function Attrs: norecurse nounwind readnone 965 define signext i32 @testXORI(i32 signext %a) local_unnamed_addr #0 { 966 entry: 967 %xor = xor i32 %a, 17 968 ret i32 %xor 969 } 970 971 ; Function Attrs: norecurse nounwind readnone 972 define i64 @testXOR8I(i64 %a) local_unnamed_addr #0 { 973 entry: 974 %xor = xor i64 %a, 17 975 ret i64 %xor 976 } 977 978 attributes #0 = { norecurse nounwind readnone "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="pwr9" "target-features"="+altivec,+bpermd,+crypto,+direct-move,+extdiv,+htm,+power8-vector,+power9-vector,+vsx,-qpx" "unsafe-fp-math"="false" "use-soft-float"="false" } 979 attributes #1 = { norecurse nounwind readonly "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="pwr9" "target-features"="+altivec,+bpermd,+crypto,+direct-move,+extdiv,+htm,+power8-vector,+power9-vector,+vsx,-qpx" "unsafe-fp-math"="false" "use-soft-float"="false" } 980 attributes #2 = { norecurse nounwind readonly "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="pwr9" "target-features"="+altivec,+bpermd,+crypto,+direct-move,+extdiv,+htm,+power8-vector,+power9-vector,-vsx,-qpx" "unsafe-fp-math"="false" "use-soft-float"="false" } 981 attributes #3 = { norecurse nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="pwr9" "target-features"="+altivec,+bpermd,+crypto,+direct-move,+extdiv,+htm,+power8-vector,+power9-vector,+vsx,-qpx" "unsafe-fp-math"="false" "use-soft-float"="false" } 982 983 !llvm.module.flags = !{!0, !1} 984 !llvm.ident = !{!2} 985 986 !0 = !{i32 1, !"wchar_size", i32 4} 987 !1 = !{i32 7, !"PIC Level", i32 2} 988 !2 = !{!"clang version 6.0.0 (trunk 316067)"} 989 !3 = !{!4, !4, i64 0} 990 !4 = !{!"omnipotent char", !5, i64 0} 991 !5 = !{!"Simple C/C++ TBAA"} 992 !6 = !{!7, !7, i64 0} 993 !7 = !{!"short", !4, i64 0} 994 !8 = !{!9, !9, i64 0} 995 !9 = !{!"int", !4, i64 0} 996 !10 = !{!11, !11, i64 0} 997 !11 = !{!"long long", !4, i64 0} 998 !12 = !{!13, !13, i64 0} 999 !13 = !{!"double", !4, i64 0} 1000 !14 = !{!15, !15, i64 0} 1001 !15 = !{!"float", !4, i64 0} 1002 1003 ... 1004 --- 1005 name: testADD4 1006 # CHECK-ALL: name: testADD4 1007 alignment: 4 1008 exposesReturnsTwice: false 1009 legalized: false 1010 regBankSelected: false 1011 selected: false 1012 tracksRegLiveness: true 1013 registers: 1014 - { id: 0, class: g8rc, preferred-register: '' } 1015 - { id: 1, class: g8rc, preferred-register: '' } 1016 - { id: 2, class: gprc, preferred-register: '' } 1017 - { id: 3, class: gprc, preferred-register: '' } 1018 - { id: 4, class: gprc_and_gprc_nor0, preferred-register: '' } 1019 - { id: 5, class: gprc, preferred-register: '' } 1020 - { id: 6, class: g8rc, preferred-register: '' } 1021 liveins: 1022 - { reg: '$x3', virtual-reg: '%0' } 1023 - { reg: '$x4', virtual-reg: '%1' } 1024 frameInfo: 1025 isFrameAddressTaken: false 1026 isReturnAddressTaken: false 1027 hasStackMap: false 1028 hasPatchPoint: false 1029 stackSize: 0 1030 offsetAdjustment: 0 1031 maxAlignment: 0 1032 adjustsStack: false 1033 hasCalls: false 1034 stackProtector: '' 1035 maxCallFrameSize: 4294967295 1036 hasOpaqueSPAdjustment: false 1037 hasVAStart: false 1038 hasMustTailInVarArgFunc: false 1039 savePoint: '' 1040 restorePoint: '' 1041 fixedStack: 1042 stack: 1043 constants: 1044 body: | 1045 bb.0.entry: 1046 liveins: $x3, $x4 1047 1048 %1 = COPY $x4 1049 %0 = COPY $x3 1050 %2 = LI 33 1051 %3 = COPY %0.sub_32 1052 %4 = ADD4 killed %3, %2 1053 %5 = ADD4 killed %2, killed %4 1054 ; CHECK: ADDI killed %3, 33 1055 ; CHECK: ADDI killed %4, 33 1056 ; CHECK-LATE: addi 3, 3, 33 1057 ; CHECK-LATE: addi 3, 3, 33 1058 %6 = EXTSW_32_64 killed %5 1059 $x3 = COPY %6 1060 BLR8 implicit $lr8, implicit $rm, implicit $x3 1061 1062 ... 1063 --- 1064 name: testADD8 1065 # CHECK-ALL: name: testADD8 1066 alignment: 4 1067 exposesReturnsTwice: false 1068 legalized: false 1069 regBankSelected: false 1070 selected: false 1071 tracksRegLiveness: true 1072 registers: 1073 - { id: 0, class: g8rc, preferred-register: '' } 1074 - { id: 1, class: g8rc, preferred-register: '' } 1075 - { id: 2, class: g8rc_and_g8rc_nox0, preferred-register: '' } 1076 - { id: 3, class: g8rc, preferred-register: '' } 1077 liveins: 1078 - { reg: '$x3', virtual-reg: '%0' } 1079 - { reg: '$x4', virtual-reg: '%1' } 1080 frameInfo: 1081 isFrameAddressTaken: false 1082 isReturnAddressTaken: false 1083 hasStackMap: false 1084 hasPatchPoint: false 1085 stackSize: 0 1086 offsetAdjustment: 0 1087 maxAlignment: 0 1088 adjustsStack: false 1089 hasCalls: false 1090 stackProtector: '' 1091 maxCallFrameSize: 4294967295 1092 hasOpaqueSPAdjustment: false 1093 hasVAStart: false 1094 hasMustTailInVarArgFunc: false 1095 savePoint: '' 1096 restorePoint: '' 1097 fixedStack: 1098 stack: 1099 constants: 1100 body: | 1101 bb.0.entry: 1102 liveins: $x3, $x4 1103 1104 %1 = LI8 33 1105 %0 = COPY $x3 1106 %2 = ADD8 %0, %1 1107 %3 = ADD8 killed %1, killed %2 1108 ; CHECK: ADDI8 %0, 33 1109 ; CHECK: ADDI8 killed %2, 33 1110 ; CHECK-LATE: addi 3, 3, 33 1111 ; CHECK-LATE: addi 3, 3, 33 1112 $x3 = COPY %3 1113 BLR8 implicit $lr8, implicit $rm, implicit $x3 1114 1115 ... 1116 --- 1117 name: testADDC 1118 # CHECK-ALL: name: testADDC 1119 alignment: 4 1120 exposesReturnsTwice: false 1121 legalized: false 1122 regBankSelected: false 1123 selected: false 1124 tracksRegLiveness: true 1125 registers: 1126 - { id: 0, class: g8rc, preferred-register: '' } 1127 - { id: 1, class: g8rc, preferred-register: '' } 1128 - { id: 2, class: g8rc, preferred-register: '' } 1129 - { id: 3, class: g8rc, preferred-register: '' } 1130 - { id: 4, class: gprc, preferred-register: '' } 1131 - { id: 5, class: gprc, preferred-register: '' } 1132 - { id: 6, class: gprc, preferred-register: '' } 1133 - { id: 7, class: g8rc, preferred-register: '' } 1134 - { id: 8, class: g8rc, preferred-register: '' } 1135 liveins: 1136 - { reg: '$x3', virtual-reg: '%0' } 1137 - { reg: '$x4', virtual-reg: '%1' } 1138 - { reg: '$x5', virtual-reg: '%2' } 1139 - { reg: '$x6', virtual-reg: '%3' } 1140 frameInfo: 1141 isFrameAddressTaken: false 1142 isReturnAddressTaken: false 1143 hasStackMap: false 1144 hasPatchPoint: false 1145 stackSize: 0 1146 offsetAdjustment: 0 1147 maxAlignment: 0 1148 adjustsStack: false 1149 hasCalls: false 1150 stackProtector: '' 1151 maxCallFrameSize: 4294967295 1152 hasOpaqueSPAdjustment: false 1153 hasVAStart: false 1154 hasMustTailInVarArgFunc: false 1155 savePoint: '' 1156 restorePoint: '' 1157 fixedStack: 1158 stack: 1159 constants: 1160 body: | 1161 bb.0.entry: 1162 liveins: $x3, $x4, $x5, $x6 1163 1164 %3 = COPY $x6 1165 %2 = COPY $x5 1166 %1 = COPY $x4 1167 %0 = COPY $x3 1168 %4 = COPY %0.sub_32 1169 %5 = LI 55 1170 %6 = ADDC %5, %4, implicit-def $carry 1171 ; CHECK: ADDIC %4, 55, implicit-def $carry 1172 ; CHECK-LATE: addic 3, 3, 55 1173 %7 = ADDE8 %3, %1, implicit-def dead $carry, implicit $carry 1174 %8 = EXTSW_32_64 %6 1175 $x3 = COPY %8 1176 $x4 = COPY %7 1177 BLR8 implicit $lr8, implicit $rm, implicit $x3, implicit $x4 1178 1179 ... 1180 --- 1181 name: testADDC8 1182 # CHECK-ALL: name: testADDC8 1183 alignment: 4 1184 exposesReturnsTwice: false 1185 legalized: false 1186 regBankSelected: false 1187 selected: false 1188 tracksRegLiveness: true 1189 registers: 1190 - { id: 0, class: g8rc, preferred-register: '' } 1191 - { id: 1, class: g8rc, preferred-register: '' } 1192 - { id: 2, class: g8rc, preferred-register: '' } 1193 - { id: 3, class: g8rc, preferred-register: '' } 1194 - { id: 4, class: g8rc, preferred-register: '' } 1195 - { id: 5, class: g8rc, preferred-register: '' } 1196 liveins: 1197 - { reg: '$x3', virtual-reg: '%0' } 1198 - { reg: '$x4', virtual-reg: '%1' } 1199 - { reg: '$x5', virtual-reg: '%2' } 1200 - { reg: '$x6', virtual-reg: '%3' } 1201 frameInfo: 1202 isFrameAddressTaken: false 1203 isReturnAddressTaken: false 1204 hasStackMap: false 1205 hasPatchPoint: false 1206 stackSize: 0 1207 offsetAdjustment: 0 1208 maxAlignment: 0 1209 adjustsStack: false 1210 hasCalls: false 1211 stackProtector: '' 1212 maxCallFrameSize: 4294967295 1213 hasOpaqueSPAdjustment: false 1214 hasVAStart: false 1215 hasMustTailInVarArgFunc: false 1216 savePoint: '' 1217 restorePoint: '' 1218 fixedStack: 1219 stack: 1220 constants: 1221 body: | 1222 bb.0.entry: 1223 liveins: $x3, $x4, $x5, $x6 1224 1225 %3 = COPY $x6 1226 %2 = COPY $x5 1227 %1 = COPY $x4 1228 %0 = LI8 777 1229 %4 = ADDC8 %2, %0, implicit-def $carry 1230 ; CHECK: ADDIC8 %2, 777, implicit-def $carry 1231 ; CHECK-LATE: addic 3, 5, 777 1232 %5 = ADDE8 %3, %1, implicit-def dead $carry, implicit $carry 1233 $x3 = COPY %4 1234 $x4 = COPY %5 1235 BLR8 implicit $lr8, implicit $rm, implicit $x3, implicit $x4 1236 1237 ... 1238 --- 1239 name: testADDCo 1240 # CHECK-ALL: name: testADDCo 1241 alignment: 4 1242 exposesReturnsTwice: false 1243 legalized: false 1244 regBankSelected: false 1245 selected: false 1246 tracksRegLiveness: true 1247 registers: 1248 - { id: 0, class: g8rc, preferred-register: '' } 1249 - { id: 1, class: gprc, preferred-register: '' } 1250 - { id: 2, class: gprc, preferred-register: '' } 1251 - { id: 3, class: gprc, preferred-register: '' } 1252 - { id: 4, class: crrc, preferred-register: '' } 1253 - { id: 5, class: crbitrc, preferred-register: '' } 1254 - { id: 6, class: g8rc_and_g8rc_nox0, preferred-register: '' } 1255 - { id: 7, class: g8rc_and_g8rc_nox0, preferred-register: '' } 1256 - { id: 8, class: g8rc, preferred-register: '' } 1257 liveins: 1258 - { reg: '$x3', virtual-reg: '%0' } 1259 - { reg: '$x4', virtual-reg: '%1' } 1260 frameInfo: 1261 isFrameAddressTaken: false 1262 isReturnAddressTaken: false 1263 hasStackMap: false 1264 hasPatchPoint: false 1265 stackSize: 0 1266 offsetAdjustment: 0 1267 maxAlignment: 0 1268 adjustsStack: false 1269 hasCalls: false 1270 stackProtector: '' 1271 maxCallFrameSize: 4294967295 1272 hasOpaqueSPAdjustment: false 1273 hasVAStart: false 1274 hasMustTailInVarArgFunc: false 1275 savePoint: '' 1276 restorePoint: '' 1277 fixedStack: 1278 stack: 1279 constants: 1280 body: | 1281 bb.0.entry: 1282 liveins: $x3, $x4 1283 1284 %1 = LI 433 1285 %0 = COPY $x3 1286 %2 = COPY %0.sub_32 1287 %3 = ADDCo %1, %2, implicit-def $cr0, implicit-def $carry 1288 ; CHECK: ADDICo %2, 433, implicit-def $cr0, implicit-def $carry 1289 ; CHECK-LATE: addic. 3, 3, 433 1290 %4 = COPY killed $cr0 1291 %5 = COPY %4.sub_eq 1292 %6 = LI8 0 1293 %7 = LI8 -1 1294 %8 = ISEL8 %7, %6, %5 1295 $x3 = COPY %8 1296 BLR8 implicit $lr8, implicit $rm, implicit $x3 1297 1298 ... 1299 --- 1300 name: testADDI 1301 # CHECK-ALL: name: testADDI 1302 alignment: 4 1303 exposesReturnsTwice: false 1304 legalized: false 1305 regBankSelected: false 1306 selected: false 1307 tracksRegLiveness: true 1308 registers: 1309 - { id: 0, class: g8rc, preferred-register: '' } 1310 - { id: 1, class: gprc_and_gprc_nor0, preferred-register: '' } 1311 - { id: 2, class: gprc, preferred-register: '' } 1312 - { id: 3, class: g8rc, preferred-register: '' } 1313 liveins: 1314 - { reg: '$x3', virtual-reg: '%0' } 1315 frameInfo: 1316 isFrameAddressTaken: false 1317 isReturnAddressTaken: false 1318 hasStackMap: false 1319 hasPatchPoint: false 1320 stackSize: 0 1321 offsetAdjustment: 0 1322 maxAlignment: 0 1323 adjustsStack: false 1324 hasCalls: false 1325 stackProtector: '' 1326 maxCallFrameSize: 4294967295 1327 hasOpaqueSPAdjustment: false 1328 hasVAStart: false 1329 hasMustTailInVarArgFunc: false 1330 savePoint: '' 1331 restorePoint: '' 1332 fixedStack: 1333 stack: 1334 constants: 1335 body: | 1336 bb.0.entry: 1337 liveins: $x3 1338 1339 %0 = COPY $x3 1340 %1 = LI 77 1341 %2 = ADDI killed %1, 44 1342 %3 = EXTSW_32_64 killed %2 1343 ; CHECK: LI 121 1344 ; CHECK-LATE: li 3, 121 1345 $x3 = COPY %3 1346 BLR8 implicit $lr8, implicit $rm, implicit $x3 1347 1348 ... 1349 --- 1350 name: testADDI8 1351 # CHECK-ALL: name: testADDI8 1352 alignment: 4 1353 exposesReturnsTwice: false 1354 legalized: false 1355 regBankSelected: false 1356 selected: false 1357 tracksRegLiveness: true 1358 registers: 1359 - { id: 0, class: g8rc, preferred-register: '' } 1360 - { id: 1, class: g8rc_and_g8rc_nox0, preferred-register: '' } 1361 - { id: 2, class: g8rc, preferred-register: '' } 1362 - { id: 3, class: g8rc, preferred-register: '' } 1363 liveins: 1364 - { reg: '$x3', virtual-reg: '%0' } 1365 frameInfo: 1366 isFrameAddressTaken: false 1367 isReturnAddressTaken: false 1368 hasStackMap: false 1369 hasPatchPoint: false 1370 stackSize: 0 1371 offsetAdjustment: 0 1372 maxAlignment: 0 1373 adjustsStack: false 1374 hasCalls: false 1375 stackProtector: '' 1376 maxCallFrameSize: 4294967295 1377 hasOpaqueSPAdjustment: false 1378 hasVAStart: false 1379 hasMustTailInVarArgFunc: false 1380 savePoint: '' 1381 restorePoint: '' 1382 fixedStack: 1383 stack: 1384 constants: 1385 body: | 1386 bb.0.entry: 1387 liveins: $x3 1388 1389 %0 = COPY $x3 1390 %1 = LI8 333 1391 %2 = ADDI8 killed %1, 44 1392 ; CHECK: LI8 377 1393 ; CHECK-LATE: li 3, 377 1394 %3 = EXTSW killed %2 1395 $x3 = COPY %3 1396 BLR8 implicit $lr8, implicit $rm, implicit $x3 1397 1398 ... 1399 --- 1400 name: testANDo 1401 # CHECK-ALL: name: testANDo 1402 alignment: 4 1403 exposesReturnsTwice: false 1404 legalized: false 1405 regBankSelected: false 1406 selected: false 1407 tracksRegLiveness: true 1408 registers: 1409 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' } 1410 - { id: 1, class: gprc, preferred-register: '' } 1411 - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' } 1412 - { id: 3, class: gprc, preferred-register: '' } 1413 - { id: 4, class: crrc, preferred-register: '' } 1414 - { id: 5, class: gprc, preferred-register: '' } 1415 - { id: 6, class: g8rc, preferred-register: '' } 1416 liveins: 1417 - { reg: '$x3', virtual-reg: '%0' } 1418 - { reg: '$x4', virtual-reg: '%1' } 1419 frameInfo: 1420 isFrameAddressTaken: false 1421 isReturnAddressTaken: false 1422 hasStackMap: false 1423 hasPatchPoint: false 1424 stackSize: 0 1425 offsetAdjustment: 0 1426 maxAlignment: 0 1427 adjustsStack: false 1428 hasCalls: false 1429 stackProtector: '' 1430 maxCallFrameSize: 4294967295 1431 hasOpaqueSPAdjustment: false 1432 hasVAStart: false 1433 hasMustTailInVarArgFunc: false 1434 savePoint: '' 1435 restorePoint: '' 1436 fixedStack: 1437 stack: 1438 constants: 1439 body: | 1440 bb.0.entry: 1441 liveins: $x3, $x4 1442 1443 %1 = LI 78 1444 %0 = COPY $x3 1445 %2 = COPY %0.sub_32 1446 %3 = ANDo %1, %2, implicit-def $cr0 1447 ; CHECK: ANDIo %2, 78, implicit-def $cr0 1448 ; CHECK-LATE: andi. 5, 3, 78 1449 %4 = COPY killed $cr0 1450 %5 = ISEL %2, %1, %4.sub_eq 1451 %6 = EXTSW_32_64 killed %5 1452 $x3 = COPY %6 1453 BLR8 implicit $lr8, implicit $rm, implicit $x3 1454 1455 ... 1456 --- 1457 name: testAND8o 1458 # CHECK-ALL: name: testAND8o 1459 alignment: 4 1460 exposesReturnsTwice: false 1461 legalized: false 1462 regBankSelected: false 1463 selected: false 1464 tracksRegLiveness: true 1465 registers: 1466 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' } 1467 - { id: 1, class: g8rc_and_g8rc_nox0, preferred-register: '' } 1468 - { id: 2, class: g8rc, preferred-register: '' } 1469 - { id: 3, class: crrc, preferred-register: '' } 1470 - { id: 4, class: g8rc, preferred-register: '' } 1471 liveins: 1472 - { reg: '$x3', virtual-reg: '%0' } 1473 - { reg: '$x4', virtual-reg: '%1' } 1474 frameInfo: 1475 isFrameAddressTaken: false 1476 isReturnAddressTaken: false 1477 hasStackMap: false 1478 hasPatchPoint: false 1479 stackSize: 0 1480 offsetAdjustment: 0 1481 maxAlignment: 0 1482 adjustsStack: false 1483 hasCalls: false 1484 stackProtector: '' 1485 maxCallFrameSize: 4294967295 1486 hasOpaqueSPAdjustment: false 1487 hasVAStart: false 1488 hasMustTailInVarArgFunc: false 1489 savePoint: '' 1490 restorePoint: '' 1491 fixedStack: 1492 stack: 1493 constants: 1494 body: | 1495 bb.0.entry: 1496 liveins: $x3, $x4 1497 1498 %1 = LI8 321 1499 %0 = COPY $x3 1500 %2 = AND8o %1, %0, implicit-def $cr0 1501 ; CHECK: ANDIo8 %0, 321, implicit-def $cr0 1502 ; CHECK-LATE: andi. 5, 3, 321 1503 %3 = COPY killed $cr0 1504 %4 = ISEL8 %1, %0, %3.sub_eq 1505 $x3 = COPY %4 1506 BLR8 implicit $lr8, implicit $rm, implicit $x3 1507 1508 ... 1509 --- 1510 name: testCMPD 1511 # CHECK-ALL: name: testCMPD 1512 alignment: 4 1513 exposesReturnsTwice: false 1514 legalized: false 1515 regBankSelected: false 1516 selected: false 1517 tracksRegLiveness: true 1518 registers: 1519 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' } 1520 - { id: 1, class: g8rc, preferred-register: '' } 1521 - { id: 2, class: crrc, preferred-register: '' } 1522 - { id: 3, class: g8rc_and_g8rc_nox0, preferred-register: '' } 1523 - { id: 4, class: g8rc, preferred-register: '' } 1524 - { id: 5, class: g8rc, preferred-register: '' } 1525 liveins: 1526 - { reg: '$x3', virtual-reg: '%0' } 1527 - { reg: '$x4', virtual-reg: '%1' } 1528 frameInfo: 1529 isFrameAddressTaken: false 1530 isReturnAddressTaken: false 1531 hasStackMap: false 1532 hasPatchPoint: false 1533 stackSize: 0 1534 offsetAdjustment: 0 1535 maxAlignment: 0 1536 adjustsStack: false 1537 hasCalls: false 1538 stackProtector: '' 1539 maxCallFrameSize: 4294967295 1540 hasOpaqueSPAdjustment: false 1541 hasVAStart: false 1542 hasMustTailInVarArgFunc: false 1543 savePoint: '' 1544 restorePoint: '' 1545 fixedStack: 1546 stack: 1547 constants: 1548 body: | 1549 bb.0.entry: 1550 liveins: $x3, $x4 1551 1552 %1 = LI8 65533 1553 %0 = COPY $x3 1554 %2 = CMPD %0, %1 1555 ; CHECK: CMPDI %0, -3 1556 ; CHECK-LATE: cmpdi 3, -3 1557 %4 = ISEL8 $zero8, %0, %2.sub_gt 1558 %5 = ADD8 killed %4, %1 1559 $x3 = COPY %5 1560 BLR8 implicit $lr8, implicit $rm, implicit $x3 1561 1562 ... 1563 --- 1564 name: testCMPDI 1565 # CHECK-ALL: name: testCMPDI 1566 alignment: 4 1567 exposesReturnsTwice: false 1568 legalized: false 1569 regBankSelected: false 1570 selected: false 1571 tracksRegLiveness: true 1572 registers: 1573 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' } 1574 - { id: 1, class: g8rc, preferred-register: '' } 1575 - { id: 2, class: crrc, preferred-register: '' } 1576 - { id: 3, class: g8rc_and_g8rc_nox0, preferred-register: '' } 1577 - { id: 4, class: g8rc, preferred-register: '' } 1578 - { id: 5, class: g8rc, preferred-register: '' } 1579 liveins: 1580 - { reg: '$x3', virtual-reg: '%0' } 1581 - { reg: '$x4', virtual-reg: '%1' } 1582 frameInfo: 1583 isFrameAddressTaken: false 1584 isReturnAddressTaken: false 1585 hasStackMap: false 1586 hasPatchPoint: false 1587 stackSize: 0 1588 offsetAdjustment: 0 1589 maxAlignment: 0 1590 adjustsStack: false 1591 hasCalls: false 1592 stackProtector: '' 1593 maxCallFrameSize: 4294967295 1594 hasOpaqueSPAdjustment: false 1595 hasVAStart: false 1596 hasMustTailInVarArgFunc: false 1597 savePoint: '' 1598 restorePoint: '' 1599 fixedStack: 1600 stack: 1601 constants: 1602 body: | 1603 bb.0.entry: 1604 liveins: $x3, $x4 1605 1606 %1 = COPY $x4 1607 %0 = LI8 89 1608 %2 = CMPDI %0, 87 1609 %4 = ISEL8 $zero8, %0, %2.sub_gt 1610 ; CHECK: LI8 0 1611 %5 = ADD8 killed %4, %1 1612 $x3 = COPY %5 1613 BLR8 implicit $lr8, implicit $rm, implicit $x3 1614 1615 ... 1616 --- 1617 name: testCMPDI_F 1618 # CHECK-ALL: name: testCMPDI_F 1619 alignment: 4 1620 exposesReturnsTwice: false 1621 legalized: false 1622 regBankSelected: false 1623 selected: false 1624 tracksRegLiveness: true 1625 registers: 1626 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' } 1627 - { id: 1, class: g8rc, preferred-register: '' } 1628 - { id: 2, class: crrc, preferred-register: '' } 1629 - { id: 3, class: g8rc_and_g8rc_nox0, preferred-register: '' } 1630 - { id: 4, class: g8rc, preferred-register: '' } 1631 - { id: 5, class: g8rc, preferred-register: '' } 1632 liveins: 1633 - { reg: '$x3', virtual-reg: '%0' } 1634 - { reg: '$x4', virtual-reg: '%1' } 1635 frameInfo: 1636 isFrameAddressTaken: false 1637 isReturnAddressTaken: false 1638 hasStackMap: false 1639 hasPatchPoint: false 1640 stackSize: 0 1641 offsetAdjustment: 0 1642 maxAlignment: 0 1643 adjustsStack: false 1644 hasCalls: false 1645 stackProtector: '' 1646 maxCallFrameSize: 4294967295 1647 hasOpaqueSPAdjustment: false 1648 hasVAStart: false 1649 hasMustTailInVarArgFunc: false 1650 savePoint: '' 1651 restorePoint: '' 1652 fixedStack: 1653 stack: 1654 constants: 1655 body: | 1656 bb.0.entry: 1657 liveins: $x3, $x4 1658 1659 %1 = COPY $x4 1660 %0 = LI8 87 1661 %2 = CMPDI %0, 87 1662 %4 = ISEL8 $zero8, %0, %2.sub_gt 1663 ; CHECK: COPY %0 1664 %5 = ADD8 killed %4, %1 1665 $x3 = COPY %5 1666 BLR8 implicit $lr8, implicit $rm, implicit $x3 1667 1668 ... 1669 --- 1670 name: testCMPLD 1671 # CHECK-ALL: name: testCMPLD 1672 alignment: 4 1673 exposesReturnsTwice: false 1674 legalized: false 1675 regBankSelected: false 1676 selected: false 1677 tracksRegLiveness: true 1678 registers: 1679 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' } 1680 - { id: 1, class: g8rc, preferred-register: '' } 1681 - { id: 2, class: crrc, preferred-register: '' } 1682 - { id: 3, class: g8rc_and_g8rc_nox0, preferred-register: '' } 1683 - { id: 4, class: g8rc, preferred-register: '' } 1684 - { id: 5, class: g8rc, preferred-register: '' } 1685 liveins: 1686 - { reg: '$x3', virtual-reg: '%0' } 1687 - { reg: '$x4', virtual-reg: '%1' } 1688 frameInfo: 1689 isFrameAddressTaken: false 1690 isReturnAddressTaken: false 1691 hasStackMap: false 1692 hasPatchPoint: false 1693 stackSize: 0 1694 offsetAdjustment: 0 1695 maxAlignment: 0 1696 adjustsStack: false 1697 hasCalls: false 1698 stackProtector: '' 1699 maxCallFrameSize: 4294967295 1700 hasOpaqueSPAdjustment: false 1701 hasVAStart: false 1702 hasMustTailInVarArgFunc: false 1703 savePoint: '' 1704 restorePoint: '' 1705 fixedStack: 1706 stack: 1707 constants: 1708 body: | 1709 bb.0.entry: 1710 liveins: $x3, $x4 1711 1712 %1 = LI8 99 1713 %0 = COPY $x3 1714 %2 = CMPLD %0, %1 1715 ; CHECK: CMPLDI %0, 99 1716 ; CHECK-LATE: cmpldi 3, 99 1717 %4 = ISEL8 $zero8, %0, %2.sub_gt 1718 %5 = ADD8 killed %4, %1 1719 $x3 = COPY %5 1720 BLR8 implicit $lr8, implicit $rm, implicit $x3 1721 1722 ... 1723 --- 1724 name: testCMPLDI 1725 # CHECK-ALL: name: testCMPLDI 1726 alignment: 4 1727 exposesReturnsTwice: false 1728 legalized: false 1729 regBankSelected: false 1730 selected: false 1731 tracksRegLiveness: true 1732 registers: 1733 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' } 1734 - { id: 1, class: g8rc, preferred-register: '' } 1735 - { id: 2, class: crrc, preferred-register: '' } 1736 - { id: 3, class: g8rc_and_g8rc_nox0, preferred-register: '' } 1737 - { id: 4, class: g8rc, preferred-register: '' } 1738 - { id: 5, class: g8rc, preferred-register: '' } 1739 liveins: 1740 - { reg: '$x3', virtual-reg: '%0' } 1741 - { reg: '$x4', virtual-reg: '%1' } 1742 frameInfo: 1743 isFrameAddressTaken: false 1744 isReturnAddressTaken: false 1745 hasStackMap: false 1746 hasPatchPoint: false 1747 stackSize: 0 1748 offsetAdjustment: 0 1749 maxAlignment: 0 1750 adjustsStack: false 1751 hasCalls: false 1752 stackProtector: '' 1753 maxCallFrameSize: 4294967295 1754 hasOpaqueSPAdjustment: false 1755 hasVAStart: false 1756 hasMustTailInVarArgFunc: false 1757 savePoint: '' 1758 restorePoint: '' 1759 fixedStack: 1760 stack: 1761 constants: 1762 body: | 1763 bb.0.entry: 1764 liveins: $x3, $x4 1765 1766 %1 = COPY $x4 1767 %0 = LI8 65534 1768 %2 = CMPLDI %0, 65535 1769 %4 = ISEL8 $zero8, %0, %2.sub_gt 1770 ; CHECK: COPY %0 1771 %5 = ADD8 killed %4, %1 1772 $x3 = COPY %5 1773 BLR8 implicit $lr8, implicit $rm, implicit $x3 1774 1775 ... 1776 --- 1777 name: testCMPW 1778 # CHECK-ALL: name: testCMPW 1779 alignment: 4 1780 exposesReturnsTwice: false 1781 legalized: false 1782 regBankSelected: false 1783 selected: false 1784 tracksRegLiveness: true 1785 registers: 1786 - { id: 0, class: g8rc, preferred-register: '' } 1787 - { id: 1, class: g8rc, preferred-register: '' } 1788 - { id: 2, class: gprc, preferred-register: '' } 1789 - { id: 3, class: gprc_and_gprc_nor0, preferred-register: '' } 1790 - { id: 4, class: crrc, preferred-register: '' } 1791 - { id: 5, class: gprc_and_gprc_nor0, preferred-register: '' } 1792 - { id: 6, class: gprc, preferred-register: '' } 1793 - { id: 7, class: gprc, preferred-register: '' } 1794 - { id: 8, class: g8rc, preferred-register: '' } 1795 liveins: 1796 - { reg: '$x3', virtual-reg: '%0' } 1797 - { reg: '$x4', virtual-reg: '%1' } 1798 frameInfo: 1799 isFrameAddressTaken: false 1800 isReturnAddressTaken: false 1801 hasStackMap: false 1802 hasPatchPoint: false 1803 stackSize: 0 1804 offsetAdjustment: 0 1805 maxAlignment: 0 1806 adjustsStack: false 1807 hasCalls: false 1808 stackProtector: '' 1809 maxCallFrameSize: 4294967295 1810 hasOpaqueSPAdjustment: false 1811 hasVAStart: false 1812 hasMustTailInVarArgFunc: false 1813 savePoint: '' 1814 restorePoint: '' 1815 fixedStack: 1816 stack: 1817 constants: 1818 body: | 1819 bb.0.entry: 1820 liveins: $x3, $x4 1821 1822 %1 = COPY $x4 1823 %0 = COPY $x3 1824 %2 = LI -1 1825 %3 = COPY %0.sub_32 1826 %4 = CMPW %3, %2 1827 ; CHECK: CMPWI %3, -1 1828 %6 = ISEL $zero, %3, %4.sub_gt 1829 %7 = ADD4 killed %6, %2 1830 %8 = EXTSW_32_64 killed %7 1831 $x3 = COPY %8 1832 BLR8 implicit $lr8, implicit $rm, implicit $x3 1833 1834 ... 1835 --- 1836 name: testCMPWI 1837 # CHECK-ALL: name: testCMPWI 1838 alignment: 4 1839 exposesReturnsTwice: false 1840 legalized: false 1841 regBankSelected: false 1842 selected: false 1843 tracksRegLiveness: true 1844 registers: 1845 - { id: 0, class: g8rc, preferred-register: '' } 1846 - { id: 1, class: g8rc, preferred-register: '' } 1847 - { id: 2, class: gprc, preferred-register: '' } 1848 - { id: 3, class: gprc_and_gprc_nor0, preferred-register: '' } 1849 - { id: 4, class: crrc, preferred-register: '' } 1850 - { id: 5, class: gprc_and_gprc_nor0, preferred-register: '' } 1851 - { id: 6, class: gprc, preferred-register: '' } 1852 - { id: 7, class: gprc, preferred-register: '' } 1853 - { id: 8, class: g8rc, preferred-register: '' } 1854 liveins: 1855 - { reg: '$x3', virtual-reg: '%0' } 1856 - { reg: '$x4', virtual-reg: '%1' } 1857 frameInfo: 1858 isFrameAddressTaken: false 1859 isReturnAddressTaken: false 1860 hasStackMap: false 1861 hasPatchPoint: false 1862 stackSize: 0 1863 offsetAdjustment: 0 1864 maxAlignment: 0 1865 adjustsStack: false 1866 hasCalls: false 1867 stackProtector: '' 1868 maxCallFrameSize: 4294967295 1869 hasOpaqueSPAdjustment: false 1870 hasVAStart: false 1871 hasMustTailInVarArgFunc: false 1872 savePoint: '' 1873 restorePoint: '' 1874 fixedStack: 1875 stack: 1876 constants: 1877 body: | 1878 bb.0.entry: 1879 liveins: $x3, $x4 1880 1881 %1 = COPY $x4 1882 %0 = COPY $x3 1883 %2 = COPY %1.sub_32 1884 %3 = LI -3 1885 %4 = CMPWI %3, 87 1886 %6 = ISEL $zero, %3, %4.sub_gt 1887 ; CHECK: COPY %3 1888 %7 = ADD4 killed %6, killed %2 1889 %8 = EXTSW_32_64 killed %7 1890 $x3 = COPY %8 1891 BLR8 implicit $lr8, implicit $rm, implicit $x3 1892 1893 ... 1894 --- 1895 name: testCMPLW 1896 # CHECK-ALL: name: testCMPLW 1897 alignment: 4 1898 exposesReturnsTwice: false 1899 legalized: false 1900 regBankSelected: false 1901 selected: false 1902 tracksRegLiveness: true 1903 registers: 1904 - { id: 0, class: g8rc, preferred-register: '' } 1905 - { id: 1, class: g8rc, preferred-register: '' } 1906 - { id: 2, class: gprc, preferred-register: '' } 1907 - { id: 3, class: gprc_and_gprc_nor0, preferred-register: '' } 1908 - { id: 4, class: crrc, preferred-register: '' } 1909 - { id: 5, class: gprc_and_gprc_nor0, preferred-register: '' } 1910 - { id: 6, class: gprc, preferred-register: '' } 1911 - { id: 7, class: gprc, preferred-register: '' } 1912 - { id: 8, class: g8rc, preferred-register: '' } 1913 - { id: 9, class: g8rc, preferred-register: '' } 1914 - { id: 10, class: g8rc, preferred-register: '' } 1915 liveins: 1916 - { reg: '$x3', virtual-reg: '%0' } 1917 - { reg: '$x4', virtual-reg: '%1' } 1918 frameInfo: 1919 isFrameAddressTaken: false 1920 isReturnAddressTaken: false 1921 hasStackMap: false 1922 hasPatchPoint: false 1923 stackSize: 0 1924 offsetAdjustment: 0 1925 maxAlignment: 0 1926 adjustsStack: false 1927 hasCalls: false 1928 stackProtector: '' 1929 maxCallFrameSize: 4294967295 1930 hasOpaqueSPAdjustment: false 1931 hasVAStart: false 1932 hasMustTailInVarArgFunc: false 1933 savePoint: '' 1934 restorePoint: '' 1935 fixedStack: 1936 stack: 1937 constants: 1938 body: | 1939 bb.0.entry: 1940 liveins: $x3, $x4 1941 1942 %1 = COPY $x4 1943 %0 = COPY $x3 1944 %2 = LI 32767 1945 %3 = COPY %0.sub_32 1946 %4 = CMPLW %3, %2 1947 ; CHECK: CMPLWI %3, 32767 1948 ; CHECK-LATE: cmplwi 3, 32767 1949 %6 = ISEL $zero, %3, %4.sub_gt 1950 %7 = ADD4 killed %6, %2 1951 %9 = IMPLICIT_DEF 1952 %8 = INSERT_SUBREG %9, killed %7, 1 1953 %10 = RLDICL killed %8, 0, 32 1954 $x3 = COPY %10 1955 BLR8 implicit $lr8, implicit $rm, implicit $x3 1956 1957 ... 1958 --- 1959 name: testCMPLWI 1960 # CHECK-ALL: name: testCMPLWI 1961 alignment: 4 1962 exposesReturnsTwice: false 1963 legalized: false 1964 regBankSelected: false 1965 selected: false 1966 tracksRegLiveness: true 1967 registers: 1968 - { id: 0, class: g8rc, preferred-register: '' } 1969 - { id: 1, class: g8rc, preferred-register: '' } 1970 - { id: 2, class: gprc, preferred-register: '' } 1971 - { id: 3, class: gprc_and_gprc_nor0, preferred-register: '' } 1972 - { id: 4, class: crrc, preferred-register: '' } 1973 - { id: 5, class: gprc_and_gprc_nor0, preferred-register: '' } 1974 - { id: 6, class: gprc, preferred-register: '' } 1975 - { id: 7, class: gprc, preferred-register: '' } 1976 - { id: 8, class: g8rc, preferred-register: '' } 1977 - { id: 9, class: g8rc, preferred-register: '' } 1978 - { id: 10, class: g8rc, preferred-register: '' } 1979 liveins: 1980 - { reg: '$x3', virtual-reg: '%0' } 1981 - { reg: '$x4', virtual-reg: '%1' } 1982 frameInfo: 1983 isFrameAddressTaken: false 1984 isReturnAddressTaken: false 1985 hasStackMap: false 1986 hasPatchPoint: false 1987 stackSize: 0 1988 offsetAdjustment: 0 1989 maxAlignment: 0 1990 adjustsStack: false 1991 hasCalls: false 1992 stackProtector: '' 1993 maxCallFrameSize: 4294967295 1994 hasOpaqueSPAdjustment: false 1995 hasVAStart: false 1996 hasMustTailInVarArgFunc: false 1997 savePoint: '' 1998 restorePoint: '' 1999 fixedStack: 2000 stack: 2001 constants: 2002 body: | 2003 bb.0.entry: 2004 liveins: $x3, $x4 2005 2006 %1 = COPY $x4 2007 %0 = COPY $x3 2008 %2 = COPY %1.sub_32 2009 %3 = LI -3 2010 %4 = CMPLWI %3, 87 2011 %6 = ISEL $zero, %3, %4.sub_gt 2012 ; CHECK: LI 0 2013 %7 = ADD4 killed %6, killed %2 2014 %9 = IMPLICIT_DEF 2015 %8 = INSERT_SUBREG %9, killed %7, 1 2016 %10 = RLDICL killed %8, 0, 32 2017 $x3 = COPY %10 2018 BLR8 implicit $lr8, implicit $rm, implicit $x3 2019 2020 ... 2021 --- 2022 name: testLBZUX 2023 # CHECK-ALL: name: testLBZUX 2024 alignment: 4 2025 exposesReturnsTwice: false 2026 legalized: false 2027 regBankSelected: false 2028 selected: false 2029 tracksRegLiveness: true 2030 registers: 2031 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' } 2032 - { id: 1, class: g8rc, preferred-register: '' } 2033 - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' } 2034 - { id: 3, class: gprc, preferred-register: '' } 2035 - { id: 4, class: g8rc, preferred-register: '' } 2036 - { id: 5, class: g8rc, preferred-register: '' } 2037 - { id: 6, class: g8rc, preferred-register: '' } 2038 - { id: 7, class: gprc, preferred-register: '' } 2039 - { id: 8, class: gprc, preferred-register: '' } 2040 - { id: 9, class: g8rc, preferred-register: '' } 2041 - { id: 10, class: g8rc, preferred-register: '' } 2042 - { id: 11, class: g8rc, preferred-register: '' } 2043 - { id: 12, class: gprc, preferred-register: '' } 2044 - { id: 13, class: gprc, preferred-register: '' } 2045 - { id: 14, class: g8rc, preferred-register: '' } 2046 - { id: 15, class: g8rc, preferred-register: '' } 2047 - { id: 16, class: g8rc, preferred-register: '' } 2048 - { id: 17, class: g8rc_and_g8rc_nox0, preferred-register: '' } 2049 liveins: 2050 - { reg: '$x3', virtual-reg: '%0' } 2051 - { reg: '$x4', virtual-reg: '%1' } 2052 frameInfo: 2053 isFrameAddressTaken: false 2054 isReturnAddressTaken: false 2055 hasStackMap: false 2056 hasPatchPoint: false 2057 stackSize: 0 2058 offsetAdjustment: 0 2059 maxAlignment: 0 2060 adjustsStack: false 2061 hasCalls: false 2062 stackProtector: '' 2063 maxCallFrameSize: 4294967295 2064 hasOpaqueSPAdjustment: false 2065 hasVAStart: false 2066 hasMustTailInVarArgFunc: false 2067 savePoint: '' 2068 restorePoint: '' 2069 fixedStack: 2070 stack: 2071 constants: 2072 body: | 2073 bb.0.entry: 2074 liveins: $x3, $x4 2075 2076 %1 = COPY $x4 2077 %0 = COPY $x3 2078 %2 = COPY %1.sub_32 2079 %3 = ADDI %2, 1 2080 %5 = IMPLICIT_DEF 2081 %4 = INSERT_SUBREG %5, killed %3, 1 2082 %6 = RLDICL killed %4, 0, 32 2083 %7 = LBZX %0, killed %6 :: (load 1 from %ir.arrayidx, !tbaa !3) 2084 %8 = ADDI %2, 2 2085 %10 = IMPLICIT_DEF 2086 %9 = INSERT_SUBREG %10, killed %8, 1 2087 %11 = LI8 -15 2088 %12,%17 = LBZUX %0, killed %11 :: (load 1 from %ir.arrayidx3, !tbaa !3) 2089 ; CHECK: LBZU -15, %0 2090 ; CHECK-LATE: lbzu 5, -15(3) 2091 %13 = ADD4 killed %12, killed %7 2092 %15 = IMPLICIT_DEF 2093 %14 = INSERT_SUBREG %15, killed %13, 1 2094 %16 = RLWINM8 killed %14, 0, 24, 31 2095 $x3 = COPY %16 2096 BLR8 implicit $lr8, implicit $rm, implicit $x3 2097 2098 ... 2099 --- 2100 name: testLBZX 2101 # CHECK-ALL: name: testLBZX 2102 alignment: 4 2103 exposesReturnsTwice: false 2104 legalized: false 2105 regBankSelected: false 2106 selected: false 2107 tracksRegLiveness: true 2108 registers: 2109 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' } 2110 - { id: 1, class: g8rc, preferred-register: '' } 2111 - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' } 2112 - { id: 3, class: gprc, preferred-register: '' } 2113 - { id: 4, class: g8rc, preferred-register: '' } 2114 - { id: 5, class: g8rc, preferred-register: '' } 2115 - { id: 6, class: g8rc, preferred-register: '' } 2116 - { id: 7, class: gprc, preferred-register: '' } 2117 - { id: 8, class: gprc, preferred-register: '' } 2118 - { id: 9, class: g8rc, preferred-register: '' } 2119 - { id: 10, class: g8rc, preferred-register: '' } 2120 - { id: 11, class: g8rc, preferred-register: '' } 2121 - { id: 12, class: gprc, preferred-register: '' } 2122 - { id: 13, class: gprc, preferred-register: '' } 2123 - { id: 14, class: g8rc, preferred-register: '' } 2124 - { id: 15, class: g8rc, preferred-register: '' } 2125 - { id: 16, class: g8rc, preferred-register: '' } 2126 liveins: 2127 - { reg: '$x3', virtual-reg: '%0' } 2128 - { reg: '$x4', virtual-reg: '%1' } 2129 frameInfo: 2130 isFrameAddressTaken: false 2131 isReturnAddressTaken: false 2132 hasStackMap: false 2133 hasPatchPoint: false 2134 stackSize: 0 2135 offsetAdjustment: 0 2136 maxAlignment: 0 2137 adjustsStack: false 2138 hasCalls: false 2139 stackProtector: '' 2140 maxCallFrameSize: 4294967295 2141 hasOpaqueSPAdjustment: false 2142 hasVAStart: false 2143 hasMustTailInVarArgFunc: false 2144 savePoint: '' 2145 restorePoint: '' 2146 fixedStack: 2147 stack: 2148 constants: 2149 body: | 2150 bb.0.entry: 2151 liveins: $x3, $x4 2152 2153 %1 = COPY $x4 2154 %0 = LI8 45 2155 %2 = COPY %1.sub_32 2156 %3 = ADDI %2, 1 2157 %5 = IMPLICIT_DEF 2158 %4 = INSERT_SUBREG %5, killed %3, 1 2159 %6 = RLDICL killed %4, 0, 32 2160 %7 = LBZX %0, killed %6 :: (load 1 from %ir.arrayidx, !tbaa !3) 2161 ; CHECK: LBZ 45, killed %6 2162 ; CHECK-LATE: lbz 5, 45(5) 2163 %8 = ADDI %2, 2 2164 %10 = IMPLICIT_DEF 2165 %9 = INSERT_SUBREG %10, killed %8, 1 2166 %11 = RLDICL killed %9, 0, 32 2167 %12 = LBZX %0, killed %11 :: (load 1 from %ir.arrayidx3, !tbaa !3) 2168 ; CHECK: LBZ 45, killed %11 2169 ; CHECK-LATE: lbz 3, 45(4) 2170 %13 = ADD4 killed %12, killed %7 2171 %15 = IMPLICIT_DEF 2172 %14 = INSERT_SUBREG %15, killed %13, 1 2173 %16 = RLWINM8 killed %14, 0, 24, 31 2174 $x3 = COPY %16 2175 BLR8 implicit $lr8, implicit $rm, implicit $x3 2176 2177 ... 2178 --- 2179 name: testLHZUX 2180 # CHECK-ALL: name: testLHZUX 2181 alignment: 4 2182 exposesReturnsTwice: false 2183 legalized: false 2184 regBankSelected: false 2185 selected: false 2186 tracksRegLiveness: true 2187 registers: 2188 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' } 2189 - { id: 1, class: g8rc, preferred-register: '' } 2190 - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' } 2191 - { id: 3, class: gprc, preferred-register: '' } 2192 - { id: 4, class: g8rc, preferred-register: '' } 2193 - { id: 5, class: g8rc, preferred-register: '' } 2194 - { id: 6, class: g8rc, preferred-register: '' } 2195 - { id: 7, class: gprc, preferred-register: '' } 2196 - { id: 8, class: gprc, preferred-register: '' } 2197 - { id: 9, class: g8rc, preferred-register: '' } 2198 - { id: 10, class: g8rc, preferred-register: '' } 2199 - { id: 11, class: g8rc, preferred-register: '' } 2200 - { id: 12, class: gprc, preferred-register: '' } 2201 - { id: 13, class: gprc, preferred-register: '' } 2202 - { id: 14, class: g8rc, preferred-register: '' } 2203 - { id: 15, class: g8rc, preferred-register: '' } 2204 - { id: 16, class: g8rc, preferred-register: '' } 2205 - { id: 17, class: g8rc_and_g8rc_nox0, preferred-register: '' } 2206 liveins: 2207 - { reg: '$x3', virtual-reg: '%0' } 2208 - { reg: '$x4', virtual-reg: '%1' } 2209 frameInfo: 2210 isFrameAddressTaken: false 2211 isReturnAddressTaken: false 2212 hasStackMap: false 2213 hasPatchPoint: false 2214 stackSize: 0 2215 offsetAdjustment: 0 2216 maxAlignment: 0 2217 adjustsStack: false 2218 hasCalls: false 2219 stackProtector: '' 2220 maxCallFrameSize: 4294967295 2221 hasOpaqueSPAdjustment: false 2222 hasVAStart: false 2223 hasMustTailInVarArgFunc: false 2224 savePoint: '' 2225 restorePoint: '' 2226 fixedStack: 2227 stack: 2228 constants: 2229 body: | 2230 bb.0.entry: 2231 liveins: $x3, $x4 2232 2233 %1 = COPY $x4 2234 %0 = COPY $x3 2235 %2 = COPY %1.sub_32 2236 %3 = ADDI %2, 1 2237 %5 = IMPLICIT_DEF 2238 %4 = INSERT_SUBREG %5, killed %3, 1 2239 %6 = RLDIC killed %4, 1, 31 2240 %7 = LHZX %0, killed %6 :: (load 2 from %ir.arrayidx, !tbaa !6) 2241 %8 = ADDI %2, 2 2242 %10 = IMPLICIT_DEF 2243 %9 = INSERT_SUBREG %10, killed %8, 1 2244 %11 = LI8 31440 2245 %12,%17 = LHZUX %0, killed %11 :: (load 2 from %ir.arrayidx3, !tbaa !6) 2246 ; CHECK: LHZU 31440, %0 2247 ; CHECK-LATE: lhzu 5, 31440(3) 2248 %13 = ADD4 killed %12, killed %7 2249 %15 = IMPLICIT_DEF 2250 %14 = INSERT_SUBREG %15, killed %13, 1 2251 %16 = RLWINM8 killed %14, 0, 16, 31 2252 $x3 = COPY %16 2253 BLR8 implicit $lr8, implicit $rm, implicit $x3 2254 2255 ... 2256 --- 2257 name: testLHZX 2258 # CHECK-ALL: name: testLHZX 2259 alignment: 4 2260 exposesReturnsTwice: false 2261 legalized: false 2262 regBankSelected: false 2263 selected: false 2264 tracksRegLiveness: true 2265 registers: 2266 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' } 2267 - { id: 1, class: g8rc, preferred-register: '' } 2268 - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' } 2269 - { id: 3, class: gprc, preferred-register: '' } 2270 - { id: 4, class: g8rc, preferred-register: '' } 2271 - { id: 5, class: g8rc, preferred-register: '' } 2272 - { id: 6, class: g8rc, preferred-register: '' } 2273 - { id: 7, class: gprc, preferred-register: '' } 2274 - { id: 8, class: gprc, preferred-register: '' } 2275 - { id: 9, class: g8rc, preferred-register: '' } 2276 - { id: 10, class: g8rc, preferred-register: '' } 2277 - { id: 11, class: g8rc, preferred-register: '' } 2278 - { id: 12, class: gprc, preferred-register: '' } 2279 - { id: 13, class: gprc, preferred-register: '' } 2280 - { id: 14, class: g8rc, preferred-register: '' } 2281 - { id: 15, class: g8rc, preferred-register: '' } 2282 - { id: 16, class: g8rc, preferred-register: '' } 2283 liveins: 2284 - { reg: '$x3', virtual-reg: '%0' } 2285 - { reg: '$x4', virtual-reg: '%1' } 2286 frameInfo: 2287 isFrameAddressTaken: false 2288 isReturnAddressTaken: false 2289 hasStackMap: false 2290 hasPatchPoint: false 2291 stackSize: 0 2292 offsetAdjustment: 0 2293 maxAlignment: 0 2294 adjustsStack: false 2295 hasCalls: false 2296 stackProtector: '' 2297 maxCallFrameSize: 4294967295 2298 hasOpaqueSPAdjustment: false 2299 hasVAStart: false 2300 hasMustTailInVarArgFunc: false 2301 savePoint: '' 2302 restorePoint: '' 2303 fixedStack: 2304 stack: 2305 constants: 2306 body: | 2307 bb.0.entry: 2308 liveins: $x3, $x4 2309 2310 %1 = COPY $x4 2311 %0 = COPY $x3 2312 %2 = COPY %1.sub_32 2313 %3 = ADDI %2, 1 2314 %5 = IMPLICIT_DEF 2315 %4 = INSERT_SUBREG %5, killed %3, 1 2316 %6 = RLDIC killed %4, 1, 31 2317 %7 = LHZX %0, killed %6 :: (load 2 from %ir.arrayidx, !tbaa !6) 2318 %8 = ADDI %2, 2 2319 %10 = IMPLICIT_DEF 2320 %9 = INSERT_SUBREG %10, killed %8, 1 2321 %11 = LI8 882 2322 %12 = LHZX %0, killed %11 :: (load 2 from %ir.arrayidx3, !tbaa !6) 2323 ; CHECK: LHZ 882, %0 2324 ; CHECK-LATE: lhz 3, 882(3) 2325 %13 = ADD4 killed %12, killed %7 2326 %15 = IMPLICIT_DEF 2327 %14 = INSERT_SUBREG %15, killed %13, 1 2328 %16 = RLWINM8 killed %14, 0, 16, 31 2329 $x3 = COPY %16 2330 BLR8 implicit $lr8, implicit $rm, implicit $x3 2331 2332 ... 2333 --- 2334 name: testLHAUX 2335 # CHECK-ALL: name: testLHAUX 2336 alignment: 4 2337 exposesReturnsTwice: false 2338 legalized: false 2339 regBankSelected: false 2340 selected: false 2341 tracksRegLiveness: true 2342 registers: 2343 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' } 2344 - { id: 1, class: g8rc, preferred-register: '' } 2345 - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' } 2346 - { id: 3, class: gprc, preferred-register: '' } 2347 - { id: 4, class: g8rc, preferred-register: '' } 2348 - { id: 5, class: g8rc, preferred-register: '' } 2349 - { id: 6, class: g8rc, preferred-register: '' } 2350 - { id: 7, class: gprc, preferred-register: '' } 2351 - { id: 8, class: gprc, preferred-register: '' } 2352 - { id: 9, class: g8rc, preferred-register: '' } 2353 - { id: 10, class: g8rc, preferred-register: '' } 2354 - { id: 11, class: g8rc, preferred-register: '' } 2355 - { id: 12, class: gprc, preferred-register: '' } 2356 - { id: 13, class: gprc, preferred-register: '' } 2357 - { id: 14, class: g8rc, preferred-register: '' } 2358 - { id: 15, class: g8rc, preferred-register: '' } 2359 - { id: 16, class: g8rc, preferred-register: '' } 2360 - { id: 17, class: g8rc_and_g8rc_nox0, preferred-register: '' } 2361 liveins: 2362 - { reg: '$x3', virtual-reg: '%0' } 2363 - { reg: '$x4', virtual-reg: '%1' } 2364 frameInfo: 2365 isFrameAddressTaken: false 2366 isReturnAddressTaken: false 2367 hasStackMap: false 2368 hasPatchPoint: false 2369 stackSize: 0 2370 offsetAdjustment: 0 2371 maxAlignment: 0 2372 adjustsStack: false 2373 hasCalls: false 2374 stackProtector: '' 2375 maxCallFrameSize: 4294967295 2376 hasOpaqueSPAdjustment: false 2377 hasVAStart: false 2378 hasMustTailInVarArgFunc: false 2379 savePoint: '' 2380 restorePoint: '' 2381 fixedStack: 2382 stack: 2383 constants: 2384 body: | 2385 bb.0.entry: 2386 liveins: $x3, $x4 2387 2388 %1 = COPY $x4 2389 %0 = COPY $x3 2390 %2 = COPY %1.sub_32 2391 %3 = ADDI %2, 1 2392 %5 = IMPLICIT_DEF 2393 %4 = INSERT_SUBREG %5, killed %3, 1 2394 %6 = RLDIC %4, 1, 31 2395 %7 = LHZX %0, killed %6 :: (load 2 from %ir.arrayidx, !tbaa !6) 2396 %8 = ADDI %2, 2 2397 %10 = IMPLICIT_DEF 2398 %9 = INSERT_SUBREG %10, killed %8, 1 2399 %11 = LI8 400 2400 %12,%17 = LHAUX %0, killed %11 :: (load 2 from %ir.arrayidx3, !tbaa !6) 2401 ; CHECK: LHAU 400, %0 2402 ; CHECK-LATE: lhau 5, 400(3) 2403 %13 = ADD4 killed %12, killed %7 2404 %15 = IMPLICIT_DEF 2405 %14 = INSERT_SUBREG %15, killed %13, 1 2406 %16 = EXTSH8 killed %14 2407 $x3 = COPY %16 2408 BLR8 implicit $lr8, implicit $rm, implicit $x3 2409 2410 ... 2411 --- 2412 name: testLHAX 2413 # CHECK-ALL: name: testLHAX 2414 alignment: 4 2415 exposesReturnsTwice: false 2416 legalized: false 2417 regBankSelected: false 2418 selected: false 2419 tracksRegLiveness: true 2420 registers: 2421 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' } 2422 - { id: 1, class: g8rc, preferred-register: '' } 2423 - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' } 2424 - { id: 3, class: gprc, preferred-register: '' } 2425 - { id: 4, class: g8rc, preferred-register: '' } 2426 - { id: 5, class: g8rc, preferred-register: '' } 2427 - { id: 6, class: g8rc, preferred-register: '' } 2428 - { id: 7, class: gprc, preferred-register: '' } 2429 - { id: 8, class: gprc, preferred-register: '' } 2430 - { id: 9, class: g8rc, preferred-register: '' } 2431 - { id: 10, class: g8rc, preferred-register: '' } 2432 - { id: 11, class: g8rc, preferred-register: '' } 2433 - { id: 12, class: gprc, preferred-register: '' } 2434 - { id: 13, class: gprc, preferred-register: '' } 2435 - { id: 14, class: g8rc, preferred-register: '' } 2436 - { id: 15, class: g8rc, preferred-register: '' } 2437 - { id: 16, class: g8rc, preferred-register: '' } 2438 liveins: 2439 - { reg: '$x3', virtual-reg: '%0' } 2440 - { reg: '$x4', virtual-reg: '%1' } 2441 frameInfo: 2442 isFrameAddressTaken: false 2443 isReturnAddressTaken: false 2444 hasStackMap: false 2445 hasPatchPoint: false 2446 stackSize: 0 2447 offsetAdjustment: 0 2448 maxAlignment: 0 2449 adjustsStack: false 2450 hasCalls: false 2451 stackProtector: '' 2452 maxCallFrameSize: 4294967295 2453 hasOpaqueSPAdjustment: false 2454 hasVAStart: false 2455 hasMustTailInVarArgFunc: false 2456 savePoint: '' 2457 restorePoint: '' 2458 fixedStack: 2459 stack: 2460 constants: 2461 body: | 2462 bb.0.entry: 2463 liveins: $x3, $x4 2464 2465 %1 = COPY $x4 2466 %0 = COPY $x3 2467 %2 = COPY %1.sub_32 2468 %3 = ADDI %2, 1 2469 %5 = IMPLICIT_DEF 2470 %4 = INSERT_SUBREG %5, killed %3, 1 2471 %6 = LI8 -999 2472 %7 = LHAX %0, killed %6 :: (load 2 from %ir.arrayidx, !tbaa !6) 2473 ; CHECK: LHA -999, %0 2474 ; CHECK-LATE: lha 4, -999(3) 2475 %8 = ADDI %2, 2 2476 %10 = IMPLICIT_DEF 2477 %9 = INSERT_SUBREG %10, killed %8, 1 2478 %11 = LI8 999 2479 %12 = LHAX %0, killed %11 :: (load 2 from %ir.arrayidx3, !tbaa !6) 2480 ; CHECK: LHA 999, %0 2481 ; CHECK-LATE: lha 3, 999(3) 2482 %13 = ADD4 killed %12, killed %7 2483 %15 = IMPLICIT_DEF 2484 %14 = INSERT_SUBREG %15, killed %13, 1 2485 %16 = EXTSH8 killed %14 2486 $x3 = COPY %16 2487 BLR8 implicit $lr8, implicit $rm, implicit $x3 2488 2489 ... 2490 --- 2491 name: testLWZUX 2492 # CHECK-ALL: name: testLWZUX 2493 alignment: 4 2494 exposesReturnsTwice: false 2495 legalized: false 2496 regBankSelected: false 2497 selected: false 2498 tracksRegLiveness: true 2499 registers: 2500 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' } 2501 - { id: 1, class: g8rc, preferred-register: '' } 2502 - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' } 2503 - { id: 3, class: gprc, preferred-register: '' } 2504 - { id: 4, class: g8rc, preferred-register: '' } 2505 - { id: 5, class: g8rc, preferred-register: '' } 2506 - { id: 6, class: g8rc, preferred-register: '' } 2507 - { id: 7, class: gprc, preferred-register: '' } 2508 - { id: 8, class: gprc, preferred-register: '' } 2509 - { id: 9, class: g8rc, preferred-register: '' } 2510 - { id: 10, class: g8rc, preferred-register: '' } 2511 - { id: 11, class: g8rc, preferred-register: '' } 2512 - { id: 12, class: gprc, preferred-register: '' } 2513 - { id: 13, class: gprc, preferred-register: '' } 2514 - { id: 14, class: g8rc, preferred-register: '' } 2515 - { id: 15, class: g8rc, preferred-register: '' } 2516 - { id: 16, class: g8rc, preferred-register: '' } 2517 - { id: 17, class: g8rc_and_g8rc_nox0, preferred-register: '' } 2518 - { id: 18, class: g8rc_and_g8rc_nox0, preferred-register: '' } 2519 liveins: 2520 - { reg: '$x3', virtual-reg: '%0' } 2521 - { reg: '$x4', virtual-reg: '%1' } 2522 frameInfo: 2523 isFrameAddressTaken: false 2524 isReturnAddressTaken: false 2525 hasStackMap: false 2526 hasPatchPoint: false 2527 stackSize: 0 2528 offsetAdjustment: 0 2529 maxAlignment: 0 2530 adjustsStack: false 2531 hasCalls: false 2532 stackProtector: '' 2533 maxCallFrameSize: 4294967295 2534 hasOpaqueSPAdjustment: false 2535 hasVAStart: false 2536 hasMustTailInVarArgFunc: false 2537 savePoint: '' 2538 restorePoint: '' 2539 fixedStack: 2540 stack: 2541 constants: 2542 body: | 2543 bb.0.entry: 2544 liveins: $x3, $x4 2545 2546 %1 = COPY $x4 2547 %0 = COPY $x3 2548 %2 = COPY %1.sub_32 2549 %3 = ADDI %2, 1 2550 %5 = IMPLICIT_DEF 2551 %4 = INSERT_SUBREG %5, killed %3, 1 2552 %6 = LI8 889 2553 %7,%17 = LWZUX %0, killed %6 :: (load 4 from %ir.arrayidx, !tbaa !8) 2554 ; CHECK: LWZU 889, %0 2555 ; CHECK-LATE: lwzu {{[0-9]+}}, 889({{[0-9]+}}) 2556 %8 = ADDI %2, 2 2557 %10 = IMPLICIT_DEF 2558 %9 = INSERT_SUBREG %10, killed %8, 1 2559 %11 = LI8 -2 2560 %12,%18 = LWZUX %0, killed %11 :: (load 4 from %ir.arrayidx3, !tbaa !8) 2561 ; CHECK: LWZU -2, %0 2562 ; CHECK-LATE: lwzu {{[0-9]+}}, -2({{[0-9]+}}) 2563 %13 = ADD4 killed %12, killed %7 2564 %15 = IMPLICIT_DEF 2565 %14 = INSERT_SUBREG %15, killed %13, 1 2566 %16 = RLDICL killed %14, 0, 32 2567 $x3 = COPY %16 2568 BLR8 implicit $lr8, implicit $rm, implicit $x3 2569 2570 ... 2571 --- 2572 name: testLWZX 2573 # CHECK-ALL: name: testLWZX 2574 alignment: 4 2575 exposesReturnsTwice: false 2576 legalized: false 2577 regBankSelected: false 2578 selected: false 2579 tracksRegLiveness: true 2580 registers: 2581 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' } 2582 - { id: 1, class: g8rc, preferred-register: '' } 2583 - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' } 2584 - { id: 3, class: gprc, preferred-register: '' } 2585 - { id: 4, class: g8rc, preferred-register: '' } 2586 - { id: 5, class: g8rc, preferred-register: '' } 2587 - { id: 6, class: g8rc, preferred-register: '' } 2588 - { id: 7, class: gprc, preferred-register: '' } 2589 - { id: 8, class: gprc, preferred-register: '' } 2590 - { id: 9, class: g8rc, preferred-register: '' } 2591 - { id: 10, class: g8rc, preferred-register: '' } 2592 - { id: 11, class: g8rc, preferred-register: '' } 2593 - { id: 12, class: gprc, preferred-register: '' } 2594 - { id: 13, class: gprc, preferred-register: '' } 2595 - { id: 14, class: g8rc, preferred-register: '' } 2596 - { id: 15, class: g8rc, preferred-register: '' } 2597 - { id: 16, class: g8rc, preferred-register: '' } 2598 liveins: 2599 - { reg: '$x3', virtual-reg: '%0' } 2600 - { reg: '$x4', virtual-reg: '%1' } 2601 frameInfo: 2602 isFrameAddressTaken: false 2603 isReturnAddressTaken: false 2604 hasStackMap: false 2605 hasPatchPoint: false 2606 stackSize: 0 2607 offsetAdjustment: 0 2608 maxAlignment: 0 2609 adjustsStack: false 2610 hasCalls: false 2611 stackProtector: '' 2612 maxCallFrameSize: 4294967295 2613 hasOpaqueSPAdjustment: false 2614 hasVAStart: false 2615 hasMustTailInVarArgFunc: false 2616 savePoint: '' 2617 restorePoint: '' 2618 fixedStack: 2619 stack: 2620 constants: 2621 body: | 2622 bb.0.entry: 2623 liveins: $x3, $x4 2624 2625 %1 = COPY $x4 2626 %0 = LI8 1000 2627 %2 = COPY %1.sub_32 2628 %3 = ADDI %2, 1 2629 %5 = IMPLICIT_DEF 2630 %4 = INSERT_SUBREG %5, killed %3, 1 2631 %6 = RLDIC %4, 2, 30 2632 %7 = LWZX %0, killed %6 :: (load 4 from %ir.arrayidx, !tbaa !8) 2633 ; CHECK: LWZ 1000, killed %6 2634 ; CHECK-LATE: lwz 5, 1000(5) 2635 %8 = ADDI %2, 2 2636 %10 = IMPLICIT_DEF 2637 %9 = INSERT_SUBREG %10, killed %8, 1 2638 %11 = RLDIC %9, 2, 30 2639 %12 = LWZX %0, killed %11 :: (load 4 from %ir.arrayidx3, !tbaa !8) 2640 ; CHECK: LWZ 1000, killed %11 2641 ; CHECK-LATE: lwz 3, 1000(4) 2642 %13 = ADD4 killed %12, killed %7 2643 %15 = IMPLICIT_DEF 2644 %14 = INSERT_SUBREG %15, killed %13, 1 2645 %16 = RLDICL killed %14, 0, 32 2646 $x3 = COPY %16 2647 BLR8 implicit $lr8, implicit $rm, implicit $x3 2648 2649 ... 2650 --- 2651 name: testLWAX 2652 # CHECK-ALL: name: testLWAX 2653 alignment: 4 2654 exposesReturnsTwice: false 2655 legalized: false 2656 regBankSelected: false 2657 selected: false 2658 tracksRegLiveness: true 2659 registers: 2660 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' } 2661 - { id: 1, class: g8rc, preferred-register: '' } 2662 - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' } 2663 - { id: 3, class: gprc, preferred-register: '' } 2664 - { id: 4, class: g8rc, preferred-register: '' } 2665 - { id: 5, class: g8rc, preferred-register: '' } 2666 - { id: 6, class: g8rc, preferred-register: '' } 2667 - { id: 7, class: g8rc, preferred-register: '' } 2668 - { id: 8, class: gprc, preferred-register: '' } 2669 - { id: 9, class: g8rc, preferred-register: '' } 2670 - { id: 10, class: g8rc, preferred-register: '' } 2671 - { id: 11, class: g8rc, preferred-register: '' } 2672 - { id: 12, class: g8rc, preferred-register: '' } 2673 - { id: 13, class: g8rc, preferred-register: '' } 2674 liveins: 2675 - { reg: '$x3', virtual-reg: '%0' } 2676 - { reg: '$x4', virtual-reg: '%1' } 2677 frameInfo: 2678 isFrameAddressTaken: false 2679 isReturnAddressTaken: false 2680 hasStackMap: false 2681 hasPatchPoint: false 2682 stackSize: 0 2683 offsetAdjustment: 0 2684 maxAlignment: 0 2685 adjustsStack: false 2686 hasCalls: false 2687 stackProtector: '' 2688 maxCallFrameSize: 4294967295 2689 hasOpaqueSPAdjustment: false 2690 hasVAStart: false 2691 hasMustTailInVarArgFunc: false 2692 savePoint: '' 2693 restorePoint: '' 2694 fixedStack: 2695 stack: 2696 constants: 2697 body: | 2698 bb.0.entry: 2699 liveins: $x3, $x4 2700 2701 %1 = COPY $x4 2702 %0 = LI8 444 2703 %2 = COPY %1.sub_32 2704 %3 = ADDI %2, 1 2705 %5 = IMPLICIT_DEF 2706 %4 = INSERT_SUBREG %5, killed %3, 1 2707 %6 = RLDIC %4, 2, 30 2708 %7 = LWAX %0, killed %6 :: (load 4 from %ir.arrayidx, !tbaa !8) 2709 ; CHECK: LWA 444, killed %6 2710 ; CHECK-LATE: lwa 5, 444(5) 2711 %8 = ADDI %2, 2 2712 %10 = IMPLICIT_DEF 2713 %9 = INSERT_SUBREG %10, killed %8, 1 2714 %11 = RLDIC %9, 2, 30 2715 %12 = LWAX %0, killed %11 :: (load 4 from %ir.arrayidx3, !tbaa !8) 2716 ; CHECK: LWA 444, killed %11 2717 ; CHECK-LATE: lwa 3, 444(4) 2718 %13 = ADD8 killed %12, killed %7 2719 $x3 = COPY %13 2720 BLR8 implicit $lr8, implicit $rm, implicit $x3 2721 2722 ... 2723 --- 2724 name: testLDUX 2725 # CHECK-ALL: name: testLDUX 2726 alignment: 4 2727 exposesReturnsTwice: false 2728 legalized: false 2729 regBankSelected: false 2730 selected: false 2731 tracksRegLiveness: true 2732 registers: 2733 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' } 2734 - { id: 1, class: g8rc, preferred-register: '' } 2735 - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' } 2736 - { id: 3, class: gprc, preferred-register: '' } 2737 - { id: 4, class: g8rc, preferred-register: '' } 2738 - { id: 5, class: g8rc, preferred-register: '' } 2739 - { id: 6, class: g8rc, preferred-register: '' } 2740 - { id: 7, class: g8rc, preferred-register: '' } 2741 - { id: 8, class: gprc, preferred-register: '' } 2742 - { id: 9, class: g8rc, preferred-register: '' } 2743 - { id: 10, class: g8rc, preferred-register: '' } 2744 - { id: 11, class: g8rc, preferred-register: '' } 2745 - { id: 12, class: g8rc, preferred-register: '' } 2746 - { id: 13, class: g8rc, preferred-register: '' } 2747 - { id: 14, class: g8rc_and_g8rc_nox0, preferred-register: '' } 2748 - { id: 15, class: g8rc_and_g8rc_nox0, preferred-register: '' } 2749 liveins: 2750 - { reg: '$x3', virtual-reg: '%0' } 2751 - { reg: '$x4', virtual-reg: '%1' } 2752 frameInfo: 2753 isFrameAddressTaken: false 2754 isReturnAddressTaken: false 2755 hasStackMap: false 2756 hasPatchPoint: false 2757 stackSize: 0 2758 offsetAdjustment: 0 2759 maxAlignment: 0 2760 adjustsStack: false 2761 hasCalls: false 2762 stackProtector: '' 2763 maxCallFrameSize: 4294967295 2764 hasOpaqueSPAdjustment: false 2765 hasVAStart: false 2766 hasMustTailInVarArgFunc: false 2767 savePoint: '' 2768 restorePoint: '' 2769 fixedStack: 2770 stack: 2771 constants: 2772 body: | 2773 bb.0.entry: 2774 liveins: $x3, $x4 2775 2776 %1 = COPY $x4 2777 %0 = COPY $x3 2778 %2 = COPY %1.sub_32 2779 %3 = ADDI %2, 1 2780 %5 = IMPLICIT_DEF 2781 %4 = INSERT_SUBREG %5, killed %3, 1 2782 %6 = LI8 100 2783 %7,%14 = LDUX %0, killed %6 :: (load 8 from %ir.arrayidx, !tbaa !10) 2784 ; CHECK: LDU 100, %0 2785 ; CHECK-LATE: ldu {{[0-9]+}}, 100({{[0-9]+}}) 2786 %8 = ADDI %2, 2 2787 %10 = IMPLICIT_DEF 2788 %9 = INSERT_SUBREG %10, killed %8, 1 2789 %11 = LI8 200 2790 %12,%15 = LDUX %0, killed %11 :: (load 8 from %ir.arrayidx3, !tbaa !10) 2791 ; CHECK: LDU 200, %0 2792 ; CHECK-LATE: ldu {{[0-9]+}}, 200({{[0-9]+}}) 2793 %13 = ADD8 killed %12, killed %7 2794 $x3 = COPY %13 2795 BLR8 implicit $lr8, implicit $rm, implicit $x3 2796 2797 ... 2798 --- 2799 name: testLDX 2800 # CHECK-ALL: name: testLDX 2801 alignment: 4 2802 exposesReturnsTwice: false 2803 legalized: false 2804 regBankSelected: false 2805 selected: false 2806 tracksRegLiveness: true 2807 registers: 2808 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' } 2809 - { id: 1, class: g8rc, preferred-register: '' } 2810 - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' } 2811 - { id: 3, class: gprc, preferred-register: '' } 2812 - { id: 4, class: g8rc, preferred-register: '' } 2813 - { id: 5, class: g8rc, preferred-register: '' } 2814 - { id: 6, class: g8rc, preferred-register: '' } 2815 - { id: 7, class: g8rc, preferred-register: '' } 2816 - { id: 8, class: gprc, preferred-register: '' } 2817 - { id: 9, class: g8rc, preferred-register: '' } 2818 - { id: 10, class: g8rc, preferred-register: '' } 2819 - { id: 11, class: g8rc, preferred-register: '' } 2820 - { id: 12, class: g8rc, preferred-register: '' } 2821 - { id: 13, class: g8rc, preferred-register: '' } 2822 liveins: 2823 - { reg: '$x3', virtual-reg: '%0' } 2824 - { reg: '$x4', virtual-reg: '%1' } 2825 frameInfo: 2826 isFrameAddressTaken: false 2827 isReturnAddressTaken: false 2828 hasStackMap: false 2829 hasPatchPoint: false 2830 stackSize: 0 2831 offsetAdjustment: 0 2832 maxAlignment: 0 2833 adjustsStack: false 2834 hasCalls: false 2835 stackProtector: '' 2836 maxCallFrameSize: 4294967295 2837 hasOpaqueSPAdjustment: false 2838 hasVAStart: false 2839 hasMustTailInVarArgFunc: false 2840 savePoint: '' 2841 restorePoint: '' 2842 fixedStack: 2843 stack: 2844 constants: 2845 body: | 2846 bb.0.entry: 2847 liveins: $x3, $x4 2848 2849 %1 = COPY $x4 2850 %0 = COPY $x3 2851 %2 = COPY %1.sub_32 2852 %3 = ADDI %2, 1 2853 %5 = IMPLICIT_DEF 2854 %4 = INSERT_SUBREG %5, killed %3, 1 2855 %6 = LI8 120 2856 %7 = LDX %0, killed %6 :: (load 8 from %ir.arrayidx, !tbaa !10) 2857 ; CHECK: LD 120, %0 2858 ; CHECK-LATE: ld 4, 120(3) 2859 %8 = ADDI %2, 2 2860 %10 = IMPLICIT_DEF 2861 %9 = INSERT_SUBREG %10, killed %8, 1 2862 %11 = LI8 280 2863 %12 = LDX %0, killed %11 :: (load 8 from %ir.arrayidx3, !tbaa !10) 2864 ; CHECK: LD 280, %0 2865 ; CHECK-LATE: ld 3, 280(3) 2866 %13 = ADD8 killed %12, killed %7 2867 $x3 = COPY %13 2868 BLR8 implicit $lr8, implicit $rm, implicit $x3 2869 2870 ... 2871 --- 2872 name: testLFDUX 2873 # CHECK-ALL: name: testLFDUX 2874 alignment: 4 2875 exposesReturnsTwice: false 2876 legalized: false 2877 regBankSelected: false 2878 selected: false 2879 tracksRegLiveness: true 2880 registers: 2881 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' } 2882 - { id: 1, class: g8rc, preferred-register: '' } 2883 - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' } 2884 - { id: 3, class: gprc, preferred-register: '' } 2885 - { id: 4, class: g8rc, preferred-register: '' } 2886 - { id: 5, class: g8rc, preferred-register: '' } 2887 - { id: 6, class: g8rc, preferred-register: '' } 2888 - { id: 7, class: f8rc, preferred-register: '' } 2889 - { id: 8, class: gprc, preferred-register: '' } 2890 - { id: 9, class: g8rc, preferred-register: '' } 2891 - { id: 10, class: g8rc, preferred-register: '' } 2892 - { id: 11, class: g8rc, preferred-register: '' } 2893 - { id: 12, class: f8rc, preferred-register: '' } 2894 - { id: 13, class: f8rc, preferred-register: '' } 2895 - { id: 14, class: g8rc_and_g8rc_nox0, preferred-register: '' } 2896 - { id: 15, class: g8rc_and_g8rc_nox0, preferred-register: '' } 2897 liveins: 2898 - { reg: '$x3', virtual-reg: '%0' } 2899 - { reg: '$x4', virtual-reg: '%1' } 2900 frameInfo: 2901 isFrameAddressTaken: false 2902 isReturnAddressTaken: false 2903 hasStackMap: false 2904 hasPatchPoint: false 2905 stackSize: 0 2906 offsetAdjustment: 0 2907 maxAlignment: 0 2908 adjustsStack: false 2909 hasCalls: false 2910 stackProtector: '' 2911 maxCallFrameSize: 4294967295 2912 hasOpaqueSPAdjustment: false 2913 hasVAStart: false 2914 hasMustTailInVarArgFunc: false 2915 savePoint: '' 2916 restorePoint: '' 2917 fixedStack: 2918 stack: 2919 constants: 2920 body: | 2921 bb.0.entry: 2922 liveins: $x3, $x4 2923 2924 %1 = COPY $x4 2925 %0 = COPY $x3 2926 %2 = COPY %1.sub_32 2927 %3 = ADDI %2, 1 2928 %5 = IMPLICIT_DEF 2929 %4 = INSERT_SUBREG %5, killed %3, 1 2930 %6 = LI8 440 2931 %7,%14 = LFDUX %0, killed %6 :: (load 8 from %ir.arrayidx, !tbaa !12) 2932 ; CHECK: LFDU 440, %0 2933 ; CHECK-LATE: lfdu {{[0-9]+}}, 440({{[0-9]+}}) 2934 %8 = ADDI %2, 2 2935 %10 = IMPLICIT_DEF 2936 %9 = INSERT_SUBREG %10, killed %8, 1 2937 %11 = LI8 16 2938 %12,%15 = LFDUX %0, killed %11 :: (load 8 from %ir.arrayidx3, !tbaa !12) 2939 ; CHECK: LFDU 16, %0 2940 ; CHECK-LATE: lfdu {{[0-9]+}}, 16({{[0-9]+}}) 2941 %13 = FADD killed %7, killed %12, implicit $rm 2942 $f1 = COPY %13 2943 BLR8 implicit $lr8, implicit $rm, implicit $f1 2944 2945 ... 2946 --- 2947 name: testLFDX 2948 # CHECK-ALL: name: testLFDX 2949 alignment: 4 2950 exposesReturnsTwice: false 2951 legalized: false 2952 regBankSelected: false 2953 selected: false 2954 tracksRegLiveness: true 2955 registers: 2956 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' } 2957 - { id: 1, class: g8rc, preferred-register: '' } 2958 - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' } 2959 - { id: 3, class: gprc, preferred-register: '' } 2960 - { id: 4, class: g8rc, preferred-register: '' } 2961 - { id: 5, class: g8rc, preferred-register: '' } 2962 - { id: 6, class: g8rc, preferred-register: '' } 2963 - { id: 7, class: f8rc, preferred-register: '' } 2964 - { id: 8, class: gprc, preferred-register: '' } 2965 - { id: 9, class: g8rc, preferred-register: '' } 2966 - { id: 10, class: g8rc, preferred-register: '' } 2967 - { id: 11, class: g8rc, preferred-register: '' } 2968 - { id: 12, class: f8rc, preferred-register: '' } 2969 - { id: 13, class: f8rc, preferred-register: '' } 2970 liveins: 2971 - { reg: '$x3', virtual-reg: '%0' } 2972 - { reg: '$x4', virtual-reg: '%1' } 2973 frameInfo: 2974 isFrameAddressTaken: false 2975 isReturnAddressTaken: false 2976 hasStackMap: false 2977 hasPatchPoint: false 2978 stackSize: 0 2979 offsetAdjustment: 0 2980 maxAlignment: 0 2981 adjustsStack: false 2982 hasCalls: false 2983 stackProtector: '' 2984 maxCallFrameSize: 4294967295 2985 hasOpaqueSPAdjustment: false 2986 hasVAStart: false 2987 hasMustTailInVarArgFunc: false 2988 savePoint: '' 2989 restorePoint: '' 2990 fixedStack: 2991 stack: 2992 constants: 2993 body: | 2994 bb.0.entry: 2995 liveins: $x3, $x4 2996 2997 %1 = COPY $x4 2998 %0 = LI8 -20 2999 %2 = COPY %1.sub_32 3000 %3 = ADDI %2, 1 3001 %5 = IMPLICIT_DEF 3002 %4 = INSERT_SUBREG %5, killed %3, 1 3003 %6 = RLDIC %4, 3, 29 3004 %7 = LFDX %0, killed %6 :: (load 8 from %ir.arrayidx, !tbaa !12) 3005 ; CHECK: LFD -20, killed %6 3006 ; CHECK-LATE: lfd {{[0-9]+}}, -20({{[0-9]+}}) 3007 %8 = ADDI %2, 2 3008 %10 = IMPLICIT_DEF 3009 %9 = INSERT_SUBREG %10, killed %8, 1 3010 %11 = RLDIC %9, 3, 29 3011 %12 = LFDX %0, killed %11 :: (load 8 from %ir.arrayidx3, !tbaa !12) 3012 ; CHECK: LFD -20, killed %11 3013 ; CHECK-LATE: lfd {{[0-9]+}}, -20({{[0-9]+}}) 3014 %13 = FADD killed %7, killed %12, implicit $rm 3015 $f1 = COPY %13 3016 BLR8 implicit $lr8, implicit $rm, implicit $f1 3017 3018 ... 3019 --- 3020 name: testLFSUX 3021 # CHECK-ALL: name: testLFSUX 3022 alignment: 4 3023 exposesReturnsTwice: false 3024 legalized: false 3025 regBankSelected: false 3026 selected: false 3027 tracksRegLiveness: true 3028 registers: 3029 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' } 3030 - { id: 1, class: g8rc, preferred-register: '' } 3031 - { id: 2, class: g8rc, preferred-register: '' } 3032 - { id: 3, class: f8rc, preferred-register: '' } 3033 - { id: 4, class: g8rc_and_g8rc_nox0, preferred-register: '' } 3034 - { id: 5, class: f8rc, preferred-register: '' } 3035 - { id: 6, class: g8rc, preferred-register: '' } 3036 - { id: 7, class: gprc, preferred-register: '' } 3037 - { id: 8, class: f8rc, preferred-register: '' } 3038 - { id: 9, class: f8rc, preferred-register: '' } 3039 - { id: 10, class: f8rc, preferred-register: '' } 3040 - { id: 11, class: g8rc, preferred-register: '' } 3041 - { id: 12, class: gprc, preferred-register: '' } 3042 - { id: 13, class: f8rc, preferred-register: '' } 3043 - { id: 14, class: f8rc, preferred-register: '' } 3044 - { id: 15, class: f8rc, preferred-register: '' } 3045 - { id: 16, class: g8rc, preferred-register: '' } 3046 - { id: 17, class: gprc, preferred-register: '' } 3047 - { id: 18, class: f8rc, preferred-register: '' } 3048 - { id: 19, class: f8rc, preferred-register: '' } 3049 - { id: 20, class: f8rc, preferred-register: '' } 3050 - { id: 21, class: g8rc, preferred-register: '' } 3051 - { id: 22, class: gprc, preferred-register: '' } 3052 - { id: 23, class: g8rc, preferred-register: '' } 3053 - { id: 24, class: vrrc, preferred-register: '' } 3054 liveins: 3055 - { reg: '$x3', virtual-reg: '%0' } 3056 - { reg: '$x4', virtual-reg: '%1' } 3057 frameInfo: 3058 isFrameAddressTaken: false 3059 isReturnAddressTaken: false 3060 hasStackMap: false 3061 hasPatchPoint: false 3062 stackSize: 0 3063 offsetAdjustment: 0 3064 maxAlignment: 16 3065 adjustsStack: false 3066 hasCalls: false 3067 stackProtector: '' 3068 maxCallFrameSize: 4294967295 3069 hasOpaqueSPAdjustment: false 3070 hasVAStart: false 3071 hasMustTailInVarArgFunc: false 3072 savePoint: '' 3073 restorePoint: '' 3074 fixedStack: 3075 stack: 3076 - { id: 0, name: '', type: default, offset: 0, size: 16, alignment: 16, 3077 stack-id: 0, callee-saved-register: '', callee-saved-restored: true, 3078 local-offset: -16, debug-info-variable: '', debug-info-expression: '', 3079 debug-info-location: '' } 3080 - { id: 1, name: '', type: default, offset: 0, size: 4, alignment: 4, 3081 stack-id: 0, callee-saved-register: '', callee-saved-restored: true, 3082 local-offset: -20, debug-info-variable: '', debug-info-expression: '', 3083 debug-info-location: '' } 3084 - { id: 2, name: '', type: default, offset: 0, size: 4, alignment: 4, 3085 stack-id: 0, callee-saved-register: '', callee-saved-restored: true, 3086 local-offset: -24, debug-info-variable: '', debug-info-expression: '', 3087 debug-info-location: '' } 3088 - { id: 3, name: '', type: default, offset: 0, size: 4, alignment: 4, 3089 stack-id: 0, callee-saved-register: '', callee-saved-restored: true, 3090 local-offset: -28, debug-info-variable: '', debug-info-expression: '', 3091 debug-info-location: '' } 3092 - { id: 4, name: '', type: default, offset: 0, size: 4, alignment: 4, 3093 stack-id: 0, callee-saved-register: '', callee-saved-restored: true, 3094 local-offset: -32, debug-info-variable: '', debug-info-expression: '', 3095 debug-info-location: '' } 3096 constants: 3097 body: | 3098 bb.0.entry: 3099 liveins: $x3, $x4 3100 3101 %1 = COPY $x4 3102 %0 = COPY $x3 3103 %2 = LI8 72 3104 %3, %4 = LFSUX %0, killed %2 :: (load 4 from %ir.arrayidx, !tbaa !14) 3105 ; CHECK: LFSU 72, %0 3106 ; CHECK-LATE: lfsu 0, 72(3) 3107 %5 = FCTIWUZ killed %3, implicit $rm 3108 %6 = ADDI8 %stack.4, 0 3109 STFIWX killed %5, $zero8, killed %6 3110 %7 = LWZ 0, %stack.4 :: (load 4 from %stack.4) 3111 %8 = LFS 4, %4 :: (load 4 from %ir.3, !tbaa !14) 3112 %10 = FCTIWUZ %8, implicit $rm 3113 %11 = ADDI8 %stack.1, 0 3114 STFIWX killed %10, $zero8, killed %11 3115 %12 = LWZ 0, %stack.1 :: (load 4 from %stack.1) 3116 %13 = LFS 8, %4 :: (load 4 from %ir.5, !tbaa !14) 3117 %15 = FCTIWUZ %13, implicit $rm 3118 %16 = ADDI8 %stack.2, 0 3119 STFIWX killed %15, $zero8, killed %16 3120 %17 = LWZ 0, %stack.2 :: (load 4 from %stack.2) 3121 %18 = LFS 12, %4 :: (load 4 from %ir.7, !tbaa !14) 3122 %20 = FCTIWUZ %18, implicit $rm 3123 %21 = ADDI8 %stack.3, 0 3124 STFIWX killed %20, $zero8, killed %21 3125 %22 = LWZ 0, %stack.3 :: (load 4 from %stack.3) 3126 STW killed %7, 0, %stack.0 :: (store 4 into %stack.0, align 16) 3127 STW killed %22, 12, %stack.0 :: (store 4 into %stack.0 + 12) 3128 STW killed %17, 8, %stack.0 :: (store 4 into %stack.0 + 8, align 8) 3129 STW killed %12, 4, %stack.0 :: (store 4 into %stack.0 + 4) 3130 %23 = ADDI8 %stack.0, 0 3131 %24 = LVX $zero8, killed %23 :: (load 16 from %stack.0) 3132 $v2 = COPY %24 3133 BLR8 implicit $lr8, implicit $rm, implicit $v2 3134 3135 ... 3136 --- 3137 name: testLFSX 3138 # CHECK-ALL: name: testLFSX 3139 alignment: 4 3140 exposesReturnsTwice: false 3141 legalized: false 3142 regBankSelected: false 3143 selected: false 3144 tracksRegLiveness: true 3145 registers: 3146 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' } 3147 - { id: 1, class: g8rc, preferred-register: '' } 3148 - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' } 3149 - { id: 3, class: gprc, preferred-register: '' } 3150 - { id: 4, class: g8rc, preferred-register: '' } 3151 - { id: 5, class: g8rc, preferred-register: '' } 3152 - { id: 6, class: g8rc, preferred-register: '' } 3153 - { id: 7, class: f4rc, preferred-register: '' } 3154 - { id: 8, class: gprc, preferred-register: '' } 3155 - { id: 9, class: g8rc, preferred-register: '' } 3156 - { id: 10, class: g8rc, preferred-register: '' } 3157 - { id: 11, class: g8rc, preferred-register: '' } 3158 - { id: 12, class: f4rc, preferred-register: '' } 3159 - { id: 13, class: f4rc, preferred-register: '' } 3160 liveins: 3161 - { reg: '$x3', virtual-reg: '%0' } 3162 - { reg: '$x4', virtual-reg: '%1' } 3163 frameInfo: 3164 isFrameAddressTaken: false 3165 isReturnAddressTaken: false 3166 hasStackMap: false 3167 hasPatchPoint: false 3168 stackSize: 0 3169 offsetAdjustment: 0 3170 maxAlignment: 0 3171 adjustsStack: false 3172 hasCalls: false 3173 stackProtector: '' 3174 maxCallFrameSize: 4294967295 3175 hasOpaqueSPAdjustment: false 3176 hasVAStart: false 3177 hasMustTailInVarArgFunc: false 3178 savePoint: '' 3179 restorePoint: '' 3180 fixedStack: 3181 stack: 3182 constants: 3183 body: | 3184 bb.0.entry: 3185 liveins: $x3, $x4 3186 3187 %1 = COPY $x4 3188 %0 = COPY $x3 3189 %2 = COPY %1.sub_32 3190 %3 = ADDI %2, 1 3191 %5 = IMPLICIT_DEF 3192 %4 = INSERT_SUBREG %5, killed %3, 1 3193 %6 = LI8 88 3194 %7 = LFSX %0, killed %6 :: (load 4 from %ir.arrayidx, !tbaa !14) 3195 ; CHECK: LFS 88, %0 3196 ; CHECK-LATE: lfs 0, 88(3) 3197 %8 = ADDI %2, 2 3198 %10 = IMPLICIT_DEF 3199 %9 = INSERT_SUBREG %10, killed %8, 1 3200 %11 = LI8 -88 3201 %12 = LFSX %0, killed %11 :: (load 4 from %ir.arrayidx3, !tbaa !14) 3202 ; CHECK: LFS -88, %0 3203 ; CHECK-LATE: lfs 1, -88(3) 3204 %13 = FADDS killed %7, killed %12, implicit $rm 3205 $f1 = COPY %13 3206 BLR8 implicit $lr8, implicit $rm, implicit $f1 3207 3208 ... 3209 --- 3210 name: testLXSDX 3211 # CHECK-ALL: name: testLXSDX 3212 alignment: 4 3213 exposesReturnsTwice: false 3214 legalized: false 3215 regBankSelected: false 3216 selected: false 3217 tracksRegLiveness: true 3218 registers: 3219 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' } 3220 - { id: 1, class: g8rc, preferred-register: '' } 3221 - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' } 3222 - { id: 3, class: gprc, preferred-register: '' } 3223 - { id: 4, class: g8rc, preferred-register: '' } 3224 - { id: 5, class: g8rc, preferred-register: '' } 3225 - { id: 6, class: g8rc, preferred-register: '' } 3226 - { id: 7, class: vsfrc, preferred-register: '' } 3227 - { id: 8, class: gprc, preferred-register: '' } 3228 - { id: 9, class: g8rc, preferred-register: '' } 3229 - { id: 10, class: g8rc, preferred-register: '' } 3230 - { id: 11, class: g8rc, preferred-register: '' } 3231 - { id: 12, class: vsfrc, preferred-register: '' } 3232 - { id: 13, class: vsfrc, preferred-register: '' } 3233 liveins: 3234 - { reg: '$x3', virtual-reg: '%0' } 3235 - { reg: '$x4', virtual-reg: '%1' } 3236 frameInfo: 3237 isFrameAddressTaken: false 3238 isReturnAddressTaken: false 3239 hasStackMap: false 3240 hasPatchPoint: false 3241 stackSize: 0 3242 offsetAdjustment: 0 3243 maxAlignment: 0 3244 adjustsStack: false 3245 hasCalls: false 3246 stackProtector: '' 3247 maxCallFrameSize: 4294967295 3248 hasOpaqueSPAdjustment: false 3249 hasVAStart: false 3250 hasMustTailInVarArgFunc: false 3251 savePoint: '' 3252 restorePoint: '' 3253 fixedStack: 3254 stack: 3255 constants: 3256 body: | 3257 bb.0.entry: 3258 liveins: $x3, $x4 3259 3260 %1 = COPY $x4 3261 %0 = COPY $x3 3262 %2 = COPY %1.sub_32 3263 %3 = ADDI %2, 1 3264 %5 = IMPLICIT_DEF 3265 %4 = INSERT_SUBREG %5, killed %3, 1 3266 %6 = LI8 100 3267 %7 = LXSDX %0, killed %6, implicit $rm :: (load 8 from %ir.arrayidx, !tbaa !12) 3268 ; CHECK: LXSD 100, %0 3269 ; CHECK-LATE: lxsd 0, 100(3) 3270 %8 = ADDI %2, 2 3271 %10 = IMPLICIT_DEF 3272 %9 = INSERT_SUBREG %10, killed %8, 1 3273 %11 = LI8 -120 3274 %12 = LXSDX %0, killed %11, implicit $rm :: (load 8 from %ir.arrayidx3, !tbaa !12) 3275 ; CHECK: LXSD -120, %0 3276 ; CHECK-LATE: lxsd 1, -120(3) 3277 %13 = XSADDDP killed %7, killed %12, implicit $rm 3278 $f1 = COPY %13 3279 BLR8 implicit $lr8, implicit $rm, implicit $f1 3280 3281 ... 3282 --- 3283 name: testLXSSPX 3284 # CHECK-ALL: name: testLXSSPX 3285 alignment: 4 3286 exposesReturnsTwice: false 3287 legalized: false 3288 regBankSelected: false 3289 selected: false 3290 tracksRegLiveness: true 3291 registers: 3292 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' } 3293 - { id: 1, class: g8rc, preferred-register: '' } 3294 - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' } 3295 - { id: 3, class: gprc, preferred-register: '' } 3296 - { id: 4, class: g8rc, preferred-register: '' } 3297 - { id: 5, class: g8rc, preferred-register: '' } 3298 - { id: 6, class: g8rc, preferred-register: '' } 3299 - { id: 7, class: vssrc, preferred-register: '' } 3300 - { id: 8, class: gprc, preferred-register: '' } 3301 - { id: 9, class: g8rc, preferred-register: '' } 3302 - { id: 10, class: g8rc, preferred-register: '' } 3303 - { id: 11, class: g8rc, preferred-register: '' } 3304 - { id: 12, class: vssrc, preferred-register: '' } 3305 - { id: 13, class: vssrc, preferred-register: '' } 3306 liveins: 3307 - { reg: '$x3', virtual-reg: '%0' } 3308 - { reg: '$x4', virtual-reg: '%1' } 3309 frameInfo: 3310 isFrameAddressTaken: false 3311 isReturnAddressTaken: false 3312 hasStackMap: false 3313 hasPatchPoint: false 3314 stackSize: 0 3315 offsetAdjustment: 0 3316 maxAlignment: 0 3317 adjustsStack: false 3318 hasCalls: false 3319 stackProtector: '' 3320 maxCallFrameSize: 4294967295 3321 hasOpaqueSPAdjustment: false 3322 hasVAStart: false 3323 hasMustTailInVarArgFunc: false 3324 savePoint: '' 3325 restorePoint: '' 3326 fixedStack: 3327 stack: 3328 constants: 3329 body: | 3330 bb.0.entry: 3331 liveins: $x3, $x4 3332 3333 %1 = COPY $x4 3334 %0 = COPY $x3 3335 %2 = COPY %1.sub_32 3336 %3 = ADDI %2, 1 3337 %5 = IMPLICIT_DEF 3338 %4 = INSERT_SUBREG %5, killed %3, 1 3339 %6 = LI8 96 3340 %7 = LXSSPX %0, killed %6 :: (load 4 from %ir.arrayidx, !tbaa !14) 3341 ; CHECK: LXSSP 96, %0 3342 ; CHECK-LATE: lxssp 0, 96(3) 3343 %8 = ADDI %2, 2 3344 %10 = IMPLICIT_DEF 3345 %9 = INSERT_SUBREG %10, killed %8, 1 3346 %11 = LI8 -92 3347 %12 = LXSSPX %0, killed %11 :: (load 4 from %ir.arrayidx3, !tbaa !14) 3348 ; CHECK: LXSSP -92, %0 3349 ; CHECK-LATE: lxssp 1, -92(3) 3350 %13 = XSADDSP killed %7, killed %12 3351 $f1 = COPY %13 3352 BLR8 implicit $lr8, implicit $rm, implicit $f1 3353 3354 ... 3355 --- 3356 name: testLXVX 3357 # CHECK-ALL: name: testLXVX 3358 alignment: 4 3359 exposesReturnsTwice: false 3360 legalized: false 3361 regBankSelected: false 3362 selected: false 3363 tracksRegLiveness: true 3364 registers: 3365 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' } 3366 - { id: 1, class: g8rc, preferred-register: '' } 3367 - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' } 3368 - { id: 3, class: gprc, preferred-register: '' } 3369 - { id: 4, class: g8rc, preferred-register: '' } 3370 - { id: 5, class: g8rc, preferred-register: '' } 3371 - { id: 6, class: g8rc, preferred-register: '' } 3372 - { id: 7, class: vrrc, preferred-register: '' } 3373 - { id: 8, class: gprc, preferred-register: '' } 3374 - { id: 9, class: g8rc, preferred-register: '' } 3375 - { id: 10, class: g8rc, preferred-register: '' } 3376 - { id: 11, class: g8rc, preferred-register: '' } 3377 - { id: 12, class: vrrc, preferred-register: '' } 3378 - { id: 13, class: vrrc, preferred-register: '' } 3379 liveins: 3380 - { reg: '$x3', virtual-reg: '%0' } 3381 - { reg: '$x4', virtual-reg: '%1' } 3382 frameInfo: 3383 isFrameAddressTaken: false 3384 isReturnAddressTaken: false 3385 hasStackMap: false 3386 hasPatchPoint: false 3387 stackSize: 0 3388 offsetAdjustment: 0 3389 maxAlignment: 0 3390 adjustsStack: false 3391 hasCalls: false 3392 stackProtector: '' 3393 maxCallFrameSize: 4294967295 3394 hasOpaqueSPAdjustment: false 3395 hasVAStart: false 3396 hasMustTailInVarArgFunc: false 3397 savePoint: '' 3398 restorePoint: '' 3399 fixedStack: 3400 stack: 3401 constants: 3402 body: | 3403 bb.0.entry: 3404 liveins: $x3, $x4 3405 3406 %1 = COPY $x4 3407 %0 = COPY $x3 3408 %2 = COPY %1.sub_32 3409 %3 = ADDI %2, 1 3410 %5 = IMPLICIT_DEF 3411 %4 = INSERT_SUBREG %5, killed %3, 1 3412 %6 = LI8 32 3413 %7 = LXVX %0, killed %6 :: (load 16 from %ir.arrayidx, !tbaa !3) 3414 ; CHECK: LXV 32, %0 3415 ; CHECK-LATE: lxv 34, 32(3) 3416 %8 = ADDI %2, 2 3417 %10 = IMPLICIT_DEF 3418 %9 = INSERT_SUBREG %10, killed %8, 1 3419 %11 = LI8 -16 3420 %12 = LXVX %0, killed %11 :: (load 16 from %ir.arrayidx3, !tbaa !3) 3421 ; CHECK: LXV -16, %0 3422 ; CHECK-LATE: lxv 35, -16(3) 3423 %13 = VADDUWM killed %12, killed %7 3424 $v2 = COPY %13 3425 BLR8 implicit $lr8, implicit $rm, implicit $v2 3426 3427 ... 3428 --- 3429 name: testOR 3430 # CHECK-ALL: name: testOR 3431 alignment: 4 3432 exposesReturnsTwice: false 3433 legalized: false 3434 regBankSelected: false 3435 selected: false 3436 tracksRegLiveness: true 3437 registers: 3438 - { id: 0, class: gprc, preferred-register: '' } 3439 - { id: 1, class: g8rc, preferred-register: '' } 3440 - { id: 2, class: gprc, preferred-register: '' } 3441 - { id: 3, class: gprc, preferred-register: '' } 3442 liveins: 3443 - { reg: '$x3', virtual-reg: '%0' } 3444 - { reg: '$x4', virtual-reg: '%1' } 3445 frameInfo: 3446 isFrameAddressTaken: false 3447 isReturnAddressTaken: false 3448 hasStackMap: false 3449 hasPatchPoint: false 3450 stackSize: 0 3451 offsetAdjustment: 0 3452 maxAlignment: 0 3453 adjustsStack: false 3454 hasCalls: false 3455 stackProtector: '' 3456 maxCallFrameSize: 4294967295 3457 hasOpaqueSPAdjustment: false 3458 hasVAStart: false 3459 hasMustTailInVarArgFunc: false 3460 savePoint: '' 3461 restorePoint: '' 3462 fixedStack: 3463 stack: 3464 constants: 3465 body: | 3466 bb.0.entry: 3467 liveins: $x3, $x4 3468 3469 %1 = COPY $x4 3470 %0 = LI 99 3471 %3 = COPY %1.sub_32 3472 %2 = OR %0, %3 3473 ; CHECK: ORI %3, 99 3474 ; CHECK-LATE: ori 3, 4, 99 3475 $x3 = EXTSW_32_64 %2 3476 BLR8 implicit $lr8, implicit $rm, implicit $x3 3477 3478 ... 3479 --- 3480 name: testOR8 3481 # CHECK-ALL: name: testOR8 3482 alignment: 4 3483 exposesReturnsTwice: false 3484 legalized: false 3485 regBankSelected: false 3486 selected: false 3487 tracksRegLiveness: true 3488 registers: 3489 - { id: 0, class: g8rc, preferred-register: '' } 3490 - { id: 1, class: g8rc, preferred-register: '' } 3491 - { id: 2, class: g8rc, preferred-register: '' } 3492 liveins: 3493 - { reg: '$x3', virtual-reg: '%0' } 3494 - { reg: '$x4', virtual-reg: '%1' } 3495 frameInfo: 3496 isFrameAddressTaken: false 3497 isReturnAddressTaken: false 3498 hasStackMap: false 3499 hasPatchPoint: false 3500 stackSize: 0 3501 offsetAdjustment: 0 3502 maxAlignment: 0 3503 adjustsStack: false 3504 hasCalls: false 3505 stackProtector: '' 3506 maxCallFrameSize: 4294967295 3507 hasOpaqueSPAdjustment: false 3508 hasVAStart: false 3509 hasMustTailInVarArgFunc: false 3510 savePoint: '' 3511 restorePoint: '' 3512 fixedStack: 3513 stack: 3514 constants: 3515 body: | 3516 bb.0.entry: 3517 liveins: $x3, $x4 3518 3519 %1 = COPY $x4 3520 %0 = LI8 777 3521 %2 = OR8 %1, %0 3522 ; CHECK: ORI8 %1, 777 3523 ; CHECK-LATE: ori 3, 4, 777 3524 $x3 = COPY %2 3525 BLR8 implicit $lr8, implicit $rm, implicit $x3 3526 3527 ... 3528 --- 3529 name: testORI 3530 # CHECK-ALL: name: testORI 3531 alignment: 4 3532 exposesReturnsTwice: false 3533 legalized: false 3534 regBankSelected: false 3535 selected: false 3536 tracksRegLiveness: true 3537 registers: 3538 - { id: 0, class: gprc, preferred-register: '' } 3539 - { id: 1, class: gprc, preferred-register: '' } 3540 liveins: 3541 - { reg: '$x3', virtual-reg: '%0' } 3542 frameInfo: 3543 isFrameAddressTaken: false 3544 isReturnAddressTaken: false 3545 hasStackMap: false 3546 hasPatchPoint: false 3547 stackSize: 0 3548 offsetAdjustment: 0 3549 maxAlignment: 0 3550 adjustsStack: false 3551 hasCalls: false 3552 stackProtector: '' 3553 maxCallFrameSize: 4294967295 3554 hasOpaqueSPAdjustment: false 3555 hasVAStart: false 3556 hasMustTailInVarArgFunc: false 3557 savePoint: '' 3558 restorePoint: '' 3559 fixedStack: 3560 stack: 3561 constants: 3562 body: | 3563 bb.0.entry: 3564 liveins: $x3 3565 3566 %0 = LI 777 3567 %1 = ORI %0, 88 3568 ; CHECK: LI 857 3569 ; CHECK-LATE: li 3, 857 3570 $x3 = EXTSW_32_64 %1 3571 BLR8 implicit $lr8, implicit $rm, implicit $x3 3572 3573 ... 3574 --- 3575 name: testORI8 3576 # CHECK-ALL: name: testORI8 3577 alignment: 4 3578 exposesReturnsTwice: false 3579 legalized: false 3580 regBankSelected: false 3581 selected: false 3582 tracksRegLiveness: true 3583 registers: 3584 - { id: 0, class: g8rc, preferred-register: '' } 3585 - { id: 1, class: g8rc, preferred-register: '' } 3586 liveins: 3587 - { reg: '$x3', virtual-reg: '%0' } 3588 frameInfo: 3589 isFrameAddressTaken: false 3590 isReturnAddressTaken: false 3591 hasStackMap: false 3592 hasPatchPoint: false 3593 stackSize: 0 3594 offsetAdjustment: 0 3595 maxAlignment: 0 3596 adjustsStack: false 3597 hasCalls: false 3598 stackProtector: '' 3599 maxCallFrameSize: 4294967295 3600 hasOpaqueSPAdjustment: false 3601 hasVAStart: false 3602 hasMustTailInVarArgFunc: false 3603 savePoint: '' 3604 restorePoint: '' 3605 fixedStack: 3606 stack: 3607 constants: 3608 body: | 3609 bb.0.entry: 3610 liveins: $x3 3611 3612 %0 = LI8 8721 3613 %1 = ORI8 %0, 99 3614 ; CHECK: LI8 8819 3615 ; CHECK-LATE: li 3, 8819 3616 $x3 = COPY %1 3617 BLR8 implicit $lr8, implicit $rm, implicit $x3 3618 3619 ... 3620 --- 3621 name: testRLDCL 3622 # CHECK-ALL: name: testRLDCL 3623 alignment: 4 3624 exposesReturnsTwice: false 3625 legalized: false 3626 regBankSelected: false 3627 selected: false 3628 tracksRegLiveness: true 3629 registers: 3630 - { id: 0, class: g8rc, preferred-register: '' } 3631 - { id: 1, class: g8rc, preferred-register: '' } 3632 - { id: 2, class: gprc, preferred-register: '' } 3633 - { id: 3, class: gprc, preferred-register: '' } 3634 - { id: 4, class: g8rc, preferred-register: '' } 3635 liveins: 3636 - { reg: '$x3', virtual-reg: '%0' } 3637 - { reg: '$x4', virtual-reg: '%1' } 3638 frameInfo: 3639 isFrameAddressTaken: false 3640 isReturnAddressTaken: false 3641 hasStackMap: false 3642 hasPatchPoint: false 3643 stackSize: 0 3644 offsetAdjustment: 0 3645 maxAlignment: 0 3646 adjustsStack: false 3647 hasCalls: false 3648 stackProtector: '' 3649 maxCallFrameSize: 4294967295 3650 hasOpaqueSPAdjustment: false 3651 hasVAStart: false 3652 hasMustTailInVarArgFunc: false 3653 savePoint: '' 3654 restorePoint: '' 3655 fixedStack: 3656 stack: 3657 constants: 3658 body: | 3659 bb.0.entry: 3660 liveins: $x3, $x4 3661 3662 %1 = COPY $x4 3663 %0 = COPY $x3 3664 %2 = COPY %1.sub_32 3665 %3 = LI 14 3666 %4 = RLDCL %0, killed %3, 0 3667 ; CHECK: RLDICL %0, 14, 0 3668 ; CHECK-LATE: rotldi 3, 3, 14 3669 $x3 = COPY %4 3670 BLR8 implicit $lr8, implicit $rm, implicit $x3 3671 3672 ... 3673 --- 3674 name: testRLDCLo 3675 # CHECK-ALL: name: testRLDCLo 3676 alignment: 4 3677 exposesReturnsTwice: false 3678 legalized: false 3679 regBankSelected: false 3680 selected: false 3681 tracksRegLiveness: true 3682 registers: 3683 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' } 3684 - { id: 1, class: g8rc, preferred-register: '' } 3685 - { id: 2, class: g8rc_and_g8rc_nox0, preferred-register: '' } 3686 - { id: 3, class: gprc, preferred-register: '' } 3687 - { id: 4, class: g8rc, preferred-register: '' } 3688 - { id: 5, class: crrc, preferred-register: '' } 3689 - { id: 6, class: g8rc, preferred-register: '' } 3690 liveins: 3691 - { reg: '$x3', virtual-reg: '%0' } 3692 - { reg: '$x4', virtual-reg: '%1' } 3693 frameInfo: 3694 isFrameAddressTaken: false 3695 isReturnAddressTaken: false 3696 hasStackMap: false 3697 hasPatchPoint: false 3698 stackSize: 0 3699 offsetAdjustment: 0 3700 maxAlignment: 0 3701 adjustsStack: false 3702 hasCalls: false 3703 stackProtector: '' 3704 maxCallFrameSize: 4294967295 3705 hasOpaqueSPAdjustment: false 3706 hasVAStart: false 3707 hasMustTailInVarArgFunc: false 3708 savePoint: '' 3709 restorePoint: '' 3710 fixedStack: 3711 stack: 3712 constants: 3713 body: | 3714 bb.0.entry: 3715 liveins: $x3, $x4 3716 3717 %1 = COPY $x4 3718 %0 = COPY $x3 3719 %2 = RLDICL %1, 0, 58 3720 %3 = LI 37 3721 %4 = RLDCLo %0, killed %3, 0, implicit-def $cr0 3722 ; CHECK: RLDICLo %0, 37, 0, implicit-def $cr0 3723 ; CHECK-LATE: rldicl. 5, 3, 37, 0 3724 %5 = COPY killed $cr0 3725 %6 = ISEL8 %2, %0, %5.sub_eq 3726 $x3 = COPY %6 3727 BLR8 implicit $lr8, implicit $rm, implicit $x3 3728 3729 ... 3730 --- 3731 name: testRLDCR 3732 # CHECK-ALL: name: testRLDCR 3733 alignment: 4 3734 exposesReturnsTwice: false 3735 legalized: false 3736 regBankSelected: false 3737 selected: false 3738 tracksRegLiveness: true 3739 registers: 3740 - { id: 0, class: g8rc, preferred-register: '' } 3741 - { id: 1, class: g8rc, preferred-register: '' } 3742 - { id: 2, class: gprc, preferred-register: '' } 3743 - { id: 3, class: gprc, preferred-register: '' } 3744 - { id: 4, class: g8rc, preferred-register: '' } 3745 liveins: 3746 - { reg: '$x3', virtual-reg: '%0' } 3747 - { reg: '$x4', virtual-reg: '%1' } 3748 frameInfo: 3749 isFrameAddressTaken: false 3750 isReturnAddressTaken: false 3751 hasStackMap: false 3752 hasPatchPoint: false 3753 stackSize: 0 3754 offsetAdjustment: 0 3755 maxAlignment: 0 3756 adjustsStack: false 3757 hasCalls: false 3758 stackProtector: '' 3759 maxCallFrameSize: 4294967295 3760 hasOpaqueSPAdjustment: false 3761 hasVAStart: false 3762 hasMustTailInVarArgFunc: false 3763 savePoint: '' 3764 restorePoint: '' 3765 fixedStack: 3766 stack: 3767 constants: 3768 body: | 3769 bb.0.entry: 3770 liveins: $x3, $x4 3771 3772 %1 = COPY $x4 3773 %0 = COPY $x3 3774 %2 = COPY %1.sub_32 3775 %3 = LI 0 3776 %4 = RLDCR %0, killed %3, 0 3777 ; CHECK: RLDICR %0, 0, 0 3778 ; CHECK-LATE: rldicr 3, 3, 0, 0 3779 $x3 = COPY %4 3780 BLR8 implicit $lr8, implicit $rm, implicit $x3 3781 3782 ... 3783 --- 3784 name: testRLDCRo 3785 # CHECK-ALL: name: testRLDCRo 3786 alignment: 4 3787 exposesReturnsTwice: false 3788 legalized: false 3789 regBankSelected: false 3790 selected: false 3791 tracksRegLiveness: true 3792 registers: 3793 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' } 3794 - { id: 1, class: g8rc, preferred-register: '' } 3795 - { id: 2, class: g8rc_and_g8rc_nox0, preferred-register: '' } 3796 - { id: 3, class: gprc, preferred-register: '' } 3797 - { id: 4, class: g8rc, preferred-register: '' } 3798 - { id: 5, class: crrc, preferred-register: '' } 3799 - { id: 6, class: g8rc, preferred-register: '' } 3800 liveins: 3801 - { reg: '$x3', virtual-reg: '%0' } 3802 - { reg: '$x4', virtual-reg: '%1' } 3803 frameInfo: 3804 isFrameAddressTaken: false 3805 isReturnAddressTaken: false 3806 hasStackMap: false 3807 hasPatchPoint: false 3808 stackSize: 0 3809 offsetAdjustment: 0 3810 maxAlignment: 0 3811 adjustsStack: false 3812 hasCalls: false 3813 stackProtector: '' 3814 maxCallFrameSize: 4294967295 3815 hasOpaqueSPAdjustment: false 3816 hasVAStart: false 3817 hasMustTailInVarArgFunc: false 3818 savePoint: '' 3819 restorePoint: '' 3820 fixedStack: 3821 stack: 3822 constants: 3823 body: | 3824 bb.0.entry: 3825 liveins: $x3, $x4 3826 3827 %1 = COPY $x4 3828 %0 = COPY $x3 3829 %2 = RLDICL %1, 0, 58 3830 %3 = LI 18 3831 %4 = RLDCRo %0, killed %3, 0, implicit-def $cr0 3832 ; CHECK: RLDICRo %0, 18, 0, implicit-def $cr0 3833 ; CHECK-LATE: rldicr. 5, 3, 18, 0 3834 %5 = COPY killed $cr0 3835 %6 = ISEL8 %2, %0, %5.sub_eq 3836 $x3 = COPY %6 3837 BLR8 implicit $lr8, implicit $rm, implicit $x3 3838 3839 ... 3840 --- 3841 name: testRLDICL 3842 # CHECK-ALL: name: testRLDICL 3843 alignment: 4 3844 exposesReturnsTwice: false 3845 legalized: false 3846 regBankSelected: false 3847 selected: false 3848 tracksRegLiveness: true 3849 registers: 3850 - { id: 0, class: g8rc, preferred-register: '' } 3851 - { id: 1, class: g8rc, preferred-register: '' } 3852 liveins: 3853 - { reg: '$x3', virtual-reg: '%0' } 3854 frameInfo: 3855 isFrameAddressTaken: false 3856 isReturnAddressTaken: false 3857 hasStackMap: false 3858 hasPatchPoint: false 3859 stackSize: 0 3860 offsetAdjustment: 0 3861 maxAlignment: 0 3862 adjustsStack: false 3863 hasCalls: false 3864 stackProtector: '' 3865 maxCallFrameSize: 4294967295 3866 hasOpaqueSPAdjustment: false 3867 hasVAStart: false 3868 hasMustTailInVarArgFunc: false 3869 savePoint: '' 3870 restorePoint: '' 3871 fixedStack: 3872 stack: 3873 constants: 3874 body: | 3875 bb.0.entry: 3876 liveins: $x3 3877 3878 %0 = LI8 -1 3879 %1 = RLDICL %0, 53, 49 3880 ; CHECK: LI8 32767 3881 ; CHECK-LATE: li 3, 32767 3882 $x3 = COPY %1 3883 BLR8 implicit $lr8, implicit $rm, implicit $x3 3884 3885 ... 3886 --- 3887 name: testRLDICLo 3888 # CHECK-ALL: name: testRLDICLo 3889 alignment: 4 3890 exposesReturnsTwice: false 3891 legalized: false 3892 regBankSelected: false 3893 selected: false 3894 tracksRegLiveness: true 3895 registers: 3896 - { id: 0, class: g8rc, preferred-register: '' } 3897 - { id: 1, class: g8rc_and_g8rc_nox0, preferred-register: '' } 3898 - { id: 2, class: g8rc_and_g8rc_nox0, preferred-register: '' } 3899 - { id: 3, class: crrc, preferred-register: '' } 3900 - { id: 4, class: g8rc, preferred-register: '' } 3901 liveins: 3902 - { reg: '$x3', virtual-reg: '%0' } 3903 - { reg: '$x4', virtual-reg: '%1' } 3904 frameInfo: 3905 isFrameAddressTaken: false 3906 isReturnAddressTaken: false 3907 hasStackMap: false 3908 hasPatchPoint: false 3909 stackSize: 0 3910 offsetAdjustment: 0 3911 maxAlignment: 0 3912 adjustsStack: false 3913 hasCalls: false 3914 stackProtector: '' 3915 maxCallFrameSize: 4294967295 3916 hasOpaqueSPAdjustment: false 3917 hasVAStart: false 3918 hasMustTailInVarArgFunc: false 3919 savePoint: '' 3920 restorePoint: '' 3921 fixedStack: 3922 stack: 3923 constants: 3924 body: | 3925 bb.0.entry: 3926 liveins: $x3, $x4 3927 3928 %1 = COPY $x4 3929 %0 = LI8 -1 3930 %2 = RLDICLo %0, 53, 48, implicit-def $cr0 3931 ; CHECK: ANDIo8 %0, 65535 3932 ; CHECK-LATE: li 3, -1 3933 ; CHECK-LATE: andi. 3, 3, 65535 3934 %3 = COPY killed $cr0 3935 %4 = ISEL8 %1, %2, %3.sub_eq 3936 $x3 = COPY %4 3937 BLR8 implicit $lr8, implicit $rm, implicit $x3 3938 3939 ... 3940 --- 3941 name: testRLDICLo2 3942 # CHECK-ALL: name: testRLDICLo2 3943 alignment: 4 3944 exposesReturnsTwice: false 3945 legalized: false 3946 regBankSelected: false 3947 selected: false 3948 tracksRegLiveness: true 3949 registers: 3950 - { id: 0, class: g8rc, preferred-register: '' } 3951 - { id: 1, class: g8rc_and_g8rc_nox0, preferred-register: '' } 3952 - { id: 2, class: g8rc_and_g8rc_nox0, preferred-register: '' } 3953 - { id: 3, class: crrc, preferred-register: '' } 3954 - { id: 4, class: g8rc, preferred-register: '' } 3955 liveins: 3956 - { reg: '$x3', virtual-reg: '%0' } 3957 - { reg: '$x4', virtual-reg: '%1' } 3958 frameInfo: 3959 isFrameAddressTaken: false 3960 isReturnAddressTaken: false 3961 hasStackMap: false 3962 hasPatchPoint: false 3963 stackSize: 0 3964 offsetAdjustment: 0 3965 maxAlignment: 0 3966 adjustsStack: false 3967 hasCalls: false 3968 stackProtector: '' 3969 maxCallFrameSize: 4294967295 3970 hasOpaqueSPAdjustment: false 3971 hasVAStart: false 3972 hasMustTailInVarArgFunc: false 3973 savePoint: '' 3974 restorePoint: '' 3975 fixedStack: 3976 stack: 3977 constants: 3978 body: | 3979 bb.0.entry: 3980 liveins: $x3, $x4 3981 3982 %1 = COPY $x4 3983 %0 = LI8 200 3984 %2 = RLDICLo %0, 61, 3, implicit-def $cr0 3985 ; CHECK: LI8 25 3986 ; CHECK: ANDIo8 %0, 25 3987 ; CHECK-LATE-NOT: andi. 3988 %3 = COPY killed $cr0 3989 %4 = ISEL8 %1, %2, %3.sub_eq 3990 $x3 = COPY %4 3991 BLR8 implicit $lr8, implicit $rm, implicit $x3 3992 3993 ... 3994 --- 3995 name: testRLDICLo3 3996 # CHECK-ALL: name: testRLDICLo3 3997 alignment: 4 3998 exposesReturnsTwice: false 3999 legalized: false 4000 regBankSelected: false 4001 selected: false 4002 tracksRegLiveness: true 4003 registers: 4004 - { id: 0, class: g8rc, preferred-register: '' } 4005 - { id: 1, class: g8rc_and_g8rc_nox0, preferred-register: '' } 4006 - { id: 2, class: g8rc_and_g8rc_nox0, preferred-register: '' } 4007 - { id: 3, class: crrc, preferred-register: '' } 4008 - { id: 4, class: g8rc, preferred-register: '' } 4009 liveins: 4010 - { reg: '$x3', virtual-reg: '%0' } 4011 - { reg: '$x4', virtual-reg: '%1' } 4012 frameInfo: 4013 isFrameAddressTaken: false 4014 isReturnAddressTaken: false 4015 hasStackMap: false 4016 hasPatchPoint: false 4017 stackSize: 0 4018 offsetAdjustment: 0 4019 maxAlignment: 0 4020 adjustsStack: false 4021 hasCalls: false 4022 stackProtector: '' 4023 maxCallFrameSize: 4294967295 4024 hasOpaqueSPAdjustment: false 4025 hasVAStart: false 4026 hasMustTailInVarArgFunc: false 4027 savePoint: '' 4028 restorePoint: '' 4029 fixedStack: 4030 stack: 4031 constants: 4032 body: | 4033 bb.0.entry: 4034 liveins: $x3, $x4 4035 4036 %1 = COPY $x4 4037 %0 = LI8 2 4038 %2 = RLDICLo %0, 32, 32, implicit-def $cr0 4039 ; CHECK: ANDIo8 %0, 0 4040 ; CHECK-LATE: li 3, 2 4041 ; CHECK-LATE: andi. 3, 3, 0 4042 %3 = COPY killed $cr0 4043 %4 = ISEL8 %1, %2, %3.sub_eq 4044 $x3 = COPY %4 4045 BLR8 implicit $lr8, implicit $rm, implicit $x3 4046 4047 ... 4048 --- 4049 name: testRLWINM 4050 # CHECK-ALL: name: testRLWINM 4051 alignment: 4 4052 exposesReturnsTwice: false 4053 legalized: false 4054 regBankSelected: false 4055 selected: false 4056 tracksRegLiveness: true 4057 registers: 4058 - { id: 0, class: g8rc, preferred-register: '' } 4059 - { id: 1, class: gprc, preferred-register: '' } 4060 - { id: 2, class: gprc, preferred-register: '' } 4061 - { id: 3, class: g8rc, preferred-register: '' } 4062 - { id: 4, class: gprc, preferred-register: '' } 4063 liveins: 4064 - { reg: '$x3', virtual-reg: '%0' } 4065 frameInfo: 4066 isFrameAddressTaken: false 4067 isReturnAddressTaken: false 4068 hasStackMap: false 4069 hasPatchPoint: false 4070 stackSize: 0 4071 offsetAdjustment: 0 4072 maxAlignment: 0 4073 adjustsStack: false 4074 hasCalls: false 4075 stackProtector: '' 4076 maxCallFrameSize: 4294967295 4077 hasOpaqueSPAdjustment: false 4078 hasVAStart: false 4079 hasMustTailInVarArgFunc: false 4080 savePoint: '' 4081 restorePoint: '' 4082 fixedStack: 4083 stack: 4084 constants: 4085 body: | 4086 bb.0.entry: 4087 liveins: $x3 4088 4089 %0 = COPY $x3 4090 %1 = COPY %0.sub_32 4091 %3 = IMPLICIT_DEF 4092 %2 = LI 17 4093 %4 = RLWINM killed %2, 4, 20, 27 4094 ; CHECK: LI 272 4095 ; CHECK-LATE: li 3, 272 4096 $x3 = EXTSW_32_64 %4 4097 BLR8 implicit $lr8, implicit $rm, implicit $x3 4098 4099 ... 4100 --- 4101 name: testRLWINMFullReg 4102 # CHECK-ALL: name: testRLWINMFullReg 4103 alignment: 4 4104 exposesReturnsTwice: false 4105 legalized: false 4106 regBankSelected: false 4107 selected: false 4108 tracksRegLiveness: true 4109 registers: 4110 - { id: 0, class: g8rc, preferred-register: '' } 4111 - { id: 1, class: gprc, preferred-register: '' } 4112 - { id: 2, class: gprc, preferred-register: '' } 4113 - { id: 3, class: g8rc, preferred-register: '' } 4114 - { id: 4, class: gprc, preferred-register: '' } 4115 liveins: 4116 - { reg: '$x3', virtual-reg: '%0' } 4117 frameInfo: 4118 isFrameAddressTaken: false 4119 isReturnAddressTaken: false 4120 hasStackMap: false 4121 hasPatchPoint: false 4122 stackSize: 0 4123 offsetAdjustment: 0 4124 maxAlignment: 0 4125 adjustsStack: false 4126 hasCalls: false 4127 stackProtector: '' 4128 maxCallFrameSize: 4294967295 4129 hasOpaqueSPAdjustment: false 4130 hasVAStart: false 4131 hasMustTailInVarArgFunc: false 4132 savePoint: '' 4133 restorePoint: '' 4134 fixedStack: 4135 stack: 4136 constants: 4137 body: | 4138 bb.0.entry: 4139 liveins: $x3 4140 4141 %0 = COPY $x3 4142 %1 = COPY %0.sub_32 4143 %3 = IMPLICIT_DEF 4144 %2 = LI 2 4145 %4 = RLWINM killed %2, 31, 0, 31 4146 ; CHECK: LI 1 4147 ; CHECK-LATE: li 3, 1 4148 $x3 = EXTSW_32_64 %4 4149 BLR8 implicit $lr8, implicit $rm, implicit $x3 4150 4151 ... 4152 --- 4153 name: testRLWINMFullRegOutOfRange 4154 # CHECK-ALL: name: testRLWINMFullRegOutOfRange 4155 alignment: 4 4156 exposesReturnsTwice: false 4157 legalized: false 4158 regBankSelected: false 4159 selected: false 4160 tracksRegLiveness: true 4161 registers: 4162 - { id: 0, class: g8rc, preferred-register: '' } 4163 - { id: 1, class: gprc, preferred-register: '' } 4164 - { id: 2, class: gprc, preferred-register: '' } 4165 - { id: 3, class: g8rc, preferred-register: '' } 4166 - { id: 4, class: gprc, preferred-register: '' } 4167 liveins: 4168 - { reg: '$x3', virtual-reg: '%0' } 4169 frameInfo: 4170 isFrameAddressTaken: false 4171 isReturnAddressTaken: false 4172 hasStackMap: false 4173 hasPatchPoint: false 4174 stackSize: 0 4175 offsetAdjustment: 0 4176 maxAlignment: 0 4177 adjustsStack: false 4178 hasCalls: false 4179 stackProtector: '' 4180 maxCallFrameSize: 4294967295 4181 hasOpaqueSPAdjustment: false 4182 hasVAStart: false 4183 hasMustTailInVarArgFunc: false 4184 savePoint: '' 4185 restorePoint: '' 4186 fixedStack: 4187 stack: 4188 constants: 4189 body: | 4190 bb.0.entry: 4191 liveins: $x3 4192 4193 %0 = COPY $x3 4194 %1 = COPY %0.sub_32 4195 %3 = IMPLICIT_DEF 4196 %2 = LI 1 4197 %4 = RLWINM killed %2, 31, 0, 31 4198 ; CHECK: RLWINM killed %2, 31, 0, 31 4199 ; CHECK-LATE: rotlwi 3, 3, 31 4200 $x3 = EXTSW_32_64 %4 4201 BLR8 implicit $lr8, implicit $rm, implicit $x3 4202 4203 ... 4204 --- 4205 name: testRLWINM8 4206 # CHECK-ALL: name: testRLWINM8 4207 alignment: 4 4208 exposesReturnsTwice: false 4209 legalized: false 4210 regBankSelected: false 4211 selected: false 4212 tracksRegLiveness: true 4213 registers: 4214 - { id: 0, class: g8rc, preferred-register: '' } 4215 - { id: 1, class: g8rc, preferred-register: '' } 4216 liveins: 4217 - { reg: '$x3', virtual-reg: '%0' } 4218 frameInfo: 4219 isFrameAddressTaken: false 4220 isReturnAddressTaken: false 4221 hasStackMap: false 4222 hasPatchPoint: false 4223 stackSize: 0 4224 offsetAdjustment: 0 4225 maxAlignment: 0 4226 adjustsStack: false 4227 hasCalls: false 4228 stackProtector: '' 4229 maxCallFrameSize: 4294967295 4230 hasOpaqueSPAdjustment: false 4231 hasVAStart: false 4232 hasMustTailInVarArgFunc: false 4233 savePoint: '' 4234 restorePoint: '' 4235 fixedStack: 4236 stack: 4237 constants: 4238 body: | 4239 bb.0.entry: 4240 liveins: $x3 4241 4242 %0 = LI8 234 4243 %1 = RLWINM8 %0, 4, 20, 27 4244 ; CHECK: LI8 3744 4245 ; CHECK-LATE: li 3, 3744 4246 $x3 = COPY %1 4247 BLR8 implicit $lr8, implicit $rm, implicit $x3 4248 4249 ... 4250 --- 4251 name: testRLWINMo 4252 # CHECK-ALL: name: testRLWINMo 4253 alignment: 4 4254 exposesReturnsTwice: false 4255 legalized: false 4256 regBankSelected: false 4257 selected: false 4258 tracksRegLiveness: true 4259 registers: 4260 - { id: 0, class: g8rc, preferred-register: '' } 4261 - { id: 1, class: g8rc, preferred-register: '' } 4262 - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' } 4263 - { id: 3, class: gprc_and_gprc_nor0, preferred-register: '' } 4264 - { id: 4, class: gprc, preferred-register: '' } 4265 - { id: 5, class: crrc, preferred-register: '' } 4266 - { id: 6, class: gprc, preferred-register: '' } 4267 - { id: 7, class: g8rc, preferred-register: '' } 4268 - { id: 8, class: g8rc, preferred-register: '' } 4269 - { id: 9, class: g8rc, preferred-register: '' } 4270 liveins: 4271 - { reg: '$x3', virtual-reg: '%0' } 4272 - { reg: '$x4', virtual-reg: '%1' } 4273 frameInfo: 4274 isFrameAddressTaken: false 4275 isReturnAddressTaken: false 4276 hasStackMap: false 4277 hasPatchPoint: false 4278 stackSize: 0 4279 offsetAdjustment: 0 4280 maxAlignment: 0 4281 adjustsStack: false 4282 hasCalls: false 4283 stackProtector: '' 4284 maxCallFrameSize: 4294967295 4285 hasOpaqueSPAdjustment: false 4286 hasVAStart: false 4287 hasMustTailInVarArgFunc: false 4288 savePoint: '' 4289 restorePoint: '' 4290 fixedStack: 4291 stack: 4292 constants: 4293 body: | 4294 bb.0.entry: 4295 liveins: $x3, $x4 4296 4297 %1 = COPY $x4 4298 %0 = COPY $x3 4299 %2 = COPY %1.sub_32 4300 %3 = LI -22 4301 %4 = RLWINMo %3, 0, 24, 31, implicit-def $cr0 4302 ; CHECK: LI -22 4303 ; CHECK: ANDIo %3, 65514 4304 ; CHECK-LATE: li 3, -22 4305 ; CHECK-LATE: andi. 5, 3, 234 4306 %5 = COPY killed $cr0 4307 %6 = ISEL %2, %3, %5.sub_eq 4308 %8 = IMPLICIT_DEF 4309 %7 = INSERT_SUBREG %8, killed %6, 1 4310 %9 = RLDICL killed %7, 0, 32 4311 $x3 = COPY %9 4312 BLR8 implicit $lr8, implicit $rm, implicit $x3 4313 4314 ... 4315 --- 4316 name: testRLWINMo2 4317 # CHECK-ALL: name: testRLWINMo2 4318 alignment: 4 4319 exposesReturnsTwice: false 4320 legalized: false 4321 regBankSelected: false 4322 selected: false 4323 tracksRegLiveness: true 4324 registers: 4325 - { id: 0, class: g8rc, preferred-register: '' } 4326 - { id: 1, class: g8rc, preferred-register: '' } 4327 - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' } 4328 - { id: 3, class: gprc_and_gprc_nor0, preferred-register: '' } 4329 - { id: 4, class: gprc, preferred-register: '' } 4330 - { id: 5, class: crrc, preferred-register: '' } 4331 - { id: 6, class: gprc, preferred-register: '' } 4332 - { id: 7, class: g8rc, preferred-register: '' } 4333 - { id: 8, class: g8rc, preferred-register: '' } 4334 - { id: 9, class: g8rc, preferred-register: '' } 4335 liveins: 4336 - { reg: '$x3', virtual-reg: '%0' } 4337 - { reg: '$x4', virtual-reg: '%1' } 4338 frameInfo: 4339 isFrameAddressTaken: false 4340 isReturnAddressTaken: false 4341 hasStackMap: false 4342 hasPatchPoint: false 4343 stackSize: 0 4344 offsetAdjustment: 0 4345 maxAlignment: 0 4346 adjustsStack: false 4347 hasCalls: false 4348 stackProtector: '' 4349 maxCallFrameSize: 4294967295 4350 hasOpaqueSPAdjustment: false 4351 hasVAStart: false 4352 hasMustTailInVarArgFunc: false 4353 savePoint: '' 4354 restorePoint: '' 4355 fixedStack: 4356 stack: 4357 constants: 4358 body: | 4359 bb.0.entry: 4360 liveins: $x3, $x4 4361 4362 %1 = COPY $x4 4363 %0 = COPY $x3 4364 %2 = COPY %1.sub_32 4365 %3 = LI -22 4366 %4 = RLWINMo %3, 5, 24, 31, implicit-def $cr0 4367 ; CHECK: LI -22 4368 ; CHECK-NOT: ANDIo8 %3, 65514 4369 ; CHECK-LATE-NOT: andi. 4370 %5 = COPY killed $cr0 4371 %6 = ISEL %2, %3, %5.sub_eq 4372 %8 = IMPLICIT_DEF 4373 %7 = INSERT_SUBREG %8, killed %6, 1 4374 %9 = RLDICL killed %7, 0, 32 4375 $x3 = COPY %9 4376 BLR8 implicit $lr8, implicit $rm, implicit $x3 4377 4378 ... 4379 --- 4380 name: testRLWINM8o 4381 # CHECK-ALL: name: testRLWINM8o 4382 alignment: 4 4383 exposesReturnsTwice: false 4384 legalized: false 4385 regBankSelected: false 4386 selected: false 4387 tracksRegLiveness: true 4388 registers: 4389 - { id: 0, class: g8rc, preferred-register: '' } 4390 - { id: 1, class: g8rc_and_g8rc_nox0, preferred-register: '' } 4391 - { id: 2, class: g8rc, preferred-register: '' } 4392 - { id: 3, class: g8rc, preferred-register: '' } 4393 - { id: 4, class: g8rc, preferred-register: '' } 4394 - { id: 5, class: g8rc, preferred-register: '' } 4395 - { id: 6, class: g8rc_and_g8rc_nox0, preferred-register: '' } 4396 - { id: 7, class: crrc, preferred-register: '' } 4397 - { id: 8, class: g8rc, preferred-register: '' } 4398 liveins: 4399 - { reg: '$x3', virtual-reg: '%0' } 4400 - { reg: '$x4', virtual-reg: '%1' } 4401 frameInfo: 4402 isFrameAddressTaken: false 4403 isReturnAddressTaken: false 4404 hasStackMap: false 4405 hasPatchPoint: false 4406 stackSize: 0 4407 offsetAdjustment: 0 4408 maxAlignment: 0 4409 adjustsStack: false 4410 hasCalls: false 4411 stackProtector: '' 4412 maxCallFrameSize: 4294967295 4413 hasOpaqueSPAdjustment: false 4414 hasVAStart: false 4415 hasMustTailInVarArgFunc: false 4416 savePoint: '' 4417 restorePoint: '' 4418 fixedStack: 4419 stack: 4420 constants: 4421 body: | 4422 bb.0.entry: 4423 liveins: $x3, $x4 4424 4425 %1 = COPY $x4 4426 %0 = COPY $x3 4427 %2 = LI8 -18 4428 %3 = RLWINM8o %2, 4, 20, 27, implicit-def $cr0 4429 ; CHECK: ANDIo8 %2, 3808 4430 ; CHECK-LATE: li 3, -18 4431 ; CHECK-LATE: andi. 3, 3, 3808 4432 %7 = COPY killed $cr0 4433 %6 = RLDICL killed %3, 0, 32 4434 %8 = ISEL8 %1, %6, %7.sub_eq 4435 $x3 = COPY %8 4436 BLR8 implicit $lr8, implicit $rm, implicit $x3 4437 4438 ... 4439 --- 4440 name: testSLD 4441 # CHECK-ALL: name: testSLD 4442 alignment: 4 4443 exposesReturnsTwice: false 4444 legalized: false 4445 regBankSelected: false 4446 selected: false 4447 tracksRegLiveness: true 4448 registers: 4449 - { id: 0, class: g8rc, preferred-register: '' } 4450 - { id: 1, class: g8rc, preferred-register: '' } 4451 - { id: 2, class: gprc, preferred-register: '' } 4452 - { id: 3, class: g8rc, preferred-register: '' } 4453 liveins: 4454 - { reg: '$x3', virtual-reg: '%0' } 4455 - { reg: '$x4', virtual-reg: '%1' } 4456 frameInfo: 4457 isFrameAddressTaken: false 4458 isReturnAddressTaken: false 4459 hasStackMap: false 4460 hasPatchPoint: false 4461 stackSize: 0 4462 offsetAdjustment: 0 4463 maxAlignment: 0 4464 adjustsStack: false 4465 hasCalls: false 4466 stackProtector: '' 4467 maxCallFrameSize: 4294967295 4468 hasOpaqueSPAdjustment: false 4469 hasVAStart: false 4470 hasMustTailInVarArgFunc: false 4471 savePoint: '' 4472 restorePoint: '' 4473 fixedStack: 4474 stack: 4475 constants: 4476 body: | 4477 bb.0.entry: 4478 liveins: $x3, $x4 4479 4480 %1 = COPY $x4 4481 %0 = COPY $x3 4482 %2 = LI 13 4483 %3 = SLD %0, killed %2 4484 ; CHECK: RLDICR %0, 13, 50 4485 ; CHECK-LATE: sldi 3, 3, 13 4486 $x3 = COPY %3 4487 BLR8 implicit $lr8, implicit $rm, implicit $x3 4488 4489 ... 4490 --- 4491 name: testSLDo 4492 # CHECK-ALL: name: testSLDo 4493 alignment: 4 4494 exposesReturnsTwice: false 4495 legalized: false 4496 regBankSelected: false 4497 selected: false 4498 tracksRegLiveness: true 4499 registers: 4500 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' } 4501 - { id: 1, class: g8rc_and_g8rc_nox0, preferred-register: '' } 4502 - { id: 2, class: gprc, preferred-register: '' } 4503 - { id: 3, class: g8rc, preferred-register: '' } 4504 - { id: 4, class: crrc, preferred-register: '' } 4505 - { id: 5, class: g8rc, preferred-register: '' } 4506 liveins: 4507 - { reg: '$x3', virtual-reg: '%0' } 4508 - { reg: '$x4', virtual-reg: '%1' } 4509 frameInfo: 4510 isFrameAddressTaken: false 4511 isReturnAddressTaken: false 4512 hasStackMap: false 4513 hasPatchPoint: false 4514 stackSize: 0 4515 offsetAdjustment: 0 4516 maxAlignment: 0 4517 adjustsStack: false 4518 hasCalls: false 4519 stackProtector: '' 4520 maxCallFrameSize: 4294967295 4521 hasOpaqueSPAdjustment: false 4522 hasVAStart: false 4523 hasMustTailInVarArgFunc: false 4524 savePoint: '' 4525 restorePoint: '' 4526 fixedStack: 4527 stack: 4528 constants: 4529 body: | 4530 bb.0.entry: 4531 liveins: $x3, $x4 4532 4533 %1 = COPY $x4 4534 %0 = COPY $x3 4535 %2 = LI 17 4536 %3 = SLDo %0, killed %2, implicit-def $cr0 4537 ; CHECK: RLDICRo %0, 17, 46, implicit-def $cr0 4538 ; CHECK-LATE: rldicr. 5, 3, 17, 46 4539 %4 = COPY killed $cr0 4540 %5 = ISEL8 %1, %0, %4.sub_eq 4541 $x3 = COPY %5 4542 BLR8 implicit $lr8, implicit $rm, implicit $x3 4543 4544 ... 4545 --- 4546 name: testSRD 4547 # CHECK-ALL: name: testSRD 4548 alignment: 4 4549 exposesReturnsTwice: false 4550 legalized: false 4551 regBankSelected: false 4552 selected: false 4553 tracksRegLiveness: true 4554 registers: 4555 - { id: 0, class: g8rc, preferred-register: '' } 4556 - { id: 1, class: g8rc, preferred-register: '' } 4557 - { id: 2, class: gprc, preferred-register: '' } 4558 - { id: 3, class: g8rc, preferred-register: '' } 4559 liveins: 4560 - { reg: '$x3', virtual-reg: '%0' } 4561 - { reg: '$x4', virtual-reg: '%1' } 4562 frameInfo: 4563 isFrameAddressTaken: false 4564 isReturnAddressTaken: false 4565 hasStackMap: false 4566 hasPatchPoint: false 4567 stackSize: 0 4568 offsetAdjustment: 0 4569 maxAlignment: 0 4570 adjustsStack: false 4571 hasCalls: false 4572 stackProtector: '' 4573 maxCallFrameSize: 4294967295 4574 hasOpaqueSPAdjustment: false 4575 hasVAStart: false 4576 hasMustTailInVarArgFunc: false 4577 savePoint: '' 4578 restorePoint: '' 4579 fixedStack: 4580 stack: 4581 constants: 4582 body: | 4583 bb.0.entry: 4584 liveins: $x3, $x4 4585 4586 %1 = COPY $x4 4587 %0 = COPY $x3 4588 %2 = LI 4 4589 %3 = SRD %0, killed %2 4590 ; CHECK: RLDICL %0, 60, 4 4591 ; CHECK-LATE: rldicl 3, 3, 60, 4 4592 $x3 = COPY %3 4593 BLR8 implicit $lr8, implicit $rm, implicit $x3 4594 4595 ... 4596 --- 4597 name: testSRDo 4598 # CHECK-ALL: name: testSRDo 4599 alignment: 4 4600 exposesReturnsTwice: false 4601 legalized: false 4602 regBankSelected: false 4603 selected: false 4604 tracksRegLiveness: true 4605 registers: 4606 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' } 4607 - { id: 1, class: g8rc_and_g8rc_nox0, preferred-register: '' } 4608 - { id: 2, class: gprc, preferred-register: '' } 4609 - { id: 3, class: g8rc, preferred-register: '' } 4610 - { id: 4, class: crrc, preferred-register: '' } 4611 - { id: 5, class: g8rc, preferred-register: '' } 4612 liveins: 4613 - { reg: '$x3', virtual-reg: '%0' } 4614 - { reg: '$x4', virtual-reg: '%1' } 4615 frameInfo: 4616 isFrameAddressTaken: false 4617 isReturnAddressTaken: false 4618 hasStackMap: false 4619 hasPatchPoint: false 4620 stackSize: 0 4621 offsetAdjustment: 0 4622 maxAlignment: 0 4623 adjustsStack: false 4624 hasCalls: false 4625 stackProtector: '' 4626 maxCallFrameSize: 4294967295 4627 hasOpaqueSPAdjustment: false 4628 hasVAStart: false 4629 hasMustTailInVarArgFunc: false 4630 savePoint: '' 4631 restorePoint: '' 4632 fixedStack: 4633 stack: 4634 constants: 4635 body: | 4636 bb.0.entry: 4637 liveins: $x3, $x4 4638 4639 %1 = COPY $x4 4640 %0 = COPY $x3 4641 %2 = LI 17 4642 %3 = SRDo %0, killed %2, implicit-def $cr0 4643 ; CHECK: RLDICLo %0, 47, 17, implicit-def $cr0 4644 ; CHECK-LATE: rldicl. 5, 3, 47, 17 4645 %4 = COPY killed $cr0 4646 %5 = ISEL8 %1, %0, %4.sub_eq 4647 $x3 = COPY %5 4648 BLR8 implicit $lr8, implicit $rm, implicit $x3 4649 4650 ... 4651 --- 4652 name: testSLW 4653 # CHECK-ALL: name: testSLW 4654 alignment: 4 4655 exposesReturnsTwice: false 4656 legalized: false 4657 regBankSelected: false 4658 selected: false 4659 tracksRegLiveness: true 4660 registers: 4661 - { id: 0, class: g8rc, preferred-register: '' } 4662 - { id: 1, class: g8rc, preferred-register: '' } 4663 - { id: 2, class: gprc, preferred-register: '' } 4664 - { id: 3, class: g8rc, preferred-register: '' } 4665 - { id: 4, class: g8rc, preferred-register: '' } 4666 - { id: 5, class: gprc, preferred-register: '' } 4667 - { id: 6, class: g8rc, preferred-register: '' } 4668 - { id: 7, class: g8rc, preferred-register: '' } 4669 - { id: 8, class: gprc, preferred-register: '' } 4670 liveins: 4671 - { reg: '$x3', virtual-reg: '%0' } 4672 - { reg: '$x4', virtual-reg: '%1' } 4673 frameInfo: 4674 isFrameAddressTaken: false 4675 isReturnAddressTaken: false 4676 hasStackMap: false 4677 hasPatchPoint: false 4678 stackSize: 0 4679 offsetAdjustment: 0 4680 maxAlignment: 0 4681 adjustsStack: false 4682 hasCalls: false 4683 stackProtector: '' 4684 maxCallFrameSize: 4294967295 4685 hasOpaqueSPAdjustment: false 4686 hasVAStart: false 4687 hasMustTailInVarArgFunc: false 4688 savePoint: '' 4689 restorePoint: '' 4690 fixedStack: 4691 stack: 4692 constants: 4693 body: | 4694 bb.0.entry: 4695 liveins: $x3, $x4 4696 4697 %1 = COPY $x4 4698 %0 = COPY $x3 4699 %2 = COPY %1.sub_32 4700 %5 = LI 21 4701 %8 = SLW killed %2, killed %5 4702 ; CHECK: RLWINM killed %2, 21, 0, 10 4703 ; CHECK-LATE: slwi 3, 4, 21 4704 $x3 = EXTSW_32_64 %8 4705 BLR8 implicit $lr8, implicit $rm, implicit $x3 4706 4707 ... 4708 --- 4709 name: testSLWo 4710 # CHECK-ALL: name: testSLWo 4711 alignment: 4 4712 exposesReturnsTwice: false 4713 legalized: false 4714 regBankSelected: false 4715 selected: false 4716 tracksRegLiveness: true 4717 registers: 4718 - { id: 0, class: g8rc, preferred-register: '' } 4719 - { id: 1, class: g8rc, preferred-register: '' } 4720 - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' } 4721 - { id: 3, class: gprc_and_gprc_nor0, preferred-register: '' } 4722 - { id: 4, class: gprc, preferred-register: '' } 4723 - { id: 5, class: crrc, preferred-register: '' } 4724 - { id: 6, class: gprc, preferred-register: '' } 4725 - { id: 7, class: g8rc, preferred-register: '' } 4726 - { id: 8, class: g8rc, preferred-register: '' } 4727 - { id: 9, class: g8rc, preferred-register: '' } 4728 liveins: 4729 - { reg: '$x3', virtual-reg: '%0' } 4730 - { reg: '$x4', virtual-reg: '%1' } 4731 frameInfo: 4732 isFrameAddressTaken: false 4733 isReturnAddressTaken: false 4734 hasStackMap: false 4735 hasPatchPoint: false 4736 stackSize: 0 4737 offsetAdjustment: 0 4738 maxAlignment: 0 4739 adjustsStack: false 4740 hasCalls: false 4741 stackProtector: '' 4742 maxCallFrameSize: 4294967295 4743 hasOpaqueSPAdjustment: false 4744 hasVAStart: false 4745 hasMustTailInVarArgFunc: false 4746 savePoint: '' 4747 restorePoint: '' 4748 fixedStack: 4749 stack: 4750 constants: 4751 body: | 4752 bb.0.entry: 4753 liveins: $x3, $x4 4754 4755 %1 = COPY $x4 4756 %0 = COPY $x3 4757 %2 = LI 11 4758 %3 = COPY %0.sub_32 4759 %4 = SLWo %3, %2, implicit-def $cr0 4760 ; CHECK: RLWINMo %3, 11, 0, 20, implicit-def $cr0 4761 ; CHECK-LATE: rlwinm. 5, 3, 11, 0, 20 4762 %5 = COPY killed $cr0 4763 %6 = ISEL %2, %3, %5.sub_eq 4764 %8 = IMPLICIT_DEF 4765 %7 = INSERT_SUBREG %8, killed %6, 1 4766 %9 = RLDICL killed %7, 0, 32 4767 $x3 = COPY %9 4768 BLR8 implicit $lr8, implicit $rm, implicit $x3 4769 4770 ... 4771 --- 4772 name: testSRW 4773 # CHECK-ALL: name: testSRW 4774 alignment: 4 4775 exposesReturnsTwice: false 4776 legalized: false 4777 regBankSelected: false 4778 selected: false 4779 tracksRegLiveness: true 4780 registers: 4781 - { id: 0, class: g8rc, preferred-register: '' } 4782 - { id: 1, class: g8rc, preferred-register: '' } 4783 - { id: 2, class: gprc, preferred-register: '' } 4784 - { id: 3, class: g8rc, preferred-register: '' } 4785 - { id: 4, class: g8rc, preferred-register: '' } 4786 - { id: 5, class: gprc, preferred-register: '' } 4787 - { id: 6, class: g8rc, preferred-register: '' } 4788 - { id: 7, class: g8rc, preferred-register: '' } 4789 - { id: 8, class: gprc, preferred-register: '' } 4790 liveins: 4791 - { reg: '$x3', virtual-reg: '%0' } 4792 - { reg: '$x4', virtual-reg: '%1' } 4793 frameInfo: 4794 isFrameAddressTaken: false 4795 isReturnAddressTaken: false 4796 hasStackMap: false 4797 hasPatchPoint: false 4798 stackSize: 0 4799 offsetAdjustment: 0 4800 maxAlignment: 0 4801 adjustsStack: false 4802 hasCalls: false 4803 stackProtector: '' 4804 maxCallFrameSize: 4294967295 4805 hasOpaqueSPAdjustment: false 4806 hasVAStart: false 4807 hasMustTailInVarArgFunc: false 4808 savePoint: '' 4809 restorePoint: '' 4810 fixedStack: 4811 stack: 4812 constants: 4813 body: | 4814 bb.0.entry: 4815 liveins: $x3, $x4 4816 4817 %1 = COPY $x4 4818 %0 = COPY $x3 4819 %2 = LI 8 4820 %5 = COPY %0.sub_32 4821 %8 = SRW killed %5, killed %2 4822 ; CHECK: RLWINM killed %5, 24, 8, 31 4823 ; CHECK-LATE: srwi 3, 3, 8 4824 $x3 = EXTSW_32_64 %8 4825 BLR8 implicit $lr8, implicit $rm, implicit $x3 4826 4827 ... 4828 --- 4829 name: testSRWo 4830 # CHECK-ALL: name: testSRWo 4831 alignment: 4 4832 exposesReturnsTwice: false 4833 legalized: false 4834 regBankSelected: false 4835 selected: false 4836 tracksRegLiveness: true 4837 registers: 4838 - { id: 0, class: g8rc, preferred-register: '' } 4839 - { id: 1, class: g8rc, preferred-register: '' } 4840 - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' } 4841 - { id: 3, class: gprc_and_gprc_nor0, preferred-register: '' } 4842 - { id: 4, class: gprc, preferred-register: '' } 4843 - { id: 5, class: crrc, preferred-register: '' } 4844 - { id: 6, class: gprc, preferred-register: '' } 4845 - { id: 7, class: g8rc, preferred-register: '' } 4846 - { id: 8, class: g8rc, preferred-register: '' } 4847 - { id: 9, class: g8rc, preferred-register: '' } 4848 liveins: 4849 - { reg: '$x3', virtual-reg: '%0' } 4850 - { reg: '$x4', virtual-reg: '%1' } 4851 frameInfo: 4852 isFrameAddressTaken: false 4853 isReturnAddressTaken: false 4854 hasStackMap: false 4855 hasPatchPoint: false 4856 stackSize: 0 4857 offsetAdjustment: 0 4858 maxAlignment: 0 4859 adjustsStack: false 4860 hasCalls: false 4861 stackProtector: '' 4862 maxCallFrameSize: 4294967295 4863 hasOpaqueSPAdjustment: false 4864 hasVAStart: false 4865 hasMustTailInVarArgFunc: false 4866 savePoint: '' 4867 restorePoint: '' 4868 fixedStack: 4869 stack: 4870 constants: 4871 body: | 4872 bb.0.entry: 4873 liveins: $x3, $x4 4874 4875 %1 = COPY $x4 4876 %0 = COPY $x3 4877 %2 = LI 7 4878 %3 = COPY %0.sub_32 4879 %4 = SRWo %3, %2, implicit-def $cr0 4880 ; CHECK: RLWINMo %3, 25, 7, 31 4881 ; CHECK-LATE: rlwinm. 5, 3, 25, 7, 31 4882 %5 = COPY killed $cr0 4883 %6 = ISEL %2, %3, %5.sub_eq 4884 %8 = IMPLICIT_DEF 4885 %7 = INSERT_SUBREG %8, killed %6, 1 4886 %9 = RLDICL killed %7, 0, 32 4887 $x3 = COPY %9 4888 BLR8 implicit $lr8, implicit $rm, implicit $x3 4889 4890 ... 4891 --- 4892 name: testSRAW 4893 # CHECK-ALL: name: testSRAW 4894 alignment: 4 4895 exposesReturnsTwice: false 4896 legalized: false 4897 regBankSelected: false 4898 selected: false 4899 tracksRegLiveness: true 4900 registers: 4901 - { id: 0, class: g8rc, preferred-register: '' } 4902 - { id: 1, class: g8rc, preferred-register: '' } 4903 - { id: 2, class: gprc, preferred-register: '' } 4904 - { id: 3, class: gprc, preferred-register: '' } 4905 - { id: 4, class: gprc, preferred-register: '' } 4906 - { id: 5, class: g8rc, preferred-register: '' } 4907 liveins: 4908 - { reg: '$x3', virtual-reg: '%0' } 4909 - { reg: '$x4', virtual-reg: '%1' } 4910 frameInfo: 4911 isFrameAddressTaken: false 4912 isReturnAddressTaken: false 4913 hasStackMap: false 4914 hasPatchPoint: false 4915 stackSize: 0 4916 offsetAdjustment: 0 4917 maxAlignment: 0 4918 adjustsStack: false 4919 hasCalls: false 4920 stackProtector: '' 4921 maxCallFrameSize: 4294967295 4922 hasOpaqueSPAdjustment: false 4923 hasVAStart: false 4924 hasMustTailInVarArgFunc: false 4925 savePoint: '' 4926 restorePoint: '' 4927 fixedStack: 4928 stack: 4929 constants: 4930 body: | 4931 bb.0.entry: 4932 liveins: $x3, $x4 4933 4934 %1 = COPY $x4 4935 %0 = COPY $x3 4936 %2 = LI 15 4937 %3 = COPY %0.sub_32 4938 %4 = SRAW killed %3, killed %2, implicit-def dead $carry 4939 ; CHECK: SRAWI killed %3, 15, implicit-def dead $carry 4940 ; CHECK-LATE: srawi 3, 3, 15 4941 %5 = EXTSW_32_64 killed %4 4942 $x3 = COPY %5 4943 BLR8 implicit $lr8, implicit $rm, implicit $x3 4944 4945 ... 4946 --- 4947 name: testSRAWo 4948 # CHECK-ALL: name: testSRAWo 4949 alignment: 4 4950 exposesReturnsTwice: false 4951 legalized: false 4952 regBankSelected: false 4953 selected: false 4954 tracksRegLiveness: true 4955 registers: 4956 - { id: 0, class: g8rc, preferred-register: '' } 4957 - { id: 1, class: g8rc, preferred-register: '' } 4958 - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' } 4959 - { id: 3, class: gprc, preferred-register: '' } 4960 - { id: 4, class: gprc_and_gprc_nor0, preferred-register: '' } 4961 - { id: 5, class: crrc, preferred-register: '' } 4962 - { id: 6, class: gprc, preferred-register: '' } 4963 - { id: 7, class: g8rc, preferred-register: '' } 4964 liveins: 4965 - { reg: '$x3', virtual-reg: '%0' } 4966 - { reg: '$x4', virtual-reg: '%1' } 4967 frameInfo: 4968 isFrameAddressTaken: false 4969 isReturnAddressTaken: false 4970 hasStackMap: false 4971 hasPatchPoint: false 4972 stackSize: 0 4973 offsetAdjustment: 0 4974 maxAlignment: 0 4975 adjustsStack: false 4976 hasCalls: false 4977 stackProtector: '' 4978 maxCallFrameSize: 4294967295 4979 hasOpaqueSPAdjustment: false 4980 hasVAStart: false 4981 hasMustTailInVarArgFunc: false 4982 savePoint: '' 4983 restorePoint: '' 4984 fixedStack: 4985 stack: 4986 constants: 4987 body: | 4988 bb.0.entry: 4989 liveins: $x3, $x4 4990 4991 %1 = COPY $x4 4992 %0 = COPY $x3 4993 %2 = LI 8 4994 %3 = COPY %0.sub_32 4995 %4 = SRAWo killed %3, %2, implicit-def dead $carry, implicit-def $cr0 4996 ; CHECK: SRAWIo killed %3, 8, implicit-def dead $carry, implicit-def $cr0 4997 ; CHECK-LATE: srawi. 3, 3, 8 4998 %5 = COPY killed $cr0 4999 %6 = ISEL %2, %4, %5.sub_eq 5000 %7 = EXTSW_32_64 killed %6 5001 $x3 = COPY %7 5002 BLR8 implicit $lr8, implicit $rm, implicit $x3 5003 5004 ... 5005 --- 5006 name: testSRAD 5007 # CHECK-ALL: name: testSRAD 5008 alignment: 4 5009 exposesReturnsTwice: false 5010 legalized: false 5011 regBankSelected: false 5012 selected: false 5013 tracksRegLiveness: true 5014 registers: 5015 - { id: 0, class: g8rc, preferred-register: '' } 5016 - { id: 1, class: g8rc, preferred-register: '' } 5017 - { id: 2, class: gprc, preferred-register: '' } 5018 - { id: 3, class: g8rc, preferred-register: '' } 5019 liveins: 5020 - { reg: '$x3', virtual-reg: '%0' } 5021 - { reg: '$x4', virtual-reg: '%1' } 5022 frameInfo: 5023 isFrameAddressTaken: false 5024 isReturnAddressTaken: false 5025 hasStackMap: false 5026 hasPatchPoint: false 5027 stackSize: 0 5028 offsetAdjustment: 0 5029 maxAlignment: 0 5030 adjustsStack: false 5031 hasCalls: false 5032 stackProtector: '' 5033 maxCallFrameSize: 4294967295 5034 hasOpaqueSPAdjustment: false 5035 hasVAStart: false 5036 hasMustTailInVarArgFunc: false 5037 savePoint: '' 5038 restorePoint: '' 5039 fixedStack: 5040 stack: 5041 constants: 5042 body: | 5043 bb.0.entry: 5044 liveins: $x3, $x4 5045 5046 %1 = COPY $x4 5047 %0 = COPY $x3 5048 %2 = LI 44 5049 %3 = SRAD %0, killed %2, implicit-def dead $carry 5050 ; CHECK: SRADI %0, 44, implicit-def dead $carry 5051 ; CHECK-LATE: sradi 3, 3, 44 5052 $x3 = COPY %3 5053 BLR8 implicit $lr8, implicit $rm, implicit $x3 5054 5055 ... 5056 --- 5057 name: testSRADo 5058 # CHECK-ALL: name: testSRADo 5059 alignment: 4 5060 exposesReturnsTwice: false 5061 legalized: false 5062 regBankSelected: false 5063 selected: false 5064 tracksRegLiveness: true 5065 registers: 5066 - { id: 0, class: g8rc, preferred-register: '' } 5067 - { id: 1, class: g8rc_and_g8rc_nox0, preferred-register: '' } 5068 - { id: 2, class: gprc, preferred-register: '' } 5069 - { id: 3, class: g8rc_and_g8rc_nox0, preferred-register: '' } 5070 - { id: 4, class: crrc, preferred-register: '' } 5071 - { id: 5, class: g8rc, preferred-register: '' } 5072 liveins: 5073 - { reg: '$x3', virtual-reg: '%0' } 5074 - { reg: '$x4', virtual-reg: '%1' } 5075 frameInfo: 5076 isFrameAddressTaken: false 5077 isReturnAddressTaken: false 5078 hasStackMap: false 5079 hasPatchPoint: false 5080 stackSize: 0 5081 offsetAdjustment: 0 5082 maxAlignment: 0 5083 adjustsStack: false 5084 hasCalls: false 5085 stackProtector: '' 5086 maxCallFrameSize: 4294967295 5087 hasOpaqueSPAdjustment: false 5088 hasVAStart: false 5089 hasMustTailInVarArgFunc: false 5090 savePoint: '' 5091 restorePoint: '' 5092 fixedStack: 5093 stack: 5094 constants: 5095 body: | 5096 bb.0.entry: 5097 liveins: $x3, $x4 5098 5099 %1 = COPY $x4 5100 %0 = COPY $x3 5101 %2 = LI 61 5102 %3 = SRADo %0, killed %2, implicit-def dead $carry, implicit-def $cr0 5103 ; CHECK: SRADIo %0, 61, implicit-def dead $carry, implicit-def $cr0 5104 ; CHECK-LATE: sradi. 3, 3, 61 5105 %4 = COPY killed $cr0 5106 %5 = ISEL8 %1, %3, %4.sub_eq 5107 $x3 = COPY %5 5108 BLR8 implicit $lr8, implicit $rm, implicit $x3 5109 5110 ... 5111 --- 5112 name: testSTBUX 5113 # CHECK-ALL: name: testSTBUX 5114 alignment: 4 5115 exposesReturnsTwice: false 5116 legalized: false 5117 regBankSelected: false 5118 selected: false 5119 tracksRegLiveness: true 5120 registers: 5121 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' } 5122 - { id: 1, class: g8rc, preferred-register: '' } 5123 - { id: 2, class: g8rc, preferred-register: '' } 5124 - { id: 3, class: gprc, preferred-register: '' } 5125 - { id: 4, class: gprc_and_gprc_nor0, preferred-register: '' } 5126 - { id: 5, class: gprc, preferred-register: '' } 5127 - { id: 6, class: g8rc, preferred-register: '' } 5128 - { id: 7, class: g8rc, preferred-register: '' } 5129 - { id: 8, class: g8rc, preferred-register: '' } 5130 - { id: 9, class: gprc, preferred-register: '' } 5131 - { id: 10, class: g8rc, preferred-register: '' } 5132 - { id: 11, class: g8rc, preferred-register: '' } 5133 - { id: 12, class: g8rc, preferred-register: '' } 5134 - { id: 13, class: g8rc_and_g8rc_nox0, preferred-register: '' } 5135 - { id: 14, class: g8rc_and_g8rc_nox0, preferred-register: '' } 5136 liveins: 5137 - { reg: '$x3', virtual-reg: '%0' } 5138 - { reg: '$x4', virtual-reg: '%1' } 5139 - { reg: '$x5', virtual-reg: '%2' } 5140 frameInfo: 5141 isFrameAddressTaken: false 5142 isReturnAddressTaken: false 5143 hasStackMap: false 5144 hasPatchPoint: false 5145 stackSize: 0 5146 offsetAdjustment: 0 5147 maxAlignment: 0 5148 adjustsStack: false 5149 hasCalls: false 5150 stackProtector: '' 5151 maxCallFrameSize: 4294967295 5152 hasOpaqueSPAdjustment: false 5153 hasVAStart: false 5154 hasMustTailInVarArgFunc: false 5155 savePoint: '' 5156 restorePoint: '' 5157 fixedStack: 5158 stack: 5159 constants: 5160 body: | 5161 bb.0.entry: 5162 liveins: $x3, $x4, $x5 5163 5164 %2 = COPY $x5 5165 %1 = COPY $x4 5166 %0 = COPY $x3 5167 %3 = COPY %1.sub_32 5168 %4 = COPY %2.sub_32 5169 %5 = ADDI %4, 1 5170 %7 = IMPLICIT_DEF 5171 %6 = INSERT_SUBREG %7, killed %5, 1 5172 %8 = LI8 966 5173 %13 = STBUX %3, %0, killed %8 :: (store 1 into %ir.arrayidx, !tbaa !3) 5174 ; CHECK: STBU %3, 966, %0 5175 ; CHECK-LATE: {{[0-9]+}}, 966({{[0-9]+}}) 5176 %9 = ADDI %4, 2 5177 %11 = IMPLICIT_DEF 5178 %10 = INSERT_SUBREG %11, killed %9, 1 5179 %12 = LI8 777 5180 %14 = STBUX %3, %0, killed %12 :: (store 1 into %ir.arrayidx3, !tbaa !3) 5181 ; CHECK: STBU %3, 777, %0 5182 ; CHECK-LATE: {{[0-9]+}}, 777({{[0-9]+}}) 5183 BLR8 implicit $lr8, implicit $rm 5184 5185 ... 5186 --- 5187 name: testSTBX 5188 # CHECK-ALL: name: testSTBX 5189 alignment: 4 5190 exposesReturnsTwice: false 5191 legalized: false 5192 regBankSelected: false 5193 selected: false 5194 tracksRegLiveness: true 5195 registers: 5196 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' } 5197 - { id: 1, class: g8rc, preferred-register: '' } 5198 - { id: 2, class: g8rc, preferred-register: '' } 5199 - { id: 3, class: gprc, preferred-register: '' } 5200 - { id: 4, class: gprc_and_gprc_nor0, preferred-register: '' } 5201 - { id: 5, class: gprc, preferred-register: '' } 5202 - { id: 6, class: g8rc, preferred-register: '' } 5203 - { id: 7, class: g8rc, preferred-register: '' } 5204 - { id: 8, class: g8rc, preferred-register: '' } 5205 - { id: 9, class: gprc, preferred-register: '' } 5206 - { id: 10, class: g8rc, preferred-register: '' } 5207 - { id: 11, class: g8rc, preferred-register: '' } 5208 - { id: 12, class: g8rc, preferred-register: '' } 5209 liveins: 5210 - { reg: '$x3', virtual-reg: '%0' } 5211 - { reg: '$x4', virtual-reg: '%1' } 5212 - { reg: '$x5', virtual-reg: '%2' } 5213 frameInfo: 5214 isFrameAddressTaken: false 5215 isReturnAddressTaken: false 5216 hasStackMap: false 5217 hasPatchPoint: false 5218 stackSize: 0 5219 offsetAdjustment: 0 5220 maxAlignment: 0 5221 adjustsStack: false 5222 hasCalls: false 5223 stackProtector: '' 5224 maxCallFrameSize: 4294967295 5225 hasOpaqueSPAdjustment: false 5226 hasVAStart: false 5227 hasMustTailInVarArgFunc: false 5228 savePoint: '' 5229 restorePoint: '' 5230 fixedStack: 5231 stack: 5232 constants: 5233 body: | 5234 bb.0.entry: 5235 liveins: $x3, $x4, $x5 5236 5237 %2 = COPY $x5 5238 %1 = COPY $x4 5239 %0 = LI8 975 5240 %3 = COPY %1.sub_32 5241 %4 = COPY %2.sub_32 5242 %5 = ADDI %4, 1 5243 %7 = IMPLICIT_DEF 5244 %6 = INSERT_SUBREG %7, killed %5, 1 5245 %8 = RLDICL killed %6, 0, 32 5246 STBX %3, %0, killed %8 :: (store 1 into %ir.arrayidx, !tbaa !3) 5247 ; CHECK: STB %3, 975, killed %8 5248 ; CHECK-LATE: stb 4, 975(6) 5249 %9 = ADDI %4, 2 5250 %11 = IMPLICIT_DEF 5251 %10 = INSERT_SUBREG %11, killed %9, 1 5252 %12 = RLDICL killed %10, 0, 32 5253 STBX %3, %0, killed %12 :: (store 1 into %ir.arrayidx3, !tbaa !3) 5254 ; CHECK: STB %3, 975, killed %12 5255 ; CHECK-LATE: stb 4, 975(5) 5256 BLR8 implicit $lr8, implicit $rm 5257 5258 ... 5259 --- 5260 name: testSTHUX 5261 # CHECK-ALL: name: testSTHUX 5262 alignment: 4 5263 exposesReturnsTwice: false 5264 legalized: false 5265 regBankSelected: false 5266 selected: false 5267 tracksRegLiveness: true 5268 registers: 5269 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' } 5270 - { id: 1, class: g8rc, preferred-register: '' } 5271 - { id: 2, class: g8rc, preferred-register: '' } 5272 - { id: 3, class: gprc, preferred-register: '' } 5273 - { id: 4, class: gprc_and_gprc_nor0, preferred-register: '' } 5274 - { id: 5, class: gprc, preferred-register: '' } 5275 - { id: 6, class: g8rc, preferred-register: '' } 5276 - { id: 7, class: g8rc, preferred-register: '' } 5277 - { id: 8, class: g8rc, preferred-register: '' } 5278 - { id: 9, class: gprc, preferred-register: '' } 5279 - { id: 10, class: g8rc, preferred-register: '' } 5280 - { id: 11, class: g8rc, preferred-register: '' } 5281 - { id: 12, class: g8rc, preferred-register: '' } 5282 - { id: 13, class: g8rc_and_g8rc_nox0, preferred-register: '' } 5283 - { id: 14, class: g8rc_and_g8rc_nox0, preferred-register: '' } 5284 liveins: 5285 - { reg: '$x3', virtual-reg: '%0' } 5286 - { reg: '$x4', virtual-reg: '%1' } 5287 - { reg: '$x5', virtual-reg: '%2' } 5288 frameInfo: 5289 isFrameAddressTaken: false 5290 isReturnAddressTaken: false 5291 hasStackMap: false 5292 hasPatchPoint: false 5293 stackSize: 0 5294 offsetAdjustment: 0 5295 maxAlignment: 0 5296 adjustsStack: false 5297 hasCalls: false 5298 stackProtector: '' 5299 maxCallFrameSize: 4294967295 5300 hasOpaqueSPAdjustment: false 5301 hasVAStart: false 5302 hasMustTailInVarArgFunc: false 5303 savePoint: '' 5304 restorePoint: '' 5305 fixedStack: 5306 stack: 5307 constants: 5308 body: | 5309 bb.0.entry: 5310 liveins: $x3, $x4, $x5 5311 5312 %2 = COPY $x5 5313 %1 = COPY $x4 5314 %0 = COPY $x3 5315 %3 = COPY %1.sub_32 5316 %4 = COPY %2.sub_32 5317 %5 = ADDI %4, 1 5318 %7 = IMPLICIT_DEF 5319 %6 = INSERT_SUBREG %7, killed %5, 1 5320 %8 = LI8 32000 5321 %13 = STHUX %3, %0, killed %8 :: (store 2 into %ir.arrayidx, !tbaa !6) 5322 ; CHECK: STHU %3, 32000, %0 5323 ; CHECK-LATE: sthu {{[0-9]+}}, 32000({{[0-9]+}}) 5324 %9 = ADDI %4, 2 5325 %11 = IMPLICIT_DEF 5326 %10 = INSERT_SUBREG %11, killed %9, 1 5327 %12 = LI8 -761 5328 %14 = STHUX %3, %0, killed %12 :: (store 2 into %ir.arrayidx3, !tbaa !6) 5329 ; CHECK: STHU %3, -761, %0 5330 ; CHECK-LATE: sthu {{[0-9]+}}, -761({{[0-9]+}}) 5331 BLR8 implicit $lr8, implicit $rm 5332 5333 ... 5334 --- 5335 name: testSTHX 5336 # CHECK-ALL: name: testSTHX 5337 alignment: 4 5338 exposesReturnsTwice: false 5339 legalized: false 5340 regBankSelected: false 5341 selected: false 5342 tracksRegLiveness: true 5343 registers: 5344 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' } 5345 - { id: 1, class: g8rc, preferred-register: '' } 5346 - { id: 2, class: g8rc, preferred-register: '' } 5347 - { id: 3, class: gprc, preferred-register: '' } 5348 - { id: 4, class: gprc_and_gprc_nor0, preferred-register: '' } 5349 - { id: 5, class: gprc, preferred-register: '' } 5350 - { id: 6, class: g8rc, preferred-register: '' } 5351 - { id: 7, class: g8rc, preferred-register: '' } 5352 - { id: 8, class: g8rc, preferred-register: '' } 5353 - { id: 9, class: gprc, preferred-register: '' } 5354 - { id: 10, class: g8rc, preferred-register: '' } 5355 - { id: 11, class: g8rc, preferred-register: '' } 5356 - { id: 12, class: g8rc, preferred-register: '' } 5357 liveins: 5358 - { reg: '$x3', virtual-reg: '%0' } 5359 - { reg: '$x4', virtual-reg: '%1' } 5360 - { reg: '$x5', virtual-reg: '%2' } 5361 frameInfo: 5362 isFrameAddressTaken: false 5363 isReturnAddressTaken: false 5364 hasStackMap: false 5365 hasPatchPoint: false 5366 stackSize: 0 5367 offsetAdjustment: 0 5368 maxAlignment: 0 5369 adjustsStack: false 5370 hasCalls: false 5371 stackProtector: '' 5372 maxCallFrameSize: 4294967295 5373 hasOpaqueSPAdjustment: false 5374 hasVAStart: false 5375 hasMustTailInVarArgFunc: false 5376 savePoint: '' 5377 restorePoint: '' 5378 fixedStack: 5379 stack: 5380 constants: 5381 body: | 5382 bb.0.entry: 5383 liveins: $x3, $x4, $x5 5384 5385 %2 = COPY $x5 5386 %1 = COPY $x4 5387 %0 = COPY $x3 5388 %3 = COPY %1.sub_32 5389 %4 = COPY %2.sub_32 5390 %5 = ADDI %4, 1 5391 %7 = IMPLICIT_DEF 5392 %6 = INSERT_SUBREG %7, killed %5, 1 5393 %8 = LI8 900 5394 STHX %3, %0, killed %8 :: (store 1 into %ir.arrayidx, !tbaa !3) 5395 ; CHECK: STH %3, 900, %0 5396 ; CHECK-LATE: sth {{[0-9]+}}, 900({{[0-9]+}}) 5397 %9 = ADDI %4, 2 5398 %11 = IMPLICIT_DEF 5399 %10 = INSERT_SUBREG %11, killed %9, 1 5400 %12 = LI8 -900 5401 STHX %3, %0, killed %12 :: (store 1 into %ir.arrayidx3, !tbaa !3) 5402 ; CHECK: STH %3, -900, %0 5403 ; CHECK-LATE: sth {{[0-9]+}}, -900({{[0-9]+}}) 5404 BLR8 implicit $lr8, implicit $rm 5405 5406 ... 5407 --- 5408 name: testSTWUX 5409 # CHECK-ALL: name: testSTWUX 5410 alignment: 4 5411 exposesReturnsTwice: false 5412 legalized: false 5413 regBankSelected: false 5414 selected: false 5415 tracksRegLiveness: true 5416 registers: 5417 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' } 5418 - { id: 1, class: g8rc, preferred-register: '' } 5419 - { id: 2, class: g8rc, preferred-register: '' } 5420 - { id: 3, class: gprc, preferred-register: '' } 5421 - { id: 4, class: gprc_and_gprc_nor0, preferred-register: '' } 5422 - { id: 5, class: gprc, preferred-register: '' } 5423 - { id: 6, class: g8rc, preferred-register: '' } 5424 - { id: 7, class: g8rc, preferred-register: '' } 5425 - { id: 8, class: g8rc, preferred-register: '' } 5426 - { id: 9, class: gprc, preferred-register: '' } 5427 - { id: 10, class: g8rc, preferred-register: '' } 5428 - { id: 11, class: g8rc, preferred-register: '' } 5429 - { id: 12, class: g8rc, preferred-register: '' } 5430 - { id: 13, class: g8rc_and_g8rc_nox0, preferred-register: '' } 5431 - { id: 14, class: g8rc_and_g8rc_nox0, preferred-register: '' } 5432 liveins: 5433 - { reg: '$x3', virtual-reg: '%0' } 5434 - { reg: '$x4', virtual-reg: '%1' } 5435 - { reg: '$x5', virtual-reg: '%2' } 5436 frameInfo: 5437 isFrameAddressTaken: false 5438 isReturnAddressTaken: false 5439 hasStackMap: false 5440 hasPatchPoint: false 5441 stackSize: 0 5442 offsetAdjustment: 0 5443 maxAlignment: 0 5444 adjustsStack: false 5445 hasCalls: false 5446 stackProtector: '' 5447 maxCallFrameSize: 4294967295 5448 hasOpaqueSPAdjustment: false 5449 hasVAStart: false 5450 hasMustTailInVarArgFunc: false 5451 savePoint: '' 5452 restorePoint: '' 5453 fixedStack: 5454 stack: 5455 constants: 5456 body: | 5457 bb.0.entry: 5458 liveins: $x3, $x4, $x5 5459 5460 %2 = COPY $x5 5461 %1 = COPY $x4 5462 %0 = COPY $x3 5463 %3 = COPY %1.sub_32 5464 %4 = COPY %2.sub_32 5465 %5 = ADDI %4, 1 5466 %7 = IMPLICIT_DEF 5467 %6 = INSERT_SUBREG %7, killed %5, 1 5468 %8 = LI8 111 5469 %13 = STWUX %3, %0, killed %8 :: (store 4 into %ir.arrayidx, !tbaa !8) 5470 ; CHECK: STWU %3, 111, %0 5471 ; CHECK-LATE: stwu {{[0-9]+}}, 111({{[0-9]+}}) 5472 %9 = ADDI %4, 2 5473 %11 = IMPLICIT_DEF 5474 %10 = INSERT_SUBREG %11, killed %9, 1 5475 %12 = LI8 0 5476 %14 = STWUX %3, %0, killed %12 :: (store 4 into %ir.arrayidx3, !tbaa !8) 5477 ; CHECK: STWU %3, 0, %0 5478 ; CHECK-LATE: stwu {{[0-9]+}}, 0({{[0-9]+}}) 5479 BLR8 implicit $lr8, implicit $rm 5480 5481 ... 5482 --- 5483 name: testSTWX 5484 # CHECK-ALL: name: testSTWX 5485 alignment: 4 5486 exposesReturnsTwice: false 5487 legalized: false 5488 regBankSelected: false 5489 selected: false 5490 tracksRegLiveness: true 5491 registers: 5492 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' } 5493 - { id: 1, class: g8rc, preferred-register: '' } 5494 - { id: 2, class: g8rc, preferred-register: '' } 5495 - { id: 3, class: gprc, preferred-register: '' } 5496 - { id: 4, class: gprc_and_gprc_nor0, preferred-register: '' } 5497 - { id: 5, class: gprc, preferred-register: '' } 5498 - { id: 6, class: g8rc, preferred-register: '' } 5499 - { id: 7, class: g8rc, preferred-register: '' } 5500 - { id: 8, class: g8rc, preferred-register: '' } 5501 - { id: 9, class: gprc, preferred-register: '' } 5502 - { id: 10, class: g8rc, preferred-register: '' } 5503 - { id: 11, class: g8rc, preferred-register: '' } 5504 - { id: 12, class: g8rc, preferred-register: '' } 5505 liveins: 5506 - { reg: '$x3', virtual-reg: '%0' } 5507 - { reg: '$x4', virtual-reg: '%1' } 5508 - { reg: '$x5', virtual-reg: '%2' } 5509 frameInfo: 5510 isFrameAddressTaken: false 5511 isReturnAddressTaken: false 5512 hasStackMap: false 5513 hasPatchPoint: false 5514 stackSize: 0 5515 offsetAdjustment: 0 5516 maxAlignment: 0 5517 adjustsStack: false 5518 hasCalls: false 5519 stackProtector: '' 5520 maxCallFrameSize: 4294967295 5521 hasOpaqueSPAdjustment: false 5522 hasVAStart: false 5523 hasMustTailInVarArgFunc: false 5524 savePoint: '' 5525 restorePoint: '' 5526 fixedStack: 5527 stack: 5528 constants: 5529 body: | 5530 bb.0.entry: 5531 liveins: $x3, $x4, $x5 5532 5533 %2 = COPY $x5 5534 %1 = COPY $x4 5535 %0 = COPY $x3 5536 %3 = COPY %1.sub_32 5537 %4 = COPY %2.sub_32 5538 %5 = ADDI %4, 1 5539 %7 = IMPLICIT_DEF 5540 %6 = INSERT_SUBREG %7, killed %5, 1 5541 %8 = LI8 2 5542 STWX %3, %0, killed %8 :: (store 4 into %ir.arrayidx, !tbaa !8) 5543 ; CHECK: STW %3, 2, %0 5544 ; CHECK-LATE: stw 4, 2(3) 5545 %9 = ADDI %4, 2 5546 %11 = IMPLICIT_DEF 5547 %10 = INSERT_SUBREG %11, killed %9, 1 5548 %12 = LI8 99 5549 STWX %3, %0, killed %12 :: (store 4 into %ir.arrayidx3, !tbaa !8) 5550 ; CHECK: STW %3, 99, %0 5551 ; CHECK-LATE: stw 4, 99(3) 5552 BLR8 implicit $lr8, implicit $rm 5553 5554 ... 5555 --- 5556 name: testSTDUX 5557 # CHECK-ALL: name: testSTDUX 5558 alignment: 4 5559 exposesReturnsTwice: false 5560 legalized: false 5561 regBankSelected: false 5562 selected: false 5563 tracksRegLiveness: true 5564 registers: 5565 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' } 5566 - { id: 1, class: g8rc, preferred-register: '' } 5567 - { id: 2, class: g8rc, preferred-register: '' } 5568 - { id: 3, class: gprc_and_gprc_nor0, preferred-register: '' } 5569 - { id: 4, class: gprc, preferred-register: '' } 5570 - { id: 5, class: g8rc, preferred-register: '' } 5571 - { id: 6, class: g8rc, preferred-register: '' } 5572 - { id: 7, class: g8rc, preferred-register: '' } 5573 - { id: 8, class: gprc, preferred-register: '' } 5574 - { id: 9, class: g8rc, preferred-register: '' } 5575 - { id: 10, class: g8rc, preferred-register: '' } 5576 - { id: 11, class: g8rc, preferred-register: '' } 5577 - { id: 12, class: g8rc_and_g8rc_nox0, preferred-register: '' } 5578 - { id: 13, class: g8rc_and_g8rc_nox0, preferred-register: '' } 5579 liveins: 5580 - { reg: '$x3', virtual-reg: '%0' } 5581 - { reg: '$x4', virtual-reg: '%1' } 5582 - { reg: '$x5', virtual-reg: '%2' } 5583 frameInfo: 5584 isFrameAddressTaken: false 5585 isReturnAddressTaken: false 5586 hasStackMap: false 5587 hasPatchPoint: false 5588 stackSize: 0 5589 offsetAdjustment: 0 5590 maxAlignment: 0 5591 adjustsStack: false 5592 hasCalls: false 5593 stackProtector: '' 5594 maxCallFrameSize: 4294967295 5595 hasOpaqueSPAdjustment: false 5596 hasVAStart: false 5597 hasMustTailInVarArgFunc: false 5598 savePoint: '' 5599 restorePoint: '' 5600 fixedStack: 5601 stack: 5602 constants: 5603 body: | 5604 bb.0.entry: 5605 liveins: $x3, $x4, $x5 5606 5607 %2 = COPY $x5 5608 %1 = COPY $x4 5609 %0 = COPY $x3 5610 %3 = COPY %2.sub_32 5611 %4 = ADDI %3, 1 5612 %6 = IMPLICIT_DEF 5613 %5 = INSERT_SUBREG %6, killed %4, 1 5614 %7 = LI8 444 5615 %12 = STDUX %1, %0, killed %7 :: (store 8 into %ir.arrayidx, !tbaa !10) 5616 ; CHECK: STDU %1, 444, %0 5617 ; CHECK-LATE: stdu {{[0-9]+}}, 444({{[0-9]+}}) 5618 %8 = ADDI %3, 2 5619 %10 = IMPLICIT_DEF 5620 %9 = INSERT_SUBREG %10, killed %8, 1 5621 %11 = LI8 -8 5622 %13 = STDUX %1, %0, killed %11 :: (store 8 into %ir.arrayidx3, !tbaa !10) 5623 ; CHECK: STDU %1, -8, %0 5624 ; CHECK-LATE: stdu {{[0-9]+}}, -8({{[0-9]+}}) 5625 BLR8 implicit $lr8, implicit $rm 5626 5627 ... 5628 --- 5629 name: testSTDX 5630 # CHECK-ALL: name: testSTDX 5631 alignment: 4 5632 exposesReturnsTwice: false 5633 legalized: false 5634 regBankSelected: false 5635 selected: false 5636 tracksRegLiveness: true 5637 registers: 5638 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' } 5639 - { id: 1, class: g8rc, preferred-register: '' } 5640 - { id: 2, class: g8rc, preferred-register: '' } 5641 - { id: 3, class: gprc_and_gprc_nor0, preferred-register: '' } 5642 - { id: 4, class: gprc, preferred-register: '' } 5643 - { id: 5, class: g8rc, preferred-register: '' } 5644 - { id: 6, class: g8rc, preferred-register: '' } 5645 - { id: 7, class: g8rc, preferred-register: '' } 5646 - { id: 8, class: gprc, preferred-register: '' } 5647 - { id: 9, class: g8rc, preferred-register: '' } 5648 - { id: 10, class: g8rc, preferred-register: '' } 5649 - { id: 11, class: g8rc, preferred-register: '' } 5650 liveins: 5651 - { reg: '$x3', virtual-reg: '%0' } 5652 - { reg: '$x4', virtual-reg: '%1' } 5653 - { reg: '$x5', virtual-reg: '%2' } 5654 frameInfo: 5655 isFrameAddressTaken: false 5656 isReturnAddressTaken: false 5657 hasStackMap: false 5658 hasPatchPoint: false 5659 stackSize: 0 5660 offsetAdjustment: 0 5661 maxAlignment: 0 5662 adjustsStack: false 5663 hasCalls: false 5664 stackProtector: '' 5665 maxCallFrameSize: 4294967295 5666 hasOpaqueSPAdjustment: false 5667 hasVAStart: false 5668 hasMustTailInVarArgFunc: false 5669 savePoint: '' 5670 restorePoint: '' 5671 fixedStack: 5672 stack: 5673 constants: 5674 body: | 5675 bb.0.entry: 5676 liveins: $x3, $x4, $x5 5677 5678 %2 = COPY $x5 5679 %1 = COPY $x4 5680 %0 = LI8 1000 5681 %3 = COPY %2.sub_32 5682 %4 = ADDI %3, 1 5683 %6 = IMPLICIT_DEF 5684 %5 = INSERT_SUBREG %6, killed %4, 1 5685 %7 = LI8 900 5686 STDX %1, %0, killed %7 :: (store 8 into %ir.arrayidx, !tbaa !10) 5687 ; CHECK: STD %1, 1000, killed %7 5688 ; CHECK-LATE: {{[0-9]+}}, 1000({{[0-9]+}}) 5689 %8 = ADDI %3, 2 5690 %10 = IMPLICIT_DEF 5691 %9 = INSERT_SUBREG %10, killed %8, 1 5692 %11 = LI8 -900 5693 STDX %1, %0, killed %11 :: (store 8 into %ir.arrayidx3, !tbaa !10) 5694 ; CHECK: STD %1, 1000, killed %11 5695 ; CHECK-LATE: {{[0-9]+}}, 1000({{[0-9]+}}) 5696 BLR8 implicit $lr8, implicit $rm 5697 5698 ... 5699 --- 5700 name: testSTFSX 5701 # CHECK-ALL: name: testSTFSX 5702 alignment: 4 5703 exposesReturnsTwice: false 5704 legalized: false 5705 regBankSelected: false 5706 selected: false 5707 tracksRegLiveness: true 5708 registers: 5709 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' } 5710 - { id: 1, class: f4rc, preferred-register: '' } 5711 - { id: 2, class: g8rc, preferred-register: '' } 5712 - { id: 3, class: gprc_and_gprc_nor0, preferred-register: '' } 5713 - { id: 4, class: gprc, preferred-register: '' } 5714 - { id: 5, class: g8rc, preferred-register: '' } 5715 - { id: 6, class: g8rc, preferred-register: '' } 5716 - { id: 7, class: g8rc, preferred-register: '' } 5717 - { id: 8, class: gprc, preferred-register: '' } 5718 - { id: 9, class: g8rc, preferred-register: '' } 5719 - { id: 10, class: g8rc, preferred-register: '' } 5720 - { id: 11, class: g8rc, preferred-register: '' } 5721 liveins: 5722 - { reg: '$x3', virtual-reg: '%0' } 5723 - { reg: '$f1', virtual-reg: '%1' } 5724 - { reg: '$x5', virtual-reg: '%2' } 5725 frameInfo: 5726 isFrameAddressTaken: false 5727 isReturnAddressTaken: false 5728 hasStackMap: false 5729 hasPatchPoint: false 5730 stackSize: 0 5731 offsetAdjustment: 0 5732 maxAlignment: 0 5733 adjustsStack: false 5734 hasCalls: false 5735 stackProtector: '' 5736 maxCallFrameSize: 4294967295 5737 hasOpaqueSPAdjustment: false 5738 hasVAStart: false 5739 hasMustTailInVarArgFunc: false 5740 savePoint: '' 5741 restorePoint: '' 5742 fixedStack: 5743 stack: 5744 constants: 5745 body: | 5746 bb.0.entry: 5747 liveins: $x3, $f1, $x5 5748 5749 %2 = COPY $x5 5750 %1 = COPY $f1 5751 %0 = COPY $x3 5752 %3 = COPY %2.sub_32 5753 %4 = ADDI %3, 1 5754 %6 = IMPLICIT_DEF 5755 %5 = INSERT_SUBREG %6, killed %4, 1 5756 %7 = LI8 400 5757 STFSX %1, %0, killed %7 :: (store 4 into %ir.arrayidx, !tbaa !14) 5758 ; CHECK: STFS %1, 400, %0 5759 ; CHECK-LATE: stfs 1, 400(3) 5760 %8 = ADDI %3, 2 5761 %10 = IMPLICIT_DEF 5762 %9 = INSERT_SUBREG %10, killed %8, 1 5763 %11 = LI8 -401 5764 STFSX %1, %0, killed %11 :: (store 4 into %ir.arrayidx3, !tbaa !14) 5765 ; CHECK: STFS %1, -401, %0 5766 ; CHECK-LATE: stfs 1, -401(3) 5767 BLR8 implicit $lr8, implicit $rm 5768 5769 ... 5770 --- 5771 name: testSTFSUX 5772 # CHECK-ALL: name: testSTFSUX 5773 alignment: 4 5774 exposesReturnsTwice: false 5775 legalized: false 5776 regBankSelected: false 5777 selected: false 5778 tracksRegLiveness: true 5779 registers: 5780 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' } 5781 - { id: 1, class: f4rc, preferred-register: '' } 5782 - { id: 2, class: g8rc, preferred-register: '' } 5783 - { id: 3, class: gprc_and_gprc_nor0, preferred-register: '' } 5784 - { id: 4, class: gprc, preferred-register: '' } 5785 - { id: 5, class: g8rc, preferred-register: '' } 5786 - { id: 6, class: g8rc, preferred-register: '' } 5787 - { id: 7, class: g8rc, preferred-register: '' } 5788 - { id: 8, class: gprc, preferred-register: '' } 5789 - { id: 9, class: g8rc, preferred-register: '' } 5790 - { id: 10, class: g8rc, preferred-register: '' } 5791 - { id: 11, class: g8rc, preferred-register: '' } 5792 - { id: 12, class: g8rc_and_g8rc_nox0, preferred-register: '' } 5793 - { id: 13, class: g8rc_and_g8rc_nox0, preferred-register: '' } 5794 liveins: 5795 - { reg: '$x3', virtual-reg: '%0' } 5796 - { reg: '$f1', virtual-reg: '%1' } 5797 - { reg: '$x5', virtual-reg: '%2' } 5798 frameInfo: 5799 isFrameAddressTaken: false 5800 isReturnAddressTaken: false 5801 hasStackMap: false 5802 hasPatchPoint: false 5803 stackSize: 0 5804 offsetAdjustment: 0 5805 maxAlignment: 0 5806 adjustsStack: false 5807 hasCalls: false 5808 stackProtector: '' 5809 maxCallFrameSize: 4294967295 5810 hasOpaqueSPAdjustment: false 5811 hasVAStart: false 5812 hasMustTailInVarArgFunc: false 5813 savePoint: '' 5814 restorePoint: '' 5815 fixedStack: 5816 stack: 5817 constants: 5818 body: | 5819 bb.0.entry: 5820 liveins: $x3, $f1, $x5 5821 5822 %2 = COPY $x5 5823 %1 = COPY $f1 5824 %0 = COPY $x3 5825 %3 = COPY %2.sub_32 5826 %4 = ADDI %3, 1 5827 %6 = IMPLICIT_DEF 5828 %5 = INSERT_SUBREG %6, killed %4, 1 5829 %7 = LI8 111 5830 %12 = STFSUX %1, %0, killed %7 :: (store 4 into %ir.arrayidx, !tbaa !14) 5831 ; CHECK: STFSU %1, 111, %0 5832 ; CHECK-LATE: stfsu {{[0-9]+}}, 111({{[0-9]+}}) 5833 %8 = ADDI %3, 2 5834 %10 = IMPLICIT_DEF 5835 %9 = INSERT_SUBREG %10, killed %8, 1 5836 %11 = LI8 987 5837 %13 = STFSUX %1, %0, killed %11 :: (store 4 into %ir.arrayidx3, !tbaa !14) 5838 ; CHECK: STFSU %1, 987, %0 5839 ; CHECK-LATE: stfsu {{[0-9]+}}, 987({{[0-9]+}}) 5840 BLR8 implicit $lr8, implicit $rm 5841 5842 ... 5843 --- 5844 name: testSTFDX 5845 # CHECK-ALL: name: testSTFDX 5846 alignment: 4 5847 exposesReturnsTwice: false 5848 legalized: false 5849 regBankSelected: false 5850 selected: false 5851 tracksRegLiveness: true 5852 registers: 5853 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' } 5854 - { id: 1, class: f8rc, preferred-register: '' } 5855 - { id: 2, class: g8rc, preferred-register: '' } 5856 - { id: 3, class: gprc_and_gprc_nor0, preferred-register: '' } 5857 - { id: 4, class: gprc, preferred-register: '' } 5858 - { id: 5, class: g8rc, preferred-register: '' } 5859 - { id: 6, class: g8rc, preferred-register: '' } 5860 - { id: 7, class: g8rc, preferred-register: '' } 5861 - { id: 8, class: gprc, preferred-register: '' } 5862 - { id: 9, class: g8rc, preferred-register: '' } 5863 - { id: 10, class: g8rc, preferred-register: '' } 5864 - { id: 11, class: g8rc, preferred-register: '' } 5865 liveins: 5866 - { reg: '$x3', virtual-reg: '%0' } 5867 - { reg: '$f1', virtual-reg: '%1' } 5868 - { reg: '$x5', virtual-reg: '%2' } 5869 frameInfo: 5870 isFrameAddressTaken: false 5871 isReturnAddressTaken: false 5872 hasStackMap: false 5873 hasPatchPoint: false 5874 stackSize: 0 5875 offsetAdjustment: 0 5876 maxAlignment: 0 5877 adjustsStack: false 5878 hasCalls: false 5879 stackProtector: '' 5880 maxCallFrameSize: 4294967295 5881 hasOpaqueSPAdjustment: false 5882 hasVAStart: false 5883 hasMustTailInVarArgFunc: false 5884 savePoint: '' 5885 restorePoint: '' 5886 fixedStack: 5887 stack: 5888 constants: 5889 body: | 5890 bb.0.entry: 5891 liveins: $x3, $f1, $x5 5892 5893 %2 = COPY $x5 5894 %1 = COPY $f1 5895 %0 = COPY $x3 5896 %3 = COPY %2.sub_32 5897 %4 = ADDI %3, 1 5898 %6 = IMPLICIT_DEF 5899 %5 = INSERT_SUBREG %6, killed %4, 1 5900 %7 = LI8 876 5901 STFDX %1, %0, killed %7 :: (store 8 into %ir.arrayidx, !tbaa !12) 5902 ; CHECK: STFD %1, 876, %0 5903 ; CHECK-LATE: stfd 1, 876(3) 5904 %8 = ADDI %3, 2 5905 %10 = IMPLICIT_DEF 5906 %9 = INSERT_SUBREG %10, killed %8, 1 5907 %11 = LI8 -873 5908 STFDX %1, %0, killed %11 :: (store 8 into %ir.arrayidx3, !tbaa !12) 5909 ; CHECK: STFD %1, -873, %0 5910 ; CHECK-LATE: stfd 1, -873(3) 5911 BLR8 implicit $lr8, implicit $rm 5912 5913 ... 5914 --- 5915 name: testSTFDUX 5916 # CHECK-ALL: name: testSTFDUX 5917 alignment: 4 5918 exposesReturnsTwice: false 5919 legalized: false 5920 regBankSelected: false 5921 selected: false 5922 tracksRegLiveness: true 5923 registers: 5924 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' } 5925 - { id: 1, class: f8rc, preferred-register: '' } 5926 - { id: 2, class: g8rc, preferred-register: '' } 5927 - { id: 3, class: gprc_and_gprc_nor0, preferred-register: '' } 5928 - { id: 4, class: gprc, preferred-register: '' } 5929 - { id: 5, class: g8rc, preferred-register: '' } 5930 - { id: 6, class: g8rc, preferred-register: '' } 5931 - { id: 7, class: g8rc, preferred-register: '' } 5932 - { id: 8, class: gprc, preferred-register: '' } 5933 - { id: 9, class: g8rc, preferred-register: '' } 5934 - { id: 10, class: g8rc, preferred-register: '' } 5935 - { id: 11, class: g8rc, preferred-register: '' } 5936 - { id: 12, class: g8rc_and_g8rc_nox0, preferred-register: '' } 5937 - { id: 13, class: g8rc_and_g8rc_nox0, preferred-register: '' } 5938 liveins: 5939 - { reg: '$x3', virtual-reg: '%0' } 5940 - { reg: '$f1', virtual-reg: '%1' } 5941 - { reg: '$x5', virtual-reg: '%2' } 5942 frameInfo: 5943 isFrameAddressTaken: false 5944 isReturnAddressTaken: false 5945 hasStackMap: false 5946 hasPatchPoint: false 5947 stackSize: 0 5948 offsetAdjustment: 0 5949 maxAlignment: 0 5950 adjustsStack: false 5951 hasCalls: false 5952 stackProtector: '' 5953 maxCallFrameSize: 4294967295 5954 hasOpaqueSPAdjustment: false 5955 hasVAStart: false 5956 hasMustTailInVarArgFunc: false 5957 savePoint: '' 5958 restorePoint: '' 5959 fixedStack: 5960 stack: 5961 constants: 5962 body: | 5963 bb.0.entry: 5964 liveins: $x3, $f1, $x5 5965 5966 %2 = COPY $x5 5967 %1 = COPY $f1 5968 %0 = COPY $x3 5969 %3 = COPY %2.sub_32 5970 %4 = ADDI %3, 1 5971 %6 = IMPLICIT_DEF 5972 %5 = INSERT_SUBREG %6, killed %4, 1 5973 %7 = LI8 -9038 5974 %12 = STFDUX %1, %0, killed %7 :: (store 8 into %ir.arrayidx, !tbaa !12) 5975 ; CHECK: STFDU %1, -9038, %0 5976 ; CHECK-LATE: stfdu {{[0-9]+}}, -9038({{[0-9]+}}) 5977 %8 = ADDI %3, 2 5978 %10 = IMPLICIT_DEF 5979 %9 = INSERT_SUBREG %10, killed %8, 1 5980 %11 = LI8 6477 5981 %13 = STFDUX %1, %0, killed %11 :: (store 8 into %ir.arrayidx3, !tbaa !12) 5982 ; CHECK: STFDU %1, 6477, %0 5983 ; CHECK-LATE: stfdu {{[0-9]+}}, 6477({{[0-9]+}}) 5984 BLR8 implicit $lr8, implicit $rm 5985 5986 ... 5987 --- 5988 name: testSTXSSPX 5989 # CHECK-ALL: name: testSTXSSPX 5990 alignment: 4 5991 exposesReturnsTwice: false 5992 legalized: false 5993 regBankSelected: false 5994 selected: false 5995 tracksRegLiveness: true 5996 registers: 5997 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' } 5998 - { id: 1, class: vssrc, preferred-register: '' } 5999 - { id: 2, class: g8rc, preferred-register: '' } 6000 - { id: 3, class: g8rc, preferred-register: '' } 6001 liveins: 6002 - { reg: '$x3', virtual-reg: '%0' } 6003 - { reg: '$f1', virtual-reg: '%1' } 6004 - { reg: '$x5', virtual-reg: '%2' } 6005 frameInfo: 6006 isFrameAddressTaken: false 6007 isReturnAddressTaken: false 6008 hasStackMap: false 6009 hasPatchPoint: false 6010 stackSize: 0 6011 offsetAdjustment: 0 6012 maxAlignment: 0 6013 adjustsStack: false 6014 hasCalls: false 6015 stackProtector: '' 6016 maxCallFrameSize: 4294967295 6017 hasOpaqueSPAdjustment: false 6018 hasVAStart: false 6019 hasMustTailInVarArgFunc: false 6020 savePoint: '' 6021 restorePoint: '' 6022 fixedStack: 6023 stack: 6024 constants: 6025 body: | 6026 bb.0.entry: 6027 liveins: $x3, $f1, $x5 6028 6029 %2 = COPY $x5 6030 %1 = COPY $f1 6031 %0 = COPY $x3 6032 %3 = LI8 444 6033 STXSSPX %1, %0, killed %3 :: (store 4 into %ir.arrayidx, !tbaa !14) 6034 ; CHECK: STXSSP %1, 444, %0 6035 ; CHECK-LATE: stxssp 1, 444(3) 6036 BLR8 implicit $lr8, implicit $rm 6037 6038 ... 6039 --- 6040 name: testSTXSDX 6041 # CHECK-ALL: name: testSTXSDX 6042 alignment: 4 6043 exposesReturnsTwice: false 6044 legalized: false 6045 regBankSelected: false 6046 selected: false 6047 tracksRegLiveness: true 6048 registers: 6049 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' } 6050 - { id: 1, class: vsfrc, preferred-register: '' } 6051 - { id: 2, class: g8rc, preferred-register: '' } 6052 - { id: 3, class: g8rc, preferred-register: '' } 6053 liveins: 6054 - { reg: '$x3', virtual-reg: '%0' } 6055 - { reg: '$f1', virtual-reg: '%1' } 6056 - { reg: '$x5', virtual-reg: '%2' } 6057 frameInfo: 6058 isFrameAddressTaken: false 6059 isReturnAddressTaken: false 6060 hasStackMap: false 6061 hasPatchPoint: false 6062 stackSize: 0 6063 offsetAdjustment: 0 6064 maxAlignment: 0 6065 adjustsStack: false 6066 hasCalls: false 6067 stackProtector: '' 6068 maxCallFrameSize: 4294967295 6069 hasOpaqueSPAdjustment: false 6070 hasVAStart: false 6071 hasMustTailInVarArgFunc: false 6072 savePoint: '' 6073 restorePoint: '' 6074 fixedStack: 6075 stack: 6076 constants: 6077 body: | 6078 bb.0.entry: 6079 liveins: $x3, $f1, $x5 6080 6081 %2 = COPY $x5 6082 %1 = COPY $f1 6083 %0 = COPY $x3 6084 %3 = LI8 4 6085 STXSDX %1, %0, killed %3, implicit $rm :: (store 8 into %ir.arrayidx, !tbaa !12) 6086 ; CHECK: STXSD %1, 4, %0 6087 ; CHECK-LATE: stxsd 1, 4(3) 6088 BLR8 implicit $lr8, implicit $rm 6089 6090 ... 6091 --- 6092 name: testSTXVX 6093 # CHECK-ALL: name: testSTXVX 6094 alignment: 4 6095 exposesReturnsTwice: false 6096 legalized: false 6097 regBankSelected: false 6098 selected: false 6099 tracksRegLiveness: true 6100 registers: 6101 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' } 6102 - { id: 1, class: vrrc, preferred-register: '' } 6103 - { id: 2, class: g8rc, preferred-register: '' } 6104 - { id: 3, class: g8rc, preferred-register: '' } 6105 liveins: 6106 - { reg: '$x3', virtual-reg: '%0' } 6107 - { reg: '$v2', virtual-reg: '%1' } 6108 - { reg: '$x7', virtual-reg: '%2' } 6109 frameInfo: 6110 isFrameAddressTaken: false 6111 isReturnAddressTaken: false 6112 hasStackMap: false 6113 hasPatchPoint: false 6114 stackSize: 0 6115 offsetAdjustment: 0 6116 maxAlignment: 0 6117 adjustsStack: false 6118 hasCalls: false 6119 stackProtector: '' 6120 maxCallFrameSize: 4294967295 6121 hasOpaqueSPAdjustment: false 6122 hasVAStart: false 6123 hasMustTailInVarArgFunc: false 6124 savePoint: '' 6125 restorePoint: '' 6126 fixedStack: 6127 stack: 6128 constants: 6129 body: | 6130 bb.0.entry: 6131 liveins: $x3, $v2, $x7 6132 6133 %2 = COPY $x7 6134 %1 = COPY $v2 6135 %0 = LI8 16 6136 %3 = RLDICR %2, 4, 59 6137 STXVX %1, %0, killed %3 :: (store 16 into %ir.arrayidx, !tbaa !3) 6138 ; CHECK: STXV %1, 16, killed %3 6139 ; CHECK-LATE: stxv 34, 16(4) 6140 BLR8 implicit $lr8, implicit $rm 6141 6142 ... 6143 --- 6144 name: testSUBFC 6145 # CHECK-ALL: name: testSUBFC 6146 alignment: 4 6147 exposesReturnsTwice: false 6148 legalized: false 6149 regBankSelected: false 6150 selected: false 6151 tracksRegLiveness: true 6152 registers: 6153 - { id: 0, class: gprc, preferred-register: '' } 6154 - { id: 1, class: g8rc, preferred-register: '' } 6155 - { id: 2, class: g8rc, preferred-register: '' } 6156 - { id: 3, class: g8rc, preferred-register: '' } 6157 - { id: 4, class: gprc, preferred-register: '' } 6158 - { id: 5, class: gprc, preferred-register: '' } 6159 - { id: 6, class: gprc, preferred-register: '' } 6160 - { id: 7, class: gprc, preferred-register: '' } 6161 - { id: 8, class: gprc, preferred-register: '' } 6162 liveins: 6163 - { reg: '$x3', virtual-reg: '%0' } 6164 - { reg: '$x4', virtual-reg: '%1' } 6165 - { reg: '$x5', virtual-reg: '%2' } 6166 - { reg: '$x6', virtual-reg: '%3' } 6167 frameInfo: 6168 isFrameAddressTaken: false 6169 isReturnAddressTaken: false 6170 hasStackMap: false 6171 hasPatchPoint: false 6172 stackSize: 0 6173 offsetAdjustment: 0 6174 maxAlignment: 0 6175 adjustsStack: false 6176 hasCalls: false 6177 stackProtector: '' 6178 maxCallFrameSize: 4294967295 6179 hasOpaqueSPAdjustment: false 6180 hasVAStart: false 6181 hasMustTailInVarArgFunc: false 6182 savePoint: '' 6183 restorePoint: '' 6184 fixedStack: 6185 stack: 6186 constants: 6187 body: | 6188 bb.0.entry: 6189 liveins: $x3, $x4, $x5, $x6 6190 6191 %3 = COPY $x6 6192 %2 = COPY $x5 6193 %1 = COPY $x4 6194 %6 = COPY %3.sub_32 6195 %7 = COPY %2.sub_32 6196 %8 = COPY %1.sub_32 6197 %0 = LI 55 6198 %4 = SUBFC %7, %0, implicit-def $carry 6199 ; CHECK: SUBFIC %7, 55 6200 ; CHECK-LATE: subfic 3, 5, 55 6201 %5 = SUBFE %6, %8, implicit-def dead $carry, implicit $carry 6202 $x3 = EXTSW_32_64 %4 6203 $x4 = EXTSW_32_64 %5 6204 BLR8 implicit $lr8, implicit $rm, implicit $x3, implicit $x4 6205 6206 ... 6207 --- 6208 name: testSUBFC8 6209 # CHECK-ALL: name: testSUBFC8 6210 alignment: 4 6211 exposesReturnsTwice: false 6212 legalized: false 6213 regBankSelected: false 6214 selected: false 6215 tracksRegLiveness: true 6216 registers: 6217 - { id: 0, class: g8rc, preferred-register: '' } 6218 - { id: 1, class: g8rc, preferred-register: '' } 6219 - { id: 2, class: g8rc, preferred-register: '' } 6220 - { id: 3, class: g8rc, preferred-register: '' } 6221 - { id: 4, class: g8rc, preferred-register: '' } 6222 - { id: 5, class: g8rc, preferred-register: '' } 6223 liveins: 6224 - { reg: '$x3', virtual-reg: '%0' } 6225 - { reg: '$x4', virtual-reg: '%1' } 6226 - { reg: '$x5', virtual-reg: '%2' } 6227 - { reg: '$x6', virtual-reg: '%3' } 6228 frameInfo: 6229 isFrameAddressTaken: false 6230 isReturnAddressTaken: false 6231 hasStackMap: false 6232 hasPatchPoint: false 6233 stackSize: 0 6234 offsetAdjustment: 0 6235 maxAlignment: 0 6236 adjustsStack: false 6237 hasCalls: false 6238 stackProtector: '' 6239 maxCallFrameSize: 4294967295 6240 hasOpaqueSPAdjustment: false 6241 hasVAStart: false 6242 hasMustTailInVarArgFunc: false 6243 savePoint: '' 6244 restorePoint: '' 6245 fixedStack: 6246 stack: 6247 constants: 6248 body: | 6249 bb.0.entry: 6250 liveins: $x3, $x4, $x5, $x6 6251 6252 %3 = COPY $x6 6253 %2 = COPY $x5 6254 %1 = COPY $x4 6255 %0 = LI8 7635 6256 %4 = SUBFC8 %2, %0, implicit-def $carry 6257 ; CHECK: SUBFIC8 %2, 7635 6258 ; CHECK-LATE: subfic 3, 5, 7635 6259 %5 = SUBFE8 %3, %1, implicit-def dead $carry, implicit $carry 6260 $x3 = COPY %4 6261 $x4 = COPY %5 6262 BLR8 implicit $lr8, implicit $rm, implicit $x3, implicit $x4 6263 6264 ... 6265 --- 6266 name: testXOR 6267 # CHECK-ALL: name: testXOR 6268 alignment: 4 6269 exposesReturnsTwice: false 6270 legalized: false 6271 regBankSelected: false 6272 selected: false 6273 tracksRegLiveness: true 6274 registers: 6275 - { id: 0, class: g8rc, preferred-register: '' } 6276 - { id: 1, class: gprc, preferred-register: '' } 6277 - { id: 2, class: gprc, preferred-register: '' } 6278 - { id: 3, class: gprc, preferred-register: '' } 6279 liveins: 6280 - { reg: '$x3', virtual-reg: '%0' } 6281 - { reg: '$x4', virtual-reg: '%1' } 6282 frameInfo: 6283 isFrameAddressTaken: false 6284 isReturnAddressTaken: false 6285 hasStackMap: false 6286 hasPatchPoint: false 6287 stackSize: 0 6288 offsetAdjustment: 0 6289 maxAlignment: 0 6290 adjustsStack: false 6291 hasCalls: false 6292 stackProtector: '' 6293 maxCallFrameSize: 4294967295 6294 hasOpaqueSPAdjustment: false 6295 hasVAStart: false 6296 hasMustTailInVarArgFunc: false 6297 savePoint: '' 6298 restorePoint: '' 6299 fixedStack: 6300 stack: 6301 constants: 6302 body: | 6303 bb.0.entry: 6304 liveins: $x3, $x4 6305 6306 %1 = LI 10101 6307 %0 = COPY $x3 6308 %3 = COPY %0.sub_32 6309 %2 = XOR %1, %3 6310 ; CHECK: XORI %3, 10101 6311 ; CHECK-LATE: 3, 3, 10101 6312 $x3 = EXTSW_32_64 %2 6313 BLR8 implicit $lr8, implicit $rm, implicit $x3 6314 6315 ... 6316 --- 6317 name: testXOR8 6318 # CHECK-ALL: name: testXOR8 6319 alignment: 4 6320 exposesReturnsTwice: false 6321 legalized: false 6322 regBankSelected: false 6323 selected: false 6324 tracksRegLiveness: true 6325 registers: 6326 - { id: 0, class: g8rc, preferred-register: '' } 6327 - { id: 1, class: g8rc, preferred-register: '' } 6328 - { id: 2, class: g8rc, preferred-register: '' } 6329 liveins: 6330 - { reg: '$x3', virtual-reg: '%0' } 6331 - { reg: '$x4', virtual-reg: '%1' } 6332 frameInfo: 6333 isFrameAddressTaken: false 6334 isReturnAddressTaken: false 6335 hasStackMap: false 6336 hasPatchPoint: false 6337 stackSize: 0 6338 offsetAdjustment: 0 6339 maxAlignment: 0 6340 adjustsStack: false 6341 hasCalls: false 6342 stackProtector: '' 6343 maxCallFrameSize: 4294967295 6344 hasOpaqueSPAdjustment: false 6345 hasVAStart: false 6346 hasMustTailInVarArgFunc: false 6347 savePoint: '' 6348 restorePoint: '' 6349 fixedStack: 6350 stack: 6351 constants: 6352 body: | 6353 bb.0.entry: 6354 liveins: $x3, $x4 6355 6356 %1 = COPY $x4 6357 %0 = LI8 5535 6358 %2 = XOR8 %1, %0 6359 ; CHECK: XORI8 %1, 5535 6360 ; CHECK-LATE: xori 3, 4, 5535 6361 $x3 = COPY %2 6362 BLR8 implicit $lr8, implicit $rm, implicit $x3 6363 6364 ... 6365 --- 6366 name: testXORI 6367 # CHECK-ALL: name: testXORI 6368 alignment: 4 6369 exposesReturnsTwice: false 6370 legalized: false 6371 regBankSelected: false 6372 selected: false 6373 tracksRegLiveness: true 6374 registers: 6375 - { id: 0, class: gprc, preferred-register: '' } 6376 - { id: 1, class: gprc, preferred-register: '' } 6377 liveins: 6378 - { reg: '$x3', virtual-reg: '%0' } 6379 frameInfo: 6380 isFrameAddressTaken: false 6381 isReturnAddressTaken: false 6382 hasStackMap: false 6383 hasPatchPoint: false 6384 stackSize: 0 6385 offsetAdjustment: 0 6386 maxAlignment: 0 6387 adjustsStack: false 6388 hasCalls: false 6389 stackProtector: '' 6390 maxCallFrameSize: 4294967295 6391 hasOpaqueSPAdjustment: false 6392 hasVAStart: false 6393 hasMustTailInVarArgFunc: false 6394 savePoint: '' 6395 restorePoint: '' 6396 fixedStack: 6397 stack: 6398 constants: 6399 body: | 6400 bb.0.entry: 6401 liveins: $x3 6402 6403 %0 = LI 871 6404 %1 = XORI %0, 17 6405 ; CHECK: LI 886 6406 ; CHECK-LATE: li 3, 886 6407 $x3 = EXTSW_32_64 %1 6408 BLR8 implicit $lr8, implicit $rm, implicit $x3 6409 6410 ... 6411 --- 6412 name: testXOR8I 6413 # CHECK-ALL: name: testXOR8I 6414 alignment: 4 6415 exposesReturnsTwice: false 6416 legalized: false 6417 regBankSelected: false 6418 selected: false 6419 tracksRegLiveness: true 6420 registers: 6421 - { id: 0, class: g8rc, preferred-register: '' } 6422 - { id: 1, class: g8rc, preferred-register: '' } 6423 liveins: 6424 - { reg: '$x3', virtual-reg: '%0' } 6425 frameInfo: 6426 isFrameAddressTaken: false 6427 isReturnAddressTaken: false 6428 hasStackMap: false 6429 hasPatchPoint: false 6430 stackSize: 0 6431 offsetAdjustment: 0 6432 maxAlignment: 0 6433 adjustsStack: false 6434 hasCalls: false 6435 stackProtector: '' 6436 maxCallFrameSize: 4294967295 6437 hasOpaqueSPAdjustment: false 6438 hasVAStart: false 6439 hasMustTailInVarArgFunc: false 6440 savePoint: '' 6441 restorePoint: '' 6442 fixedStack: 6443 stack: 6444 constants: 6445 body: | 6446 bb.0.entry: 6447 liveins: $x3 6448 6449 %0 = LI8 453 6450 %1 = XORI8 %0, 17 6451 ; CHECK: LI8 468 6452 ; CHECK-LATE: li 3, 468 6453 $x3 = COPY %1 6454 BLR8 implicit $lr8, implicit $rm, implicit $x3 6455 6456 ... 6457