brintos

brintos / llvm-project-archived public Read only

0
0
Text · 144.6 KiB · 95ff0d9 Raw
4208 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -verify-machineinstrs -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \3; RUN:   -mcpu=pwr9 -mtriple=powerpc64le < %s | FileCheck %s --check-prefix=PWR9LE4; RUN: llc -verify-machineinstrs -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \5; RUN:   -mcpu=pwr9 -mtriple=powerpc64 < %s | FileCheck %s --check-prefix=PWR9BE6; RUN: llc -verify-machineinstrs -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \7; RUN:   -mattr=-paired-vector-memops -mcpu=pwr10 -mtriple=powerpc64le < %s | \8; RUN:   FileCheck %s --check-prefix=PWR10LE9; RUN: llc -verify-machineinstrs -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \10; RUN:   -mattr=-paired-vector-memops -mcpu=pwr10 -mtriple=powerpc64 < %s | \11; RUN:   FileCheck %s --check-prefix=PWR10BE12 13;;14;; Vectors of f3215;;16define dso_local float @v2f32(<2 x float> %a) local_unnamed_addr #0 {17; PWR9LE-LABEL: v2f32:18; PWR9LE:       # %bb.0: # %entry19; PWR9LE-NEXT:    xxsldwi vs0, v2, v2, 320; PWR9LE-NEXT:    xxswapd vs1, v221; PWR9LE-NEXT:    xscvspdpn f0, vs022; PWR9LE-NEXT:    xscvspdpn f1, vs123; PWR9LE-NEXT:    xsaddsp f1, f0, f124; PWR9LE-NEXT:    blr25;26; PWR9BE-LABEL: v2f32:27; PWR9BE:       # %bb.0: # %entry28; PWR9BE-NEXT:    xxsldwi vs1, v2, v2, 129; PWR9BE-NEXT:    xscvspdpn f0, v230; PWR9BE-NEXT:    xscvspdpn f1, vs131; PWR9BE-NEXT:    xsaddsp f1, f0, f132; PWR9BE-NEXT:    blr33;34; PWR10LE-LABEL: v2f32:35; PWR10LE:       # %bb.0: # %entry36; PWR10LE-NEXT:    xxsldwi vs0, v2, v2, 337; PWR10LE-NEXT:    xxswapd vs1, v238; PWR10LE-NEXT:    xscvspdpn f0, vs039; PWR10LE-NEXT:    xscvspdpn f1, vs140; PWR10LE-NEXT:    xsaddsp f1, f0, f141; PWR10LE-NEXT:    blr42;43; PWR10BE-LABEL: v2f32:44; PWR10BE:       # %bb.0: # %entry45; PWR10BE-NEXT:    xxsldwi vs1, v2, v2, 146; PWR10BE-NEXT:    xscvspdpn f0, v247; PWR10BE-NEXT:    xscvspdpn f1, vs148; PWR10BE-NEXT:    xsaddsp f1, f0, f149; PWR10BE-NEXT:    blr50entry:51  %0 = call float @llvm.vector.reduce.fadd.v2f32(float -0.000000e+00, <2 x float> %a)52  ret float %053}54 55define dso_local float @v2f32_b(<2 x float> %a, float %b) local_unnamed_addr #0 {56; PWR9LE-LABEL: v2f32_b:57; PWR9LE:       # %bb.0: # %entry58; PWR9LE-NEXT:    xxsldwi vs0, v2, v2, 359; PWR9LE-NEXT:    xscvspdpn f0, vs060; PWR9LE-NEXT:    xsaddsp f0, f1, f061; PWR9LE-NEXT:    xxswapd vs1, v262; PWR9LE-NEXT:    xscvspdpn f1, vs163; PWR9LE-NEXT:    xsaddsp f1, f0, f164; PWR9LE-NEXT:    blr65;66; PWR9BE-LABEL: v2f32_b:67; PWR9BE:       # %bb.0: # %entry68; PWR9BE-NEXT:    xscvspdpn f0, v269; PWR9BE-NEXT:    xsaddsp f0, f1, f070; PWR9BE-NEXT:    xxsldwi vs1, v2, v2, 171; PWR9BE-NEXT:    xscvspdpn f1, vs172; PWR9BE-NEXT:    xsaddsp f1, f0, f173; PWR9BE-NEXT:    blr74;75; PWR10LE-LABEL: v2f32_b:76; PWR10LE:       # %bb.0: # %entry77; PWR10LE-NEXT:    xxsldwi vs0, v2, v2, 378; PWR10LE-NEXT:    xscvspdpn f0, vs079; PWR10LE-NEXT:    xsaddsp f0, f1, f080; PWR10LE-NEXT:    xxswapd vs1, v281; PWR10LE-NEXT:    xscvspdpn f1, vs182; PWR10LE-NEXT:    xsaddsp f1, f0, f183; PWR10LE-NEXT:    blr84;85; PWR10BE-LABEL: v2f32_b:86; PWR10BE:       # %bb.0: # %entry87; PWR10BE-NEXT:    xscvspdpn f0, v288; PWR10BE-NEXT:    xsaddsp f0, f1, f089; PWR10BE-NEXT:    xxsldwi vs1, v2, v2, 190; PWR10BE-NEXT:    xscvspdpn f1, vs191; PWR10BE-NEXT:    xsaddsp f1, f0, f192; PWR10BE-NEXT:    blr93entry:94  %0 = call float @llvm.vector.reduce.fadd.v2f32(float %b, <2 x float> %a)95  ret float %096}97 98define dso_local float @v2f32_fast(<2 x float> %a) local_unnamed_addr #0 {99; PWR9LE-LABEL: v2f32_fast:100; PWR9LE:       # %bb.0: # %entry101; PWR9LE-NEXT:    xxspltw vs0, v2, 2102; PWR9LE-NEXT:    xvaddsp vs0, v2, vs0103; PWR9LE-NEXT:    xxsldwi vs0, vs0, vs0, 3104; PWR9LE-NEXT:    xscvspdpn f1, vs0105; PWR9LE-NEXT:    blr106;107; PWR9BE-LABEL: v2f32_fast:108; PWR9BE:       # %bb.0: # %entry109; PWR9BE-NEXT:    xxspltw vs0, v2, 1110; PWR9BE-NEXT:    xvaddsp vs0, v2, vs0111; PWR9BE-NEXT:    xscvspdpn f1, vs0112; PWR9BE-NEXT:    blr113;114; PWR10LE-LABEL: v2f32_fast:115; PWR10LE:       # %bb.0: # %entry116; PWR10LE-NEXT:    xxspltw vs0, v2, 2117; PWR10LE-NEXT:    xvaddsp vs0, v2, vs0118; PWR10LE-NEXT:    xxsldwi vs0, vs0, vs0, 3119; PWR10LE-NEXT:    xscvspdpn f1, vs0120; PWR10LE-NEXT:    blr121;122; PWR10BE-LABEL: v2f32_fast:123; PWR10BE:       # %bb.0: # %entry124; PWR10BE-NEXT:    xxspltw vs0, v2, 1125; PWR10BE-NEXT:    xvaddsp vs0, v2, vs0126; PWR10BE-NEXT:    xscvspdpn f1, vs0127; PWR10BE-NEXT:    blr128entry:129  %0 = call fast float @llvm.vector.reduce.fadd.v2f32(float -0.000000e+00, <2 x float> %a)130  ret float %0131}132 133define dso_local float @v4f32(<4 x float> %a) local_unnamed_addr #0 {134; PWR9LE-LABEL: v4f32:135; PWR9LE:       # %bb.0: # %entry136; PWR9LE-NEXT:    xxsldwi vs0, v2, v2, 3137; PWR9LE-NEXT:    xxswapd vs1, v2138; PWR9LE-NEXT:    xscvspdpn f0, vs0139; PWR9LE-NEXT:    xscvspdpn f1, vs1140; PWR9LE-NEXT:    xsaddsp f0, f0, f1141; PWR9LE-NEXT:    xxsldwi vs1, v2, v2, 1142; PWR9LE-NEXT:    xscvspdpn f1, vs1143; PWR9LE-NEXT:    xsaddsp f0, f0, f1144; PWR9LE-NEXT:    xscvspdpn f1, v2145; PWR9LE-NEXT:    xsaddsp f1, f0, f1146; PWR9LE-NEXT:    blr147;148; PWR9BE-LABEL: v4f32:149; PWR9BE:       # %bb.0: # %entry150; PWR9BE-NEXT:    xxsldwi vs1, v2, v2, 1151; PWR9BE-NEXT:    xscvspdpn f0, v2152; PWR9BE-NEXT:    xscvspdpn f1, vs1153; PWR9BE-NEXT:    xsaddsp f0, f0, f1154; PWR9BE-NEXT:    xxswapd vs1, v2155; PWR9BE-NEXT:    xscvspdpn f1, vs1156; PWR9BE-NEXT:    xsaddsp f0, f0, f1157; PWR9BE-NEXT:    xxsldwi vs1, v2, v2, 3158; PWR9BE-NEXT:    xscvspdpn f1, vs1159; PWR9BE-NEXT:    xsaddsp f1, f0, f1160; PWR9BE-NEXT:    blr161;162; PWR10LE-LABEL: v4f32:163; PWR10LE:       # %bb.0: # %entry164; PWR10LE-NEXT:    xxsldwi vs0, v2, v2, 3165; PWR10LE-NEXT:    xxswapd vs1, v2166; PWR10LE-NEXT:    xscvspdpn f0, vs0167; PWR10LE-NEXT:    xscvspdpn f1, vs1168; PWR10LE-NEXT:    xsaddsp f0, f0, f1169; PWR10LE-NEXT:    xxsldwi vs1, v2, v2, 1170; PWR10LE-NEXT:    xscvspdpn f1, vs1171; PWR10LE-NEXT:    xsaddsp f0, f0, f1172; PWR10LE-NEXT:    xscvspdpn f1, v2173; PWR10LE-NEXT:    xsaddsp f1, f0, f1174; PWR10LE-NEXT:    blr175;176; PWR10BE-LABEL: v4f32:177; PWR10BE:       # %bb.0: # %entry178; PWR10BE-NEXT:    xxsldwi vs1, v2, v2, 1179; PWR10BE-NEXT:    xscvspdpn f0, v2180; PWR10BE-NEXT:    xscvspdpn f1, vs1181; PWR10BE-NEXT:    xsaddsp f0, f0, f1182; PWR10BE-NEXT:    xxswapd vs1, v2183; PWR10BE-NEXT:    xscvspdpn f1, vs1184; PWR10BE-NEXT:    xsaddsp f0, f0, f1185; PWR10BE-NEXT:    xxsldwi vs1, v2, v2, 3186; PWR10BE-NEXT:    xscvspdpn f1, vs1187; PWR10BE-NEXT:    xsaddsp f1, f0, f1188; PWR10BE-NEXT:    blr189entry:190  %0 = call float @llvm.vector.reduce.fadd.v4f32(float -0.000000e+00, <4 x float> %a)191  ret float %0192}193 194define dso_local float @v4f32_b(<4 x float> %a, float %b) local_unnamed_addr #0 {195; PWR9LE-LABEL: v4f32_b:196; PWR9LE:       # %bb.0: # %entry197; PWR9LE-NEXT:    xxsldwi vs0, v2, v2, 3198; PWR9LE-NEXT:    xscvspdpn f0, vs0199; PWR9LE-NEXT:    xsaddsp f0, f1, f0200; PWR9LE-NEXT:    xxswapd vs1, v2201; PWR9LE-NEXT:    xscvspdpn f1, vs1202; PWR9LE-NEXT:    xsaddsp f0, f0, f1203; PWR9LE-NEXT:    xxsldwi vs1, v2, v2, 1204; PWR9LE-NEXT:    xscvspdpn f1, vs1205; PWR9LE-NEXT:    xsaddsp f0, f0, f1206; PWR9LE-NEXT:    xscvspdpn f1, v2207; PWR9LE-NEXT:    xsaddsp f1, f0, f1208; PWR9LE-NEXT:    blr209;210; PWR9BE-LABEL: v4f32_b:211; PWR9BE:       # %bb.0: # %entry212; PWR9BE-NEXT:    xscvspdpn f0, v2213; PWR9BE-NEXT:    xsaddsp f0, f1, f0214; PWR9BE-NEXT:    xxsldwi vs1, v2, v2, 1215; PWR9BE-NEXT:    xscvspdpn f1, vs1216; PWR9BE-NEXT:    xsaddsp f0, f0, f1217; PWR9BE-NEXT:    xxswapd vs1, v2218; PWR9BE-NEXT:    xscvspdpn f1, vs1219; PWR9BE-NEXT:    xsaddsp f0, f0, f1220; PWR9BE-NEXT:    xxsldwi vs1, v2, v2, 3221; PWR9BE-NEXT:    xscvspdpn f1, vs1222; PWR9BE-NEXT:    xsaddsp f1, f0, f1223; PWR9BE-NEXT:    blr224;225; PWR10LE-LABEL: v4f32_b:226; PWR10LE:       # %bb.0: # %entry227; PWR10LE-NEXT:    xxsldwi vs0, v2, v2, 3228; PWR10LE-NEXT:    xscvspdpn f0, vs0229; PWR10LE-NEXT:    xsaddsp f0, f1, f0230; PWR10LE-NEXT:    xxswapd vs1, v2231; PWR10LE-NEXT:    xscvspdpn f1, vs1232; PWR10LE-NEXT:    xsaddsp f0, f0, f1233; PWR10LE-NEXT:    xxsldwi vs1, v2, v2, 1234; PWR10LE-NEXT:    xscvspdpn f1, vs1235; PWR10LE-NEXT:    xsaddsp f0, f0, f1236; PWR10LE-NEXT:    xscvspdpn f1, v2237; PWR10LE-NEXT:    xsaddsp f1, f0, f1238; PWR10LE-NEXT:    blr239;240; PWR10BE-LABEL: v4f32_b:241; PWR10BE:       # %bb.0: # %entry242; PWR10BE-NEXT:    xscvspdpn f0, v2243; PWR10BE-NEXT:    xsaddsp f0, f1, f0244; PWR10BE-NEXT:    xxsldwi vs1, v2, v2, 1245; PWR10BE-NEXT:    xscvspdpn f1, vs1246; PWR10BE-NEXT:    xsaddsp f0, f0, f1247; PWR10BE-NEXT:    xxswapd vs1, v2248; PWR10BE-NEXT:    xscvspdpn f1, vs1249; PWR10BE-NEXT:    xsaddsp f0, f0, f1250; PWR10BE-NEXT:    xxsldwi vs1, v2, v2, 3251; PWR10BE-NEXT:    xscvspdpn f1, vs1252; PWR10BE-NEXT:    xsaddsp f1, f0, f1253; PWR10BE-NEXT:    blr254entry:255  %0 = call float @llvm.vector.reduce.fadd.v4f32(float %b, <4 x float> %a)256  ret float %0257}258 259define dso_local float @v4f32_fast(<4 x float> %a) local_unnamed_addr #0 {260; PWR9LE-LABEL: v4f32_fast:261; PWR9LE:       # %bb.0: # %entry262; PWR9LE-NEXT:    xxswapd v3, v2263; PWR9LE-NEXT:    xvaddsp vs0, v2, v3264; PWR9LE-NEXT:    xxspltw vs1, vs0, 2265; PWR9LE-NEXT:    xvaddsp vs0, vs0, vs1266; PWR9LE-NEXT:    xxsldwi vs0, vs0, vs0, 3267; PWR9LE-NEXT:    xscvspdpn f1, vs0268; PWR9LE-NEXT:    blr269;270; PWR9BE-LABEL: v4f32_fast:271; PWR9BE:       # %bb.0: # %entry272; PWR9BE-NEXT:    xxswapd v3, v2273; PWR9BE-NEXT:    xvaddsp vs0, v2, v3274; PWR9BE-NEXT:    xxspltw vs1, vs0, 1275; PWR9BE-NEXT:    xvaddsp vs0, vs0, vs1276; PWR9BE-NEXT:    xscvspdpn f1, vs0277; PWR9BE-NEXT:    blr278;279; PWR10LE-LABEL: v4f32_fast:280; PWR10LE:       # %bb.0: # %entry281; PWR10LE-NEXT:    xxswapd v3, v2282; PWR10LE-NEXT:    xvaddsp vs0, v2, v3283; PWR10LE-NEXT:    xxspltw vs1, vs0, 2284; PWR10LE-NEXT:    xvaddsp vs0, vs0, vs1285; PWR10LE-NEXT:    xxsldwi vs0, vs0, vs0, 3286; PWR10LE-NEXT:    xscvspdpn f1, vs0287; PWR10LE-NEXT:    blr288;289; PWR10BE-LABEL: v4f32_fast:290; PWR10BE:       # %bb.0: # %entry291; PWR10BE-NEXT:    xxswapd v3, v2292; PWR10BE-NEXT:    xvaddsp vs0, v2, v3293; PWR10BE-NEXT:    xxspltw vs1, vs0, 1294; PWR10BE-NEXT:    xvaddsp vs0, vs0, vs1295; PWR10BE-NEXT:    xscvspdpn f1, vs0296; PWR10BE-NEXT:    blr297entry:298  %0 = call fast float @llvm.vector.reduce.fadd.v4f32(float -0.000000e+00, <4 x float> %a)299  ret float %0300}301 302define dso_local float @v8f32(<8 x float> %a) local_unnamed_addr #0 {303; PWR9LE-LABEL: v8f32:304; PWR9LE:       # %bb.0: # %entry305; PWR9LE-NEXT:    xxsldwi vs0, v2, v2, 3306; PWR9LE-NEXT:    xxswapd vs1, v2307; PWR9LE-NEXT:    xscvspdpn f0, vs0308; PWR9LE-NEXT:    xscvspdpn f1, vs1309; PWR9LE-NEXT:    xsaddsp f0, f0, f1310; PWR9LE-NEXT:    xxsldwi vs1, v2, v2, 1311; PWR9LE-NEXT:    xscvspdpn f1, vs1312; PWR9LE-NEXT:    xsaddsp f0, f0, f1313; PWR9LE-NEXT:    xscvspdpn f1, v2314; PWR9LE-NEXT:    xsaddsp f0, f0, f1315; PWR9LE-NEXT:    xxsldwi vs1, v3, v3, 3316; PWR9LE-NEXT:    xscvspdpn f1, vs1317; PWR9LE-NEXT:    xsaddsp f0, f0, f1318; PWR9LE-NEXT:    xxswapd vs1, v3319; PWR9LE-NEXT:    xscvspdpn f1, vs1320; PWR9LE-NEXT:    xsaddsp f0, f0, f1321; PWR9LE-NEXT:    xxsldwi vs1, v3, v3, 1322; PWR9LE-NEXT:    xscvspdpn f1, vs1323; PWR9LE-NEXT:    xsaddsp f0, f0, f1324; PWR9LE-NEXT:    xscvspdpn f1, v3325; PWR9LE-NEXT:    xsaddsp f1, f0, f1326; PWR9LE-NEXT:    blr327;328; PWR9BE-LABEL: v8f32:329; PWR9BE:       # %bb.0: # %entry330; PWR9BE-NEXT:    xxsldwi vs1, v2, v2, 1331; PWR9BE-NEXT:    xscvspdpn f0, v2332; PWR9BE-NEXT:    xscvspdpn f1, vs1333; PWR9BE-NEXT:    xsaddsp f0, f0, f1334; PWR9BE-NEXT:    xxswapd vs1, v2335; PWR9BE-NEXT:    xscvspdpn f1, vs1336; PWR9BE-NEXT:    xsaddsp f0, f0, f1337; PWR9BE-NEXT:    xxsldwi vs1, v2, v2, 3338; PWR9BE-NEXT:    xscvspdpn f1, vs1339; PWR9BE-NEXT:    xsaddsp f0, f0, f1340; PWR9BE-NEXT:    xscvspdpn f1, v3341; PWR9BE-NEXT:    xsaddsp f0, f0, f1342; PWR9BE-NEXT:    xxsldwi vs1, v3, v3, 1343; PWR9BE-NEXT:    xscvspdpn f1, vs1344; PWR9BE-NEXT:    xsaddsp f0, f0, f1345; PWR9BE-NEXT:    xxswapd vs1, v3346; PWR9BE-NEXT:    xscvspdpn f1, vs1347; PWR9BE-NEXT:    xsaddsp f0, f0, f1348; PWR9BE-NEXT:    xxsldwi vs1, v3, v3, 3349; PWR9BE-NEXT:    xscvspdpn f1, vs1350; PWR9BE-NEXT:    xsaddsp f1, f0, f1351; PWR9BE-NEXT:    blr352;353; PWR10LE-LABEL: v8f32:354; PWR10LE:       # %bb.0: # %entry355; PWR10LE-NEXT:    xxsldwi vs0, v2, v2, 3356; PWR10LE-NEXT:    xxswapd vs1, v2357; PWR10LE-NEXT:    xscvspdpn f0, vs0358; PWR10LE-NEXT:    xscvspdpn f1, vs1359; PWR10LE-NEXT:    xsaddsp f0, f0, f1360; PWR10LE-NEXT:    xxsldwi vs1, v2, v2, 1361; PWR10LE-NEXT:    xscvspdpn f1, vs1362; PWR10LE-NEXT:    xsaddsp f0, f0, f1363; PWR10LE-NEXT:    xscvspdpn f1, v2364; PWR10LE-NEXT:    xsaddsp f0, f0, f1365; PWR10LE-NEXT:    xxsldwi vs1, v3, v3, 3366; PWR10LE-NEXT:    xscvspdpn f1, vs1367; PWR10LE-NEXT:    xsaddsp f0, f0, f1368; PWR10LE-NEXT:    xxswapd vs1, v3369; PWR10LE-NEXT:    xscvspdpn f1, vs1370; PWR10LE-NEXT:    xsaddsp f0, f0, f1371; PWR10LE-NEXT:    xxsldwi vs1, v3, v3, 1372; PWR10LE-NEXT:    xscvspdpn f1, vs1373; PWR10LE-NEXT:    xsaddsp f0, f0, f1374; PWR10LE-NEXT:    xscvspdpn f1, v3375; PWR10LE-NEXT:    xsaddsp f1, f0, f1376; PWR10LE-NEXT:    blr377;378; PWR10BE-LABEL: v8f32:379; PWR10BE:       # %bb.0: # %entry380; PWR10BE-NEXT:    xxsldwi vs1, v2, v2, 1381; PWR10BE-NEXT:    xscvspdpn f0, v2382; PWR10BE-NEXT:    xscvspdpn f1, vs1383; PWR10BE-NEXT:    xsaddsp f0, f0, f1384; PWR10BE-NEXT:    xxswapd vs1, v2385; PWR10BE-NEXT:    xscvspdpn f1, vs1386; PWR10BE-NEXT:    xsaddsp f0, f0, f1387; PWR10BE-NEXT:    xxsldwi vs1, v2, v2, 3388; PWR10BE-NEXT:    xscvspdpn f1, vs1389; PWR10BE-NEXT:    xsaddsp f0, f0, f1390; PWR10BE-NEXT:    xscvspdpn f1, v3391; PWR10BE-NEXT:    xsaddsp f0, f0, f1392; PWR10BE-NEXT:    xxsldwi vs1, v3, v3, 1393; PWR10BE-NEXT:    xscvspdpn f1, vs1394; PWR10BE-NEXT:    xsaddsp f0, f0, f1395; PWR10BE-NEXT:    xxswapd vs1, v3396; PWR10BE-NEXT:    xscvspdpn f1, vs1397; PWR10BE-NEXT:    xsaddsp f0, f0, f1398; PWR10BE-NEXT:    xxsldwi vs1, v3, v3, 3399; PWR10BE-NEXT:    xscvspdpn f1, vs1400; PWR10BE-NEXT:    xsaddsp f1, f0, f1401; PWR10BE-NEXT:    blr402entry:403  %0 = call float @llvm.vector.reduce.fadd.v8f32(float -0.000000e+00, <8 x float> %a)404  ret float %0405}406 407define dso_local float @v8f32_b(<8 x float> %a, float %b) local_unnamed_addr #0 {408; PWR9LE-LABEL: v8f32_b:409; PWR9LE:       # %bb.0: # %entry410; PWR9LE-NEXT:    xxsldwi vs0, v2, v2, 3411; PWR9LE-NEXT:    xscvspdpn f0, vs0412; PWR9LE-NEXT:    xsaddsp f0, f1, f0413; PWR9LE-NEXT:    xxswapd vs1, v2414; PWR9LE-NEXT:    xscvspdpn f1, vs1415; PWR9LE-NEXT:    xsaddsp f0, f0, f1416; PWR9LE-NEXT:    xxsldwi vs1, v2, v2, 1417; PWR9LE-NEXT:    xscvspdpn f1, vs1418; PWR9LE-NEXT:    xsaddsp f0, f0, f1419; PWR9LE-NEXT:    xscvspdpn f1, v2420; PWR9LE-NEXT:    xsaddsp f0, f0, f1421; PWR9LE-NEXT:    xxsldwi vs1, v3, v3, 3422; PWR9LE-NEXT:    xscvspdpn f1, vs1423; PWR9LE-NEXT:    xsaddsp f0, f0, f1424; PWR9LE-NEXT:    xxswapd vs1, v3425; PWR9LE-NEXT:    xscvspdpn f1, vs1426; PWR9LE-NEXT:    xsaddsp f0, f0, f1427; PWR9LE-NEXT:    xxsldwi vs1, v3, v3, 1428; PWR9LE-NEXT:    xscvspdpn f1, vs1429; PWR9LE-NEXT:    xsaddsp f0, f0, f1430; PWR9LE-NEXT:    xscvspdpn f1, v3431; PWR9LE-NEXT:    xsaddsp f1, f0, f1432; PWR9LE-NEXT:    blr433;434; PWR9BE-LABEL: v8f32_b:435; PWR9BE:       # %bb.0: # %entry436; PWR9BE-NEXT:    xscvspdpn f0, v2437; PWR9BE-NEXT:    xsaddsp f0, f1, f0438; PWR9BE-NEXT:    xxsldwi vs1, v2, v2, 1439; PWR9BE-NEXT:    xscvspdpn f1, vs1440; PWR9BE-NEXT:    xsaddsp f0, f0, f1441; PWR9BE-NEXT:    xxswapd vs1, v2442; PWR9BE-NEXT:    xscvspdpn f1, vs1443; PWR9BE-NEXT:    xsaddsp f0, f0, f1444; PWR9BE-NEXT:    xxsldwi vs1, v2, v2, 3445; PWR9BE-NEXT:    xscvspdpn f1, vs1446; PWR9BE-NEXT:    xsaddsp f0, f0, f1447; PWR9BE-NEXT:    xscvspdpn f1, v3448; PWR9BE-NEXT:    xsaddsp f0, f0, f1449; PWR9BE-NEXT:    xxsldwi vs1, v3, v3, 1450; PWR9BE-NEXT:    xscvspdpn f1, vs1451; PWR9BE-NEXT:    xsaddsp f0, f0, f1452; PWR9BE-NEXT:    xxswapd vs1, v3453; PWR9BE-NEXT:    xscvspdpn f1, vs1454; PWR9BE-NEXT:    xsaddsp f0, f0, f1455; PWR9BE-NEXT:    xxsldwi vs1, v3, v3, 3456; PWR9BE-NEXT:    xscvspdpn f1, vs1457; PWR9BE-NEXT:    xsaddsp f1, f0, f1458; PWR9BE-NEXT:    blr459;460; PWR10LE-LABEL: v8f32_b:461; PWR10LE:       # %bb.0: # %entry462; PWR10LE-NEXT:    xxsldwi vs0, v2, v2, 3463; PWR10LE-NEXT:    xscvspdpn f0, vs0464; PWR10LE-NEXT:    xsaddsp f0, f1, f0465; PWR10LE-NEXT:    xxswapd vs1, v2466; PWR10LE-NEXT:    xscvspdpn f1, vs1467; PWR10LE-NEXT:    xsaddsp f0, f0, f1468; PWR10LE-NEXT:    xxsldwi vs1, v2, v2, 1469; PWR10LE-NEXT:    xscvspdpn f1, vs1470; PWR10LE-NEXT:    xsaddsp f0, f0, f1471; PWR10LE-NEXT:    xscvspdpn f1, v2472; PWR10LE-NEXT:    xsaddsp f0, f0, f1473; PWR10LE-NEXT:    xxsldwi vs1, v3, v3, 3474; PWR10LE-NEXT:    xscvspdpn f1, vs1475; PWR10LE-NEXT:    xsaddsp f0, f0, f1476; PWR10LE-NEXT:    xxswapd vs1, v3477; PWR10LE-NEXT:    xscvspdpn f1, vs1478; PWR10LE-NEXT:    xsaddsp f0, f0, f1479; PWR10LE-NEXT:    xxsldwi vs1, v3, v3, 1480; PWR10LE-NEXT:    xscvspdpn f1, vs1481; PWR10LE-NEXT:    xsaddsp f0, f0, f1482; PWR10LE-NEXT:    xscvspdpn f1, v3483; PWR10LE-NEXT:    xsaddsp f1, f0, f1484; PWR10LE-NEXT:    blr485;486; PWR10BE-LABEL: v8f32_b:487; PWR10BE:       # %bb.0: # %entry488; PWR10BE-NEXT:    xscvspdpn f0, v2489; PWR10BE-NEXT:    xsaddsp f0, f1, f0490; PWR10BE-NEXT:    xxsldwi vs1, v2, v2, 1491; PWR10BE-NEXT:    xscvspdpn f1, vs1492; PWR10BE-NEXT:    xsaddsp f0, f0, f1493; PWR10BE-NEXT:    xxswapd vs1, v2494; PWR10BE-NEXT:    xscvspdpn f1, vs1495; PWR10BE-NEXT:    xsaddsp f0, f0, f1496; PWR10BE-NEXT:    xxsldwi vs1, v2, v2, 3497; PWR10BE-NEXT:    xscvspdpn f1, vs1498; PWR10BE-NEXT:    xsaddsp f0, f0, f1499; PWR10BE-NEXT:    xscvspdpn f1, v3500; PWR10BE-NEXT:    xsaddsp f0, f0, f1501; PWR10BE-NEXT:    xxsldwi vs1, v3, v3, 1502; PWR10BE-NEXT:    xscvspdpn f1, vs1503; PWR10BE-NEXT:    xsaddsp f0, f0, f1504; PWR10BE-NEXT:    xxswapd vs1, v3505; PWR10BE-NEXT:    xscvspdpn f1, vs1506; PWR10BE-NEXT:    xsaddsp f0, f0, f1507; PWR10BE-NEXT:    xxsldwi vs1, v3, v3, 3508; PWR10BE-NEXT:    xscvspdpn f1, vs1509; PWR10BE-NEXT:    xsaddsp f1, f0, f1510; PWR10BE-NEXT:    blr511entry:512  %0 = call float @llvm.vector.reduce.fadd.v8f32(float %b, <8 x float> %a)513  ret float %0514}515 516define dso_local float @v8f32_fast(<8 x float> %a) local_unnamed_addr #0 {517; PWR9LE-LABEL: v8f32_fast:518; PWR9LE:       # %bb.0: # %entry519; PWR9LE-NEXT:    xvaddsp vs0, v2, v3520; PWR9LE-NEXT:    xxswapd v2, vs0521; PWR9LE-NEXT:    xvaddsp vs0, vs0, v2522; PWR9LE-NEXT:    xxspltw vs1, vs0, 2523; PWR9LE-NEXT:    xvaddsp vs0, vs0, vs1524; PWR9LE-NEXT:    xxsldwi vs0, vs0, vs0, 3525; PWR9LE-NEXT:    xscvspdpn f1, vs0526; PWR9LE-NEXT:    blr527;528; PWR9BE-LABEL: v8f32_fast:529; PWR9BE:       # %bb.0: # %entry530; PWR9BE-NEXT:    xvaddsp vs0, v2, v3531; PWR9BE-NEXT:    xxswapd v2, vs0532; PWR9BE-NEXT:    xvaddsp vs0, vs0, v2533; PWR9BE-NEXT:    xxspltw vs1, vs0, 1534; PWR9BE-NEXT:    xvaddsp vs0, vs0, vs1535; PWR9BE-NEXT:    xscvspdpn f1, vs0536; PWR9BE-NEXT:    blr537;538; PWR10LE-LABEL: v8f32_fast:539; PWR10LE:       # %bb.0: # %entry540; PWR10LE-NEXT:    xvaddsp vs0, v2, v3541; PWR10LE-NEXT:    xxswapd v2, vs0542; PWR10LE-NEXT:    xvaddsp vs0, vs0, v2543; PWR10LE-NEXT:    xxspltw vs1, vs0, 2544; PWR10LE-NEXT:    xvaddsp vs0, vs0, vs1545; PWR10LE-NEXT:    xxsldwi vs0, vs0, vs0, 3546; PWR10LE-NEXT:    xscvspdpn f1, vs0547; PWR10LE-NEXT:    blr548;549; PWR10BE-LABEL: v8f32_fast:550; PWR10BE:       # %bb.0: # %entry551; PWR10BE-NEXT:    xvaddsp vs0, v2, v3552; PWR10BE-NEXT:    xxswapd v2, vs0553; PWR10BE-NEXT:    xvaddsp vs0, vs0, v2554; PWR10BE-NEXT:    xxspltw vs1, vs0, 1555; PWR10BE-NEXT:    xvaddsp vs0, vs0, vs1556; PWR10BE-NEXT:    xscvspdpn f1, vs0557; PWR10BE-NEXT:    blr558entry:559  %0 = call fast float @llvm.vector.reduce.fadd.v8f32(float -0.000000e+00, <8 x float> %a)560  ret float %0561}562 563define dso_local float @v16f32(<16 x float> %a) local_unnamed_addr #0 {564; PWR9LE-LABEL: v16f32:565; PWR9LE:       # %bb.0: # %entry566; PWR9LE-NEXT:    xxsldwi vs0, v2, v2, 3567; PWR9LE-NEXT:    xxswapd vs1, v2568; PWR9LE-NEXT:    xscvspdpn f0, vs0569; PWR9LE-NEXT:    xscvspdpn f1, vs1570; PWR9LE-NEXT:    xsaddsp f0, f0, f1571; PWR9LE-NEXT:    xxsldwi vs1, v2, v2, 1572; PWR9LE-NEXT:    xscvspdpn f1, vs1573; PWR9LE-NEXT:    xsaddsp f0, f0, f1574; PWR9LE-NEXT:    xscvspdpn f1, v2575; PWR9LE-NEXT:    xsaddsp f0, f0, f1576; PWR9LE-NEXT:    xxsldwi vs1, v3, v3, 3577; PWR9LE-NEXT:    xscvspdpn f1, vs1578; PWR9LE-NEXT:    xsaddsp f0, f0, f1579; PWR9LE-NEXT:    xxswapd vs1, v3580; PWR9LE-NEXT:    xscvspdpn f1, vs1581; PWR9LE-NEXT:    xsaddsp f0, f0, f1582; PWR9LE-NEXT:    xxsldwi vs1, v3, v3, 1583; PWR9LE-NEXT:    xscvspdpn f1, vs1584; PWR9LE-NEXT:    xsaddsp f0, f0, f1585; PWR9LE-NEXT:    xscvspdpn f1, v3586; PWR9LE-NEXT:    xsaddsp f0, f0, f1587; PWR9LE-NEXT:    xxsldwi vs1, v4, v4, 3588; PWR9LE-NEXT:    xscvspdpn f1, vs1589; PWR9LE-NEXT:    xsaddsp f0, f0, f1590; PWR9LE-NEXT:    xxswapd vs1, v4591; PWR9LE-NEXT:    xscvspdpn f1, vs1592; PWR9LE-NEXT:    xsaddsp f0, f0, f1593; PWR9LE-NEXT:    xxsldwi vs1, v4, v4, 1594; PWR9LE-NEXT:    xscvspdpn f1, vs1595; PWR9LE-NEXT:    xsaddsp f0, f0, f1596; PWR9LE-NEXT:    xscvspdpn f1, v4597; PWR9LE-NEXT:    xsaddsp f0, f0, f1598; PWR9LE-NEXT:    xxsldwi vs1, v5, v5, 3599; PWR9LE-NEXT:    xscvspdpn f1, vs1600; PWR9LE-NEXT:    xsaddsp f0, f0, f1601; PWR9LE-NEXT:    xxswapd vs1, v5602; PWR9LE-NEXT:    xscvspdpn f1, vs1603; PWR9LE-NEXT:    xsaddsp f0, f0, f1604; PWR9LE-NEXT:    xxsldwi vs1, v5, v5, 1605; PWR9LE-NEXT:    xscvspdpn f1, vs1606; PWR9LE-NEXT:    xsaddsp f0, f0, f1607; PWR9LE-NEXT:    xscvspdpn f1, v5608; PWR9LE-NEXT:    xsaddsp f1, f0, f1609; PWR9LE-NEXT:    blr610;611; PWR9BE-LABEL: v16f32:612; PWR9BE:       # %bb.0: # %entry613; PWR9BE-NEXT:    xxsldwi vs1, v2, v2, 1614; PWR9BE-NEXT:    xscvspdpn f0, v2615; PWR9BE-NEXT:    xscvspdpn f1, vs1616; PWR9BE-NEXT:    xsaddsp f0, f0, f1617; PWR9BE-NEXT:    xxswapd vs1, v2618; PWR9BE-NEXT:    xscvspdpn f1, vs1619; PWR9BE-NEXT:    xsaddsp f0, f0, f1620; PWR9BE-NEXT:    xxsldwi vs1, v2, v2, 3621; PWR9BE-NEXT:    xscvspdpn f1, vs1622; PWR9BE-NEXT:    xsaddsp f0, f0, f1623; PWR9BE-NEXT:    xscvspdpn f1, v3624; PWR9BE-NEXT:    xsaddsp f0, f0, f1625; PWR9BE-NEXT:    xxsldwi vs1, v3, v3, 1626; PWR9BE-NEXT:    xscvspdpn f1, vs1627; PWR9BE-NEXT:    xsaddsp f0, f0, f1628; PWR9BE-NEXT:    xxswapd vs1, v3629; PWR9BE-NEXT:    xscvspdpn f1, vs1630; PWR9BE-NEXT:    xsaddsp f0, f0, f1631; PWR9BE-NEXT:    xxsldwi vs1, v3, v3, 3632; PWR9BE-NEXT:    xscvspdpn f1, vs1633; PWR9BE-NEXT:    xsaddsp f0, f0, f1634; PWR9BE-NEXT:    xscvspdpn f1, v4635; PWR9BE-NEXT:    xsaddsp f0, f0, f1636; PWR9BE-NEXT:    xxsldwi vs1, v4, v4, 1637; PWR9BE-NEXT:    xscvspdpn f1, vs1638; PWR9BE-NEXT:    xsaddsp f0, f0, f1639; PWR9BE-NEXT:    xxswapd vs1, v4640; PWR9BE-NEXT:    xscvspdpn f1, vs1641; PWR9BE-NEXT:    xsaddsp f0, f0, f1642; PWR9BE-NEXT:    xxsldwi vs1, v4, v4, 3643; PWR9BE-NEXT:    xscvspdpn f1, vs1644; PWR9BE-NEXT:    xsaddsp f0, f0, f1645; PWR9BE-NEXT:    xscvspdpn f1, v5646; PWR9BE-NEXT:    xsaddsp f0, f0, f1647; PWR9BE-NEXT:    xxsldwi vs1, v5, v5, 1648; PWR9BE-NEXT:    xscvspdpn f1, vs1649; PWR9BE-NEXT:    xsaddsp f0, f0, f1650; PWR9BE-NEXT:    xxswapd vs1, v5651; PWR9BE-NEXT:    xscvspdpn f1, vs1652; PWR9BE-NEXT:    xsaddsp f0, f0, f1653; PWR9BE-NEXT:    xxsldwi vs1, v5, v5, 3654; PWR9BE-NEXT:    xscvspdpn f1, vs1655; PWR9BE-NEXT:    xsaddsp f1, f0, f1656; PWR9BE-NEXT:    blr657;658; PWR10LE-LABEL: v16f32:659; PWR10LE:       # %bb.0: # %entry660; PWR10LE-NEXT:    xxsldwi vs0, v2, v2, 3661; PWR10LE-NEXT:    xxswapd vs1, v2662; PWR10LE-NEXT:    xscvspdpn f0, vs0663; PWR10LE-NEXT:    xscvspdpn f1, vs1664; PWR10LE-NEXT:    xsaddsp f0, f0, f1665; PWR10LE-NEXT:    xxsldwi vs1, v2, v2, 1666; PWR10LE-NEXT:    xscvspdpn f1, vs1667; PWR10LE-NEXT:    xsaddsp f0, f0, f1668; PWR10LE-NEXT:    xscvspdpn f1, v2669; PWR10LE-NEXT:    xsaddsp f0, f0, f1670; PWR10LE-NEXT:    xxsldwi vs1, v3, v3, 3671; PWR10LE-NEXT:    xscvspdpn f1, vs1672; PWR10LE-NEXT:    xsaddsp f0, f0, f1673; PWR10LE-NEXT:    xxswapd vs1, v3674; PWR10LE-NEXT:    xscvspdpn f1, vs1675; PWR10LE-NEXT:    xsaddsp f0, f0, f1676; PWR10LE-NEXT:    xxsldwi vs1, v3, v3, 1677; PWR10LE-NEXT:    xscvspdpn f1, vs1678; PWR10LE-NEXT:    xsaddsp f0, f0, f1679; PWR10LE-NEXT:    xscvspdpn f1, v3680; PWR10LE-NEXT:    xsaddsp f0, f0, f1681; PWR10LE-NEXT:    xxsldwi vs1, v4, v4, 3682; PWR10LE-NEXT:    xscvspdpn f1, vs1683; PWR10LE-NEXT:    xsaddsp f0, f0, f1684; PWR10LE-NEXT:    xxswapd vs1, v4685; PWR10LE-NEXT:    xscvspdpn f1, vs1686; PWR10LE-NEXT:    xsaddsp f0, f0, f1687; PWR10LE-NEXT:    xxsldwi vs1, v4, v4, 1688; PWR10LE-NEXT:    xscvspdpn f1, vs1689; PWR10LE-NEXT:    xsaddsp f0, f0, f1690; PWR10LE-NEXT:    xscvspdpn f1, v4691; PWR10LE-NEXT:    xsaddsp f0, f0, f1692; PWR10LE-NEXT:    xxsldwi vs1, v5, v5, 3693; PWR10LE-NEXT:    xscvspdpn f1, vs1694; PWR10LE-NEXT:    xsaddsp f0, f0, f1695; PWR10LE-NEXT:    xxswapd vs1, v5696; PWR10LE-NEXT:    xscvspdpn f1, vs1697; PWR10LE-NEXT:    xsaddsp f0, f0, f1698; PWR10LE-NEXT:    xxsldwi vs1, v5, v5, 1699; PWR10LE-NEXT:    xscvspdpn f1, vs1700; PWR10LE-NEXT:    xsaddsp f0, f0, f1701; PWR10LE-NEXT:    xscvspdpn f1, v5702; PWR10LE-NEXT:    xsaddsp f1, f0, f1703; PWR10LE-NEXT:    blr704;705; PWR10BE-LABEL: v16f32:706; PWR10BE:       # %bb.0: # %entry707; PWR10BE-NEXT:    xxsldwi vs1, v2, v2, 1708; PWR10BE-NEXT:    xscvspdpn f0, v2709; PWR10BE-NEXT:    xscvspdpn f1, vs1710; PWR10BE-NEXT:    xsaddsp f0, f0, f1711; PWR10BE-NEXT:    xxswapd vs1, v2712; PWR10BE-NEXT:    xscvspdpn f1, vs1713; PWR10BE-NEXT:    xsaddsp f0, f0, f1714; PWR10BE-NEXT:    xxsldwi vs1, v2, v2, 3715; PWR10BE-NEXT:    xscvspdpn f1, vs1716; PWR10BE-NEXT:    xsaddsp f0, f0, f1717; PWR10BE-NEXT:    xscvspdpn f1, v3718; PWR10BE-NEXT:    xsaddsp f0, f0, f1719; PWR10BE-NEXT:    xxsldwi vs1, v3, v3, 1720; PWR10BE-NEXT:    xscvspdpn f1, vs1721; PWR10BE-NEXT:    xsaddsp f0, f0, f1722; PWR10BE-NEXT:    xxswapd vs1, v3723; PWR10BE-NEXT:    xscvspdpn f1, vs1724; PWR10BE-NEXT:    xsaddsp f0, f0, f1725; PWR10BE-NEXT:    xxsldwi vs1, v3, v3, 3726; PWR10BE-NEXT:    xscvspdpn f1, vs1727; PWR10BE-NEXT:    xsaddsp f0, f0, f1728; PWR10BE-NEXT:    xscvspdpn f1, v4729; PWR10BE-NEXT:    xsaddsp f0, f0, f1730; PWR10BE-NEXT:    xxsldwi vs1, v4, v4, 1731; PWR10BE-NEXT:    xscvspdpn f1, vs1732; PWR10BE-NEXT:    xsaddsp f0, f0, f1733; PWR10BE-NEXT:    xxswapd vs1, v4734; PWR10BE-NEXT:    xscvspdpn f1, vs1735; PWR10BE-NEXT:    xsaddsp f0, f0, f1736; PWR10BE-NEXT:    xxsldwi vs1, v4, v4, 3737; PWR10BE-NEXT:    xscvspdpn f1, vs1738; PWR10BE-NEXT:    xsaddsp f0, f0, f1739; PWR10BE-NEXT:    xscvspdpn f1, v5740; PWR10BE-NEXT:    xsaddsp f0, f0, f1741; PWR10BE-NEXT:    xxsldwi vs1, v5, v5, 1742; PWR10BE-NEXT:    xscvspdpn f1, vs1743; PWR10BE-NEXT:    xsaddsp f0, f0, f1744; PWR10BE-NEXT:    xxswapd vs1, v5745; PWR10BE-NEXT:    xscvspdpn f1, vs1746; PWR10BE-NEXT:    xsaddsp f0, f0, f1747; PWR10BE-NEXT:    xxsldwi vs1, v5, v5, 3748; PWR10BE-NEXT:    xscvspdpn f1, vs1749; PWR10BE-NEXT:    xsaddsp f1, f0, f1750; PWR10BE-NEXT:    blr751entry:752  %0 = call float @llvm.vector.reduce.fadd.v16f32(float -0.000000e+00, <16 x float> %a)753  ret float %0754}755 756define dso_local float @v16f32_b(<16 x float> %a, float %b) local_unnamed_addr #0 {757; PWR9LE-LABEL: v16f32_b:758; PWR9LE:       # %bb.0: # %entry759; PWR9LE-NEXT:    xxsldwi vs0, v2, v2, 3760; PWR9LE-NEXT:    xscvspdpn f0, vs0761; PWR9LE-NEXT:    xsaddsp f0, f1, f0762; PWR9LE-NEXT:    xxswapd vs1, v2763; PWR9LE-NEXT:    xscvspdpn f1, vs1764; PWR9LE-NEXT:    xsaddsp f0, f0, f1765; PWR9LE-NEXT:    xxsldwi vs1, v2, v2, 1766; PWR9LE-NEXT:    xscvspdpn f1, vs1767; PWR9LE-NEXT:    xsaddsp f0, f0, f1768; PWR9LE-NEXT:    xscvspdpn f1, v2769; PWR9LE-NEXT:    xsaddsp f0, f0, f1770; PWR9LE-NEXT:    xxsldwi vs1, v3, v3, 3771; PWR9LE-NEXT:    xscvspdpn f1, vs1772; PWR9LE-NEXT:    xsaddsp f0, f0, f1773; PWR9LE-NEXT:    xxswapd vs1, v3774; PWR9LE-NEXT:    xscvspdpn f1, vs1775; PWR9LE-NEXT:    xsaddsp f0, f0, f1776; PWR9LE-NEXT:    xxsldwi vs1, v3, v3, 1777; PWR9LE-NEXT:    xscvspdpn f1, vs1778; PWR9LE-NEXT:    xsaddsp f0, f0, f1779; PWR9LE-NEXT:    xscvspdpn f1, v3780; PWR9LE-NEXT:    xsaddsp f0, f0, f1781; PWR9LE-NEXT:    xxsldwi vs1, v4, v4, 3782; PWR9LE-NEXT:    xscvspdpn f1, vs1783; PWR9LE-NEXT:    xsaddsp f0, f0, f1784; PWR9LE-NEXT:    xxswapd vs1, v4785; PWR9LE-NEXT:    xscvspdpn f1, vs1786; PWR9LE-NEXT:    xsaddsp f0, f0, f1787; PWR9LE-NEXT:    xxsldwi vs1, v4, v4, 1788; PWR9LE-NEXT:    xscvspdpn f1, vs1789; PWR9LE-NEXT:    xsaddsp f0, f0, f1790; PWR9LE-NEXT:    xscvspdpn f1, v4791; PWR9LE-NEXT:    xsaddsp f0, f0, f1792; PWR9LE-NEXT:    xxsldwi vs1, v5, v5, 3793; PWR9LE-NEXT:    xscvspdpn f1, vs1794; PWR9LE-NEXT:    xsaddsp f0, f0, f1795; PWR9LE-NEXT:    xxswapd vs1, v5796; PWR9LE-NEXT:    xscvspdpn f1, vs1797; PWR9LE-NEXT:    xsaddsp f0, f0, f1798; PWR9LE-NEXT:    xxsldwi vs1, v5, v5, 1799; PWR9LE-NEXT:    xscvspdpn f1, vs1800; PWR9LE-NEXT:    xsaddsp f0, f0, f1801; PWR9LE-NEXT:    xscvspdpn f1, v5802; PWR9LE-NEXT:    xsaddsp f1, f0, f1803; PWR9LE-NEXT:    blr804;805; PWR9BE-LABEL: v16f32_b:806; PWR9BE:       # %bb.0: # %entry807; PWR9BE-NEXT:    xscvspdpn f0, v2808; PWR9BE-NEXT:    xsaddsp f0, f1, f0809; PWR9BE-NEXT:    xxsldwi vs1, v2, v2, 1810; PWR9BE-NEXT:    xscvspdpn f1, vs1811; PWR9BE-NEXT:    xsaddsp f0, f0, f1812; PWR9BE-NEXT:    xxswapd vs1, v2813; PWR9BE-NEXT:    xscvspdpn f1, vs1814; PWR9BE-NEXT:    xsaddsp f0, f0, f1815; PWR9BE-NEXT:    xxsldwi vs1, v2, v2, 3816; PWR9BE-NEXT:    xscvspdpn f1, vs1817; PWR9BE-NEXT:    xsaddsp f0, f0, f1818; PWR9BE-NEXT:    xscvspdpn f1, v3819; PWR9BE-NEXT:    xsaddsp f0, f0, f1820; PWR9BE-NEXT:    xxsldwi vs1, v3, v3, 1821; PWR9BE-NEXT:    xscvspdpn f1, vs1822; PWR9BE-NEXT:    xsaddsp f0, f0, f1823; PWR9BE-NEXT:    xxswapd vs1, v3824; PWR9BE-NEXT:    xscvspdpn f1, vs1825; PWR9BE-NEXT:    xsaddsp f0, f0, f1826; PWR9BE-NEXT:    xxsldwi vs1, v3, v3, 3827; PWR9BE-NEXT:    xscvspdpn f1, vs1828; PWR9BE-NEXT:    xsaddsp f0, f0, f1829; PWR9BE-NEXT:    xscvspdpn f1, v4830; PWR9BE-NEXT:    xsaddsp f0, f0, f1831; PWR9BE-NEXT:    xxsldwi vs1, v4, v4, 1832; PWR9BE-NEXT:    xscvspdpn f1, vs1833; PWR9BE-NEXT:    xsaddsp f0, f0, f1834; PWR9BE-NEXT:    xxswapd vs1, v4835; PWR9BE-NEXT:    xscvspdpn f1, vs1836; PWR9BE-NEXT:    xsaddsp f0, f0, f1837; PWR9BE-NEXT:    xxsldwi vs1, v4, v4, 3838; PWR9BE-NEXT:    xscvspdpn f1, vs1839; PWR9BE-NEXT:    xsaddsp f0, f0, f1840; PWR9BE-NEXT:    xscvspdpn f1, v5841; PWR9BE-NEXT:    xsaddsp f0, f0, f1842; PWR9BE-NEXT:    xxsldwi vs1, v5, v5, 1843; PWR9BE-NEXT:    xscvspdpn f1, vs1844; PWR9BE-NEXT:    xsaddsp f0, f0, f1845; PWR9BE-NEXT:    xxswapd vs1, v5846; PWR9BE-NEXT:    xscvspdpn f1, vs1847; PWR9BE-NEXT:    xsaddsp f0, f0, f1848; PWR9BE-NEXT:    xxsldwi vs1, v5, v5, 3849; PWR9BE-NEXT:    xscvspdpn f1, vs1850; PWR9BE-NEXT:    xsaddsp f1, f0, f1851; PWR9BE-NEXT:    blr852;853; PWR10LE-LABEL: v16f32_b:854; PWR10LE:       # %bb.0: # %entry855; PWR10LE-NEXT:    xxsldwi vs0, v2, v2, 3856; PWR10LE-NEXT:    xscvspdpn f0, vs0857; PWR10LE-NEXT:    xsaddsp f0, f1, f0858; PWR10LE-NEXT:    xxswapd vs1, v2859; PWR10LE-NEXT:    xscvspdpn f1, vs1860; PWR10LE-NEXT:    xsaddsp f0, f0, f1861; PWR10LE-NEXT:    xxsldwi vs1, v2, v2, 1862; PWR10LE-NEXT:    xscvspdpn f1, vs1863; PWR10LE-NEXT:    xsaddsp f0, f0, f1864; PWR10LE-NEXT:    xscvspdpn f1, v2865; PWR10LE-NEXT:    xsaddsp f0, f0, f1866; PWR10LE-NEXT:    xxsldwi vs1, v3, v3, 3867; PWR10LE-NEXT:    xscvspdpn f1, vs1868; PWR10LE-NEXT:    xsaddsp f0, f0, f1869; PWR10LE-NEXT:    xxswapd vs1, v3870; PWR10LE-NEXT:    xscvspdpn f1, vs1871; PWR10LE-NEXT:    xsaddsp f0, f0, f1872; PWR10LE-NEXT:    xxsldwi vs1, v3, v3, 1873; PWR10LE-NEXT:    xscvspdpn f1, vs1874; PWR10LE-NEXT:    xsaddsp f0, f0, f1875; PWR10LE-NEXT:    xscvspdpn f1, v3876; PWR10LE-NEXT:    xsaddsp f0, f0, f1877; PWR10LE-NEXT:    xxsldwi vs1, v4, v4, 3878; PWR10LE-NEXT:    xscvspdpn f1, vs1879; PWR10LE-NEXT:    xsaddsp f0, f0, f1880; PWR10LE-NEXT:    xxswapd vs1, v4881; PWR10LE-NEXT:    xscvspdpn f1, vs1882; PWR10LE-NEXT:    xsaddsp f0, f0, f1883; PWR10LE-NEXT:    xxsldwi vs1, v4, v4, 1884; PWR10LE-NEXT:    xscvspdpn f1, vs1885; PWR10LE-NEXT:    xsaddsp f0, f0, f1886; PWR10LE-NEXT:    xscvspdpn f1, v4887; PWR10LE-NEXT:    xsaddsp f0, f0, f1888; PWR10LE-NEXT:    xxsldwi vs1, v5, v5, 3889; PWR10LE-NEXT:    xscvspdpn f1, vs1890; PWR10LE-NEXT:    xsaddsp f0, f0, f1891; PWR10LE-NEXT:    xxswapd vs1, v5892; PWR10LE-NEXT:    xscvspdpn f1, vs1893; PWR10LE-NEXT:    xsaddsp f0, f0, f1894; PWR10LE-NEXT:    xxsldwi vs1, v5, v5, 1895; PWR10LE-NEXT:    xscvspdpn f1, vs1896; PWR10LE-NEXT:    xsaddsp f0, f0, f1897; PWR10LE-NEXT:    xscvspdpn f1, v5898; PWR10LE-NEXT:    xsaddsp f1, f0, f1899; PWR10LE-NEXT:    blr900;901; PWR10BE-LABEL: v16f32_b:902; PWR10BE:       # %bb.0: # %entry903; PWR10BE-NEXT:    xscvspdpn f0, v2904; PWR10BE-NEXT:    xsaddsp f0, f1, f0905; PWR10BE-NEXT:    xxsldwi vs1, v2, v2, 1906; PWR10BE-NEXT:    xscvspdpn f1, vs1907; PWR10BE-NEXT:    xsaddsp f0, f0, f1908; PWR10BE-NEXT:    xxswapd vs1, v2909; PWR10BE-NEXT:    xscvspdpn f1, vs1910; PWR10BE-NEXT:    xsaddsp f0, f0, f1911; PWR10BE-NEXT:    xxsldwi vs1, v2, v2, 3912; PWR10BE-NEXT:    xscvspdpn f1, vs1913; PWR10BE-NEXT:    xsaddsp f0, f0, f1914; PWR10BE-NEXT:    xscvspdpn f1, v3915; PWR10BE-NEXT:    xsaddsp f0, f0, f1916; PWR10BE-NEXT:    xxsldwi vs1, v3, v3, 1917; PWR10BE-NEXT:    xscvspdpn f1, vs1918; PWR10BE-NEXT:    xsaddsp f0, f0, f1919; PWR10BE-NEXT:    xxswapd vs1, v3920; PWR10BE-NEXT:    xscvspdpn f1, vs1921; PWR10BE-NEXT:    xsaddsp f0, f0, f1922; PWR10BE-NEXT:    xxsldwi vs1, v3, v3, 3923; PWR10BE-NEXT:    xscvspdpn f1, vs1924; PWR10BE-NEXT:    xsaddsp f0, f0, f1925; PWR10BE-NEXT:    xscvspdpn f1, v4926; PWR10BE-NEXT:    xsaddsp f0, f0, f1927; PWR10BE-NEXT:    xxsldwi vs1, v4, v4, 1928; PWR10BE-NEXT:    xscvspdpn f1, vs1929; PWR10BE-NEXT:    xsaddsp f0, f0, f1930; PWR10BE-NEXT:    xxswapd vs1, v4931; PWR10BE-NEXT:    xscvspdpn f1, vs1932; PWR10BE-NEXT:    xsaddsp f0, f0, f1933; PWR10BE-NEXT:    xxsldwi vs1, v4, v4, 3934; PWR10BE-NEXT:    xscvspdpn f1, vs1935; PWR10BE-NEXT:    xsaddsp f0, f0, f1936; PWR10BE-NEXT:    xscvspdpn f1, v5937; PWR10BE-NEXT:    xsaddsp f0, f0, f1938; PWR10BE-NEXT:    xxsldwi vs1, v5, v5, 1939; PWR10BE-NEXT:    xscvspdpn f1, vs1940; PWR10BE-NEXT:    xsaddsp f0, f0, f1941; PWR10BE-NEXT:    xxswapd vs1, v5942; PWR10BE-NEXT:    xscvspdpn f1, vs1943; PWR10BE-NEXT:    xsaddsp f0, f0, f1944; PWR10BE-NEXT:    xxsldwi vs1, v5, v5, 3945; PWR10BE-NEXT:    xscvspdpn f1, vs1946; PWR10BE-NEXT:    xsaddsp f1, f0, f1947; PWR10BE-NEXT:    blr948entry:949  %0 = call float @llvm.vector.reduce.fadd.v16f32(float %b, <16 x float> %a)950  ret float %0951}952 953define dso_local float @v16f32_fast(<16 x float> %a) local_unnamed_addr #0 {954; PWR9LE-LABEL: v16f32_fast:955; PWR9LE:       # %bb.0: # %entry956; PWR9LE-NEXT:    xvaddsp vs0, v3, v5957; PWR9LE-NEXT:    xvaddsp vs1, v2, v4958; PWR9LE-NEXT:    xvaddsp vs0, vs1, vs0959; PWR9LE-NEXT:    xxswapd v2, vs0960; PWR9LE-NEXT:    xvaddsp vs0, vs0, v2961; PWR9LE-NEXT:    xxspltw vs1, vs0, 2962; PWR9LE-NEXT:    xvaddsp vs0, vs0, vs1963; PWR9LE-NEXT:    xxsldwi vs0, vs0, vs0, 3964; PWR9LE-NEXT:    xscvspdpn f1, vs0965; PWR9LE-NEXT:    blr966;967; PWR9BE-LABEL: v16f32_fast:968; PWR9BE:       # %bb.0: # %entry969; PWR9BE-NEXT:    xvaddsp vs0, v3, v5970; PWR9BE-NEXT:    xvaddsp vs1, v2, v4971; PWR9BE-NEXT:    xvaddsp vs0, vs1, vs0972; PWR9BE-NEXT:    xxswapd v2, vs0973; PWR9BE-NEXT:    xvaddsp vs0, vs0, v2974; PWR9BE-NEXT:    xxspltw vs1, vs0, 1975; PWR9BE-NEXT:    xvaddsp vs0, vs0, vs1976; PWR9BE-NEXT:    xscvspdpn f1, vs0977; PWR9BE-NEXT:    blr978;979; PWR10LE-LABEL: v16f32_fast:980; PWR10LE:       # %bb.0: # %entry981; PWR10LE-NEXT:    xvaddsp vs0, v3, v5982; PWR10LE-NEXT:    xvaddsp vs1, v2, v4983; PWR10LE-NEXT:    xvaddsp vs0, vs1, vs0984; PWR10LE-NEXT:    xxswapd v2, vs0985; PWR10LE-NEXT:    xvaddsp vs0, vs0, v2986; PWR10LE-NEXT:    xxspltw vs1, vs0, 2987; PWR10LE-NEXT:    xvaddsp vs0, vs0, vs1988; PWR10LE-NEXT:    xxsldwi vs0, vs0, vs0, 3989; PWR10LE-NEXT:    xscvspdpn f1, vs0990; PWR10LE-NEXT:    blr991;992; PWR10BE-LABEL: v16f32_fast:993; PWR10BE:       # %bb.0: # %entry994; PWR10BE-NEXT:    xvaddsp vs0, v3, v5995; PWR10BE-NEXT:    xvaddsp vs1, v2, v4996; PWR10BE-NEXT:    xvaddsp vs0, vs1, vs0997; PWR10BE-NEXT:    xxswapd v2, vs0998; PWR10BE-NEXT:    xvaddsp vs0, vs0, v2999; PWR10BE-NEXT:    xxspltw vs1, vs0, 11000; PWR10BE-NEXT:    xvaddsp vs0, vs0, vs11001; PWR10BE-NEXT:    xscvspdpn f1, vs01002; PWR10BE-NEXT:    blr1003entry:1004  %0 = call fast float @llvm.vector.reduce.fadd.v16f32(float -0.000000e+00, <16 x float> %a)1005  ret float %01006}1007 1008declare float @llvm.vector.reduce.fadd.v2f32(float, <2 x float>) #01009declare float @llvm.vector.reduce.fadd.v4f32(float, <4 x float>) #01010declare float @llvm.vector.reduce.fadd.v8f32(float, <8 x float>) #01011declare float @llvm.vector.reduce.fadd.v16f32(float, <16 x float>) #01012 1013;;1014;; Vectors of f641015;;1016define dso_local double @v2f64(<2 x double> %a) local_unnamed_addr #0 {1017; PWR9LE-LABEL: v2f64:1018; PWR9LE:       # %bb.0: # %entry1019; PWR9LE-NEXT:    xxswapd vs0, v21020; PWR9LE-NEXT:    xsadddp f1, f0, v21021; PWR9LE-NEXT:    blr1022;1023; PWR9BE-LABEL: v2f64:1024; PWR9BE:       # %bb.0: # %entry1025; PWR9BE-NEXT:    xxswapd vs0, v21026; PWR9BE-NEXT:    xsadddp f1, v2, f01027; PWR9BE-NEXT:    blr1028;1029; PWR10LE-LABEL: v2f64:1030; PWR10LE:       # %bb.0: # %entry1031; PWR10LE-NEXT:    xxswapd vs0, v21032; PWR10LE-NEXT:    xsadddp f1, f0, v21033; PWR10LE-NEXT:    blr1034;1035; PWR10BE-LABEL: v2f64:1036; PWR10BE:       # %bb.0: # %entry1037; PWR10BE-NEXT:    xxswapd vs0, v21038; PWR10BE-NEXT:    xsadddp f1, v2, f01039; PWR10BE-NEXT:    blr1040entry:1041  %0 = call double @llvm.vector.reduce.fadd.v2f64(double -0.000000e+00, <2 x double> %a)1042  ret double %01043}1044 1045define dso_local double @v2f64_b(<2 x double> %a, double %b) local_unnamed_addr #0 {1046; PWR9LE-LABEL: v2f64_b:1047; PWR9LE:       # %bb.0: # %entry1048; PWR9LE-NEXT:    xxswapd vs0, v21049; PWR9LE-NEXT:    xsadddp f0, f1, f01050; PWR9LE-NEXT:    xsadddp f1, f0, v21051; PWR9LE-NEXT:    blr1052;1053; PWR9BE-LABEL: v2f64_b:1054; PWR9BE:       # %bb.0: # %entry1055; PWR9BE-NEXT:    xsadddp f0, f1, v21056; PWR9BE-NEXT:    xxswapd vs1, v21057; PWR9BE-NEXT:    xsadddp f1, f0, f11058; PWR9BE-NEXT:    blr1059;1060; PWR10LE-LABEL: v2f64_b:1061; PWR10LE:       # %bb.0: # %entry1062; PWR10LE-NEXT:    xxswapd vs0, v21063; PWR10LE-NEXT:    xsadddp f0, f1, f01064; PWR10LE-NEXT:    xsadddp f1, f0, v21065; PWR10LE-NEXT:    blr1066;1067; PWR10BE-LABEL: v2f64_b:1068; PWR10BE:       # %bb.0: # %entry1069; PWR10BE-NEXT:    xsadddp f0, f1, v21070; PWR10BE-NEXT:    xxswapd vs1, v21071; PWR10BE-NEXT:    xsadddp f1, f0, f11072; PWR10BE-NEXT:    blr1073entry:1074  %0 = call double @llvm.vector.reduce.fadd.v2f64(double %b, <2 x double> %a)1075  ret double %01076}1077 1078define dso_local double @v2f64_fast(<2 x double> %a) local_unnamed_addr #0 {1079; PWR9LE-LABEL: v2f64_fast:1080; PWR9LE:       # %bb.0: # %entry1081; PWR9LE-NEXT:    xxswapd vs0, v21082; PWR9LE-NEXT:    xvadddp vs0, v2, vs01083; PWR9LE-NEXT:    xxswapd vs1, vs01084; PWR9LE-NEXT:    blr1085;1086; PWR9BE-LABEL: v2f64_fast:1087; PWR9BE:       # %bb.0: # %entry1088; PWR9BE-NEXT:    xxswapd vs0, v21089; PWR9BE-NEXT:    xvadddp vs1, v2, vs01090; PWR9BE-NEXT:    blr1091;1092; PWR10LE-LABEL: v2f64_fast:1093; PWR10LE:       # %bb.0: # %entry1094; PWR10LE-NEXT:    xxswapd vs0, v21095; PWR10LE-NEXT:    xvadddp vs0, v2, vs01096; PWR10LE-NEXT:    xxswapd vs1, vs01097; PWR10LE-NEXT:    blr1098;1099; PWR10BE-LABEL: v2f64_fast:1100; PWR10BE:       # %bb.0: # %entry1101; PWR10BE-NEXT:    xxswapd vs0, v21102; PWR10BE-NEXT:    xvadddp vs1, v2, vs01103; PWR10BE-NEXT:    blr1104entry:1105  %0 = call fast double @llvm.vector.reduce.fadd.v2f64(double -0.000000e+00, <2 x double> %a)1106  ret double %01107}1108 1109define dso_local double @v4f64(<4 x double> %a) local_unnamed_addr #0 {1110; PWR9LE-LABEL: v4f64:1111; PWR9LE:       # %bb.0: # %entry1112; PWR9LE-NEXT:    xxswapd vs0, v21113; PWR9LE-NEXT:    xxswapd vs1, v31114; PWR9LE-NEXT:    xsadddp f0, f0, v21115; PWR9LE-NEXT:    xsadddp f0, f0, f11116; PWR9LE-NEXT:    xsadddp f1, f0, v31117; PWR9LE-NEXT:    blr1118;1119; PWR9BE-LABEL: v4f64:1120; PWR9BE:       # %bb.0: # %entry1121; PWR9BE-NEXT:    xxswapd vs0, v21122; PWR9BE-NEXT:    xxswapd vs1, v31123; PWR9BE-NEXT:    xsadddp f0, v2, f01124; PWR9BE-NEXT:    xsadddp f0, f0, v31125; PWR9BE-NEXT:    xsadddp f1, f0, f11126; PWR9BE-NEXT:    blr1127;1128; PWR10LE-LABEL: v4f64:1129; PWR10LE:       # %bb.0: # %entry1130; PWR10LE-NEXT:    xxswapd vs0, v21131; PWR10LE-NEXT:    xxswapd vs1, v31132; PWR10LE-NEXT:    xsadddp f0, f0, v21133; PWR10LE-NEXT:    xsadddp f0, f0, f11134; PWR10LE-NEXT:    xsadddp f1, f0, v31135; PWR10LE-NEXT:    blr1136;1137; PWR10BE-LABEL: v4f64:1138; PWR10BE:       # %bb.0: # %entry1139; PWR10BE-NEXT:    xxswapd vs0, v21140; PWR10BE-NEXT:    xxswapd vs1, v31141; PWR10BE-NEXT:    xsadddp f0, v2, f01142; PWR10BE-NEXT:    xsadddp f0, f0, v31143; PWR10BE-NEXT:    xsadddp f1, f0, f11144; PWR10BE-NEXT:    blr1145entry:1146  %0 = call double @llvm.vector.reduce.fadd.v4f64(double -0.000000e+00, <4 x double> %a)1147  ret double %01148}1149 1150define dso_local double @v4f64_b(<4 x double> %a, double %b) local_unnamed_addr #0 {1151; PWR9LE-LABEL: v4f64_b:1152; PWR9LE:       # %bb.0: # %entry1153; PWR9LE-NEXT:    xxswapd vs0, v21154; PWR9LE-NEXT:    xsadddp f0, f1, f01155; PWR9LE-NEXT:    xxswapd vs1, v31156; PWR9LE-NEXT:    xsadddp f0, f0, v21157; PWR9LE-NEXT:    xsadddp f0, f0, f11158; PWR9LE-NEXT:    xsadddp f1, f0, v31159; PWR9LE-NEXT:    blr1160;1161; PWR9BE-LABEL: v4f64_b:1162; PWR9BE:       # %bb.0: # %entry1163; PWR9BE-NEXT:    xsadddp f0, f1, v21164; PWR9BE-NEXT:    xxswapd vs1, v21165; PWR9BE-NEXT:    xsadddp f0, f0, f11166; PWR9BE-NEXT:    xxswapd vs1, v31167; PWR9BE-NEXT:    xsadddp f0, f0, v31168; PWR9BE-NEXT:    xsadddp f1, f0, f11169; PWR9BE-NEXT:    blr1170;1171; PWR10LE-LABEL: v4f64_b:1172; PWR10LE:       # %bb.0: # %entry1173; PWR10LE-NEXT:    xxswapd vs0, v21174; PWR10LE-NEXT:    xsadddp f0, f1, f01175; PWR10LE-NEXT:    xxswapd vs1, v31176; PWR10LE-NEXT:    xsadddp f0, f0, v21177; PWR10LE-NEXT:    xsadddp f0, f0, f11178; PWR10LE-NEXT:    xsadddp f1, f0, v31179; PWR10LE-NEXT:    blr1180;1181; PWR10BE-LABEL: v4f64_b:1182; PWR10BE:       # %bb.0: # %entry1183; PWR10BE-NEXT:    xsadddp f0, f1, v21184; PWR10BE-NEXT:    xxswapd vs1, v21185; PWR10BE-NEXT:    xsadddp f0, f0, f11186; PWR10BE-NEXT:    xxswapd vs1, v31187; PWR10BE-NEXT:    xsadddp f0, f0, v31188; PWR10BE-NEXT:    xsadddp f1, f0, f11189; PWR10BE-NEXT:    blr1190entry:1191  %0 = call double @llvm.vector.reduce.fadd.v4f64(double %b, <4 x double> %a)1192  ret double %01193}1194 1195define dso_local double @v4f64_fast(<4 x double> %a) local_unnamed_addr #0 {1196; PWR9LE-LABEL: v4f64_fast:1197; PWR9LE:       # %bb.0: # %entry1198; PWR9LE-NEXT:    xvadddp vs0, v2, v31199; PWR9LE-NEXT:    xxswapd vs1, vs01200; PWR9LE-NEXT:    xvadddp vs0, vs0, vs11201; PWR9LE-NEXT:    xxswapd vs1, vs01202; PWR9LE-NEXT:    blr1203;1204; PWR9BE-LABEL: v4f64_fast:1205; PWR9BE:       # %bb.0: # %entry1206; PWR9BE-NEXT:    xvadddp vs0, v2, v31207; PWR9BE-NEXT:    xxswapd vs1, vs01208; PWR9BE-NEXT:    xvadddp vs1, vs0, vs11209; PWR9BE-NEXT:    blr1210;1211; PWR10LE-LABEL: v4f64_fast:1212; PWR10LE:       # %bb.0: # %entry1213; PWR10LE-NEXT:    xvadddp vs0, v2, v31214; PWR10LE-NEXT:    xxswapd vs1, vs01215; PWR10LE-NEXT:    xvadddp vs0, vs0, vs11216; PWR10LE-NEXT:    xxswapd vs1, vs01217; PWR10LE-NEXT:    blr1218;1219; PWR10BE-LABEL: v4f64_fast:1220; PWR10BE:       # %bb.0: # %entry1221; PWR10BE-NEXT:    xvadddp vs0, v2, v31222; PWR10BE-NEXT:    xxswapd vs1, vs01223; PWR10BE-NEXT:    xvadddp vs1, vs0, vs11224; PWR10BE-NEXT:    blr1225entry:1226  %0 = call fast double @llvm.vector.reduce.fadd.v4f64(double -0.000000e+00, <4 x double> %a)1227  ret double %01228}1229 1230define dso_local double @v8f64(<8 x double> %a) local_unnamed_addr #0 {1231; PWR9LE-LABEL: v8f64:1232; PWR9LE:       # %bb.0: # %entry1233; PWR9LE-NEXT:    xxswapd vs0, v21234; PWR9LE-NEXT:    xxswapd vs1, v31235; PWR9LE-NEXT:    xsadddp f0, f0, v21236; PWR9LE-NEXT:    xsadddp f0, f0, f11237; PWR9LE-NEXT:    xxswapd vs1, v41238; PWR9LE-NEXT:    xsadddp f0, f0, v31239; PWR9LE-NEXT:    xsadddp f0, f0, f11240; PWR9LE-NEXT:    xxswapd vs1, v51241; PWR9LE-NEXT:    xsadddp f0, f0, v41242; PWR9LE-NEXT:    xsadddp f0, f0, f11243; PWR9LE-NEXT:    xsadddp f1, f0, v51244; PWR9LE-NEXT:    blr1245;1246; PWR9BE-LABEL: v8f64:1247; PWR9BE:       # %bb.0: # %entry1248; PWR9BE-NEXT:    xxswapd vs0, v21249; PWR9BE-NEXT:    xxswapd vs1, v31250; PWR9BE-NEXT:    xsadddp f0, v2, f01251; PWR9BE-NEXT:    xsadddp f0, f0, v31252; PWR9BE-NEXT:    xsadddp f0, f0, f11253; PWR9BE-NEXT:    xxswapd vs1, v41254; PWR9BE-NEXT:    xsadddp f0, f0, v41255; PWR9BE-NEXT:    xsadddp f0, f0, f11256; PWR9BE-NEXT:    xxswapd vs1, v51257; PWR9BE-NEXT:    xsadddp f0, f0, v51258; PWR9BE-NEXT:    xsadddp f1, f0, f11259; PWR9BE-NEXT:    blr1260;1261; PWR10LE-LABEL: v8f64:1262; PWR10LE:       # %bb.0: # %entry1263; PWR10LE-NEXT:    xxswapd vs0, v21264; PWR10LE-NEXT:    xxswapd vs1, v31265; PWR10LE-NEXT:    xsadddp f0, f0, v21266; PWR10LE-NEXT:    xsadddp f0, f0, f11267; PWR10LE-NEXT:    xxswapd vs1, v41268; PWR10LE-NEXT:    xsadddp f0, f0, v31269; PWR10LE-NEXT:    xsadddp f0, f0, f11270; PWR10LE-NEXT:    xxswapd vs1, v51271; PWR10LE-NEXT:    xsadddp f0, f0, v41272; PWR10LE-NEXT:    xsadddp f0, f0, f11273; PWR10LE-NEXT:    xsadddp f1, f0, v51274; PWR10LE-NEXT:    blr1275;1276; PWR10BE-LABEL: v8f64:1277; PWR10BE:       # %bb.0: # %entry1278; PWR10BE-NEXT:    xxswapd vs0, v21279; PWR10BE-NEXT:    xxswapd vs1, v31280; PWR10BE-NEXT:    xsadddp f0, v2, f01281; PWR10BE-NEXT:    xsadddp f0, f0, v31282; PWR10BE-NEXT:    xsadddp f0, f0, f11283; PWR10BE-NEXT:    xxswapd vs1, v41284; PWR10BE-NEXT:    xsadddp f0, f0, v41285; PWR10BE-NEXT:    xsadddp f0, f0, f11286; PWR10BE-NEXT:    xxswapd vs1, v51287; PWR10BE-NEXT:    xsadddp f0, f0, v51288; PWR10BE-NEXT:    xsadddp f1, f0, f11289; PWR10BE-NEXT:    blr1290entry:1291  %0 = call double @llvm.vector.reduce.fadd.v8f64(double -0.000000e+00, <8 x double> %a)1292  ret double %01293}1294 1295define dso_local double @v8f64_b(<8 x double> %a, double %b) local_unnamed_addr #0 {1296; PWR9LE-LABEL: v8f64_b:1297; PWR9LE:       # %bb.0: # %entry1298; PWR9LE-NEXT:    xxswapd vs0, v21299; PWR9LE-NEXT:    xsadddp f0, f1, f01300; PWR9LE-NEXT:    xxswapd vs1, v31301; PWR9LE-NEXT:    xsadddp f0, f0, v21302; PWR9LE-NEXT:    xsadddp f0, f0, f11303; PWR9LE-NEXT:    xxswapd vs1, v41304; PWR9LE-NEXT:    xsadddp f0, f0, v31305; PWR9LE-NEXT:    xsadddp f0, f0, f11306; PWR9LE-NEXT:    xxswapd vs1, v51307; PWR9LE-NEXT:    xsadddp f0, f0, v41308; PWR9LE-NEXT:    xsadddp f0, f0, f11309; PWR9LE-NEXT:    xsadddp f1, f0, v51310; PWR9LE-NEXT:    blr1311;1312; PWR9BE-LABEL: v8f64_b:1313; PWR9BE:       # %bb.0: # %entry1314; PWR9BE-NEXT:    xsadddp f0, f1, v21315; PWR9BE-NEXT:    xxswapd vs1, v21316; PWR9BE-NEXT:    xsadddp f0, f0, f11317; PWR9BE-NEXT:    xxswapd vs1, v31318; PWR9BE-NEXT:    xsadddp f0, f0, v31319; PWR9BE-NEXT:    xsadddp f0, f0, f11320; PWR9BE-NEXT:    xxswapd vs1, v41321; PWR9BE-NEXT:    xsadddp f0, f0, v41322; PWR9BE-NEXT:    xsadddp f0, f0, f11323; PWR9BE-NEXT:    xxswapd vs1, v51324; PWR9BE-NEXT:    xsadddp f0, f0, v51325; PWR9BE-NEXT:    xsadddp f1, f0, f11326; PWR9BE-NEXT:    blr1327;1328; PWR10LE-LABEL: v8f64_b:1329; PWR10LE:       # %bb.0: # %entry1330; PWR10LE-NEXT:    xxswapd vs0, v21331; PWR10LE-NEXT:    xsadddp f0, f1, f01332; PWR10LE-NEXT:    xxswapd vs1, v31333; PWR10LE-NEXT:    xsadddp f0, f0, v21334; PWR10LE-NEXT:    xsadddp f0, f0, f11335; PWR10LE-NEXT:    xxswapd vs1, v41336; PWR10LE-NEXT:    xsadddp f0, f0, v31337; PWR10LE-NEXT:    xsadddp f0, f0, f11338; PWR10LE-NEXT:    xxswapd vs1, v51339; PWR10LE-NEXT:    xsadddp f0, f0, v41340; PWR10LE-NEXT:    xsadddp f0, f0, f11341; PWR10LE-NEXT:    xsadddp f1, f0, v51342; PWR10LE-NEXT:    blr1343;1344; PWR10BE-LABEL: v8f64_b:1345; PWR10BE:       # %bb.0: # %entry1346; PWR10BE-NEXT:    xsadddp f0, f1, v21347; PWR10BE-NEXT:    xxswapd vs1, v21348; PWR10BE-NEXT:    xsadddp f0, f0, f11349; PWR10BE-NEXT:    xxswapd vs1, v31350; PWR10BE-NEXT:    xsadddp f0, f0, v31351; PWR10BE-NEXT:    xsadddp f0, f0, f11352; PWR10BE-NEXT:    xxswapd vs1, v41353; PWR10BE-NEXT:    xsadddp f0, f0, v41354; PWR10BE-NEXT:    xsadddp f0, f0, f11355; PWR10BE-NEXT:    xxswapd vs1, v51356; PWR10BE-NEXT:    xsadddp f0, f0, v51357; PWR10BE-NEXT:    xsadddp f1, f0, f11358; PWR10BE-NEXT:    blr1359entry:1360  %0 = call double @llvm.vector.reduce.fadd.v8f64(double %b, <8 x double> %a)1361  ret double %01362}1363 1364define dso_local double @v8f64_fast(<8 x double> %a) local_unnamed_addr #0 {1365; PWR9LE-LABEL: v8f64_fast:1366; PWR9LE:       # %bb.0: # %entry1367; PWR9LE-NEXT:    xvadddp vs0, v3, v51368; PWR9LE-NEXT:    xvadddp vs1, v2, v41369; PWR9LE-NEXT:    xvadddp vs0, vs1, vs01370; PWR9LE-NEXT:    xxswapd vs1, vs01371; PWR9LE-NEXT:    xvadddp vs0, vs0, vs11372; PWR9LE-NEXT:    xxswapd vs1, vs01373; PWR9LE-NEXT:    blr1374;1375; PWR9BE-LABEL: v8f64_fast:1376; PWR9BE:       # %bb.0: # %entry1377; PWR9BE-NEXT:    xvadddp vs0, v3, v51378; PWR9BE-NEXT:    xvadddp vs1, v2, v41379; PWR9BE-NEXT:    xvadddp vs0, vs1, vs01380; PWR9BE-NEXT:    xxswapd vs1, vs01381; PWR9BE-NEXT:    xvadddp vs1, vs0, vs11382; PWR9BE-NEXT:    blr1383;1384; PWR10LE-LABEL: v8f64_fast:1385; PWR10LE:       # %bb.0: # %entry1386; PWR10LE-NEXT:    xvadddp vs0, v3, v51387; PWR10LE-NEXT:    xvadddp vs1, v2, v41388; PWR10LE-NEXT:    xvadddp vs0, vs1, vs01389; PWR10LE-NEXT:    xxswapd vs1, vs01390; PWR10LE-NEXT:    xvadddp vs0, vs0, vs11391; PWR10LE-NEXT:    xxswapd vs1, vs01392; PWR10LE-NEXT:    blr1393;1394; PWR10BE-LABEL: v8f64_fast:1395; PWR10BE:       # %bb.0: # %entry1396; PWR10BE-NEXT:    xvadddp vs0, v3, v51397; PWR10BE-NEXT:    xvadddp vs1, v2, v41398; PWR10BE-NEXT:    xvadddp vs0, vs1, vs01399; PWR10BE-NEXT:    xxswapd vs1, vs01400; PWR10BE-NEXT:    xvadddp vs1, vs0, vs11401; PWR10BE-NEXT:    blr1402entry:1403  %0 = call fast double @llvm.vector.reduce.fadd.v8f64(double -0.000000e+00, <8 x double> %a)1404  ret double %01405}1406 1407define dso_local double @v16f64(<16 x double> %a) local_unnamed_addr #0 {1408; PWR9LE-LABEL: v16f64:1409; PWR9LE:       # %bb.0: # %entry1410; PWR9LE-NEXT:    xxswapd vs0, v21411; PWR9LE-NEXT:    xxswapd vs1, v31412; PWR9LE-NEXT:    xsadddp f0, f0, v21413; PWR9LE-NEXT:    xsadddp f0, f0, f11414; PWR9LE-NEXT:    xxswapd vs1, v41415; PWR9LE-NEXT:    xsadddp f0, f0, v31416; PWR9LE-NEXT:    xsadddp f0, f0, f11417; PWR9LE-NEXT:    xxswapd vs1, v51418; PWR9LE-NEXT:    xsadddp f0, f0, v41419; PWR9LE-NEXT:    xsadddp f0, f0, f11420; PWR9LE-NEXT:    xxswapd vs1, v61421; PWR9LE-NEXT:    xsadddp f0, f0, v51422; PWR9LE-NEXT:    xsadddp f0, f0, f11423; PWR9LE-NEXT:    xxswapd vs1, v71424; PWR9LE-NEXT:    xsadddp f0, f0, v61425; PWR9LE-NEXT:    xsadddp f0, f0, f11426; PWR9LE-NEXT:    xxswapd vs1, v81427; PWR9LE-NEXT:    xsadddp f0, f0, v71428; PWR9LE-NEXT:    xsadddp f0, f0, f11429; PWR9LE-NEXT:    xxswapd vs1, v91430; PWR9LE-NEXT:    xsadddp f0, f0, v81431; PWR9LE-NEXT:    xsadddp f0, f0, f11432; PWR9LE-NEXT:    xsadddp f1, f0, v91433; PWR9LE-NEXT:    blr1434;1435; PWR9BE-LABEL: v16f64:1436; PWR9BE:       # %bb.0: # %entry1437; PWR9BE-NEXT:    xxswapd vs0, v21438; PWR9BE-NEXT:    xxswapd vs1, v31439; PWR9BE-NEXT:    xsadddp f0, v2, f01440; PWR9BE-NEXT:    xsadddp f0, f0, v31441; PWR9BE-NEXT:    xsadddp f0, f0, f11442; PWR9BE-NEXT:    xxswapd vs1, v41443; PWR9BE-NEXT:    xsadddp f0, f0, v41444; PWR9BE-NEXT:    xsadddp f0, f0, f11445; PWR9BE-NEXT:    xxswapd vs1, v51446; PWR9BE-NEXT:    xsadddp f0, f0, v51447; PWR9BE-NEXT:    xsadddp f0, f0, f11448; PWR9BE-NEXT:    xxswapd vs1, v61449; PWR9BE-NEXT:    xsadddp f0, f0, v61450; PWR9BE-NEXT:    xsadddp f0, f0, f11451; PWR9BE-NEXT:    xxswapd vs1, v71452; PWR9BE-NEXT:    xsadddp f0, f0, v71453; PWR9BE-NEXT:    xsadddp f0, f0, f11454; PWR9BE-NEXT:    xxswapd vs1, v81455; PWR9BE-NEXT:    xsadddp f0, f0, v81456; PWR9BE-NEXT:    xsadddp f0, f0, f11457; PWR9BE-NEXT:    xxswapd vs1, v91458; PWR9BE-NEXT:    xsadddp f0, f0, v91459; PWR9BE-NEXT:    xsadddp f1, f0, f11460; PWR9BE-NEXT:    blr1461;1462; PWR10LE-LABEL: v16f64:1463; PWR10LE:       # %bb.0: # %entry1464; PWR10LE-NEXT:    xxswapd vs0, v21465; PWR10LE-NEXT:    xxswapd vs1, v31466; PWR10LE-NEXT:    xsadddp f0, f0, v21467; PWR10LE-NEXT:    xsadddp f0, f0, f11468; PWR10LE-NEXT:    xxswapd vs1, v41469; PWR10LE-NEXT:    xsadddp f0, f0, v31470; PWR10LE-NEXT:    xsadddp f0, f0, f11471; PWR10LE-NEXT:    xxswapd vs1, v51472; PWR10LE-NEXT:    xsadddp f0, f0, v41473; PWR10LE-NEXT:    xsadddp f0, f0, f11474; PWR10LE-NEXT:    xxswapd vs1, v61475; PWR10LE-NEXT:    xsadddp f0, f0, v51476; PWR10LE-NEXT:    xsadddp f0, f0, f11477; PWR10LE-NEXT:    xxswapd vs1, v71478; PWR10LE-NEXT:    xsadddp f0, f0, v61479; PWR10LE-NEXT:    xsadddp f0, f0, f11480; PWR10LE-NEXT:    xxswapd vs1, v81481; PWR10LE-NEXT:    xsadddp f0, f0, v71482; PWR10LE-NEXT:    xsadddp f0, f0, f11483; PWR10LE-NEXT:    xxswapd vs1, v91484; PWR10LE-NEXT:    xsadddp f0, f0, v81485; PWR10LE-NEXT:    xsadddp f0, f0, f11486; PWR10LE-NEXT:    xsadddp f1, f0, v91487; PWR10LE-NEXT:    blr1488;1489; PWR10BE-LABEL: v16f64:1490; PWR10BE:       # %bb.0: # %entry1491; PWR10BE-NEXT:    xxswapd vs0, v21492; PWR10BE-NEXT:    xxswapd vs1, v31493; PWR10BE-NEXT:    xsadddp f0, v2, f01494; PWR10BE-NEXT:    xsadddp f0, f0, v31495; PWR10BE-NEXT:    xsadddp f0, f0, f11496; PWR10BE-NEXT:    xxswapd vs1, v41497; PWR10BE-NEXT:    xsadddp f0, f0, v41498; PWR10BE-NEXT:    xsadddp f0, f0, f11499; PWR10BE-NEXT:    xxswapd vs1, v51500; PWR10BE-NEXT:    xsadddp f0, f0, v51501; PWR10BE-NEXT:    xsadddp f0, f0, f11502; PWR10BE-NEXT:    xxswapd vs1, v61503; PWR10BE-NEXT:    xsadddp f0, f0, v61504; PWR10BE-NEXT:    xsadddp f0, f0, f11505; PWR10BE-NEXT:    xxswapd vs1, v71506; PWR10BE-NEXT:    xsadddp f0, f0, v71507; PWR10BE-NEXT:    xsadddp f0, f0, f11508; PWR10BE-NEXT:    xxswapd vs1, v81509; PWR10BE-NEXT:    xsadddp f0, f0, v81510; PWR10BE-NEXT:    xsadddp f0, f0, f11511; PWR10BE-NEXT:    xxswapd vs1, v91512; PWR10BE-NEXT:    xsadddp f0, f0, v91513; PWR10BE-NEXT:    xsadddp f1, f0, f11514; PWR10BE-NEXT:    blr1515entry:1516  %0 = call double @llvm.vector.reduce.fadd.v16f64(double -0.000000e+00, <16 x double> %a)1517  ret double %01518}1519 1520define dso_local double @v16f64_b(<16 x double> %a, double %b) local_unnamed_addr #0 {1521; PWR9LE-LABEL: v16f64_b:1522; PWR9LE:       # %bb.0: # %entry1523; PWR9LE-NEXT:    xxswapd vs0, v21524; PWR9LE-NEXT:    xsadddp f0, f1, f01525; PWR9LE-NEXT:    xxswapd vs1, v31526; PWR9LE-NEXT:    xsadddp f0, f0, v21527; PWR9LE-NEXT:    xsadddp f0, f0, f11528; PWR9LE-NEXT:    xxswapd vs1, v41529; PWR9LE-NEXT:    xsadddp f0, f0, v31530; PWR9LE-NEXT:    xsadddp f0, f0, f11531; PWR9LE-NEXT:    xxswapd vs1, v51532; PWR9LE-NEXT:    xsadddp f0, f0, v41533; PWR9LE-NEXT:    xsadddp f0, f0, f11534; PWR9LE-NEXT:    xxswapd vs1, v61535; PWR9LE-NEXT:    xsadddp f0, f0, v51536; PWR9LE-NEXT:    xsadddp f0, f0, f11537; PWR9LE-NEXT:    xxswapd vs1, v71538; PWR9LE-NEXT:    xsadddp f0, f0, v61539; PWR9LE-NEXT:    xsadddp f0, f0, f11540; PWR9LE-NEXT:    xxswapd vs1, v81541; PWR9LE-NEXT:    xsadddp f0, f0, v71542; PWR9LE-NEXT:    xsadddp f0, f0, f11543; PWR9LE-NEXT:    xxswapd vs1, v91544; PWR9LE-NEXT:    xsadddp f0, f0, v81545; PWR9LE-NEXT:    xsadddp f0, f0, f11546; PWR9LE-NEXT:    xsadddp f1, f0, v91547; PWR9LE-NEXT:    blr1548;1549; PWR9BE-LABEL: v16f64_b:1550; PWR9BE:       # %bb.0: # %entry1551; PWR9BE-NEXT:    xsadddp f0, f1, v21552; PWR9BE-NEXT:    xxswapd vs1, v21553; PWR9BE-NEXT:    xsadddp f0, f0, f11554; PWR9BE-NEXT:    xxswapd vs1, v31555; PWR9BE-NEXT:    xsadddp f0, f0, v31556; PWR9BE-NEXT:    xsadddp f0, f0, f11557; PWR9BE-NEXT:    xxswapd vs1, v41558; PWR9BE-NEXT:    xsadddp f0, f0, v41559; PWR9BE-NEXT:    xsadddp f0, f0, f11560; PWR9BE-NEXT:    xxswapd vs1, v51561; PWR9BE-NEXT:    xsadddp f0, f0, v51562; PWR9BE-NEXT:    xsadddp f0, f0, f11563; PWR9BE-NEXT:    xxswapd vs1, v61564; PWR9BE-NEXT:    xsadddp f0, f0, v61565; PWR9BE-NEXT:    xsadddp f0, f0, f11566; PWR9BE-NEXT:    xxswapd vs1, v71567; PWR9BE-NEXT:    xsadddp f0, f0, v71568; PWR9BE-NEXT:    xsadddp f0, f0, f11569; PWR9BE-NEXT:    xxswapd vs1, v81570; PWR9BE-NEXT:    xsadddp f0, f0, v81571; PWR9BE-NEXT:    xsadddp f0, f0, f11572; PWR9BE-NEXT:    xxswapd vs1, v91573; PWR9BE-NEXT:    xsadddp f0, f0, v91574; PWR9BE-NEXT:    xsadddp f1, f0, f11575; PWR9BE-NEXT:    blr1576;1577; PWR10LE-LABEL: v16f64_b:1578; PWR10LE:       # %bb.0: # %entry1579; PWR10LE-NEXT:    xxswapd vs0, v21580; PWR10LE-NEXT:    xsadddp f0, f1, f01581; PWR10LE-NEXT:    xxswapd vs1, v31582; PWR10LE-NEXT:    xsadddp f0, f0, v21583; PWR10LE-NEXT:    xsadddp f0, f0, f11584; PWR10LE-NEXT:    xxswapd vs1, v41585; PWR10LE-NEXT:    xsadddp f0, f0, v31586; PWR10LE-NEXT:    xsadddp f0, f0, f11587; PWR10LE-NEXT:    xxswapd vs1, v51588; PWR10LE-NEXT:    xsadddp f0, f0, v41589; PWR10LE-NEXT:    xsadddp f0, f0, f11590; PWR10LE-NEXT:    xxswapd vs1, v61591; PWR10LE-NEXT:    xsadddp f0, f0, v51592; PWR10LE-NEXT:    xsadddp f0, f0, f11593; PWR10LE-NEXT:    xxswapd vs1, v71594; PWR10LE-NEXT:    xsadddp f0, f0, v61595; PWR10LE-NEXT:    xsadddp f0, f0, f11596; PWR10LE-NEXT:    xxswapd vs1, v81597; PWR10LE-NEXT:    xsadddp f0, f0, v71598; PWR10LE-NEXT:    xsadddp f0, f0, f11599; PWR10LE-NEXT:    xxswapd vs1, v91600; PWR10LE-NEXT:    xsadddp f0, f0, v81601; PWR10LE-NEXT:    xsadddp f0, f0, f11602; PWR10LE-NEXT:    xsadddp f1, f0, v91603; PWR10LE-NEXT:    blr1604;1605; PWR10BE-LABEL: v16f64_b:1606; PWR10BE:       # %bb.0: # %entry1607; PWR10BE-NEXT:    xsadddp f0, f1, v21608; PWR10BE-NEXT:    xxswapd vs1, v21609; PWR10BE-NEXT:    xsadddp f0, f0, f11610; PWR10BE-NEXT:    xxswapd vs1, v31611; PWR10BE-NEXT:    xsadddp f0, f0, v31612; PWR10BE-NEXT:    xsadddp f0, f0, f11613; PWR10BE-NEXT:    xxswapd vs1, v41614; PWR10BE-NEXT:    xsadddp f0, f0, v41615; PWR10BE-NEXT:    xsadddp f0, f0, f11616; PWR10BE-NEXT:    xxswapd vs1, v51617; PWR10BE-NEXT:    xsadddp f0, f0, v51618; PWR10BE-NEXT:    xsadddp f0, f0, f11619; PWR10BE-NEXT:    xxswapd vs1, v61620; PWR10BE-NEXT:    xsadddp f0, f0, v61621; PWR10BE-NEXT:    xsadddp f0, f0, f11622; PWR10BE-NEXT:    xxswapd vs1, v71623; PWR10BE-NEXT:    xsadddp f0, f0, v71624; PWR10BE-NEXT:    xsadddp f0, f0, f11625; PWR10BE-NEXT:    xxswapd vs1, v81626; PWR10BE-NEXT:    xsadddp f0, f0, v81627; PWR10BE-NEXT:    xsadddp f0, f0, f11628; PWR10BE-NEXT:    xxswapd vs1, v91629; PWR10BE-NEXT:    xsadddp f0, f0, v91630; PWR10BE-NEXT:    xsadddp f1, f0, f11631; PWR10BE-NEXT:    blr1632entry:1633  %0 = call double @llvm.vector.reduce.fadd.v16f64(double %b, <16 x double> %a)1634  ret double %01635}1636 1637define dso_local double @v16f64_fast(<16 x double> %a) local_unnamed_addr #0 {1638; PWR9LE-LABEL: v16f64_fast:1639; PWR9LE:       # %bb.0: # %entry1640; PWR9LE-NEXT:    xvadddp vs0, v4, v81641; PWR9LE-NEXT:    xvadddp vs1, v2, v61642; PWR9LE-NEXT:    xvadddp vs2, v5, v91643; PWR9LE-NEXT:    xvadddp vs3, v3, v71644; PWR9LE-NEXT:    xvadddp vs2, vs3, vs21645; PWR9LE-NEXT:    xvadddp vs0, vs1, vs01646; PWR9LE-NEXT:    xvadddp vs0, vs0, vs21647; PWR9LE-NEXT:    xxswapd vs1, vs01648; PWR9LE-NEXT:    xvadddp vs0, vs0, vs11649; PWR9LE-NEXT:    xxswapd vs1, vs01650; PWR9LE-NEXT:    blr1651;1652; PWR9BE-LABEL: v16f64_fast:1653; PWR9BE:       # %bb.0: # %entry1654; PWR9BE-NEXT:    xvadddp vs0, v4, v81655; PWR9BE-NEXT:    xvadddp vs1, v2, v61656; PWR9BE-NEXT:    xvadddp vs2, v5, v91657; PWR9BE-NEXT:    xvadddp vs3, v3, v71658; PWR9BE-NEXT:    xvadddp vs2, vs3, vs21659; PWR9BE-NEXT:    xvadddp vs0, vs1, vs01660; PWR9BE-NEXT:    xvadddp vs0, vs0, vs21661; PWR9BE-NEXT:    xxswapd vs1, vs01662; PWR9BE-NEXT:    xvadddp vs1, vs0, vs11663; PWR9BE-NEXT:    blr1664;1665; PWR10LE-LABEL: v16f64_fast:1666; PWR10LE:       # %bb.0: # %entry1667; PWR10LE-NEXT:    xvadddp vs0, v4, v81668; PWR10LE-NEXT:    xvadddp vs1, v2, v61669; PWR10LE-NEXT:    xvadddp vs2, v5, v91670; PWR10LE-NEXT:    xvadddp vs3, v3, v71671; PWR10LE-NEXT:    xvadddp vs2, vs3, vs21672; PWR10LE-NEXT:    xvadddp vs0, vs1, vs01673; PWR10LE-NEXT:    xvadddp vs0, vs0, vs21674; PWR10LE-NEXT:    xxswapd vs1, vs01675; PWR10LE-NEXT:    xvadddp vs0, vs0, vs11676; PWR10LE-NEXT:    xxswapd vs1, vs01677; PWR10LE-NEXT:    blr1678;1679; PWR10BE-LABEL: v16f64_fast:1680; PWR10BE:       # %bb.0: # %entry1681; PWR10BE-NEXT:    xvadddp vs0, v4, v81682; PWR10BE-NEXT:    xvadddp vs1, v2, v61683; PWR10BE-NEXT:    xvadddp vs2, v5, v91684; PWR10BE-NEXT:    xvadddp vs3, v3, v71685; PWR10BE-NEXT:    xvadddp vs2, vs3, vs21686; PWR10BE-NEXT:    xvadddp vs0, vs1, vs01687; PWR10BE-NEXT:    xvadddp vs0, vs0, vs21688; PWR10BE-NEXT:    xxswapd vs1, vs01689; PWR10BE-NEXT:    xvadddp vs1, vs0, vs11690; PWR10BE-NEXT:    blr1691entry:1692  %0 = call fast double @llvm.vector.reduce.fadd.v16f64(double -0.000000e+00, <16 x double> %a)1693  ret double %01694}1695 1696define dso_local double @v32f64(<32 x double> %a) local_unnamed_addr #0 {1697; PWR9LE-LABEL: v32f64:1698; PWR9LE:       # %bb.0: # %entry1699; PWR9LE-NEXT:    xxswapd vs4, v21700; PWR9LE-NEXT:    xxswapd vs5, v31701; PWR9LE-NEXT:    lxv vs3, 224(r1)1702; PWR9LE-NEXT:    lxv vs2, 240(r1)1703; PWR9LE-NEXT:    lxv vs1, 256(r1)1704; PWR9LE-NEXT:    lxv vs0, 272(r1)1705; PWR9LE-NEXT:    xsadddp f4, f4, v21706; PWR9LE-NEXT:    xsadddp f4, f4, f51707; PWR9LE-NEXT:    xxswapd vs5, v41708; PWR9LE-NEXT:    xsadddp f4, f4, v31709; PWR9LE-NEXT:    xsadddp f4, f4, f51710; PWR9LE-NEXT:    xxswapd vs5, v51711; PWR9LE-NEXT:    xsadddp f4, f4, v41712; PWR9LE-NEXT:    xsadddp f4, f4, f51713; PWR9LE-NEXT:    xxswapd vs5, v61714; PWR9LE-NEXT:    xsadddp f4, f4, v51715; PWR9LE-NEXT:    xsadddp f4, f4, f51716; PWR9LE-NEXT:    xxswapd vs5, v71717; PWR9LE-NEXT:    xsadddp f4, f4, v61718; PWR9LE-NEXT:    xsadddp f4, f4, f51719; PWR9LE-NEXT:    xxswapd vs5, v81720; PWR9LE-NEXT:    xsadddp f4, f4, v71721; PWR9LE-NEXT:    xsadddp f4, f4, f51722; PWR9LE-NEXT:    xxswapd vs5, v91723; PWR9LE-NEXT:    xsadddp f4, f4, v81724; PWR9LE-NEXT:    xsadddp f4, f4, f51725; PWR9LE-NEXT:    xxswapd vs5, v101726; PWR9LE-NEXT:    xsadddp f4, f4, v91727; PWR9LE-NEXT:    xsadddp f4, f4, f51728; PWR9LE-NEXT:    xxswapd vs5, v111729; PWR9LE-NEXT:    xsadddp f4, f4, v101730; PWR9LE-NEXT:    xsadddp f4, f4, f51731; PWR9LE-NEXT:    xxswapd vs5, v121732; PWR9LE-NEXT:    xsadddp f4, f4, v111733; PWR9LE-NEXT:    xsadddp f4, f4, f51734; PWR9LE-NEXT:    xxswapd vs5, v131735; PWR9LE-NEXT:    xsadddp f4, f4, v121736; PWR9LE-NEXT:    xsadddp f4, f4, f51737; PWR9LE-NEXT:    xxswapd vs5, vs31738; PWR9LE-NEXT:    xsadddp f4, f4, v131739; PWR9LE-NEXT:    xsadddp f4, f4, f51740; PWR9LE-NEXT:    xsadddp f3, f4, f31741; PWR9LE-NEXT:    xxswapd vs4, vs21742; PWR9LE-NEXT:    xsadddp f3, f3, f41743; PWR9LE-NEXT:    xsadddp f2, f3, f21744; PWR9LE-NEXT:    xxswapd vs3, vs11745; PWR9LE-NEXT:    xsadddp f2, f2, f31746; PWR9LE-NEXT:    xsadddp f1, f2, f11747; PWR9LE-NEXT:    xxswapd vs2, vs01748; PWR9LE-NEXT:    xsadddp f1, f1, f21749; PWR9LE-NEXT:    xsadddp f1, f1, f01750; PWR9LE-NEXT:    blr1751;1752; PWR9BE-LABEL: v32f64:1753; PWR9BE:       # %bb.0: # %entry1754; PWR9BE-NEXT:    xxswapd vs4, v21755; PWR9BE-NEXT:    xxswapd vs5, v31756; PWR9BE-NEXT:    lxv vs3, 240(r1)1757; PWR9BE-NEXT:    lxv vs2, 256(r1)1758; PWR9BE-NEXT:    lxv vs1, 272(r1)1759; PWR9BE-NEXT:    lxv vs0, 288(r1)1760; PWR9BE-NEXT:    xsadddp f4, v2, f41761; PWR9BE-NEXT:    xsadddp f4, f4, v31762; PWR9BE-NEXT:    xsadddp f4, f4, f51763; PWR9BE-NEXT:    xxswapd vs5, v41764; PWR9BE-NEXT:    xsadddp f4, f4, v41765; PWR9BE-NEXT:    xsadddp f4, f4, f51766; PWR9BE-NEXT:    xxswapd vs5, v51767; PWR9BE-NEXT:    xsadddp f4, f4, v51768; PWR9BE-NEXT:    xsadddp f4, f4, f51769; PWR9BE-NEXT:    xxswapd vs5, v61770; PWR9BE-NEXT:    xsadddp f4, f4, v61771; PWR9BE-NEXT:    xsadddp f4, f4, f51772; PWR9BE-NEXT:    xxswapd vs5, v71773; PWR9BE-NEXT:    xsadddp f4, f4, v71774; PWR9BE-NEXT:    xsadddp f4, f4, f51775; PWR9BE-NEXT:    xxswapd vs5, v81776; PWR9BE-NEXT:    xsadddp f4, f4, v81777; PWR9BE-NEXT:    xsadddp f4, f4, f51778; PWR9BE-NEXT:    xxswapd vs5, v91779; PWR9BE-NEXT:    xsadddp f4, f4, v91780; PWR9BE-NEXT:    xsadddp f4, f4, f51781; PWR9BE-NEXT:    xxswapd vs5, v101782; PWR9BE-NEXT:    xsadddp f4, f4, v101783; PWR9BE-NEXT:    xsadddp f4, f4, f51784; PWR9BE-NEXT:    xxswapd vs5, v111785; PWR9BE-NEXT:    xsadddp f4, f4, v111786; PWR9BE-NEXT:    xsadddp f4, f4, f51787; PWR9BE-NEXT:    xxswapd vs5, v121788; PWR9BE-NEXT:    xsadddp f4, f4, v121789; PWR9BE-NEXT:    xsadddp f4, f4, f51790; PWR9BE-NEXT:    xxswapd vs5, v131791; PWR9BE-NEXT:    xsadddp f4, f4, v131792; PWR9BE-NEXT:    xsadddp f4, f4, f51793; PWR9BE-NEXT:    xsadddp f4, f4, f31794; PWR9BE-NEXT:    xxswapd vs3, vs31795; PWR9BE-NEXT:    xsadddp f3, f4, f31796; PWR9BE-NEXT:    xsadddp f3, f3, f21797; PWR9BE-NEXT:    xxswapd vs2, vs21798; PWR9BE-NEXT:    xsadddp f2, f3, f21799; PWR9BE-NEXT:    xsadddp f2, f2, f11800; PWR9BE-NEXT:    xxswapd vs1, vs11801; PWR9BE-NEXT:    xsadddp f1, f2, f11802; PWR9BE-NEXT:    xsadddp f1, f1, f01803; PWR9BE-NEXT:    xxswapd vs0, vs01804; PWR9BE-NEXT:    xsadddp f1, f1, f01805; PWR9BE-NEXT:    blr1806;1807; PWR10LE-LABEL: v32f64:1808; PWR10LE:       # %bb.0: # %entry1809; PWR10LE-NEXT:    xxswapd vs4, v21810; PWR10LE-NEXT:    xxswapd vs5, v31811; PWR10LE-NEXT:    lxv vs3, 224(r1)1812; PWR10LE-NEXT:    lxv vs2, 240(r1)1813; PWR10LE-NEXT:    xsadddp f4, f4, v21814; PWR10LE-NEXT:    lxv vs1, 256(r1)1815; PWR10LE-NEXT:    lxv vs0, 272(r1)1816; PWR10LE-NEXT:    xsadddp f4, f4, f51817; PWR10LE-NEXT:    xxswapd vs5, v41818; PWR10LE-NEXT:    xsadddp f4, f4, v31819; PWR10LE-NEXT:    xsadddp f4, f4, f51820; PWR10LE-NEXT:    xxswapd vs5, v51821; PWR10LE-NEXT:    xsadddp f4, f4, v41822; PWR10LE-NEXT:    xsadddp f4, f4, f51823; PWR10LE-NEXT:    xxswapd vs5, v61824; PWR10LE-NEXT:    xsadddp f4, f4, v51825; PWR10LE-NEXT:    xsadddp f4, f4, f51826; PWR10LE-NEXT:    xxswapd vs5, v71827; PWR10LE-NEXT:    xsadddp f4, f4, v61828; PWR10LE-NEXT:    xsadddp f4, f4, f51829; PWR10LE-NEXT:    xxswapd vs5, v81830; PWR10LE-NEXT:    xsadddp f4, f4, v71831; PWR10LE-NEXT:    xsadddp f4, f4, f51832; PWR10LE-NEXT:    xxswapd vs5, v91833; PWR10LE-NEXT:    xsadddp f4, f4, v81834; PWR10LE-NEXT:    xsadddp f4, f4, f51835; PWR10LE-NEXT:    xxswapd vs5, v101836; PWR10LE-NEXT:    xsadddp f4, f4, v91837; PWR10LE-NEXT:    xsadddp f4, f4, f51838; PWR10LE-NEXT:    xxswapd vs5, v111839; PWR10LE-NEXT:    xsadddp f4, f4, v101840; PWR10LE-NEXT:    xsadddp f4, f4, f51841; PWR10LE-NEXT:    xxswapd vs5, v121842; PWR10LE-NEXT:    xsadddp f4, f4, v111843; PWR10LE-NEXT:    xsadddp f4, f4, f51844; PWR10LE-NEXT:    xxswapd vs5, v131845; PWR10LE-NEXT:    xsadddp f4, f4, v121846; PWR10LE-NEXT:    xsadddp f4, f4, f51847; PWR10LE-NEXT:    xxswapd vs5, vs31848; PWR10LE-NEXT:    xsadddp f4, f4, v131849; PWR10LE-NEXT:    xsadddp f4, f4, f51850; PWR10LE-NEXT:    xsadddp f3, f4, f31851; PWR10LE-NEXT:    xxswapd vs4, vs21852; PWR10LE-NEXT:    xsadddp f3, f3, f41853; PWR10LE-NEXT:    xsadddp f2, f3, f21854; PWR10LE-NEXT:    xxswapd vs3, vs11855; PWR10LE-NEXT:    xsadddp f2, f2, f31856; PWR10LE-NEXT:    xsadddp f1, f2, f11857; PWR10LE-NEXT:    xxswapd vs2, vs01858; PWR10LE-NEXT:    xsadddp f1, f1, f21859; PWR10LE-NEXT:    xsadddp f1, f1, f01860; PWR10LE-NEXT:    blr1861;1862; PWR10BE-LABEL: v32f64:1863; PWR10BE:       # %bb.0: # %entry1864; PWR10BE-NEXT:    xxswapd vs4, v21865; PWR10BE-NEXT:    xxswapd vs5, v31866; PWR10BE-NEXT:    lxv vs3, 240(r1)1867; PWR10BE-NEXT:    lxv vs2, 256(r1)1868; PWR10BE-NEXT:    xsadddp f4, v2, f41869; PWR10BE-NEXT:    lxv vs1, 272(r1)1870; PWR10BE-NEXT:    lxv vs0, 288(r1)1871; PWR10BE-NEXT:    xsadddp f4, f4, v31872; PWR10BE-NEXT:    xsadddp f4, f4, f51873; PWR10BE-NEXT:    xxswapd vs5, v41874; PWR10BE-NEXT:    xsadddp f4, f4, v41875; PWR10BE-NEXT:    xsadddp f4, f4, f51876; PWR10BE-NEXT:    xxswapd vs5, v51877; PWR10BE-NEXT:    xsadddp f4, f4, v51878; PWR10BE-NEXT:    xsadddp f4, f4, f51879; PWR10BE-NEXT:    xxswapd vs5, v61880; PWR10BE-NEXT:    xsadddp f4, f4, v61881; PWR10BE-NEXT:    xsadddp f4, f4, f51882; PWR10BE-NEXT:    xxswapd vs5, v71883; PWR10BE-NEXT:    xsadddp f4, f4, v71884; PWR10BE-NEXT:    xsadddp f4, f4, f51885; PWR10BE-NEXT:    xxswapd vs5, v81886; PWR10BE-NEXT:    xsadddp f4, f4, v81887; PWR10BE-NEXT:    xsadddp f4, f4, f51888; PWR10BE-NEXT:    xxswapd vs5, v91889; PWR10BE-NEXT:    xsadddp f4, f4, v91890; PWR10BE-NEXT:    xsadddp f4, f4, f51891; PWR10BE-NEXT:    xxswapd vs5, v101892; PWR10BE-NEXT:    xsadddp f4, f4, v101893; PWR10BE-NEXT:    xsadddp f4, f4, f51894; PWR10BE-NEXT:    xxswapd vs5, v111895; PWR10BE-NEXT:    xsadddp f4, f4, v111896; PWR10BE-NEXT:    xsadddp f4, f4, f51897; PWR10BE-NEXT:    xxswapd vs5, v121898; PWR10BE-NEXT:    xsadddp f4, f4, v121899; PWR10BE-NEXT:    xsadddp f4, f4, f51900; PWR10BE-NEXT:    xxswapd vs5, v131901; PWR10BE-NEXT:    xsadddp f4, f4, v131902; PWR10BE-NEXT:    xsadddp f4, f4, f51903; PWR10BE-NEXT:    xsadddp f4, f4, f31904; PWR10BE-NEXT:    xxswapd vs3, vs31905; PWR10BE-NEXT:    xsadddp f3, f4, f31906; PWR10BE-NEXT:    xsadddp f3, f3, f21907; PWR10BE-NEXT:    xxswapd vs2, vs21908; PWR10BE-NEXT:    xsadddp f2, f3, f21909; PWR10BE-NEXT:    xsadddp f2, f2, f11910; PWR10BE-NEXT:    xxswapd vs1, vs11911; PWR10BE-NEXT:    xsadddp f1, f2, f11912; PWR10BE-NEXT:    xsadddp f1, f1, f01913; PWR10BE-NEXT:    xxswapd vs0, vs01914; PWR10BE-NEXT:    xsadddp f1, f1, f01915; PWR10BE-NEXT:    blr1916entry:1917  %0 = call double @llvm.vector.reduce.fadd.v32f64(double -0.000000e+00, <32 x double> %a)1918  ret double %01919}1920 1921define dso_local double @v32f64_b(<32 x double> %a, double %b) local_unnamed_addr #0 {1922; PWR9LE-LABEL: v32f64_b:1923; PWR9LE:       # %bb.0: # %entry1924; PWR9LE-NEXT:    xxswapd vs5, v21925; PWR9LE-NEXT:    lxv vs4, 224(r1)1926; PWR9LE-NEXT:    lxv vs3, 240(r1)1927; PWR9LE-NEXT:    lxv vs2, 256(r1)1928; PWR9LE-NEXT:    lxv vs0, 272(r1)1929; PWR9LE-NEXT:    xsadddp f1, f1, f51930; PWR9LE-NEXT:    xxswapd vs5, v31931; PWR9LE-NEXT:    xsadddp f1, f1, v21932; PWR9LE-NEXT:    xsadddp f1, f1, f51933; PWR9LE-NEXT:    xxswapd vs5, v41934; PWR9LE-NEXT:    xsadddp f1, f1, v31935; PWR9LE-NEXT:    xsadddp f1, f1, f51936; PWR9LE-NEXT:    xxswapd vs5, v51937; PWR9LE-NEXT:    xsadddp f1, f1, v41938; PWR9LE-NEXT:    xsadddp f1, f1, f51939; PWR9LE-NEXT:    xxswapd vs5, v61940; PWR9LE-NEXT:    xsadddp f1, f1, v51941; PWR9LE-NEXT:    xsadddp f1, f1, f51942; PWR9LE-NEXT:    xxswapd vs5, v71943; PWR9LE-NEXT:    xsadddp f1, f1, v61944; PWR9LE-NEXT:    xsadddp f1, f1, f51945; PWR9LE-NEXT:    xxswapd vs5, v81946; PWR9LE-NEXT:    xsadddp f1, f1, v71947; PWR9LE-NEXT:    xsadddp f1, f1, f51948; PWR9LE-NEXT:    xxswapd vs5, v91949; PWR9LE-NEXT:    xsadddp f1, f1, v81950; PWR9LE-NEXT:    xsadddp f1, f1, f51951; PWR9LE-NEXT:    xxswapd vs5, v101952; PWR9LE-NEXT:    xsadddp f1, f1, v91953; PWR9LE-NEXT:    xsadddp f1, f1, f51954; PWR9LE-NEXT:    xxswapd vs5, v111955; PWR9LE-NEXT:    xsadddp f1, f1, v101956; PWR9LE-NEXT:    xsadddp f1, f1, f51957; PWR9LE-NEXT:    xxswapd vs5, v121958; PWR9LE-NEXT:    xsadddp f1, f1, v111959; PWR9LE-NEXT:    xsadddp f1, f1, f51960; PWR9LE-NEXT:    xxswapd vs5, v131961; PWR9LE-NEXT:    xsadddp f1, f1, v121962; PWR9LE-NEXT:    xsadddp f1, f1, f51963; PWR9LE-NEXT:    xxswapd vs5, vs41964; PWR9LE-NEXT:    xsadddp f1, f1, v131965; PWR9LE-NEXT:    xsadddp f1, f1, f51966; PWR9LE-NEXT:    xsadddp f1, f1, f41967; PWR9LE-NEXT:    xxswapd vs4, vs31968; PWR9LE-NEXT:    xsadddp f1, f1, f41969; PWR9LE-NEXT:    xsadddp f1, f1, f31970; PWR9LE-NEXT:    xxswapd vs3, vs21971; PWR9LE-NEXT:    xsadddp f1, f1, f31972; PWR9LE-NEXT:    xsadddp f1, f1, f21973; PWR9LE-NEXT:    xxswapd vs2, vs01974; PWR9LE-NEXT:    xsadddp f1, f1, f21975; PWR9LE-NEXT:    xsadddp f1, f1, f01976; PWR9LE-NEXT:    blr1977;1978; PWR9BE-LABEL: v32f64_b:1979; PWR9BE:       # %bb.0: # %entry1980; PWR9BE-NEXT:    xsadddp f1, f1, v21981; PWR9BE-NEXT:    xxswapd vs5, v21982; PWR9BE-NEXT:    lxv vs4, 240(r1)1983; PWR9BE-NEXT:    lxv vs3, 256(r1)1984; PWR9BE-NEXT:    lxv vs2, 272(r1)1985; PWR9BE-NEXT:    lxv vs0, 288(r1)1986; PWR9BE-NEXT:    xsadddp f1, f1, f51987; PWR9BE-NEXT:    xxswapd vs5, v31988; PWR9BE-NEXT:    xsadddp f1, f1, v31989; PWR9BE-NEXT:    xsadddp f1, f1, f51990; PWR9BE-NEXT:    xxswapd vs5, v41991; PWR9BE-NEXT:    xsadddp f1, f1, v41992; PWR9BE-NEXT:    xsadddp f1, f1, f51993; PWR9BE-NEXT:    xxswapd vs5, v51994; PWR9BE-NEXT:    xsadddp f1, f1, v51995; PWR9BE-NEXT:    xsadddp f1, f1, f51996; PWR9BE-NEXT:    xxswapd vs5, v61997; PWR9BE-NEXT:    xsadddp f1, f1, v61998; PWR9BE-NEXT:    xsadddp f1, f1, f51999; PWR9BE-NEXT:    xxswapd vs5, v72000; PWR9BE-NEXT:    xsadddp f1, f1, v72001; PWR9BE-NEXT:    xsadddp f1, f1, f52002; PWR9BE-NEXT:    xxswapd vs5, v82003; PWR9BE-NEXT:    xsadddp f1, f1, v82004; PWR9BE-NEXT:    xsadddp f1, f1, f52005; PWR9BE-NEXT:    xxswapd vs5, v92006; PWR9BE-NEXT:    xsadddp f1, f1, v92007; PWR9BE-NEXT:    xsadddp f1, f1, f52008; PWR9BE-NEXT:    xxswapd vs5, v102009; PWR9BE-NEXT:    xsadddp f1, f1, v102010; PWR9BE-NEXT:    xsadddp f1, f1, f52011; PWR9BE-NEXT:    xxswapd vs5, v112012; PWR9BE-NEXT:    xsadddp f1, f1, v112013; PWR9BE-NEXT:    xsadddp f1, f1, f52014; PWR9BE-NEXT:    xxswapd vs5, v122015; PWR9BE-NEXT:    xsadddp f1, f1, v122016; PWR9BE-NEXT:    xsadddp f1, f1, f52017; PWR9BE-NEXT:    xxswapd vs5, v132018; PWR9BE-NEXT:    xsadddp f1, f1, v132019; PWR9BE-NEXT:    xsadddp f1, f1, f52020; PWR9BE-NEXT:    xsadddp f1, f1, f42021; PWR9BE-NEXT:    xxswapd vs4, vs42022; PWR9BE-NEXT:    xsadddp f1, f1, f42023; PWR9BE-NEXT:    xsadddp f1, f1, f32024; PWR9BE-NEXT:    xxswapd vs3, vs32025; PWR9BE-NEXT:    xsadddp f1, f1, f32026; PWR9BE-NEXT:    xsadddp f1, f1, f22027; PWR9BE-NEXT:    xxswapd vs2, vs22028; PWR9BE-NEXT:    xsadddp f1, f1, f22029; PWR9BE-NEXT:    xsadddp f1, f1, f02030; PWR9BE-NEXT:    xxswapd vs0, vs02031; PWR9BE-NEXT:    xsadddp f1, f1, f02032; PWR9BE-NEXT:    blr2033;2034; PWR10LE-LABEL: v32f64_b:2035; PWR10LE:       # %bb.0: # %entry2036; PWR10LE-NEXT:    xxswapd vs5, v22037; PWR10LE-NEXT:    lxv vs4, 224(r1)2038; PWR10LE-NEXT:    lxv vs3, 240(r1)2039; PWR10LE-NEXT:    xsadddp f1, f1, f52040; PWR10LE-NEXT:    xxswapd vs5, v32041; PWR10LE-NEXT:    lxv vs2, 256(r1)2042; PWR10LE-NEXT:    lxv vs0, 272(r1)2043; PWR10LE-NEXT:    xsadddp f1, f1, v22044; PWR10LE-NEXT:    xsadddp f1, f1, f52045; PWR10LE-NEXT:    xxswapd vs5, v42046; PWR10LE-NEXT:    xsadddp f1, f1, v32047; PWR10LE-NEXT:    xsadddp f1, f1, f52048; PWR10LE-NEXT:    xxswapd vs5, v52049; PWR10LE-NEXT:    xsadddp f1, f1, v42050; PWR10LE-NEXT:    xsadddp f1, f1, f52051; PWR10LE-NEXT:    xxswapd vs5, v62052; PWR10LE-NEXT:    xsadddp f1, f1, v52053; PWR10LE-NEXT:    xsadddp f1, f1, f52054; PWR10LE-NEXT:    xxswapd vs5, v72055; PWR10LE-NEXT:    xsadddp f1, f1, v62056; PWR10LE-NEXT:    xsadddp f1, f1, f52057; PWR10LE-NEXT:    xxswapd vs5, v82058; PWR10LE-NEXT:    xsadddp f1, f1, v72059; PWR10LE-NEXT:    xsadddp f1, f1, f52060; PWR10LE-NEXT:    xxswapd vs5, v92061; PWR10LE-NEXT:    xsadddp f1, f1, v82062; PWR10LE-NEXT:    xsadddp f1, f1, f52063; PWR10LE-NEXT:    xxswapd vs5, v102064; PWR10LE-NEXT:    xsadddp f1, f1, v92065; PWR10LE-NEXT:    xsadddp f1, f1, f52066; PWR10LE-NEXT:    xxswapd vs5, v112067; PWR10LE-NEXT:    xsadddp f1, f1, v102068; PWR10LE-NEXT:    xsadddp f1, f1, f52069; PWR10LE-NEXT:    xxswapd vs5, v122070; PWR10LE-NEXT:    xsadddp f1, f1, v112071; PWR10LE-NEXT:    xsadddp f1, f1, f52072; PWR10LE-NEXT:    xxswapd vs5, v132073; PWR10LE-NEXT:    xsadddp f1, f1, v122074; PWR10LE-NEXT:    xsadddp f1, f1, f52075; PWR10LE-NEXT:    xxswapd vs5, vs42076; PWR10LE-NEXT:    xsadddp f1, f1, v132077; PWR10LE-NEXT:    xsadddp f1, f1, f52078; PWR10LE-NEXT:    xsadddp f1, f1, f42079; PWR10LE-NEXT:    xxswapd vs4, vs32080; PWR10LE-NEXT:    xsadddp f1, f1, f42081; PWR10LE-NEXT:    xsadddp f1, f1, f32082; PWR10LE-NEXT:    xxswapd vs3, vs22083; PWR10LE-NEXT:    xsadddp f1, f1, f32084; PWR10LE-NEXT:    xsadddp f1, f1, f22085; PWR10LE-NEXT:    xxswapd vs2, vs02086; PWR10LE-NEXT:    xsadddp f1, f1, f22087; PWR10LE-NEXT:    xsadddp f1, f1, f02088; PWR10LE-NEXT:    blr2089;2090; PWR10BE-LABEL: v32f64_b:2091; PWR10BE:       # %bb.0: # %entry2092; PWR10BE-NEXT:    xsadddp f1, f1, v22093; PWR10BE-NEXT:    xxswapd vs5, v22094; PWR10BE-NEXT:    lxv vs4, 240(r1)2095; PWR10BE-NEXT:    lxv vs3, 256(r1)2096; PWR10BE-NEXT:    xsadddp f1, f1, f52097; PWR10BE-NEXT:    xxswapd vs5, v32098; PWR10BE-NEXT:    lxv vs2, 272(r1)2099; PWR10BE-NEXT:    lxv vs0, 288(r1)2100; PWR10BE-NEXT:    xsadddp f1, f1, v32101; PWR10BE-NEXT:    xsadddp f1, f1, f52102; PWR10BE-NEXT:    xxswapd vs5, v42103; PWR10BE-NEXT:    xsadddp f1, f1, v42104; PWR10BE-NEXT:    xsadddp f1, f1, f52105; PWR10BE-NEXT:    xxswapd vs5, v52106; PWR10BE-NEXT:    xsadddp f1, f1, v52107; PWR10BE-NEXT:    xsadddp f1, f1, f52108; PWR10BE-NEXT:    xxswapd vs5, v62109; PWR10BE-NEXT:    xsadddp f1, f1, v62110; PWR10BE-NEXT:    xsadddp f1, f1, f52111; PWR10BE-NEXT:    xxswapd vs5, v72112; PWR10BE-NEXT:    xsadddp f1, f1, v72113; PWR10BE-NEXT:    xsadddp f1, f1, f52114; PWR10BE-NEXT:    xxswapd vs5, v82115; PWR10BE-NEXT:    xsadddp f1, f1, v82116; PWR10BE-NEXT:    xsadddp f1, f1, f52117; PWR10BE-NEXT:    xxswapd vs5, v92118; PWR10BE-NEXT:    xsadddp f1, f1, v92119; PWR10BE-NEXT:    xsadddp f1, f1, f52120; PWR10BE-NEXT:    xxswapd vs5, v102121; PWR10BE-NEXT:    xsadddp f1, f1, v102122; PWR10BE-NEXT:    xsadddp f1, f1, f52123; PWR10BE-NEXT:    xxswapd vs5, v112124; PWR10BE-NEXT:    xsadddp f1, f1, v112125; PWR10BE-NEXT:    xsadddp f1, f1, f52126; PWR10BE-NEXT:    xxswapd vs5, v122127; PWR10BE-NEXT:    xsadddp f1, f1, v122128; PWR10BE-NEXT:    xsadddp f1, f1, f52129; PWR10BE-NEXT:    xxswapd vs5, v132130; PWR10BE-NEXT:    xsadddp f1, f1, v132131; PWR10BE-NEXT:    xsadddp f1, f1, f52132; PWR10BE-NEXT:    xsadddp f1, f1, f42133; PWR10BE-NEXT:    xxswapd vs4, vs42134; PWR10BE-NEXT:    xsadddp f1, f1, f42135; PWR10BE-NEXT:    xsadddp f1, f1, f32136; PWR10BE-NEXT:    xxswapd vs3, vs32137; PWR10BE-NEXT:    xsadddp f1, f1, f32138; PWR10BE-NEXT:    xsadddp f1, f1, f22139; PWR10BE-NEXT:    xxswapd vs2, vs22140; PWR10BE-NEXT:    xsadddp f1, f1, f22141; PWR10BE-NEXT:    xsadddp f1, f1, f02142; PWR10BE-NEXT:    xxswapd vs0, vs02143; PWR10BE-NEXT:    xsadddp f1, f1, f02144; PWR10BE-NEXT:    blr2145entry:2146  %0 = call double @llvm.vector.reduce.fadd.v32f64(double %b, <32 x double> %a)2147  ret double %02148}2149 2150define dso_local double @v32f64_fast(<32 x double> %a) local_unnamed_addr #0 {2151; PWR9LE-LABEL: v32f64_fast:2152; PWR9LE:       # %bb.0: # %entry2153; PWR9LE-NEXT:    lxv vs0, 256(r1)2154; PWR9LE-NEXT:    lxv vs1, 224(r1)2155; PWR9LE-NEXT:    lxv vs2, 272(r1)2156; PWR9LE-NEXT:    lxv vs3, 240(r1)2157; PWR9LE-NEXT:    xvadddp vs4, v3, v112158; PWR9LE-NEXT:    xvadddp vs5, v5, v132159; PWR9LE-NEXT:    xvadddp vs6, v2, v102160; PWR9LE-NEXT:    xvadddp vs7, v4, v122161; PWR9LE-NEXT:    xvadddp vs3, v7, vs32162; PWR9LE-NEXT:    xvadddp vs2, v9, vs22163; PWR9LE-NEXT:    xvadddp vs1, v6, vs12164; PWR9LE-NEXT:    xvadddp vs0, v8, vs02165; PWR9LE-NEXT:    xvadddp vs0, vs7, vs02166; PWR9LE-NEXT:    xvadddp vs1, vs6, vs12167; PWR9LE-NEXT:    xvadddp vs2, vs5, vs22168; PWR9LE-NEXT:    xvadddp vs3, vs4, vs32169; PWR9LE-NEXT:    xvadddp vs2, vs3, vs22170; PWR9LE-NEXT:    xvadddp vs0, vs1, vs02171; PWR9LE-NEXT:    xvadddp vs0, vs0, vs22172; PWR9LE-NEXT:    xxswapd vs1, vs02173; PWR9LE-NEXT:    xvadddp vs0, vs0, vs12174; PWR9LE-NEXT:    xxswapd vs1, vs02175; PWR9LE-NEXT:    blr2176;2177; PWR9BE-LABEL: v32f64_fast:2178; PWR9BE:       # %bb.0: # %entry2179; PWR9BE-NEXT:    lxv vs0, 272(r1)2180; PWR9BE-NEXT:    lxv vs1, 240(r1)2181; PWR9BE-NEXT:    lxv vs2, 288(r1)2182; PWR9BE-NEXT:    lxv vs3, 256(r1)2183; PWR9BE-NEXT:    xvadddp vs4, v3, v112184; PWR9BE-NEXT:    xvadddp vs5, v5, v132185; PWR9BE-NEXT:    xvadddp vs6, v2, v102186; PWR9BE-NEXT:    xvadddp vs7, v4, v122187; PWR9BE-NEXT:    xvadddp vs3, v7, vs32188; PWR9BE-NEXT:    xvadddp vs2, v9, vs22189; PWR9BE-NEXT:    xvadddp vs1, v6, vs12190; PWR9BE-NEXT:    xvadddp vs0, v8, vs02191; PWR9BE-NEXT:    xvadddp vs0, vs7, vs02192; PWR9BE-NEXT:    xvadddp vs1, vs6, vs12193; PWR9BE-NEXT:    xvadddp vs2, vs5, vs22194; PWR9BE-NEXT:    xvadddp vs3, vs4, vs32195; PWR9BE-NEXT:    xvadddp vs2, vs3, vs22196; PWR9BE-NEXT:    xvadddp vs0, vs1, vs02197; PWR9BE-NEXT:    xvadddp vs0, vs0, vs22198; PWR9BE-NEXT:    xxswapd vs1, vs02199; PWR9BE-NEXT:    xvadddp vs1, vs0, vs12200; PWR9BE-NEXT:    blr2201;2202; PWR10LE-LABEL: v32f64_fast:2203; PWR10LE:       # %bb.0: # %entry2204; PWR10LE-NEXT:    lxv vs0, 256(r1)2205; PWR10LE-NEXT:    lxv vs1, 224(r1)2206; PWR10LE-NEXT:    xvadddp vs4, v3, v112207; PWR10LE-NEXT:    xvadddp vs5, v5, v132208; PWR10LE-NEXT:    xvadddp vs6, v2, v102209; PWR10LE-NEXT:    xvadddp vs7, v4, v122210; PWR10LE-NEXT:    xvadddp vs1, v6, vs12211; PWR10LE-NEXT:    lxv vs2, 272(r1)2212; PWR10LE-NEXT:    lxv vs3, 240(r1)2213; PWR10LE-NEXT:    xvadddp vs3, v7, vs32214; PWR10LE-NEXT:    xvadddp vs2, v9, vs22215; PWR10LE-NEXT:    xvadddp vs0, v8, vs02216; PWR10LE-NEXT:    xvadddp vs0, vs7, vs02217; PWR10LE-NEXT:    xvadddp vs1, vs6, vs12218; PWR10LE-NEXT:    xvadddp vs2, vs5, vs22219; PWR10LE-NEXT:    xvadddp vs3, vs4, vs32220; PWR10LE-NEXT:    xvadddp vs2, vs3, vs22221; PWR10LE-NEXT:    xvadddp vs0, vs1, vs02222; PWR10LE-NEXT:    xvadddp vs0, vs0, vs22223; PWR10LE-NEXT:    xxswapd vs1, vs02224; PWR10LE-NEXT:    xvadddp vs0, vs0, vs12225; PWR10LE-NEXT:    xxswapd vs1, vs02226; PWR10LE-NEXT:    blr2227;2228; PWR10BE-LABEL: v32f64_fast:2229; PWR10BE:       # %bb.0: # %entry2230; PWR10BE-NEXT:    lxv vs0, 272(r1)2231; PWR10BE-NEXT:    lxv vs1, 240(r1)2232; PWR10BE-NEXT:    xvadddp vs4, v3, v112233; PWR10BE-NEXT:    xvadddp vs5, v5, v132234; PWR10BE-NEXT:    xvadddp vs6, v2, v102235; PWR10BE-NEXT:    xvadddp vs7, v4, v122236; PWR10BE-NEXT:    xvadddp vs1, v6, vs12237; PWR10BE-NEXT:    lxv vs2, 288(r1)2238; PWR10BE-NEXT:    lxv vs3, 256(r1)2239; PWR10BE-NEXT:    xvadddp vs3, v7, vs32240; PWR10BE-NEXT:    xvadddp vs2, v9, vs22241; PWR10BE-NEXT:    xvadddp vs0, v8, vs02242; PWR10BE-NEXT:    xvadddp vs0, vs7, vs02243; PWR10BE-NEXT:    xvadddp vs1, vs6, vs12244; PWR10BE-NEXT:    xvadddp vs2, vs5, vs22245; PWR10BE-NEXT:    xvadddp vs3, vs4, vs32246; PWR10BE-NEXT:    xvadddp vs2, vs3, vs22247; PWR10BE-NEXT:    xvadddp vs0, vs1, vs02248; PWR10BE-NEXT:    xvadddp vs0, vs0, vs22249; PWR10BE-NEXT:    xxswapd vs1, vs02250; PWR10BE-NEXT:    xvadddp vs1, vs0, vs12251; PWR10BE-NEXT:    blr2252entry:2253  %0 = call fast double @llvm.vector.reduce.fadd.v32f64(double -0.000000e+00, <32 x double> %a)2254  ret double %02255}2256 2257define dso_local double @v64f64(<64 x double> %a) local_unnamed_addr #0 {2258; PWR9LE-LABEL: v64f64:2259; PWR9LE:       # %bb.0: # %entry2260; PWR9LE-NEXT:    xxswapd v18, v22261; PWR9LE-NEXT:    lxv v17, 224(r1)2262; PWR9LE-NEXT:    lxv v16, 240(r1)2263; PWR9LE-NEXT:    lxv v15, 256(r1)2264; PWR9LE-NEXT:    lxv v14, 272(r1)2265; PWR9LE-NEXT:    xsadddp v2, v18, v22266; PWR9LE-NEXT:    xxswapd v18, v32267; PWR9LE-NEXT:    lxv v1, 288(r1)2268; PWR9LE-NEXT:    lxv v0, 304(r1)2269; PWR9LE-NEXT:    lxv vs13, 320(r1)2270; PWR9LE-NEXT:    lxv vs12, 336(r1)2271; PWR9LE-NEXT:    lxv vs11, 352(r1)2272; PWR9LE-NEXT:    lxv vs10, 368(r1)2273; PWR9LE-NEXT:    lxv vs9, 384(r1)2274; PWR9LE-NEXT:    lxv vs8, 400(r1)2275; PWR9LE-NEXT:    lxv vs7, 416(r1)2276; PWR9LE-NEXT:    lxv vs6, 432(r1)2277; PWR9LE-NEXT:    lxv vs5, 448(r1)2278; PWR9LE-NEXT:    lxv vs4, 464(r1)2279; PWR9LE-NEXT:    xsadddp v2, v2, v182280; PWR9LE-NEXT:    lxv vs3, 480(r1)2281; PWR9LE-NEXT:    lxv vs2, 496(r1)2282; PWR9LE-NEXT:    lxv vs1, 512(r1)2283; PWR9LE-NEXT:    lxv vs0, 528(r1)2284; PWR9LE-NEXT:    xsadddp v2, v2, v32285; PWR9LE-NEXT:    xxswapd v3, v42286; PWR9LE-NEXT:    xsadddp v2, v2, v32287; PWR9LE-NEXT:    xxswapd v3, v52288; PWR9LE-NEXT:    xsadddp v2, v2, v42289; PWR9LE-NEXT:    xsadddp v2, v2, v32290; PWR9LE-NEXT:    xxswapd v3, v62291; PWR9LE-NEXT:    xsadddp v2, v2, v52292; PWR9LE-NEXT:    xsadddp v2, v2, v32293; PWR9LE-NEXT:    xxswapd v3, v72294; PWR9LE-NEXT:    xsadddp v2, v2, v62295; PWR9LE-NEXT:    xsadddp v2, v2, v32296; PWR9LE-NEXT:    xxswapd v3, v82297; PWR9LE-NEXT:    xsadddp v2, v2, v72298; PWR9LE-NEXT:    xsadddp v2, v2, v32299; PWR9LE-NEXT:    xxswapd v3, v92300; PWR9LE-NEXT:    xsadddp v2, v2, v82301; PWR9LE-NEXT:    xsadddp v2, v2, v32302; PWR9LE-NEXT:    xxswapd v3, v102303; PWR9LE-NEXT:    xsadddp v2, v2, v92304; PWR9LE-NEXT:    xsadddp v2, v2, v32305; PWR9LE-NEXT:    xxswapd v3, v112306; PWR9LE-NEXT:    xsadddp v2, v2, v102307; PWR9LE-NEXT:    xsadddp v2, v2, v32308; PWR9LE-NEXT:    xxswapd v3, v122309; PWR9LE-NEXT:    xsadddp v2, v2, v112310; PWR9LE-NEXT:    xsadddp v2, v2, v32311; PWR9LE-NEXT:    xxswapd v3, v132312; PWR9LE-NEXT:    xsadddp v2, v2, v122313; PWR9LE-NEXT:    xsadddp v2, v2, v32314; PWR9LE-NEXT:    xxswapd v3, v172315; PWR9LE-NEXT:    xsadddp v2, v2, v132316; PWR9LE-NEXT:    xsadddp v2, v2, v32317; PWR9LE-NEXT:    xxswapd v3, v162318; PWR9LE-NEXT:    xsadddp v2, v2, v172319; PWR9LE-NEXT:    xsadddp v2, v2, v32320; PWR9LE-NEXT:    xxswapd v3, v152321; PWR9LE-NEXT:    xsadddp v2, v2, v162322; PWR9LE-NEXT:    xsadddp v2, v2, v32323; PWR9LE-NEXT:    xxswapd v3, v142324; PWR9LE-NEXT:    xsadddp v2, v2, v152325; PWR9LE-NEXT:    xsadddp v2, v2, v32326; PWR9LE-NEXT:    xxswapd v3, v12327; PWR9LE-NEXT:    xsadddp v2, v2, v142328; PWR9LE-NEXT:    xsadddp v2, v2, v32329; PWR9LE-NEXT:    xxswapd v3, v02330; PWR9LE-NEXT:    xsadddp v2, v2, v12331; PWR9LE-NEXT:    xsadddp v2, v2, v32332; PWR9LE-NEXT:    xxswapd v3, vs132333; PWR9LE-NEXT:    xsadddp v2, v2, v02334; PWR9LE-NEXT:    xsadddp v2, v2, v32335; PWR9LE-NEXT:    xsadddp f13, v2, f132336; PWR9LE-NEXT:    xxswapd v2, vs122337; PWR9LE-NEXT:    xsadddp f13, f13, v22338; PWR9LE-NEXT:    xsadddp f12, f13, f122339; PWR9LE-NEXT:    xxswapd vs13, vs112340; PWR9LE-NEXT:    xsadddp f12, f12, f132341; PWR9LE-NEXT:    xsadddp f11, f12, f112342; PWR9LE-NEXT:    xxswapd vs12, vs102343; PWR9LE-NEXT:    xsadddp f11, f11, f122344; PWR9LE-NEXT:    xsadddp f10, f11, f102345; PWR9LE-NEXT:    xxswapd vs11, vs92346; PWR9LE-NEXT:    xsadddp f10, f10, f112347; PWR9LE-NEXT:    xsadddp f9, f10, f92348; PWR9LE-NEXT:    xxswapd vs10, vs82349; PWR9LE-NEXT:    xsadddp f9, f9, f102350; PWR9LE-NEXT:    xsadddp f8, f9, f82351; PWR9LE-NEXT:    xxswapd vs9, vs72352; PWR9LE-NEXT:    xsadddp f8, f8, f92353; PWR9LE-NEXT:    xsadddp f7, f8, f72354; PWR9LE-NEXT:    xxswapd vs8, vs62355; PWR9LE-NEXT:    xsadddp f7, f7, f82356; PWR9LE-NEXT:    xsadddp f6, f7, f62357; PWR9LE-NEXT:    xxswapd vs7, vs52358; PWR9LE-NEXT:    xsadddp f6, f6, f72359; PWR9LE-NEXT:    xsadddp f5, f6, f52360; PWR9LE-NEXT:    xxswapd vs6, vs42361; PWR9LE-NEXT:    xsadddp f5, f5, f62362; PWR9LE-NEXT:    xsadddp f4, f5, f42363; PWR9LE-NEXT:    xxswapd vs5, vs32364; PWR9LE-NEXT:    xsadddp f4, f4, f52365; PWR9LE-NEXT:    xsadddp f3, f4, f32366; PWR9LE-NEXT:    xxswapd vs4, vs22367; PWR9LE-NEXT:    xsadddp f3, f3, f42368; PWR9LE-NEXT:    xsadddp f2, f3, f22369; PWR9LE-NEXT:    xxswapd vs3, vs12370; PWR9LE-NEXT:    xsadddp f2, f2, f32371; PWR9LE-NEXT:    xsadddp f1, f2, f12372; PWR9LE-NEXT:    xxswapd vs2, vs02373; PWR9LE-NEXT:    xsadddp f1, f1, f22374; PWR9LE-NEXT:    xsadddp f1, f1, f02375; PWR9LE-NEXT:    blr2376;2377; PWR9BE-LABEL: v64f64:2378; PWR9BE:       # %bb.0: # %entry2379; PWR9BE-NEXT:    xxswapd v18, v22380; PWR9BE-NEXT:    lxv v17, 240(r1)2381; PWR9BE-NEXT:    lxv v16, 256(r1)2382; PWR9BE-NEXT:    lxv v15, 272(r1)2383; PWR9BE-NEXT:    lxv v14, 288(r1)2384; PWR9BE-NEXT:    xsadddp v2, v2, v182385; PWR9BE-NEXT:    lxv v1, 304(r1)2386; PWR9BE-NEXT:    lxv v0, 320(r1)2387; PWR9BE-NEXT:    lxv vs13, 336(r1)2388; PWR9BE-NEXT:    lxv vs12, 352(r1)2389; PWR9BE-NEXT:    lxv vs11, 368(r1)2390; PWR9BE-NEXT:    lxv vs10, 384(r1)2391; PWR9BE-NEXT:    lxv vs9, 400(r1)2392; PWR9BE-NEXT:    lxv vs8, 416(r1)2393; PWR9BE-NEXT:    lxv vs7, 432(r1)2394; PWR9BE-NEXT:    lxv vs6, 448(r1)2395; PWR9BE-NEXT:    lxv vs5, 464(r1)2396; PWR9BE-NEXT:    lxv vs4, 480(r1)2397; PWR9BE-NEXT:    xsadddp v2, v2, v32398; PWR9BE-NEXT:    xxswapd v3, v32399; PWR9BE-NEXT:    lxv vs3, 496(r1)2400; PWR9BE-NEXT:    lxv vs2, 512(r1)2401; PWR9BE-NEXT:    lxv vs1, 528(r1)2402; PWR9BE-NEXT:    lxv vs0, 544(r1)2403; PWR9BE-NEXT:    xsadddp v2, v2, v32404; PWR9BE-NEXT:    xxswapd v3, v42405; PWR9BE-NEXT:    xsadddp v2, v2, v42406; PWR9BE-NEXT:    xsadddp v2, v2, v32407; PWR9BE-NEXT:    xxswapd v3, v52408; PWR9BE-NEXT:    xsadddp v2, v2, v52409; PWR9BE-NEXT:    xsadddp v2, v2, v32410; PWR9BE-NEXT:    xxswapd v3, v62411; PWR9BE-NEXT:    xsadddp v2, v2, v62412; PWR9BE-NEXT:    xsadddp v2, v2, v32413; PWR9BE-NEXT:    xxswapd v3, v72414; PWR9BE-NEXT:    xsadddp v2, v2, v72415; PWR9BE-NEXT:    xsadddp v2, v2, v32416; PWR9BE-NEXT:    xxswapd v3, v82417; PWR9BE-NEXT:    xsadddp v2, v2, v82418; PWR9BE-NEXT:    xsadddp v2, v2, v32419; PWR9BE-NEXT:    xxswapd v3, v92420; PWR9BE-NEXT:    xsadddp v2, v2, v92421; PWR9BE-NEXT:    xsadddp v2, v2, v32422; PWR9BE-NEXT:    xxswapd v3, v102423; PWR9BE-NEXT:    xsadddp v2, v2, v102424; PWR9BE-NEXT:    xsadddp v2, v2, v32425; PWR9BE-NEXT:    xxswapd v3, v112426; PWR9BE-NEXT:    xsadddp v2, v2, v112427; PWR9BE-NEXT:    xsadddp v2, v2, v32428; PWR9BE-NEXT:    xxswapd v3, v122429; PWR9BE-NEXT:    xsadddp v2, v2, v122430; PWR9BE-NEXT:    xsadddp v2, v2, v32431; PWR9BE-NEXT:    xxswapd v3, v132432; PWR9BE-NEXT:    xsadddp v2, v2, v132433; PWR9BE-NEXT:    xsadddp v2, v2, v32434; PWR9BE-NEXT:    xxswapd v3, v172435; PWR9BE-NEXT:    xsadddp v2, v2, v172436; PWR9BE-NEXT:    xsadddp v2, v2, v32437; PWR9BE-NEXT:    xxswapd v3, v162438; PWR9BE-NEXT:    xsadddp v2, v2, v162439; PWR9BE-NEXT:    xsadddp v2, v2, v32440; PWR9BE-NEXT:    xxswapd v3, v152441; PWR9BE-NEXT:    xsadddp v2, v2, v152442; PWR9BE-NEXT:    xsadddp v2, v2, v32443; PWR9BE-NEXT:    xxswapd v3, v142444; PWR9BE-NEXT:    xsadddp v2, v2, v142445; PWR9BE-NEXT:    xsadddp v2, v2, v32446; PWR9BE-NEXT:    xxswapd v3, v12447; PWR9BE-NEXT:    xsadddp v2, v2, v12448; PWR9BE-NEXT:    xsadddp v2, v2, v32449; PWR9BE-NEXT:    xxswapd v3, v02450; PWR9BE-NEXT:    xsadddp v2, v2, v02451; PWR9BE-NEXT:    xsadddp v2, v2, v32452; PWR9BE-NEXT:    xsadddp v2, v2, f132453; PWR9BE-NEXT:    xxswapd vs13, vs132454; PWR9BE-NEXT:    xsadddp f13, v2, f132455; PWR9BE-NEXT:    xsadddp f13, f13, f122456; PWR9BE-NEXT:    xxswapd vs12, vs122457; PWR9BE-NEXT:    xsadddp f12, f13, f122458; PWR9BE-NEXT:    xsadddp f12, f12, f112459; PWR9BE-NEXT:    xxswapd vs11, vs112460; PWR9BE-NEXT:    xsadddp f11, f12, f112461; PWR9BE-NEXT:    xsadddp f11, f11, f102462; PWR9BE-NEXT:    xxswapd vs10, vs102463; PWR9BE-NEXT:    xsadddp f10, f11, f102464; PWR9BE-NEXT:    xsadddp f10, f10, f92465; PWR9BE-NEXT:    xxswapd vs9, vs92466; PWR9BE-NEXT:    xsadddp f9, f10, f92467; PWR9BE-NEXT:    xsadddp f9, f9, f82468; PWR9BE-NEXT:    xxswapd vs8, vs82469; PWR9BE-NEXT:    xsadddp f8, f9, f82470; PWR9BE-NEXT:    xsadddp f8, f8, f72471; PWR9BE-NEXT:    xxswapd vs7, vs72472; PWR9BE-NEXT:    xsadddp f7, f8, f72473; PWR9BE-NEXT:    xsadddp f7, f7, f62474; PWR9BE-NEXT:    xxswapd vs6, vs62475; PWR9BE-NEXT:    xsadddp f6, f7, f62476; PWR9BE-NEXT:    xsadddp f6, f6, f52477; PWR9BE-NEXT:    xxswapd vs5, vs52478; PWR9BE-NEXT:    xsadddp f5, f6, f52479; PWR9BE-NEXT:    xsadddp f5, f5, f42480; PWR9BE-NEXT:    xxswapd vs4, vs42481; PWR9BE-NEXT:    xsadddp f4, f5, f42482; PWR9BE-NEXT:    xsadddp f4, f4, f32483; PWR9BE-NEXT:    xxswapd vs3, vs32484; PWR9BE-NEXT:    xsadddp f3, f4, f32485; PWR9BE-NEXT:    xsadddp f3, f3, f22486; PWR9BE-NEXT:    xxswapd vs2, vs22487; PWR9BE-NEXT:    xsadddp f2, f3, f22488; PWR9BE-NEXT:    xsadddp f2, f2, f12489; PWR9BE-NEXT:    xxswapd vs1, vs12490; PWR9BE-NEXT:    xsadddp f1, f2, f12491; PWR9BE-NEXT:    xsadddp f1, f1, f02492; PWR9BE-NEXT:    xxswapd vs0, vs02493; PWR9BE-NEXT:    xsadddp f1, f1, f02494; PWR9BE-NEXT:    blr2495;2496; PWR10LE-LABEL: v64f64:2497; PWR10LE:       # %bb.0: # %entry2498; PWR10LE-NEXT:    xxswapd v18, v22499; PWR10LE-NEXT:    lxv v17, 224(r1)2500; PWR10LE-NEXT:    lxv v16, 240(r1)2501; PWR10LE-NEXT:    xsadddp v2, v18, v22502; PWR10LE-NEXT:    xxswapd v18, v32503; PWR10LE-NEXT:    lxv v15, 256(r1)2504; PWR10LE-NEXT:    lxv v14, 272(r1)2505; PWR10LE-NEXT:    lxv v1, 288(r1)2506; PWR10LE-NEXT:    lxv v0, 304(r1)2507; PWR10LE-NEXT:    lxv vs13, 320(r1)2508; PWR10LE-NEXT:    lxv vs12, 336(r1)2509; PWR10LE-NEXT:    lxv vs11, 352(r1)2510; PWR10LE-NEXT:    lxv vs10, 368(r1)2511; PWR10LE-NEXT:    xsadddp v2, v2, v182512; PWR10LE-NEXT:    lxv vs9, 384(r1)2513; PWR10LE-NEXT:    lxv vs8, 400(r1)2514; PWR10LE-NEXT:    lxv vs7, 416(r1)2515; PWR10LE-NEXT:    lxv vs6, 432(r1)2516; PWR10LE-NEXT:    lxv vs5, 448(r1)2517; PWR10LE-NEXT:    lxv vs4, 464(r1)2518; PWR10LE-NEXT:    lxv vs3, 480(r1)2519; PWR10LE-NEXT:    lxv vs2, 496(r1)2520; PWR10LE-NEXT:    lxv vs1, 512(r1)2521; PWR10LE-NEXT:    lxv vs0, 528(r1)2522; PWR10LE-NEXT:    xsadddp v2, v2, v32523; PWR10LE-NEXT:    xxswapd v3, v42524; PWR10LE-NEXT:    xsadddp v2, v2, v32525; PWR10LE-NEXT:    xxswapd v3, v52526; PWR10LE-NEXT:    xsadddp v2, v2, v42527; PWR10LE-NEXT:    xsadddp v2, v2, v32528; PWR10LE-NEXT:    xxswapd v3, v62529; PWR10LE-NEXT:    xsadddp v2, v2, v52530; PWR10LE-NEXT:    xsadddp v2, v2, v32531; PWR10LE-NEXT:    xxswapd v3, v72532; PWR10LE-NEXT:    xsadddp v2, v2, v62533; PWR10LE-NEXT:    xsadddp v2, v2, v32534; PWR10LE-NEXT:    xxswapd v3, v82535; PWR10LE-NEXT:    xsadddp v2, v2, v72536; PWR10LE-NEXT:    xsadddp v2, v2, v32537; PWR10LE-NEXT:    xxswapd v3, v92538; PWR10LE-NEXT:    xsadddp v2, v2, v82539; PWR10LE-NEXT:    xsadddp v2, v2, v32540; PWR10LE-NEXT:    xxswapd v3, v102541; PWR10LE-NEXT:    xsadddp v2, v2, v92542; PWR10LE-NEXT:    xsadddp v2, v2, v32543; PWR10LE-NEXT:    xxswapd v3, v112544; PWR10LE-NEXT:    xsadddp v2, v2, v102545; PWR10LE-NEXT:    xsadddp v2, v2, v32546; PWR10LE-NEXT:    xxswapd v3, v122547; PWR10LE-NEXT:    xsadddp v2, v2, v112548; PWR10LE-NEXT:    xsadddp v2, v2, v32549; PWR10LE-NEXT:    xxswapd v3, v132550; PWR10LE-NEXT:    xsadddp v2, v2, v122551; PWR10LE-NEXT:    xsadddp v2, v2, v32552; PWR10LE-NEXT:    xxswapd v3, v172553; PWR10LE-NEXT:    xsadddp v2, v2, v132554; PWR10LE-NEXT:    xsadddp v2, v2, v32555; PWR10LE-NEXT:    xxswapd v3, v162556; PWR10LE-NEXT:    xsadddp v2, v2, v172557; PWR10LE-NEXT:    xsadddp v2, v2, v32558; PWR10LE-NEXT:    xxswapd v3, v152559; PWR10LE-NEXT:    xsadddp v2, v2, v162560; PWR10LE-NEXT:    xsadddp v2, v2, v32561; PWR10LE-NEXT:    xxswapd v3, v142562; PWR10LE-NEXT:    xsadddp v2, v2, v152563; PWR10LE-NEXT:    xsadddp v2, v2, v32564; PWR10LE-NEXT:    xxswapd v3, v12565; PWR10LE-NEXT:    xsadddp v2, v2, v142566; PWR10LE-NEXT:    xsadddp v2, v2, v32567; PWR10LE-NEXT:    xxswapd v3, v02568; PWR10LE-NEXT:    xsadddp v2, v2, v12569; PWR10LE-NEXT:    xsadddp v2, v2, v32570; PWR10LE-NEXT:    xxswapd v3, vs132571; PWR10LE-NEXT:    xsadddp v2, v2, v02572; PWR10LE-NEXT:    xsadddp v2, v2, v32573; PWR10LE-NEXT:    xsadddp f13, v2, f132574; PWR10LE-NEXT:    xxswapd v2, vs122575; PWR10LE-NEXT:    xsadddp f13, f13, v22576; PWR10LE-NEXT:    xsadddp f12, f13, f122577; PWR10LE-NEXT:    xxswapd vs13, vs112578; PWR10LE-NEXT:    xsadddp f12, f12, f132579; PWR10LE-NEXT:    xsadddp f11, f12, f112580; PWR10LE-NEXT:    xxswapd vs12, vs102581; PWR10LE-NEXT:    xsadddp f11, f11, f122582; PWR10LE-NEXT:    xsadddp f10, f11, f102583; PWR10LE-NEXT:    xxswapd vs11, vs92584; PWR10LE-NEXT:    xsadddp f10, f10, f112585; PWR10LE-NEXT:    xsadddp f9, f10, f92586; PWR10LE-NEXT:    xxswapd vs10, vs82587; PWR10LE-NEXT:    xsadddp f9, f9, f102588; PWR10LE-NEXT:    xsadddp f8, f9, f82589; PWR10LE-NEXT:    xxswapd vs9, vs72590; PWR10LE-NEXT:    xsadddp f8, f8, f92591; PWR10LE-NEXT:    xsadddp f7, f8, f72592; PWR10LE-NEXT:    xxswapd vs8, vs62593; PWR10LE-NEXT:    xsadddp f7, f7, f82594; PWR10LE-NEXT:    xsadddp f6, f7, f62595; PWR10LE-NEXT:    xxswapd vs7, vs52596; PWR10LE-NEXT:    xsadddp f6, f6, f72597; PWR10LE-NEXT:    xsadddp f5, f6, f52598; PWR10LE-NEXT:    xxswapd vs6, vs42599; PWR10LE-NEXT:    xsadddp f5, f5, f62600; PWR10LE-NEXT:    xsadddp f4, f5, f42601; PWR10LE-NEXT:    xxswapd vs5, vs32602; PWR10LE-NEXT:    xsadddp f4, f4, f52603; PWR10LE-NEXT:    xsadddp f3, f4, f32604; PWR10LE-NEXT:    xxswapd vs4, vs22605; PWR10LE-NEXT:    xsadddp f3, f3, f42606; PWR10LE-NEXT:    xsadddp f2, f3, f22607; PWR10LE-NEXT:    xxswapd vs3, vs12608; PWR10LE-NEXT:    xsadddp f2, f2, f32609; PWR10LE-NEXT:    xsadddp f1, f2, f12610; PWR10LE-NEXT:    xxswapd vs2, vs02611; PWR10LE-NEXT:    xsadddp f1, f1, f22612; PWR10LE-NEXT:    xsadddp f1, f1, f02613; PWR10LE-NEXT:    blr2614;2615; PWR10BE-LABEL: v64f64:2616; PWR10BE:       # %bb.0: # %entry2617; PWR10BE-NEXT:    xxswapd v18, v22618; PWR10BE-NEXT:    lxv v17, 240(r1)2619; PWR10BE-NEXT:    lxv v16, 256(r1)2620; PWR10BE-NEXT:    xsadddp v2, v2, v182621; PWR10BE-NEXT:    lxv v15, 272(r1)2622; PWR10BE-NEXT:    lxv v14, 288(r1)2623; PWR10BE-NEXT:    lxv v1, 304(r1)2624; PWR10BE-NEXT:    lxv v0, 320(r1)2625; PWR10BE-NEXT:    lxv vs13, 336(r1)2626; PWR10BE-NEXT:    lxv vs12, 352(r1)2627; PWR10BE-NEXT:    lxv vs11, 368(r1)2628; PWR10BE-NEXT:    lxv vs10, 384(r1)2629; PWR10BE-NEXT:    xsadddp v2, v2, v32630; PWR10BE-NEXT:    xxswapd v3, v32631; PWR10BE-NEXT:    lxv vs9, 400(r1)2632; PWR10BE-NEXT:    lxv vs8, 416(r1)2633; PWR10BE-NEXT:    lxv vs7, 432(r1)2634; PWR10BE-NEXT:    lxv vs6, 448(r1)2635; PWR10BE-NEXT:    lxv vs5, 464(r1)2636; PWR10BE-NEXT:    lxv vs4, 480(r1)2637; PWR10BE-NEXT:    lxv vs3, 496(r1)2638; PWR10BE-NEXT:    lxv vs2, 512(r1)2639; PWR10BE-NEXT:    lxv vs1, 528(r1)2640; PWR10BE-NEXT:    lxv vs0, 544(r1)2641; PWR10BE-NEXT:    xsadddp v2, v2, v32642; PWR10BE-NEXT:    xxswapd v3, v42643; PWR10BE-NEXT:    xsadddp v2, v2, v42644; PWR10BE-NEXT:    xsadddp v2, v2, v32645; PWR10BE-NEXT:    xxswapd v3, v52646; PWR10BE-NEXT:    xsadddp v2, v2, v52647; PWR10BE-NEXT:    xsadddp v2, v2, v32648; PWR10BE-NEXT:    xxswapd v3, v62649; PWR10BE-NEXT:    xsadddp v2, v2, v62650; PWR10BE-NEXT:    xsadddp v2, v2, v32651; PWR10BE-NEXT:    xxswapd v3, v72652; PWR10BE-NEXT:    xsadddp v2, v2, v72653; PWR10BE-NEXT:    xsadddp v2, v2, v32654; PWR10BE-NEXT:    xxswapd v3, v82655; PWR10BE-NEXT:    xsadddp v2, v2, v82656; PWR10BE-NEXT:    xsadddp v2, v2, v32657; PWR10BE-NEXT:    xxswapd v3, v92658; PWR10BE-NEXT:    xsadddp v2, v2, v92659; PWR10BE-NEXT:    xsadddp v2, v2, v32660; PWR10BE-NEXT:    xxswapd v3, v102661; PWR10BE-NEXT:    xsadddp v2, v2, v102662; PWR10BE-NEXT:    xsadddp v2, v2, v32663; PWR10BE-NEXT:    xxswapd v3, v112664; PWR10BE-NEXT:    xsadddp v2, v2, v112665; PWR10BE-NEXT:    xsadddp v2, v2, v32666; PWR10BE-NEXT:    xxswapd v3, v122667; PWR10BE-NEXT:    xsadddp v2, v2, v122668; PWR10BE-NEXT:    xsadddp v2, v2, v32669; PWR10BE-NEXT:    xxswapd v3, v132670; PWR10BE-NEXT:    xsadddp v2, v2, v132671; PWR10BE-NEXT:    xsadddp v2, v2, v32672; PWR10BE-NEXT:    xxswapd v3, v172673; PWR10BE-NEXT:    xsadddp v2, v2, v172674; PWR10BE-NEXT:    xsadddp v2, v2, v32675; PWR10BE-NEXT:    xxswapd v3, v162676; PWR10BE-NEXT:    xsadddp v2, v2, v162677; PWR10BE-NEXT:    xsadddp v2, v2, v32678; PWR10BE-NEXT:    xxswapd v3, v152679; PWR10BE-NEXT:    xsadddp v2, v2, v152680; PWR10BE-NEXT:    xsadddp v2, v2, v32681; PWR10BE-NEXT:    xxswapd v3, v142682; PWR10BE-NEXT:    xsadddp v2, v2, v142683; PWR10BE-NEXT:    xsadddp v2, v2, v32684; PWR10BE-NEXT:    xxswapd v3, v12685; PWR10BE-NEXT:    xsadddp v2, v2, v12686; PWR10BE-NEXT:    xsadddp v2, v2, v32687; PWR10BE-NEXT:    xxswapd v3, v02688; PWR10BE-NEXT:    xsadddp v2, v2, v02689; PWR10BE-NEXT:    xsadddp v2, v2, v32690; PWR10BE-NEXT:    xsadddp v2, v2, f132691; PWR10BE-NEXT:    xxswapd vs13, vs132692; PWR10BE-NEXT:    xsadddp f13, v2, f132693; PWR10BE-NEXT:    xsadddp f13, f13, f122694; PWR10BE-NEXT:    xxswapd vs12, vs122695; PWR10BE-NEXT:    xsadddp f12, f13, f122696; PWR10BE-NEXT:    xsadddp f12, f12, f112697; PWR10BE-NEXT:    xxswapd vs11, vs112698; PWR10BE-NEXT:    xsadddp f11, f12, f112699; PWR10BE-NEXT:    xsadddp f11, f11, f102700; PWR10BE-NEXT:    xxswapd vs10, vs102701; PWR10BE-NEXT:    xsadddp f10, f11, f102702; PWR10BE-NEXT:    xsadddp f10, f10, f92703; PWR10BE-NEXT:    xxswapd vs9, vs92704; PWR10BE-NEXT:    xsadddp f9, f10, f92705; PWR10BE-NEXT:    xsadddp f9, f9, f82706; PWR10BE-NEXT:    xxswapd vs8, vs82707; PWR10BE-NEXT:    xsadddp f8, f9, f82708; PWR10BE-NEXT:    xsadddp f8, f8, f72709; PWR10BE-NEXT:    xxswapd vs7, vs72710; PWR10BE-NEXT:    xsadddp f7, f8, f72711; PWR10BE-NEXT:    xsadddp f7, f7, f62712; PWR10BE-NEXT:    xxswapd vs6, vs62713; PWR10BE-NEXT:    xsadddp f6, f7, f62714; PWR10BE-NEXT:    xsadddp f6, f6, f52715; PWR10BE-NEXT:    xxswapd vs5, vs52716; PWR10BE-NEXT:    xsadddp f5, f6, f52717; PWR10BE-NEXT:    xsadddp f5, f5, f42718; PWR10BE-NEXT:    xxswapd vs4, vs42719; PWR10BE-NEXT:    xsadddp f4, f5, f42720; PWR10BE-NEXT:    xsadddp f4, f4, f32721; PWR10BE-NEXT:    xxswapd vs3, vs32722; PWR10BE-NEXT:    xsadddp f3, f4, f32723; PWR10BE-NEXT:    xsadddp f3, f3, f22724; PWR10BE-NEXT:    xxswapd vs2, vs22725; PWR10BE-NEXT:    xsadddp f2, f3, f22726; PWR10BE-NEXT:    xsadddp f2, f2, f12727; PWR10BE-NEXT:    xxswapd vs1, vs12728; PWR10BE-NEXT:    xsadddp f1, f2, f12729; PWR10BE-NEXT:    xsadddp f1, f1, f02730; PWR10BE-NEXT:    xxswapd vs0, vs02731; PWR10BE-NEXT:    xsadddp f1, f1, f02732; PWR10BE-NEXT:    blr2733entry:2734  %0 = call double @llvm.vector.reduce.fadd.v64f64(double -0.000000e+00, <64 x double> %a)2735  ret double %02736}2737 2738define dso_local double @v64f64_b(<64 x double> %a, double %b) local_unnamed_addr #0 {2739; PWR9LE-LABEL: v64f64_b:2740; PWR9LE:       # %bb.0: # %entry2741; PWR9LE-NEXT:    xxswapd v19, v22742; PWR9LE-NEXT:    lxv v18, 224(r1)2743; PWR9LE-NEXT:    lxv v17, 240(r1)2744; PWR9LE-NEXT:    lxv v16, 256(r1)2745; PWR9LE-NEXT:    lxv v15, 272(r1)2746; PWR9LE-NEXT:    xsadddp f1, f1, v192747; PWR9LE-NEXT:    lxv v14, 288(r1)2748; PWR9LE-NEXT:    lxv v1, 304(r1)2749; PWR9LE-NEXT:    lxv v0, 320(r1)2750; PWR9LE-NEXT:    lxv vs13, 336(r1)2751; PWR9LE-NEXT:    lxv vs12, 352(r1)2752; PWR9LE-NEXT:    lxv vs11, 368(r1)2753; PWR9LE-NEXT:    lxv vs10, 384(r1)2754; PWR9LE-NEXT:    lxv vs9, 400(r1)2755; PWR9LE-NEXT:    lxv vs8, 416(r1)2756; PWR9LE-NEXT:    lxv vs7, 432(r1)2757; PWR9LE-NEXT:    lxv vs6, 448(r1)2758; PWR9LE-NEXT:    lxv vs5, 464(r1)2759; PWR9LE-NEXT:    xsadddp f1, f1, v22760; PWR9LE-NEXT:    xxswapd v2, v32761; PWR9LE-NEXT:    lxv vs4, 480(r1)2762; PWR9LE-NEXT:    lxv vs3, 496(r1)2763; PWR9LE-NEXT:    lxv vs2, 512(r1)2764; PWR9LE-NEXT:    lxv vs0, 528(r1)2765; PWR9LE-NEXT:    xsadddp f1, f1, v22766; PWR9LE-NEXT:    xxswapd v2, v42767; PWR9LE-NEXT:    xsadddp f1, f1, v32768; PWR9LE-NEXT:    xsadddp f1, f1, v22769; PWR9LE-NEXT:    xxswapd v2, v52770; PWR9LE-NEXT:    xsadddp f1, f1, v42771; PWR9LE-NEXT:    xsadddp f1, f1, v22772; PWR9LE-NEXT:    xxswapd v2, v62773; PWR9LE-NEXT:    xsadddp f1, f1, v52774; PWR9LE-NEXT:    xsadddp f1, f1, v22775; PWR9LE-NEXT:    xxswapd v2, v72776; PWR9LE-NEXT:    xsadddp f1, f1, v62777; PWR9LE-NEXT:    xsadddp f1, f1, v22778; PWR9LE-NEXT:    xxswapd v2, v82779; PWR9LE-NEXT:    xsadddp f1, f1, v72780; PWR9LE-NEXT:    xsadddp f1, f1, v22781; PWR9LE-NEXT:    xxswapd v2, v92782; PWR9LE-NEXT:    xsadddp f1, f1, v82783; PWR9LE-NEXT:    xsadddp f1, f1, v22784; PWR9LE-NEXT:    xxswapd v2, v102785; PWR9LE-NEXT:    xsadddp f1, f1, v92786; PWR9LE-NEXT:    xsadddp f1, f1, v22787; PWR9LE-NEXT:    xxswapd v2, v112788; PWR9LE-NEXT:    xsadddp f1, f1, v102789; PWR9LE-NEXT:    xsadddp f1, f1, v22790; PWR9LE-NEXT:    xxswapd v2, v122791; PWR9LE-NEXT:    xsadddp f1, f1, v112792; PWR9LE-NEXT:    xsadddp f1, f1, v22793; PWR9LE-NEXT:    xxswapd v2, v132794; PWR9LE-NEXT:    xsadddp f1, f1, v122795; PWR9LE-NEXT:    xsadddp f1, f1, v22796; PWR9LE-NEXT:    xxswapd v2, v182797; PWR9LE-NEXT:    xsadddp f1, f1, v132798; PWR9LE-NEXT:    xsadddp f1, f1, v22799; PWR9LE-NEXT:    xxswapd v2, v172800; PWR9LE-NEXT:    xsadddp f1, f1, v182801; PWR9LE-NEXT:    xsadddp f1, f1, v22802; PWR9LE-NEXT:    xxswapd v2, v162803; PWR9LE-NEXT:    xsadddp f1, f1, v172804; PWR9LE-NEXT:    xsadddp f1, f1, v22805; PWR9LE-NEXT:    xxswapd v2, v152806; PWR9LE-NEXT:    xsadddp f1, f1, v162807; PWR9LE-NEXT:    xsadddp f1, f1, v22808; PWR9LE-NEXT:    xxswapd v2, v142809; PWR9LE-NEXT:    xsadddp f1, f1, v152810; PWR9LE-NEXT:    xsadddp f1, f1, v22811; PWR9LE-NEXT:    xxswapd v2, v12812; PWR9LE-NEXT:    xsadddp f1, f1, v142813; PWR9LE-NEXT:    xsadddp f1, f1, v22814; PWR9LE-NEXT:    xxswapd v2, v02815; PWR9LE-NEXT:    xsadddp f1, f1, v12816; PWR9LE-NEXT:    xsadddp f1, f1, v22817; PWR9LE-NEXT:    xxswapd v2, vs132818; PWR9LE-NEXT:    xsadddp f1, f1, v02819; PWR9LE-NEXT:    xsadddp f1, f1, v22820; PWR9LE-NEXT:    xsadddp f1, f1, f132821; PWR9LE-NEXT:    xxswapd vs13, vs122822; PWR9LE-NEXT:    xsadddp f1, f1, f132823; PWR9LE-NEXT:    xsadddp f1, f1, f122824; PWR9LE-NEXT:    xxswapd vs12, vs112825; PWR9LE-NEXT:    xsadddp f1, f1, f122826; PWR9LE-NEXT:    xsadddp f1, f1, f112827; PWR9LE-NEXT:    xxswapd vs11, vs102828; PWR9LE-NEXT:    xsadddp f1, f1, f112829; PWR9LE-NEXT:    xsadddp f1, f1, f102830; PWR9LE-NEXT:    xxswapd vs10, vs92831; PWR9LE-NEXT:    xsadddp f1, f1, f102832; PWR9LE-NEXT:    xsadddp f1, f1, f92833; PWR9LE-NEXT:    xxswapd vs9, vs82834; PWR9LE-NEXT:    xsadddp f1, f1, f92835; PWR9LE-NEXT:    xsadddp f1, f1, f82836; PWR9LE-NEXT:    xxswapd vs8, vs72837; PWR9LE-NEXT:    xsadddp f1, f1, f82838; PWR9LE-NEXT:    xsadddp f1, f1, f72839; PWR9LE-NEXT:    xxswapd vs7, vs62840; PWR9LE-NEXT:    xsadddp f1, f1, f72841; PWR9LE-NEXT:    xsadddp f1, f1, f62842; PWR9LE-NEXT:    xxswapd vs6, vs52843; PWR9LE-NEXT:    xsadddp f1, f1, f62844; PWR9LE-NEXT:    xsadddp f1, f1, f52845; PWR9LE-NEXT:    xxswapd vs5, vs42846; PWR9LE-NEXT:    xsadddp f1, f1, f52847; PWR9LE-NEXT:    xsadddp f1, f1, f42848; PWR9LE-NEXT:    xxswapd vs4, vs32849; PWR9LE-NEXT:    xsadddp f1, f1, f42850; PWR9LE-NEXT:    xsadddp f1, f1, f32851; PWR9LE-NEXT:    xxswapd vs3, vs22852; PWR9LE-NEXT:    xsadddp f1, f1, f32853; PWR9LE-NEXT:    xsadddp f1, f1, f22854; PWR9LE-NEXT:    xxswapd vs2, vs02855; PWR9LE-NEXT:    xsadddp f1, f1, f22856; PWR9LE-NEXT:    xsadddp f1, f1, f02857; PWR9LE-NEXT:    blr2858;2859; PWR9BE-LABEL: v64f64_b:2860; PWR9BE:       # %bb.0: # %entry2861; PWR9BE-NEXT:    xsadddp f1, f1, v22862; PWR9BE-NEXT:    xxswapd v2, v22863; PWR9BE-NEXT:    lxv v18, 240(r1)2864; PWR9BE-NEXT:    lxv v17, 256(r1)2865; PWR9BE-NEXT:    lxv v16, 272(r1)2866; PWR9BE-NEXT:    lxv v15, 288(r1)2867; PWR9BE-NEXT:    lxv v14, 304(r1)2868; PWR9BE-NEXT:    xsadddp f1, f1, v22869; PWR9BE-NEXT:    xxswapd v2, v32870; PWR9BE-NEXT:    lxv v1, 320(r1)2871; PWR9BE-NEXT:    lxv v0, 336(r1)2872; PWR9BE-NEXT:    lxv vs13, 352(r1)2873; PWR9BE-NEXT:    lxv vs12, 368(r1)2874; PWR9BE-NEXT:    lxv vs11, 384(r1)2875; PWR9BE-NEXT:    lxv vs10, 400(r1)2876; PWR9BE-NEXT:    lxv vs9, 416(r1)2877; PWR9BE-NEXT:    lxv vs8, 432(r1)2878; PWR9BE-NEXT:    lxv vs7, 448(r1)2879; PWR9BE-NEXT:    lxv vs6, 464(r1)2880; PWR9BE-NEXT:    lxv vs5, 480(r1)2881; PWR9BE-NEXT:    lxv vs4, 496(r1)2882; PWR9BE-NEXT:    lxv vs3, 512(r1)2883; PWR9BE-NEXT:    lxv vs2, 528(r1)2884; PWR9BE-NEXT:    lxv vs0, 544(r1)2885; PWR9BE-NEXT:    xsadddp f1, f1, v32886; PWR9BE-NEXT:    xsadddp f1, f1, v22887; PWR9BE-NEXT:    xxswapd v2, v42888; PWR9BE-NEXT:    xsadddp f1, f1, v42889; PWR9BE-NEXT:    xsadddp f1, f1, v22890; PWR9BE-NEXT:    xxswapd v2, v52891; PWR9BE-NEXT:    xsadddp f1, f1, v52892; PWR9BE-NEXT:    xsadddp f1, f1, v22893; PWR9BE-NEXT:    xxswapd v2, v62894; PWR9BE-NEXT:    xsadddp f1, f1, v62895; PWR9BE-NEXT:    xsadddp f1, f1, v22896; PWR9BE-NEXT:    xxswapd v2, v72897; PWR9BE-NEXT:    xsadddp f1, f1, v72898; PWR9BE-NEXT:    xsadddp f1, f1, v22899; PWR9BE-NEXT:    xxswapd v2, v82900; PWR9BE-NEXT:    xsadddp f1, f1, v82901; PWR9BE-NEXT:    xsadddp f1, f1, v22902; PWR9BE-NEXT:    xxswapd v2, v92903; PWR9BE-NEXT:    xsadddp f1, f1, v92904; PWR9BE-NEXT:    xsadddp f1, f1, v22905; PWR9BE-NEXT:    xxswapd v2, v102906; PWR9BE-NEXT:    xsadddp f1, f1, v102907; PWR9BE-NEXT:    xsadddp f1, f1, v22908; PWR9BE-NEXT:    xxswapd v2, v112909; PWR9BE-NEXT:    xsadddp f1, f1, v112910; PWR9BE-NEXT:    xsadddp f1, f1, v22911; PWR9BE-NEXT:    xxswapd v2, v122912; PWR9BE-NEXT:    xsadddp f1, f1, v122913; PWR9BE-NEXT:    xsadddp f1, f1, v22914; PWR9BE-NEXT:    xxswapd v2, v132915; PWR9BE-NEXT:    xsadddp f1, f1, v132916; PWR9BE-NEXT:    xsadddp f1, f1, v22917; PWR9BE-NEXT:    xxswapd v2, v182918; PWR9BE-NEXT:    xsadddp f1, f1, v182919; PWR9BE-NEXT:    xsadddp f1, f1, v22920; PWR9BE-NEXT:    xxswapd v2, v172921; PWR9BE-NEXT:    xsadddp f1, f1, v172922; PWR9BE-NEXT:    xsadddp f1, f1, v22923; PWR9BE-NEXT:    xxswapd v2, v162924; PWR9BE-NEXT:    xsadddp f1, f1, v162925; PWR9BE-NEXT:    xsadddp f1, f1, v22926; PWR9BE-NEXT:    xxswapd v2, v152927; PWR9BE-NEXT:    xsadddp f1, f1, v152928; PWR9BE-NEXT:    xsadddp f1, f1, v22929; PWR9BE-NEXT:    xxswapd v2, v142930; PWR9BE-NEXT:    xsadddp f1, f1, v142931; PWR9BE-NEXT:    xsadddp f1, f1, v22932; PWR9BE-NEXT:    xxswapd v2, v12933; PWR9BE-NEXT:    xsadddp f1, f1, v12934; PWR9BE-NEXT:    xsadddp f1, f1, v22935; PWR9BE-NEXT:    xxswapd v2, v02936; PWR9BE-NEXT:    xsadddp f1, f1, v02937; PWR9BE-NEXT:    xsadddp f1, f1, v22938; PWR9BE-NEXT:    xsadddp f1, f1, f132939; PWR9BE-NEXT:    xxswapd vs13, vs132940; PWR9BE-NEXT:    xsadddp f1, f1, f132941; PWR9BE-NEXT:    xsadddp f1, f1, f122942; PWR9BE-NEXT:    xxswapd vs12, vs122943; PWR9BE-NEXT:    xsadddp f1, f1, f122944; PWR9BE-NEXT:    xsadddp f1, f1, f112945; PWR9BE-NEXT:    xxswapd vs11, vs112946; PWR9BE-NEXT:    xsadddp f1, f1, f112947; PWR9BE-NEXT:    xsadddp f1, f1, f102948; PWR9BE-NEXT:    xxswapd vs10, vs102949; PWR9BE-NEXT:    xsadddp f1, f1, f102950; PWR9BE-NEXT:    xsadddp f1, f1, f92951; PWR9BE-NEXT:    xxswapd vs9, vs92952; PWR9BE-NEXT:    xsadddp f1, f1, f92953; PWR9BE-NEXT:    xsadddp f1, f1, f82954; PWR9BE-NEXT:    xxswapd vs8, vs82955; PWR9BE-NEXT:    xsadddp f1, f1, f82956; PWR9BE-NEXT:    xsadddp f1, f1, f72957; PWR9BE-NEXT:    xxswapd vs7, vs72958; PWR9BE-NEXT:    xsadddp f1, f1, f72959; PWR9BE-NEXT:    xsadddp f1, f1, f62960; PWR9BE-NEXT:    xxswapd vs6, vs62961; PWR9BE-NEXT:    xsadddp f1, f1, f62962; PWR9BE-NEXT:    xsadddp f1, f1, f52963; PWR9BE-NEXT:    xxswapd vs5, vs52964; PWR9BE-NEXT:    xsadddp f1, f1, f52965; PWR9BE-NEXT:    xsadddp f1, f1, f42966; PWR9BE-NEXT:    xxswapd vs4, vs42967; PWR9BE-NEXT:    xsadddp f1, f1, f42968; PWR9BE-NEXT:    xsadddp f1, f1, f32969; PWR9BE-NEXT:    xxswapd vs3, vs32970; PWR9BE-NEXT:    xsadddp f1, f1, f32971; PWR9BE-NEXT:    xsadddp f1, f1, f22972; PWR9BE-NEXT:    xxswapd vs2, vs22973; PWR9BE-NEXT:    xsadddp f1, f1, f22974; PWR9BE-NEXT:    xsadddp f1, f1, f02975; PWR9BE-NEXT:    xxswapd vs0, vs02976; PWR9BE-NEXT:    xsadddp f1, f1, f02977; PWR9BE-NEXT:    blr2978;2979; PWR10LE-LABEL: v64f64_b:2980; PWR10LE:       # %bb.0: # %entry2981; PWR10LE-NEXT:    xxswapd v19, v22982; PWR10LE-NEXT:    lxv v18, 224(r1)2983; PWR10LE-NEXT:    lxv v17, 240(r1)2984; PWR10LE-NEXT:    xsadddp f1, f1, v192985; PWR10LE-NEXT:    lxv v16, 256(r1)2986; PWR10LE-NEXT:    lxv v15, 272(r1)2987; PWR10LE-NEXT:    lxv v14, 288(r1)2988; PWR10LE-NEXT:    lxv v1, 304(r1)2989; PWR10LE-NEXT:    lxv v0, 320(r1)2990; PWR10LE-NEXT:    lxv vs13, 336(r1)2991; PWR10LE-NEXT:    lxv vs12, 352(r1)2992; PWR10LE-NEXT:    lxv vs11, 368(r1)2993; PWR10LE-NEXT:    xsadddp f1, f1, v22994; PWR10LE-NEXT:    xxswapd v2, v32995; PWR10LE-NEXT:    lxv vs10, 384(r1)2996; PWR10LE-NEXT:    lxv vs9, 400(r1)2997; PWR10LE-NEXT:    lxv vs8, 416(r1)2998; PWR10LE-NEXT:    lxv vs7, 432(r1)2999; PWR10LE-NEXT:    lxv vs6, 448(r1)3000; PWR10LE-NEXT:    lxv vs5, 464(r1)3001; PWR10LE-NEXT:    lxv vs4, 480(r1)3002; PWR10LE-NEXT:    lxv vs3, 496(r1)3003; PWR10LE-NEXT:    lxv vs2, 512(r1)3004; PWR10LE-NEXT:    lxv vs0, 528(r1)3005; PWR10LE-NEXT:    xsadddp f1, f1, v23006; PWR10LE-NEXT:    xxswapd v2, v43007; PWR10LE-NEXT:    xsadddp f1, f1, v33008; PWR10LE-NEXT:    xsadddp f1, f1, v23009; PWR10LE-NEXT:    xxswapd v2, v53010; PWR10LE-NEXT:    xsadddp f1, f1, v43011; PWR10LE-NEXT:    xsadddp f1, f1, v23012; PWR10LE-NEXT:    xxswapd v2, v63013; PWR10LE-NEXT:    xsadddp f1, f1, v53014; PWR10LE-NEXT:    xsadddp f1, f1, v23015; PWR10LE-NEXT:    xxswapd v2, v73016; PWR10LE-NEXT:    xsadddp f1, f1, v63017; PWR10LE-NEXT:    xsadddp f1, f1, v23018; PWR10LE-NEXT:    xxswapd v2, v83019; PWR10LE-NEXT:    xsadddp f1, f1, v73020; PWR10LE-NEXT:    xsadddp f1, f1, v23021; PWR10LE-NEXT:    xxswapd v2, v93022; PWR10LE-NEXT:    xsadddp f1, f1, v83023; PWR10LE-NEXT:    xsadddp f1, f1, v23024; PWR10LE-NEXT:    xxswapd v2, v103025; PWR10LE-NEXT:    xsadddp f1, f1, v93026; PWR10LE-NEXT:    xsadddp f1, f1, v23027; PWR10LE-NEXT:    xxswapd v2, v113028; PWR10LE-NEXT:    xsadddp f1, f1, v103029; PWR10LE-NEXT:    xsadddp f1, f1, v23030; PWR10LE-NEXT:    xxswapd v2, v123031; PWR10LE-NEXT:    xsadddp f1, f1, v113032; PWR10LE-NEXT:    xsadddp f1, f1, v23033; PWR10LE-NEXT:    xxswapd v2, v133034; PWR10LE-NEXT:    xsadddp f1, f1, v123035; PWR10LE-NEXT:    xsadddp f1, f1, v23036; PWR10LE-NEXT:    xxswapd v2, v183037; PWR10LE-NEXT:    xsadddp f1, f1, v133038; PWR10LE-NEXT:    xsadddp f1, f1, v23039; PWR10LE-NEXT:    xxswapd v2, v173040; PWR10LE-NEXT:    xsadddp f1, f1, v183041; PWR10LE-NEXT:    xsadddp f1, f1, v23042; PWR10LE-NEXT:    xxswapd v2, v163043; PWR10LE-NEXT:    xsadddp f1, f1, v173044; PWR10LE-NEXT:    xsadddp f1, f1, v23045; PWR10LE-NEXT:    xxswapd v2, v153046; PWR10LE-NEXT:    xsadddp f1, f1, v163047; PWR10LE-NEXT:    xsadddp f1, f1, v23048; PWR10LE-NEXT:    xxswapd v2, v143049; PWR10LE-NEXT:    xsadddp f1, f1, v153050; PWR10LE-NEXT:    xsadddp f1, f1, v23051; PWR10LE-NEXT:    xxswapd v2, v13052; PWR10LE-NEXT:    xsadddp f1, f1, v143053; PWR10LE-NEXT:    xsadddp f1, f1, v23054; PWR10LE-NEXT:    xxswapd v2, v03055; PWR10LE-NEXT:    xsadddp f1, f1, v13056; PWR10LE-NEXT:    xsadddp f1, f1, v23057; PWR10LE-NEXT:    xxswapd v2, vs133058; PWR10LE-NEXT:    xsadddp f1, f1, v03059; PWR10LE-NEXT:    xsadddp f1, f1, v23060; PWR10LE-NEXT:    xsadddp f1, f1, f133061; PWR10LE-NEXT:    xxswapd vs13, vs123062; PWR10LE-NEXT:    xsadddp f1, f1, f133063; PWR10LE-NEXT:    xsadddp f1, f1, f123064; PWR10LE-NEXT:    xxswapd vs12, vs113065; PWR10LE-NEXT:    xsadddp f1, f1, f123066; PWR10LE-NEXT:    xsadddp f1, f1, f113067; PWR10LE-NEXT:    xxswapd vs11, vs103068; PWR10LE-NEXT:    xsadddp f1, f1, f113069; PWR10LE-NEXT:    xsadddp f1, f1, f103070; PWR10LE-NEXT:    xxswapd vs10, vs93071; PWR10LE-NEXT:    xsadddp f1, f1, f103072; PWR10LE-NEXT:    xsadddp f1, f1, f93073; PWR10LE-NEXT:    xxswapd vs9, vs83074; PWR10LE-NEXT:    xsadddp f1, f1, f93075; PWR10LE-NEXT:    xsadddp f1, f1, f83076; PWR10LE-NEXT:    xxswapd vs8, vs73077; PWR10LE-NEXT:    xsadddp f1, f1, f83078; PWR10LE-NEXT:    xsadddp f1, f1, f73079; PWR10LE-NEXT:    xxswapd vs7, vs63080; PWR10LE-NEXT:    xsadddp f1, f1, f73081; PWR10LE-NEXT:    xsadddp f1, f1, f63082; PWR10LE-NEXT:    xxswapd vs6, vs53083; PWR10LE-NEXT:    xsadddp f1, f1, f63084; PWR10LE-NEXT:    xsadddp f1, f1, f53085; PWR10LE-NEXT:    xxswapd vs5, vs43086; PWR10LE-NEXT:    xsadddp f1, f1, f53087; PWR10LE-NEXT:    xsadddp f1, f1, f43088; PWR10LE-NEXT:    xxswapd vs4, vs33089; PWR10LE-NEXT:    xsadddp f1, f1, f43090; PWR10LE-NEXT:    xsadddp f1, f1, f33091; PWR10LE-NEXT:    xxswapd vs3, vs23092; PWR10LE-NEXT:    xsadddp f1, f1, f33093; PWR10LE-NEXT:    xsadddp f1, f1, f23094; PWR10LE-NEXT:    xxswapd vs2, vs03095; PWR10LE-NEXT:    xsadddp f1, f1, f23096; PWR10LE-NEXT:    xsadddp f1, f1, f03097; PWR10LE-NEXT:    blr3098;3099; PWR10BE-LABEL: v64f64_b:3100; PWR10BE:       # %bb.0: # %entry3101; PWR10BE-NEXT:    xsadddp f1, f1, v23102; PWR10BE-NEXT:    xxswapd v2, v23103; PWR10BE-NEXT:    lxv v18, 240(r1)3104; PWR10BE-NEXT:    lxv v17, 256(r1)3105; PWR10BE-NEXT:    xsadddp f1, f1, v23106; PWR10BE-NEXT:    xxswapd v2, v33107; PWR10BE-NEXT:    lxv v16, 272(r1)3108; PWR10BE-NEXT:    lxv v15, 288(r1)3109; PWR10BE-NEXT:    lxv v14, 304(r1)3110; PWR10BE-NEXT:    lxv v1, 320(r1)3111; PWR10BE-NEXT:    lxv v0, 336(r1)3112; PWR10BE-NEXT:    lxv vs13, 352(r1)3113; PWR10BE-NEXT:    lxv vs12, 368(r1)3114; PWR10BE-NEXT:    lxv vs11, 384(r1)3115; PWR10BE-NEXT:    lxv vs10, 400(r1)3116; PWR10BE-NEXT:    lxv vs9, 416(r1)3117; PWR10BE-NEXT:    xsadddp f1, f1, v33118; PWR10BE-NEXT:    lxv vs8, 432(r1)3119; PWR10BE-NEXT:    lxv vs7, 448(r1)3120; PWR10BE-NEXT:    lxv vs6, 464(r1)3121; PWR10BE-NEXT:    lxv vs5, 480(r1)3122; PWR10BE-NEXT:    lxv vs4, 496(r1)3123; PWR10BE-NEXT:    lxv vs3, 512(r1)3124; PWR10BE-NEXT:    lxv vs2, 528(r1)3125; PWR10BE-NEXT:    lxv vs0, 544(r1)3126; PWR10BE-NEXT:    xsadddp f1, f1, v23127; PWR10BE-NEXT:    xxswapd v2, v43128; PWR10BE-NEXT:    xsadddp f1, f1, v43129; PWR10BE-NEXT:    xsadddp f1, f1, v23130; PWR10BE-NEXT:    xxswapd v2, v53131; PWR10BE-NEXT:    xsadddp f1, f1, v53132; PWR10BE-NEXT:    xsadddp f1, f1, v23133; PWR10BE-NEXT:    xxswapd v2, v63134; PWR10BE-NEXT:    xsadddp f1, f1, v63135; PWR10BE-NEXT:    xsadddp f1, f1, v23136; PWR10BE-NEXT:    xxswapd v2, v73137; PWR10BE-NEXT:    xsadddp f1, f1, v73138; PWR10BE-NEXT:    xsadddp f1, f1, v23139; PWR10BE-NEXT:    xxswapd v2, v83140; PWR10BE-NEXT:    xsadddp f1, f1, v83141; PWR10BE-NEXT:    xsadddp f1, f1, v23142; PWR10BE-NEXT:    xxswapd v2, v93143; PWR10BE-NEXT:    xsadddp f1, f1, v93144; PWR10BE-NEXT:    xsadddp f1, f1, v23145; PWR10BE-NEXT:    xxswapd v2, v103146; PWR10BE-NEXT:    xsadddp f1, f1, v103147; PWR10BE-NEXT:    xsadddp f1, f1, v23148; PWR10BE-NEXT:    xxswapd v2, v113149; PWR10BE-NEXT:    xsadddp f1, f1, v113150; PWR10BE-NEXT:    xsadddp f1, f1, v23151; PWR10BE-NEXT:    xxswapd v2, v123152; PWR10BE-NEXT:    xsadddp f1, f1, v123153; PWR10BE-NEXT:    xsadddp f1, f1, v23154; PWR10BE-NEXT:    xxswapd v2, v133155; PWR10BE-NEXT:    xsadddp f1, f1, v133156; PWR10BE-NEXT:    xsadddp f1, f1, v23157; PWR10BE-NEXT:    xxswapd v2, v183158; PWR10BE-NEXT:    xsadddp f1, f1, v183159; PWR10BE-NEXT:    xsadddp f1, f1, v23160; PWR10BE-NEXT:    xxswapd v2, v173161; PWR10BE-NEXT:    xsadddp f1, f1, v173162; PWR10BE-NEXT:    xsadddp f1, f1, v23163; PWR10BE-NEXT:    xxswapd v2, v163164; PWR10BE-NEXT:    xsadddp f1, f1, v163165; PWR10BE-NEXT:    xsadddp f1, f1, v23166; PWR10BE-NEXT:    xxswapd v2, v153167; PWR10BE-NEXT:    xsadddp f1, f1, v153168; PWR10BE-NEXT:    xsadddp f1, f1, v23169; PWR10BE-NEXT:    xxswapd v2, v143170; PWR10BE-NEXT:    xsadddp f1, f1, v143171; PWR10BE-NEXT:    xsadddp f1, f1, v23172; PWR10BE-NEXT:    xxswapd v2, v13173; PWR10BE-NEXT:    xsadddp f1, f1, v13174; PWR10BE-NEXT:    xsadddp f1, f1, v23175; PWR10BE-NEXT:    xxswapd v2, v03176; PWR10BE-NEXT:    xsadddp f1, f1, v03177; PWR10BE-NEXT:    xsadddp f1, f1, v23178; PWR10BE-NEXT:    xsadddp f1, f1, f133179; PWR10BE-NEXT:    xxswapd vs13, vs133180; PWR10BE-NEXT:    xsadddp f1, f1, f133181; PWR10BE-NEXT:    xsadddp f1, f1, f123182; PWR10BE-NEXT:    xxswapd vs12, vs123183; PWR10BE-NEXT:    xsadddp f1, f1, f123184; PWR10BE-NEXT:    xsadddp f1, f1, f113185; PWR10BE-NEXT:    xxswapd vs11, vs113186; PWR10BE-NEXT:    xsadddp f1, f1, f113187; PWR10BE-NEXT:    xsadddp f1, f1, f103188; PWR10BE-NEXT:    xxswapd vs10, vs103189; PWR10BE-NEXT:    xsadddp f1, f1, f103190; PWR10BE-NEXT:    xsadddp f1, f1, f93191; PWR10BE-NEXT:    xxswapd vs9, vs93192; PWR10BE-NEXT:    xsadddp f1, f1, f93193; PWR10BE-NEXT:    xsadddp f1, f1, f83194; PWR10BE-NEXT:    xxswapd vs8, vs83195; PWR10BE-NEXT:    xsadddp f1, f1, f83196; PWR10BE-NEXT:    xsadddp f1, f1, f73197; PWR10BE-NEXT:    xxswapd vs7, vs73198; PWR10BE-NEXT:    xsadddp f1, f1, f73199; PWR10BE-NEXT:    xsadddp f1, f1, f63200; PWR10BE-NEXT:    xxswapd vs6, vs63201; PWR10BE-NEXT:    xsadddp f1, f1, f63202; PWR10BE-NEXT:    xsadddp f1, f1, f53203; PWR10BE-NEXT:    xxswapd vs5, vs53204; PWR10BE-NEXT:    xsadddp f1, f1, f53205; PWR10BE-NEXT:    xsadddp f1, f1, f43206; PWR10BE-NEXT:    xxswapd vs4, vs43207; PWR10BE-NEXT:    xsadddp f1, f1, f43208; PWR10BE-NEXT:    xsadddp f1, f1, f33209; PWR10BE-NEXT:    xxswapd vs3, vs33210; PWR10BE-NEXT:    xsadddp f1, f1, f33211; PWR10BE-NEXT:    xsadddp f1, f1, f23212; PWR10BE-NEXT:    xxswapd vs2, vs23213; PWR10BE-NEXT:    xsadddp f1, f1, f23214; PWR10BE-NEXT:    xsadddp f1, f1, f03215; PWR10BE-NEXT:    xxswapd vs0, vs03216; PWR10BE-NEXT:    xsadddp f1, f1, f03217; PWR10BE-NEXT:    blr3218entry:3219  %0 = call double @llvm.vector.reduce.fadd.v64f64(double %b, <64 x double> %a)3220  ret double %03221}3222 3223define dso_local double @v64f64_fast(<64 x double> %a) local_unnamed_addr #0 {3224; PWR9LE-LABEL: v64f64_fast:3225; PWR9LE:       # %bb.0: # %entry3226; PWR9LE-NEXT:    lxv vs0, 368(r1)3227; PWR9LE-NEXT:    lxv vs1, 496(r1)3228; PWR9LE-NEXT:    lxv vs2, 240(r1)3229; PWR9LE-NEXT:    lxv vs3, 304(r1)3230; PWR9LE-NEXT:    xvadddp vs3, v3, vs33231; PWR9LE-NEXT:    lxv vs4, 432(r1)3232; PWR9LE-NEXT:    lxv vs5, 400(r1)3233; PWR9LE-NEXT:    lxv vs6, 528(r1)3234; PWR9LE-NEXT:    lxv vs7, 272(r1)3235; PWR9LE-NEXT:    lxv vs8, 336(r1)3236; PWR9LE-NEXT:    lxv vs9, 464(r1)3237; PWR9LE-NEXT:    lxv vs10, 352(r1)3238; PWR9LE-NEXT:    lxv vs11, 480(r1)3239; PWR9LE-NEXT:    lxv vs12, 224(r1)3240; PWR9LE-NEXT:    lxv vs13, 288(r1)3241; PWR9LE-NEXT:    lxv v0, 416(r1)3242; PWR9LE-NEXT:    lxv v1, 384(r1)3243; PWR9LE-NEXT:    lxv v14, 512(r1)3244; PWR9LE-NEXT:    lxv v15, 256(r1)3245; PWR9LE-NEXT:    lxv v16, 320(r1)3246; PWR9LE-NEXT:    lxv v17, 448(r1)3247; PWR9LE-NEXT:    xvadddp v12, v12, v173248; PWR9LE-NEXT:    xvadddp v4, v4, v163249; PWR9LE-NEXT:    xvadddp v14, v15, v143250; PWR9LE-NEXT:    xvadddp v1, v8, v13251; PWR9LE-NEXT:    xvadddp v0, v10, v03252; PWR9LE-NEXT:    xvadddp vs13, v2, vs133253; PWR9LE-NEXT:    xvadddp vs11, vs12, vs113254; PWR9LE-NEXT:    xvadddp vs10, v6, vs103255; PWR9LE-NEXT:    xvadddp vs9, v13, vs93256; PWR9LE-NEXT:    xvadddp vs8, v5, vs83257; PWR9LE-NEXT:    xvadddp vs6, vs7, vs63258; PWR9LE-NEXT:    xvadddp vs5, v9, vs53259; PWR9LE-NEXT:    xvadddp vs4, v11, vs43260; PWR9LE-NEXT:    xvadddp vs1, vs2, vs13261; PWR9LE-NEXT:    xvadddp vs0, v7, vs03262; PWR9LE-NEXT:    xvadddp vs0, vs0, vs13263; PWR9LE-NEXT:    xvadddp vs1, vs3, vs43264; PWR9LE-NEXT:    xvadddp vs2, vs5, vs63265; PWR9LE-NEXT:    xvadddp vs3, vs8, vs93266; PWR9LE-NEXT:    xvadddp vs4, vs10, vs113267; PWR9LE-NEXT:    xvadddp vs5, vs13, v03268; PWR9LE-NEXT:    xvadddp vs6, v1, v143269; PWR9LE-NEXT:    xvadddp vs7, v4, v123270; PWR9LE-NEXT:    xvadddp vs6, vs7, vs63271; PWR9LE-NEXT:    xvadddp vs4, vs5, vs43272; PWR9LE-NEXT:    xvadddp vs2, vs3, vs23273; PWR9LE-NEXT:    xvadddp vs0, vs1, vs03274; PWR9LE-NEXT:    xvadddp vs0, vs0, vs23275; PWR9LE-NEXT:    xvadddp vs1, vs4, vs63276; PWR9LE-NEXT:    xvadddp vs0, vs1, vs03277; PWR9LE-NEXT:    xxswapd vs1, vs03278; PWR9LE-NEXT:    xvadddp vs0, vs0, vs13279; PWR9LE-NEXT:    xxswapd vs1, vs03280; PWR9LE-NEXT:    blr3281;3282; PWR9BE-LABEL: v64f64_fast:3283; PWR9BE:       # %bb.0: # %entry3284; PWR9BE-NEXT:    lxv vs0, 384(r1)3285; PWR9BE-NEXT:    lxv vs1, 512(r1)3286; PWR9BE-NEXT:    lxv vs2, 256(r1)3287; PWR9BE-NEXT:    lxv vs3, 320(r1)3288; PWR9BE-NEXT:    xvadddp vs3, v3, vs33289; PWR9BE-NEXT:    lxv vs4, 448(r1)3290; PWR9BE-NEXT:    lxv vs5, 416(r1)3291; PWR9BE-NEXT:    lxv vs6, 544(r1)3292; PWR9BE-NEXT:    lxv vs7, 288(r1)3293; PWR9BE-NEXT:    lxv vs8, 352(r1)3294; PWR9BE-NEXT:    lxv vs9, 480(r1)3295; PWR9BE-NEXT:    lxv vs10, 368(r1)3296; PWR9BE-NEXT:    lxv vs11, 496(r1)3297; PWR9BE-NEXT:    lxv vs12, 240(r1)3298; PWR9BE-NEXT:    lxv vs13, 304(r1)3299; PWR9BE-NEXT:    lxv v0, 432(r1)3300; PWR9BE-NEXT:    lxv v1, 400(r1)3301; PWR9BE-NEXT:    lxv v14, 528(r1)3302; PWR9BE-NEXT:    lxv v15, 272(r1)3303; PWR9BE-NEXT:    lxv v16, 336(r1)3304; PWR9BE-NEXT:    lxv v17, 464(r1)3305; PWR9BE-NEXT:    xvadddp v12, v12, v173306; PWR9BE-NEXT:    xvadddp v4, v4, v163307; PWR9BE-NEXT:    xvadddp v14, v15, v143308; PWR9BE-NEXT:    xvadddp v1, v8, v13309; PWR9BE-NEXT:    xvadddp v0, v10, v03310; PWR9BE-NEXT:    xvadddp vs13, v2, vs133311; PWR9BE-NEXT:    xvadddp vs11, vs12, vs113312; PWR9BE-NEXT:    xvadddp vs10, v6, vs103313; PWR9BE-NEXT:    xvadddp vs9, v13, vs93314; PWR9BE-NEXT:    xvadddp vs8, v5, vs83315; PWR9BE-NEXT:    xvadddp vs6, vs7, vs63316; PWR9BE-NEXT:    xvadddp vs5, v9, vs53317; PWR9BE-NEXT:    xvadddp vs4, v11, vs43318; PWR9BE-NEXT:    xvadddp vs1, vs2, vs13319; PWR9BE-NEXT:    xvadddp vs0, v7, vs03320; PWR9BE-NEXT:    xvadddp vs0, vs0, vs13321; PWR9BE-NEXT:    xvadddp vs1, vs3, vs43322; PWR9BE-NEXT:    xvadddp vs2, vs5, vs63323; PWR9BE-NEXT:    xvadddp vs3, vs8, vs93324; PWR9BE-NEXT:    xvadddp vs4, vs10, vs113325; PWR9BE-NEXT:    xvadddp vs5, vs13, v03326; PWR9BE-NEXT:    xvadddp vs6, v1, v143327; PWR9BE-NEXT:    xvadddp vs7, v4, v123328; PWR9BE-NEXT:    xvadddp vs6, vs7, vs63329; PWR9BE-NEXT:    xvadddp vs4, vs5, vs43330; PWR9BE-NEXT:    xvadddp vs2, vs3, vs23331; PWR9BE-NEXT:    xvadddp vs0, vs1, vs03332; PWR9BE-NEXT:    xvadddp vs0, vs0, vs23333; PWR9BE-NEXT:    xvadddp vs1, vs4, vs63334; PWR9BE-NEXT:    xvadddp vs0, vs1, vs03335; PWR9BE-NEXT:    xxswapd vs1, vs03336; PWR9BE-NEXT:    xvadddp vs1, vs0, vs13337; PWR9BE-NEXT:    blr3338;3339; PWR10LE-LABEL: v64f64_fast:3340; PWR10LE:       # %bb.0: # %entry3341; PWR10LE-NEXT:    lxv vs0, 368(r1)3342; PWR10LE-NEXT:    lxv vs1, 496(r1)3343; PWR10LE-NEXT:    xvadddp vs0, v7, vs03344; PWR10LE-NEXT:    lxv vs2, 240(r1)3345; PWR10LE-NEXT:    lxv vs3, 304(r1)3346; PWR10LE-NEXT:    lxv vs4, 432(r1)3347; PWR10LE-NEXT:    lxv vs5, 400(r1)3348; PWR10LE-NEXT:    lxv vs6, 528(r1)3349; PWR10LE-NEXT:    lxv vs7, 272(r1)3350; PWR10LE-NEXT:    lxv vs8, 336(r1)3351; PWR10LE-NEXT:    lxv vs9, 464(r1)3352; PWR10LE-NEXT:    lxv vs10, 352(r1)3353; PWR10LE-NEXT:    lxv vs11, 480(r1)3354; PWR10LE-NEXT:    lxv vs12, 224(r1)3355; PWR10LE-NEXT:    lxv vs13, 288(r1)3356; PWR10LE-NEXT:    xvadddp vs13, v2, vs133357; PWR10LE-NEXT:    xvadddp vs11, vs12, vs113358; PWR10LE-NEXT:    xvadddp vs10, v6, vs103359; PWR10LE-NEXT:    xvadddp vs9, v13, vs93360; PWR10LE-NEXT:    xvadddp vs8, v5, vs83361; PWR10LE-NEXT:    xvadddp vs6, vs7, vs63362; PWR10LE-NEXT:    xvadddp vs5, v9, vs53363; PWR10LE-NEXT:    xvadddp vs4, v11, vs43364; PWR10LE-NEXT:    xvadddp vs3, v3, vs33365; PWR10LE-NEXT:    xvadddp vs1, vs2, vs13366; PWR10LE-NEXT:    xvadddp vs0, vs0, vs13367; PWR10LE-NEXT:    lxv v0, 416(r1)3368; PWR10LE-NEXT:    lxv v1, 384(r1)3369; PWR10LE-NEXT:    lxv v14, 512(r1)3370; PWR10LE-NEXT:    lxv v15, 256(r1)3371; PWR10LE-NEXT:    lxv v16, 320(r1)3372; PWR10LE-NEXT:    lxv v17, 448(r1)3373; PWR10LE-NEXT:    xvadddp v12, v12, v173374; PWR10LE-NEXT:    xvadddp v4, v4, v163375; PWR10LE-NEXT:    xvadddp v14, v15, v143376; PWR10LE-NEXT:    xvadddp v1, v8, v13377; PWR10LE-NEXT:    xvadddp v0, v10, v03378; PWR10LE-NEXT:    xvadddp vs1, vs3, vs43379; PWR10LE-NEXT:    xvadddp vs2, vs5, vs63380; PWR10LE-NEXT:    xvadddp vs3, vs8, vs93381; PWR10LE-NEXT:    xvadddp vs4, vs10, vs113382; PWR10LE-NEXT:    xvadddp vs5, vs13, v03383; PWR10LE-NEXT:    xvadddp vs6, v1, v143384; PWR10LE-NEXT:    xvadddp vs7, v4, v123385; PWR10LE-NEXT:    xvadddp vs6, vs7, vs63386; PWR10LE-NEXT:    xvadddp vs4, vs5, vs43387; PWR10LE-NEXT:    xvadddp vs2, vs3, vs23388; PWR10LE-NEXT:    xvadddp vs0, vs1, vs03389; PWR10LE-NEXT:    xvadddp vs0, vs0, vs23390; PWR10LE-NEXT:    xvadddp vs1, vs4, vs63391; PWR10LE-NEXT:    xvadddp vs0, vs1, vs03392; PWR10LE-NEXT:    xxswapd vs1, vs03393; PWR10LE-NEXT:    xvadddp vs0, vs0, vs13394; PWR10LE-NEXT:    xxswapd vs1, vs03395; PWR10LE-NEXT:    blr3396;3397; PWR10BE-LABEL: v64f64_fast:3398; PWR10BE:       # %bb.0: # %entry3399; PWR10BE-NEXT:    lxv vs0, 384(r1)3400; PWR10BE-NEXT:    lxv vs1, 512(r1)3401; PWR10BE-NEXT:    xvadddp vs0, v7, vs03402; PWR10BE-NEXT:    lxv vs2, 256(r1)3403; PWR10BE-NEXT:    lxv vs3, 320(r1)3404; PWR10BE-NEXT:    lxv vs4, 448(r1)3405; PWR10BE-NEXT:    lxv vs5, 416(r1)3406; PWR10BE-NEXT:    lxv vs6, 544(r1)3407; PWR10BE-NEXT:    lxv vs7, 288(r1)3408; PWR10BE-NEXT:    lxv vs8, 352(r1)3409; PWR10BE-NEXT:    lxv vs9, 480(r1)3410; PWR10BE-NEXT:    lxv vs10, 368(r1)3411; PWR10BE-NEXT:    lxv vs11, 496(r1)3412; PWR10BE-NEXT:    lxv vs12, 240(r1)3413; PWR10BE-NEXT:    lxv vs13, 304(r1)3414; PWR10BE-NEXT:    xvadddp vs13, v2, vs133415; PWR10BE-NEXT:    xvadddp vs11, vs12, vs113416; PWR10BE-NEXT:    xvadddp vs10, v6, vs103417; PWR10BE-NEXT:    xvadddp vs9, v13, vs93418; PWR10BE-NEXT:    xvadddp vs8, v5, vs83419; PWR10BE-NEXT:    xvadddp vs6, vs7, vs63420; PWR10BE-NEXT:    xvadddp vs5, v9, vs53421; PWR10BE-NEXT:    xvadddp vs4, v11, vs43422; PWR10BE-NEXT:    xvadddp vs3, v3, vs33423; PWR10BE-NEXT:    xvadddp vs1, vs2, vs13424; PWR10BE-NEXT:    xvadddp vs0, vs0, vs13425; PWR10BE-NEXT:    lxv v0, 432(r1)3426; PWR10BE-NEXT:    lxv v1, 400(r1)3427; PWR10BE-NEXT:    lxv v14, 528(r1)3428; PWR10BE-NEXT:    lxv v15, 272(r1)3429; PWR10BE-NEXT:    lxv v16, 336(r1)3430; PWR10BE-NEXT:    lxv v17, 464(r1)3431; PWR10BE-NEXT:    xvadddp v12, v12, v173432; PWR10BE-NEXT:    xvadddp v4, v4, v163433; PWR10BE-NEXT:    xvadddp v14, v15, v143434; PWR10BE-NEXT:    xvadddp v1, v8, v13435; PWR10BE-NEXT:    xvadddp v0, v10, v03436; PWR10BE-NEXT:    xvadddp vs1, vs3, vs43437; PWR10BE-NEXT:    xvadddp vs2, vs5, vs63438; PWR10BE-NEXT:    xvadddp vs3, vs8, vs93439; PWR10BE-NEXT:    xvadddp vs4, vs10, vs113440; PWR10BE-NEXT:    xvadddp vs5, vs13, v03441; PWR10BE-NEXT:    xvadddp vs6, v1, v143442; PWR10BE-NEXT:    xvadddp vs7, v4, v123443; PWR10BE-NEXT:    xvadddp vs6, vs7, vs63444; PWR10BE-NEXT:    xvadddp vs4, vs5, vs43445; PWR10BE-NEXT:    xvadddp vs2, vs3, vs23446; PWR10BE-NEXT:    xvadddp vs0, vs1, vs03447; PWR10BE-NEXT:    xvadddp vs0, vs0, vs23448; PWR10BE-NEXT:    xvadddp vs1, vs4, vs63449; PWR10BE-NEXT:    xvadddp vs0, vs1, vs03450; PWR10BE-NEXT:    xxswapd vs1, vs03451; PWR10BE-NEXT:    xvadddp vs1, vs0, vs13452; PWR10BE-NEXT:    blr3453entry:3454  %0 = call fast double @llvm.vector.reduce.fadd.v64f64(double -0.000000e+00, <64 x double> %a)3455  ret double %03456}3457 3458declare double @llvm.vector.reduce.fadd.v2f64(double, <2 x double>) #03459declare double @llvm.vector.reduce.fadd.v4f64(double, <4 x double>) #03460declare double @llvm.vector.reduce.fadd.v8f64(double, <8 x double>) #03461declare double @llvm.vector.reduce.fadd.v16f64(double, <16 x double>) #03462declare double @llvm.vector.reduce.fadd.v32f64(double, <32 x double>) #03463declare double @llvm.vector.reduce.fadd.v64f64(double, <64 x double>) #03464 3465;;3466;; Vectors of ppc_fp1283467;;3468define dso_local ppc_fp128 @v2ppcf128(<2 x ppc_fp128> %a) local_unnamed_addr #0 {3469; PWR9LE-LABEL: v2ppcf128:3470; PWR9LE:       # %bb.0: # %entry3471; PWR9LE-NEXT:    mflr r03472; PWR9LE-NEXT:    stdu r1, -32(r1)3473; PWR9LE-NEXT:    std r0, 48(r1)3474; PWR9LE-NEXT:    bl __gcc_qadd3475; PWR9LE-NEXT:    nop3476; PWR9LE-NEXT:    addi r1, r1, 323477; PWR9LE-NEXT:    ld r0, 16(r1)3478; PWR9LE-NEXT:    mtlr r03479; PWR9LE-NEXT:    blr3480;3481; PWR9BE-LABEL: v2ppcf128:3482; PWR9BE:       # %bb.0: # %entry3483; PWR9BE-NEXT:    mflr r03484; PWR9BE-NEXT:    stdu r1, -112(r1)3485; PWR9BE-NEXT:    std r0, 128(r1)3486; PWR9BE-NEXT:    bl __gcc_qadd3487; PWR9BE-NEXT:    nop3488; PWR9BE-NEXT:    addi r1, r1, 1123489; PWR9BE-NEXT:    ld r0, 16(r1)3490; PWR9BE-NEXT:    mtlr r03491; PWR9BE-NEXT:    blr3492;3493; PWR10LE-LABEL: v2ppcf128:3494; PWR10LE:       # %bb.0: # %entry3495; PWR10LE-NEXT:    mflr r03496; PWR10LE-NEXT:    std r0, 16(r1)3497; PWR10LE-NEXT:    stdu r1, -32(r1)3498; PWR10LE-NEXT:    bl __gcc_qadd@notoc3499; PWR10LE-NEXT:    addi r1, r1, 323500; PWR10LE-NEXT:    ld r0, 16(r1)3501; PWR10LE-NEXT:    mtlr r03502; PWR10LE-NEXT:    blr3503;3504; PWR10BE-LABEL: v2ppcf128:3505; PWR10BE:       # %bb.0: # %entry3506; PWR10BE-NEXT:    mflr r03507; PWR10BE-NEXT:    std r0, 16(r1)3508; PWR10BE-NEXT:    stdu r1, -112(r1)3509; PWR10BE-NEXT:    bl __gcc_qadd3510; PWR10BE-NEXT:    nop3511; PWR10BE-NEXT:    addi r1, r1, 1123512; PWR10BE-NEXT:    ld r0, 16(r1)3513; PWR10BE-NEXT:    mtlr r03514; PWR10BE-NEXT:    blr3515entry:3516  %0 = call ppc_fp128 @llvm.vector.reduce.fadd.v2ppcf128(ppc_fp128 0xM80000000000000000000000000000000, <2 x ppc_fp128> %a)3517  ret ppc_fp128 %03518}3519 3520define dso_local ppc_fp128 @v2ppcf128_b(<2 x ppc_fp128> %a, ppc_fp128 %b) local_unnamed_addr #0 {3521; PWR9LE-LABEL: v2ppcf128_b:3522; PWR9LE:       # %bb.0: # %entry3523; PWR9LE-NEXT:    mflr r03524; PWR9LE-NEXT:    stfd f30, -16(r1) # 8-byte Folded Spill3525; PWR9LE-NEXT:    stfd f31, -8(r1) # 8-byte Folded Spill3526; PWR9LE-NEXT:    stdu r1, -48(r1)3527; PWR9LE-NEXT:    fmr f31, f43528; PWR9LE-NEXT:    fmr f30, f33529; PWR9LE-NEXT:    fmr f4, f23530; PWR9LE-NEXT:    fmr f3, f13531; PWR9LE-NEXT:    fmr f1, f53532; PWR9LE-NEXT:    fmr f2, f63533; PWR9LE-NEXT:    std r0, 64(r1)3534; PWR9LE-NEXT:    bl __gcc_qadd3535; PWR9LE-NEXT:    nop3536; PWR9LE-NEXT:    fmr f3, f303537; PWR9LE-NEXT:    fmr f4, f313538; PWR9LE-NEXT:    bl __gcc_qadd3539; PWR9LE-NEXT:    nop3540; PWR9LE-NEXT:    addi r1, r1, 483541; PWR9LE-NEXT:    ld r0, 16(r1)3542; PWR9LE-NEXT:    lfd f31, -8(r1) # 8-byte Folded Reload3543; PWR9LE-NEXT:    lfd f30, -16(r1) # 8-byte Folded Reload3544; PWR9LE-NEXT:    mtlr r03545; PWR9LE-NEXT:    blr3546;3547; PWR9BE-LABEL: v2ppcf128_b:3548; PWR9BE:       # %bb.0: # %entry3549; PWR9BE-NEXT:    mflr r03550; PWR9BE-NEXT:    stdu r1, -128(r1)3551; PWR9BE-NEXT:    std r0, 144(r1)3552; PWR9BE-NEXT:    stfd f30, 112(r1) # 8-byte Folded Spill3553; PWR9BE-NEXT:    stfd f31, 120(r1) # 8-byte Folded Spill3554; PWR9BE-NEXT:    fmr f31, f43555; PWR9BE-NEXT:    fmr f30, f33556; PWR9BE-NEXT:    fmr f4, f23557; PWR9BE-NEXT:    fmr f3, f13558; PWR9BE-NEXT:    fmr f1, f53559; PWR9BE-NEXT:    fmr f2, f63560; PWR9BE-NEXT:    bl __gcc_qadd3561; PWR9BE-NEXT:    nop3562; PWR9BE-NEXT:    fmr f3, f303563; PWR9BE-NEXT:    fmr f4, f313564; PWR9BE-NEXT:    bl __gcc_qadd3565; PWR9BE-NEXT:    nop3566; PWR9BE-NEXT:    lfd f31, 120(r1) # 8-byte Folded Reload3567; PWR9BE-NEXT:    lfd f30, 112(r1) # 8-byte Folded Reload3568; PWR9BE-NEXT:    addi r1, r1, 1283569; PWR9BE-NEXT:    ld r0, 16(r1)3570; PWR9BE-NEXT:    mtlr r03571; PWR9BE-NEXT:    blr3572;3573; PWR10LE-LABEL: v2ppcf128_b:3574; PWR10LE:       # %bb.0: # %entry3575; PWR10LE-NEXT:    mflr r03576; PWR10LE-NEXT:    stfd f30, -16(r1) # 8-byte Folded Spill3577; PWR10LE-NEXT:    stfd f31, -8(r1) # 8-byte Folded Spill3578; PWR10LE-NEXT:    std r0, 16(r1)3579; PWR10LE-NEXT:    stdu r1, -48(r1)3580; PWR10LE-NEXT:    fmr f31, f43581; PWR10LE-NEXT:    fmr f30, f33582; PWR10LE-NEXT:    fmr f4, f23583; PWR10LE-NEXT:    fmr f3, f13584; PWR10LE-NEXT:    fmr f1, f53585; PWR10LE-NEXT:    fmr f2, f63586; PWR10LE-NEXT:    bl __gcc_qadd@notoc3587; PWR10LE-NEXT:    fmr f3, f303588; PWR10LE-NEXT:    fmr f4, f313589; PWR10LE-NEXT:    bl __gcc_qadd@notoc3590; PWR10LE-NEXT:    addi r1, r1, 483591; PWR10LE-NEXT:    ld r0, 16(r1)3592; PWR10LE-NEXT:    lfd f31, -8(r1) # 8-byte Folded Reload3593; PWR10LE-NEXT:    mtlr r03594; PWR10LE-NEXT:    lfd f30, -16(r1) # 8-byte Folded Reload3595; PWR10LE-NEXT:    blr3596;3597; PWR10BE-LABEL: v2ppcf128_b:3598; PWR10BE:       # %bb.0: # %entry3599; PWR10BE-NEXT:    mflr r03600; PWR10BE-NEXT:    std r0, 16(r1)3601; PWR10BE-NEXT:    stdu r1, -128(r1)3602; PWR10BE-NEXT:    stfd f30, 112(r1) # 8-byte Folded Spill3603; PWR10BE-NEXT:    stfd f31, 120(r1) # 8-byte Folded Spill3604; PWR10BE-NEXT:    fmr f31, f43605; PWR10BE-NEXT:    fmr f30, f33606; PWR10BE-NEXT:    fmr f4, f23607; PWR10BE-NEXT:    fmr f3, f13608; PWR10BE-NEXT:    fmr f1, f53609; PWR10BE-NEXT:    fmr f2, f63610; PWR10BE-NEXT:    bl __gcc_qadd3611; PWR10BE-NEXT:    nop3612; PWR10BE-NEXT:    fmr f3, f303613; PWR10BE-NEXT:    fmr f4, f313614; PWR10BE-NEXT:    bl __gcc_qadd3615; PWR10BE-NEXT:    nop3616; PWR10BE-NEXT:    lfd f31, 120(r1) # 8-byte Folded Reload3617; PWR10BE-NEXT:    lfd f30, 112(r1) # 8-byte Folded Reload3618; PWR10BE-NEXT:    addi r1, r1, 1283619; PWR10BE-NEXT:    ld r0, 16(r1)3620; PWR10BE-NEXT:    mtlr r03621; PWR10BE-NEXT:    blr3622entry:3623  %0 = call ppc_fp128 @llvm.vector.reduce.fadd.v2ppcf128(ppc_fp128 %b, <2 x ppc_fp128> %a)3624  ret ppc_fp128 %03625}3626 3627define dso_local ppc_fp128 @v2ppcf128_fast(<2 x ppc_fp128> %a) local_unnamed_addr #0 {3628; PWR9LE-LABEL: v2ppcf128_fast:3629; PWR9LE:       # %bb.0: # %entry3630; PWR9LE-NEXT:    mflr r03631; PWR9LE-NEXT:    stdu r1, -48(r1)3632; PWR9LE-NEXT:    std r0, 64(r1)3633; PWR9LE-NEXT:    bl __gcc_qadd3634; PWR9LE-NEXT:    nop3635; PWR9LE-NEXT:    stfd f2, 40(r1)3636; PWR9LE-NEXT:    stfd f1, 32(r1)3637; PWR9LE-NEXT:    lxv vs1, 32(r1)3638; PWR9LE-NEXT:    xxswapd vs2, vs13639; PWR9LE-NEXT:    addi r1, r1, 483640; PWR9LE-NEXT:    ld r0, 16(r1)3641; PWR9LE-NEXT:    mtlr r03642; PWR9LE-NEXT:    blr3643;3644; PWR9BE-LABEL: v2ppcf128_fast:3645; PWR9BE:       # %bb.0: # %entry3646; PWR9BE-NEXT:    mflr r03647; PWR9BE-NEXT:    stdu r1, -128(r1)3648; PWR9BE-NEXT:    std r0, 144(r1)3649; PWR9BE-NEXT:    bl __gcc_qadd3650; PWR9BE-NEXT:    nop3651; PWR9BE-NEXT:    stfd f2, 120(r1)3652; PWR9BE-NEXT:    stfd f1, 112(r1)3653; PWR9BE-NEXT:    lxv vs1, 112(r1)3654; PWR9BE-NEXT:    xxswapd vs2, vs13655; PWR9BE-NEXT:    addi r1, r1, 1283656; PWR9BE-NEXT:    ld r0, 16(r1)3657; PWR9BE-NEXT:    mtlr r03658; PWR9BE-NEXT:    blr3659;3660; PWR10LE-LABEL: v2ppcf128_fast:3661; PWR10LE:       # %bb.0: # %entry3662; PWR10LE-NEXT:    mflr r03663; PWR10LE-NEXT:    std r0, 16(r1)3664; PWR10LE-NEXT:    stdu r1, -48(r1)3665; PWR10LE-NEXT:    bl __gcc_qadd@notoc3666; PWR10LE-NEXT:    stfd f2, 40(r1)3667; PWR10LE-NEXT:    stfd f1, 32(r1)3668; PWR10LE-NEXT:    lxv vs1, 32(r1)3669; PWR10LE-NEXT:    xxswapd vs2, vs13670; PWR10LE-NEXT:    addi r1, r1, 483671; PWR10LE-NEXT:    ld r0, 16(r1)3672; PWR10LE-NEXT:    mtlr r03673; PWR10LE-NEXT:    blr3674;3675; PWR10BE-LABEL: v2ppcf128_fast:3676; PWR10BE:       # %bb.0: # %entry3677; PWR10BE-NEXT:    mflr r03678; PWR10BE-NEXT:    std r0, 16(r1)3679; PWR10BE-NEXT:    stdu r1, -128(r1)3680; PWR10BE-NEXT:    bl __gcc_qadd3681; PWR10BE-NEXT:    nop3682; PWR10BE-NEXT:    stfd f2, 120(r1)3683; PWR10BE-NEXT:    stfd f1, 112(r1)3684; PWR10BE-NEXT:    lxv vs1, 112(r1)3685; PWR10BE-NEXT:    xxswapd vs2, vs13686; PWR10BE-NEXT:    addi r1, r1, 1283687; PWR10BE-NEXT:    ld r0, 16(r1)3688; PWR10BE-NEXT:    mtlr r03689; PWR10BE-NEXT:    blr3690entry:3691  %0 = call fast ppc_fp128 @llvm.vector.reduce.fadd.v2ppcf128(ppc_fp128 0xM80000000000000000000000000000000, <2 x ppc_fp128> %a)3692  ret ppc_fp128 %03693}3694 3695define dso_local ppc_fp128 @v4ppcf128(<4 x ppc_fp128> %a) local_unnamed_addr #0 {3696; PWR9LE-LABEL: v4ppcf128:3697; PWR9LE:       # %bb.0: # %entry3698; PWR9LE-NEXT:    mflr r03699; PWR9LE-NEXT:    stfd f28, -32(r1) # 8-byte Folded Spill3700; PWR9LE-NEXT:    stfd f29, -24(r1) # 8-byte Folded Spill3701; PWR9LE-NEXT:    stfd f30, -16(r1) # 8-byte Folded Spill3702; PWR9LE-NEXT:    stfd f31, -8(r1) # 8-byte Folded Spill3703; PWR9LE-NEXT:    stdu r1, -64(r1)3704; PWR9LE-NEXT:    std r0, 80(r1)3705; PWR9LE-NEXT:    fmr f31, f83706; PWR9LE-NEXT:    fmr f30, f73707; PWR9LE-NEXT:    fmr f29, f63708; PWR9LE-NEXT:    fmr f28, f53709; PWR9LE-NEXT:    bl __gcc_qadd3710; PWR9LE-NEXT:    nop3711; PWR9LE-NEXT:    fmr f3, f283712; PWR9LE-NEXT:    fmr f4, f293713; PWR9LE-NEXT:    bl __gcc_qadd3714; PWR9LE-NEXT:    nop3715; PWR9LE-NEXT:    fmr f3, f303716; PWR9LE-NEXT:    fmr f4, f313717; PWR9LE-NEXT:    bl __gcc_qadd3718; PWR9LE-NEXT:    nop3719; PWR9LE-NEXT:    addi r1, r1, 643720; PWR9LE-NEXT:    ld r0, 16(r1)3721; PWR9LE-NEXT:    lfd f31, -8(r1) # 8-byte Folded Reload3722; PWR9LE-NEXT:    lfd f30, -16(r1) # 8-byte Folded Reload3723; PWR9LE-NEXT:    mtlr r03724; PWR9LE-NEXT:    lfd f29, -24(r1) # 8-byte Folded Reload3725; PWR9LE-NEXT:    lfd f28, -32(r1) # 8-byte Folded Reload3726; PWR9LE-NEXT:    blr3727;3728; PWR9BE-LABEL: v4ppcf128:3729; PWR9BE:       # %bb.0: # %entry3730; PWR9BE-NEXT:    mflr r03731; PWR9BE-NEXT:    stdu r1, -144(r1)3732; PWR9BE-NEXT:    std r0, 160(r1)3733; PWR9BE-NEXT:    stfd f28, 112(r1) # 8-byte Folded Spill3734; PWR9BE-NEXT:    stfd f29, 120(r1) # 8-byte Folded Spill3735; PWR9BE-NEXT:    stfd f30, 128(r1) # 8-byte Folded Spill3736; PWR9BE-NEXT:    stfd f31, 136(r1) # 8-byte Folded Spill3737; PWR9BE-NEXT:    fmr f31, f83738; PWR9BE-NEXT:    fmr f30, f73739; PWR9BE-NEXT:    fmr f29, f63740; PWR9BE-NEXT:    fmr f28, f53741; PWR9BE-NEXT:    bl __gcc_qadd3742; PWR9BE-NEXT:    nop3743; PWR9BE-NEXT:    fmr f3, f283744; PWR9BE-NEXT:    fmr f4, f293745; PWR9BE-NEXT:    bl __gcc_qadd3746; PWR9BE-NEXT:    nop3747; PWR9BE-NEXT:    fmr f3, f303748; PWR9BE-NEXT:    fmr f4, f313749; PWR9BE-NEXT:    bl __gcc_qadd3750; PWR9BE-NEXT:    nop3751; PWR9BE-NEXT:    lfd f31, 136(r1) # 8-byte Folded Reload3752; PWR9BE-NEXT:    lfd f30, 128(r1) # 8-byte Folded Reload3753; PWR9BE-NEXT:    lfd f29, 120(r1) # 8-byte Folded Reload3754; PWR9BE-NEXT:    lfd f28, 112(r1) # 8-byte Folded Reload3755; PWR9BE-NEXT:    addi r1, r1, 1443756; PWR9BE-NEXT:    ld r0, 16(r1)3757; PWR9BE-NEXT:    mtlr r03758; PWR9BE-NEXT:    blr3759;3760; PWR10LE-LABEL: v4ppcf128:3761; PWR10LE:       # %bb.0: # %entry3762; PWR10LE-NEXT:    mflr r03763; PWR10LE-NEXT:    stfd f28, -32(r1) # 8-byte Folded Spill3764; PWR10LE-NEXT:    stfd f29, -24(r1) # 8-byte Folded Spill3765; PWR10LE-NEXT:    stfd f30, -16(r1) # 8-byte Folded Spill3766; PWR10LE-NEXT:    stfd f31, -8(r1) # 8-byte Folded Spill3767; PWR10LE-NEXT:    std r0, 16(r1)3768; PWR10LE-NEXT:    stdu r1, -64(r1)3769; PWR10LE-NEXT:    fmr f31, f83770; PWR10LE-NEXT:    fmr f30, f73771; PWR10LE-NEXT:    fmr f29, f63772; PWR10LE-NEXT:    fmr f28, f53773; PWR10LE-NEXT:    bl __gcc_qadd@notoc3774; PWR10LE-NEXT:    fmr f3, f283775; PWR10LE-NEXT:    fmr f4, f293776; PWR10LE-NEXT:    bl __gcc_qadd@notoc3777; PWR10LE-NEXT:    fmr f3, f303778; PWR10LE-NEXT:    fmr f4, f313779; PWR10LE-NEXT:    bl __gcc_qadd@notoc3780; PWR10LE-NEXT:    addi r1, r1, 643781; PWR10LE-NEXT:    ld r0, 16(r1)3782; PWR10LE-NEXT:    lfd f31, -8(r1) # 8-byte Folded Reload3783; PWR10LE-NEXT:    mtlr r03784; PWR10LE-NEXT:    lfd f30, -16(r1) # 8-byte Folded Reload3785; PWR10LE-NEXT:    lfd f29, -24(r1) # 8-byte Folded Reload3786; PWR10LE-NEXT:    lfd f28, -32(r1) # 8-byte Folded Reload3787; PWR10LE-NEXT:    blr3788;3789; PWR10BE-LABEL: v4ppcf128:3790; PWR10BE:       # %bb.0: # %entry3791; PWR10BE-NEXT:    mflr r03792; PWR10BE-NEXT:    std r0, 16(r1)3793; PWR10BE-NEXT:    stdu r1, -144(r1)3794; PWR10BE-NEXT:    stfd f28, 112(r1) # 8-byte Folded Spill3795; PWR10BE-NEXT:    stfd f29, 120(r1) # 8-byte Folded Spill3796; PWR10BE-NEXT:    fmr f29, f63797; PWR10BE-NEXT:    fmr f28, f53798; PWR10BE-NEXT:    stfd f30, 128(r1) # 8-byte Folded Spill3799; PWR10BE-NEXT:    stfd f31, 136(r1) # 8-byte Folded Spill3800; PWR10BE-NEXT:    fmr f31, f83801; PWR10BE-NEXT:    fmr f30, f73802; PWR10BE-NEXT:    bl __gcc_qadd3803; PWR10BE-NEXT:    nop3804; PWR10BE-NEXT:    fmr f3, f283805; PWR10BE-NEXT:    fmr f4, f293806; PWR10BE-NEXT:    bl __gcc_qadd3807; PWR10BE-NEXT:    nop3808; PWR10BE-NEXT:    fmr f3, f303809; PWR10BE-NEXT:    fmr f4, f313810; PWR10BE-NEXT:    bl __gcc_qadd3811; PWR10BE-NEXT:    nop3812; PWR10BE-NEXT:    lfd f31, 136(r1) # 8-byte Folded Reload3813; PWR10BE-NEXT:    lfd f30, 128(r1) # 8-byte Folded Reload3814; PWR10BE-NEXT:    lfd f29, 120(r1) # 8-byte Folded Reload3815; PWR10BE-NEXT:    lfd f28, 112(r1) # 8-byte Folded Reload3816; PWR10BE-NEXT:    addi r1, r1, 1443817; PWR10BE-NEXT:    ld r0, 16(r1)3818; PWR10BE-NEXT:    mtlr r03819; PWR10BE-NEXT:    blr3820entry:3821  %0 = call ppc_fp128 @llvm.vector.reduce.fadd.v4ppcf128(ppc_fp128 0xM80000000000000000000000000000000, <4 x ppc_fp128> %a)3822  ret ppc_fp128 %03823}3824 3825define dso_local ppc_fp128 @v4ppcf128_b(<4 x ppc_fp128> %a, ppc_fp128 %b) local_unnamed_addr #0 {3826; PWR9LE-LABEL: v4ppcf128_b:3827; PWR9LE:       # %bb.0: # %entry3828; PWR9LE-NEXT:    mflr r03829; PWR9LE-NEXT:    stfd f26, -48(r1) # 8-byte Folded Spill3830; PWR9LE-NEXT:    stfd f27, -40(r1) # 8-byte Folded Spill3831; PWR9LE-NEXT:    stfd f28, -32(r1) # 8-byte Folded Spill3832; PWR9LE-NEXT:    stfd f29, -24(r1) # 8-byte Folded Spill3833; PWR9LE-NEXT:    stfd f30, -16(r1) # 8-byte Folded Spill3834; PWR9LE-NEXT:    stfd f31, -8(r1) # 8-byte Folded Spill3835; PWR9LE-NEXT:    stdu r1, -80(r1)3836; PWR9LE-NEXT:    fmr f27, f43837; PWR9LE-NEXT:    fmr f26, f33838; PWR9LE-NEXT:    fmr f4, f23839; PWR9LE-NEXT:    fmr f3, f13840; PWR9LE-NEXT:    fmr f1, f93841; PWR9LE-NEXT:    fmr f2, f103842; PWR9LE-NEXT:    std r0, 96(r1)3843; PWR9LE-NEXT:    fmr f31, f83844; PWR9LE-NEXT:    fmr f30, f73845; PWR9LE-NEXT:    fmr f29, f63846; PWR9LE-NEXT:    fmr f28, f53847; PWR9LE-NEXT:    bl __gcc_qadd3848; PWR9LE-NEXT:    nop3849; PWR9LE-NEXT:    fmr f3, f263850; PWR9LE-NEXT:    fmr f4, f273851; PWR9LE-NEXT:    bl __gcc_qadd3852; PWR9LE-NEXT:    nop3853; PWR9LE-NEXT:    fmr f3, f283854; PWR9LE-NEXT:    fmr f4, f293855; PWR9LE-NEXT:    bl __gcc_qadd3856; PWR9LE-NEXT:    nop3857; PWR9LE-NEXT:    fmr f3, f303858; PWR9LE-NEXT:    fmr f4, f313859; PWR9LE-NEXT:    bl __gcc_qadd3860; PWR9LE-NEXT:    nop3861; PWR9LE-NEXT:    addi r1, r1, 803862; PWR9LE-NEXT:    ld r0, 16(r1)3863; PWR9LE-NEXT:    lfd f31, -8(r1) # 8-byte Folded Reload3864; PWR9LE-NEXT:    lfd f30, -16(r1) # 8-byte Folded Reload3865; PWR9LE-NEXT:    mtlr r03866; PWR9LE-NEXT:    lfd f29, -24(r1) # 8-byte Folded Reload3867; PWR9LE-NEXT:    lfd f28, -32(r1) # 8-byte Folded Reload3868; PWR9LE-NEXT:    lfd f27, -40(r1) # 8-byte Folded Reload3869; PWR9LE-NEXT:    lfd f26, -48(r1) # 8-byte Folded Reload3870; PWR9LE-NEXT:    blr3871;3872; PWR9BE-LABEL: v4ppcf128_b:3873; PWR9BE:       # %bb.0: # %entry3874; PWR9BE-NEXT:    mflr r03875; PWR9BE-NEXT:    stdu r1, -160(r1)3876; PWR9BE-NEXT:    std r0, 176(r1)3877; PWR9BE-NEXT:    stfd f26, 112(r1) # 8-byte Folded Spill3878; PWR9BE-NEXT:    stfd f27, 120(r1) # 8-byte Folded Spill3879; PWR9BE-NEXT:    fmr f27, f43880; PWR9BE-NEXT:    fmr f26, f33881; PWR9BE-NEXT:    fmr f4, f23882; PWR9BE-NEXT:    fmr f3, f13883; PWR9BE-NEXT:    fmr f1, f93884; PWR9BE-NEXT:    fmr f2, f103885; PWR9BE-NEXT:    stfd f28, 128(r1) # 8-byte Folded Spill3886; PWR9BE-NEXT:    stfd f29, 136(r1) # 8-byte Folded Spill3887; PWR9BE-NEXT:    stfd f30, 144(r1) # 8-byte Folded Spill3888; PWR9BE-NEXT:    stfd f31, 152(r1) # 8-byte Folded Spill3889; PWR9BE-NEXT:    fmr f31, f83890; PWR9BE-NEXT:    fmr f30, f73891; PWR9BE-NEXT:    fmr f29, f63892; PWR9BE-NEXT:    fmr f28, f53893; PWR9BE-NEXT:    bl __gcc_qadd3894; PWR9BE-NEXT:    nop3895; PWR9BE-NEXT:    fmr f3, f263896; PWR9BE-NEXT:    fmr f4, f273897; PWR9BE-NEXT:    bl __gcc_qadd3898; PWR9BE-NEXT:    nop3899; PWR9BE-NEXT:    fmr f3, f283900; PWR9BE-NEXT:    fmr f4, f293901; PWR9BE-NEXT:    bl __gcc_qadd3902; PWR9BE-NEXT:    nop3903; PWR9BE-NEXT:    fmr f3, f303904; PWR9BE-NEXT:    fmr f4, f313905; PWR9BE-NEXT:    bl __gcc_qadd3906; PWR9BE-NEXT:    nop3907; PWR9BE-NEXT:    lfd f31, 152(r1) # 8-byte Folded Reload3908; PWR9BE-NEXT:    lfd f30, 144(r1) # 8-byte Folded Reload3909; PWR9BE-NEXT:    lfd f29, 136(r1) # 8-byte Folded Reload3910; PWR9BE-NEXT:    lfd f28, 128(r1) # 8-byte Folded Reload3911; PWR9BE-NEXT:    lfd f27, 120(r1) # 8-byte Folded Reload3912; PWR9BE-NEXT:    lfd f26, 112(r1) # 8-byte Folded Reload3913; PWR9BE-NEXT:    addi r1, r1, 1603914; PWR9BE-NEXT:    ld r0, 16(r1)3915; PWR9BE-NEXT:    mtlr r03916; PWR9BE-NEXT:    blr3917;3918; PWR10LE-LABEL: v4ppcf128_b:3919; PWR10LE:       # %bb.0: # %entry3920; PWR10LE-NEXT:    mflr r03921; PWR10LE-NEXT:    stfd f26, -48(r1) # 8-byte Folded Spill3922; PWR10LE-NEXT:    stfd f27, -40(r1) # 8-byte Folded Spill3923; PWR10LE-NEXT:    stfd f28, -32(r1) # 8-byte Folded Spill3924; PWR10LE-NEXT:    stfd f29, -24(r1) # 8-byte Folded Spill3925; PWR10LE-NEXT:    stfd f30, -16(r1) # 8-byte Folded Spill3926; PWR10LE-NEXT:    stfd f31, -8(r1) # 8-byte Folded Spill3927; PWR10LE-NEXT:    std r0, 16(r1)3928; PWR10LE-NEXT:    stdu r1, -80(r1)3929; PWR10LE-NEXT:    fmr f27, f43930; PWR10LE-NEXT:    fmr f26, f33931; PWR10LE-NEXT:    fmr f4, f23932; PWR10LE-NEXT:    fmr f3, f13933; PWR10LE-NEXT:    fmr f1, f93934; PWR10LE-NEXT:    fmr f2, f103935; PWR10LE-NEXT:    fmr f31, f83936; PWR10LE-NEXT:    fmr f30, f73937; PWR10LE-NEXT:    fmr f29, f63938; PWR10LE-NEXT:    fmr f28, f53939; PWR10LE-NEXT:    bl __gcc_qadd@notoc3940; PWR10LE-NEXT:    fmr f3, f263941; PWR10LE-NEXT:    fmr f4, f273942; PWR10LE-NEXT:    bl __gcc_qadd@notoc3943; PWR10LE-NEXT:    fmr f3, f283944; PWR10LE-NEXT:    fmr f4, f293945; PWR10LE-NEXT:    bl __gcc_qadd@notoc3946; PWR10LE-NEXT:    fmr f3, f303947; PWR10LE-NEXT:    fmr f4, f313948; PWR10LE-NEXT:    bl __gcc_qadd@notoc3949; PWR10LE-NEXT:    addi r1, r1, 803950; PWR10LE-NEXT:    ld r0, 16(r1)3951; PWR10LE-NEXT:    lfd f31, -8(r1) # 8-byte Folded Reload3952; PWR10LE-NEXT:    mtlr r03953; PWR10LE-NEXT:    lfd f30, -16(r1) # 8-byte Folded Reload3954; PWR10LE-NEXT:    lfd f29, -24(r1) # 8-byte Folded Reload3955; PWR10LE-NEXT:    lfd f28, -32(r1) # 8-byte Folded Reload3956; PWR10LE-NEXT:    lfd f27, -40(r1) # 8-byte Folded Reload3957; PWR10LE-NEXT:    lfd f26, -48(r1) # 8-byte Folded Reload3958; PWR10LE-NEXT:    blr3959;3960; PWR10BE-LABEL: v4ppcf128_b:3961; PWR10BE:       # %bb.0: # %entry3962; PWR10BE-NEXT:    mflr r03963; PWR10BE-NEXT:    std r0, 16(r1)3964; PWR10BE-NEXT:    stdu r1, -160(r1)3965; PWR10BE-NEXT:    stfd f26, 112(r1) # 8-byte Folded Spill3966; PWR10BE-NEXT:    stfd f27, 120(r1) # 8-byte Folded Spill3967; PWR10BE-NEXT:    fmr f27, f43968; PWR10BE-NEXT:    fmr f26, f33969; PWR10BE-NEXT:    fmr f4, f23970; PWR10BE-NEXT:    fmr f3, f13971; PWR10BE-NEXT:    fmr f1, f93972; PWR10BE-NEXT:    stfd f28, 128(r1) # 8-byte Folded Spill3973; PWR10BE-NEXT:    stfd f29, 136(r1) # 8-byte Folded Spill3974; PWR10BE-NEXT:    fmr f2, f103975; PWR10BE-NEXT:    fmr f29, f63976; PWR10BE-NEXT:    fmr f28, f53977; PWR10BE-NEXT:    stfd f30, 144(r1) # 8-byte Folded Spill3978; PWR10BE-NEXT:    stfd f31, 152(r1) # 8-byte Folded Spill3979; PWR10BE-NEXT:    fmr f31, f83980; PWR10BE-NEXT:    fmr f30, f73981; PWR10BE-NEXT:    bl __gcc_qadd3982; PWR10BE-NEXT:    nop3983; PWR10BE-NEXT:    fmr f3, f263984; PWR10BE-NEXT:    fmr f4, f273985; PWR10BE-NEXT:    bl __gcc_qadd3986; PWR10BE-NEXT:    nop3987; PWR10BE-NEXT:    fmr f3, f283988; PWR10BE-NEXT:    fmr f4, f293989; PWR10BE-NEXT:    bl __gcc_qadd3990; PWR10BE-NEXT:    nop3991; PWR10BE-NEXT:    fmr f3, f303992; PWR10BE-NEXT:    fmr f4, f313993; PWR10BE-NEXT:    bl __gcc_qadd3994; PWR10BE-NEXT:    nop3995; PWR10BE-NEXT:    lfd f31, 152(r1) # 8-byte Folded Reload3996; PWR10BE-NEXT:    lfd f30, 144(r1) # 8-byte Folded Reload3997; PWR10BE-NEXT:    lfd f29, 136(r1) # 8-byte Folded Reload3998; PWR10BE-NEXT:    lfd f28, 128(r1) # 8-byte Folded Reload3999; PWR10BE-NEXT:    lfd f27, 120(r1) # 8-byte Folded Reload4000; PWR10BE-NEXT:    lfd f26, 112(r1) # 8-byte Folded Reload4001; PWR10BE-NEXT:    addi r1, r1, 1604002; PWR10BE-NEXT:    ld r0, 16(r1)4003; PWR10BE-NEXT:    mtlr r04004; PWR10BE-NEXT:    blr4005entry:4006  %0 = call ppc_fp128 @llvm.vector.reduce.fadd.v4ppcf128(ppc_fp128 %b, <4 x ppc_fp128> %a)4007  ret ppc_fp128 %04008}4009 4010define dso_local ppc_fp128 @v4ppcf128_fast(<4 x ppc_fp128> %a) local_unnamed_addr #0 {4011; PWR9LE-LABEL: v4ppcf128_fast:4012; PWR9LE:       # %bb.0: # %entry4013; PWR9LE-NEXT:    mflr r04014; PWR9LE-NEXT:    stfd f26, -48(r1) # 8-byte Folded Spill4015; PWR9LE-NEXT:    stfd f27, -40(r1) # 8-byte Folded Spill4016; PWR9LE-NEXT:    stfd f28, -32(r1) # 8-byte Folded Spill4017; PWR9LE-NEXT:    stfd f29, -24(r1) # 8-byte Folded Spill4018; PWR9LE-NEXT:    stfd f30, -16(r1) # 8-byte Folded Spill4019; PWR9LE-NEXT:    stfd f31, -8(r1) # 8-byte Folded Spill4020; PWR9LE-NEXT:    stdu r1, -96(r1)4021; PWR9LE-NEXT:    fmr f29, f44022; PWR9LE-NEXT:    fmr f28, f34023; PWR9LE-NEXT:    fmr f3, f54024; PWR9LE-NEXT:    fmr f4, f64025; PWR9LE-NEXT:    std r0, 112(r1)4026; PWR9LE-NEXT:    fmr f31, f84027; PWR9LE-NEXT:    fmr f30, f74028; PWR9LE-NEXT:    bl __gcc_qadd4029; PWR9LE-NEXT:    nop4030; PWR9LE-NEXT:    fmr f27, f14031; PWR9LE-NEXT:    fmr f26, f24032; PWR9LE-NEXT:    fmr f1, f284033; PWR9LE-NEXT:    fmr f2, f294034; PWR9LE-NEXT:    fmr f3, f304035; PWR9LE-NEXT:    fmr f4, f314036; PWR9LE-NEXT:    bl __gcc_qadd4037; PWR9LE-NEXT:    nop4038; PWR9LE-NEXT:    fmr f3, f14039; PWR9LE-NEXT:    fmr f4, f24040; PWR9LE-NEXT:    fmr f1, f274041; PWR9LE-NEXT:    fmr f2, f264042; PWR9LE-NEXT:    bl __gcc_qadd4043; PWR9LE-NEXT:    nop4044; PWR9LE-NEXT:    stfd f2, 40(r1)4045; PWR9LE-NEXT:    stfd f1, 32(r1)4046; PWR9LE-NEXT:    lxv vs1, 32(r1)4047; PWR9LE-NEXT:    xxswapd vs2, vs14048; PWR9LE-NEXT:    addi r1, r1, 964049; PWR9LE-NEXT:    ld r0, 16(r1)4050; PWR9LE-NEXT:    lfd f31, -8(r1) # 8-byte Folded Reload4051; PWR9LE-NEXT:    lfd f30, -16(r1) # 8-byte Folded Reload4052; PWR9LE-NEXT:    mtlr r04053; PWR9LE-NEXT:    lfd f29, -24(r1) # 8-byte Folded Reload4054; PWR9LE-NEXT:    lfd f28, -32(r1) # 8-byte Folded Reload4055; PWR9LE-NEXT:    lfd f27, -40(r1) # 8-byte Folded Reload4056; PWR9LE-NEXT:    lfd f26, -48(r1) # 8-byte Folded Reload4057; PWR9LE-NEXT:    blr4058;4059; PWR9BE-LABEL: v4ppcf128_fast:4060; PWR9BE:       # %bb.0: # %entry4061; PWR9BE-NEXT:    mflr r04062; PWR9BE-NEXT:    stdu r1, -176(r1)4063; PWR9BE-NEXT:    std r0, 192(r1)4064; PWR9BE-NEXT:    stfd f28, 144(r1) # 8-byte Folded Spill4065; PWR9BE-NEXT:    stfd f29, 152(r1) # 8-byte Folded Spill4066; PWR9BE-NEXT:    fmr f29, f44067; PWR9BE-NEXT:    fmr f28, f34068; PWR9BE-NEXT:    fmr f3, f54069; PWR9BE-NEXT:    fmr f4, f64070; PWR9BE-NEXT:    stfd f26, 128(r1) # 8-byte Folded Spill4071; PWR9BE-NEXT:    stfd f27, 136(r1) # 8-byte Folded Spill4072; PWR9BE-NEXT:    stfd f30, 160(r1) # 8-byte Folded Spill4073; PWR9BE-NEXT:    stfd f31, 168(r1) # 8-byte Folded Spill4074; PWR9BE-NEXT:    fmr f31, f84075; PWR9BE-NEXT:    fmr f30, f74076; PWR9BE-NEXT:    bl __gcc_qadd4077; PWR9BE-NEXT:    nop4078; PWR9BE-NEXT:    fmr f27, f14079; PWR9BE-NEXT:    fmr f26, f24080; PWR9BE-NEXT:    fmr f1, f284081; PWR9BE-NEXT:    fmr f2, f294082; PWR9BE-NEXT:    fmr f3, f304083; PWR9BE-NEXT:    fmr f4, f314084; PWR9BE-NEXT:    bl __gcc_qadd4085; PWR9BE-NEXT:    nop4086; PWR9BE-NEXT:    fmr f3, f14087; PWR9BE-NEXT:    fmr f4, f24088; PWR9BE-NEXT:    fmr f1, f274089; PWR9BE-NEXT:    fmr f2, f264090; PWR9BE-NEXT:    bl __gcc_qadd4091; PWR9BE-NEXT:    nop4092; PWR9BE-NEXT:    stfd f2, 120(r1)4093; PWR9BE-NEXT:    stfd f1, 112(r1)4094; PWR9BE-NEXT:    lxv vs1, 112(r1)4095; PWR9BE-NEXT:    lfd f31, 168(r1) # 8-byte Folded Reload4096; PWR9BE-NEXT:    lfd f30, 160(r1) # 8-byte Folded Reload4097; PWR9BE-NEXT:    xxswapd vs2, vs14098; PWR9BE-NEXT:    lfd f29, 152(r1) # 8-byte Folded Reload4099; PWR9BE-NEXT:    lfd f28, 144(r1) # 8-byte Folded Reload4100; PWR9BE-NEXT:    lfd f27, 136(r1) # 8-byte Folded Reload4101; PWR9BE-NEXT:    lfd f26, 128(r1) # 8-byte Folded Reload4102; PWR9BE-NEXT:    addi r1, r1, 1764103; PWR9BE-NEXT:    ld r0, 16(r1)4104; PWR9BE-NEXT:    mtlr r04105; PWR9BE-NEXT:    blr4106;4107; PWR10LE-LABEL: v4ppcf128_fast:4108; PWR10LE:       # %bb.0: # %entry4109; PWR10LE-NEXT:    mflr r04110; PWR10LE-NEXT:    stfd f26, -48(r1) # 8-byte Folded Spill4111; PWR10LE-NEXT:    stfd f27, -40(r1) # 8-byte Folded Spill4112; PWR10LE-NEXT:    stfd f28, -32(r1) # 8-byte Folded Spill4113; PWR10LE-NEXT:    stfd f29, -24(r1) # 8-byte Folded Spill4114; PWR10LE-NEXT:    stfd f30, -16(r1) # 8-byte Folded Spill4115; PWR10LE-NEXT:    stfd f31, -8(r1) # 8-byte Folded Spill4116; PWR10LE-NEXT:    std r0, 16(r1)4117; PWR10LE-NEXT:    stdu r1, -96(r1)4118; PWR10LE-NEXT:    fmr f29, f44119; PWR10LE-NEXT:    fmr f28, f34120; PWR10LE-NEXT:    fmr f3, f54121; PWR10LE-NEXT:    fmr f4, f64122; PWR10LE-NEXT:    fmr f31, f84123; PWR10LE-NEXT:    fmr f30, f74124; PWR10LE-NEXT:    bl __gcc_qadd@notoc4125; PWR10LE-NEXT:    fmr f27, f14126; PWR10LE-NEXT:    fmr f26, f24127; PWR10LE-NEXT:    fmr f1, f284128; PWR10LE-NEXT:    fmr f2, f294129; PWR10LE-NEXT:    fmr f3, f304130; PWR10LE-NEXT:    fmr f4, f314131; PWR10LE-NEXT:    bl __gcc_qadd@notoc4132; PWR10LE-NEXT:    fmr f3, f14133; PWR10LE-NEXT:    fmr f4, f24134; PWR10LE-NEXT:    fmr f1, f274135; PWR10LE-NEXT:    fmr f2, f264136; PWR10LE-NEXT:    bl __gcc_qadd@notoc4137; PWR10LE-NEXT:    stfd f2, 40(r1)4138; PWR10LE-NEXT:    stfd f1, 32(r1)4139; PWR10LE-NEXT:    lxv vs1, 32(r1)4140; PWR10LE-NEXT:    xxswapd vs2, vs14141; PWR10LE-NEXT:    addi r1, r1, 964142; PWR10LE-NEXT:    ld r0, 16(r1)4143; PWR10LE-NEXT:    lfd f31, -8(r1) # 8-byte Folded Reload4144; PWR10LE-NEXT:    mtlr r04145; PWR10LE-NEXT:    lfd f30, -16(r1) # 8-byte Folded Reload4146; PWR10LE-NEXT:    lfd f29, -24(r1) # 8-byte Folded Reload4147; PWR10LE-NEXT:    lfd f28, -32(r1) # 8-byte Folded Reload4148; PWR10LE-NEXT:    lfd f27, -40(r1) # 8-byte Folded Reload4149; PWR10LE-NEXT:    lfd f26, -48(r1) # 8-byte Folded Reload4150; PWR10LE-NEXT:    blr4151;4152; PWR10BE-LABEL: v4ppcf128_fast:4153; PWR10BE:       # %bb.0: # %entry4154; PWR10BE-NEXT:    mflr r04155; PWR10BE-NEXT:    std r0, 16(r1)4156; PWR10BE-NEXT:    stdu r1, -176(r1)4157; PWR10BE-NEXT:    stfd f28, 144(r1) # 8-byte Folded Spill4158; PWR10BE-NEXT:    stfd f29, 152(r1) # 8-byte Folded Spill4159; PWR10BE-NEXT:    fmr f29, f44160; PWR10BE-NEXT:    fmr f28, f34161; PWR10BE-NEXT:    fmr f3, f54162; PWR10BE-NEXT:    fmr f4, f64163; PWR10BE-NEXT:    stfd f26, 128(r1) # 8-byte Folded Spill4164; PWR10BE-NEXT:    stfd f27, 136(r1) # 8-byte Folded Spill4165; PWR10BE-NEXT:    stfd f30, 160(r1) # 8-byte Folded Spill4166; PWR10BE-NEXT:    stfd f31, 168(r1) # 8-byte Folded Spill4167; PWR10BE-NEXT:    fmr f31, f84168; PWR10BE-NEXT:    fmr f30, f74169; PWR10BE-NEXT:    bl __gcc_qadd4170; PWR10BE-NEXT:    nop4171; PWR10BE-NEXT:    fmr f27, f14172; PWR10BE-NEXT:    fmr f26, f24173; PWR10BE-NEXT:    fmr f1, f284174; PWR10BE-NEXT:    fmr f2, f294175; PWR10BE-NEXT:    fmr f3, f304176; PWR10BE-NEXT:    fmr f4, f314177; PWR10BE-NEXT:    bl __gcc_qadd4178; PWR10BE-NEXT:    nop4179; PWR10BE-NEXT:    fmr f3, f14180; PWR10BE-NEXT:    fmr f4, f24181; PWR10BE-NEXT:    fmr f1, f274182; PWR10BE-NEXT:    fmr f2, f264183; PWR10BE-NEXT:    bl __gcc_qadd4184; PWR10BE-NEXT:    nop4185; PWR10BE-NEXT:    stfd f2, 120(r1)4186; PWR10BE-NEXT:    stfd f1, 112(r1)4187; PWR10BE-NEXT:    lfd f31, 168(r1) # 8-byte Folded Reload4188; PWR10BE-NEXT:    lfd f30, 160(r1) # 8-byte Folded Reload4189; PWR10BE-NEXT:    lfd f29, 152(r1) # 8-byte Folded Reload4190; PWR10BE-NEXT:    lfd f28, 144(r1) # 8-byte Folded Reload4191; PWR10BE-NEXT:    lfd f27, 136(r1) # 8-byte Folded Reload4192; PWR10BE-NEXT:    lfd f26, 128(r1) # 8-byte Folded Reload4193; PWR10BE-NEXT:    lxv vs1, 112(r1)4194; PWR10BE-NEXT:    xxswapd vs2, vs14195; PWR10BE-NEXT:    addi r1, r1, 1764196; PWR10BE-NEXT:    ld r0, 16(r1)4197; PWR10BE-NEXT:    mtlr r04198; PWR10BE-NEXT:    blr4199entry:4200  %0 = call fast ppc_fp128 @llvm.vector.reduce.fadd.v4ppcf128(ppc_fp128 0xM80000000000000000000000000000000, <4 x ppc_fp128> %a)4201  ret ppc_fp128 %04202}4203 4204declare ppc_fp128 @llvm.vector.reduce.fadd.v2ppcf128(ppc_fp128, <2 x ppc_fp128>) #04205declare ppc_fp128 @llvm.vector.reduce.fadd.v4ppcf128(ppc_fp128, <4 x ppc_fp128>) #04206 4207attributes #0 = { nounwind }4208