xref: /llvm-project/llvm/test/CodeGen/PowerPC/fminimum-fmaximum-f128.ll (revision 4a8f2f2e1aab027a559c71d4e055db3205ec2e32)
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2
2; RUN: llc -mtriple=powerpc64le-unknown-linux-gnu -mcpu=pwr9 < %s | FileCheck %s
3
4define fp128 @f128_minimum(fp128 %a, fp128 %b) {
5; CHECK-LABEL: f128_minimum:
6; CHECK:       # %bb.0: # %entry
7; CHECK-NEXT:    xscmpuqp 0, 2, 3
8; CHECK-NEXT:    vmr 4, 2
9; CHECK-NEXT:    bge 0, .LBB0_8
10; CHECK-NEXT:  # %bb.1: # %entry
11; CHECK-NEXT:    bun 0, .LBB0_9
12; CHECK-NEXT:  .LBB0_2: # %entry
13; CHECK-NEXT:    xststdcqp 0, 2, 4
14; CHECK-NEXT:    bc 4, 2, .LBB0_10
15; CHECK-NEXT:  .LBB0_3: # %entry
16; CHECK-NEXT:    xststdcqp 0, 3, 4
17; CHECK-NEXT:    bc 12, 2, .LBB0_5
18; CHECK-NEXT:  .LBB0_4: # %entry
19; CHECK-NEXT:    vmr 3, 2
20; CHECK-NEXT:  .LBB0_5: # %entry
21; CHECK-NEXT:    addis 3, 2, .LCPI0_1@toc@ha
22; CHECK-NEXT:    addi 3, 3, .LCPI0_1@toc@l
23; CHECK-NEXT:    lxv 34, 0(3)
24; CHECK-NEXT:    xscmpuqp 0, 4, 2
25; CHECK-NEXT:    beq 0, .LBB0_7
26; CHECK-NEXT:  # %bb.6: # %entry
27; CHECK-NEXT:    vmr 3, 4
28; CHECK-NEXT:  .LBB0_7: # %entry
29; CHECK-NEXT:    vmr 2, 3
30; CHECK-NEXT:    blr
31; CHECK-NEXT:  .LBB0_8: # %entry
32; CHECK-NEXT:    vmr 4, 3
33; CHECK-NEXT:    bnu 0, .LBB0_2
34; CHECK-NEXT:  .LBB0_9:
35; CHECK-NEXT:    addis 3, 2, .LCPI0_0@toc@ha
36; CHECK-NEXT:    addi 3, 3, .LCPI0_0@toc@l
37; CHECK-NEXT:    lxv 36, 0(3)
38; CHECK-NEXT:    xststdcqp 0, 2, 4
39; CHECK-NEXT:    bc 12, 2, .LBB0_3
40; CHECK-NEXT:  .LBB0_10: # %entry
41; CHECK-NEXT:    vmr 2, 4
42; CHECK-NEXT:    xststdcqp 0, 3, 4
43; CHECK-NEXT:    bc 4, 2, .LBB0_4
44; CHECK-NEXT:    b .LBB0_5
45entry:
46  %m = call fp128 @llvm.minimum.f128(fp128 %a, fp128 %b)
47  ret fp128 %m
48}
49
50define fp128 @f128_maximum(fp128 %a, fp128 %b) {
51; CHECK-LABEL: f128_maximum:
52; CHECK:       # %bb.0: # %entry
53; CHECK-NEXT:    xscmpuqp 0, 2, 3
54; CHECK-NEXT:    vmr 4, 2
55; CHECK-NEXT:    ble 0, .LBB1_8
56; CHECK-NEXT:  # %bb.1: # %entry
57; CHECK-NEXT:    bun 0, .LBB1_9
58; CHECK-NEXT:  .LBB1_2: # %entry
59; CHECK-NEXT:    xststdcqp 0, 2, 8
60; CHECK-NEXT:    bc 4, 2, .LBB1_10
61; CHECK-NEXT:  .LBB1_3: # %entry
62; CHECK-NEXT:    xststdcqp 0, 3, 8
63; CHECK-NEXT:    bc 12, 2, .LBB1_5
64; CHECK-NEXT:  .LBB1_4: # %entry
65; CHECK-NEXT:    vmr 3, 2
66; CHECK-NEXT:  .LBB1_5: # %entry
67; CHECK-NEXT:    addis 3, 2, .LCPI1_1@toc@ha
68; CHECK-NEXT:    addi 3, 3, .LCPI1_1@toc@l
69; CHECK-NEXT:    lxv 34, 0(3)
70; CHECK-NEXT:    xscmpuqp 0, 4, 2
71; CHECK-NEXT:    beq 0, .LBB1_7
72; CHECK-NEXT:  # %bb.6: # %entry
73; CHECK-NEXT:    vmr 3, 4
74; CHECK-NEXT:  .LBB1_7: # %entry
75; CHECK-NEXT:    vmr 2, 3
76; CHECK-NEXT:    blr
77; CHECK-NEXT:  .LBB1_8: # %entry
78; CHECK-NEXT:    vmr 4, 3
79; CHECK-NEXT:    bnu 0, .LBB1_2
80; CHECK-NEXT:  .LBB1_9:
81; CHECK-NEXT:    addis 3, 2, .LCPI1_0@toc@ha
82; CHECK-NEXT:    addi 3, 3, .LCPI1_0@toc@l
83; CHECK-NEXT:    lxv 36, 0(3)
84; CHECK-NEXT:    xststdcqp 0, 2, 8
85; CHECK-NEXT:    bc 12, 2, .LBB1_3
86; CHECK-NEXT:  .LBB1_10: # %entry
87; CHECK-NEXT:    vmr 2, 4
88; CHECK-NEXT:    xststdcqp 0, 3, 8
89; CHECK-NEXT:    bc 4, 2, .LBB1_4
90; CHECK-NEXT:    b .LBB1_5
91entry:
92  %m = call fp128 @llvm.maximum.f128(fp128 %a, fp128 %b)
93  ret fp128 %m
94}
95
96declare fp128 @llvm.minimum.f128(fp128, fp128)
97declare fp128 @llvm.maximum.f128(fp128, fp128)
98