1- # RUN: llc -run-pass=machine-combiner -o - -mtriple=aarch64-unknown-linux -mcpu=cortex-a57 -enable-unsafe-fp-math - machine-combiner-verify-pattern-order=true %s | FileCheck --check-prefixes=UNPROFITABLE,ALL %s
2- # RUN: llc -run-pass=machine-combiner -o - -mtriple=aarch64-unknown-linux -mcpu=falkor -enable-unsafe-fp-math %s -machine-combiner-verify-pattern-order=true | FileCheck --check-prefixes=PROFITABLE,ALL %s
3- # RUN: llc -run-pass=machine-combiner -o - -mtriple=aarch64-unknown-linux -mcpu=exynos-m3 -enable-unsafe-fp-math - machine-combiner-verify-pattern-order=true %s | FileCheck --check-prefixes=PROFITABLE,ALL %s
4- # RUN: llc -run-pass=machine-combiner -o - -mtriple=aarch64-unknown-linux -mcpu=thunderx2t99 -enable-unsafe-fp-math - machine-combiner-verify-pattern-order=true %s | FileCheck --check-prefixes=PROFITABLE,ALL %s
5- # RUN: llc -run-pass=machine-combiner -o - -mtriple=aarch64-unknown-linux -mcpu=thunderx3t110 -enable-unsafe-fp-math - machine-combiner-verify-pattern-order=true %s | FileCheck --check-prefixes=PROFITABLE,ALL %s
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 %s
2+ # 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 %s
3+ # 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 %s
4+ # 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 %s
5+ # 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 %s
66#
77name : f1_2s
88registers :
@@ -16,18 +16,18 @@ body: |
1616 %2:fpr64 = COPY $d2
1717 %1:fpr64 = COPY $d1
1818 %0:fpr64 = COPY $d0
19- %3:fpr64 = FMULv2f32 %0, %1, implicit $fpcr
20- %4:fpr64 = FSUBv2f32 killed %3, %2, implicit $fpcr
19+ %3:fpr64 = contract FMULv2f32 %0, %1, implicit $fpcr
20+ %4:fpr64 = contract FSUBv2f32 killed %3, %2, implicit $fpcr
2121 $d0 = COPY %4
2222 RET_ReallyLR implicit $d0
2323
2424 ...
2525# UNPROFITABLE-LABEL: name: f1_2s
26- # UNPROFITABLE: [[R1:%[0-9]+]]:fpr64 = FNEGv2f32 %2
26+ # UNPROFITABLE: [[R1:%[0-9]+]]:fpr64 = contract FNEGv2f32 %2
2727# UNPROFITABLE-NEXT: FMLAv2f32 killed [[R1]], %0, %1, implicit $fpcr
2828#
2929# PROFITABLE-LABEL: name: f1_2s
30- # PROFITABLE: [[R1:%[0-9]+]]:fpr64 = FNEGv2f32 %2
30+ # PROFITABLE: [[R1:%[0-9]+]]:fpr64 = contract FNEGv2f32 %2
3131# PROFITABLE-NEXT: FMLAv2f32 killed [[R1]], %0, %1, implicit $fpcr
3232---
3333name : f1_4s
@@ -42,18 +42,18 @@ body: |
4242 %2:fpr128 = COPY $q2
4343 %1:fpr128 = COPY $q1
4444 %0:fpr128 = COPY $q0
45- %3:fpr128 = FMULv4f32 %0, %1, implicit $fpcr
46- %4:fpr128 = FSUBv4f32 killed %3, %2, implicit $fpcr
45+ %3:fpr128 = contract FMULv4f32 %0, %1, implicit $fpcr
46+ %4:fpr128 = contract FSUBv4f32 killed %3, %2, implicit $fpcr
4747 $q0 = COPY %4
4848 RET_ReallyLR implicit $q0
4949
5050 ...
5151# UNPROFITABLE-LABEL: name: f1_4s
52- # UNPROFITABLE: [[R1:%[0-9]+]]:fpr128 = FMULv4f32 %0, %1, implicit $fpcr
52+ # UNPROFITABLE: [[R1:%[0-9]+]]:fpr128 = contract FMULv4f32 %0, %1, implicit $fpcr
5353# UNPROFITABLE-NEXT: FSUBv4f32 killed [[R1]], %2, implicit $fpcr
5454#
5555# PROFITABLE-LABEL: name: f1_4s
56- # PROFITABLE: [[R1:%[0-9]+]]:fpr128 = FNEGv4f32 %2
56+ # PROFITABLE: [[R1:%[0-9]+]]:fpr128 = contract FNEGv4f32 %2
5757# PROFITABLE-NEXT: FMLAv4f32 killed [[R1]], %0, %1, implicit $fpcr
5858---
5959name : f1_2d
@@ -68,18 +68,18 @@ body: |
6868 %2:fpr128 = COPY $q2
6969 %1:fpr128 = COPY $q1
7070 %0:fpr128 = COPY $q0
71- %3:fpr128 = FMULv2f64 %0, %1, implicit $fpcr
72- %4:fpr128 = FSUBv2f64 killed %3, %2, implicit $fpcr
71+ %3:fpr128 = contract FMULv2f64 %0, %1, implicit $fpcr
72+ %4:fpr128 = contract FSUBv2f64 killed %3, %2, implicit $fpcr
7373 $q0 = COPY %4
7474 RET_ReallyLR implicit $q0
7575
7676 ...
7777# UNPROFITABLE-LABEL: name: f1_2d
78- # UNPROFITABLE: %3:fpr128 = FMULv2f64 %0, %1, implicit $fpcr
78+ # UNPROFITABLE: %3:fpr128 = contract FMULv2f64 %0, %1, implicit $fpcr
7979# UNPROFITABLE-NEXT: FSUBv2f64 killed %3, %2, implicit $fpcr
8080#
8181# PROFITABLE-LABEL: name: f1_2d
82- # PROFITABLE: [[R1:%[0-9]+]]:fpr128 = FNEGv2f64 %2
82+ # PROFITABLE: [[R1:%[0-9]+]]:fpr128 = contract FNEGv2f64 %2
8383# PROFITABLE-NEXT: FMLAv2f64 killed [[R1]], %0, %1, implicit $fpcr
8484---
8585name : f1_both_fmul_2s
@@ -97,15 +97,15 @@ body: |
9797 %2:fpr64 = COPY $q2
9898 %1:fpr64 = COPY $q1
9999 %0:fpr64 = COPY $q0
100- %4:fpr64 = FMULv2f32 %0, %1, implicit $fpcr
101- %5:fpr64 = FMULv2f32 %2, %3, implicit $fpcr
102- %6:fpr64 = FSUBv2f32 killed %4, %5, implicit $fpcr
100+ %4:fpr64 = contract FMULv2f32 %0, %1, implicit $fpcr
101+ %5:fpr64 = contract FMULv2f32 %2, %3, implicit $fpcr
102+ %6:fpr64 = contract FSUBv2f32 killed %4, %5, implicit $fpcr
103103 $q0 = COPY %6
104104 RET_ReallyLR implicit $q0
105105
106106 ...
107107# ALL-LABEL: name: f1_both_fmul_2s
108- # ALL: %4:fpr64 = FMULv2f32 %0, %1, implicit $fpcr
108+ # ALL: %4:fpr64 = contract FMULv2f32 %0, %1, implicit $fpcr
109109# ALL-NEXT: FMLSv2f32 killed %4, %2, %3, implicit $fpcr
110110---
111111name : f1_both_fmul_4s
@@ -123,15 +123,15 @@ body: |
123123 %2:fpr128 = COPY $q2
124124 %1:fpr128 = COPY $q1
125125 %0:fpr128 = COPY $q0
126- %4:fpr128 = FMULv4f32 %0, %1, implicit $fpcr
127- %5:fpr128 = FMULv4f32 %2, %3, implicit $fpcr
128- %6:fpr128 = FSUBv4f32 killed %4, %5, implicit $fpcr
126+ %4:fpr128 = contract FMULv4f32 %0, %1, implicit $fpcr
127+ %5:fpr128 = contract FMULv4f32 %2, %3, implicit $fpcr
128+ %6:fpr128 = contract FSUBv4f32 killed %4, %5, implicit $fpcr
129129 $q0 = COPY %6
130130 RET_ReallyLR implicit $q0
131131
132132 ...
133133# ALL-LABEL: name: f1_both_fmul_4s
134- # ALL: %4:fpr128 = FMULv4f32 %0, %1, implicit $fpcr
134+ # ALL: %4:fpr128 = contract FMULv4f32 %0, %1, implicit $fpcr
135135# ALL-NEXT: FMLSv4f32 killed %4, %2, %3, implicit $fpcr
136136---
137137name : f1_both_fmul_2d
@@ -149,14 +149,14 @@ body: |
149149 %2:fpr128 = COPY $q2
150150 %1:fpr128 = COPY $q1
151151 %0:fpr128 = COPY $q0
152- %4:fpr128 = FMULv2f64 %0, %1, implicit $fpcr
153- %5:fpr128 = FMULv2f64 %2, %3, implicit $fpcr
154- %6:fpr128 = FSUBv2f64 killed %4, %5, implicit $fpcr
152+ %4:fpr128 = contract FMULv2f64 %0, %1, implicit $fpcr
153+ %5:fpr128 = contract FMULv2f64 %2, %3, implicit $fpcr
154+ %6:fpr128 = contract FSUBv2f64 killed %4, %5, implicit $fpcr
155155 $q0 = COPY %6
156156 RET_ReallyLR implicit $q0
157157
158158 ...
159159# ALL-LABEL: name: f1_both_fmul_2d
160- # ALL: %4:fpr128 = FMULv2f64 %0, %1, implicit $fpcr
160+ # ALL: %4:fpr128 = contract FMULv2f64 %0, %1, implicit $fpcr
161161# ALL-NEXT: FMLSv2f64 killed %4, %2, %3, implicit $fpcr
162162
0 commit comments