brintos

brintos / llvm-project-archived public Read only

0
0
Text · 11.2 KiB · 17060a8 Raw
298 lines · plain
1# RUN: llc -mtriple=powerpc64le-unknown-linux-gnu -mcpu=pwr9 %s -o - \2# RUN:   -run-pass=livevars,phi-node-elimination | FileCheck %s3# RUN: llc -mtriple=powerpc64le-unknown-linux-gnu -mcpu=pwr9 %s -o - \4# RUN:   --passes='require<live-vars>,phi-node-elimination' | FileCheck %s5 6--- |7  define void @phi_eliminate(i32 %0, i32 %1, ptr %2) {8    %scevgep3 = getelementptr i8, ptr %2, i64 undef9    call void @llvm.set.loop.iterations.i64(i64 undef)10    br label %411 12  4:                                                ; preds = %4, %313    %5 = phi i32 [ %8, %4 ], [ %0, %3 ]14    %6 = phi ptr [ %scevgep3, %3 ], [ %7, %4 ]15    %7 = getelementptr i8, ptr %6, i64 -116    %8 = sdiv i32 %5, %117    %9 = mul nsw i32 %8, %118    %10 = sub nsw i32 %5, %919    %11 = icmp ult i32 %10, 1020    %12 = trunc i32 %10 to i821    %13 = select i1 %11, i8 48, i8 5522    %14 = add i8 %13, %1223    store i8 %14, ptr %7, align 124    %15 = call i1 @llvm.loop.decrement.i64(i64 1)25    br i1 %15, label %4, label %1626 27  16:                                               ; preds = %428    ret void29  }30 31  declare void @llvm.set.loop.iterations.i64(i64)32 33  declare i1 @llvm.loop.decrement.i64(i64)34 35  declare void @llvm.stackprotector(ptr, ptr)36...37---38name:            phi_eliminate39alignment:       1640exposesReturnsTwice: false41legalized:       false42regBankSelected: false43selected:        false44failedISel:      false45tracksRegLiveness: true46hasWinCFI:       false47registers:48  - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }49  - { id: 1, class: gprc, preferred-register: '' }50  - { id: 2, class: g8rc_and_g8rc_nox0, preferred-register: '' }51  - { id: 3, class: g8rc, preferred-register: '' }52  - { id: 4, class: gprc, preferred-register: '' }53  - { id: 5, class: g8rc, preferred-register: '' }54  - { id: 6, class: g8rc, preferred-register: '' }55  - { id: 7, class: g8rc, preferred-register: '' }56  - { id: 8, class: gprc, preferred-register: '' }57  - { id: 9, class: gprc, preferred-register: '' }58  - { id: 10, class: g8rc, preferred-register: '' }59  - { id: 11, class: gprc, preferred-register: '' }60  - { id: 12, class: gprc, preferred-register: '' }61  - { id: 13, class: crrc, preferred-register: '' }62  - { id: 14, class: gprc_and_gprc_nor0, preferred-register: '' }63  - { id: 15, class: gprc_and_gprc_nor0, preferred-register: '' }64  - { id: 16, class: gprc, preferred-register: '' }65  - { id: 17, class: gprc, preferred-register: '' }66  - { id: 18, class: g8rc_and_g8rc_nox0, preferred-register: '' }67  - { id: 19, class: gprc, preferred-register: '' }68  - { id: 20, class: gprc, preferred-register: '' }69  - { id: 21, class: gprc, preferred-register: '' }70  - { id: 22, class: crrc, preferred-register: '' }71  - { id: 23, class: gprc, preferred-register: '' }72  - { id: 24, class: gprc, preferred-register: '' }73  - { id: 25, class: g8rc_and_g8rc_nox0, preferred-register: '' }74  - { id: 26, class: gprc, preferred-register: '' }75  - { id: 27, class: g8rc_and_g8rc_nox0, preferred-register: '' }76  - { id: 28, class: gprc, preferred-register: '' }77  - { id: 29, class: gprc, preferred-register: '' }78  - { id: 30, class: gprc, preferred-register: '' }79  - { id: 31, class: crrc, preferred-register: '' }80  - { id: 32, class: gprc, preferred-register: '' }81  - { id: 33, class: gprc, preferred-register: '' }82  - { id: 34, class: g8rc_and_g8rc_nox0, preferred-register: '' }83  - { id: 35, class: gprc, preferred-register: '' }84  - { id: 36, class: gprc, preferred-register: '' }85  - { id: 37, class: gprc, preferred-register: '' }86  - { id: 38, class: g8rc_and_g8rc_nox0, preferred-register: '' }87  - { id: 39, class: g8rc, preferred-register: '' }88  - { id: 40, class: gprc, preferred-register: '' }89  - { id: 41, class: gprc, preferred-register: '' }90  - { id: 42, class: g8rc_and_g8rc_nox0, preferred-register: '' }91  - { id: 43, class: gprc, preferred-register: '' }92  - { id: 44, class: g8rc_and_g8rc_nox0, preferred-register: '' }93  - { id: 45, class: gprc, preferred-register: '' }94  - { id: 46, class: gprc, preferred-register: '' }95  - { id: 47, class: crrc, preferred-register: '' }96  - { id: 48, class: gprc, preferred-register: '' }97  - { id: 49, class: gprc, preferred-register: '' }98  - { id: 50, class: g8rc_and_g8rc_nox0, preferred-register: '' }99  - { id: 51, class: g8rc, preferred-register: '' }100  - { id: 52, class: gprc, preferred-register: '' }101  - { id: 53, class: gprc, preferred-register: '' }102  - { id: 54, class: g8rc_and_g8rc_nox0, preferred-register: '' }103  - { id: 55, class: gprc, preferred-register: '' }104  - { id: 56, class: gprc, preferred-register: '' }105liveins:106  - { reg: '$x3', virtual-reg: '%5' }107  - { reg: '$x4', virtual-reg: '%6' }108frameInfo:109  isFrameAddressTaken: false110  isReturnAddressTaken: false111  hasStackMap:     false112  hasPatchPoint:   false113  stackSize:       0114  offsetAdjustment: 0115  maxAlignment:    1116  adjustsStack:    false117  hasCalls:        false118  stackProtector:  ''119  maxCallFrameSize: 4294967295120  cvBytesOfCalleeSavedRegisters: 0121  hasOpaqueSPAdjustment: false122  hasVAStart:      false123  hasMustTailInVarArgFunc: false124  localFrameSize:  0125  savePoint:       []126  restorePoint:    []127fixedStack:      []128stack:           []129callSites:       []130constants:       []131machineFunctionInfo: {}132body:             |133  ; CHECK-LABEL: name: phi_eliminate134  ; CHECK: bb.0 (%ir-block.3):135  ; CHECK:   successors: %bb.1(0x80000000)136  ; CHECK:   liveins: $x3, $x4137  ; CHECK:   %6:g8rc = COPY killed $x4138  ; CHECK:   %5:g8rc = COPY killed $x3139  ; CHECK:   %9:gprc = COPY killed %6.sub_32140  ; CHECK:   %8:gprc = COPY killed %5.sub_32141  ; CHECK:   MTCTR8loop undef %10:g8rc, implicit-def dead $ctr8142  ; CHECK:   %14:gprc_and_gprc_nor0 = LI 55143  ; CHECK:   %15:gprc_and_gprc_nor0 = LI 48144 145  ; CHECK: bb.1 (%ir-block.4):146  ; CHECK:   successors: %bb.2(0x40000000), %bb.7(0x40000000)147  ; CHECK:   %19:gprc = DIVW %8, %9148  ; CHECK:   BDNZ8 %bb.2, implicit-def $ctr8, implicit $ctr8149 150  ; CHECK: bb.7:151  ; CHECK:   successors: %bb.5(0x80000000)152  ; CHECK:   %61:gprc = COPY killed %8153  ; CHECK:   %62:g8rc_and_g8rc_nox0 = IMPLICIT_DEF154  ; CHECK:   %63:gprc = COPY killed %19155  ; CHECK:   B %bb.5156 157  ; CHECK: bb.2 (%ir-block.4):158  ; CHECK:   successors: %bb.3(0x40000000), %bb.4(0x40000000)159  ; CHECK:   %20:gprc = nsw MULLW %19, %9160  ; CHECK:   %21:gprc = SUBF killed %20, killed %8161  ; CHECK:   %22:crrc = CMPLWI %21, 10162  ; CHECK:   %23:gprc = ISEL %15, %14, killed %22.sub_lt163  ; CHECK:   %24:gprc = ADD4 killed %23, killed %21164  ; CHECK:   %25:g8rc_and_g8rc_nox0 = STBU killed %24, -1, undef %0:g8rc_and_g8rc_nox0 :: (store (s8) into %ir.7)165  ; CHECK:   %26:gprc = DIVW %19, %9166  ; CHECK:   %57:gprc = COPY killed %26167  ; CHECK:   %58:gprc = COPY %19168  ; CHECK:   %59:g8rc_and_g8rc_nox0 = COPY killed %25169  ; CHECK:   %60:gprc = COPY killed %19170  ; CHECK:   BDZ8 %bb.4, implicit-def $ctr8, implicit $ctr8171  ; CHECK:   B %bb.3172 173  ; CHECK: bb.3 (%ir-block.4):174  ; CHECK:   successors: %bb.3(0x7c000000), %bb.4(0x04000000)175  ; CHECK:   %38:g8rc_and_g8rc_nox0 = COPY killed %59176  ; CHECK:   %37:gprc = COPY %57177  ; CHECK:   %36:gprc = COPY killed %58178  ; CHECK:   %35:gprc = COPY killed %57179  ; CHECK:   %27:g8rc_and_g8rc_nox0 = COPY killed %38180  ; CHECK:   %56:gprc = COPY %35181  ; CHECK:   %28:gprc = DIVW %56, %9182  ; CHECK:   %29:gprc = nsw MULLW killed %37, %9183  ; CHECK:   %30:gprc = SUBF killed %29, killed %36184  ; CHECK:   %31:crrc = CMPLWI %30, 10185  ; CHECK:   %32:gprc = ISEL %15, %14, killed %31.sub_lt186  ; CHECK:   %33:gprc = ADD4 killed %32, killed %30187  ; CHECK:   %34:g8rc_and_g8rc_nox0 = STBU killed %33, -1, killed %27 :: (store unknown-size into %ir.7, align 1)188  ; CHECK:   %57:gprc = COPY killed %28189  ; CHECK:   %58:gprc = COPY killed %35190  ; CHECK:   %59:g8rc_and_g8rc_nox0 = COPY killed %34191  ; CHECK:   %60:gprc = COPY killed %56192  ; CHECK:   BDNZ8 %bb.3, implicit-def $ctr8, implicit $ctr8193  ; CHECK:   B %bb.4194 195  ; CHECK: bb.4:196  ; CHECK:   successors: %bb.5(0x80000000)197  ; CHECK:   %44:g8rc_and_g8rc_nox0 = COPY killed %59198  ; CHECK:   %43:gprc = COPY killed %57199  ; CHECK:   %41:gprc = COPY killed %60200  ; CHECK:   %39:g8rc = COPY killed %44201  ; CHECK:   %61:gprc = COPY killed %41202  ; CHECK:   %62:g8rc_and_g8rc_nox0 = COPY killed %39203  ; CHECK:   %63:gprc = COPY killed %43204 205  ; CHECK: bb.5:206  ; CHECK:   successors: %bb.6(0x80000000)207  ; CHECK:   %55:gprc = COPY killed %63208  ; CHECK:   %54:g8rc_and_g8rc_nox0 = COPY killed %62209  ; CHECK:   %53:gprc = COPY killed %61210  ; CHECK:   %45:gprc = nsw MULLW killed %55, killed %9211  ; CHECK:   %46:gprc = SUBF killed %45, killed %53212  ; CHECK:   %47:crrc = CMPLWI %46, 10213  ; CHECK:   %48:gprc = ISEL killed %15, killed %14, killed %47.sub_lt214  ; CHECK:   %49:gprc = ADD4 killed %48, killed %46215  ; CHECK:   dead %50:g8rc_and_g8rc_nox0 = STBU killed %49, -1, killed %54 :: (store unknown-size into %ir.7, align 1)216  ; CHECK:   B %bb.6217 218  ; CHECK: bb.6 (%ir-block.16):219  ; CHECK:   BLR8 implicit $lr8, implicit $rm220 221  bb.0 (%ir-block.3):222    successors: %bb.1(0x80000000)223    liveins: $x3, $x4224 225    %6:g8rc = COPY killed $x4226    %5:g8rc = COPY killed $x3227    %9:gprc = COPY killed %6.sub_32228    %8:gprc = COPY killed %5.sub_32229    MTCTR8loop undef %10:g8rc, implicit-def dead $ctr8230    %14:gprc_and_gprc_nor0 = LI 55231    %15:gprc_and_gprc_nor0 = LI 48232 233  bb.1 (%ir-block.4):234    successors: %bb.2(0x40000000), %bb.5(0x40000000)235 236    %19:gprc = DIVW %8, %9237    BDZ8 %bb.5, implicit-def $ctr8, implicit $ctr8238    B %bb.2239 240  bb.2 (%ir-block.4):241    successors: %bb.3(0x40000000), %bb.4(0x40000000)242 243    %20:gprc = nsw MULLW %19, %9244    %21:gprc = SUBF killed %20, killed %8245    %22:crrc = CMPLWI %21, 10246    %23:gprc = ISEL %15, %14, killed %22.sub_lt247    %24:gprc = ADD4 killed %23, killed %21248    %25:g8rc_and_g8rc_nox0 = STBU killed %24, -1, undef %0:g8rc_and_g8rc_nox0 :: (store (s8) into %ir.7)249    %26:gprc = DIVW %19, %9250    BDZ8 %bb.4, implicit-def $ctr8, implicit $ctr8251    B %bb.3252 253  bb.3 (%ir-block.4):254    successors: %bb.3(0x7c000000), %bb.4(0x04000000)255 256    %35:gprc = PHI %26, %bb.2, %28, %bb.3257    %36:gprc = PHI %19, %bb.2, %35, %bb.3258    %37:gprc = PHI %26, %bb.2, %28, %bb.3259    %38:g8rc_and_g8rc_nox0 = PHI %25, %bb.2, %34, %bb.3260    %27:g8rc_and_g8rc_nox0 = COPY killed %38261    %56:gprc = COPY %35262    %28:gprc = DIVW %56, %9263    %29:gprc = nsw MULLW killed %37, %9264    %30:gprc = SUBF killed %29, killed %36265    %31:crrc = CMPLWI %30, 10266    %32:gprc = ISEL %15, %14, killed %31.sub_lt267    %33:gprc = ADD4 killed %32, killed %30268    %34:g8rc_and_g8rc_nox0 = STBU killed %33, -1, killed %27 :: (store unknown-size into %ir.7, align 1)269    BDNZ8 %bb.3, implicit-def $ctr8, implicit $ctr8270    B %bb.4271 272  bb.4:273    successors: %bb.5(0x80000000)274 275    %41:gprc = PHI %19, %bb.2, %56, %bb.3276    %43:gprc = PHI %26, %bb.2, %28, %bb.3277    %44:g8rc_and_g8rc_nox0 = PHI %25, %bb.2, %34, %bb.3278    %39:g8rc = COPY killed %44279 280  bb.5:281    successors: %bb.6(0x80000000)282 283    %53:gprc = PHI %8, %bb.1, %41, %bb.4284    %54:g8rc_and_g8rc_nox0 = PHI undef %0:g8rc_and_g8rc_nox0, %bb.1, %39, %bb.4285    %55:gprc = PHI %19, %bb.1, %43, %bb.4286    %45:gprc = nsw MULLW killed %55, killed %9287    %46:gprc = SUBF killed %45, killed %53288    %47:crrc = CMPLWI %46, 10289    %48:gprc = ISEL killed %15, killed %14, killed %47.sub_lt290    %49:gprc = ADD4 killed %48, killed %46291    dead %50:g8rc_and_g8rc_nox0 = STBU killed %49, -1, killed %54 :: (store unknown-size into %ir.7, align 1)292    B %bb.6293 294  bb.6 (%ir-block.16):295    BLR8 implicit $lr8, implicit $rm296 297...298