14a8f2f2eSQiu Chaofan; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2 24a8f2f2eSQiu Chaofan; RUN: llc -mtriple=powerpc64le-unknown-linux-gnu -mcpu=pwr8 -mattr=-vsx < %s | FileCheck %s --check-prefix=NOVSX 34a8f2f2eSQiu Chaofan; RUN: llc -mtriple=powerpc64le-unknown-linux-gnu -mcpu=pwr8 < %s | FileCheck %s --check-prefix=VSX 44a8f2f2eSQiu Chaofan; RUN: llc -mtriple=powerpc64-ibm-aix -mcpu=pwr8 < %s | FileCheck %s --check-prefix=AIX 54a8f2f2eSQiu Chaofan 64a8f2f2eSQiu Chaofandefine float @f32_minimum(float %a, float %b) { 74a8f2f2eSQiu Chaofan; NOVSX-LABEL: f32_minimum: 84a8f2f2eSQiu Chaofan; NOVSX: # %bb.0: # %entry 94a8f2f2eSQiu Chaofan; NOVSX-NEXT: fcmpu 0, 1, 2 104a8f2f2eSQiu Chaofan; NOVSX-NEXT: fmr 0, 1 114a8f2f2eSQiu Chaofan; NOVSX-NEXT: stfs 2, -8(1) 124a8f2f2eSQiu Chaofan; NOVSX-NEXT: stfs 1, -4(1) 134a8f2f2eSQiu Chaofan; NOVSX-NEXT: bc 12, 0, .LBB0_2 144a8f2f2eSQiu Chaofan; NOVSX-NEXT: # %bb.1: # %entry 154a8f2f2eSQiu Chaofan; NOVSX-NEXT: fmr 0, 2 164a8f2f2eSQiu Chaofan; NOVSX-NEXT: .LBB0_2: # %entry 174a8f2f2eSQiu Chaofan; NOVSX-NEXT: lwz 3, -4(1) 184a8f2f2eSQiu Chaofan; NOVSX-NEXT: bc 4, 3, .LBB0_4 194a8f2f2eSQiu Chaofan; NOVSX-NEXT: # %bb.3: 204a8f2f2eSQiu Chaofan; NOVSX-NEXT: addis 4, 2, .LCPI0_0@toc@ha 214a8f2f2eSQiu Chaofan; NOVSX-NEXT: lfs 0, .LCPI0_0@toc@l(4) 224a8f2f2eSQiu Chaofan; NOVSX-NEXT: .LBB0_4: # %entry 234a8f2f2eSQiu Chaofan; NOVSX-NEXT: xoris 3, 3, 32768 244a8f2f2eSQiu Chaofan; NOVSX-NEXT: lwz 4, -8(1) 254a8f2f2eSQiu Chaofan; NOVSX-NEXT: cmplwi 3, 0 264a8f2f2eSQiu Chaofan; NOVSX-NEXT: bc 12, 2, .LBB0_6 274a8f2f2eSQiu Chaofan; NOVSX-NEXT: # %bb.5: # %entry 284a8f2f2eSQiu Chaofan; NOVSX-NEXT: fmr 1, 0 294a8f2f2eSQiu Chaofan; NOVSX-NEXT: .LBB0_6: # %entry 304a8f2f2eSQiu Chaofan; NOVSX-NEXT: xoris 3, 4, 32768 314a8f2f2eSQiu Chaofan; NOVSX-NEXT: cmplwi 3, 0 324a8f2f2eSQiu Chaofan; NOVSX-NEXT: bc 12, 2, .LBB0_8 334a8f2f2eSQiu Chaofan; NOVSX-NEXT: # %bb.7: # %entry 344a8f2f2eSQiu Chaofan; NOVSX-NEXT: fmr 2, 1 354a8f2f2eSQiu Chaofan; NOVSX-NEXT: .LBB0_8: # %entry 364a8f2f2eSQiu Chaofan; NOVSX-NEXT: addis 3, 2, .LCPI0_1@toc@ha 374a8f2f2eSQiu Chaofan; NOVSX-NEXT: lfs 1, .LCPI0_1@toc@l(3) 384a8f2f2eSQiu Chaofan; NOVSX-NEXT: fcmpu 0, 0, 1 394a8f2f2eSQiu Chaofan; NOVSX-NEXT: bc 12, 2, .LBB0_10 404a8f2f2eSQiu Chaofan; NOVSX-NEXT: # %bb.9: # %entry 414a8f2f2eSQiu Chaofan; NOVSX-NEXT: fmr 2, 0 424a8f2f2eSQiu Chaofan; NOVSX-NEXT: .LBB0_10: # %entry 434a8f2f2eSQiu Chaofan; NOVSX-NEXT: fmr 1, 2 444a8f2f2eSQiu Chaofan; NOVSX-NEXT: blr 454a8f2f2eSQiu Chaofan; 464a8f2f2eSQiu Chaofan; VSX-LABEL: f32_minimum: 474a8f2f2eSQiu Chaofan; VSX: # %bb.0: # %entry 484a8f2f2eSQiu Chaofan; VSX-NEXT: fcmpu 0, 1, 2 494a8f2f2eSQiu Chaofan; VSX-NEXT: bc 12, 3, .LBB0_2 504a8f2f2eSQiu Chaofan; VSX-NEXT: # %bb.1: # %entry 51*6a8d30b1SMatt Arsenault; VSX-NEXT: xsmindp 1, 1, 2 52*6a8d30b1SMatt Arsenault; VSX-NEXT: blr 534a8f2f2eSQiu Chaofan; VSX-NEXT: .LBB0_2: 54*6a8d30b1SMatt Arsenault; VSX-NEXT: addis 3, 2, .LCPI0_0@toc@ha 55*6a8d30b1SMatt Arsenault; VSX-NEXT: lfs 1, .LCPI0_0@toc@l(3) 564a8f2f2eSQiu Chaofan; VSX-NEXT: blr 574a8f2f2eSQiu Chaofan; 584a8f2f2eSQiu Chaofan; AIX-LABEL: f32_minimum: 594a8f2f2eSQiu Chaofan; AIX: # %bb.0: # %entry 604a8f2f2eSQiu Chaofan; AIX-NEXT: fcmpu 0, 1, 2 614a8f2f2eSQiu Chaofan; AIX-NEXT: bc 12, 3, L..BB0_2 624a8f2f2eSQiu Chaofan; AIX-NEXT: # %bb.1: # %entry 63*6a8d30b1SMatt Arsenault; AIX-NEXT: xsmindp 1, 1, 2 64*6a8d30b1SMatt Arsenault; AIX-NEXT: blr 654a8f2f2eSQiu Chaofan; AIX-NEXT: L..BB0_2: 66*6a8d30b1SMatt Arsenault; AIX-NEXT: ld 3, L..C0(2) # %const.0 67*6a8d30b1SMatt Arsenault; AIX-NEXT: lfs 1, 0(3) 684a8f2f2eSQiu Chaofan; AIX-NEXT: blr 694a8f2f2eSQiu Chaofanentry: 704a8f2f2eSQiu Chaofan %m = call float @llvm.minimum.f32(float %a, float %b) 714a8f2f2eSQiu Chaofan ret float %m 724a8f2f2eSQiu Chaofan} 734a8f2f2eSQiu Chaofan 744a8f2f2eSQiu Chaofandefine float @f32_maximum(float %a, float %b) { 754a8f2f2eSQiu Chaofan; NOVSX-LABEL: f32_maximum: 764a8f2f2eSQiu Chaofan; NOVSX: # %bb.0: # %entry 774a8f2f2eSQiu Chaofan; NOVSX-NEXT: fcmpu 0, 1, 2 784a8f2f2eSQiu Chaofan; NOVSX-NEXT: fmr 0, 1 794a8f2f2eSQiu Chaofan; NOVSX-NEXT: stfs 2, -8(1) 804a8f2f2eSQiu Chaofan; NOVSX-NEXT: stfs 1, -4(1) 814a8f2f2eSQiu Chaofan; NOVSX-NEXT: bc 12, 1, .LBB1_2 824a8f2f2eSQiu Chaofan; NOVSX-NEXT: # %bb.1: # %entry 834a8f2f2eSQiu Chaofan; NOVSX-NEXT: fmr 0, 2 844a8f2f2eSQiu Chaofan; NOVSX-NEXT: .LBB1_2: # %entry 854a8f2f2eSQiu Chaofan; NOVSX-NEXT: lwz 3, -4(1) 864a8f2f2eSQiu Chaofan; NOVSX-NEXT: bc 4, 3, .LBB1_4 874a8f2f2eSQiu Chaofan; NOVSX-NEXT: # %bb.3: 884a8f2f2eSQiu Chaofan; NOVSX-NEXT: addis 4, 2, .LCPI1_0@toc@ha 894a8f2f2eSQiu Chaofan; NOVSX-NEXT: lfs 0, .LCPI1_0@toc@l(4) 904a8f2f2eSQiu Chaofan; NOVSX-NEXT: .LBB1_4: # %entry 914a8f2f2eSQiu Chaofan; NOVSX-NEXT: cmpwi 3, 0 924a8f2f2eSQiu Chaofan; NOVSX-NEXT: lwz 4, -8(1) 934a8f2f2eSQiu Chaofan; NOVSX-NEXT: bc 12, 2, .LBB1_6 944a8f2f2eSQiu Chaofan; NOVSX-NEXT: # %bb.5: # %entry 954a8f2f2eSQiu Chaofan; NOVSX-NEXT: fmr 1, 0 964a8f2f2eSQiu Chaofan; NOVSX-NEXT: .LBB1_6: # %entry 974a8f2f2eSQiu Chaofan; NOVSX-NEXT: cmpwi 4, 0 984a8f2f2eSQiu Chaofan; NOVSX-NEXT: bc 12, 2, .LBB1_8 994a8f2f2eSQiu Chaofan; NOVSX-NEXT: # %bb.7: # %entry 1004a8f2f2eSQiu Chaofan; NOVSX-NEXT: fmr 2, 1 1014a8f2f2eSQiu Chaofan; NOVSX-NEXT: .LBB1_8: # %entry 1024a8f2f2eSQiu Chaofan; NOVSX-NEXT: addis 3, 2, .LCPI1_1@toc@ha 1034a8f2f2eSQiu Chaofan; NOVSX-NEXT: lfs 1, .LCPI1_1@toc@l(3) 1044a8f2f2eSQiu Chaofan; NOVSX-NEXT: fcmpu 0, 0, 1 1054a8f2f2eSQiu Chaofan; NOVSX-NEXT: bc 12, 2, .LBB1_10 1064a8f2f2eSQiu Chaofan; NOVSX-NEXT: # %bb.9: # %entry 1074a8f2f2eSQiu Chaofan; NOVSX-NEXT: fmr 2, 0 1084a8f2f2eSQiu Chaofan; NOVSX-NEXT: .LBB1_10: # %entry 1094a8f2f2eSQiu Chaofan; NOVSX-NEXT: fmr 1, 2 1104a8f2f2eSQiu Chaofan; NOVSX-NEXT: blr 1114a8f2f2eSQiu Chaofan; 1124a8f2f2eSQiu Chaofan; VSX-LABEL: f32_maximum: 1134a8f2f2eSQiu Chaofan; VSX: # %bb.0: # %entry 1144a8f2f2eSQiu Chaofan; VSX-NEXT: fcmpu 0, 1, 2 1154a8f2f2eSQiu Chaofan; VSX-NEXT: bc 12, 3, .LBB1_2 1164a8f2f2eSQiu Chaofan; VSX-NEXT: # %bb.1: # %entry 117*6a8d30b1SMatt Arsenault; VSX-NEXT: xsmaxdp 1, 1, 2 118*6a8d30b1SMatt Arsenault; VSX-NEXT: blr 1194a8f2f2eSQiu Chaofan; VSX-NEXT: .LBB1_2: 120*6a8d30b1SMatt Arsenault; VSX-NEXT: addis 3, 2, .LCPI1_0@toc@ha 121*6a8d30b1SMatt Arsenault; VSX-NEXT: lfs 1, .LCPI1_0@toc@l(3) 1224a8f2f2eSQiu Chaofan; VSX-NEXT: blr 1234a8f2f2eSQiu Chaofan; 1244a8f2f2eSQiu Chaofan; AIX-LABEL: f32_maximum: 1254a8f2f2eSQiu Chaofan; AIX: # %bb.0: # %entry 1264a8f2f2eSQiu Chaofan; AIX-NEXT: fcmpu 0, 1, 2 1274a8f2f2eSQiu Chaofan; AIX-NEXT: bc 12, 3, L..BB1_2 1284a8f2f2eSQiu Chaofan; AIX-NEXT: # %bb.1: # %entry 129*6a8d30b1SMatt Arsenault; AIX-NEXT: xsmaxdp 1, 1, 2 130*6a8d30b1SMatt Arsenault; AIX-NEXT: blr 1314a8f2f2eSQiu Chaofan; AIX-NEXT: L..BB1_2: 132*6a8d30b1SMatt Arsenault; AIX-NEXT: ld 3, L..C1(2) # %const.0 133*6a8d30b1SMatt Arsenault; AIX-NEXT: lfs 1, 0(3) 1344a8f2f2eSQiu Chaofan; AIX-NEXT: blr 1354a8f2f2eSQiu Chaofanentry: 1364a8f2f2eSQiu Chaofan %m = call float @llvm.maximum.f32(float %a, float %b) 1374a8f2f2eSQiu Chaofan ret float %m 1384a8f2f2eSQiu Chaofan} 1394a8f2f2eSQiu Chaofan 1404a8f2f2eSQiu Chaofandefine double @f64_minimum(double %a, double %b) { 1414a8f2f2eSQiu Chaofan; NOVSX-LABEL: f64_minimum: 1424a8f2f2eSQiu Chaofan; NOVSX: # %bb.0: # %entry 1434a8f2f2eSQiu Chaofan; NOVSX-NEXT: fcmpu 0, 1, 2 1444a8f2f2eSQiu Chaofan; NOVSX-NEXT: fmr 0, 1 1454a8f2f2eSQiu Chaofan; NOVSX-NEXT: stfd 2, -16(1) 1464a8f2f2eSQiu Chaofan; NOVSX-NEXT: stfd 1, -8(1) 1474a8f2f2eSQiu Chaofan; NOVSX-NEXT: bc 12, 0, .LBB2_2 1484a8f2f2eSQiu Chaofan; NOVSX-NEXT: # %bb.1: # %entry 1494a8f2f2eSQiu Chaofan; NOVSX-NEXT: fmr 0, 2 1504a8f2f2eSQiu Chaofan; NOVSX-NEXT: .LBB2_2: # %entry 1514a8f2f2eSQiu Chaofan; NOVSX-NEXT: ld 3, -8(1) 1524a8f2f2eSQiu Chaofan; NOVSX-NEXT: bc 4, 3, .LBB2_4 1534a8f2f2eSQiu Chaofan; NOVSX-NEXT: # %bb.3: 1544a8f2f2eSQiu Chaofan; NOVSX-NEXT: addis 4, 2, .LCPI2_0@toc@ha 1554a8f2f2eSQiu Chaofan; NOVSX-NEXT: lfs 0, .LCPI2_0@toc@l(4) 1564a8f2f2eSQiu Chaofan; NOVSX-NEXT: .LBB2_4: # %entry 1574a8f2f2eSQiu Chaofan; NOVSX-NEXT: li 5, 1 1584a8f2f2eSQiu Chaofan; NOVSX-NEXT: ld 4, -16(1) 1594a8f2f2eSQiu Chaofan; NOVSX-NEXT: rldic 5, 5, 63, 0 1604a8f2f2eSQiu Chaofan; NOVSX-NEXT: cmpd 3, 5 1614a8f2f2eSQiu Chaofan; NOVSX-NEXT: bc 12, 2, .LBB2_6 1624a8f2f2eSQiu Chaofan; NOVSX-NEXT: # %bb.5: # %entry 1634a8f2f2eSQiu Chaofan; NOVSX-NEXT: fmr 1, 0 1644a8f2f2eSQiu Chaofan; NOVSX-NEXT: .LBB2_6: # %entry 1654a8f2f2eSQiu Chaofan; NOVSX-NEXT: cmpd 4, 5 1664a8f2f2eSQiu Chaofan; NOVSX-NEXT: bc 12, 2, .LBB2_8 1674a8f2f2eSQiu Chaofan; NOVSX-NEXT: # %bb.7: # %entry 1684a8f2f2eSQiu Chaofan; NOVSX-NEXT: fmr 2, 1 1694a8f2f2eSQiu Chaofan; NOVSX-NEXT: .LBB2_8: # %entry 1704a8f2f2eSQiu Chaofan; NOVSX-NEXT: addis 3, 2, .LCPI2_1@toc@ha 1714a8f2f2eSQiu Chaofan; NOVSX-NEXT: lfs 1, .LCPI2_1@toc@l(3) 1724a8f2f2eSQiu Chaofan; NOVSX-NEXT: fcmpu 0, 0, 1 1734a8f2f2eSQiu Chaofan; NOVSX-NEXT: bc 12, 2, .LBB2_10 1744a8f2f2eSQiu Chaofan; NOVSX-NEXT: # %bb.9: # %entry 1754a8f2f2eSQiu Chaofan; NOVSX-NEXT: fmr 2, 0 1764a8f2f2eSQiu Chaofan; NOVSX-NEXT: .LBB2_10: # %entry 1774a8f2f2eSQiu Chaofan; NOVSX-NEXT: fmr 1, 2 1784a8f2f2eSQiu Chaofan; NOVSX-NEXT: blr 1794a8f2f2eSQiu Chaofan; 1804a8f2f2eSQiu Chaofan; VSX-LABEL: f64_minimum: 1814a8f2f2eSQiu Chaofan; VSX: # %bb.0: # %entry 1824a8f2f2eSQiu Chaofan; VSX-NEXT: fcmpu 0, 1, 2 1834a8f2f2eSQiu Chaofan; VSX-NEXT: bc 12, 3, .LBB2_2 1844a8f2f2eSQiu Chaofan; VSX-NEXT: # %bb.1: # %entry 185*6a8d30b1SMatt Arsenault; VSX-NEXT: xsmindp 1, 1, 2 186*6a8d30b1SMatt Arsenault; VSX-NEXT: blr 1874a8f2f2eSQiu Chaofan; VSX-NEXT: .LBB2_2: 188*6a8d30b1SMatt Arsenault; VSX-NEXT: addis 3, 2, .LCPI2_0@toc@ha 189*6a8d30b1SMatt Arsenault; VSX-NEXT: lfs 1, .LCPI2_0@toc@l(3) 1904a8f2f2eSQiu Chaofan; VSX-NEXT: blr 1914a8f2f2eSQiu Chaofan; 1924a8f2f2eSQiu Chaofan; AIX-LABEL: f64_minimum: 1934a8f2f2eSQiu Chaofan; AIX: # %bb.0: # %entry 1944a8f2f2eSQiu Chaofan; AIX-NEXT: fcmpu 0, 1, 2 1954a8f2f2eSQiu Chaofan; AIX-NEXT: bc 12, 3, L..BB2_2 1964a8f2f2eSQiu Chaofan; AIX-NEXT: # %bb.1: # %entry 197*6a8d30b1SMatt Arsenault; AIX-NEXT: xsmindp 1, 1, 2 198*6a8d30b1SMatt Arsenault; AIX-NEXT: blr 1994a8f2f2eSQiu Chaofan; AIX-NEXT: L..BB2_2: 200*6a8d30b1SMatt Arsenault; AIX-NEXT: ld 3, L..C2(2) # %const.0 201*6a8d30b1SMatt Arsenault; AIX-NEXT: lfs 1, 0(3) 2024a8f2f2eSQiu Chaofan; AIX-NEXT: blr 2034a8f2f2eSQiu Chaofanentry: 2044a8f2f2eSQiu Chaofan %m = call double @llvm.minimum.f64(double %a, double %b) 2054a8f2f2eSQiu Chaofan ret double %m 2064a8f2f2eSQiu Chaofan} 2074a8f2f2eSQiu Chaofan 2084a8f2f2eSQiu Chaofandefine double @f64_maximum(double %a, double %b) { 2094a8f2f2eSQiu Chaofan; NOVSX-LABEL: f64_maximum: 2104a8f2f2eSQiu Chaofan; NOVSX: # %bb.0: # %entry 2114a8f2f2eSQiu Chaofan; NOVSX-NEXT: fcmpu 0, 1, 2 2124a8f2f2eSQiu Chaofan; NOVSX-NEXT: fmr 0, 1 2134a8f2f2eSQiu Chaofan; NOVSX-NEXT: stfd 2, -16(1) 2144a8f2f2eSQiu Chaofan; NOVSX-NEXT: stfd 1, -8(1) 2154a8f2f2eSQiu Chaofan; NOVSX-NEXT: bc 12, 1, .LBB3_2 2164a8f2f2eSQiu Chaofan; NOVSX-NEXT: # %bb.1: # %entry 2174a8f2f2eSQiu Chaofan; NOVSX-NEXT: fmr 0, 2 2184a8f2f2eSQiu Chaofan; NOVSX-NEXT: .LBB3_2: # %entry 2194a8f2f2eSQiu Chaofan; NOVSX-NEXT: ld 3, -8(1) 2204a8f2f2eSQiu Chaofan; NOVSX-NEXT: bc 4, 3, .LBB3_4 2214a8f2f2eSQiu Chaofan; NOVSX-NEXT: # %bb.3: 2224a8f2f2eSQiu Chaofan; NOVSX-NEXT: addis 4, 2, .LCPI3_0@toc@ha 2234a8f2f2eSQiu Chaofan; NOVSX-NEXT: lfs 0, .LCPI3_0@toc@l(4) 2244a8f2f2eSQiu Chaofan; NOVSX-NEXT: .LBB3_4: # %entry 2254a8f2f2eSQiu Chaofan; NOVSX-NEXT: cmpdi 3, 0 2264a8f2f2eSQiu Chaofan; NOVSX-NEXT: ld 4, -16(1) 2274a8f2f2eSQiu Chaofan; NOVSX-NEXT: bc 12, 2, .LBB3_6 2284a8f2f2eSQiu Chaofan; NOVSX-NEXT: # %bb.5: # %entry 2294a8f2f2eSQiu Chaofan; NOVSX-NEXT: fmr 1, 0 2304a8f2f2eSQiu Chaofan; NOVSX-NEXT: .LBB3_6: # %entry 2314a8f2f2eSQiu Chaofan; NOVSX-NEXT: cmpdi 4, 0 2324a8f2f2eSQiu Chaofan; NOVSX-NEXT: bc 12, 2, .LBB3_8 2334a8f2f2eSQiu Chaofan; NOVSX-NEXT: # %bb.7: # %entry 2344a8f2f2eSQiu Chaofan; NOVSX-NEXT: fmr 2, 1 2354a8f2f2eSQiu Chaofan; NOVSX-NEXT: .LBB3_8: # %entry 2364a8f2f2eSQiu Chaofan; NOVSX-NEXT: addis 3, 2, .LCPI3_1@toc@ha 2374a8f2f2eSQiu Chaofan; NOVSX-NEXT: lfs 1, .LCPI3_1@toc@l(3) 2384a8f2f2eSQiu Chaofan; NOVSX-NEXT: fcmpu 0, 0, 1 2394a8f2f2eSQiu Chaofan; NOVSX-NEXT: bc 12, 2, .LBB3_10 2404a8f2f2eSQiu Chaofan; NOVSX-NEXT: # %bb.9: # %entry 2414a8f2f2eSQiu Chaofan; NOVSX-NEXT: fmr 2, 0 2424a8f2f2eSQiu Chaofan; NOVSX-NEXT: .LBB3_10: # %entry 2434a8f2f2eSQiu Chaofan; NOVSX-NEXT: fmr 1, 2 2444a8f2f2eSQiu Chaofan; NOVSX-NEXT: blr 2454a8f2f2eSQiu Chaofan; 2464a8f2f2eSQiu Chaofan; VSX-LABEL: f64_maximum: 2474a8f2f2eSQiu Chaofan; VSX: # %bb.0: # %entry 2484a8f2f2eSQiu Chaofan; VSX-NEXT: fcmpu 0, 1, 2 2494a8f2f2eSQiu Chaofan; VSX-NEXT: bc 12, 3, .LBB3_2 2504a8f2f2eSQiu Chaofan; VSX-NEXT: # %bb.1: # %entry 251*6a8d30b1SMatt Arsenault; VSX-NEXT: xsmaxdp 1, 1, 2 252*6a8d30b1SMatt Arsenault; VSX-NEXT: blr 2534a8f2f2eSQiu Chaofan; VSX-NEXT: .LBB3_2: 254*6a8d30b1SMatt Arsenault; VSX-NEXT: addis 3, 2, .LCPI3_0@toc@ha 255*6a8d30b1SMatt Arsenault; VSX-NEXT: lfs 1, .LCPI3_0@toc@l(3) 2564a8f2f2eSQiu Chaofan; VSX-NEXT: blr 2574a8f2f2eSQiu Chaofan; 2584a8f2f2eSQiu Chaofan; AIX-LABEL: f64_maximum: 2594a8f2f2eSQiu Chaofan; AIX: # %bb.0: # %entry 2604a8f2f2eSQiu Chaofan; AIX-NEXT: fcmpu 0, 1, 2 2614a8f2f2eSQiu Chaofan; AIX-NEXT: bc 12, 3, L..BB3_2 2624a8f2f2eSQiu Chaofan; AIX-NEXT: # %bb.1: # %entry 263*6a8d30b1SMatt Arsenault; AIX-NEXT: xsmaxdp 1, 1, 2 264*6a8d30b1SMatt Arsenault; AIX-NEXT: blr 2654a8f2f2eSQiu Chaofan; AIX-NEXT: L..BB3_2: 266*6a8d30b1SMatt Arsenault; AIX-NEXT: ld 3, L..C3(2) # %const.0 267*6a8d30b1SMatt Arsenault; AIX-NEXT: lfs 1, 0(3) 2684a8f2f2eSQiu Chaofan; AIX-NEXT: blr 2694a8f2f2eSQiu Chaofanentry: 2704a8f2f2eSQiu Chaofan %m = call double @llvm.maximum.f64(double %a, double %b) 2714a8f2f2eSQiu Chaofan ret double %m 2724a8f2f2eSQiu Chaofan} 2734a8f2f2eSQiu Chaofan 2744a8f2f2eSQiu Chaofandefine <4 x float> @v4f32_minimum(<4 x float> %a, <4 x float> %b) { 2754a8f2f2eSQiu Chaofan; NOVSX-LABEL: v4f32_minimum: 2764a8f2f2eSQiu Chaofan; NOVSX: # %bb.0: # %entry 2774a8f2f2eSQiu Chaofan; NOVSX-NEXT: vcmpeqfp 0, 3, 3 2784a8f2f2eSQiu Chaofan; NOVSX-NEXT: vcmpeqfp 1, 2, 2 2794a8f2f2eSQiu Chaofan; NOVSX-NEXT: addis 3, 2, .LCPI4_0@toc@ha 2804a8f2f2eSQiu Chaofan; NOVSX-NEXT: addi 3, 3, .LCPI4_0@toc@l 2814a8f2f2eSQiu Chaofan; NOVSX-NEXT: vnot 0, 0 2824a8f2f2eSQiu Chaofan; NOVSX-NEXT: vnot 1, 1 2834a8f2f2eSQiu Chaofan; NOVSX-NEXT: vspltisb 4, -1 2844a8f2f2eSQiu Chaofan; NOVSX-NEXT: vcmpgtfp 5, 3, 2 2854a8f2f2eSQiu Chaofan; NOVSX-NEXT: vslw 4, 4, 4 2864a8f2f2eSQiu Chaofan; NOVSX-NEXT: vor 0, 1, 0 2874a8f2f2eSQiu Chaofan; NOVSX-NEXT: lvx 1, 0, 3 2884a8f2f2eSQiu Chaofan; NOVSX-NEXT: vsel 5, 3, 2, 5 2894a8f2f2eSQiu Chaofan; NOVSX-NEXT: vsel 5, 5, 1, 0 2904a8f2f2eSQiu Chaofan; NOVSX-NEXT: vcmpequw 0, 2, 4 2914a8f2f2eSQiu Chaofan; NOVSX-NEXT: vcmpequw 4, 3, 4 2924a8f2f2eSQiu Chaofan; NOVSX-NEXT: vsel 2, 5, 2, 0 2934a8f2f2eSQiu Chaofan; NOVSX-NEXT: vsel 2, 2, 3, 4 2944a8f2f2eSQiu Chaofan; NOVSX-NEXT: vxor 3, 3, 3 2954a8f2f2eSQiu Chaofan; NOVSX-NEXT: vcmpeqfp 3, 5, 3 2964a8f2f2eSQiu Chaofan; NOVSX-NEXT: vsel 2, 5, 2, 3 2974a8f2f2eSQiu Chaofan; NOVSX-NEXT: blr 2984a8f2f2eSQiu Chaofan; 2994a8f2f2eSQiu Chaofan; VSX-LABEL: v4f32_minimum: 3004a8f2f2eSQiu Chaofan; VSX: # %bb.0: # %entry 3014a8f2f2eSQiu Chaofan; VSX-NEXT: xvcmpeqsp 1, 35, 35 3024a8f2f2eSQiu Chaofan; VSX-NEXT: xvcmpeqsp 2, 34, 34 3034a8f2f2eSQiu Chaofan; VSX-NEXT: addis 3, 2, .LCPI4_0@toc@ha 3044a8f2f2eSQiu Chaofan; VSX-NEXT: xxleqv 36, 36, 36 3054a8f2f2eSQiu Chaofan; VSX-NEXT: xvminsp 0, 34, 35 3064a8f2f2eSQiu Chaofan; VSX-NEXT: vslw 4, 4, 4 3074a8f2f2eSQiu Chaofan; VSX-NEXT: addi 3, 3, .LCPI4_0@toc@l 3084a8f2f2eSQiu Chaofan; VSX-NEXT: xxlnor 1, 1, 1 3094a8f2f2eSQiu Chaofan; VSX-NEXT: xxlnor 2, 2, 2 3104a8f2f2eSQiu Chaofan; VSX-NEXT: vcmpequw 5, 2, 4 3114a8f2f2eSQiu Chaofan; VSX-NEXT: xxlor 1, 2, 1 3124a8f2f2eSQiu Chaofan; VSX-NEXT: lxvd2x 2, 0, 3 3134a8f2f2eSQiu Chaofan; VSX-NEXT: xxsel 0, 0, 2, 1 3144a8f2f2eSQiu Chaofan; VSX-NEXT: xxlxor 2, 2, 2 3154a8f2f2eSQiu Chaofan; VSX-NEXT: xvcmpeqsp 2, 0, 2 3164a8f2f2eSQiu Chaofan; VSX-NEXT: xxsel 1, 0, 34, 37 3174a8f2f2eSQiu Chaofan; VSX-NEXT: vcmpequw 2, 3, 4 3184a8f2f2eSQiu Chaofan; VSX-NEXT: xxsel 1, 1, 35, 34 3194a8f2f2eSQiu Chaofan; VSX-NEXT: xxsel 34, 0, 1, 2 3204a8f2f2eSQiu Chaofan; VSX-NEXT: blr 3214a8f2f2eSQiu Chaofan; 3224a8f2f2eSQiu Chaofan; AIX-LABEL: v4f32_minimum: 3234a8f2f2eSQiu Chaofan; AIX: # %bb.0: # %entry 3244a8f2f2eSQiu Chaofan; AIX-NEXT: xvcmpeqsp 1, 35, 35 3254a8f2f2eSQiu Chaofan; AIX-NEXT: xvcmpeqsp 2, 34, 34 3264a8f2f2eSQiu Chaofan; AIX-NEXT: ld 3, L..C4(2) # %const.0 3274a8f2f2eSQiu Chaofan; AIX-NEXT: xxleqv 36, 36, 36 3284a8f2f2eSQiu Chaofan; AIX-NEXT: xvminsp 0, 34, 35 3294a8f2f2eSQiu Chaofan; AIX-NEXT: vslw 4, 4, 4 3304a8f2f2eSQiu Chaofan; AIX-NEXT: xxlnor 1, 1, 1 3314a8f2f2eSQiu Chaofan; AIX-NEXT: xxlnor 2, 2, 2 3324a8f2f2eSQiu Chaofan; AIX-NEXT: vcmpequw 5, 2, 4 3334a8f2f2eSQiu Chaofan; AIX-NEXT: xxlor 1, 2, 1 3344a8f2f2eSQiu Chaofan; AIX-NEXT: lxvw4x 2, 0, 3 3354a8f2f2eSQiu Chaofan; AIX-NEXT: xxsel 0, 0, 2, 1 3364a8f2f2eSQiu Chaofan; AIX-NEXT: xxlxor 2, 2, 2 3374a8f2f2eSQiu Chaofan; AIX-NEXT: xvcmpeqsp 2, 0, 2 3384a8f2f2eSQiu Chaofan; AIX-NEXT: xxsel 1, 0, 34, 37 3394a8f2f2eSQiu Chaofan; AIX-NEXT: vcmpequw 2, 3, 4 3404a8f2f2eSQiu Chaofan; AIX-NEXT: xxsel 1, 1, 35, 34 3414a8f2f2eSQiu Chaofan; AIX-NEXT: xxsel 34, 0, 1, 2 3424a8f2f2eSQiu Chaofan; AIX-NEXT: blr 3434a8f2f2eSQiu Chaofanentry: 3444a8f2f2eSQiu Chaofan %m = call <4 x float> @llvm.minimum.v4f32(<4 x float> %a, <4 x float> %b) 3454a8f2f2eSQiu Chaofan ret <4 x float> %m 3464a8f2f2eSQiu Chaofan} 3474a8f2f2eSQiu Chaofan 3484a8f2f2eSQiu Chaofandefine <4 x float> @v4f32_maximum(<4 x float> %a, <4 x float> %b) { 3494a8f2f2eSQiu Chaofan; NOVSX-LABEL: v4f32_maximum: 3504a8f2f2eSQiu Chaofan; NOVSX: # %bb.0: # %entry 3514a8f2f2eSQiu Chaofan; NOVSX-NEXT: vcmpeqfp 5, 3, 3 3524a8f2f2eSQiu Chaofan; NOVSX-NEXT: vcmpeqfp 0, 2, 2 3534a8f2f2eSQiu Chaofan; NOVSX-NEXT: addis 3, 2, .LCPI5_0@toc@ha 3544a8f2f2eSQiu Chaofan; NOVSX-NEXT: addi 3, 3, .LCPI5_0@toc@l 3554a8f2f2eSQiu Chaofan; NOVSX-NEXT: vnot 5, 5 3564a8f2f2eSQiu Chaofan; NOVSX-NEXT: vnot 0, 0 3574a8f2f2eSQiu Chaofan; NOVSX-NEXT: vcmpgtfp 4, 2, 3 3584a8f2f2eSQiu Chaofan; NOVSX-NEXT: vor 5, 0, 5 3594a8f2f2eSQiu Chaofan; NOVSX-NEXT: lvx 0, 0, 3 3604a8f2f2eSQiu Chaofan; NOVSX-NEXT: vsel 4, 3, 2, 4 3614a8f2f2eSQiu Chaofan; NOVSX-NEXT: vsel 4, 4, 0, 5 3624a8f2f2eSQiu Chaofan; NOVSX-NEXT: vxor 5, 5, 5 3634a8f2f2eSQiu Chaofan; NOVSX-NEXT: vcmpequw 0, 2, 5 3644a8f2f2eSQiu Chaofan; NOVSX-NEXT: vsel 2, 4, 2, 0 3654a8f2f2eSQiu Chaofan; NOVSX-NEXT: vcmpequw 0, 3, 5 3664a8f2f2eSQiu Chaofan; NOVSX-NEXT: vsel 2, 2, 3, 0 3674a8f2f2eSQiu Chaofan; NOVSX-NEXT: vcmpeqfp 3, 4, 5 3684a8f2f2eSQiu Chaofan; NOVSX-NEXT: vsel 2, 4, 2, 3 3694a8f2f2eSQiu Chaofan; NOVSX-NEXT: blr 3704a8f2f2eSQiu Chaofan; 3714a8f2f2eSQiu Chaofan; VSX-LABEL: v4f32_maximum: 3724a8f2f2eSQiu Chaofan; VSX: # %bb.0: # %entry 3734a8f2f2eSQiu Chaofan; VSX-NEXT: xvcmpeqsp 1, 35, 35 3744a8f2f2eSQiu Chaofan; VSX-NEXT: xvcmpeqsp 2, 34, 34 3754a8f2f2eSQiu Chaofan; VSX-NEXT: addis 3, 2, .LCPI5_0@toc@ha 3764a8f2f2eSQiu Chaofan; VSX-NEXT: addi 3, 3, .LCPI5_0@toc@l 3774a8f2f2eSQiu Chaofan; VSX-NEXT: xxlnor 1, 1, 1 3784a8f2f2eSQiu Chaofan; VSX-NEXT: xxlnor 2, 2, 2 3794a8f2f2eSQiu Chaofan; VSX-NEXT: xvmaxsp 0, 34, 35 3804a8f2f2eSQiu Chaofan; VSX-NEXT: xxlxor 36, 36, 36 3814a8f2f2eSQiu Chaofan; VSX-NEXT: vcmpequw 5, 2, 4 3824a8f2f2eSQiu Chaofan; VSX-NEXT: xxlor 1, 2, 1 3834a8f2f2eSQiu Chaofan; VSX-NEXT: lxvd2x 2, 0, 3 3844a8f2f2eSQiu Chaofan; VSX-NEXT: xxsel 0, 0, 2, 1 3854a8f2f2eSQiu Chaofan; VSX-NEXT: xvcmpeqsp 2, 0, 36 3864a8f2f2eSQiu Chaofan; VSX-NEXT: xxsel 1, 0, 34, 37 3874a8f2f2eSQiu Chaofan; VSX-NEXT: vcmpequw 2, 3, 4 3884a8f2f2eSQiu Chaofan; VSX-NEXT: xxsel 1, 1, 35, 34 3894a8f2f2eSQiu Chaofan; VSX-NEXT: xxsel 34, 0, 1, 2 3904a8f2f2eSQiu Chaofan; VSX-NEXT: blr 3914a8f2f2eSQiu Chaofan; 3924a8f2f2eSQiu Chaofan; AIX-LABEL: v4f32_maximum: 3934a8f2f2eSQiu Chaofan; AIX: # %bb.0: # %entry 3944a8f2f2eSQiu Chaofan; AIX-NEXT: xvcmpeqsp 1, 35, 35 3954a8f2f2eSQiu Chaofan; AIX-NEXT: xvcmpeqsp 2, 34, 34 3964a8f2f2eSQiu Chaofan; AIX-NEXT: ld 3, L..C5(2) # %const.0 3974a8f2f2eSQiu Chaofan; AIX-NEXT: xvmaxsp 0, 34, 35 3984a8f2f2eSQiu Chaofan; AIX-NEXT: xxlxor 36, 36, 36 3994a8f2f2eSQiu Chaofan; AIX-NEXT: xxlnor 1, 1, 1 4004a8f2f2eSQiu Chaofan; AIX-NEXT: xxlnor 2, 2, 2 4014a8f2f2eSQiu Chaofan; AIX-NEXT: vcmpequw 5, 2, 4 4024a8f2f2eSQiu Chaofan; AIX-NEXT: xxlor 1, 2, 1 4034a8f2f2eSQiu Chaofan; AIX-NEXT: lxvw4x 2, 0, 3 4044a8f2f2eSQiu Chaofan; AIX-NEXT: xxsel 0, 0, 2, 1 4054a8f2f2eSQiu Chaofan; AIX-NEXT: xvcmpeqsp 2, 0, 36 4064a8f2f2eSQiu Chaofan; AIX-NEXT: xxsel 1, 0, 34, 37 4074a8f2f2eSQiu Chaofan; AIX-NEXT: vcmpequw 2, 3, 4 4084a8f2f2eSQiu Chaofan; AIX-NEXT: xxsel 1, 1, 35, 34 4094a8f2f2eSQiu Chaofan; AIX-NEXT: xxsel 34, 0, 1, 2 4104a8f2f2eSQiu Chaofan; AIX-NEXT: blr 4114a8f2f2eSQiu Chaofanentry: 4124a8f2f2eSQiu Chaofan %m = call <4 x float> @llvm.maximum.v4f32(<4 x float> %a, <4 x float> %b) 4134a8f2f2eSQiu Chaofan ret <4 x float> %m 4144a8f2f2eSQiu Chaofan} 4154a8f2f2eSQiu Chaofan 4164a8f2f2eSQiu Chaofandefine <2 x double> @v2f64_minimum(<2 x double> %a, <2 x double> %b) { 4174a8f2f2eSQiu Chaofan; NOVSX-LABEL: v2f64_minimum: 4184a8f2f2eSQiu Chaofan; NOVSX: # %bb.0: # %entry 4194a8f2f2eSQiu Chaofan; NOVSX-NEXT: fcmpu 0, 1, 3 4204a8f2f2eSQiu Chaofan; NOVSX-NEXT: fmr 6, 1 4214a8f2f2eSQiu Chaofan; NOVSX-NEXT: stfd 4, -16(1) 4224a8f2f2eSQiu Chaofan; NOVSX-NEXT: stfd 2, -8(1) 4234a8f2f2eSQiu Chaofan; NOVSX-NEXT: stfd 3, -32(1) 4244a8f2f2eSQiu Chaofan; NOVSX-NEXT: stfd 1, -24(1) 4254a8f2f2eSQiu Chaofan; NOVSX-NEXT: bc 12, 0, .LBB6_2 4264a8f2f2eSQiu Chaofan; NOVSX-NEXT: # %bb.1: # %entry 4274a8f2f2eSQiu Chaofan; NOVSX-NEXT: fmr 6, 3 4284a8f2f2eSQiu Chaofan; NOVSX-NEXT: .LBB6_2: # %entry 4294a8f2f2eSQiu Chaofan; NOVSX-NEXT: addis 3, 2, .LCPI6_0@toc@ha 4304a8f2f2eSQiu Chaofan; NOVSX-NEXT: ld 4, -24(1) 4314a8f2f2eSQiu Chaofan; NOVSX-NEXT: lfs 0, .LCPI6_0@toc@l(3) 4324a8f2f2eSQiu Chaofan; NOVSX-NEXT: fmr 5, 0 4334a8f2f2eSQiu Chaofan; NOVSX-NEXT: bc 12, 3, .LBB6_4 4344a8f2f2eSQiu Chaofan; NOVSX-NEXT: # %bb.3: # %entry 4354a8f2f2eSQiu Chaofan; NOVSX-NEXT: fmr 5, 6 4364a8f2f2eSQiu Chaofan; NOVSX-NEXT: .LBB6_4: # %entry 4374a8f2f2eSQiu Chaofan; NOVSX-NEXT: li 3, 1 4384a8f2f2eSQiu Chaofan; NOVSX-NEXT: ld 5, -32(1) 4394a8f2f2eSQiu Chaofan; NOVSX-NEXT: rldic 3, 3, 63, 0 4404a8f2f2eSQiu Chaofan; NOVSX-NEXT: cmpd 4, 3 4414a8f2f2eSQiu Chaofan; NOVSX-NEXT: bc 12, 2, .LBB6_6 4424a8f2f2eSQiu Chaofan; NOVSX-NEXT: # %bb.5: # %entry 4434a8f2f2eSQiu Chaofan; NOVSX-NEXT: fmr 1, 5 4444a8f2f2eSQiu Chaofan; NOVSX-NEXT: .LBB6_6: # %entry 4454a8f2f2eSQiu Chaofan; NOVSX-NEXT: cmpd 5, 3 4464a8f2f2eSQiu Chaofan; NOVSX-NEXT: bc 12, 2, .LBB6_8 4474a8f2f2eSQiu Chaofan; NOVSX-NEXT: # %bb.7: # %entry 4484a8f2f2eSQiu Chaofan; NOVSX-NEXT: fmr 3, 1 4494a8f2f2eSQiu Chaofan; NOVSX-NEXT: .LBB6_8: # %entry 4504a8f2f2eSQiu Chaofan; NOVSX-NEXT: addis 4, 2, .LCPI6_1@toc@ha 4514a8f2f2eSQiu Chaofan; NOVSX-NEXT: lfs 1, .LCPI6_1@toc@l(4) 4524a8f2f2eSQiu Chaofan; NOVSX-NEXT: fcmpu 0, 5, 1 4534a8f2f2eSQiu Chaofan; NOVSX-NEXT: bc 12, 2, .LBB6_10 4544a8f2f2eSQiu Chaofan; NOVSX-NEXT: # %bb.9: # %entry 4554a8f2f2eSQiu Chaofan; NOVSX-NEXT: fmr 3, 5 4564a8f2f2eSQiu Chaofan; NOVSX-NEXT: .LBB6_10: # %entry 4574a8f2f2eSQiu Chaofan; NOVSX-NEXT: fcmpu 0, 2, 4 4584a8f2f2eSQiu Chaofan; NOVSX-NEXT: fmr 5, 2 4594a8f2f2eSQiu Chaofan; NOVSX-NEXT: bc 12, 0, .LBB6_12 4604a8f2f2eSQiu Chaofan; NOVSX-NEXT: # %bb.11: # %entry 4614a8f2f2eSQiu Chaofan; NOVSX-NEXT: fmr 5, 4 4624a8f2f2eSQiu Chaofan; NOVSX-NEXT: .LBB6_12: # %entry 4634a8f2f2eSQiu Chaofan; NOVSX-NEXT: ld 5, -8(1) 4644a8f2f2eSQiu Chaofan; NOVSX-NEXT: bc 12, 3, .LBB6_14 4654a8f2f2eSQiu Chaofan; NOVSX-NEXT: # %bb.13: # %entry 4664a8f2f2eSQiu Chaofan; NOVSX-NEXT: fmr 0, 5 4674a8f2f2eSQiu Chaofan; NOVSX-NEXT: .LBB6_14: # %entry 4684a8f2f2eSQiu Chaofan; NOVSX-NEXT: cmpd 5, 3 4694a8f2f2eSQiu Chaofan; NOVSX-NEXT: ld 4, -16(1) 4704a8f2f2eSQiu Chaofan; NOVSX-NEXT: bc 4, 2, .LBB6_19 4714a8f2f2eSQiu Chaofan; NOVSX-NEXT: # %bb.15: # %entry 4724a8f2f2eSQiu Chaofan; NOVSX-NEXT: cmpd 4, 3 4734a8f2f2eSQiu Chaofan; NOVSX-NEXT: bc 4, 2, .LBB6_20 4744a8f2f2eSQiu Chaofan; NOVSX-NEXT: .LBB6_16: # %entry 4754a8f2f2eSQiu Chaofan; NOVSX-NEXT: fcmpu 0, 0, 1 4764a8f2f2eSQiu Chaofan; NOVSX-NEXT: bc 12, 2, .LBB6_18 4774a8f2f2eSQiu Chaofan; NOVSX-NEXT: .LBB6_17: # %entry 4784a8f2f2eSQiu Chaofan; NOVSX-NEXT: fmr 4, 0 4794a8f2f2eSQiu Chaofan; NOVSX-NEXT: .LBB6_18: # %entry 4804a8f2f2eSQiu Chaofan; NOVSX-NEXT: fmr 1, 3 4814a8f2f2eSQiu Chaofan; NOVSX-NEXT: fmr 2, 4 4824a8f2f2eSQiu Chaofan; NOVSX-NEXT: blr 4834a8f2f2eSQiu Chaofan; NOVSX-NEXT: .LBB6_19: # %entry 4844a8f2f2eSQiu Chaofan; NOVSX-NEXT: fmr 2, 0 4854a8f2f2eSQiu Chaofan; NOVSX-NEXT: cmpd 4, 3 4864a8f2f2eSQiu Chaofan; NOVSX-NEXT: bc 12, 2, .LBB6_16 4874a8f2f2eSQiu Chaofan; NOVSX-NEXT: .LBB6_20: # %entry 4884a8f2f2eSQiu Chaofan; NOVSX-NEXT: fmr 4, 2 4894a8f2f2eSQiu Chaofan; NOVSX-NEXT: fcmpu 0, 0, 1 4904a8f2f2eSQiu Chaofan; NOVSX-NEXT: bc 4, 2, .LBB6_17 4914a8f2f2eSQiu Chaofan; NOVSX-NEXT: b .LBB6_18 4924a8f2f2eSQiu Chaofan; 4934a8f2f2eSQiu Chaofan; VSX-LABEL: v2f64_minimum: 4944a8f2f2eSQiu Chaofan; VSX: # %bb.0: # %entry 4954a8f2f2eSQiu Chaofan; VSX-NEXT: addis 3, 2, .LCPI6_0@toc@ha 4964a8f2f2eSQiu Chaofan; VSX-NEXT: xvcmpeqdp 36, 35, 35 4974a8f2f2eSQiu Chaofan; VSX-NEXT: xvcmpeqdp 37, 34, 34 4984a8f2f2eSQiu Chaofan; VSX-NEXT: addi 3, 3, .LCPI6_0@toc@l 4994a8f2f2eSQiu Chaofan; VSX-NEXT: xxlnor 36, 36, 36 5004a8f2f2eSQiu Chaofan; VSX-NEXT: xxlnor 37, 37, 37 5014a8f2f2eSQiu Chaofan; VSX-NEXT: xvmindp 0, 34, 35 5024a8f2f2eSQiu Chaofan; VSX-NEXT: lxvd2x 2, 0, 3 5034a8f2f2eSQiu Chaofan; VSX-NEXT: addis 3, 2, .LCPI6_1@toc@ha 5044a8f2f2eSQiu Chaofan; VSX-NEXT: xxlor 1, 37, 36 5054a8f2f2eSQiu Chaofan; VSX-NEXT: addi 3, 3, .LCPI6_1@toc@l 5064a8f2f2eSQiu Chaofan; VSX-NEXT: lxvd2x 36, 0, 3 5074a8f2f2eSQiu Chaofan; VSX-NEXT: vcmpequd 5, 2, 4 5084a8f2f2eSQiu Chaofan; VSX-NEXT: xxsel 0, 0, 2, 1 5094a8f2f2eSQiu Chaofan; VSX-NEXT: xxlxor 2, 2, 2 5104a8f2f2eSQiu Chaofan; VSX-NEXT: xxsel 1, 0, 34, 37 5114a8f2f2eSQiu Chaofan; VSX-NEXT: vcmpequd 2, 3, 4 5124a8f2f2eSQiu Chaofan; VSX-NEXT: xxsel 1, 1, 35, 34 5134a8f2f2eSQiu Chaofan; VSX-NEXT: xvcmpeqdp 34, 0, 2 5144a8f2f2eSQiu Chaofan; VSX-NEXT: xxsel 34, 0, 1, 34 5154a8f2f2eSQiu Chaofan; VSX-NEXT: blr 5164a8f2f2eSQiu Chaofan; 5174a8f2f2eSQiu Chaofan; AIX-LABEL: v2f64_minimum: 5184a8f2f2eSQiu Chaofan; AIX: # %bb.0: # %entry 5194a8f2f2eSQiu Chaofan; AIX-NEXT: ld 3, L..C6(2) # %const.0 5204a8f2f2eSQiu Chaofan; AIX-NEXT: xvcmpeqdp 36, 35, 35 5214a8f2f2eSQiu Chaofan; AIX-NEXT: xvcmpeqdp 37, 34, 34 5224a8f2f2eSQiu Chaofan; AIX-NEXT: lxvd2x 2, 0, 3 5234a8f2f2eSQiu Chaofan; AIX-NEXT: ld 3, L..C7(2) # %const.1 5244a8f2f2eSQiu Chaofan; AIX-NEXT: xxlnor 36, 36, 36 5254a8f2f2eSQiu Chaofan; AIX-NEXT: xxlnor 37, 37, 37 5264a8f2f2eSQiu Chaofan; AIX-NEXT: xvmindp 0, 34, 35 5274a8f2f2eSQiu Chaofan; AIX-NEXT: xxlor 1, 37, 36 5284a8f2f2eSQiu Chaofan; AIX-NEXT: lxvd2x 36, 0, 3 5294a8f2f2eSQiu Chaofan; AIX-NEXT: vcmpequd 5, 2, 4 5304a8f2f2eSQiu Chaofan; AIX-NEXT: xxsel 0, 0, 2, 1 5314a8f2f2eSQiu Chaofan; AIX-NEXT: xxlxor 2, 2, 2 5324a8f2f2eSQiu Chaofan; AIX-NEXT: xxsel 1, 0, 34, 37 5334a8f2f2eSQiu Chaofan; AIX-NEXT: vcmpequd 2, 3, 4 5344a8f2f2eSQiu Chaofan; AIX-NEXT: xxsel 1, 1, 35, 34 5354a8f2f2eSQiu Chaofan; AIX-NEXT: xvcmpeqdp 34, 0, 2 5364a8f2f2eSQiu Chaofan; AIX-NEXT: xxsel 34, 0, 1, 34 5374a8f2f2eSQiu Chaofan; AIX-NEXT: blr 5384a8f2f2eSQiu Chaofanentry: 5394a8f2f2eSQiu Chaofan %m = call <2 x double> @llvm.minimum.v2f64(<2 x double> %a, <2 x double> %b) 5404a8f2f2eSQiu Chaofan ret <2 x double> %m 5414a8f2f2eSQiu Chaofan} 5424a8f2f2eSQiu Chaofan 5434a8f2f2eSQiu Chaofandefine <2 x double> @v2f64_maximum(<2 x double> %a, <2 x double> %b) { 5444a8f2f2eSQiu Chaofan; NOVSX-LABEL: v2f64_maximum: 5454a8f2f2eSQiu Chaofan; NOVSX: # %bb.0: # %entry 5464a8f2f2eSQiu Chaofan; NOVSX-NEXT: fcmpu 0, 1, 3 5474a8f2f2eSQiu Chaofan; NOVSX-NEXT: fmr 6, 1 5484a8f2f2eSQiu Chaofan; NOVSX-NEXT: stfd 4, -16(1) 5494a8f2f2eSQiu Chaofan; NOVSX-NEXT: stfd 2, -8(1) 5504a8f2f2eSQiu Chaofan; NOVSX-NEXT: stfd 3, -32(1) 5514a8f2f2eSQiu Chaofan; NOVSX-NEXT: stfd 1, -24(1) 5524a8f2f2eSQiu Chaofan; NOVSX-NEXT: bc 12, 1, .LBB7_2 5534a8f2f2eSQiu Chaofan; NOVSX-NEXT: # %bb.1: # %entry 5544a8f2f2eSQiu Chaofan; NOVSX-NEXT: fmr 6, 3 5554a8f2f2eSQiu Chaofan; NOVSX-NEXT: .LBB7_2: # %entry 5564a8f2f2eSQiu Chaofan; NOVSX-NEXT: addis 4, 2, .LCPI7_0@toc@ha 5574a8f2f2eSQiu Chaofan; NOVSX-NEXT: ld 3, -24(1) 5584a8f2f2eSQiu Chaofan; NOVSX-NEXT: lfs 0, .LCPI7_0@toc@l(4) 5594a8f2f2eSQiu Chaofan; NOVSX-NEXT: fmr 5, 0 5604a8f2f2eSQiu Chaofan; NOVSX-NEXT: bc 12, 3, .LBB7_4 5614a8f2f2eSQiu Chaofan; NOVSX-NEXT: # %bb.3: # %entry 5624a8f2f2eSQiu Chaofan; NOVSX-NEXT: fmr 5, 6 5634a8f2f2eSQiu Chaofan; NOVSX-NEXT: .LBB7_4: # %entry 5644a8f2f2eSQiu Chaofan; NOVSX-NEXT: cmpdi 3, 0 5654a8f2f2eSQiu Chaofan; NOVSX-NEXT: ld 4, -32(1) 5664a8f2f2eSQiu Chaofan; NOVSX-NEXT: bc 12, 2, .LBB7_6 5674a8f2f2eSQiu Chaofan; NOVSX-NEXT: # %bb.5: # %entry 5684a8f2f2eSQiu Chaofan; NOVSX-NEXT: fmr 1, 5 5694a8f2f2eSQiu Chaofan; NOVSX-NEXT: .LBB7_6: # %entry 5704a8f2f2eSQiu Chaofan; NOVSX-NEXT: cmpdi 4, 0 5714a8f2f2eSQiu Chaofan; NOVSX-NEXT: bc 12, 2, .LBB7_8 5724a8f2f2eSQiu Chaofan; NOVSX-NEXT: # %bb.7: # %entry 5734a8f2f2eSQiu Chaofan; NOVSX-NEXT: fmr 3, 1 5744a8f2f2eSQiu Chaofan; NOVSX-NEXT: .LBB7_8: # %entry 5754a8f2f2eSQiu Chaofan; NOVSX-NEXT: addis 3, 2, .LCPI7_1@toc@ha 5764a8f2f2eSQiu Chaofan; NOVSX-NEXT: lfs 1, .LCPI7_1@toc@l(3) 5774a8f2f2eSQiu Chaofan; NOVSX-NEXT: fcmpu 0, 5, 1 5784a8f2f2eSQiu Chaofan; NOVSX-NEXT: bc 12, 2, .LBB7_10 5794a8f2f2eSQiu Chaofan; NOVSX-NEXT: # %bb.9: # %entry 5804a8f2f2eSQiu Chaofan; NOVSX-NEXT: fmr 3, 5 5814a8f2f2eSQiu Chaofan; NOVSX-NEXT: .LBB7_10: # %entry 5824a8f2f2eSQiu Chaofan; NOVSX-NEXT: fcmpu 0, 2, 4 5834a8f2f2eSQiu Chaofan; NOVSX-NEXT: fmr 5, 2 5844a8f2f2eSQiu Chaofan; NOVSX-NEXT: bc 12, 1, .LBB7_12 5854a8f2f2eSQiu Chaofan; NOVSX-NEXT: # %bb.11: # %entry 5864a8f2f2eSQiu Chaofan; NOVSX-NEXT: fmr 5, 4 5874a8f2f2eSQiu Chaofan; NOVSX-NEXT: .LBB7_12: # %entry 5884a8f2f2eSQiu Chaofan; NOVSX-NEXT: ld 4, -8(1) 5894a8f2f2eSQiu Chaofan; NOVSX-NEXT: bc 12, 3, .LBB7_14 5904a8f2f2eSQiu Chaofan; NOVSX-NEXT: # %bb.13: # %entry 5914a8f2f2eSQiu Chaofan; NOVSX-NEXT: fmr 0, 5 5924a8f2f2eSQiu Chaofan; NOVSX-NEXT: .LBB7_14: # %entry 5934a8f2f2eSQiu Chaofan; NOVSX-NEXT: cmpdi 4, 0 5944a8f2f2eSQiu Chaofan; NOVSX-NEXT: ld 3, -16(1) 5954a8f2f2eSQiu Chaofan; NOVSX-NEXT: bc 4, 2, .LBB7_19 5964a8f2f2eSQiu Chaofan; NOVSX-NEXT: # %bb.15: # %entry 5974a8f2f2eSQiu Chaofan; NOVSX-NEXT: cmpdi 3, 0 5984a8f2f2eSQiu Chaofan; NOVSX-NEXT: bc 4, 2, .LBB7_20 5994a8f2f2eSQiu Chaofan; NOVSX-NEXT: .LBB7_16: # %entry 6004a8f2f2eSQiu Chaofan; NOVSX-NEXT: fcmpu 0, 0, 1 6014a8f2f2eSQiu Chaofan; NOVSX-NEXT: bc 12, 2, .LBB7_18 6024a8f2f2eSQiu Chaofan; NOVSX-NEXT: .LBB7_17: # %entry 6034a8f2f2eSQiu Chaofan; NOVSX-NEXT: fmr 4, 0 6044a8f2f2eSQiu Chaofan; NOVSX-NEXT: .LBB7_18: # %entry 6054a8f2f2eSQiu Chaofan; NOVSX-NEXT: fmr 1, 3 6064a8f2f2eSQiu Chaofan; NOVSX-NEXT: fmr 2, 4 6074a8f2f2eSQiu Chaofan; NOVSX-NEXT: blr 6084a8f2f2eSQiu Chaofan; NOVSX-NEXT: .LBB7_19: # %entry 6094a8f2f2eSQiu Chaofan; NOVSX-NEXT: fmr 2, 0 6104a8f2f2eSQiu Chaofan; NOVSX-NEXT: cmpdi 3, 0 6114a8f2f2eSQiu Chaofan; NOVSX-NEXT: bc 12, 2, .LBB7_16 6124a8f2f2eSQiu Chaofan; NOVSX-NEXT: .LBB7_20: # %entry 6134a8f2f2eSQiu Chaofan; NOVSX-NEXT: fmr 4, 2 6144a8f2f2eSQiu Chaofan; NOVSX-NEXT: fcmpu 0, 0, 1 6154a8f2f2eSQiu Chaofan; NOVSX-NEXT: bc 4, 2, .LBB7_17 6164a8f2f2eSQiu Chaofan; NOVSX-NEXT: b .LBB7_18 6174a8f2f2eSQiu Chaofan; 6184a8f2f2eSQiu Chaofan; VSX-LABEL: v2f64_maximum: 6194a8f2f2eSQiu Chaofan; VSX: # %bb.0: # %entry 6204a8f2f2eSQiu Chaofan; VSX-NEXT: addis 3, 2, .LCPI7_0@toc@ha 6214a8f2f2eSQiu Chaofan; VSX-NEXT: xvcmpeqdp 36, 35, 35 6224a8f2f2eSQiu Chaofan; VSX-NEXT: xvcmpeqdp 37, 34, 34 6234a8f2f2eSQiu Chaofan; VSX-NEXT: addi 3, 3, .LCPI7_0@toc@l 6244a8f2f2eSQiu Chaofan; VSX-NEXT: xxlnor 36, 36, 36 6254a8f2f2eSQiu Chaofan; VSX-NEXT: xxlnor 37, 37, 37 6264a8f2f2eSQiu Chaofan; VSX-NEXT: xvmaxdp 0, 34, 35 6274a8f2f2eSQiu Chaofan; VSX-NEXT: lxvd2x 2, 0, 3 6284a8f2f2eSQiu Chaofan; VSX-NEXT: xxlor 1, 37, 36 6294a8f2f2eSQiu Chaofan; VSX-NEXT: xxlxor 36, 36, 36 6304a8f2f2eSQiu Chaofan; VSX-NEXT: vcmpequd 5, 2, 4 6314a8f2f2eSQiu Chaofan; VSX-NEXT: xxsel 0, 0, 2, 1 6324a8f2f2eSQiu Chaofan; VSX-NEXT: xxsel 1, 0, 34, 37 6334a8f2f2eSQiu Chaofan; VSX-NEXT: vcmpequd 2, 3, 4 6344a8f2f2eSQiu Chaofan; VSX-NEXT: xxsel 1, 1, 35, 34 6354a8f2f2eSQiu Chaofan; VSX-NEXT: xvcmpeqdp 34, 0, 36 6364a8f2f2eSQiu Chaofan; VSX-NEXT: xxsel 34, 0, 1, 34 6374a8f2f2eSQiu Chaofan; VSX-NEXT: blr 6384a8f2f2eSQiu Chaofan; 6394a8f2f2eSQiu Chaofan; AIX-LABEL: v2f64_maximum: 6404a8f2f2eSQiu Chaofan; AIX: # %bb.0: # %entry 6414a8f2f2eSQiu Chaofan; AIX-NEXT: ld 3, L..C8(2) # %const.0 6424a8f2f2eSQiu Chaofan; AIX-NEXT: xvcmpeqdp 36, 35, 35 6434a8f2f2eSQiu Chaofan; AIX-NEXT: xvcmpeqdp 37, 34, 34 6444a8f2f2eSQiu Chaofan; AIX-NEXT: lxvd2x 2, 0, 3 6454a8f2f2eSQiu Chaofan; AIX-NEXT: xxlnor 36, 36, 36 6464a8f2f2eSQiu Chaofan; AIX-NEXT: xxlnor 37, 37, 37 6474a8f2f2eSQiu Chaofan; AIX-NEXT: xvmaxdp 0, 34, 35 6484a8f2f2eSQiu Chaofan; AIX-NEXT: xxlor 1, 37, 36 6494a8f2f2eSQiu Chaofan; AIX-NEXT: xxlxor 36, 36, 36 6504a8f2f2eSQiu Chaofan; AIX-NEXT: vcmpequd 5, 2, 4 6514a8f2f2eSQiu Chaofan; AIX-NEXT: xxsel 0, 0, 2, 1 6524a8f2f2eSQiu Chaofan; AIX-NEXT: xxsel 1, 0, 34, 37 6534a8f2f2eSQiu Chaofan; AIX-NEXT: vcmpequd 2, 3, 4 6544a8f2f2eSQiu Chaofan; AIX-NEXT: xxsel 1, 1, 35, 34 6554a8f2f2eSQiu Chaofan; AIX-NEXT: xvcmpeqdp 34, 0, 36 6564a8f2f2eSQiu Chaofan; AIX-NEXT: xxsel 34, 0, 1, 34 6574a8f2f2eSQiu Chaofan; AIX-NEXT: blr 6584a8f2f2eSQiu Chaofanentry: 6594a8f2f2eSQiu Chaofan %m = call <2 x double> @llvm.maximum.v2f64(<2 x double> %a, <2 x double> %b) 6604a8f2f2eSQiu Chaofan ret <2 x double> %m 6614a8f2f2eSQiu Chaofan} 6624a8f2f2eSQiu Chaofan 6634a8f2f2eSQiu Chaofandeclare float @llvm.maximum.f32(float, float) 6644a8f2f2eSQiu Chaofandeclare double @llvm.maximum.f64(double, double) 6654a8f2f2eSQiu Chaofandeclare <4 x float> @llvm.maximum.v4f32(<4 x float>, <4 x float>) 6664a8f2f2eSQiu Chaofandeclare <2 x double> @llvm.maximum.v2f64(<2 x double>, <2 x double>) 6674a8f2f2eSQiu Chaofan 6684a8f2f2eSQiu Chaofandeclare float @llvm.minimum.f32(float, float) 6694a8f2f2eSQiu Chaofandeclare double @llvm.minimum.f64(double, double) 6704a8f2f2eSQiu Chaofandeclare <4 x float> @llvm.minimum.v4f32(<4 x float>, <4 x float>) 6714a8f2f2eSQiu Chaofandeclare <2 x double> @llvm.minimum.v2f64(<2 x double>, <2 x double>) 672