163 lines · plain
1# RUN: llc -run-pass=machine-combiner -o - -mtriple=aarch64-unknown-linux -mcpu=cortex-a57 -machine-combiner-verify-pattern-order=true %s | FileCheck --check-prefixes=UNPROFITABLE,ALL %s2# RUN: llc -run-pass=machine-combiner -o - -mtriple=aarch64-unknown-linux -mcpu=falkor %s -machine-combiner-verify-pattern-order=true | FileCheck --check-prefixes=PROFITABLE,ALL %s3# RUN: llc -run-pass=machine-combiner -o - -mtriple=aarch64-unknown-linux -mcpu=exynos-m3 -machine-combiner-verify-pattern-order=true %s | FileCheck --check-prefixes=PROFITABLE,ALL %s4# RUN: llc -run-pass=machine-combiner -o - -mtriple=aarch64-unknown-linux -mcpu=thunderx2t99 -machine-combiner-verify-pattern-order=true %s | FileCheck --check-prefixes=PROFITABLE,ALL %s5# RUN: llc -run-pass=machine-combiner -o - -mtriple=aarch64-unknown-linux -mcpu=thunderx3t110 -machine-combiner-verify-pattern-order=true %s | FileCheck --check-prefixes=PROFITABLE,ALL %s6#7name: f1_2s8registers:9 - { id: 0, class: fpr64 }10 - { id: 1, class: fpr64 }11 - { id: 2, class: fpr64 }12 - { id: 3, class: fpr64 }13 - { id: 4, class: fpr64 }14body: |15 bb.0.entry:16 %2:fpr64 = COPY $d217 %1:fpr64 = COPY $d118 %0:fpr64 = COPY $d019 %3:fpr64 = contract FMULv2f32 %0, %1, implicit $fpcr20 %4:fpr64 = contract FSUBv2f32 killed %3, %2, implicit $fpcr21 $d0 = COPY %422 RET_ReallyLR implicit $d023 24...25# UNPROFITABLE-LABEL: name: f1_2s26# UNPROFITABLE: [[R1:%[0-9]+]]:fpr64 = contract FNEGv2f32 %227# UNPROFITABLE-NEXT: FMLAv2f32 killed [[R1]], %0, %1, implicit $fpcr28#29# PROFITABLE-LABEL: name: f1_2s30# PROFITABLE: [[R1:%[0-9]+]]:fpr64 = contract FNEGv2f32 %231# PROFITABLE-NEXT: FMLAv2f32 killed [[R1]], %0, %1, implicit $fpcr32---33name: f1_4s34registers:35 - { id: 0, class: fpr128 }36 - { id: 1, class: fpr128 }37 - { id: 2, class: fpr128 }38 - { id: 3, class: fpr128 }39 - { id: 4, class: fpr128 }40body: |41 bb.0.entry:42 %2:fpr128 = COPY $q243 %1:fpr128 = COPY $q144 %0:fpr128 = COPY $q045 %3:fpr128 = contract FMULv4f32 %0, %1, implicit $fpcr46 %4:fpr128 = contract FSUBv4f32 killed %3, %2, implicit $fpcr47 $q0 = COPY %448 RET_ReallyLR implicit $q049 50...51# UNPROFITABLE-LABEL: name: f1_4s52# UNPROFITABLE: [[R1:%[0-9]+]]:fpr128 = contract FMULv4f32 %0, %1, implicit $fpcr53# UNPROFITABLE-NEXT: FSUBv4f32 killed [[R1]], %2, implicit $fpcr54#55# PROFITABLE-LABEL: name: f1_4s56# PROFITABLE: [[R1:%[0-9]+]]:fpr128 = contract FNEGv4f32 %257# PROFITABLE-NEXT: FMLAv4f32 killed [[R1]], %0, %1, implicit $fpcr58---59name: f1_2d60registers:61 - { id: 0, class: fpr128 }62 - { id: 1, class: fpr128 }63 - { id: 2, class: fpr128 }64 - { id: 3, class: fpr128 }65 - { id: 4, class: fpr128 }66body: |67 bb.0.entry:68 %2:fpr128 = COPY $q269 %1:fpr128 = COPY $q170 %0:fpr128 = COPY $q071 %3:fpr128 = contract FMULv2f64 %0, %1, implicit $fpcr72 %4:fpr128 = contract FSUBv2f64 killed %3, %2, implicit $fpcr73 $q0 = COPY %474 RET_ReallyLR implicit $q075 76...77# UNPROFITABLE-LABEL: name: f1_2d78# UNPROFITABLE: %3:fpr128 = contract FMULv2f64 %0, %1, implicit $fpcr79# UNPROFITABLE-NEXT: FSUBv2f64 killed %3, %2, implicit $fpcr80#81# PROFITABLE-LABEL: name: f1_2d82# PROFITABLE: [[R1:%[0-9]+]]:fpr128 = contract FNEGv2f64 %283# PROFITABLE-NEXT: FMLAv2f64 killed [[R1]], %0, %1, implicit $fpcr84---85name: f1_both_fmul_2s86registers:87 - { id: 0, class: fpr64 }88 - { id: 1, class: fpr64 }89 - { id: 2, class: fpr64 }90 - { id: 3, class: fpr64 }91 - { id: 4, class: fpr64 }92 - { id: 5, class: fpr64 }93 - { id: 6, class: fpr64 }94body: |95 bb.0.entry:96 %3:fpr64 = COPY $q397 %2:fpr64 = COPY $q298 %1:fpr64 = COPY $q199 %0:fpr64 = COPY $q0100 %4:fpr64 = contract FMULv2f32 %0, %1, implicit $fpcr101 %5:fpr64 = contract FMULv2f32 %2, %3, implicit $fpcr102 %6:fpr64 = contract FSUBv2f32 killed %4, %5, implicit $fpcr103 $q0 = COPY %6104 RET_ReallyLR implicit $q0105 106...107# ALL-LABEL: name: f1_both_fmul_2s108# ALL: %4:fpr64 = contract FMULv2f32 %0, %1, implicit $fpcr109# ALL-NEXT: FMLSv2f32 killed %4, %2, %3, implicit $fpcr110---111name: f1_both_fmul_4s112registers:113 - { id: 0, class: fpr128 }114 - { id: 1, class: fpr128 }115 - { id: 2, class: fpr128 }116 - { id: 3, class: fpr128 }117 - { id: 4, class: fpr128 }118 - { id: 5, class: fpr128 }119 - { id: 6, class: fpr128 }120body: |121 bb.0.entry:122 %3:fpr128 = COPY $q3123 %2:fpr128 = COPY $q2124 %1:fpr128 = COPY $q1125 %0:fpr128 = COPY $q0126 %4:fpr128 = contract FMULv4f32 %0, %1, implicit $fpcr127 %5:fpr128 = contract FMULv4f32 %2, %3, implicit $fpcr128 %6:fpr128 = contract FSUBv4f32 killed %4, %5, implicit $fpcr129 $q0 = COPY %6130 RET_ReallyLR implicit $q0131 132...133# ALL-LABEL: name: f1_both_fmul_4s134# ALL: %4:fpr128 = contract FMULv4f32 %0, %1, implicit $fpcr135# ALL-NEXT: FMLSv4f32 killed %4, %2, %3, implicit $fpcr136---137name: f1_both_fmul_2d138registers:139 - { id: 0, class: fpr128 }140 - { id: 1, class: fpr128 }141 - { id: 2, class: fpr128 }142 - { id: 3, class: fpr128 }143 - { id: 4, class: fpr128 }144 - { id: 5, class: fpr128 }145 - { id: 6, class: fpr128 }146body: |147 bb.0.entry:148 %3:fpr128 = COPY $q3149 %2:fpr128 = COPY $q2150 %1:fpr128 = COPY $q1151 %0:fpr128 = COPY $q0152 %4:fpr128 = contract FMULv2f64 %0, %1, implicit $fpcr153 %5:fpr128 = contract FMULv2f64 %2, %3, implicit $fpcr154 %6:fpr128 = contract FSUBv2f64 killed %4, %5, implicit $fpcr155 $q0 = COPY %6156 RET_ReallyLR implicit $q0157 158...159# ALL-LABEL: name: f1_both_fmul_2d160# ALL: %4:fpr128 = contract FMULv2f64 %0, %1, implicit $fpcr161# ALL-NEXT: FMLSv2f64 killed %4, %2, %3, implicit $fpcr162 163