[NFC][Py Reformat] Reformat python files in llvm
[llvm-project.git] / llvm / test / CodeGen / PowerPC / scalar-equal.ll
blob90e1655fd94c3aa3ea554ddce9acb47ac2d59747
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mcpu=pwr8 -ppc-asm-full-reg-names --enable-unsafe-fp-math \
3 ; RUN:   -verify-machineinstrs --enable-no-signed-zeros-fp-math \
4 ; RUN:   --enable-no-nans-fp-math --enable-no-infs-fp-math \
5 ; RUN:   -mtriple=powerpc64le-unknown-unknown < %s | FileCheck %s \
6 ; RUN:   --check-prefix=FAST-P8
7 ; RUN: llc -mcpu=pwr9 -ppc-asm-full-reg-names --enable-unsafe-fp-math \
8 ; RUN:   -verify-machineinstrs --enable-no-signed-zeros-fp-math \
9 ; RUN:   --enable-no-nans-fp-math --enable-no-infs-fp-math \
10 ; RUN:   -mtriple=powerpc64le-unknown-unknown < %s | FileCheck %s \
11 ; RUN:   --check-prefix=FAST-P9
12 ; RUN: llc -mcpu=pwr9 -ppc-asm-full-reg-names -verify-machineinstrs \
13 ; RUN:   -mtriple=powerpc64le-unknown-unknown < %s | FileCheck %s \
14 ; RUN:   --check-prefix=NO-FAST-P9
15 ; RUN: llc -mcpu=pwr8 -ppc-asm-full-reg-names -verify-machineinstrs \
16 ; RUN:   -mtriple=powerpc64le-unknown-unknown < %s | FileCheck %s \
17 ; RUN:   --check-prefix=NO-FAST-P8
19 define double @testoeq(double %a, double %b, double %c, double %d) {
20 ; FAST-P8-LABEL: testoeq:
21 ; FAST-P8:       # %bb.0: # %entry
22 ; FAST-P8-NEXT:    xssubdp f0, f1, f2
23 ; FAST-P8-NEXT:    xsnegdp f1, f0
24 ; FAST-P8-NEXT:    fsel f0, f0, f3, f4
25 ; FAST-P8-NEXT:    fsel f1, f1, f0, f4
26 ; FAST-P8-NEXT:    blr
28 ; FAST-P9-LABEL: testoeq:
29 ; FAST-P9:       # %bb.0: # %entry
30 ; FAST-P9-NEXT:    xssubdp f0, f1, f2
31 ; FAST-P9-NEXT:    fsel f1, f0, f3, f4
32 ; FAST-P9-NEXT:    xsnegdp f0, f0
33 ; FAST-P9-NEXT:    fsel f1, f0, f1, f4
34 ; FAST-P9-NEXT:    blr
36 ; NO-FAST-P9-LABEL: testoeq:
37 ; NO-FAST-P9:       # %bb.0: # %entry
38 ; NO-FAST-P9-NEXT:    xscmpudp cr0, f1, f2
39 ; NO-FAST-P9-NEXT:    beq cr0, .LBB0_2
40 ; NO-FAST-P9-NEXT:  # %bb.1: # %entry
41 ; NO-FAST-P9-NEXT:    fmr f3, f4
42 ; NO-FAST-P9-NEXT:  .LBB0_2: # %entry
43 ; NO-FAST-P9-NEXT:    fmr f1, f3
44 ; NO-FAST-P9-NEXT:    blr
46 ; NO-FAST-P8-LABEL: testoeq:
47 ; NO-FAST-P8:       # %bb.0: # %entry
48 ; NO-FAST-P8-NEXT:    xscmpudp cr0, f1, f2
49 ; NO-FAST-P8-NEXT:    fmr f1, f3
50 ; NO-FAST-P8-NEXT:    beqlr cr0
51 ; NO-FAST-P8-NEXT:  # %bb.1: # %entry
52 ; NO-FAST-P8-NEXT:    fmr f1, f4
53 ; NO-FAST-P8-NEXT:    blr
54 entry:
55   %cmp = fcmp oeq double %a, %b
56   %cond = select i1 %cmp, double %c, double %d
57   ret double %cond
60 define double @testoeq_fast(double %a, double %b, double %c, double %d) {
61 ; FAST-P8-LABEL: testoeq_fast:
62 ; FAST-P8:       # %bb.0: # %entry
63 ; FAST-P8-NEXT:    xssubdp f0, f1, f2
64 ; FAST-P8-NEXT:    xsnegdp f1, f0
65 ; FAST-P8-NEXT:    fsel f0, f0, f3, f4
66 ; FAST-P8-NEXT:    fsel f1, f1, f0, f4
67 ; FAST-P8-NEXT:    blr
69 ; FAST-P9-LABEL: testoeq_fast:
70 ; FAST-P9:       # %bb.0: # %entry
71 ; FAST-P9-NEXT:    xssubdp f0, f1, f2
72 ; FAST-P9-NEXT:    fsel f1, f0, f3, f4
73 ; FAST-P9-NEXT:    xsnegdp f0, f0
74 ; FAST-P9-NEXT:    fsel f1, f0, f1, f4
75 ; FAST-P9-NEXT:    blr
77 ; NO-FAST-P9-LABEL: testoeq_fast:
78 ; NO-FAST-P9:       # %bb.0: # %entry
79 ; NO-FAST-P9-NEXT:    xssubdp f0, f1, f2
80 ; NO-FAST-P9-NEXT:    fsel f1, f0, f3, f4
81 ; NO-FAST-P9-NEXT:    xsnegdp f0, f0
82 ; NO-FAST-P9-NEXT:    fsel f1, f0, f1, f4
83 ; NO-FAST-P9-NEXT:    blr
85 ; NO-FAST-P8-LABEL: testoeq_fast:
86 ; NO-FAST-P8:       # %bb.0: # %entry
87 ; NO-FAST-P8-NEXT:    xssubdp f0, f1, f2
88 ; NO-FAST-P8-NEXT:    xsnegdp f1, f0
89 ; NO-FAST-P8-NEXT:    fsel f0, f0, f3, f4
90 ; NO-FAST-P8-NEXT:    fsel f1, f1, f0, f4
91 ; NO-FAST-P8-NEXT:    blr
92 entry:
93   %cmp = fcmp nnan ninf nsz oeq double %a, %b
94   %cond = select nnan ninf nsz i1 %cmp, double %c, double %d
95   ret double %cond