brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.0 KiB · 34de071 Raw
184 lines · plain
1# RUN: llc -mtriple=powerpc64le--linux-gnu -stop-after ppc-pre-emit-peephole %s -o - -verify-machineinstrs | FileCheck %s2 3---4# LI + XFORM -> DFORM, no killed/dead flag fixup.5name: testKillPassUpLI16#CHECK: name: testKillPassUpLI17tracksRegLiveness: true8body: |9  bb.0.entry:10    liveins: $x3, $f1, $x511    $x3 = LI8 10012    STFSX killed $f1, $x3, $x513    ; CHECK: STFS killed $f1, 100, $x514    STD killed $x3, killed $x5, 10015    ; CHECK: STD killed $x3, killed $x5, 10016    BLR8 implicit $lr8, implicit $rm17 18...19---20# LI + XFORM -> DFORM, fixup killed/dead flag for $x3, find no use, set def as21# dead(LI8 is deleted).22name: testKillPassUpLI223# CHECK: name: testKillPassUpLI224tracksRegLiveness: true25body: |26  bb.0.entry:27    liveins: $x3, $f1, $x528    $x3 = LI8 10029    ; CHECK-NOT: LI830    STFSX killed $f1, killed $x3, killed $x531    ; CHECK: STFS killed $f1, 100, killed $x532    BLR8 implicit $lr8, implicit $rm33 34...35---36# LI + XFORM -> DFORM, fixup killed/dead flag for $x3, find last use, set last37# use as killed.38name: testKillPassUpLI339# CHECK: name: testKillPassUpLI340tracksRegLiveness: true41body: |42  bb.0.entry:43    liveins: $x3, $f1, $x544    $x3 = LI8 10045    STD $x3, $x5, 10046    ; CHECK: STD killed $x3, $x5, 10047    STFSX killed $f1, killed $x3, $x548    ; CHECK: STFS killed $f1, 100, $x549    STD killed $x5, $x5, 10050    ; CHECK: STD killed $x5, killed $x5, 10051    BLR8 implicit $lr8, implicit $rm52 53...54---55# LI + OP -> LI, fixup killed/dead flag for $x3, find last use, set last use as56# killed.57name: testKillPassUpLI458# CHECK: name: testKillPassUpLI459tracksRegLiveness: true60body: |61  bb.0.entry:62    liveins: $x3, $x563    $x3 = LI8 10064    STD $x3, $x5, 10065    ; CHECK: STD killed $x3, killed $x5, 10066    $x5 = ADDI8 killed $x3, 20067    ; CHECK: $x5 = LI8 30068    STD $x5, $x5, 10069    BLR8 implicit $lr8, implicit $rm70 71...72---73# ADD + XFORM -> DFORM, fixup killed/dead flag for $x3, find no use, set def as dead74# (ADDI8 is deleted).75name: testKillPassUpADD176# CHECK: name: testKillPassUpADD177tracksRegLiveness: true78body: |79  bb.0.entry:80    liveins: $x3, $f1, $x581    $x3 = ADDI8 killed $x5, 10082    ; CHECK-NOT: ADDI883    STFSX killed $f1, $zero8, killed $x384    ; CHECK: STFS killed $f1, 100, killed $x585    BLR8 implicit $lr8, implicit $rm86 87...88---89# ADD + XFORM -> DFORM, fixup killed/dead flag for $x3, find last use, set last90# use as killed.91name: testKillPassUpADD292# CHECK: name: testKillPassUpADD293tracksRegLiveness: true94body: |95  bb.0.entry:96    liveins: $x3, $f1, $x597    $x3 = ADDI8 $x5, 10098    STD $x3, $x5, 10099    ; CHECK: STD killed $x3, $x5, 100100    STFSX killed $f1, $zero8, killed $x3101    ; CHECK: STFS killed $f1, 100, $x5102    STD killed $x5, $x5, 100103    ; CHECK: STD killed $x5, killed $x5, 100104    BLR8 implicit $lr8, implicit $rm105 106...107---108# ADD + XFORM -> DFORM, fixup killed/dead flag for register $x5, DFORM109# instruction uses $x5 and no other kill uses, set it as killed in110# DFORM instruction.111name: testKillPassDownADD1112# CHECK: name: testKillPassDownADD1113tracksRegLiveness: true114body: |115  bb.0.entry:116    liveins: $x3, $f1, $x5117    $x3 = ADDI8 killed $x5, 100118    ; CHECK: $x3 = ADDI8 $x5, 100119    STFSX killed $f1, $zero8, $x3120    ; CHECK: STFS killed $f1, 100, killed $x5121    STD killed $x3, $x3, 100122    ; CHECK: STD killed $x3, killed $x3, 100123    BLR8 implicit $lr8, implicit $rm124 125...126---127# ADD + XFORM -> DFORM, fixup killed/dead flag for register $x5, DFORM128# instruction uses $x5 and there is one kill use, set $x5 as killed in129# DFORM instruction and clear the other kill use killed flag.130name: testKillPassDownADD2131# CHECK: name: testKillPassDownADD2132tracksRegLiveness: true133body: |134  bb.0.entry:135    liveins: $x3, $f1, $x5136    $x3 = ADDI8 $x5, 100137    STD killed $x5, $x5, 100138    ; CHECK: STD $x5, $x5, 100139    STFSX killed $f1, $zero8, killed $x3140    ; CHECK: STFS killed $f1, 100, killed $x5141    BLR8 implicit $lr8, implicit $rm142 143...144---145# ADD + XFORM -> DFORM, fixup killed/dead flag for register $x3, DFORM146# instruction defines $x3, do nothing for killed/dead flag.147name: testKillPassDownADD3148# CHECK: name: testKillPassDownADD3149tracksRegLiveness: true150body: |151  bb.0.entry:152    liveins: $x3, $x5153    $x3 = ADDI8 $x5, 100154    $x3 = LDX $zero8, killed $x3155    ; CHECK: $x3 = LD 100, $x5156    STD killed $x5, $x5, 100157    ; CHECK: STD killed $x5, killed $x5, 100158    STD killed $x3, $x3, 200159    ; CHECK: STD killed $x3, killed $x3, 200160    BLR8 implicit $lr8, implicit $rm161 162...163---164# ADD + XFORM -> DFORM, fixup killed/dead flag for both register $x5 and $x3,165# DFORM instruction uses $x5 and there is one kill use, set $x5 as killed in166# DFORM instruction and clear the other kill use killed flag. Find last use for167# $x3, set last use as killed.168name: testKillPassDownADD4169# CHECK: name: testKillPassDownADD4170tracksRegLiveness: true171body: |172  bb.0.entry:173    liveins: $x3, $f1, $x5174    $x3 = ADDI8 $x5, 100175    STD killed $x5, $x5, 100176    ; CHECK: STD $x5, $x5, 100177    STD $x3, $x3, 200178    ; CHECK: STD killed $x3, killed $x3, 200179    STFSX killed $f1, $zero8, killed $x3180    ; CHECK: STFS killed $f1, 100, killed $x5181    BLR8 implicit $lr8, implicit $rm182 183...184