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