brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.9 KiB · 184c9ef Raw
127 lines · plain
1# RUN: llc -run-pass=machine-combiner -mtriple=aarch64-unknown-linux-gnu %s -o - | FileCheck %s2 3# fadd without the reassoc flags can be reassociate only when unsafe fp math is4# enabled.5# CHECK-LABEL: name: fadd_no_reassoc6# CHECK:             [[ADD1:%[0-9]+]]:fpr32 = FADDSrr %0, %1, implicit $fpcr7# CHECK:             [[ADD2:%[0-9]+]]:fpr32 = FADDSrr killed [[ADD1]], %2, implicit $fpcr8# CHECK:             [[ADD3:%[0-9]+]]:fpr32 = FADDSrr killed [[ADD2]], %3, implicit $fpcr9---10name:            fadd_no_reassoc11alignment:       412tracksRegLiveness: true13registers:14  - { id: 0, class: fpr32 }15  - { id: 1, class: fpr32 }16  - { id: 2, class: fpr32 }17  - { id: 3, class: fpr32 }18  - { id: 4, class: fpr32 }19  - { id: 5, class: fpr32 }20  - { id: 6, class: fpr32 }21liveins:22  - { reg: '$s0', virtual-reg: '%0' }23  - { reg: '$s1', virtual-reg: '%1' }24  - { reg: '$s2', virtual-reg: '%2' }25  - { reg: '$s3', virtual-reg: '%3' }26frameInfo:27  maxAlignment:    128  maxCallFrameSize: 029machineFunctionInfo: {}30body:             |31  bb.0.entry:32    liveins: $s0, $s1, $s2, $s333 34    %3:fpr32 = COPY $s335    %2:fpr32 = COPY $s236    %1:fpr32 = COPY $s137    %0:fpr32 = COPY $s038    %4:fpr32 = FADDSrr %0, %1, implicit $fpcr39    %5:fpr32 = FADDSrr killed %4, %2, implicit $fpcr40    %6:fpr32 = FADDSrr killed %5, %3, implicit $fpcr41    $s0 = COPY %642    RET_ReallyLR implicit $s043 44 45# FIXME: We should be able to reassociate without unsafe fp math, but currently46# the reassoc flag is ignored.47# CHECK-LABEL: name: fadd_reassoc48# CHECK:             [[ADD1:%[0-9]+]]:fpr32 = reassoc FADDSrr %0, %1, implicit $fpcr49# CHECK:             [[ADD2:%[0-9]+]]:fpr32 = reassoc FADDSrr killed [[ADD1]], %2, implicit $fpcr50# CHECK:             [[ADD3:%[0-9]+]]:fpr32 = reassoc FADDSrr killed [[ADD2]], %3, implicit $fpcr51 52---53name:            fadd_reassoc54alignment:       455tracksRegLiveness: true56registers:57  - { id: 0, class: fpr32 }58  - { id: 1, class: fpr32 }59  - { id: 2, class: fpr32 }60  - { id: 3, class: fpr32 }61  - { id: 4, class: fpr32 }62  - { id: 5, class: fpr32 }63  - { id: 6, class: fpr32 }64liveins:65  - { reg: '$s0', virtual-reg: '%0' }66  - { reg: '$s1', virtual-reg: '%1' }67  - { reg: '$s2', virtual-reg: '%2' }68  - { reg: '$s3', virtual-reg: '%3' }69frameInfo:70  maxAlignment:    171  maxCallFrameSize: 072machineFunctionInfo: {}73body:             |74  bb.0.entry:75    liveins: $s0, $s1, $s2, $s376 77    %3:fpr32 = COPY $s378    %2:fpr32 = COPY $s279    %1:fpr32 = COPY $s180    %0:fpr32 = COPY $s081    %4:fpr32 = reassoc FADDSrr %0, %1, implicit $fpcr82    %5:fpr32 = reassoc FADDSrr killed %4, %2, implicit $fpcr83    %6:fpr32 = reassoc FADDSrr killed %5, %3, implicit $fpcr84    $s0 = COPY %685    RET_ReallyLR implicit $s086 87 88# Check that flags on the instructions are preserved after reassociation.89# CHECK-LABEL: name: fadd_flags90# CHECK:             [[ADD1:%[0-9]+]]:fpr32 = nnan ninf nsz FADDSrr %0, %1, implicit $fpcr91# CHECK:             [[ADD2:%[0-9]+]]:fpr32 = nnan nsz FADDSrr killed [[ADD1]], %2, implicit $fpcr92# CHECK:             [[ADD3:%[0-9]+]]:fpr32 = ninf nsz FADDSrr killed [[ADD2]], %3, implicit $fpcr93---94name:            fadd_flags95alignment:       496tracksRegLiveness: true97registers:98  - { id: 0, class: fpr32 }99  - { id: 1, class: fpr32 }100  - { id: 2, class: fpr32 }101  - { id: 3, class: fpr32 }102  - { id: 4, class: fpr32 }103  - { id: 5, class: fpr32 }104  - { id: 6, class: fpr32 }105liveins:106  - { reg: '$s0', virtual-reg: '%0' }107  - { reg: '$s1', virtual-reg: '%1' }108  - { reg: '$s2', virtual-reg: '%2' }109  - { reg: '$s3', virtual-reg: '%3' }110frameInfo:111  maxAlignment:    1112  maxCallFrameSize: 0113machineFunctionInfo: {}114body:             |115  bb.0.entry:116    liveins: $s0, $s1, $s2, $s3117 118    %3:fpr32 = COPY $s3119    %2:fpr32 = COPY $s2120    %1:fpr32 = COPY $s1121    %0:fpr32 = COPY $s0122    %4:fpr32 = nsz nnan ninf FADDSrr %0, %1, implicit $fpcr123    %5:fpr32 = nsz nnan FADDSrr killed %4, %2, implicit $fpcr124    %6:fpr32 = nsz ninf FADDSrr killed %5, %3, implicit $fpcr125    $s0 = COPY %6126    RET_ReallyLR implicit $s0127