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