brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.7 KiB · 9c94615 Raw
169 lines · plain
1# RUN: llc -mtriple=powerpc64le--linux-gnu -stop-after ppc-pre-emit-peephole %s -o - -verify-machineinstrs | FileCheck %s2 3# ADDI instr: ToBeChangedReg = ADDI FrameBaseReg, OffsetAddi4# ADD instr:  ToBeDeletedReg = ADD ToBeChangedReg(killed), ScaleReg5# Imm instr:  Reg            = op OffsetImm, ToBeDeletedReg(killed)6# 7# can be folded to:8#9# new ADDI instr: ToBeChangedReg = ADDI FrameBaseReg, (OffsetAddi + OffsetImm)10# Index instr:    Reg            = opx ScaleReg, ToBeChangedReg(killed)11 12---13name: testIndexForm114#CHECK: name: testIndexForm115# ToBeDeletedReg equals to ScaleReg16tracksRegLiveness: true17body: |18  bb.0.entry:19    liveins: $x3, $x1, $x4, $x620    $x3 = ADDI8 $x1, -8021    ; CHECK: $x3 = ADDI8 $x1, -7622    $x4 = ADD8 killed $x3, killed $x423    ; CHECK-NOT: ADD824    $x6 = LD 4, killed $x425    ; CHECK: $x6 = LDX killed $x4, killed $x326    BLR8 implicit $lr8, implicit $rm27...28---29name: testIndexForm230#CHECK: name: testIndexForm231# ToBeDeletedReg equals to ToBeChangedReg32tracksRegLiveness: true33body: |34  bb.0.entry:35    liveins: $x3, $x1, $x4, $x636    $x3 = ADDI8 $x1, -8037    ; CHECK: $x3 = ADDI8 $x1, -7638    $x3 = ADD8 killed $x3, killed $x439    ; CHECK-NOT: ADD840    $x6 = LD 4, killed $x341    ; CHECK: $x6 = LDX killed $x4, killed $x342    BLR8 implicit $lr8, implicit $rm43...44---45name: testIndexForm346#CHECK: name: testIndexForm347# There is other use for ToBeDeletedReg between ADD instr and Imm instr48tracksRegLiveness: true49body: |50  bb.0.entry:51    liveins: $x3, $x1, $x4, $x652    $x3 = ADDI8 $x1, -8053    ; CHECK: $x3 = ADDI8 $x1, -8054    $x3 = ADD8 killed $x3, killed $x455    ; CHECK: $x3 = ADD8 killed $x3, killed $x456    STD $x3, killed $x6, 10057    ; CHECK: STD $x3, killed $x6, 10058    $x6 = LD 4, killed $x359    ; CHECK: $x6 = LD 4, killed $x360    BLR8 implicit $lr8, implicit $rm61...62---63name: testIndexForm464#CHECK: name: testIndexForm465# There is other use for ToBeChangedReg between ADDI instr and ADD instr66tracksRegLiveness: true67body: |68  bb.0.entry:69    liveins: $x3, $x1, $x4, $x670    $x3 = ADDI8 $x1, -8071    ; CHECK: $x3 = ADDI8 $x1, -8072    STD $x3, killed $x6, 10073    ; CHECK: STD $x3, killed $x6, 10074    $x3 = ADD8 killed $x3, killed $x475    ; CHECK: $x3 = ADD8 killed $x3, killed $x476    $x6 = LD 4, killed $x377    ; CHECK: $x6 = LD 4, killed $x378    BLR8 implicit $lr8, implicit $rm79...80---81name: testIndexForm582#CHECK: name: testIndexForm583# ToBeChangedReg has no killed flag84tracksRegLiveness: true85body: |86  bb.0.entry:87    liveins: $x3, $x1, $x4, $x688    $x3 = ADDI8 $x1, -8089    ; CHECK: $x3 = ADDI8 $x1, -8090    $x4 = ADD8 $x3, killed $x491    ; CHECK: $x4 = ADD8 $x3, killed $x492    STD killed $x3, killed $x6, 10093    ; CHECK: STD killed $x3, killed $x6, 10094    $x6 = LD 4, killed $x495    ; CHECK: $x6 = LD 4, killed $x496    BLR8 implicit $lr8, implicit $rm97...98---99name: testIndexForm6100#CHECK: name: testIndexForm6101# ToBeDeletedReg has no killed flag102tracksRegLiveness: true103body: |104  bb.0.entry:105    liveins: $x3, $x1, $x4, $x6106    $x3 = ADDI8 $x1, -80107    ; CHECK: $x3 = ADDI8 $x1, -80108    $x4 = ADD8 killed $x3, killed $x4109    ; CHECK: $x4 = ADD8 killed $x3, killed $x4110    $x6 = LD 4, $x4111    ; CHECK: $x6 = LD 4, $x4112    STD killed $x4, killed $x6, 100113    BLR8 implicit $lr8, implicit $rm114...115---116name: testIndexForm7117#CHECK: name: testIndexForm7118# There is other def for ToBeChangedReg between ADD instr and Imm instr119tracksRegLiveness: true120body: |121  bb.0.entry:122    liveins: $x3, $x1, $x4, $x5, $x6123    $x3 = ADDI8 $x1, -80124    ; CHECK: $x3 = ADDI8 $x1, -80125    $x4 = ADD8 killed $x3, killed $x5126    ; CHECK: $x4 = ADD8 killed $x3, killed $x5127    $x3 = LD 100, $x6128    ; CHECK: $x3 = LD 100, $x6129    STD killed $x3, killed $x6, 200130    ; CHECK: STD killed $x3, killed $x6, 200131    $x6 = LD 4, killed $x4132    ; CHECK: $x6 = LD 4, killed $x4133    BLR8 implicit $lr8, implicit $rm134...135---136name: testIndexForm8137#CHECK: name: testIndexForm8138# There is other def for ScaleReg between ADD instr and Imm instr139tracksRegLiveness: true140body: |141  bb.0.entry:142    liveins: $x3, $x1, $x4, $x5, $x6143    $x3 = ADDI8 $x1, -80144    ; CHECK: $x3 = ADDI8 $x1, -80145    $x4 = ADD8 killed $x3, killed $x5146    ; CHECK: $x4 = ADD8 killed $x3, killed $x5147    $x5 = LD 100, $x6148    ; CHECK: $x5 = LD 100, $x6149    STD killed $x5, killed $x6, 200150    ; CHECK: STD killed $x5, killed $x6, 200151    $x6 = LD 4, killed $x4152    ; CHECK: $x6 = LD 4, killed $x4153    BLR8 implicit $lr8, implicit $rm154...155---156name: testR0157#CHECK: name: testR0158# Give up the folding if the register is R0/X0159tracksRegLiveness: true160body:             |161  bb.0.entry:162    liveins: $f1, $x0, $x3163    $x4 = ADDI8 killed $x3, -8164    $x4 = ADD8 killed $x4, $x0165    STFD killed $f1, -8, killed $x4166    ; CHECK-NOT: STFDX167    BLR8 implicit $lr8, implicit $rm168...169