brintos

brintos / llvm-project-archived public Read only

0
0
Text · 33.9 KiB · ceecdc5 Raw
706 lines · plain
1# RUN: llc -run-pass=ppc-mi-peepholes  -mtriple powerpc64-ibm-aix-xcoff %s -o - \2# RUN:   -verify-machineinstrs | FileCheck %s3 4--- |5  ; ModuleID = '71030_tmp_reduce-O2.ll'6  source_filename = "71030_tmp_reduce.c"7  target datalayout = "E-m:a-Fi64-i64:64-n32:64-S128-v256:256:256-v512:512:512"8  target triple = "powerpc64-ibm-aix-xcoff"9 10  @globalShortValue = local_unnamed_addr global i16 1, align 211  @globalCharValue = local_unnamed_addr global i8 0, align 112  @largeNumber = local_unnamed_addr global i64 -3664682556119382352, align 813  @someIntValue = local_unnamed_addr global i32 378441747, align 414  @unitIncrement = local_unnamed_addr global i32 1, align 415  @computedResultUll = local_unnamed_addr global i64 0, align 816  @computedResultShort = local_unnamed_addr global i16 0, align 217  @computedResultUChar = local_unnamed_addr global i8 0, align 118  @computedResultBool = local_unnamed_addr global i8 0, align 119  @computedResultChar = local_unnamed_addr global i8 0, align 120  @shortArray = local_unnamed_addr global [8 x i16] zeroinitializer, align 221  @charArray = local_unnamed_addr global [8 x [8 x [8 x i8]]] zeroinitializer, align 122  @longArray = local_unnamed_addr global [8 x [8 x i64]] zeroinitializer, align 823  @resultArray = local_unnamed_addr global [8 x [8 x i16]] zeroinitializer, align 224  @ullArray = local_unnamed_addr global [8 x i64] zeroinitializer, align 825  @intArray = local_unnamed_addr global [8 x [8 x [8 x i32]]] zeroinitializer, align 426  @_MergedGlobals = private constant <{ [29 x i8], [46 x i8] }> <{ [29 x i8] c"Computed Result (ULL): %llx\0A\00", [46 x i8] c"Computed convert largeNumber&&&& (ULL): %llx\0A\00" }>, align 127 28  @.str.1 = private alias [29 x i8], ptr @_MergedGlobals29  @.str = private alias [46 x i8], getelementptr inbounds (<{ [29 x i8], [46 x i8] }>, ptr @_MergedGlobals, i32 0, i32 1)30 31  ; Function Attrs: nofree nounwind32  define noundef signext i32 @main() local_unnamed_addr #0 {33  entry:34    store i16 -1, ptr getelementptr inbounds ([8 x i16], ptr @shortArray, i64 0, i64 3), align 2, !tbaa !335    %0 = load i64, ptr @largeNumber, align 8, !tbaa !736    %conv = trunc i64 %0 to i3237    %sext = shl i32 %conv, 1638    %conv1 = ashr exact i32 %sext, 1639    %sub = add nsw i32 %conv1, -170540    %call = tail call signext i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (<{ [29 x i8], [46 x i8] }>, ptr @_MergedGlobals, i32 0, i32 1), i32 noundef signext %sub)41    %1 = load i16, ptr @globalShortValue, align 2, !tbaa !342    %2 = load i32, ptr @someIntValue, align 4, !tbaa !943    %3 = trunc i32 %2 to i844    %conv20 = add i8 %3, -1945    %4 = load i32, ptr @unitIncrement, align 446    %5 = load i8, ptr @globalCharValue, align 147    %conv45 = sext i8 %5 to i3248    %computedResultShort.promoted = load i16, ptr @computedResultShort, align 2, !tbaa !349    %resultArray.promoted = load i16, ptr @resultArray, align 2, !tbaa !350    %computedResultChar.promoted149 = load i8, ptr @computedResultChar, align 1, !tbaa !1151    %6 = sext i8 %conv20 to i6452    %7 = load i16, ptr getelementptr inbounds ([8 x i16], ptr @shortArray, i64 0, i64 3), align 2, !tbaa !353    %8 = load i16, ptr getelementptr inbounds ([8 x i16], ptr @shortArray, i64 0, i64 2), align 254    %conv46 = sext i16 %8 to i3255    %cond54 = tail call i32 @llvm.smin.i32(i32 %conv45, i32 %conv46)56    %tobool = icmp ne i32 %cond54, 057    %conv55 = zext i1 %tobool to i858    %9 = load i64, ptr getelementptr inbounds ([8 x i64], ptr @ullArray, i64 0, i64 3), align 859    %tobool72 = icmp ne i64 %9, 060    %frombool = zext i1 %tobool72 to i861    %smax = tail call i64 @llvm.smax.i64(i64 %6, i64 4)62    %10 = add nuw nsw i64 %smax, 363    %11 = sub i64 %10, %664    %12 = lshr i64 %11, 265    %13 = add nuw nsw i64 %12, 166    %n.vec = and i64 %13, 922337203685477580667    %14 = shl i64 %n.vec, 268    %ind.end = add i64 %14, %669    %15 = shl i64 %6, 270    %16 = shl i64 %6, 371    %17 = add nsw i64 %16, -6472    %scevgep30 = getelementptr i8, ptr @longArray, i64 %1773    %18 = add nsw i64 %15, 6474    %scevgep31 = getelementptr i8, ptr @intArray, i64 %1875    %19 = lshr i64 %13, 176    %20 = shl nuw nsw i64 %19, 177    %21 = add nsw i64 %20, -278    %22 = lshr i64 %21, 179    %23 = add nuw i64 %22, 180    br label %for.body1681 82  for.cond.cleanup15:                               ; preds = %for.cond.cleanup2583    %24 = tail call i16 @llvm.smin.i16(i16 %1, i16 %7)84    %conv11.le = sext i16 %24 to i6485    store i64 %conv11.le, ptr @computedResultUll, align 8, !tbaa !786    %call97 = tail call signext i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @_MergedGlobals, i64 noundef %conv11.le)87    ret i32 088 89  for.body16:                                       ; preds = %for.cond.cleanup25, %entry90    %lsr.iv29 = phi i32 [ %lsr.iv.next, %for.cond.cleanup25 ], [ 8, %entry ]91    %conv36.lcssa132140 = phi i16 [ %computedResultShort.promoted, %entry ], [ %conv36.lcssa131, %for.cond.cleanup25 ]92    %and.lcssa135139 = phi i16 [ %resultArray.promoted, %entry ], [ %and.lcssa134, %for.cond.cleanup25 ]93    %conv81118.lcssa.lcssa137138 = phi i8 [ %computedResultChar.promoted149, %entry ], [ %conv81118.lcssa.lcssa136, %for.cond.cleanup25 ]94    %25 = icmp slt i8 %conv20, 895    br i1 %25, label %for.body31.lr.ph, label %for.cond.cleanup2596 97  for.body31.lr.ph:                                 ; preds = %for.body1698    %26 = icmp ult i64 %11, 499    store i8 %conv55, ptr @computedResultUChar, align 1, !tbaa !11100    br i1 %26, label %for.body31.preheader, label %vector.body.preheader101 102  vector.body.preheader:                            ; preds = %for.body31.lr.ph103    call void @llvm.set.loop.iterations.i64(i64 %23)104    br label %vector.body105 106  vector.body:                                      ; preds = %vector.body.preheader, %vector.body107    %vec.phi = phi i16 [ %44, %vector.body ], [ %conv36.lcssa132140, %vector.body.preheader ]108    %vec.phi159 = phi i16 [ %45, %vector.body ], [ 0, %vector.body.preheader ]109    %vec.phi160 = phi i16 [ %46, %vector.body ], [ %and.lcssa135139, %vector.body.preheader ]110    %vec.phi161 = phi i16 [ %47, %vector.body ], [ -1, %vector.body.preheader ]111    %vec.phi162 = phi i8 [ %48, %vector.body ], [ %conv81118.lcssa.lcssa137138, %vector.body.preheader ]112    %vec.phi163 = phi i8 [ %49, %vector.body ], [ 0, %vector.body.preheader ]113    %27 = phi ptr [ %scevgep30, %vector.body.preheader ], [ %31, %vector.body ]114    %28 = phi ptr [ %scevgep31, %vector.body.preheader ], [ %29, %vector.body ]115    %29 = getelementptr i8, ptr %28, i64 32116    %30 = getelementptr i8, ptr %29, i64 16117    %31 = getelementptr i8, ptr %27, i64 64118    %32 = getelementptr i8, ptr %31, i64 32119    %33 = trunc i32 %4 to i16120    %34 = load i64, ptr %31, align 8, !tbaa !7121    %35 = load i64, ptr %32, align 8, !tbaa !7122    %36 = trunc i64 %34 to i16123    %37 = trunc i64 %35 to i16124    %38 = load i32, ptr %29, align 4, !tbaa !9125    %39 = load i32, ptr %30, align 4, !tbaa !9126    %40 = trunc i32 %38 to i8127    %41 = trunc i32 %39 to i8128    %42 = mul i8 %40, -6129    %43 = mul i8 %41, -6130    %44 = sub i16 %vec.phi, %33131    %45 = sub i16 %vec.phi159, %33132    %46 = and i16 %vec.phi160, %36133    %47 = and i16 %vec.phi161, %37134    %48 = add i8 %42, %vec.phi162135    %49 = add i8 %43, %vec.phi163136    %50 = call i1 @llvm.loop.decrement.i64(i64 1)137    br i1 %50, label %vector.body, label %middle.block, !llvm.loop !12138 139  middle.block:                                     ; preds = %vector.body140    %51 = icmp eq i64 %13, %n.vec141    %bin.rdx = add i16 %45, %44142    %bin.rdx164 = and i16 %47, %46143    %bin.rdx165 = add i8 %49, %48144    br i1 %51, label %for.cond21.for.cond.cleanup25_crit_edge, label %for.body31.preheader145 146  for.body31.preheader:                             ; preds = %middle.block, %for.body31.lr.ph147    %indvars.iv.ph = phi i64 [ %6, %for.body31.lr.ph ], [ %ind.end, %middle.block ]148    %conv36121128.ph = phi i16 [ %conv36.lcssa132140, %for.body31.lr.ph ], [ %bin.rdx, %middle.block ]149    %and122127.ph = phi i16 [ %and.lcssa135139, %for.body31.lr.ph ], [ %bin.rdx164, %middle.block ]150    %conv81118.lcssa124126.ph = phi i8 [ %conv81118.lcssa.lcssa137138, %for.body31.lr.ph ], [ %bin.rdx165, %middle.block ]151    %52 = shl i64 %indvars.iv.ph, 2152    %53 = shl i64 %indvars.iv.ph, 3153    %scevgep = getelementptr i8, ptr getelementptr ([8 x [8 x i64]], ptr @longArray, i64 -1, i64 7, i64 4), i64 %53154    %scevgep32 = getelementptr i8, ptr getelementptr inbounds ([8 x [8 x [8 x i32]]], ptr @intArray, i64 0, i64 0, i64 2, i64 4), i64 %52155    %smax33 = call i64 @llvm.smax.i64(i64 %indvars.iv.ph, i64 4)156    %54 = add i64 %smax33, 3157    %55 = sub i64 %54, %indvars.iv.ph158    %56 = lshr i64 %55, 2159    %57 = add nuw nsw i64 %56, 1160    call void @llvm.set.loop.iterations.i64(i64 %57)161    br label %for.body31162 163  for.cond21.for.cond.cleanup25_crit_edge:          ; preds = %for.body31, %middle.block164    %conv36.lcssa = phi i16 [ %bin.rdx, %middle.block ], [ %conv36, %for.body31 ]165    %and.lcssa = phi i16 [ %bin.rdx164, %middle.block ], [ %and, %for.body31 ]166    %.lcssa = phi i8 [ %bin.rdx165, %middle.block ], [ %67, %for.body31 ]167    %58 = trunc i16 %1 to i8168    store i16 %conv36.lcssa, ptr @computedResultShort, align 2, !tbaa !3169    store i8 %58, ptr getelementptr inbounds ([8 x [8 x [8 x i8]]], ptr @charArray, i64 0, i64 2, i64 0, i64 3), align 1, !tbaa !11170    store i16 %and.lcssa, ptr @resultArray, align 2, !tbaa !3171    store i8 %frombool, ptr @computedResultBool, align 1, !tbaa !16172    store i8 %.lcssa, ptr @computedResultChar, align 1, !tbaa !11173    br label %for.cond.cleanup25174 175  for.cond.cleanup25:                               ; preds = %for.cond21.for.cond.cleanup25_crit_edge, %for.body16176    %conv81118.lcssa.lcssa136 = phi i8 [ %.lcssa, %for.cond21.for.cond.cleanup25_crit_edge ], [ %conv81118.lcssa.lcssa137138, %for.body16 ]177    %and.lcssa134 = phi i16 [ %and.lcssa, %for.cond21.for.cond.cleanup25_crit_edge ], [ %and.lcssa135139, %for.body16 ]178    %conv36.lcssa131 = phi i16 [ %conv36.lcssa, %for.cond21.for.cond.cleanup25_crit_edge ], [ %conv36.lcssa132140, %for.body16 ]179    %lsr.iv.next = add nsw i32 %lsr.iv29, -1180    %exitcond.not = icmp eq i32 %lsr.iv.next, 0181    br i1 %exitcond.not, label %for.cond.cleanup15, label %for.body16, !llvm.loop !18182 183  for.body31:                                       ; preds = %for.body31, %for.body31.preheader184    %conv36121128 = phi i16 [ %conv36, %for.body31 ], [ %conv36121128.ph, %for.body31.preheader ]185    %and122127 = phi i16 [ %and, %for.body31 ], [ %and122127.ph, %for.body31.preheader ]186    %conv81118.lcssa124126 = phi i8 [ %67, %for.body31 ], [ %conv81118.lcssa124126.ph, %for.body31.preheader ]187    %59 = phi ptr [ %scevgep, %for.body31.preheader ], [ %62, %for.body31 ]188    %60 = phi ptr [ %scevgep32, %for.body31.preheader ], [ %61, %for.body31 ]189    %61 = getelementptr i8, ptr %60, i64 16190    %62 = getelementptr i8, ptr %59, i64 32191    %63 = trunc i32 %4 to i16192    %64 = load i64, ptr %62, align 8, !tbaa !7193    %conv61 = trunc i64 %64 to i16194    %65 = load i32, ptr %61, align 4, !tbaa !9195    %66 = trunc i32 %65 to i8196    %.neg = mul i8 %66, -6197    %conv36 = sub i16 %conv36121128, %63198    %and = and i16 %and122127, %conv61199    %67 = add i8 %.neg, %conv81118.lcssa124126200    %68 = call i1 @llvm.loop.decrement.i64(i64 1)201    br i1 %68, label %for.body31, label %for.cond21.for.cond.cleanup25_crit_edge, !llvm.loop !19202  }203 204  ; Function Attrs: nofree nounwind205  declare noundef signext i32 @printf(ptr nocapture noundef readonly, ...) local_unnamed_addr #0206 207  ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)208  declare i32 @llvm.smin.i32(i32, i32) #1209 210  ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)211  declare i16 @llvm.smin.i16(i16, i16) #1212 213  ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)214  declare i64 @llvm.smax.i64(i64, i64) #1215 216  ; Function Attrs: nocallback noduplicate nofree nosync nounwind willreturn217  declare void @llvm.set.loop.iterations.i64(i64) #2218 219  ; Function Attrs: nocallback noduplicate nofree nosync nounwind willreturn220  declare i1 @llvm.loop.decrement.i64(i64) #2221 222  attributes #0 = { nofree nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="pwr7" "target-features"="+altivec,+bpermd,+extdiv,+isa-v206-instructions,+vsx,-aix-small-local-exec-tls,-crbits,-crypto,-direct-move,-htm,-isa-v207-instructions,-isa-v30-instructions,-power8-vector,-power9-vector,-privileged,-quadword-atomics,-rop-protect,-spe" }223  attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }224  attributes #2 = { nocallback noduplicate nofree nosync nounwind willreturn }225 226  !llvm.module.flags = !{!0, !1}227  !llvm.ident = !{!2}228 229  !0 = !{i32 1, !"wchar_size", i32 4}230  !1 = !{i32 8, !"PIC Level", i32 2}231  !2 = !{!"IBM Open XL C/C++ for AIX 17.1.3 (5725-C72, 5765-J18), version 17.1.3.0, clang version 19.0.0git"}232  !3 = !{!4, !4, i64 0}233  !4 = !{!"short", !5, i64 0}234  !5 = !{!"omnipotent char", !6, i64 0}235  !6 = !{!"Simple C/C++ TBAA"}236  !7 = !{!8, !8, i64 0}237  !8 = !{!"long long", !5, i64 0}238  !9 = !{!10, !10, i64 0}239  !10 = !{!"int", !5, i64 0}240  !11 = !{!5, !5, i64 0}241  !12 = distinct !{!12, !13, !14, !15}242  !13 = !{!"llvm.loop.mustprogress"}243  !14 = !{!"llvm.loop.isvectorized", i32 1}244  !15 = !{!"llvm.loop.unroll.runtime.disable"}245  !16 = !{!17, !17, i64 0}246  !17 = !{!"_Bool", !5, i64 0}247  !18 = distinct !{!18, !13}248  !19 = distinct !{!19, !13, !14}249 250...251---252name:            main253alignment:       16254exposesReturnsTwice: false255legalized:       false256regBankSelected: false257selected:        false258failedISel:      false259tracksRegLiveness: true260hasWinCFI:       false261callsEHReturn:   false262callsUnwindInit: false263hasEHContTarget: false264hasEHScopes:     false265hasEHFunclets:   false266isOutlined:      false267debugInstrRef:   false268failsVerification: false269tracksDebugUserValues: false270registers:271  - { id: 0, class: gprc, preferred-register: '' }272  - { id: 1, class: gprc, preferred-register: '' }273  - { id: 2, class: gprc, preferred-register: '' }274  - { id: 3, class: gprc, preferred-register: '' }275  - { id: 4, class: gprc, preferred-register: '' }276  - { id: 5, class: gprc, preferred-register: '' }277  - { id: 6, class: g8rc_and_g8rc_nox0, preferred-register: '' }278  - { id: 7, class: gprc, preferred-register: '' }279  - { id: 8, class: gprc, preferred-register: '' }280  - { id: 9, class: gprc, preferred-register: '' }281  - { id: 10, class: g8rc, preferred-register: '' }282  - { id: 11, class: g8rc, preferred-register: '' }283  - { id: 12, class: g8rc_and_g8rc_nox0, preferred-register: '' }284  - { id: 13, class: g8rc, preferred-register: '' }285  - { id: 14, class: g8rc, preferred-register: '' }286  - { id: 15, class: g8rc, preferred-register: '' }287  - { id: 16, class: g8rc, preferred-register: '' }288  - { id: 17, class: gprc_and_gprc_nor0, preferred-register: '' }289  - { id: 18, class: gprc, preferred-register: '' }290  - { id: 19, class: gprc, preferred-register: '' }291  - { id: 20, class: gprc, preferred-register: '' }292  - { id: 21, class: gprc, preferred-register: '' }293  - { id: 22, class: gprc, preferred-register: '' }294  - { id: 23, class: gprc, preferred-register: '' }295  - { id: 24, class: gprc, preferred-register: '' }296  - { id: 25, class: gprc, preferred-register: '' }297  - { id: 26, class: gprc, preferred-register: '' }298  - { id: 27, class: g8rc_and_g8rc_nox0, preferred-register: '' }299  - { id: 28, class: g8rc_and_g8rc_nox0, preferred-register: '' }300  - { id: 29, class: g8rc, preferred-register: '' }301  - { id: 30, class: g8rc, preferred-register: '' }302  - { id: 31, class: gprc, preferred-register: '' }303  - { id: 32, class: gprc, preferred-register: '' }304  - { id: 33, class: gprc, preferred-register: '' }305  - { id: 34, class: gprc, preferred-register: '' }306  - { id: 35, class: gprc, preferred-register: '' }307  - { id: 36, class: gprc, preferred-register: '' }308  - { id: 37, class: gprc, preferred-register: '' }309  - { id: 38, class: gprc, preferred-register: '' }310  - { id: 39, class: gprc, preferred-register: '' }311  - { id: 40, class: g8rc_and_g8rc_nox0, preferred-register: '' }312  - { id: 41, class: gprc, preferred-register: '' }313  - { id: 42, class: gprc, preferred-register: '' }314  - { id: 43, class: gprc, preferred-register: '' }315  - { id: 44, class: g8rc, preferred-register: '' }316  - { id: 45, class: g8rc, preferred-register: '' }317  - { id: 46, class: gprc, preferred-register: '' }318  - { id: 47, class: gprc, preferred-register: '' }319  - { id: 48, class: gprc, preferred-register: '' }320  - { id: 49, class: gprc, preferred-register: '' }321  - { id: 50, class: gprc, preferred-register: '' }322  - { id: 51, class: gprc, preferred-register: '' }323  - { id: 52, class: gprc, preferred-register: '' }324  - { id: 53, class: gprc, preferred-register: '' }325  - { id: 54, class: gprc, preferred-register: '' }326  - { id: 55, class: gprc, preferred-register: '' }327  - { id: 56, class: g8rc_and_g8rc_nox0, preferred-register: '' }328  - { id: 57, class: g8rc_and_g8rc_nox0, preferred-register: '' }329  - { id: 58, class: g8rc, preferred-register: '' }330  - { id: 59, class: g8rc, preferred-register: '' }331  - { id: 60, class: gprc, preferred-register: '' }332  - { id: 61, class: gprc, preferred-register: '' }333  - { id: 62, class: gprc, preferred-register: '' }334  - { id: 63, class: gprc, preferred-register: '' }335  - { id: 64, class: g8rc_and_g8rc_nox0, preferred-register: '' }336  - { id: 65, class: g8rc, preferred-register: '' }337  - { id: 66, class: g8rc_and_g8rc_nox0, preferred-register: '' }338  - { id: 67, class: gprc_and_gprc_nor0, preferred-register: '' }339  - { id: 68, class: gprc, preferred-register: '' }340  - { id: 69, class: g8rc_and_g8rc_nox0, preferred-register: '' }341  - { id: 70, class: g8rc, preferred-register: '' }342  - { id: 71, class: g8rc, preferred-register: '' }343  - { id: 72, class: g8rc, preferred-register: '' }344  - { id: 73, class: g8rc_and_g8rc_nox0, preferred-register: '' }345  - { id: 74, class: g8rc_and_g8rc_nox0, preferred-register: '' }346  - { id: 75, class: gprc_and_gprc_nor0, preferred-register: '' }347  - { id: 76, class: gprc, preferred-register: '' }348  - { id: 77, class: g8rc_and_g8rc_nox0, preferred-register: '' }349  - { id: 78, class: g8rc_and_g8rc_nox0, preferred-register: '' }350  - { id: 79, class: gprc, preferred-register: '' }351  - { id: 80, class: gprc_and_gprc_nor0, preferred-register: '' }352  - { id: 81, class: g8rc_and_g8rc_nox0, preferred-register: '' }353  - { id: 82, class: g8rc_and_g8rc_nox0, preferred-register: '' }354  - { id: 83, class: g8rc_and_g8rc_nox0, preferred-register: '' }355  - { id: 84, class: g8rc, preferred-register: '' }356  - { id: 85, class: g8rc, preferred-register: '' }357  - { id: 86, class: gprc_and_gprc_nor0, preferred-register: '' }358  - { id: 87, class: crrc, preferred-register: '' }359  - { id: 88, class: gprc, preferred-register: '' }360  - { id: 89, class: crrc, preferred-register: '' }361  - { id: 90, class: gprc_and_gprc_nor0, preferred-register: '' }362  - { id: 91, class: gprc_and_gprc_nor0, preferred-register: '' }363  - { id: 92, class: g8rc_and_g8rc_nox0, preferred-register: '' }364  - { id: 93, class: g8rc, preferred-register: '' }365  - { id: 94, class: crrc, preferred-register: '' }366  - { id: 95, class: gprc, preferred-register: '' }367  - { id: 96, class: gprc, preferred-register: '' }368  - { id: 97, class: crrc, preferred-register: '' }369  - { id: 98, class: g8rc_and_g8rc_nox0, preferred-register: '' }370  - { id: 99, class: g8rc, preferred-register: '' }371  - { id: 100, class: g8rc_and_g8rc_nox0, preferred-register: '' }372  - { id: 101, class: g8rc_and_g8rc_nox0, preferred-register: '' }373  - { id: 102, class: g8rc, preferred-register: '' }374  - { id: 103, class: g8rc, preferred-register: '' }375  - { id: 104, class: g8rc, preferred-register: '' }376  - { id: 105, class: g8rc, preferred-register: '' }377  - { id: 106, class: g8rc, preferred-register: '' }378  - { id: 107, class: g8rc_and_g8rc_nox0, preferred-register: '' }379  - { id: 108, class: g8rc, preferred-register: '' }380  - { id: 109, class: g8rc_and_g8rc_nox0, preferred-register: '' }381  - { id: 110, class: g8rc, preferred-register: '' }382  - { id: 111, class: g8rc_and_g8rc_nox0, preferred-register: '' }383  - { id: 112, class: crrc, preferred-register: '' }384  - { id: 113, class: g8rc_and_g8rc_nox0, preferred-register: '' }385  - { id: 114, class: crrc, preferred-register: '' }386  - { id: 115, class: gprc, preferred-register: '' }387  - { id: 116, class: gprc, preferred-register: '' }388  - { id: 117, class: gprc, preferred-register: '' }389  - { id: 118, class: gprc, preferred-register: '' }390  - { id: 119, class: gprc, preferred-register: '' }391  - { id: 120, class: gprc, preferred-register: '' }392  - { id: 121, class: gprc, preferred-register: '' }393  - { id: 122, class: gprc, preferred-register: '' }394  - { id: 123, class: gprc, preferred-register: '' }395  - { id: 124, class: gprc, preferred-register: '' }396  - { id: 125, class: crbitrc, preferred-register: '' }397  - { id: 126, class: crrc, preferred-register: '' }398  - { id: 127, class: g8rc, preferred-register: '' }399  - { id: 128, class: g8rc, preferred-register: '' }400  - { id: 129, class: g8rc, preferred-register: '' }401  - { id: 130, class: g8rc_and_g8rc_nox0, preferred-register: '' }402  - { id: 131, class: g8rc, preferred-register: '' }403  - { id: 132, class: g8rc_and_g8rc_nox0, preferred-register: '' }404  - { id: 133, class: crrc, preferred-register: '' }405  - { id: 134, class: g8rc_and_g8rc_nox0, preferred-register: '' }406  - { id: 135, class: g8rc, preferred-register: '' }407  - { id: 136, class: g8rc_and_g8rc_nox0, preferred-register: '' }408  - { id: 137, class: g8rc, preferred-register: '' }409  - { id: 138, class: g8rc_and_g8rc_nox0, preferred-register: '' }410  - { id: 139, class: g8rc, preferred-register: '' }411  - { id: 140, class: gprc, preferred-register: '' }412  - { id: 141, class: gprc, preferred-register: '' }413  - { id: 142, class: gprc, preferred-register: '' }414  - { id: 143, class: crbitrc, preferred-register: '' }415  - { id: 144, class: g8rc_and_g8rc_nox0, preferred-register: '' }416  - { id: 145, class: g8rc_and_g8rc_nox0, preferred-register: '' }417  - { id: 146, class: g8rc_and_g8rc_nox0, preferred-register: '' }418  - { id: 147, class: g8rc_and_g8rc_nox0, preferred-register: '' }419  - { id: 148, class: g8rc_and_g8rc_nox0, preferred-register: '' }420  - { id: 149, class: crrc, preferred-register: '' }421  - { id: 150, class: gprc_and_gprc_nor0, preferred-register: '' }422  - { id: 151, class: gprc_and_gprc_nor0, preferred-register: '' }423  - { id: 152, class: crrc, preferred-register: '' }424  - { id: 153, class: gprc, preferred-register: '' }425  - { id: 154, class: g8rc, preferred-register: '' }426  - { id: 155, class: g8rc_and_g8rc_nox0, preferred-register: '' }427  - { id: 156, class: g8rc, preferred-register: '' }428  - { id: 157, class: g8rc, preferred-register: '' }429  - { id: 158, class: g8rc, preferred-register: '' }430liveins:         []431frameInfo:432  isFrameAddressTaken: false433  isReturnAddressTaken: false434  hasStackMap:     false435  hasPatchPoint:   false436  stackSize:       0437  offsetAdjustment: 0438  maxAlignment:    8439  adjustsStack:    false440  hasCalls:        true441  stackProtector:  ''442  functionContext: ''443  maxCallFrameSize: 4294967295444  cvBytesOfCalleeSavedRegisters: 0445  hasOpaqueSPAdjustment: false446  hasVAStart:      false447  hasMustTailInVarArgFunc: false448  hasTailCall:     false449  localFrameSize:  0450  savePoint:       []451  restorePoint:    []452fixedStack:      []453stack:           []454entry_values:    []455callSites:       []456debugValueSubstitutions: []457constants:       []458machineFunctionInfo: {}459body:             |460  bb.0.entry:461    liveins: $x2, $x3, $x4462    successors: %bb.2(0x80000000)463  464    %64:g8rc_and_g8rc_nox0 = LDtoc @shortArray, $x2 :: (load (s64) from got)465    %65:g8rc = LI8 -1466    STH8 killed %65, 6, %64 :: (store (s16) into `ptr getelementptr inbounds ([8 x i16], ptr @shortArray, i64 0, i64 3)`, !tbaa !3)467    %66:g8rc_and_g8rc_nox0 = LDtoc @largeNumber, $x2 :: (load (s64) from got)468    %67:gprc_and_gprc_nor0 = LHA 6, killed %66 :: (dereferenceable load (s16) from @largeNumber + 6, basealign 8, !tbaa !7)469    %68:gprc = ADDI killed %67, -1705470    ADJCALLSTACKDOWN 112, 0, implicit-def dead $r1, implicit $r1471    %69:g8rc_and_g8rc_nox0 = LDtoc @_MergedGlobals, $x2 :: (load (s64) from got)472    %70:g8rc = nuw ADDI8 killed %69, 29473    %71:g8rc = EXTSW_32_64 killed %68474    $x3 = COPY %70475    $x4 = COPY %71476    BL8_NOP <mcsymbol .printf>, csr_ppc64_r2, implicit-def dead $lr8, implicit $rm, implicit $x3, implicit $x4, implicit-def $r1, implicit-def $x3477    ADJCALLSTACKUP 112, 0, implicit-def dead $r1, implicit $r1478    %73:g8rc_and_g8rc_nox0 = LDtoc @globalShortValue, $x2 :: (load (s64) from got)479    %0:gprc = LHZ 0, killed %73 :: (dereferenceable load (s16) from @globalShortValue, !tbaa !3)480    %74:g8rc_and_g8rc_nox0 = LDtoc @someIntValue, $x2 :: (load (s64) from got)481    %75:gprc_and_gprc_nor0 = LBZ 3, killed %74 :: (dereferenceable load (s8) from @someIntValue + 3, basealign 4, !tbaa !9)482    %76:gprc = ADDI killed %75, -19483    %1:gprc = EXTSB %76484    %77:g8rc_and_g8rc_nox0 = LDtoc @unitIncrement, $x2 :: (load (s64) from got)485    %2:gprc = LWZ 0, killed %77 :: (dereferenceable load (s32) from @unitIncrement)486    %78:g8rc_and_g8rc_nox0 = LDtoc @globalCharValue, $x2 :: (load (s64) from got)487    %79:gprc = LBZ 0, killed %78 :: (dereferenceable load (s8) from @globalCharValue)488    %80:gprc_and_gprc_nor0 = EXTSB killed %79489    %81:g8rc_and_g8rc_nox0 = LDtoc @computedResultShort, $x2 :: (load (s64) from got)490    %3:gprc = LHZ 0, %81 :: (dereferenceable load (s16) from @computedResultShort, !tbaa !3)491    %82:g8rc_and_g8rc_nox0 = LDtoc @resultArray, $x2 :: (load (s64) from got)492    %4:gprc = LHZ 0, %82 :: (dereferenceable load (s16) from @resultArray, !tbaa !3)493    %83:g8rc_and_g8rc_nox0 = LDtoc @computedResultChar, $x2 :: (load (s64) from got)494    %5:gprc = LBZ 0, %83 :: (dereferenceable load (s8) from @computedResultChar, !tbaa !11)495    %85:g8rc = IMPLICIT_DEF496    %84:g8rc = INSERT_SUBREG %85, %76, %subreg.sub_32497    %6:g8rc_and_g8rc_nox0 = EXTSB8 killed %84498    %7:gprc = LHZ 6, %64 :: (dereferenceable load (s16) from `ptr getelementptr inbounds ([8 x i16], ptr @shortArray, i64 0, i64 3)`, !tbaa !3)499    %86:gprc_and_gprc_nor0 = LHA 4, %64 :: (dereferenceable load (s16) from `ptr getelementptr inbounds ([8 x i16], ptr @shortArray, i64 0, i64 2)`)500    ; CHECK:       [[VIRREG162:%[0-9]+]]:g8rc = LHA8 6, %64501    ; CHECK-NEXT:  [[VIRREG150:%[0-9]+]]:gprc_and_gprc_nor0 = COPY killed [[VIRREG162]].sub_32502    %87:crrc = CMPW %80, %86503    %88:gprc = ISEL %80, %86, %87.sub_lt504    %89:crrc = CMPLWI killed %88, 0505    %91:gprc_and_gprc_nor0 = LI 1506    %8:gprc = ISEL $zero, %91, %89.sub_eq507    %92:g8rc_and_g8rc_nox0 = LDtoc @ullArray, $x2 :: (load (s64) from got)508    %93:g8rc = LD 24, killed %92 :: (dereferenceable load (s64) from `ptr getelementptr inbounds ([8 x i64], ptr @ullArray, i64 0, i64 3)`)509    %94:crrc = CMPLDI killed %93, 0510    $cr7 = COPY %94511    %95:gprc = MFOCRF $cr7512    %96:gprc = RLWINM killed %95, 31, 31, 31513    %9:gprc = XORI killed %96, 1514    %97:crrc = CMPDI %6, 4515    %98:g8rc_and_g8rc_nox0 = LI8 4516    %99:g8rc = ISEL8 %6, %98, %97.sub_gt517    %100:g8rc_and_g8rc_nox0 = SUBF8 %6, killed %99518    %10:g8rc = ADDI8 killed %100, 3519    %101:g8rc_and_g8rc_nox0 = RLDICL %10, 62, 2520    %11:g8rc = nuw nsw ADDI8 killed %101, 1521    %102:g8rc = RLDICL %11, 63, 1522    %12:g8rc_and_g8rc_nox0 = RLDICL killed %102, 1, 1523    %103:g8rc = RLDICR %11, 2, 60524    %13:g8rc = ADD8 killed %103, %6525    %104:g8rc = RLDICR %6, 2, 61526    %105:g8rc = RLDICR %6, 3, 60527    %106:g8rc = LDtoc @longArray, $x2 :: (load (s64) from got)528    %107:g8rc_and_g8rc_nox0 = ADD8 killed %105, %106529    %14:g8rc = ADDI8 killed %107, -64530    %108:g8rc = LDtoc @intArray, $x2 :: (load (s64) from got)531    %109:g8rc_and_g8rc_nox0 = ADD8 killed %104, %108532    %15:g8rc = ADDI8 killed %109, 64533    %110:g8rc = nsw ADDI8 %12, -2534    %111:g8rc_and_g8rc_nox0 = RLDICL %110, 63, 1535    %16:g8rc = nuw ADDI8 killed %111, 1536    %63:gprc = LI 8537    %112:crrc = CMPWI %1, 7538    %113:g8rc_and_g8rc_nox0 = LDtoc @computedResultUChar, $x2 :: (load (s64) from got)539    %114:crrc = CMPLDI %10, 4540    %118:gprc = LIS 0541    %116:gprc = ORI %118, 65535542    %126:crrc = CMPLD %11, %12543    B %bb.2544  545  bb.1.for.cond.cleanup15 (landing-pad):546    liveins: $x2547    %150:gprc_and_gprc_nor0 = EXTSH %7548    %151:gprc_and_gprc_nor0 = EXTSH %0549 550    ; CHECK:      [[VIRREG159:%[0-9]+]]:g8rc = IMPLICIT_DEF551    ; CHECK-NEXT: [[VIRREG160:%[0-9]+]]:g8rc = INSERT_SUBREG [[VIRREG159]], %0, %subreg.sub_32552    ; CHECK-NEXT: [[VIRREG161:%[0-9]+]]:g8rc = EXTSH8 killed [[VIRREG160]]553    ; CHECK-NEXT: %151:gprc_and_gprc_nor0 = COPY killed [[VIRREG161]].sub_32554 555    %152:crrc = CMPW %151, %150556    %153:gprc = ISEL %151, %150, %152.sub_lt557    %154:g8rc = EXTSW_32_64 killed %153558    ; CHECK:      [[VIRREG165:%[0-9]+]]:g8rc = IMPLICIT_DEF559    ; CHECK-NEXT: [[VIRREG166:%[0-9]+]]:g8rc = INSERT_SUBREG [[VIRREG165]], [[VIRREG150]], %subreg.sub_32560    ; CHECK-NEXT: [[VIRREG167:%[0-9]+]]:g8rc = ISEL8 killed %164, killed [[VIRREG166]], %152.sub_lt561    ; CHECK-NEXT: %{{[0-9]+}}:gprc = COPY killed [[VIRREG167]].sub_32562    ; CHECK-NOT:  EXTSW_32_64563    %155:g8rc_and_g8rc_nox0 = LDtoc @computedResultUll, $x2 :: (load (s64) from got)564    STD %154, 0, killed %155 :: (store (s64) into @computedResultUll, !tbaa !7)565    ADJCALLSTACKDOWN 112, 0, implicit-def dead $r1, implicit $r1566    %156:g8rc = LDtoc @_MergedGlobals, $x2 :: (load (s64) from got)567    $x3 = COPY %156568    $x4 = COPY %154569    BL8_NOP <mcsymbol .printf>, csr_ppc64, implicit-def dead $lr8, implicit $rm, implicit $x3, implicit $x4, implicit $x2, implicit-def $r1, implicit-def $x3570    ADJCALLSTACKUP 112, 0, implicit-def dead $r1, implicit $r1571    %158:g8rc = LI8 0572    $x3 = COPY %158573    BLR8 implicit $lr8, implicit $rm, implicit $x3574  575  bb.2.for.body16:576    successors: %bb.3(0x40000000), %bb.9(0x40000000)577  578    %17:gprc_and_gprc_nor0 = PHI %63, %bb.0, %52, %bb.9579    %18:gprc = PHI %3, %bb.0, %51, %bb.9580    %19:gprc = PHI %4, %bb.0, %50, %bb.9581    %20:gprc = PHI %5, %bb.0, %49, %bb.9582    BCC 44, %112, %bb.9583    B %bb.3584  585  bb.3.for.body31.lr.ph:586    successors: %bb.7(0x40000000), %bb.4(0x40000000)587  588    STB %8, 0, %113 :: (store (s8) into @computedResultUChar, !tbaa !11)589    BCC 12, %114, %bb.7590    B %bb.4591  592  bb.4.vector.body.preheader:593    successors: %bb.5(0x80000000)594  595    MTCTR8loop %16, implicit-def dead $ctr8596    %117:gprc = LI 0597    %115:gprc = COPY %117598  599  bb.5.vector.body:600    successors: %bb.5(0x7c000000), %bb.6(0x04000000)601  602    %21:gprc = PHI %18, %bb.4, %31, %bb.5603    %22:gprc = PHI %115, %bb.4, %32, %bb.5604    %23:gprc = PHI %19, %bb.4, %33, %bb.5605    %24:gprc = PHI %116, %bb.4, %34, %bb.5606    %25:gprc = PHI %20, %bb.4, %35, %bb.5607    %26:gprc = PHI %117, %bb.4, %36, %bb.5608    %27:g8rc_and_g8rc_nox0 = PHI %14, %bb.4, %30, %bb.5609    %28:g8rc_and_g8rc_nox0 = PHI %15, %bb.4, %29, %bb.5610    %29:g8rc = ADDI8 %28, 32611    %30:g8rc = ADDI8 %27, 64612    %119:gprc = LHZ 70, %27 :: (load (s16) from %ir.31 + 6, basealign 8, !tbaa !7)613    %120:gprc = LHZ 102, %27 :: (load (s16) from %ir.32 + 6, basealign 8, !tbaa !7)614    %121:gprc = LBZ 35, %28 :: (load (s8) from %ir.29 + 3, basealign 4, !tbaa !9)615    %122:gprc = LBZ 51, %28 :: (load (s8) from %ir.30 + 3, basealign 4, !tbaa !9)616    %123:gprc = MULLI killed %121, -6617    %124:gprc = MULLI killed %122, -6618    %31:gprc = SUBF %2, %21619    %32:gprc = SUBF %2, %22620    %33:gprc = AND %23, killed %119621    %34:gprc = AND %24, killed %120622    %35:gprc = ADD4 killed %123, %25623    %36:gprc = ADD4 killed %124, %26624    BDNZ8 %bb.5, implicit-def $ctr8, implicit $ctr8625    B %bb.6626  627  bb.6.middle.block:628    successors: %bb.8(0x40000000), %bb.7(0x40000000)629  630    %37:gprc = ADD4 %32, %31631    %38:gprc = AND %34, %33632    %39:gprc = ADD4 %36, %35633    BCC 76, %126, %bb.8634    B %bb.7635  636  bb.7.for.body31.preheader:637    successors: %bb.10(0x80000000)638  639    %40:g8rc_and_g8rc_nox0 = PHI %6, %bb.3, %13, %bb.6640    %41:gprc = PHI %18, %bb.3, %37, %bb.6641    %42:gprc = PHI %19, %bb.3, %38, %bb.6642    %43:gprc = PHI %20, %bb.3, %39, %bb.6643    %127:g8rc = RLDICR %40, 2, 61644    %128:g8rc = RLDICR %40, 3, 60645    %130:g8rc_and_g8rc_nox0 = ADD8 %106, killed %128646    %44:g8rc = ADDI8 killed %130, -32647    %132:g8rc_and_g8rc_nox0 = ADD8 %108, killed %127648    %45:g8rc = ADDI8 killed %132, 80649    %133:crrc = CMPDI %40, 4650    %135:g8rc = ISEL8 %40, %98, %133.sub_gt651    %136:g8rc_and_g8rc_nox0 = SUBF8 %40, killed %135652    %137:g8rc = ADDI8 killed %136, 3653    %138:g8rc_and_g8rc_nox0 = RLDICL %137, 62, 2654    %139:g8rc = nuw nsw ADDI8 killed %138, 1655    MTCTR8loop killed %139, implicit-def dead $ctr8656    B %bb.10657  658  bb.8.for.cond21.for.cond.cleanup25_crit_edge (landing-pad):659    successors: %bb.9(0x80000000)660    liveins: $x2661 662    %46:gprc = PHI %37, %bb.6, %60, %bb.10663    %47:gprc = PHI %38, %bb.6, %61, %bb.10664    %48:gprc = PHI %39, %bb.6, %62, %bb.10665    STH %46, 0, %81 :: (store (s16) into @computedResultShort, !tbaa !3)666    %145:g8rc_and_g8rc_nox0 = LDtoc @charArray, $x2 :: (load (s64) from got)667    STB %0, 131, killed %145 :: (store (s8) into `ptr getelementptr inbounds ([8 x [8 x [8 x i8]]], ptr @charArray, i64 0, i64 2, i64 0, i64 3)`, !tbaa !11)668    STH %47, 0, %82 :: (store (s16) into @resultArray, !tbaa !3)669    %147:g8rc_and_g8rc_nox0 = LDtoc @computedResultBool, $x2 :: (load (s64) from got)670    STB %9, 0, killed %147 :: (store (s8) into @computedResultBool, !tbaa !16)671    STB %48, 0, %83 :: (store (s8) into @computedResultChar, !tbaa !11)672  673  bb.9.for.cond.cleanup25:674    successors: %bb.1(0x04000000), %bb.2(0x7c000000)675  676    %49:gprc = PHI %20, %bb.2, %48, %bb.8677    %50:gprc = PHI %19, %bb.2, %47, %bb.8678    %51:gprc = PHI %18, %bb.2, %46, %bb.8679    %52:gprc = nsw ADDI %17, -1680    %149:crrc = CMPLWI %52, 0681    BCC 76, killed %149, %bb.1682    B %bb.2683  684  bb.10.for.body31:685    successors: %bb.10(0x7c000000), %bb.8(0x04000000)686  687    %53:gprc = PHI %41, %bb.7, %60, %bb.10688    %54:gprc = PHI %42, %bb.7, %61, %bb.10689    %55:gprc = PHI %43, %bb.7, %62, %bb.10690    %56:g8rc_and_g8rc_nox0 = PHI %44, %bb.7, %59, %bb.10691    %57:g8rc_and_g8rc_nox0 = PHI %45, %bb.7, %58, %bb.10692    %58:g8rc = ADDI8 %57, 16693    %59:g8rc = ADDI8 %56, 32694    %140:gprc = LHZ 38, %56 :: (load (s16) from %ir.62 + 6, basealign 8, !tbaa !7)695    %141:gprc = LBZ 19, %57 :: (load (s8) from %ir.61 + 3, basealign 4, !tbaa !9)696    %142:gprc = MULLI killed %141, -6697    %60:gprc = SUBF %2, %53698    %61:gprc = AND %54, killed %140699    %62:gprc = ADD4 killed %142, %55700    BDNZ8 %bb.10, implicit-def $ctr8, implicit $ctr8701    B %bb.8702 703...704 705 706