brintos

brintos / llvm-project-archived public Read only

0
0
Text · 316.5 KiB · 08ca1d1 Raw
8961 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -O3 -mtriple=powerpc64le-linux-gnu < %s | FileCheck --check-prefix=PC64LE %s3; RUN: llc -O3 -mtriple=powerpc64le-linux-gnu -mcpu=pwr9 < %s | FileCheck --check-prefix=PC64LE9 %s4 5define <1 x float> @constrained_vector_fdiv_v1f32(<1 x float> %x, <1 x float> %y) #0 {6; PC64LE-LABEL: constrained_vector_fdiv_v1f32:7; PC64LE:       # %bb.0: # %entry8; PC64LE-NEXT:    xsdivsp 1, 1, 29; PC64LE-NEXT:    blr10;11; PC64LE9-LABEL: constrained_vector_fdiv_v1f32:12; PC64LE9:       # %bb.0: # %entry13; PC64LE9-NEXT:    xsdivsp 1, 1, 214; PC64LE9-NEXT:    blr15entry:16  %div = call <1 x float> @llvm.experimental.constrained.fdiv.v1f32(17           <1 x float> %x,18           <1 x float> %y,19           metadata !"round.dynamic",20           metadata !"fpexcept.strict") #121  ret <1 x float> %div22}23 24define <2 x double> @constrained_vector_fdiv_v2f64(<2 x double> %x, <2 x double> %y) #0 {25; PC64LE-LABEL: constrained_vector_fdiv_v2f64:26; PC64LE:       # %bb.0: # %entry27; PC64LE-NEXT:    xvdivdp 34, 34, 3528; PC64LE-NEXT:    blr29;30; PC64LE9-LABEL: constrained_vector_fdiv_v2f64:31; PC64LE9:       # %bb.0: # %entry32; PC64LE9-NEXT:    xvdivdp 34, 34, 3533; PC64LE9-NEXT:    blr34entry:35  %div = call <2 x double> @llvm.experimental.constrained.fdiv.v2f64(36           <2 x double> %x,37           <2 x double> %y,38           metadata !"round.dynamic",39           metadata !"fpexcept.strict") #140  ret <2 x double> %div41}42 43define <3 x float> @constrained_vector_fdiv_v3f32(<3 x float> %x, <3 x float> %y) #0 {44; PC64LE-LABEL: constrained_vector_fdiv_v3f32:45; PC64LE:       # %bb.0: # %entry46; PC64LE-NEXT:    xxswapd 0, 3547; PC64LE-NEXT:    xxswapd 1, 3448; PC64LE-NEXT:    addis 3, 2, .LCPI2_0@toc@ha49; PC64LE-NEXT:    xscvspdpn 0, 050; PC64LE-NEXT:    xscvspdpn 1, 151; PC64LE-NEXT:    xxsldwi 2, 35, 35, 352; PC64LE-NEXT:    xxsldwi 3, 34, 34, 353; PC64LE-NEXT:    addi 3, 3, .LCPI2_0@toc@l54; PC64LE-NEXT:    xxsldwi 5, 34, 34, 155; PC64LE-NEXT:    xxsldwi 4, 35, 35, 156; PC64LE-NEXT:    xsdivsp 0, 1, 057; PC64LE-NEXT:    xscvspdpn 1, 258; PC64LE-NEXT:    xscvspdpn 2, 359; PC64LE-NEXT:    xsdivsp 1, 2, 160; PC64LE-NEXT:    xscvdpspn 0, 061; PC64LE-NEXT:    xscvdpspn 1, 162; PC64LE-NEXT:    xxmrghw 34, 0, 163; PC64LE-NEXT:    lxvd2x 0, 0, 364; PC64LE-NEXT:    xscvspdpn 1, 565; PC64LE-NEXT:    xxswapd 35, 066; PC64LE-NEXT:    xscvspdpn 0, 467; PC64LE-NEXT:    xsdivsp 0, 1, 068; PC64LE-NEXT:    xscvdpspn 36, 069; PC64LE-NEXT:    vperm 2, 4, 2, 370; PC64LE-NEXT:    blr71;72; PC64LE9-LABEL: constrained_vector_fdiv_v3f32:73; PC64LE9:       # %bb.0: # %entry74; PC64LE9-NEXT:    xxsldwi 0, 35, 35, 175; PC64LE9-NEXT:    xxsldwi 1, 34, 34, 176; PC64LE9-NEXT:    addis 3, 2, .LCPI2_0@toc@ha77; PC64LE9-NEXT:    addi 3, 3, .LCPI2_0@toc@l78; PC64LE9-NEXT:    xxswapd 2, 3479; PC64LE9-NEXT:    xxsldwi 3, 34, 34, 380; PC64LE9-NEXT:    xscvspdpn 0, 081; PC64LE9-NEXT:    xscvspdpn 1, 182; PC64LE9-NEXT:    xscvspdpn 2, 283; PC64LE9-NEXT:    xscvspdpn 3, 384; PC64LE9-NEXT:    xsdivsp 0, 1, 085; PC64LE9-NEXT:    xxswapd 1, 3586; PC64LE9-NEXT:    xscvspdpn 1, 187; PC64LE9-NEXT:    xsdivsp 1, 2, 188; PC64LE9-NEXT:    xxsldwi 2, 35, 35, 389; PC64LE9-NEXT:    xscvspdpn 2, 290; PC64LE9-NEXT:    xsdivsp 2, 3, 291; PC64LE9-NEXT:    xscvdpspn 34, 092; PC64LE9-NEXT:    lxv 0, 0(3)93; PC64LE9-NEXT:    xscvdpspn 1, 194; PC64LE9-NEXT:    xscvdpspn 2, 295; PC64LE9-NEXT:    xxmrghw 35, 1, 296; PC64LE9-NEXT:    xxperm 34, 35, 097; PC64LE9-NEXT:    blr98entry:99  %div = call <3 x float> @llvm.experimental.constrained.fdiv.v3f32(100           <3 x float> %x,101           <3 x float> %y,102           metadata !"round.dynamic",103           metadata !"fpexcept.strict") #1104  ret <3 x float> %div105}106 107define <3 x double> @constrained_vector_fdiv_v3f64(<3 x double> %x, <3 x double> %y) #0 {108; PC64LE-LABEL: constrained_vector_fdiv_v3f64:109; PC64LE:       # %bb.0: # %entry110; PC64LE-NEXT:    xxmrghd 0, 5, 4111; PC64LE-NEXT:    xxmrghd 1, 2, 1112; PC64LE-NEXT:    xsdivdp 3, 3, 6113; PC64LE-NEXT:    xvdivdp 2, 1, 0114; PC64LE-NEXT:    xxswapd 1, 2115; PC64LE-NEXT:    blr116;117; PC64LE9-LABEL: constrained_vector_fdiv_v3f64:118; PC64LE9:       # %bb.0: # %entry119; PC64LE9-NEXT:    xxmrghd 0, 5, 4120; PC64LE9-NEXT:    xxmrghd 1, 2, 1121; PC64LE9-NEXT:    xsdivdp 3, 3, 6122; PC64LE9-NEXT:    xvdivdp 2, 1, 0123; PC64LE9-NEXT:    xxswapd 1, 2124; PC64LE9-NEXT:    blr125entry:126  %div = call <3 x double> @llvm.experimental.constrained.fdiv.v3f64(127           <3 x double> %x,128           <3 x double> %y,129           metadata !"round.dynamic",130           metadata !"fpexcept.strict") #1131  ret <3 x double> %div132}133 134define <4 x double> @constrained_vector_fdiv_v4f64(<4 x double> %x, <4 x double> %y) #0 {135; PC64LE-LABEL: constrained_vector_fdiv_v4f64:136; PC64LE:       # %bb.0: # %entry137; PC64LE-NEXT:    xvdivdp 35, 35, 37138; PC64LE-NEXT:    xvdivdp 34, 34, 36139; PC64LE-NEXT:    blr140;141; PC64LE9-LABEL: constrained_vector_fdiv_v4f64:142; PC64LE9:       # %bb.0: # %entry143; PC64LE9-NEXT:    xvdivdp 35, 35, 37144; PC64LE9-NEXT:    xvdivdp 34, 34, 36145; PC64LE9-NEXT:    blr146entry:147  %div = call <4 x double> @llvm.experimental.constrained.fdiv.v4f64(148           <4 x double> %x,149           <4 x double> %y,150           metadata !"round.dynamic",151           metadata !"fpexcept.strict") #1152  ret <4 x double> %div153}154 155define <1 x float> @constrained_vector_frem_v1f32(<1 x float> %x, <1 x float> %y) #0 {156; PC64LE-LABEL: constrained_vector_frem_v1f32:157; PC64LE:       # %bb.0: # %entry158; PC64LE-NEXT:    mflr 0159; PC64LE-NEXT:    stdu 1, -32(1)160; PC64LE-NEXT:    std 0, 48(1)161; PC64LE-NEXT:    bl fmodf162; PC64LE-NEXT:    nop163; PC64LE-NEXT:    addi 1, 1, 32164; PC64LE-NEXT:    ld 0, 16(1)165; PC64LE-NEXT:    mtlr 0166; PC64LE-NEXT:    blr167;168; PC64LE9-LABEL: constrained_vector_frem_v1f32:169; PC64LE9:       # %bb.0: # %entry170; PC64LE9-NEXT:    mflr 0171; PC64LE9-NEXT:    stdu 1, -32(1)172; PC64LE9-NEXT:    std 0, 48(1)173; PC64LE9-NEXT:    bl fmodf174; PC64LE9-NEXT:    nop175; PC64LE9-NEXT:    addi 1, 1, 32176; PC64LE9-NEXT:    ld 0, 16(1)177; PC64LE9-NEXT:    mtlr 0178; PC64LE9-NEXT:    blr179entry:180  %rem = call <1 x float> @llvm.experimental.constrained.frem.v1f32(181           <1 x float> %x,182           <1 x float> %y,183           metadata !"round.dynamic",184           metadata !"fpexcept.strict") #1185  ret <1 x float> %rem186}187 188define <2 x double> @constrained_vector_frem_v2f64(<2 x double> %x, <2 x double> %y) #0 {189; PC64LE-LABEL: constrained_vector_frem_v2f64:190; PC64LE:       # %bb.0: # %entry191; PC64LE-NEXT:    mflr 0192; PC64LE-NEXT:    stdu 1, -96(1)193; PC64LE-NEXT:    li 3, 48194; PC64LE-NEXT:    std 0, 112(1)195; PC64LE-NEXT:    stxvd2x 61, 1, 3 # 16-byte Folded Spill196; PC64LE-NEXT:    li 3, 64197; PC64LE-NEXT:    stxvd2x 62, 1, 3 # 16-byte Folded Spill198; PC64LE-NEXT:    li 3, 80199; PC64LE-NEXT:    vmr 30, 2200; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill201; PC64LE-NEXT:    vmr 31, 3202; PC64LE-NEXT:    xxlor 1, 62, 62203; PC64LE-NEXT:    xxlor 2, 63, 63204; PC64LE-NEXT:    bl fmod205; PC64LE-NEXT:    nop206; PC64LE-NEXT:    xxlor 61, 1, 1207; PC64LE-NEXT:    xxswapd 1, 62208; PC64LE-NEXT:    xxswapd 2, 63209; PC64LE-NEXT:    bl fmod210; PC64LE-NEXT:    nop211; PC64LE-NEXT:    li 3, 80212; PC64LE-NEXT:    xxmrghd 34, 61, 1213; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload214; PC64LE-NEXT:    li 3, 64215; PC64LE-NEXT:    lxvd2x 62, 1, 3 # 16-byte Folded Reload216; PC64LE-NEXT:    li 3, 48217; PC64LE-NEXT:    lxvd2x 61, 1, 3 # 16-byte Folded Reload218; PC64LE-NEXT:    addi 1, 1, 96219; PC64LE-NEXT:    ld 0, 16(1)220; PC64LE-NEXT:    mtlr 0221; PC64LE-NEXT:    blr222;223; PC64LE9-LABEL: constrained_vector_frem_v2f64:224; PC64LE9:       # %bb.0: # %entry225; PC64LE9-NEXT:    mflr 0226; PC64LE9-NEXT:    stdu 1, -80(1)227; PC64LE9-NEXT:    std 0, 96(1)228; PC64LE9-NEXT:    stxv 62, 48(1) # 16-byte Folded Spill229; PC64LE9-NEXT:    stxv 63, 64(1) # 16-byte Folded Spill230; PC64LE9-NEXT:    vmr 31, 3231; PC64LE9-NEXT:    xscpsgndp 2, 63, 63232; PC64LE9-NEXT:    vmr 30, 2233; PC64LE9-NEXT:    xscpsgndp 1, 62, 62234; PC64LE9-NEXT:    stxv 61, 32(1) # 16-byte Folded Spill235; PC64LE9-NEXT:    bl fmod236; PC64LE9-NEXT:    nop237; PC64LE9-NEXT:    xscpsgndp 61, 1, 1238; PC64LE9-NEXT:    xxswapd 1, 62239; PC64LE9-NEXT:    xxswapd 2, 63240; PC64LE9-NEXT:    bl fmod241; PC64LE9-NEXT:    nop242; PC64LE9-NEXT:    xxmrghd 34, 61, 1243; PC64LE9-NEXT:    lxv 63, 64(1) # 16-byte Folded Reload244; PC64LE9-NEXT:    lxv 62, 48(1) # 16-byte Folded Reload245; PC64LE9-NEXT:    lxv 61, 32(1) # 16-byte Folded Reload246; PC64LE9-NEXT:    addi 1, 1, 80247; PC64LE9-NEXT:    ld 0, 16(1)248; PC64LE9-NEXT:    mtlr 0249; PC64LE9-NEXT:    blr250entry:251  %rem = call <2 x double> @llvm.experimental.constrained.frem.v2f64(252           <2 x double> %x,253           <2 x double> %y,254           metadata !"round.dynamic",255           metadata !"fpexcept.strict") #1256  ret <2 x double> %rem257}258 259define <3 x float> @constrained_vector_frem_v3f32(<3 x float> %x, <3 x float> %y) #0 {260; PC64LE-LABEL: constrained_vector_frem_v3f32:261; PC64LE:       # %bb.0: # %entry262; PC64LE-NEXT:    mflr 0263; PC64LE-NEXT:    stdu 1, -96(1)264; PC64LE-NEXT:    xxsldwi 0, 34, 34, 1265; PC64LE-NEXT:    xxsldwi 2, 35, 35, 1266; PC64LE-NEXT:    li 3, 48267; PC64LE-NEXT:    std 0, 112(1)268; PC64LE-NEXT:    stfd 30, 80(1) # 8-byte Folded Spill269; PC64LE-NEXT:    stfd 31, 88(1) # 8-byte Folded Spill270; PC64LE-NEXT:    xscvspdpn 1, 0271; PC64LE-NEXT:    xscvspdpn 2, 2272; PC64LE-NEXT:    stxvd2x 62, 1, 3 # 16-byte Folded Spill273; PC64LE-NEXT:    li 3, 64274; PC64LE-NEXT:    vmr 30, 2275; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill276; PC64LE-NEXT:    vmr 31, 3277; PC64LE-NEXT:    bl fmodf278; PC64LE-NEXT:    nop279; PC64LE-NEXT:    xxswapd 0, 62280; PC64LE-NEXT:    xxswapd 2, 63281; PC64LE-NEXT:    fmr 31, 1282; PC64LE-NEXT:    xscvspdpn 1, 0283; PC64LE-NEXT:    xscvspdpn 2, 2284; PC64LE-NEXT:    bl fmodf285; PC64LE-NEXT:    nop286; PC64LE-NEXT:    xxsldwi 0, 62, 62, 3287; PC64LE-NEXT:    xxsldwi 2, 63, 63, 3288; PC64LE-NEXT:    fmr 30, 1289; PC64LE-NEXT:    xscvspdpn 1, 0290; PC64LE-NEXT:    xscvspdpn 2, 2291; PC64LE-NEXT:    bl fmodf292; PC64LE-NEXT:    nop293; PC64LE-NEXT:    xscvdpspn 0, 1294; PC64LE-NEXT:    xscvdpspn 1, 30295; PC64LE-NEXT:    addis 3, 2, .LCPI7_0@toc@ha296; PC64LE-NEXT:    lfd 30, 80(1) # 8-byte Folded Reload297; PC64LE-NEXT:    xscvdpspn 36, 31298; PC64LE-NEXT:    lfd 31, 88(1) # 8-byte Folded Reload299; PC64LE-NEXT:    addi 3, 3, .LCPI7_0@toc@l300; PC64LE-NEXT:    xxmrghw 34, 1, 0301; PC64LE-NEXT:    lxvd2x 0, 0, 3302; PC64LE-NEXT:    li 3, 64303; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload304; PC64LE-NEXT:    li 3, 48305; PC64LE-NEXT:    lxvd2x 62, 1, 3 # 16-byte Folded Reload306; PC64LE-NEXT:    xxswapd 35, 0307; PC64LE-NEXT:    vperm 2, 4, 2, 3308; PC64LE-NEXT:    addi 1, 1, 96309; PC64LE-NEXT:    ld 0, 16(1)310; PC64LE-NEXT:    mtlr 0311; PC64LE-NEXT:    blr312;313; PC64LE9-LABEL: constrained_vector_frem_v3f32:314; PC64LE9:       # %bb.0: # %entry315; PC64LE9-NEXT:    mflr 0316; PC64LE9-NEXT:    stdu 1, -80(1)317; PC64LE9-NEXT:    xxsldwi 0, 34, 34, 1318; PC64LE9-NEXT:    std 0, 96(1)319; PC64LE9-NEXT:    stfd 30, 64(1) # 8-byte Folded Spill320; PC64LE9-NEXT:    stxv 62, 32(1) # 16-byte Folded Spill321; PC64LE9-NEXT:    stfd 31, 72(1) # 8-byte Folded Spill322; PC64LE9-NEXT:    stxv 63, 48(1) # 16-byte Folded Spill323; PC64LE9-NEXT:    xscvspdpn 1, 0324; PC64LE9-NEXT:    xxsldwi 0, 35, 35, 1325; PC64LE9-NEXT:    vmr 31, 3326; PC64LE9-NEXT:    vmr 30, 2327; PC64LE9-NEXT:    xscvspdpn 2, 0328; PC64LE9-NEXT:    bl fmodf329; PC64LE9-NEXT:    nop330; PC64LE9-NEXT:    xxswapd 0, 62331; PC64LE9-NEXT:    fmr 31, 1332; PC64LE9-NEXT:    xscvspdpn 1, 0333; PC64LE9-NEXT:    xxswapd 0, 63334; PC64LE9-NEXT:    xscvspdpn 2, 0335; PC64LE9-NEXT:    bl fmodf336; PC64LE9-NEXT:    nop337; PC64LE9-NEXT:    xxsldwi 0, 62, 62, 3338; PC64LE9-NEXT:    fmr 30, 1339; PC64LE9-NEXT:    xscvspdpn 1, 0340; PC64LE9-NEXT:    xxsldwi 0, 63, 63, 3341; PC64LE9-NEXT:    xscvspdpn 2, 0342; PC64LE9-NEXT:    bl fmodf343; PC64LE9-NEXT:    nop344; PC64LE9-NEXT:    xscvdpspn 0, 1345; PC64LE9-NEXT:    xscvdpspn 1, 30346; PC64LE9-NEXT:    addis 3, 2, .LCPI7_0@toc@ha347; PC64LE9-NEXT:    xscvdpspn 34, 31348; PC64LE9-NEXT:    lxv 63, 48(1) # 16-byte Folded Reload349; PC64LE9-NEXT:    lxv 62, 32(1) # 16-byte Folded Reload350; PC64LE9-NEXT:    lfd 31, 72(1) # 8-byte Folded Reload351; PC64LE9-NEXT:    addi 3, 3, .LCPI7_0@toc@l352; PC64LE9-NEXT:    lfd 30, 64(1) # 8-byte Folded Reload353; PC64LE9-NEXT:    xxmrghw 35, 1, 0354; PC64LE9-NEXT:    lxv 0, 0(3)355; PC64LE9-NEXT:    xxperm 34, 35, 0356; PC64LE9-NEXT:    addi 1, 1, 80357; PC64LE9-NEXT:    ld 0, 16(1)358; PC64LE9-NEXT:    mtlr 0359; PC64LE9-NEXT:    blr360entry:361  %rem = call <3 x float> @llvm.experimental.constrained.frem.v3f32(362           <3 x float> %x,363           <3 x float> %y,364           metadata !"round.dynamic",365           metadata !"fpexcept.strict") #1366  ret <3 x float> %rem367}368 369define <3 x double> @constrained_vector_frem_v3f64(<3 x double> %x, <3 x double> %y) #0 {370; PC64LE-LABEL: constrained_vector_frem_v3f64:371; PC64LE:       # %bb.0: # %entry372; PC64LE-NEXT:    mflr 0373; PC64LE-NEXT:    stdu 1, -96(1)374; PC64LE-NEXT:    std 0, 112(1)375; PC64LE-NEXT:    stfd 28, 64(1) # 8-byte Folded Spill376; PC64LE-NEXT:    fmr 28, 2377; PC64LE-NEXT:    fmr 2, 4378; PC64LE-NEXT:    li 3, 48379; PC64LE-NEXT:    stfd 29, 72(1) # 8-byte Folded Spill380; PC64LE-NEXT:    stfd 30, 80(1) # 8-byte Folded Spill381; PC64LE-NEXT:    fmr 30, 5382; PC64LE-NEXT:    stfd 31, 88(1) # 8-byte Folded Spill383; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill384; PC64LE-NEXT:    fmr 31, 6385; PC64LE-NEXT:    fmr 29, 3386; PC64LE-NEXT:    bl fmod387; PC64LE-NEXT:    nop388; PC64LE-NEXT:    xxlor 63, 1, 1389; PC64LE-NEXT:    fmr 1, 28390; PC64LE-NEXT:    fmr 2, 30391; PC64LE-NEXT:    bl fmod392; PC64LE-NEXT:    nop393; PC64LE-NEXT:    xxmrghd 63, 1, 63394; PC64LE-NEXT:    fmr 1, 29395; PC64LE-NEXT:    fmr 2, 31396; PC64LE-NEXT:    bl fmod397; PC64LE-NEXT:    nop398; PC64LE-NEXT:    li 3, 48399; PC64LE-NEXT:    fmr 3, 1400; PC64LE-NEXT:    xxswapd 1, 63401; PC64LE-NEXT:    lfd 31, 88(1) # 8-byte Folded Reload402; PC64LE-NEXT:    xxlor 2, 63, 63403; PC64LE-NEXT:    lfd 30, 80(1) # 8-byte Folded Reload404; PC64LE-NEXT:    lfd 29, 72(1) # 8-byte Folded Reload405; PC64LE-NEXT:    lfd 28, 64(1) # 8-byte Folded Reload406; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload407; PC64LE-NEXT:    addi 1, 1, 96408; PC64LE-NEXT:    ld 0, 16(1)409; PC64LE-NEXT:    mtlr 0410; PC64LE-NEXT:    blr411;412; PC64LE9-LABEL: constrained_vector_frem_v3f64:413; PC64LE9:       # %bb.0: # %entry414; PC64LE9-NEXT:    mflr 0415; PC64LE9-NEXT:    stdu 1, -80(1)416; PC64LE9-NEXT:    std 0, 96(1)417; PC64LE9-NEXT:    stfd 28, 48(1) # 8-byte Folded Spill418; PC64LE9-NEXT:    stxv 63, 32(1) # 16-byte Folded Spill419; PC64LE9-NEXT:    fmr 28, 2420; PC64LE9-NEXT:    fmr 2, 4421; PC64LE9-NEXT:    stfd 29, 56(1) # 8-byte Folded Spill422; PC64LE9-NEXT:    stfd 30, 64(1) # 8-byte Folded Spill423; PC64LE9-NEXT:    stfd 31, 72(1) # 8-byte Folded Spill424; PC64LE9-NEXT:    fmr 31, 6425; PC64LE9-NEXT:    fmr 30, 5426; PC64LE9-NEXT:    fmr 29, 3427; PC64LE9-NEXT:    bl fmod428; PC64LE9-NEXT:    nop429; PC64LE9-NEXT:    xscpsgndp 63, 1, 1430; PC64LE9-NEXT:    fmr 1, 28431; PC64LE9-NEXT:    fmr 2, 30432; PC64LE9-NEXT:    bl fmod433; PC64LE9-NEXT:    nop434; PC64LE9-NEXT:    xxmrghd 63, 1, 63435; PC64LE9-NEXT:    fmr 1, 29436; PC64LE9-NEXT:    fmr 2, 31437; PC64LE9-NEXT:    bl fmod438; PC64LE9-NEXT:    nop439; PC64LE9-NEXT:    fmr 3, 1440; PC64LE9-NEXT:    xxswapd 1, 63441; PC64LE9-NEXT:    xscpsgndp 2, 63, 63442; PC64LE9-NEXT:    lxv 63, 32(1) # 16-byte Folded Reload443; PC64LE9-NEXT:    lfd 31, 72(1) # 8-byte Folded Reload444; PC64LE9-NEXT:    lfd 30, 64(1) # 8-byte Folded Reload445; PC64LE9-NEXT:    lfd 29, 56(1) # 8-byte Folded Reload446; PC64LE9-NEXT:    lfd 28, 48(1) # 8-byte Folded Reload447; PC64LE9-NEXT:    addi 1, 1, 80448; PC64LE9-NEXT:    ld 0, 16(1)449; PC64LE9-NEXT:    mtlr 0450; PC64LE9-NEXT:    blr451entry:452  %rem = call <3 x double> @llvm.experimental.constrained.frem.v3f64(453           <3 x double> %x,454           <3 x double> %y,455           metadata !"round.dynamic",456           metadata !"fpexcept.strict") #1457  ret <3 x double> %rem458}459 460define <4 x double> @constrained_vector_frem_v4f64(<4 x double> %x, <4 x double> %y) #0 {461; PC64LE-LABEL: constrained_vector_frem_v4f64:462; PC64LE:       # %bb.0:463; PC64LE-NEXT:    mflr 0464; PC64LE-NEXT:    stdu 1, -128(1)465; PC64LE-NEXT:    li 3, 48466; PC64LE-NEXT:    std 0, 144(1)467; PC64LE-NEXT:    stxvd2x 59, 1, 3 # 16-byte Folded Spill468; PC64LE-NEXT:    li 3, 64469; PC64LE-NEXT:    stxvd2x 60, 1, 3 # 16-byte Folded Spill470; PC64LE-NEXT:    li 3, 80471; PC64LE-NEXT:    vmr 28, 2472; PC64LE-NEXT:    stxvd2x 61, 1, 3 # 16-byte Folded Spill473; PC64LE-NEXT:    li 3, 96474; PC64LE-NEXT:    xxlor 1, 60, 60475; PC64LE-NEXT:    vmr 29, 3476; PC64LE-NEXT:    stxvd2x 62, 1, 3 # 16-byte Folded Spill477; PC64LE-NEXT:    vmr 30, 4478; PC64LE-NEXT:    li 3, 112479; PC64LE-NEXT:    xxlor 2, 62, 62480; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill481; PC64LE-NEXT:    vmr 31, 5482; PC64LE-NEXT:    bl fmod483; PC64LE-NEXT:    nop484; PC64LE-NEXT:    xxlor 59, 1, 1485; PC64LE-NEXT:    xxswapd 1, 60486; PC64LE-NEXT:    xxswapd 2, 62487; PC64LE-NEXT:    bl fmod488; PC64LE-NEXT:    nop489; PC64LE-NEXT:    xxmrghd 62, 59, 1490; PC64LE-NEXT:    xxlor 1, 61, 61491; PC64LE-NEXT:    xxlor 2, 63, 63492; PC64LE-NEXT:    bl fmod493; PC64LE-NEXT:    nop494; PC64LE-NEXT:    xxlor 60, 1, 1495; PC64LE-NEXT:    xxswapd 1, 61496; PC64LE-NEXT:    xxswapd 2, 63497; PC64LE-NEXT:    bl fmod498; PC64LE-NEXT:    nop499; PC64LE-NEXT:    li 3, 112500; PC64LE-NEXT:    vmr 2, 30501; PC64LE-NEXT:    xxmrghd 35, 60, 1502; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload503; PC64LE-NEXT:    li 3, 96504; PC64LE-NEXT:    lxvd2x 62, 1, 3 # 16-byte Folded Reload505; PC64LE-NEXT:    li 3, 80506; PC64LE-NEXT:    lxvd2x 61, 1, 3 # 16-byte Folded Reload507; PC64LE-NEXT:    li 3, 64508; PC64LE-NEXT:    lxvd2x 60, 1, 3 # 16-byte Folded Reload509; PC64LE-NEXT:    li 3, 48510; PC64LE-NEXT:    lxvd2x 59, 1, 3 # 16-byte Folded Reload511; PC64LE-NEXT:    addi 1, 1, 128512; PC64LE-NEXT:    ld 0, 16(1)513; PC64LE-NEXT:    mtlr 0514; PC64LE-NEXT:    blr515;516; PC64LE9-LABEL: constrained_vector_frem_v4f64:517; PC64LE9:       # %bb.0:518; PC64LE9-NEXT:    mflr 0519; PC64LE9-NEXT:    stdu 1, -112(1)520; PC64LE9-NEXT:    std 0, 128(1)521; PC64LE9-NEXT:    stxv 60, 48(1) # 16-byte Folded Spill522; PC64LE9-NEXT:    stxv 62, 80(1) # 16-byte Folded Spill523; PC64LE9-NEXT:    vmr 30, 4524; PC64LE9-NEXT:    xscpsgndp 2, 62, 62525; PC64LE9-NEXT:    vmr 28, 2526; PC64LE9-NEXT:    xscpsgndp 1, 60, 60527; PC64LE9-NEXT:    stxv 59, 32(1) # 16-byte Folded Spill528; PC64LE9-NEXT:    stxv 61, 64(1) # 16-byte Folded Spill529; PC64LE9-NEXT:    stxv 63, 96(1) # 16-byte Folded Spill530; PC64LE9-NEXT:    vmr 31, 5531; PC64LE9-NEXT:    vmr 29, 3532; PC64LE9-NEXT:    bl fmod533; PC64LE9-NEXT:    nop534; PC64LE9-NEXT:    xscpsgndp 59, 1, 1535; PC64LE9-NEXT:    xxswapd 1, 60536; PC64LE9-NEXT:    xxswapd 2, 62537; PC64LE9-NEXT:    bl fmod538; PC64LE9-NEXT:    nop539; PC64LE9-NEXT:    xxmrghd 62, 59, 1540; PC64LE9-NEXT:    xscpsgndp 1, 61, 61541; PC64LE9-NEXT:    xscpsgndp 2, 63, 63542; PC64LE9-NEXT:    bl fmod543; PC64LE9-NEXT:    nop544; PC64LE9-NEXT:    xscpsgndp 60, 1, 1545; PC64LE9-NEXT:    xxswapd 1, 61546; PC64LE9-NEXT:    xxswapd 2, 63547; PC64LE9-NEXT:    bl fmod548; PC64LE9-NEXT:    nop549; PC64LE9-NEXT:    xxmrghd 35, 60, 1550; PC64LE9-NEXT:    vmr 2, 30551; PC64LE9-NEXT:    lxv 63, 96(1) # 16-byte Folded Reload552; PC64LE9-NEXT:    lxv 62, 80(1) # 16-byte Folded Reload553; PC64LE9-NEXT:    lxv 61, 64(1) # 16-byte Folded Reload554; PC64LE9-NEXT:    lxv 60, 48(1) # 16-byte Folded Reload555; PC64LE9-NEXT:    lxv 59, 32(1) # 16-byte Folded Reload556; PC64LE9-NEXT:    addi 1, 1, 112557; PC64LE9-NEXT:    ld 0, 16(1)558; PC64LE9-NEXT:    mtlr 0559; PC64LE9-NEXT:    blr560  %rem = call <4 x double> @llvm.experimental.constrained.frem.v4f64(561           <4 x double> %x,562           <4 x double> %y,563           metadata !"round.dynamic",564           metadata !"fpexcept.strict") #1565  ret <4 x double> %rem566}567 568define <1 x float> @constrained_vector_fmul_v1f32(<1 x float> %x, <1 x float> %y) #0 {569; PC64LE-LABEL: constrained_vector_fmul_v1f32:570; PC64LE:       # %bb.0: # %entry571; PC64LE-NEXT:    xsmulsp 1, 1, 2572; PC64LE-NEXT:    blr573;574; PC64LE9-LABEL: constrained_vector_fmul_v1f32:575; PC64LE9:       # %bb.0: # %entry576; PC64LE9-NEXT:    xsmulsp 1, 1, 2577; PC64LE9-NEXT:    blr578entry:579  %mul = call <1 x float> @llvm.experimental.constrained.fmul.v1f32(580           <1 x float> %x,581           <1 x float> %y,582           metadata !"round.dynamic",583           metadata !"fpexcept.strict") #1584  ret <1 x float> %mul585}586 587define <2 x double> @constrained_vector_fmul_v2f64(<2 x double> %x, <2 x double> %y) #0 {588; PC64LE-LABEL: constrained_vector_fmul_v2f64:589; PC64LE:       # %bb.0: # %entry590; PC64LE-NEXT:    xvmuldp 34, 34, 35591; PC64LE-NEXT:    blr592;593; PC64LE9-LABEL: constrained_vector_fmul_v2f64:594; PC64LE9:       # %bb.0: # %entry595; PC64LE9-NEXT:    xvmuldp 34, 34, 35596; PC64LE9-NEXT:    blr597entry:598  %mul = call <2 x double> @llvm.experimental.constrained.fmul.v2f64(599           <2 x double> %x,600           <2 x double> %y,601           metadata !"round.dynamic",602           metadata !"fpexcept.strict") #1603  ret <2 x double> %mul604}605 606define <3 x float> @constrained_vector_fmul_v3f32(<3 x float> %x, <3 x float> %y) #0 {607; PC64LE-LABEL: constrained_vector_fmul_v3f32:608; PC64LE:       # %bb.0: # %entry609; PC64LE-NEXT:    xxswapd 0, 35610; PC64LE-NEXT:    xxswapd 1, 34611; PC64LE-NEXT:    addis 3, 2, .LCPI12_0@toc@ha612; PC64LE-NEXT:    xscvspdpn 0, 0613; PC64LE-NEXT:    xscvspdpn 1, 1614; PC64LE-NEXT:    xxsldwi 2, 35, 35, 3615; PC64LE-NEXT:    xxsldwi 3, 34, 34, 3616; PC64LE-NEXT:    addi 3, 3, .LCPI12_0@toc@l617; PC64LE-NEXT:    xxsldwi 5, 34, 34, 1618; PC64LE-NEXT:    xxsldwi 4, 35, 35, 1619; PC64LE-NEXT:    xsmulsp 0, 1, 0620; PC64LE-NEXT:    xscvspdpn 1, 2621; PC64LE-NEXT:    xscvspdpn 2, 3622; PC64LE-NEXT:    xsmulsp 1, 2, 1623; PC64LE-NEXT:    xscvdpspn 0, 0624; PC64LE-NEXT:    xscvdpspn 1, 1625; PC64LE-NEXT:    xxmrghw 34, 0, 1626; PC64LE-NEXT:    lxvd2x 0, 0, 3627; PC64LE-NEXT:    xscvspdpn 1, 5628; PC64LE-NEXT:    xxswapd 35, 0629; PC64LE-NEXT:    xscvspdpn 0, 4630; PC64LE-NEXT:    xsmulsp 0, 1, 0631; PC64LE-NEXT:    xscvdpspn 36, 0632; PC64LE-NEXT:    vperm 2, 4, 2, 3633; PC64LE-NEXT:    blr634;635; PC64LE9-LABEL: constrained_vector_fmul_v3f32:636; PC64LE9:       # %bb.0: # %entry637; PC64LE9-NEXT:    xxsldwi 0, 35, 35, 1638; PC64LE9-NEXT:    xxsldwi 1, 34, 34, 1639; PC64LE9-NEXT:    addis 3, 2, .LCPI12_0@toc@ha640; PC64LE9-NEXT:    addi 3, 3, .LCPI12_0@toc@l641; PC64LE9-NEXT:    xxswapd 2, 34642; PC64LE9-NEXT:    xxsldwi 3, 34, 34, 3643; PC64LE9-NEXT:    xscvspdpn 0, 0644; PC64LE9-NEXT:    xscvspdpn 1, 1645; PC64LE9-NEXT:    xscvspdpn 2, 2646; PC64LE9-NEXT:    xscvspdpn 3, 3647; PC64LE9-NEXT:    xsmulsp 0, 1, 0648; PC64LE9-NEXT:    xxswapd 1, 35649; PC64LE9-NEXT:    xscvspdpn 1, 1650; PC64LE9-NEXT:    xsmulsp 1, 2, 1651; PC64LE9-NEXT:    xxsldwi 2, 35, 35, 3652; PC64LE9-NEXT:    xscvdpspn 34, 0653; PC64LE9-NEXT:    lxv 0, 0(3)654; PC64LE9-NEXT:    xscvspdpn 2, 2655; PC64LE9-NEXT:    xsmulsp 2, 3, 2656; PC64LE9-NEXT:    xscvdpspn 1, 1657; PC64LE9-NEXT:    xscvdpspn 2, 2658; PC64LE9-NEXT:    xxmrghw 35, 1, 2659; PC64LE9-NEXT:    xxperm 34, 35, 0660; PC64LE9-NEXT:    blr661entry:662  %mul = call <3 x float> @llvm.experimental.constrained.fmul.v3f32(663           <3 x float> %x,664           <3 x float> %y,665           metadata !"round.dynamic",666           metadata !"fpexcept.strict") #1667  ret <3 x float> %mul668}669 670define <3 x double> @constrained_vector_fmul_v3f64(<3 x double> %x, <3 x double> %y) #0 {671; PC64LE-LABEL: constrained_vector_fmul_v3f64:672; PC64LE:       # %bb.0: # %entry673; PC64LE-NEXT:    xxmrghd 0, 5, 4674; PC64LE-NEXT:    xxmrghd 1, 2, 1675; PC64LE-NEXT:    xsmuldp 3, 3, 6676; PC64LE-NEXT:    xvmuldp 2, 1, 0677; PC64LE-NEXT:    xxswapd 1, 2678; PC64LE-NEXT:    blr679;680; PC64LE9-LABEL: constrained_vector_fmul_v3f64:681; PC64LE9:       # %bb.0: # %entry682; PC64LE9-NEXT:    xxmrghd 0, 5, 4683; PC64LE9-NEXT:    xxmrghd 1, 2, 1684; PC64LE9-NEXT:    xsmuldp 3, 3, 6685; PC64LE9-NEXT:    xvmuldp 2, 1, 0686; PC64LE9-NEXT:    xxswapd 1, 2687; PC64LE9-NEXT:    blr688entry:689  %mul = call <3 x double> @llvm.experimental.constrained.fmul.v3f64(690           <3 x double> %x,691           <3 x double> %y,692           metadata !"round.dynamic",693           metadata !"fpexcept.strict") #1694  ret <3 x double> %mul695}696 697define <4 x double> @constrained_vector_fmul_v4f64(<4 x double> %x, <4 x double> %y) #0 {698; PC64LE-LABEL: constrained_vector_fmul_v4f64:699; PC64LE:       # %bb.0: # %entry700; PC64LE-NEXT:    xvmuldp 35, 35, 37701; PC64LE-NEXT:    xvmuldp 34, 34, 36702; PC64LE-NEXT:    blr703;704; PC64LE9-LABEL: constrained_vector_fmul_v4f64:705; PC64LE9:       # %bb.0: # %entry706; PC64LE9-NEXT:    xvmuldp 35, 35, 37707; PC64LE9-NEXT:    xvmuldp 34, 34, 36708; PC64LE9-NEXT:    blr709entry:710  %mul = call <4 x double> @llvm.experimental.constrained.fmul.v4f64(711           <4 x double> %x,712           <4 x double> %y,713           metadata !"round.dynamic",714           metadata !"fpexcept.strict") #1715  ret <4 x double> %mul716}717 718define <1 x float> @constrained_vector_fadd_v1f32(<1 x float> %x, <1 x float> %y) #0 {719; PC64LE-LABEL: constrained_vector_fadd_v1f32:720; PC64LE:       # %bb.0: # %entry721; PC64LE-NEXT:    xsaddsp 1, 1, 2722; PC64LE-NEXT:    blr723;724; PC64LE9-LABEL: constrained_vector_fadd_v1f32:725; PC64LE9:       # %bb.0: # %entry726; PC64LE9-NEXT:    xsaddsp 1, 1, 2727; PC64LE9-NEXT:    blr728entry:729  %add = call <1 x float> @llvm.experimental.constrained.fadd.v1f32(730           <1 x float> %x,731           <1 x float> %y,732           metadata !"round.dynamic",733           metadata !"fpexcept.strict") #1734  ret <1 x float> %add735}736 737define <2 x double> @constrained_vector_fadd_v2f64(<2 x double> %x, <2 x double> %y) #0 {738; PC64LE-LABEL: constrained_vector_fadd_v2f64:739; PC64LE:       # %bb.0: # %entry740; PC64LE-NEXT:    xvadddp 34, 34, 35741; PC64LE-NEXT:    blr742;743; PC64LE9-LABEL: constrained_vector_fadd_v2f64:744; PC64LE9:       # %bb.0: # %entry745; PC64LE9-NEXT:    xvadddp 34, 34, 35746; PC64LE9-NEXT:    blr747entry:748  %add = call <2 x double> @llvm.experimental.constrained.fadd.v2f64(749           <2 x double> %x,750           <2 x double> %y,751           metadata !"round.dynamic",752           metadata !"fpexcept.strict") #1753  ret <2 x double> %add754}755 756define <3 x float> @constrained_vector_fadd_v3f32(<3 x float> %x, <3 x float> %y) #0 {757; PC64LE-LABEL: constrained_vector_fadd_v3f32:758; PC64LE:       # %bb.0: # %entry759; PC64LE-NEXT:    xxswapd 0, 35760; PC64LE-NEXT:    xxswapd 1, 34761; PC64LE-NEXT:    addis 3, 2, .LCPI17_0@toc@ha762; PC64LE-NEXT:    xscvspdpn 0, 0763; PC64LE-NEXT:    xscvspdpn 1, 1764; PC64LE-NEXT:    xxsldwi 2, 35, 35, 3765; PC64LE-NEXT:    xxsldwi 3, 34, 34, 3766; PC64LE-NEXT:    addi 3, 3, .LCPI17_0@toc@l767; PC64LE-NEXT:    xxsldwi 5, 34, 34, 1768; PC64LE-NEXT:    xxsldwi 4, 35, 35, 1769; PC64LE-NEXT:    xsaddsp 0, 1, 0770; PC64LE-NEXT:    xscvspdpn 1, 2771; PC64LE-NEXT:    xscvspdpn 2, 3772; PC64LE-NEXT:    xsaddsp 1, 2, 1773; PC64LE-NEXT:    xscvdpspn 0, 0774; PC64LE-NEXT:    xscvdpspn 1, 1775; PC64LE-NEXT:    xxmrghw 34, 0, 1776; PC64LE-NEXT:    lxvd2x 0, 0, 3777; PC64LE-NEXT:    xscvspdpn 1, 5778; PC64LE-NEXT:    xxswapd 35, 0779; PC64LE-NEXT:    xscvspdpn 0, 4780; PC64LE-NEXT:    xsaddsp 0, 1, 0781; PC64LE-NEXT:    xscvdpspn 36, 0782; PC64LE-NEXT:    vperm 2, 4, 2, 3783; PC64LE-NEXT:    blr784;785; PC64LE9-LABEL: constrained_vector_fadd_v3f32:786; PC64LE9:       # %bb.0: # %entry787; PC64LE9-NEXT:    xxsldwi 0, 35, 35, 1788; PC64LE9-NEXT:    xxsldwi 1, 34, 34, 1789; PC64LE9-NEXT:    addis 3, 2, .LCPI17_0@toc@ha790; PC64LE9-NEXT:    addi 3, 3, .LCPI17_0@toc@l791; PC64LE9-NEXT:    xxswapd 2, 34792; PC64LE9-NEXT:    xxsldwi 3, 34, 34, 3793; PC64LE9-NEXT:    xscvspdpn 0, 0794; PC64LE9-NEXT:    xscvspdpn 1, 1795; PC64LE9-NEXT:    xscvspdpn 2, 2796; PC64LE9-NEXT:    xscvspdpn 3, 3797; PC64LE9-NEXT:    xsaddsp 0, 1, 0798; PC64LE9-NEXT:    xxswapd 1, 35799; PC64LE9-NEXT:    xscvspdpn 1, 1800; PC64LE9-NEXT:    xsaddsp 1, 2, 1801; PC64LE9-NEXT:    xxsldwi 2, 35, 35, 3802; PC64LE9-NEXT:    xscvdpspn 34, 0803; PC64LE9-NEXT:    lxv 0, 0(3)804; PC64LE9-NEXT:    xscvspdpn 2, 2805; PC64LE9-NEXT:    xsaddsp 2, 3, 2806; PC64LE9-NEXT:    xscvdpspn 1, 1807; PC64LE9-NEXT:    xscvdpspn 2, 2808; PC64LE9-NEXT:    xxmrghw 35, 1, 2809; PC64LE9-NEXT:    xxperm 34, 35, 0810; PC64LE9-NEXT:    blr811entry:812  %add = call <3 x float> @llvm.experimental.constrained.fadd.v3f32(813           <3 x float> %x,814           <3 x float> %y,815           metadata !"round.dynamic",816           metadata !"fpexcept.strict") #1817  ret <3 x float> %add818}819 820define <3 x double> @constrained_vector_fadd_v3f64(<3 x double> %x, <3 x double> %y) #0 {821; PC64LE-LABEL: constrained_vector_fadd_v3f64:822; PC64LE:       # %bb.0: # %entry823; PC64LE-NEXT:    xxmrghd 0, 5, 4824; PC64LE-NEXT:    xxmrghd 1, 2, 1825; PC64LE-NEXT:    xsadddp 3, 3, 6826; PC64LE-NEXT:    xvadddp 2, 1, 0827; PC64LE-NEXT:    xxswapd 1, 2828; PC64LE-NEXT:    blr829;830; PC64LE9-LABEL: constrained_vector_fadd_v3f64:831; PC64LE9:       # %bb.0: # %entry832; PC64LE9-NEXT:    xxmrghd 0, 5, 4833; PC64LE9-NEXT:    xxmrghd 1, 2, 1834; PC64LE9-NEXT:    xsadddp 3, 3, 6835; PC64LE9-NEXT:    xvadddp 2, 1, 0836; PC64LE9-NEXT:    xxswapd 1, 2837; PC64LE9-NEXT:    blr838entry:839  %add = call <3 x double> @llvm.experimental.constrained.fadd.v3f64(840           <3 x double> %x,841           <3 x double> %y,842           metadata !"round.dynamic",843           metadata !"fpexcept.strict") #1844  ret <3 x double> %add845}846 847define <4 x double> @constrained_vector_fadd_v4f64(<4 x double> %x, <4 x double> %y) #0 {848; PC64LE-LABEL: constrained_vector_fadd_v4f64:849; PC64LE:       # %bb.0: # %entry850; PC64LE-NEXT:    xvadddp 35, 35, 37851; PC64LE-NEXT:    xvadddp 34, 34, 36852; PC64LE-NEXT:    blr853;854; PC64LE9-LABEL: constrained_vector_fadd_v4f64:855; PC64LE9:       # %bb.0: # %entry856; PC64LE9-NEXT:    xvadddp 35, 35, 37857; PC64LE9-NEXT:    xvadddp 34, 34, 36858; PC64LE9-NEXT:    blr859entry:860  %add = call <4 x double> @llvm.experimental.constrained.fadd.v4f64(861           <4 x double> %x,862           <4 x double> %y,863           metadata !"round.dynamic",864           metadata !"fpexcept.strict") #1865  ret <4 x double> %add866}867 868define <1 x float> @constrained_vector_fsub_v1f32(<1 x float> %x, <1 x float> %y) #0 {869; PC64LE-LABEL: constrained_vector_fsub_v1f32:870; PC64LE:       # %bb.0: # %entry871; PC64LE-NEXT:    xssubsp 1, 1, 2872; PC64LE-NEXT:    blr873;874; PC64LE9-LABEL: constrained_vector_fsub_v1f32:875; PC64LE9:       # %bb.0: # %entry876; PC64LE9-NEXT:    xssubsp 1, 1, 2877; PC64LE9-NEXT:    blr878entry:879  %sub = call <1 x float> @llvm.experimental.constrained.fsub.v1f32(880           <1 x float> %x,881           <1 x float> %y,882           metadata !"round.dynamic",883           metadata !"fpexcept.strict") #1884  ret <1 x float> %sub885}886 887define <2 x double> @constrained_vector_fsub_v2f64(<2 x double> %x, <2 x double> %y) #0 {888; PC64LE-LABEL: constrained_vector_fsub_v2f64:889; PC64LE:       # %bb.0: # %entry890; PC64LE-NEXT:    xvsubdp 34, 34, 35891; PC64LE-NEXT:    blr892;893; PC64LE9-LABEL: constrained_vector_fsub_v2f64:894; PC64LE9:       # %bb.0: # %entry895; PC64LE9-NEXT:    xvsubdp 34, 34, 35896; PC64LE9-NEXT:    blr897entry:898  %sub = call <2 x double> @llvm.experimental.constrained.fsub.v2f64(899           <2 x double> %x,900           <2 x double> %y,901           metadata !"round.dynamic",902           metadata !"fpexcept.strict") #1903  ret <2 x double> %sub904}905 906define <3 x float> @constrained_vector_fsub_v3f32(<3 x float> %x, <3 x float> %y) #0 {907; PC64LE-LABEL: constrained_vector_fsub_v3f32:908; PC64LE:       # %bb.0: # %entry909; PC64LE-NEXT:    xxswapd 0, 35910; PC64LE-NEXT:    xxswapd 1, 34911; PC64LE-NEXT:    addis 3, 2, .LCPI22_0@toc@ha912; PC64LE-NEXT:    xscvspdpn 0, 0913; PC64LE-NEXT:    xscvspdpn 1, 1914; PC64LE-NEXT:    xxsldwi 2, 35, 35, 3915; PC64LE-NEXT:    xxsldwi 3, 34, 34, 3916; PC64LE-NEXT:    addi 3, 3, .LCPI22_0@toc@l917; PC64LE-NEXT:    xxsldwi 5, 34, 34, 1918; PC64LE-NEXT:    xxsldwi 4, 35, 35, 1919; PC64LE-NEXT:    xssubsp 0, 1, 0920; PC64LE-NEXT:    xscvspdpn 1, 2921; PC64LE-NEXT:    xscvspdpn 2, 3922; PC64LE-NEXT:    xssubsp 1, 2, 1923; PC64LE-NEXT:    xscvdpspn 0, 0924; PC64LE-NEXT:    xscvdpspn 1, 1925; PC64LE-NEXT:    xxmrghw 34, 0, 1926; PC64LE-NEXT:    lxvd2x 0, 0, 3927; PC64LE-NEXT:    xscvspdpn 1, 5928; PC64LE-NEXT:    xxswapd 35, 0929; PC64LE-NEXT:    xscvspdpn 0, 4930; PC64LE-NEXT:    xssubsp 0, 1, 0931; PC64LE-NEXT:    xscvdpspn 36, 0932; PC64LE-NEXT:    vperm 2, 4, 2, 3933; PC64LE-NEXT:    blr934;935; PC64LE9-LABEL: constrained_vector_fsub_v3f32:936; PC64LE9:       # %bb.0: # %entry937; PC64LE9-NEXT:    xxsldwi 0, 35, 35, 1938; PC64LE9-NEXT:    xxsldwi 1, 34, 34, 1939; PC64LE9-NEXT:    addis 3, 2, .LCPI22_0@toc@ha940; PC64LE9-NEXT:    addi 3, 3, .LCPI22_0@toc@l941; PC64LE9-NEXT:    xxswapd 2, 34942; PC64LE9-NEXT:    xxsldwi 3, 34, 34, 3943; PC64LE9-NEXT:    xscvspdpn 0, 0944; PC64LE9-NEXT:    xscvspdpn 1, 1945; PC64LE9-NEXT:    xscvspdpn 2, 2946; PC64LE9-NEXT:    xscvspdpn 3, 3947; PC64LE9-NEXT:    xssubsp 0, 1, 0948; PC64LE9-NEXT:    xxswapd 1, 35949; PC64LE9-NEXT:    xscvspdpn 1, 1950; PC64LE9-NEXT:    xssubsp 1, 2, 1951; PC64LE9-NEXT:    xxsldwi 2, 35, 35, 3952; PC64LE9-NEXT:    xscvdpspn 34, 0953; PC64LE9-NEXT:    lxv 0, 0(3)954; PC64LE9-NEXT:    xscvspdpn 2, 2955; PC64LE9-NEXT:    xssubsp 2, 3, 2956; PC64LE9-NEXT:    xscvdpspn 1, 1957; PC64LE9-NEXT:    xscvdpspn 2, 2958; PC64LE9-NEXT:    xxmrghw 35, 1, 2959; PC64LE9-NEXT:    xxperm 34, 35, 0960; PC64LE9-NEXT:    blr961entry:962  %sub = call <3 x float> @llvm.experimental.constrained.fsub.v3f32(963           <3 x float> %x,964           <3 x float> %y,965           metadata !"round.dynamic",966           metadata !"fpexcept.strict") #1967  ret <3 x float> %sub968}969 970define <3 x double> @constrained_vector_fsub_v3f64(<3 x double> %x, <3 x double> %y) #0 {971; PC64LE-LABEL: constrained_vector_fsub_v3f64:972; PC64LE:       # %bb.0: # %entry973; PC64LE-NEXT:    xxmrghd 0, 5, 4974; PC64LE-NEXT:    xxmrghd 1, 2, 1975; PC64LE-NEXT:    xssubdp 3, 3, 6976; PC64LE-NEXT:    xvsubdp 2, 1, 0977; PC64LE-NEXT:    xxswapd 1, 2978; PC64LE-NEXT:    blr979;980; PC64LE9-LABEL: constrained_vector_fsub_v3f64:981; PC64LE9:       # %bb.0: # %entry982; PC64LE9-NEXT:    xxmrghd 0, 5, 4983; PC64LE9-NEXT:    xxmrghd 1, 2, 1984; PC64LE9-NEXT:    xssubdp 3, 3, 6985; PC64LE9-NEXT:    xvsubdp 2, 1, 0986; PC64LE9-NEXT:    xxswapd 1, 2987; PC64LE9-NEXT:    blr988entry:989  %sub = call <3 x double> @llvm.experimental.constrained.fsub.v3f64(990           <3 x double> %x,991           <3 x double> %y,992           metadata !"round.dynamic",993           metadata !"fpexcept.strict") #1994  ret <3 x double> %sub995}996 997define <4 x double> @constrained_vector_fsub_v4f64(<4 x double> %x, <4 x double> %y) #0 {998; PC64LE-LABEL: constrained_vector_fsub_v4f64:999; PC64LE:       # %bb.0: # %entry1000; PC64LE-NEXT:    xvsubdp 35, 35, 371001; PC64LE-NEXT:    xvsubdp 34, 34, 361002; PC64LE-NEXT:    blr1003;1004; PC64LE9-LABEL: constrained_vector_fsub_v4f64:1005; PC64LE9:       # %bb.0: # %entry1006; PC64LE9-NEXT:    xvsubdp 35, 35, 371007; PC64LE9-NEXT:    xvsubdp 34, 34, 361008; PC64LE9-NEXT:    blr1009entry:1010  %sub = call <4 x double> @llvm.experimental.constrained.fsub.v4f64(1011           <4 x double> %x,1012           <4 x double> %y,1013           metadata !"round.dynamic",1014           metadata !"fpexcept.strict") #11015  ret <4 x double> %sub1016}1017 1018define <1 x float> @constrained_vector_sqrt_v1f32(<1 x float> %x) #0 {1019; PC64LE-LABEL: constrained_vector_sqrt_v1f32:1020; PC64LE:       # %bb.0: # %entry1021; PC64LE-NEXT:    xssqrtsp 1, 11022; PC64LE-NEXT:    blr1023;1024; PC64LE9-LABEL: constrained_vector_sqrt_v1f32:1025; PC64LE9:       # %bb.0: # %entry1026; PC64LE9-NEXT:    xssqrtsp 1, 11027; PC64LE9-NEXT:    blr1028entry:1029  %sqrt = call <1 x float> @llvm.experimental.constrained.sqrt.v1f32(1030                              <1 x float> %x,1031                              metadata !"round.dynamic",1032                              metadata !"fpexcept.strict") #11033  ret <1 x float> %sqrt1034}1035 1036define <2 x double> @constrained_vector_sqrt_v2f64(<2 x double> %x) #0 {1037; PC64LE-LABEL: constrained_vector_sqrt_v2f64:1038; PC64LE:       # %bb.0: # %entry1039; PC64LE-NEXT:    xvsqrtdp 34, 341040; PC64LE-NEXT:    blr1041;1042; PC64LE9-LABEL: constrained_vector_sqrt_v2f64:1043; PC64LE9:       # %bb.0: # %entry1044; PC64LE9-NEXT:    xvsqrtdp 34, 341045; PC64LE9-NEXT:    blr1046entry:1047  %sqrt = call <2 x double> @llvm.experimental.constrained.sqrt.v2f64(1048                              <2 x double> %x,1049                              metadata !"round.dynamic",1050                              metadata !"fpexcept.strict") #11051  ret <2 x double> %sqrt1052}1053 1054define <3 x float> @constrained_vector_sqrt_v3f32(<3 x float> %x) #0 {1055; PC64LE-LABEL: constrained_vector_sqrt_v3f32:1056; PC64LE:       # %bb.0: # %entry1057; PC64LE-NEXT:    xxswapd 0, 341058; PC64LE-NEXT:    xxsldwi 1, 34, 34, 31059; PC64LE-NEXT:    addis 3, 2, .LCPI27_0@toc@ha1060; PC64LE-NEXT:    xscvspdpn 0, 01061; PC64LE-NEXT:    xscvspdpn 1, 11062; PC64LE-NEXT:    addi 3, 3, .LCPI27_0@toc@l1063; PC64LE-NEXT:    xxsldwi 2, 34, 34, 11064; PC64LE-NEXT:    xssqrtsp 0, 01065; PC64LE-NEXT:    xssqrtsp 1, 11066; PC64LE-NEXT:    xscvdpspn 1, 11067; PC64LE-NEXT:    xscvdpspn 0, 01068; PC64LE-NEXT:    xxmrghw 34, 0, 11069; PC64LE-NEXT:    lxvd2x 0, 0, 31070; PC64LE-NEXT:    xxswapd 35, 01071; PC64LE-NEXT:    xscvspdpn 0, 21072; PC64LE-NEXT:    xssqrtsp 0, 01073; PC64LE-NEXT:    xscvdpspn 36, 01074; PC64LE-NEXT:    vperm 2, 4, 2, 31075; PC64LE-NEXT:    blr1076;1077; PC64LE9-LABEL: constrained_vector_sqrt_v3f32:1078; PC64LE9:       # %bb.0: # %entry1079; PC64LE9-NEXT:    xxswapd 1, 341080; PC64LE9-NEXT:    xxsldwi 2, 34, 34, 31081; PC64LE9-NEXT:    addis 3, 2, .LCPI27_0@toc@ha1082; PC64LE9-NEXT:    addi 3, 3, .LCPI27_0@toc@l1083; PC64LE9-NEXT:    xxsldwi 0, 34, 34, 11084; PC64LE9-NEXT:    xscvspdpn 1, 11085; PC64LE9-NEXT:    xscvspdpn 2, 21086; PC64LE9-NEXT:    xscvspdpn 0, 01087; PC64LE9-NEXT:    xssqrtsp 1, 11088; PC64LE9-NEXT:    xssqrtsp 2, 21089; PC64LE9-NEXT:    xssqrtsp 0, 01090; PC64LE9-NEXT:    xscvdpspn 2, 21091; PC64LE9-NEXT:    xscvdpspn 1, 11092; PC64LE9-NEXT:    xscvdpspn 34, 01093; PC64LE9-NEXT:    xxmrghw 35, 1, 21094; PC64LE9-NEXT:    lxv 1, 0(3)1095; PC64LE9-NEXT:    xxperm 34, 35, 11096; PC64LE9-NEXT:    blr1097entry:1098  %sqrt = call <3 x float> @llvm.experimental.constrained.sqrt.v3f32(1099                              <3 x float> %x,1100                              metadata !"round.dynamic",1101                              metadata !"fpexcept.strict") #11102  ret <3 x float> %sqrt1103}1104 1105define <3 x double> @constrained_vector_sqrt_v3f64(<3 x double> %x) #0 {1106; PC64LE-LABEL: constrained_vector_sqrt_v3f64:1107; PC64LE:       # %bb.0: # %entry1108; PC64LE-NEXT:    xxmrghd 0, 2, 11109; PC64LE-NEXT:    xssqrtdp 3, 31110; PC64LE-NEXT:    xvsqrtdp 2, 01111; PC64LE-NEXT:    xxswapd 1, 21112; PC64LE-NEXT:    blr1113;1114; PC64LE9-LABEL: constrained_vector_sqrt_v3f64:1115; PC64LE9:       # %bb.0: # %entry1116; PC64LE9-NEXT:    xxmrghd 0, 2, 11117; PC64LE9-NEXT:    xssqrtdp 3, 31118; PC64LE9-NEXT:    xvsqrtdp 2, 01119; PC64LE9-NEXT:    xxswapd 1, 21120; PC64LE9-NEXT:    blr1121entry:1122  %sqrt = call <3 x double> @llvm.experimental.constrained.sqrt.v3f64(1123                          <3 x double> %x,1124                          metadata !"round.dynamic",1125                          metadata !"fpexcept.strict") #11126  ret <3 x double> %sqrt1127}1128 1129define <4 x double> @constrained_vector_sqrt_v4f64(<4 x double> %x) #0 {1130; PC64LE-LABEL: constrained_vector_sqrt_v4f64:1131; PC64LE:       # %bb.0: # %entry1132; PC64LE-NEXT:    xvsqrtdp 35, 351133; PC64LE-NEXT:    xvsqrtdp 34, 341134; PC64LE-NEXT:    blr1135;1136; PC64LE9-LABEL: constrained_vector_sqrt_v4f64:1137; PC64LE9:       # %bb.0: # %entry1138; PC64LE9-NEXT:    xvsqrtdp 35, 351139; PC64LE9-NEXT:    xvsqrtdp 34, 341140; PC64LE9-NEXT:    blr1141 entry:1142  %sqrt = call <4 x double> @llvm.experimental.constrained.sqrt.v4f64(1143                              <4 x double> %x,1144                              metadata !"round.dynamic",1145                              metadata !"fpexcept.strict") #11146  ret <4 x double> %sqrt1147}1148 1149define <1 x float> @constrained_vector_pow_v1f32(<1 x float> %x, <1 x float> %y) #0 {1150; PC64LE-LABEL: constrained_vector_pow_v1f32:1151; PC64LE:       # %bb.0: # %entry1152; PC64LE-NEXT:    mflr 01153; PC64LE-NEXT:    stdu 1, -32(1)1154; PC64LE-NEXT:    std 0, 48(1)1155; PC64LE-NEXT:    bl powf1156; PC64LE-NEXT:    nop1157; PC64LE-NEXT:    addi 1, 1, 321158; PC64LE-NEXT:    ld 0, 16(1)1159; PC64LE-NEXT:    mtlr 01160; PC64LE-NEXT:    blr1161;1162; PC64LE9-LABEL: constrained_vector_pow_v1f32:1163; PC64LE9:       # %bb.0: # %entry1164; PC64LE9-NEXT:    mflr 01165; PC64LE9-NEXT:    stdu 1, -32(1)1166; PC64LE9-NEXT:    std 0, 48(1)1167; PC64LE9-NEXT:    bl powf1168; PC64LE9-NEXT:    nop1169; PC64LE9-NEXT:    addi 1, 1, 321170; PC64LE9-NEXT:    ld 0, 16(1)1171; PC64LE9-NEXT:    mtlr 01172; PC64LE9-NEXT:    blr1173entry:1174  %pow = call <1 x float> @llvm.experimental.constrained.pow.v1f32(1175                             <1 x float> %x,1176                             <1 x float> %y,1177                             metadata !"round.dynamic",1178                             metadata !"fpexcept.strict") #11179  ret <1 x float> %pow1180}1181 1182define <2 x double> @constrained_vector_pow_v2f64(<2 x double> %x, <2 x double> %y) #0 {1183; PC64LE-LABEL: constrained_vector_pow_v2f64:1184; PC64LE:       # %bb.0: # %entry1185; PC64LE-NEXT:    mflr 01186; PC64LE-NEXT:    stdu 1, -96(1)1187; PC64LE-NEXT:    li 3, 481188; PC64LE-NEXT:    std 0, 112(1)1189; PC64LE-NEXT:    stxvd2x 61, 1, 3 # 16-byte Folded Spill1190; PC64LE-NEXT:    li 3, 641191; PC64LE-NEXT:    stxvd2x 62, 1, 3 # 16-byte Folded Spill1192; PC64LE-NEXT:    li 3, 801193; PC64LE-NEXT:    vmr 30, 21194; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill1195; PC64LE-NEXT:    vmr 31, 31196; PC64LE-NEXT:    xxlor 1, 62, 621197; PC64LE-NEXT:    xxlor 2, 63, 631198; PC64LE-NEXT:    bl pow1199; PC64LE-NEXT:    nop1200; PC64LE-NEXT:    xxlor 61, 1, 11201; PC64LE-NEXT:    xxswapd 1, 621202; PC64LE-NEXT:    xxswapd 2, 631203; PC64LE-NEXT:    bl pow1204; PC64LE-NEXT:    nop1205; PC64LE-NEXT:    li 3, 801206; PC64LE-NEXT:    xxmrghd 34, 61, 11207; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload1208; PC64LE-NEXT:    li 3, 641209; PC64LE-NEXT:    lxvd2x 62, 1, 3 # 16-byte Folded Reload1210; PC64LE-NEXT:    li 3, 481211; PC64LE-NEXT:    lxvd2x 61, 1, 3 # 16-byte Folded Reload1212; PC64LE-NEXT:    addi 1, 1, 961213; PC64LE-NEXT:    ld 0, 16(1)1214; PC64LE-NEXT:    mtlr 01215; PC64LE-NEXT:    blr1216;1217; PC64LE9-LABEL: constrained_vector_pow_v2f64:1218; PC64LE9:       # %bb.0: # %entry1219; PC64LE9-NEXT:    mflr 01220; PC64LE9-NEXT:    stdu 1, -80(1)1221; PC64LE9-NEXT:    std 0, 96(1)1222; PC64LE9-NEXT:    stxv 62, 48(1) # 16-byte Folded Spill1223; PC64LE9-NEXT:    stxv 63, 64(1) # 16-byte Folded Spill1224; PC64LE9-NEXT:    vmr 31, 31225; PC64LE9-NEXT:    xscpsgndp 2, 63, 631226; PC64LE9-NEXT:    vmr 30, 21227; PC64LE9-NEXT:    xscpsgndp 1, 62, 621228; PC64LE9-NEXT:    stxv 61, 32(1) # 16-byte Folded Spill1229; PC64LE9-NEXT:    bl pow1230; PC64LE9-NEXT:    nop1231; PC64LE9-NEXT:    xscpsgndp 61, 1, 11232; PC64LE9-NEXT:    xxswapd 1, 621233; PC64LE9-NEXT:    xxswapd 2, 631234; PC64LE9-NEXT:    bl pow1235; PC64LE9-NEXT:    nop1236; PC64LE9-NEXT:    xxmrghd 34, 61, 11237; PC64LE9-NEXT:    lxv 63, 64(1) # 16-byte Folded Reload1238; PC64LE9-NEXT:    lxv 62, 48(1) # 16-byte Folded Reload1239; PC64LE9-NEXT:    lxv 61, 32(1) # 16-byte Folded Reload1240; PC64LE9-NEXT:    addi 1, 1, 801241; PC64LE9-NEXT:    ld 0, 16(1)1242; PC64LE9-NEXT:    mtlr 01243; PC64LE9-NEXT:    blr1244entry:1245  %pow = call <2 x double> @llvm.experimental.constrained.pow.v2f64(1246                             <2 x double> %x,1247                             <2 x double> %y,1248                             metadata !"round.dynamic",1249                             metadata !"fpexcept.strict") #11250  ret <2 x double> %pow1251}1252 1253define <3 x float> @constrained_vector_pow_v3f32(<3 x float> %x, <3 x float> %y) #0 {1254; PC64LE-LABEL: constrained_vector_pow_v3f32:1255; PC64LE:       # %bb.0: # %entry1256; PC64LE-NEXT:    mflr 01257; PC64LE-NEXT:    stdu 1, -96(1)1258; PC64LE-NEXT:    xxsldwi 0, 34, 34, 11259; PC64LE-NEXT:    xxsldwi 2, 35, 35, 11260; PC64LE-NEXT:    li 3, 481261; PC64LE-NEXT:    std 0, 112(1)1262; PC64LE-NEXT:    stfd 30, 80(1) # 8-byte Folded Spill1263; PC64LE-NEXT:    stfd 31, 88(1) # 8-byte Folded Spill1264; PC64LE-NEXT:    xscvspdpn 1, 01265; PC64LE-NEXT:    xscvspdpn 2, 21266; PC64LE-NEXT:    stxvd2x 62, 1, 3 # 16-byte Folded Spill1267; PC64LE-NEXT:    li 3, 641268; PC64LE-NEXT:    vmr 30, 21269; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill1270; PC64LE-NEXT:    vmr 31, 31271; PC64LE-NEXT:    bl powf1272; PC64LE-NEXT:    nop1273; PC64LE-NEXT:    xxswapd 0, 621274; PC64LE-NEXT:    xxswapd 2, 631275; PC64LE-NEXT:    fmr 31, 11276; PC64LE-NEXT:    xscvspdpn 1, 01277; PC64LE-NEXT:    xscvspdpn 2, 21278; PC64LE-NEXT:    bl powf1279; PC64LE-NEXT:    nop1280; PC64LE-NEXT:    xxsldwi 0, 62, 62, 31281; PC64LE-NEXT:    xxsldwi 2, 63, 63, 31282; PC64LE-NEXT:    fmr 30, 11283; PC64LE-NEXT:    xscvspdpn 1, 01284; PC64LE-NEXT:    xscvspdpn 2, 21285; PC64LE-NEXT:    bl powf1286; PC64LE-NEXT:    nop1287; PC64LE-NEXT:    xscvdpspn 0, 11288; PC64LE-NEXT:    xscvdpspn 1, 301289; PC64LE-NEXT:    addis 3, 2, .LCPI32_0@toc@ha1290; PC64LE-NEXT:    lfd 30, 80(1) # 8-byte Folded Reload1291; PC64LE-NEXT:    xscvdpspn 36, 311292; PC64LE-NEXT:    lfd 31, 88(1) # 8-byte Folded Reload1293; PC64LE-NEXT:    addi 3, 3, .LCPI32_0@toc@l1294; PC64LE-NEXT:    xxmrghw 34, 1, 01295; PC64LE-NEXT:    lxvd2x 0, 0, 31296; PC64LE-NEXT:    li 3, 641297; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload1298; PC64LE-NEXT:    li 3, 481299; PC64LE-NEXT:    lxvd2x 62, 1, 3 # 16-byte Folded Reload1300; PC64LE-NEXT:    xxswapd 35, 01301; PC64LE-NEXT:    vperm 2, 4, 2, 31302; PC64LE-NEXT:    addi 1, 1, 961303; PC64LE-NEXT:    ld 0, 16(1)1304; PC64LE-NEXT:    mtlr 01305; PC64LE-NEXT:    blr1306;1307; PC64LE9-LABEL: constrained_vector_pow_v3f32:1308; PC64LE9:       # %bb.0: # %entry1309; PC64LE9-NEXT:    mflr 01310; PC64LE9-NEXT:    stdu 1, -80(1)1311; PC64LE9-NEXT:    xxsldwi 0, 34, 34, 11312; PC64LE9-NEXT:    std 0, 96(1)1313; PC64LE9-NEXT:    stfd 30, 64(1) # 8-byte Folded Spill1314; PC64LE9-NEXT:    stxv 62, 32(1) # 16-byte Folded Spill1315; PC64LE9-NEXT:    stfd 31, 72(1) # 8-byte Folded Spill1316; PC64LE9-NEXT:    stxv 63, 48(1) # 16-byte Folded Spill1317; PC64LE9-NEXT:    xscvspdpn 1, 01318; PC64LE9-NEXT:    xxsldwi 0, 35, 35, 11319; PC64LE9-NEXT:    vmr 31, 31320; PC64LE9-NEXT:    vmr 30, 21321; PC64LE9-NEXT:    xscvspdpn 2, 01322; PC64LE9-NEXT:    bl powf1323; PC64LE9-NEXT:    nop1324; PC64LE9-NEXT:    xxswapd 0, 621325; PC64LE9-NEXT:    fmr 31, 11326; PC64LE9-NEXT:    xscvspdpn 1, 01327; PC64LE9-NEXT:    xxswapd 0, 631328; PC64LE9-NEXT:    xscvspdpn 2, 01329; PC64LE9-NEXT:    bl powf1330; PC64LE9-NEXT:    nop1331; PC64LE9-NEXT:    xxsldwi 0, 62, 62, 31332; PC64LE9-NEXT:    fmr 30, 11333; PC64LE9-NEXT:    xscvspdpn 1, 01334; PC64LE9-NEXT:    xxsldwi 0, 63, 63, 31335; PC64LE9-NEXT:    xscvspdpn 2, 01336; PC64LE9-NEXT:    bl powf1337; PC64LE9-NEXT:    nop1338; PC64LE9-NEXT:    xscvdpspn 0, 11339; PC64LE9-NEXT:    xscvdpspn 1, 301340; PC64LE9-NEXT:    addis 3, 2, .LCPI32_0@toc@ha1341; PC64LE9-NEXT:    xscvdpspn 34, 311342; PC64LE9-NEXT:    lxv 63, 48(1) # 16-byte Folded Reload1343; PC64LE9-NEXT:    lxv 62, 32(1) # 16-byte Folded Reload1344; PC64LE9-NEXT:    lfd 31, 72(1) # 8-byte Folded Reload1345; PC64LE9-NEXT:    addi 3, 3, .LCPI32_0@toc@l1346; PC64LE9-NEXT:    lfd 30, 64(1) # 8-byte Folded Reload1347; PC64LE9-NEXT:    xxmrghw 35, 1, 01348; PC64LE9-NEXT:    lxv 0, 0(3)1349; PC64LE9-NEXT:    xxperm 34, 35, 01350; PC64LE9-NEXT:    addi 1, 1, 801351; PC64LE9-NEXT:    ld 0, 16(1)1352; PC64LE9-NEXT:    mtlr 01353; PC64LE9-NEXT:    blr1354entry:1355  %pow = call <3 x float> @llvm.experimental.constrained.pow.v3f32(1356                             <3 x float> %x,1357                             <3 x float> %y,1358                             metadata !"round.dynamic",1359                             metadata !"fpexcept.strict") #11360  ret <3 x float> %pow1361}1362 1363define <3 x double> @constrained_vector_pow_v3f64(<3 x double> %x, <3 x double> %y) #0 {1364; PC64LE-LABEL: constrained_vector_pow_v3f64:1365; PC64LE:       # %bb.0: # %entry1366; PC64LE-NEXT:    mflr 01367; PC64LE-NEXT:    stdu 1, -96(1)1368; PC64LE-NEXT:    std 0, 112(1)1369; PC64LE-NEXT:    stfd 28, 64(1) # 8-byte Folded Spill1370; PC64LE-NEXT:    fmr 28, 21371; PC64LE-NEXT:    fmr 2, 41372; PC64LE-NEXT:    li 3, 481373; PC64LE-NEXT:    stfd 29, 72(1) # 8-byte Folded Spill1374; PC64LE-NEXT:    stfd 30, 80(1) # 8-byte Folded Spill1375; PC64LE-NEXT:    fmr 30, 51376; PC64LE-NEXT:    stfd 31, 88(1) # 8-byte Folded Spill1377; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill1378; PC64LE-NEXT:    fmr 31, 61379; PC64LE-NEXT:    fmr 29, 31380; PC64LE-NEXT:    bl pow1381; PC64LE-NEXT:    nop1382; PC64LE-NEXT:    xxlor 63, 1, 11383; PC64LE-NEXT:    fmr 1, 281384; PC64LE-NEXT:    fmr 2, 301385; PC64LE-NEXT:    bl pow1386; PC64LE-NEXT:    nop1387; PC64LE-NEXT:    xxmrghd 63, 1, 631388; PC64LE-NEXT:    fmr 1, 291389; PC64LE-NEXT:    fmr 2, 311390; PC64LE-NEXT:    bl pow1391; PC64LE-NEXT:    nop1392; PC64LE-NEXT:    li 3, 481393; PC64LE-NEXT:    fmr 3, 11394; PC64LE-NEXT:    xxswapd 1, 631395; PC64LE-NEXT:    lfd 31, 88(1) # 8-byte Folded Reload1396; PC64LE-NEXT:    xxlor 2, 63, 631397; PC64LE-NEXT:    lfd 30, 80(1) # 8-byte Folded Reload1398; PC64LE-NEXT:    lfd 29, 72(1) # 8-byte Folded Reload1399; PC64LE-NEXT:    lfd 28, 64(1) # 8-byte Folded Reload1400; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload1401; PC64LE-NEXT:    addi 1, 1, 961402; PC64LE-NEXT:    ld 0, 16(1)1403; PC64LE-NEXT:    mtlr 01404; PC64LE-NEXT:    blr1405;1406; PC64LE9-LABEL: constrained_vector_pow_v3f64:1407; PC64LE9:       # %bb.0: # %entry1408; PC64LE9-NEXT:    mflr 01409; PC64LE9-NEXT:    stdu 1, -80(1)1410; PC64LE9-NEXT:    std 0, 96(1)1411; PC64LE9-NEXT:    stfd 28, 48(1) # 8-byte Folded Spill1412; PC64LE9-NEXT:    stxv 63, 32(1) # 16-byte Folded Spill1413; PC64LE9-NEXT:    fmr 28, 21414; PC64LE9-NEXT:    fmr 2, 41415; PC64LE9-NEXT:    stfd 29, 56(1) # 8-byte Folded Spill1416; PC64LE9-NEXT:    stfd 30, 64(1) # 8-byte Folded Spill1417; PC64LE9-NEXT:    stfd 31, 72(1) # 8-byte Folded Spill1418; PC64LE9-NEXT:    fmr 31, 61419; PC64LE9-NEXT:    fmr 30, 51420; PC64LE9-NEXT:    fmr 29, 31421; PC64LE9-NEXT:    bl pow1422; PC64LE9-NEXT:    nop1423; PC64LE9-NEXT:    xscpsgndp 63, 1, 11424; PC64LE9-NEXT:    fmr 1, 281425; PC64LE9-NEXT:    fmr 2, 301426; PC64LE9-NEXT:    bl pow1427; PC64LE9-NEXT:    nop1428; PC64LE9-NEXT:    xxmrghd 63, 1, 631429; PC64LE9-NEXT:    fmr 1, 291430; PC64LE9-NEXT:    fmr 2, 311431; PC64LE9-NEXT:    bl pow1432; PC64LE9-NEXT:    nop1433; PC64LE9-NEXT:    fmr 3, 11434; PC64LE9-NEXT:    xxswapd 1, 631435; PC64LE9-NEXT:    xscpsgndp 2, 63, 631436; PC64LE9-NEXT:    lxv 63, 32(1) # 16-byte Folded Reload1437; PC64LE9-NEXT:    lfd 31, 72(1) # 8-byte Folded Reload1438; PC64LE9-NEXT:    lfd 30, 64(1) # 8-byte Folded Reload1439; PC64LE9-NEXT:    lfd 29, 56(1) # 8-byte Folded Reload1440; PC64LE9-NEXT:    lfd 28, 48(1) # 8-byte Folded Reload1441; PC64LE9-NEXT:    addi 1, 1, 801442; PC64LE9-NEXT:    ld 0, 16(1)1443; PC64LE9-NEXT:    mtlr 01444; PC64LE9-NEXT:    blr1445entry:1446  %pow = call <3 x double> @llvm.experimental.constrained.pow.v3f64(1447                          <3 x double> %x,1448                          <3 x double> %y,1449                          metadata !"round.dynamic",1450                          metadata !"fpexcept.strict") #11451  ret <3 x double> %pow1452}1453 1454define <4 x double> @constrained_vector_pow_v4f64(<4 x double> %x, <4 x double> %y) #0 {1455; PC64LE-LABEL: constrained_vector_pow_v4f64:1456; PC64LE:       # %bb.0: # %entry1457; PC64LE-NEXT:    mflr 01458; PC64LE-NEXT:    stdu 1, -128(1)1459; PC64LE-NEXT:    li 3, 481460; PC64LE-NEXT:    std 0, 144(1)1461; PC64LE-NEXT:    stxvd2x 59, 1, 3 # 16-byte Folded Spill1462; PC64LE-NEXT:    li 3, 641463; PC64LE-NEXT:    stxvd2x 60, 1, 3 # 16-byte Folded Spill1464; PC64LE-NEXT:    li 3, 801465; PC64LE-NEXT:    vmr 28, 21466; PC64LE-NEXT:    stxvd2x 61, 1, 3 # 16-byte Folded Spill1467; PC64LE-NEXT:    li 3, 961468; PC64LE-NEXT:    xxlor 1, 60, 601469; PC64LE-NEXT:    vmr 29, 31470; PC64LE-NEXT:    stxvd2x 62, 1, 3 # 16-byte Folded Spill1471; PC64LE-NEXT:    vmr 30, 41472; PC64LE-NEXT:    li 3, 1121473; PC64LE-NEXT:    xxlor 2, 62, 621474; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill1475; PC64LE-NEXT:    vmr 31, 51476; PC64LE-NEXT:    bl pow1477; PC64LE-NEXT:    nop1478; PC64LE-NEXT:    xxlor 59, 1, 11479; PC64LE-NEXT:    xxswapd 1, 601480; PC64LE-NEXT:    xxswapd 2, 621481; PC64LE-NEXT:    bl pow1482; PC64LE-NEXT:    nop1483; PC64LE-NEXT:    xxmrghd 62, 59, 11484; PC64LE-NEXT:    xxlor 1, 61, 611485; PC64LE-NEXT:    xxlor 2, 63, 631486; PC64LE-NEXT:    bl pow1487; PC64LE-NEXT:    nop1488; PC64LE-NEXT:    xxlor 60, 1, 11489; PC64LE-NEXT:    xxswapd 1, 611490; PC64LE-NEXT:    xxswapd 2, 631491; PC64LE-NEXT:    bl pow1492; PC64LE-NEXT:    nop1493; PC64LE-NEXT:    li 3, 1121494; PC64LE-NEXT:    vmr 2, 301495; PC64LE-NEXT:    xxmrghd 35, 60, 11496; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload1497; PC64LE-NEXT:    li 3, 961498; PC64LE-NEXT:    lxvd2x 62, 1, 3 # 16-byte Folded Reload1499; PC64LE-NEXT:    li 3, 801500; PC64LE-NEXT:    lxvd2x 61, 1, 3 # 16-byte Folded Reload1501; PC64LE-NEXT:    li 3, 641502; PC64LE-NEXT:    lxvd2x 60, 1, 3 # 16-byte Folded Reload1503; PC64LE-NEXT:    li 3, 481504; PC64LE-NEXT:    lxvd2x 59, 1, 3 # 16-byte Folded Reload1505; PC64LE-NEXT:    addi 1, 1, 1281506; PC64LE-NEXT:    ld 0, 16(1)1507; PC64LE-NEXT:    mtlr 01508; PC64LE-NEXT:    blr1509;1510; PC64LE9-LABEL: constrained_vector_pow_v4f64:1511; PC64LE9:       # %bb.0: # %entry1512; PC64LE9-NEXT:    mflr 01513; PC64LE9-NEXT:    stdu 1, -112(1)1514; PC64LE9-NEXT:    std 0, 128(1)1515; PC64LE9-NEXT:    stxv 60, 48(1) # 16-byte Folded Spill1516; PC64LE9-NEXT:    stxv 62, 80(1) # 16-byte Folded Spill1517; PC64LE9-NEXT:    vmr 30, 41518; PC64LE9-NEXT:    xscpsgndp 2, 62, 621519; PC64LE9-NEXT:    vmr 28, 21520; PC64LE9-NEXT:    xscpsgndp 1, 60, 601521; PC64LE9-NEXT:    stxv 59, 32(1) # 16-byte Folded Spill1522; PC64LE9-NEXT:    stxv 61, 64(1) # 16-byte Folded Spill1523; PC64LE9-NEXT:    stxv 63, 96(1) # 16-byte Folded Spill1524; PC64LE9-NEXT:    vmr 31, 51525; PC64LE9-NEXT:    vmr 29, 31526; PC64LE9-NEXT:    bl pow1527; PC64LE9-NEXT:    nop1528; PC64LE9-NEXT:    xscpsgndp 59, 1, 11529; PC64LE9-NEXT:    xxswapd 1, 601530; PC64LE9-NEXT:    xxswapd 2, 621531; PC64LE9-NEXT:    bl pow1532; PC64LE9-NEXT:    nop1533; PC64LE9-NEXT:    xxmrghd 62, 59, 11534; PC64LE9-NEXT:    xscpsgndp 1, 61, 611535; PC64LE9-NEXT:    xscpsgndp 2, 63, 631536; PC64LE9-NEXT:    bl pow1537; PC64LE9-NEXT:    nop1538; PC64LE9-NEXT:    xscpsgndp 60, 1, 11539; PC64LE9-NEXT:    xxswapd 1, 611540; PC64LE9-NEXT:    xxswapd 2, 631541; PC64LE9-NEXT:    bl pow1542; PC64LE9-NEXT:    nop1543; PC64LE9-NEXT:    xxmrghd 35, 60, 11544; PC64LE9-NEXT:    vmr 2, 301545; PC64LE9-NEXT:    lxv 63, 96(1) # 16-byte Folded Reload1546; PC64LE9-NEXT:    lxv 62, 80(1) # 16-byte Folded Reload1547; PC64LE9-NEXT:    lxv 61, 64(1) # 16-byte Folded Reload1548; PC64LE9-NEXT:    lxv 60, 48(1) # 16-byte Folded Reload1549; PC64LE9-NEXT:    lxv 59, 32(1) # 16-byte Folded Reload1550; PC64LE9-NEXT:    addi 1, 1, 1121551; PC64LE9-NEXT:    ld 0, 16(1)1552; PC64LE9-NEXT:    mtlr 01553; PC64LE9-NEXT:    blr1554entry:1555  %pow = call <4 x double> @llvm.experimental.constrained.pow.v4f64(1556                             <4 x double> %x,1557                             <4 x double> %y,1558                             metadata !"round.dynamic",1559                             metadata !"fpexcept.strict") #11560  ret <4 x double> %pow1561}1562 1563define <1 x float> @constrained_vector_powi_v1f32(<1 x float> %x, i32 %y) #0 {1564; PC64LE-LABEL: constrained_vector_powi_v1f32:1565; PC64LE:       # %bb.0: # %entry1566; PC64LE-NEXT:    mflr 01567; PC64LE-NEXT:    stdu 1, -32(1)1568; PC64LE-NEXT:    clrldi 4, 4, 321569; PC64LE-NEXT:    std 0, 48(1)1570; PC64LE-NEXT:    bl __powisf21571; PC64LE-NEXT:    nop1572; PC64LE-NEXT:    addi 1, 1, 321573; PC64LE-NEXT:    ld 0, 16(1)1574; PC64LE-NEXT:    mtlr 01575; PC64LE-NEXT:    blr1576;1577; PC64LE9-LABEL: constrained_vector_powi_v1f32:1578; PC64LE9:       # %bb.0: # %entry1579; PC64LE9-NEXT:    mflr 01580; PC64LE9-NEXT:    stdu 1, -32(1)1581; PC64LE9-NEXT:    clrldi 4, 4, 321582; PC64LE9-NEXT:    std 0, 48(1)1583; PC64LE9-NEXT:    bl __powisf21584; PC64LE9-NEXT:    nop1585; PC64LE9-NEXT:    addi 1, 1, 321586; PC64LE9-NEXT:    ld 0, 16(1)1587; PC64LE9-NEXT:    mtlr 01588; PC64LE9-NEXT:    blr1589entry:1590  %powi = call <1 x float> @llvm.experimental.constrained.powi.v1f32(1591                              <1 x float> %x,1592                              i32 %y,1593                              metadata !"round.dynamic",1594                              metadata !"fpexcept.strict") #11595  ret <1 x float> %powi1596}1597 1598define <2 x double> @constrained_vector_powi_v2f64(<2 x double> %x, i32 %y) #0 {1599; PC64LE-LABEL: constrained_vector_powi_v2f64:1600; PC64LE:       # %bb.0: # %entry1601; PC64LE-NEXT:    mflr 01602; PC64LE-NEXT:    stdu 1, -96(1)1603; PC64LE-NEXT:    li 3, 481604; PC64LE-NEXT:    std 0, 112(1)1605; PC64LE-NEXT:    std 30, 80(1) # 8-byte Folded Spill1606; PC64LE-NEXT:    clrldi 30, 5, 321607; PC64LE-NEXT:    stxvd2x 62, 1, 3 # 16-byte Folded Spill1608; PC64LE-NEXT:    li 3, 641609; PC64LE-NEXT:    mr 4, 301610; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill1611; PC64LE-NEXT:    vmr 31, 21612; PC64LE-NEXT:    xxlor 1, 63, 631613; PC64LE-NEXT:    bl __powidf21614; PC64LE-NEXT:    nop1615; PC64LE-NEXT:    xxlor 62, 1, 11616; PC64LE-NEXT:    xxswapd 1, 631617; PC64LE-NEXT:    mr 4, 301618; PC64LE-NEXT:    bl __powidf21619; PC64LE-NEXT:    nop1620; PC64LE-NEXT:    li 3, 641621; PC64LE-NEXT:    xxmrghd 34, 62, 11622; PC64LE-NEXT:    ld 30, 80(1) # 8-byte Folded Reload1623; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload1624; PC64LE-NEXT:    li 3, 481625; PC64LE-NEXT:    lxvd2x 62, 1, 3 # 16-byte Folded Reload1626; PC64LE-NEXT:    addi 1, 1, 961627; PC64LE-NEXT:    ld 0, 16(1)1628; PC64LE-NEXT:    mtlr 01629; PC64LE-NEXT:    blr1630;1631; PC64LE9-LABEL: constrained_vector_powi_v2f64:1632; PC64LE9:       # %bb.0: # %entry1633; PC64LE9-NEXT:    mflr 01634; PC64LE9-NEXT:    stdu 1, -80(1)1635; PC64LE9-NEXT:    std 0, 96(1)1636; PC64LE9-NEXT:    std 30, 64(1) # 8-byte Folded Spill1637; PC64LE9-NEXT:    stxv 63, 48(1) # 16-byte Folded Spill1638; PC64LE9-NEXT:    vmr 31, 21639; PC64LE9-NEXT:    clrldi 30, 5, 321640; PC64LE9-NEXT:    stxv 62, 32(1) # 16-byte Folded Spill1641; PC64LE9-NEXT:    xscpsgndp 1, 63, 631642; PC64LE9-NEXT:    mr 4, 301643; PC64LE9-NEXT:    bl __powidf21644; PC64LE9-NEXT:    nop1645; PC64LE9-NEXT:    xscpsgndp 62, 1, 11646; PC64LE9-NEXT:    xxswapd 1, 631647; PC64LE9-NEXT:    mr 4, 301648; PC64LE9-NEXT:    bl __powidf21649; PC64LE9-NEXT:    nop1650; PC64LE9-NEXT:    xxmrghd 34, 62, 11651; PC64LE9-NEXT:    lxv 63, 48(1) # 16-byte Folded Reload1652; PC64LE9-NEXT:    lxv 62, 32(1) # 16-byte Folded Reload1653; PC64LE9-NEXT:    ld 30, 64(1) # 8-byte Folded Reload1654; PC64LE9-NEXT:    addi 1, 1, 801655; PC64LE9-NEXT:    ld 0, 16(1)1656; PC64LE9-NEXT:    mtlr 01657; PC64LE9-NEXT:    blr1658entry:1659  %powi = call <2 x double> @llvm.experimental.constrained.powi.v2f64(1660                              <2 x double> %x,1661                              i32 %y,1662                              metadata !"round.dynamic",1663                              metadata !"fpexcept.strict") #11664  ret <2 x double> %powi1665}1666 1667define <3 x float> @constrained_vector_powi_v3f32(<3 x float> %x, i32 %y) #0 {1668;1669;1670; PC64LE-LABEL: constrained_vector_powi_v3f32:1671; PC64LE:       # %bb.0: # %entry1672; PC64LE-NEXT:    mflr 01673; PC64LE-NEXT:    stdu 1, -96(1)1674; PC64LE-NEXT:    xxsldwi 0, 34, 34, 11675; PC64LE-NEXT:    std 0, 112(1)1676; PC64LE-NEXT:    std 30, 64(1) # 8-byte Folded Spill1677; PC64LE-NEXT:    clrldi 30, 5, 321678; PC64LE-NEXT:    li 3, 481679; PC64LE-NEXT:    stfd 30, 80(1) # 8-byte Folded Spill1680; PC64LE-NEXT:    stfd 31, 88(1) # 8-byte Folded Spill1681; PC64LE-NEXT:    xscvspdpn 1, 01682; PC64LE-NEXT:    mr 4, 301683; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill1684; PC64LE-NEXT:    vmr 31, 21685; PC64LE-NEXT:    bl __powisf21686; PC64LE-NEXT:    nop1687; PC64LE-NEXT:    xxswapd 0, 631688; PC64LE-NEXT:    fmr 31, 11689; PC64LE-NEXT:    mr 4, 301690; PC64LE-NEXT:    xscvspdpn 1, 01691; PC64LE-NEXT:    bl __powisf21692; PC64LE-NEXT:    nop1693; PC64LE-NEXT:    xxsldwi 0, 63, 63, 31694; PC64LE-NEXT:    fmr 30, 11695; PC64LE-NEXT:    mr 4, 301696; PC64LE-NEXT:    xscvspdpn 1, 01697; PC64LE-NEXT:    bl __powisf21698; PC64LE-NEXT:    nop1699; PC64LE-NEXT:    xscvdpspn 0, 11700; PC64LE-NEXT:    xscvdpspn 1, 301701; PC64LE-NEXT:    addis 3, 2, .LCPI37_0@toc@ha1702; PC64LE-NEXT:    lfd 30, 80(1) # 8-byte Folded Reload1703; PC64LE-NEXT:    xscvdpspn 36, 311704; PC64LE-NEXT:    lfd 31, 88(1) # 8-byte Folded Reload1705; PC64LE-NEXT:    ld 30, 64(1) # 8-byte Folded Reload1706; PC64LE-NEXT:    addi 3, 3, .LCPI37_0@toc@l1707; PC64LE-NEXT:    xxmrghw 34, 1, 01708; PC64LE-NEXT:    lxvd2x 0, 0, 31709; PC64LE-NEXT:    li 3, 481710; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload1711; PC64LE-NEXT:    xxswapd 35, 01712; PC64LE-NEXT:    vperm 2, 4, 2, 31713; PC64LE-NEXT:    addi 1, 1, 961714; PC64LE-NEXT:    ld 0, 16(1)1715; PC64LE-NEXT:    mtlr 01716; PC64LE-NEXT:    blr1717;1718; PC64LE9-LABEL: constrained_vector_powi_v3f32:1719; PC64LE9:       # %bb.0: # %entry1720; PC64LE9-NEXT:    mflr 01721; PC64LE9-NEXT:    stdu 1, -80(1)1722; PC64LE9-NEXT:    xxsldwi 0, 34, 34, 11723; PC64LE9-NEXT:    std 0, 96(1)1724; PC64LE9-NEXT:    std 30, 48(1) # 8-byte Folded Spill1725; PC64LE9-NEXT:    stxv 63, 32(1) # 16-byte Folded Spill1726; PC64LE9-NEXT:    clrldi 30, 5, 321727; PC64LE9-NEXT:    vmr 31, 21728; PC64LE9-NEXT:    stfd 30, 64(1) # 8-byte Folded Spill1729; PC64LE9-NEXT:    mr 4, 301730; PC64LE9-NEXT:    stfd 31, 72(1) # 8-byte Folded Spill1731; PC64LE9-NEXT:    xscvspdpn 1, 01732; PC64LE9-NEXT:    bl __powisf21733; PC64LE9-NEXT:    nop1734; PC64LE9-NEXT:    xxswapd 0, 631735; PC64LE9-NEXT:    fmr 31, 11736; PC64LE9-NEXT:    mr 4, 301737; PC64LE9-NEXT:    xscvspdpn 1, 01738; PC64LE9-NEXT:    bl __powisf21739; PC64LE9-NEXT:    nop1740; PC64LE9-NEXT:    xxsldwi 0, 63, 63, 31741; PC64LE9-NEXT:    fmr 30, 11742; PC64LE9-NEXT:    mr 4, 301743; PC64LE9-NEXT:    xscvspdpn 1, 01744; PC64LE9-NEXT:    bl __powisf21745; PC64LE9-NEXT:    nop1746; PC64LE9-NEXT:    xscvdpspn 0, 11747; PC64LE9-NEXT:    xscvdpspn 1, 301748; PC64LE9-NEXT:    addis 3, 2, .LCPI37_0@toc@ha1749; PC64LE9-NEXT:    xscvdpspn 34, 311750; PC64LE9-NEXT:    lxv 63, 32(1) # 16-byte Folded Reload1751; PC64LE9-NEXT:    lfd 31, 72(1) # 8-byte Folded Reload1752; PC64LE9-NEXT:    ld 30, 48(1) # 8-byte Folded Reload1753; PC64LE9-NEXT:    addi 3, 3, .LCPI37_0@toc@l1754; PC64LE9-NEXT:    lfd 30, 64(1) # 8-byte Folded Reload1755; PC64LE9-NEXT:    xxmrghw 35, 1, 01756; PC64LE9-NEXT:    lxv 0, 0(3)1757; PC64LE9-NEXT:    xxperm 34, 35, 01758; PC64LE9-NEXT:    addi 1, 1, 801759; PC64LE9-NEXT:    ld 0, 16(1)1760; PC64LE9-NEXT:    mtlr 01761; PC64LE9-NEXT:    blr1762entry:1763  %powi = call <3 x float> @llvm.experimental.constrained.powi.v3f32(1764                              <3 x float> %x,1765                              i32 %y,1766                              metadata !"round.dynamic",1767                              metadata !"fpexcept.strict") #11768  ret <3 x float> %powi1769}1770 1771define <3 x double> @constrained_vector_powi_v3f64(<3 x double> %x, i32 %y) #0 {1772; PC64LE-LABEL: constrained_vector_powi_v3f64:1773; PC64LE:       # %bb.0: # %entry1774; PC64LE-NEXT:    mflr 01775; PC64LE-NEXT:    stdu 1, -96(1)1776; PC64LE-NEXT:    std 0, 112(1)1777; PC64LE-NEXT:    std 30, 64(1) # 8-byte Folded Spill1778; PC64LE-NEXT:    clrldi 30, 6, 321779; PC64LE-NEXT:    li 3, 481780; PC64LE-NEXT:    stfd 30, 80(1) # 8-byte Folded Spill1781; PC64LE-NEXT:    stfd 31, 88(1) # 8-byte Folded Spill1782; PC64LE-NEXT:    fmr 31, 31783; PC64LE-NEXT:    fmr 30, 21784; PC64LE-NEXT:    mr 4, 301785; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill1786; PC64LE-NEXT:    bl __powidf21787; PC64LE-NEXT:    nop1788; PC64LE-NEXT:    xxlor 63, 1, 11789; PC64LE-NEXT:    fmr 1, 301790; PC64LE-NEXT:    mr 4, 301791; PC64LE-NEXT:    bl __powidf21792; PC64LE-NEXT:    nop1793; PC64LE-NEXT:    xxmrghd 63, 1, 631794; PC64LE-NEXT:    fmr 1, 311795; PC64LE-NEXT:    mr 4, 301796; PC64LE-NEXT:    bl __powidf21797; PC64LE-NEXT:    nop1798; PC64LE-NEXT:    li 3, 481799; PC64LE-NEXT:    fmr 3, 11800; PC64LE-NEXT:    xxswapd 1, 631801; PC64LE-NEXT:    lfd 31, 88(1) # 8-byte Folded Reload1802; PC64LE-NEXT:    xxlor 2, 63, 631803; PC64LE-NEXT:    lfd 30, 80(1) # 8-byte Folded Reload1804; PC64LE-NEXT:    ld 30, 64(1) # 8-byte Folded Reload1805; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload1806; PC64LE-NEXT:    addi 1, 1, 961807; PC64LE-NEXT:    ld 0, 16(1)1808; PC64LE-NEXT:    mtlr 01809; PC64LE-NEXT:    blr1810;1811; PC64LE9-LABEL: constrained_vector_powi_v3f64:1812; PC64LE9:       # %bb.0: # %entry1813; PC64LE9-NEXT:    mflr 01814; PC64LE9-NEXT:    stdu 1, -80(1)1815; PC64LE9-NEXT:    std 0, 96(1)1816; PC64LE9-NEXT:    std 30, 48(1) # 8-byte Folded Spill1817; PC64LE9-NEXT:    stxv 63, 32(1) # 16-byte Folded Spill1818; PC64LE9-NEXT:    clrldi 30, 6, 321819; PC64LE9-NEXT:    mr 4, 301820; PC64LE9-NEXT:    stfd 30, 64(1) # 8-byte Folded Spill1821; PC64LE9-NEXT:    stfd 31, 72(1) # 8-byte Folded Spill1822; PC64LE9-NEXT:    fmr 31, 31823; PC64LE9-NEXT:    fmr 30, 21824; PC64LE9-NEXT:    bl __powidf21825; PC64LE9-NEXT:    nop1826; PC64LE9-NEXT:    xscpsgndp 63, 1, 11827; PC64LE9-NEXT:    fmr 1, 301828; PC64LE9-NEXT:    mr 4, 301829; PC64LE9-NEXT:    bl __powidf21830; PC64LE9-NEXT:    nop1831; PC64LE9-NEXT:    xxmrghd 63, 1, 631832; PC64LE9-NEXT:    fmr 1, 311833; PC64LE9-NEXT:    mr 4, 301834; PC64LE9-NEXT:    bl __powidf21835; PC64LE9-NEXT:    nop1836; PC64LE9-NEXT:    fmr 3, 11837; PC64LE9-NEXT:    xxswapd 1, 631838; PC64LE9-NEXT:    xscpsgndp 2, 63, 631839; PC64LE9-NEXT:    lxv 63, 32(1) # 16-byte Folded Reload1840; PC64LE9-NEXT:    lfd 31, 72(1) # 8-byte Folded Reload1841; PC64LE9-NEXT:    ld 30, 48(1) # 8-byte Folded Reload1842; PC64LE9-NEXT:    lfd 30, 64(1) # 8-byte Folded Reload1843; PC64LE9-NEXT:    addi 1, 1, 801844; PC64LE9-NEXT:    ld 0, 16(1)1845; PC64LE9-NEXT:    mtlr 01846; PC64LE9-NEXT:    blr1847entry:1848  %powi = call <3 x double> @llvm.experimental.constrained.powi.v3f64(1849                          <3 x double> %x,1850                          i32 %y,1851                          metadata !"round.dynamic",1852                          metadata !"fpexcept.strict") #11853  ret <3 x double> %powi1854}1855 1856define <4 x double> @constrained_vector_powi_v4f64(<4 x double> %x, i32 %y) #0 {1857; PC64LE-LABEL: constrained_vector_powi_v4f64:1858; PC64LE:       # %bb.0: # %entry1859; PC64LE-NEXT:    mflr 01860; PC64LE-NEXT:    stdu 1, -112(1)1861; PC64LE-NEXT:    li 3, 481862; PC64LE-NEXT:    std 0, 128(1)1863; PC64LE-NEXT:    std 30, 96(1) # 8-byte Folded Spill1864; PC64LE-NEXT:    clrldi 30, 7, 321865; PC64LE-NEXT:    stxvd2x 61, 1, 3 # 16-byte Folded Spill1866; PC64LE-NEXT:    li 3, 641867; PC64LE-NEXT:    mr 4, 301868; PC64LE-NEXT:    stxvd2x 62, 1, 3 # 16-byte Folded Spill1869; PC64LE-NEXT:    vmr 30, 21870; PC64LE-NEXT:    li 3, 801871; PC64LE-NEXT:    xxlor 1, 62, 621872; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill1873; PC64LE-NEXT:    vmr 31, 31874; PC64LE-NEXT:    bl __powidf21875; PC64LE-NEXT:    nop1876; PC64LE-NEXT:    xxlor 61, 1, 11877; PC64LE-NEXT:    xxswapd 1, 621878; PC64LE-NEXT:    mr 4, 301879; PC64LE-NEXT:    bl __powidf21880; PC64LE-NEXT:    nop1881; PC64LE-NEXT:    xxmrghd 62, 61, 11882; PC64LE-NEXT:    xxlor 1, 63, 631883; PC64LE-NEXT:    mr 4, 301884; PC64LE-NEXT:    bl __powidf21885; PC64LE-NEXT:    nop1886; PC64LE-NEXT:    xxlor 61, 1, 11887; PC64LE-NEXT:    xxswapd 1, 631888; PC64LE-NEXT:    mr 4, 301889; PC64LE-NEXT:    bl __powidf21890; PC64LE-NEXT:    nop1891; PC64LE-NEXT:    li 3, 801892; PC64LE-NEXT:    vmr 2, 301893; PC64LE-NEXT:    xxmrghd 35, 61, 11894; PC64LE-NEXT:    ld 30, 96(1) # 8-byte Folded Reload1895; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload1896; PC64LE-NEXT:    li 3, 641897; PC64LE-NEXT:    lxvd2x 62, 1, 3 # 16-byte Folded Reload1898; PC64LE-NEXT:    li 3, 481899; PC64LE-NEXT:    lxvd2x 61, 1, 3 # 16-byte Folded Reload1900; PC64LE-NEXT:    addi 1, 1, 1121901; PC64LE-NEXT:    ld 0, 16(1)1902; PC64LE-NEXT:    mtlr 01903; PC64LE-NEXT:    blr1904;1905; PC64LE9-LABEL: constrained_vector_powi_v4f64:1906; PC64LE9:       # %bb.0: # %entry1907; PC64LE9-NEXT:    mflr 01908; PC64LE9-NEXT:    stdu 1, -96(1)1909; PC64LE9-NEXT:    std 0, 112(1)1910; PC64LE9-NEXT:    std 30, 80(1) # 8-byte Folded Spill1911; PC64LE9-NEXT:    stxv 62, 48(1) # 16-byte Folded Spill1912; PC64LE9-NEXT:    vmr 30, 21913; PC64LE9-NEXT:    clrldi 30, 7, 321914; PC64LE9-NEXT:    stxv 61, 32(1) # 16-byte Folded Spill1915; PC64LE9-NEXT:    xscpsgndp 1, 62, 621916; PC64LE9-NEXT:    mr 4, 301917; PC64LE9-NEXT:    stxv 63, 64(1) # 16-byte Folded Spill1918; PC64LE9-NEXT:    vmr 31, 31919; PC64LE9-NEXT:    bl __powidf21920; PC64LE9-NEXT:    nop1921; PC64LE9-NEXT:    xscpsgndp 61, 1, 11922; PC64LE9-NEXT:    xxswapd 1, 621923; PC64LE9-NEXT:    mr 4, 301924; PC64LE9-NEXT:    bl __powidf21925; PC64LE9-NEXT:    nop1926; PC64LE9-NEXT:    xxmrghd 62, 61, 11927; PC64LE9-NEXT:    xscpsgndp 1, 63, 631928; PC64LE9-NEXT:    mr 4, 301929; PC64LE9-NEXT:    bl __powidf21930; PC64LE9-NEXT:    nop1931; PC64LE9-NEXT:    xscpsgndp 61, 1, 11932; PC64LE9-NEXT:    xxswapd 1, 631933; PC64LE9-NEXT:    mr 4, 301934; PC64LE9-NEXT:    bl __powidf21935; PC64LE9-NEXT:    nop1936; PC64LE9-NEXT:    xxmrghd 35, 61, 11937; PC64LE9-NEXT:    vmr 2, 301938; PC64LE9-NEXT:    lxv 63, 64(1) # 16-byte Folded Reload1939; PC64LE9-NEXT:    lxv 62, 48(1) # 16-byte Folded Reload1940; PC64LE9-NEXT:    lxv 61, 32(1) # 16-byte Folded Reload1941; PC64LE9-NEXT:    ld 30, 80(1) # 8-byte Folded Reload1942; PC64LE9-NEXT:    addi 1, 1, 961943; PC64LE9-NEXT:    ld 0, 16(1)1944; PC64LE9-NEXT:    mtlr 01945; PC64LE9-NEXT:    blr1946entry:1947  %powi = call <4 x double> @llvm.experimental.constrained.powi.v4f64(1948                              <4 x double> %x,1949                              i32 %y,1950                              metadata !"round.dynamic",1951                              metadata !"fpexcept.strict") #11952  ret <4 x double> %powi1953}1954 1955define <1 x float> @constrained_vector_sin_v1f32(<1 x float> %x) #0 {1956; PC64LE-LABEL: constrained_vector_sin_v1f32:1957; PC64LE:       # %bb.0: # %entry1958; PC64LE-NEXT:    mflr 01959; PC64LE-NEXT:    stdu 1, -32(1)1960; PC64LE-NEXT:    std 0, 48(1)1961; PC64LE-NEXT:    bl sinf1962; PC64LE-NEXT:    nop1963; PC64LE-NEXT:    addi 1, 1, 321964; PC64LE-NEXT:    ld 0, 16(1)1965; PC64LE-NEXT:    mtlr 01966; PC64LE-NEXT:    blr1967;1968; PC64LE9-LABEL: constrained_vector_sin_v1f32:1969; PC64LE9:       # %bb.0: # %entry1970; PC64LE9-NEXT:    mflr 01971; PC64LE9-NEXT:    stdu 1, -32(1)1972; PC64LE9-NEXT:    std 0, 48(1)1973; PC64LE9-NEXT:    bl sinf1974; PC64LE9-NEXT:    nop1975; PC64LE9-NEXT:    addi 1, 1, 321976; PC64LE9-NEXT:    ld 0, 16(1)1977; PC64LE9-NEXT:    mtlr 01978; PC64LE9-NEXT:    blr1979entry:1980  %sin = call <1 x float> @llvm.experimental.constrained.sin.v1f32(1981                             <1 x float> %x,1982                             metadata !"round.dynamic",1983                             metadata !"fpexcept.strict") #11984  ret <1 x float> %sin1985}1986 1987define <2 x double> @constrained_vector_sin_v2f64(<2 x double> %x) #0 {1988; PC64LE-LABEL: constrained_vector_sin_v2f64:1989; PC64LE:       # %bb.0: # %entry1990; PC64LE-NEXT:    mflr 01991; PC64LE-NEXT:    stdu 1, -80(1)1992; PC64LE-NEXT:    li 3, 481993; PC64LE-NEXT:    std 0, 96(1)1994; PC64LE-NEXT:    stxvd2x 62, 1, 3 # 16-byte Folded Spill1995; PC64LE-NEXT:    li 3, 641996; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill1997; PC64LE-NEXT:    vmr 31, 21998; PC64LE-NEXT:    xxlor 1, 63, 631999; PC64LE-NEXT:    bl sin2000; PC64LE-NEXT:    nop2001; PC64LE-NEXT:    xxlor 62, 1, 12002; PC64LE-NEXT:    xxswapd 1, 632003; PC64LE-NEXT:    bl sin2004; PC64LE-NEXT:    nop2005; PC64LE-NEXT:    li 3, 642006; PC64LE-NEXT:    xxmrghd 34, 62, 12007; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload2008; PC64LE-NEXT:    li 3, 482009; PC64LE-NEXT:    lxvd2x 62, 1, 3 # 16-byte Folded Reload2010; PC64LE-NEXT:    addi 1, 1, 802011; PC64LE-NEXT:    ld 0, 16(1)2012; PC64LE-NEXT:    mtlr 02013; PC64LE-NEXT:    blr2014;2015; PC64LE9-LABEL: constrained_vector_sin_v2f64:2016; PC64LE9:       # %bb.0: # %entry2017; PC64LE9-NEXT:    mflr 02018; PC64LE9-NEXT:    stdu 1, -64(1)2019; PC64LE9-NEXT:    std 0, 80(1)2020; PC64LE9-NEXT:    stxv 63, 48(1) # 16-byte Folded Spill2021; PC64LE9-NEXT:    vmr 31, 22022; PC64LE9-NEXT:    xscpsgndp 1, 63, 632023; PC64LE9-NEXT:    stxv 62, 32(1) # 16-byte Folded Spill2024; PC64LE9-NEXT:    bl sin2025; PC64LE9-NEXT:    nop2026; PC64LE9-NEXT:    xscpsgndp 62, 1, 12027; PC64LE9-NEXT:    xxswapd 1, 632028; PC64LE9-NEXT:    bl sin2029; PC64LE9-NEXT:    nop2030; PC64LE9-NEXT:    xxmrghd 34, 62, 12031; PC64LE9-NEXT:    lxv 63, 48(1) # 16-byte Folded Reload2032; PC64LE9-NEXT:    lxv 62, 32(1) # 16-byte Folded Reload2033; PC64LE9-NEXT:    addi 1, 1, 642034; PC64LE9-NEXT:    ld 0, 16(1)2035; PC64LE9-NEXT:    mtlr 02036; PC64LE9-NEXT:    blr2037entry:2038  %sin = call <2 x double> @llvm.experimental.constrained.sin.v2f64(2039                             <2 x double> %x,2040                             metadata !"round.dynamic",2041                             metadata !"fpexcept.strict") #12042  ret <2 x double> %sin2043}2044 2045define <3 x float> @constrained_vector_sin_v3f32(<3 x float> %x) #0 {2046; PC64LE-LABEL: constrained_vector_sin_v3f32:2047; PC64LE:       # %bb.0: # %entry2048; PC64LE-NEXT:    mflr 02049; PC64LE-NEXT:    stdu 1, -80(1)2050; PC64LE-NEXT:    xxsldwi 0, 34, 34, 12051; PC64LE-NEXT:    li 3, 482052; PC64LE-NEXT:    std 0, 96(1)2053; PC64LE-NEXT:    stfd 30, 64(1) # 8-byte Folded Spill2054; PC64LE-NEXT:    stfd 31, 72(1) # 8-byte Folded Spill2055; PC64LE-NEXT:    xscvspdpn 1, 02056; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill2057; PC64LE-NEXT:    vmr 31, 22058; PC64LE-NEXT:    bl sinf2059; PC64LE-NEXT:    nop2060; PC64LE-NEXT:    xxswapd 0, 632061; PC64LE-NEXT:    fmr 31, 12062; PC64LE-NEXT:    xscvspdpn 1, 02063; PC64LE-NEXT:    bl sinf2064; PC64LE-NEXT:    nop2065; PC64LE-NEXT:    xxsldwi 0, 63, 63, 32066; PC64LE-NEXT:    fmr 30, 12067; PC64LE-NEXT:    xscvspdpn 1, 02068; PC64LE-NEXT:    bl sinf2069; PC64LE-NEXT:    nop2070; PC64LE-NEXT:    xscvdpspn 0, 12071; PC64LE-NEXT:    xscvdpspn 1, 302072; PC64LE-NEXT:    addis 3, 2, .LCPI42_0@toc@ha2073; PC64LE-NEXT:    lfd 30, 64(1) # 8-byte Folded Reload2074; PC64LE-NEXT:    xscvdpspn 36, 312075; PC64LE-NEXT:    lfd 31, 72(1) # 8-byte Folded Reload2076; PC64LE-NEXT:    addi 3, 3, .LCPI42_0@toc@l2077; PC64LE-NEXT:    xxmrghw 34, 1, 02078; PC64LE-NEXT:    lxvd2x 0, 0, 32079; PC64LE-NEXT:    li 3, 482080; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload2081; PC64LE-NEXT:    xxswapd 35, 02082; PC64LE-NEXT:    vperm 2, 4, 2, 32083; PC64LE-NEXT:    addi 1, 1, 802084; PC64LE-NEXT:    ld 0, 16(1)2085; PC64LE-NEXT:    mtlr 02086; PC64LE-NEXT:    blr2087;2088; PC64LE9-LABEL: constrained_vector_sin_v3f32:2089; PC64LE9:       # %bb.0: # %entry2090; PC64LE9-NEXT:    mflr 02091; PC64LE9-NEXT:    stdu 1, -64(1)2092; PC64LE9-NEXT:    xxsldwi 0, 34, 34, 12093; PC64LE9-NEXT:    std 0, 80(1)2094; PC64LE9-NEXT:    stfd 30, 48(1) # 8-byte Folded Spill2095; PC64LE9-NEXT:    stxv 63, 32(1) # 16-byte Folded Spill2096; PC64LE9-NEXT:    stfd 31, 56(1) # 8-byte Folded Spill2097; PC64LE9-NEXT:    vmr 31, 22098; PC64LE9-NEXT:    xscvspdpn 1, 02099; PC64LE9-NEXT:    bl sinf2100; PC64LE9-NEXT:    nop2101; PC64LE9-NEXT:    xxswapd 0, 632102; PC64LE9-NEXT:    fmr 31, 12103; PC64LE9-NEXT:    xscvspdpn 1, 02104; PC64LE9-NEXT:    bl sinf2105; PC64LE9-NEXT:    nop2106; PC64LE9-NEXT:    xxsldwi 0, 63, 63, 32107; PC64LE9-NEXT:    fmr 30, 12108; PC64LE9-NEXT:    xscvspdpn 1, 02109; PC64LE9-NEXT:    bl sinf2110; PC64LE9-NEXT:    nop2111; PC64LE9-NEXT:    xscvdpspn 0, 12112; PC64LE9-NEXT:    xscvdpspn 1, 302113; PC64LE9-NEXT:    addis 3, 2, .LCPI42_0@toc@ha2114; PC64LE9-NEXT:    xscvdpspn 34, 312115; PC64LE9-NEXT:    lxv 63, 32(1) # 16-byte Folded Reload2116; PC64LE9-NEXT:    lfd 31, 56(1) # 8-byte Folded Reload2117; PC64LE9-NEXT:    addi 3, 3, .LCPI42_0@toc@l2118; PC64LE9-NEXT:    lfd 30, 48(1) # 8-byte Folded Reload2119; PC64LE9-NEXT:    xxmrghw 35, 1, 02120; PC64LE9-NEXT:    lxv 0, 0(3)2121; PC64LE9-NEXT:    xxperm 34, 35, 02122; PC64LE9-NEXT:    addi 1, 1, 642123; PC64LE9-NEXT:    ld 0, 16(1)2124; PC64LE9-NEXT:    mtlr 02125; PC64LE9-NEXT:    blr2126entry:2127  %sin = call <3 x float> @llvm.experimental.constrained.sin.v3f32(2128                              <3 x float> %x,2129                              metadata !"round.dynamic",2130                              metadata !"fpexcept.strict") #12131  ret <3 x float> %sin2132}2133 2134define <3 x double> @constrained_vector_sin_v3f64(<3 x double> %x) #0 {2135; PC64LE-LABEL: constrained_vector_sin_v3f64:2136; PC64LE:       # %bb.0: # %entry2137; PC64LE-NEXT:    mflr 02138; PC64LE-NEXT:    stdu 1, -80(1)2139; PC64LE-NEXT:    li 3, 482140; PC64LE-NEXT:    std 0, 96(1)2141; PC64LE-NEXT:    stfd 30, 64(1) # 8-byte Folded Spill2142; PC64LE-NEXT:    fmr 30, 22143; PC64LE-NEXT:    stfd 31, 72(1) # 8-byte Folded Spill2144; PC64LE-NEXT:    fmr 31, 32145; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill2146; PC64LE-NEXT:    bl sin2147; PC64LE-NEXT:    nop2148; PC64LE-NEXT:    xxlor 63, 1, 12149; PC64LE-NEXT:    fmr 1, 302150; PC64LE-NEXT:    bl sin2151; PC64LE-NEXT:    nop2152; PC64LE-NEXT:    xxmrghd 63, 1, 632153; PC64LE-NEXT:    fmr 1, 312154; PC64LE-NEXT:    bl sin2155; PC64LE-NEXT:    nop2156; PC64LE-NEXT:    li 3, 482157; PC64LE-NEXT:    fmr 3, 12158; PC64LE-NEXT:    xxswapd 1, 632159; PC64LE-NEXT:    lfd 31, 72(1) # 8-byte Folded Reload2160; PC64LE-NEXT:    xxlor 2, 63, 632161; PC64LE-NEXT:    lfd 30, 64(1) # 8-byte Folded Reload2162; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload2163; PC64LE-NEXT:    addi 1, 1, 802164; PC64LE-NEXT:    ld 0, 16(1)2165; PC64LE-NEXT:    mtlr 02166; PC64LE-NEXT:    blr2167;2168; PC64LE9-LABEL: constrained_vector_sin_v3f64:2169; PC64LE9:       # %bb.0: # %entry2170; PC64LE9-NEXT:    mflr 02171; PC64LE9-NEXT:    stdu 1, -64(1)2172; PC64LE9-NEXT:    std 0, 80(1)2173; PC64LE9-NEXT:    stfd 30, 48(1) # 8-byte Folded Spill2174; PC64LE9-NEXT:    stxv 63, 32(1) # 16-byte Folded Spill2175; PC64LE9-NEXT:    stfd 31, 56(1) # 8-byte Folded Spill2176; PC64LE9-NEXT:    fmr 31, 32177; PC64LE9-NEXT:    fmr 30, 22178; PC64LE9-NEXT:    bl sin2179; PC64LE9-NEXT:    nop2180; PC64LE9-NEXT:    xscpsgndp 63, 1, 12181; PC64LE9-NEXT:    fmr 1, 302182; PC64LE9-NEXT:    bl sin2183; PC64LE9-NEXT:    nop2184; PC64LE9-NEXT:    xxmrghd 63, 1, 632185; PC64LE9-NEXT:    fmr 1, 312186; PC64LE9-NEXT:    bl sin2187; PC64LE9-NEXT:    nop2188; PC64LE9-NEXT:    fmr 3, 12189; PC64LE9-NEXT:    xxswapd 1, 632190; PC64LE9-NEXT:    xscpsgndp 2, 63, 632191; PC64LE9-NEXT:    lxv 63, 32(1) # 16-byte Folded Reload2192; PC64LE9-NEXT:    lfd 31, 56(1) # 8-byte Folded Reload2193; PC64LE9-NEXT:    lfd 30, 48(1) # 8-byte Folded Reload2194; PC64LE9-NEXT:    addi 1, 1, 642195; PC64LE9-NEXT:    ld 0, 16(1)2196; PC64LE9-NEXT:    mtlr 02197; PC64LE9-NEXT:    blr2198entry:2199  %sin = call <3 x double> @llvm.experimental.constrained.sin.v3f64(2200                          <3 x double> %x,2201                          metadata !"round.dynamic",2202                          metadata !"fpexcept.strict") #12203  ret <3 x double> %sin2204}2205 2206define <4 x double> @constrained_vector_sin_v4f64(<4 x double> %x) #0 {2207; PC64LE-LABEL: constrained_vector_sin_v4f64:2208; PC64LE:       # %bb.0: # %entry2209; PC64LE-NEXT:    mflr 02210; PC64LE-NEXT:    stdu 1, -96(1)2211; PC64LE-NEXT:    li 3, 482212; PC64LE-NEXT:    std 0, 112(1)2213; PC64LE-NEXT:    stxvd2x 61, 1, 3 # 16-byte Folded Spill2214; PC64LE-NEXT:    li 3, 642215; PC64LE-NEXT:    stxvd2x 62, 1, 3 # 16-byte Folded Spill2216; PC64LE-NEXT:    vmr 30, 22217; PC64LE-NEXT:    li 3, 802218; PC64LE-NEXT:    xxlor 1, 62, 622219; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill2220; PC64LE-NEXT:    vmr 31, 32221; PC64LE-NEXT:    bl sin2222; PC64LE-NEXT:    nop2223; PC64LE-NEXT:    xxlor 61, 1, 12224; PC64LE-NEXT:    xxswapd 1, 622225; PC64LE-NEXT:    bl sin2226; PC64LE-NEXT:    nop2227; PC64LE-NEXT:    xxmrghd 62, 61, 12228; PC64LE-NEXT:    xxlor 1, 63, 632229; PC64LE-NEXT:    bl sin2230; PC64LE-NEXT:    nop2231; PC64LE-NEXT:    xxlor 61, 1, 12232; PC64LE-NEXT:    xxswapd 1, 632233; PC64LE-NEXT:    bl sin2234; PC64LE-NEXT:    nop2235; PC64LE-NEXT:    li 3, 802236; PC64LE-NEXT:    vmr 2, 302237; PC64LE-NEXT:    xxmrghd 35, 61, 12238; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload2239; PC64LE-NEXT:    li 3, 642240; PC64LE-NEXT:    lxvd2x 62, 1, 3 # 16-byte Folded Reload2241; PC64LE-NEXT:    li 3, 482242; PC64LE-NEXT:    lxvd2x 61, 1, 3 # 16-byte Folded Reload2243; PC64LE-NEXT:    addi 1, 1, 962244; PC64LE-NEXT:    ld 0, 16(1)2245; PC64LE-NEXT:    mtlr 02246; PC64LE-NEXT:    blr2247;2248; PC64LE9-LABEL: constrained_vector_sin_v4f64:2249; PC64LE9:       # %bb.0: # %entry2250; PC64LE9-NEXT:    mflr 02251; PC64LE9-NEXT:    stdu 1, -80(1)2252; PC64LE9-NEXT:    std 0, 96(1)2253; PC64LE9-NEXT:    stxv 62, 48(1) # 16-byte Folded Spill2254; PC64LE9-NEXT:    vmr 30, 22255; PC64LE9-NEXT:    xscpsgndp 1, 62, 622256; PC64LE9-NEXT:    stxv 61, 32(1) # 16-byte Folded Spill2257; PC64LE9-NEXT:    stxv 63, 64(1) # 16-byte Folded Spill2258; PC64LE9-NEXT:    vmr 31, 32259; PC64LE9-NEXT:    bl sin2260; PC64LE9-NEXT:    nop2261; PC64LE9-NEXT:    xscpsgndp 61, 1, 12262; PC64LE9-NEXT:    xxswapd 1, 622263; PC64LE9-NEXT:    bl sin2264; PC64LE9-NEXT:    nop2265; PC64LE9-NEXT:    xxmrghd 62, 61, 12266; PC64LE9-NEXT:    xscpsgndp 1, 63, 632267; PC64LE9-NEXT:    bl sin2268; PC64LE9-NEXT:    nop2269; PC64LE9-NEXT:    xscpsgndp 61, 1, 12270; PC64LE9-NEXT:    xxswapd 1, 632271; PC64LE9-NEXT:    bl sin2272; PC64LE9-NEXT:    nop2273; PC64LE9-NEXT:    xxmrghd 35, 61, 12274; PC64LE9-NEXT:    vmr 2, 302275; PC64LE9-NEXT:    lxv 63, 64(1) # 16-byte Folded Reload2276; PC64LE9-NEXT:    lxv 62, 48(1) # 16-byte Folded Reload2277; PC64LE9-NEXT:    lxv 61, 32(1) # 16-byte Folded Reload2278; PC64LE9-NEXT:    addi 1, 1, 802279; PC64LE9-NEXT:    ld 0, 16(1)2280; PC64LE9-NEXT:    mtlr 02281; PC64LE9-NEXT:    blr2282entry:2283  %sin = call <4 x double> @llvm.experimental.constrained.sin.v4f64(2284                             <4 x double> %x,2285                             metadata !"round.dynamic",2286                             metadata !"fpexcept.strict") #12287  ret <4 x double> %sin2288}2289 2290define <1 x float> @constrained_vector_cos_v1f32(<1 x float> %x) #0 {2291; PC64LE-LABEL: constrained_vector_cos_v1f32:2292; PC64LE:       # %bb.0: # %entry2293; PC64LE-NEXT:    mflr 02294; PC64LE-NEXT:    stdu 1, -32(1)2295; PC64LE-NEXT:    std 0, 48(1)2296; PC64LE-NEXT:    bl cosf2297; PC64LE-NEXT:    nop2298; PC64LE-NEXT:    addi 1, 1, 322299; PC64LE-NEXT:    ld 0, 16(1)2300; PC64LE-NEXT:    mtlr 02301; PC64LE-NEXT:    blr2302;2303; PC64LE9-LABEL: constrained_vector_cos_v1f32:2304; PC64LE9:       # %bb.0: # %entry2305; PC64LE9-NEXT:    mflr 02306; PC64LE9-NEXT:    stdu 1, -32(1)2307; PC64LE9-NEXT:    std 0, 48(1)2308; PC64LE9-NEXT:    bl cosf2309; PC64LE9-NEXT:    nop2310; PC64LE9-NEXT:    addi 1, 1, 322311; PC64LE9-NEXT:    ld 0, 16(1)2312; PC64LE9-NEXT:    mtlr 02313; PC64LE9-NEXT:    blr2314entry:2315  %cos = call <1 x float> @llvm.experimental.constrained.cos.v1f32(2316                             <1 x float> %x,2317                             metadata !"round.dynamic",2318                             metadata !"fpexcept.strict") #12319  ret <1 x float> %cos2320}2321 2322define <2 x double> @constrained_vector_cos_v2f64(<2 x double> %x) #0 {2323; PC64LE-LABEL: constrained_vector_cos_v2f64:2324; PC64LE:       # %bb.0: # %entry2325; PC64LE-NEXT:    mflr 02326; PC64LE-NEXT:    stdu 1, -80(1)2327; PC64LE-NEXT:    li 3, 482328; PC64LE-NEXT:    std 0, 96(1)2329; PC64LE-NEXT:    stxvd2x 62, 1, 3 # 16-byte Folded Spill2330; PC64LE-NEXT:    li 3, 642331; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill2332; PC64LE-NEXT:    vmr 31, 22333; PC64LE-NEXT:    xxlor 1, 63, 632334; PC64LE-NEXT:    bl cos2335; PC64LE-NEXT:    nop2336; PC64LE-NEXT:    xxlor 62, 1, 12337; PC64LE-NEXT:    xxswapd 1, 632338; PC64LE-NEXT:    bl cos2339; PC64LE-NEXT:    nop2340; PC64LE-NEXT:    li 3, 642341; PC64LE-NEXT:    xxmrghd 34, 62, 12342; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload2343; PC64LE-NEXT:    li 3, 482344; PC64LE-NEXT:    lxvd2x 62, 1, 3 # 16-byte Folded Reload2345; PC64LE-NEXT:    addi 1, 1, 802346; PC64LE-NEXT:    ld 0, 16(1)2347; PC64LE-NEXT:    mtlr 02348; PC64LE-NEXT:    blr2349;2350; PC64LE9-LABEL: constrained_vector_cos_v2f64:2351; PC64LE9:       # %bb.0: # %entry2352; PC64LE9-NEXT:    mflr 02353; PC64LE9-NEXT:    stdu 1, -64(1)2354; PC64LE9-NEXT:    std 0, 80(1)2355; PC64LE9-NEXT:    stxv 63, 48(1) # 16-byte Folded Spill2356; PC64LE9-NEXT:    vmr 31, 22357; PC64LE9-NEXT:    xscpsgndp 1, 63, 632358; PC64LE9-NEXT:    stxv 62, 32(1) # 16-byte Folded Spill2359; PC64LE9-NEXT:    bl cos2360; PC64LE9-NEXT:    nop2361; PC64LE9-NEXT:    xscpsgndp 62, 1, 12362; PC64LE9-NEXT:    xxswapd 1, 632363; PC64LE9-NEXT:    bl cos2364; PC64LE9-NEXT:    nop2365; PC64LE9-NEXT:    xxmrghd 34, 62, 12366; PC64LE9-NEXT:    lxv 63, 48(1) # 16-byte Folded Reload2367; PC64LE9-NEXT:    lxv 62, 32(1) # 16-byte Folded Reload2368; PC64LE9-NEXT:    addi 1, 1, 642369; PC64LE9-NEXT:    ld 0, 16(1)2370; PC64LE9-NEXT:    mtlr 02371; PC64LE9-NEXT:    blr2372entry:2373  %cos = call <2 x double> @llvm.experimental.constrained.cos.v2f64(2374                             <2 x double> %x,2375                             metadata !"round.dynamic",2376                             metadata !"fpexcept.strict") #12377  ret <2 x double> %cos2378}2379 2380define <3 x float> @constrained_vector_cos_v3f32(<3 x float> %x) #0 {2381; PC64LE-LABEL: constrained_vector_cos_v3f32:2382; PC64LE:       # %bb.0: # %entry2383; PC64LE-NEXT:    mflr 02384; PC64LE-NEXT:    stdu 1, -80(1)2385; PC64LE-NEXT:    xxsldwi 0, 34, 34, 12386; PC64LE-NEXT:    li 3, 482387; PC64LE-NEXT:    std 0, 96(1)2388; PC64LE-NEXT:    stfd 30, 64(1) # 8-byte Folded Spill2389; PC64LE-NEXT:    stfd 31, 72(1) # 8-byte Folded Spill2390; PC64LE-NEXT:    xscvspdpn 1, 02391; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill2392; PC64LE-NEXT:    vmr 31, 22393; PC64LE-NEXT:    bl cosf2394; PC64LE-NEXT:    nop2395; PC64LE-NEXT:    xxswapd 0, 632396; PC64LE-NEXT:    fmr 31, 12397; PC64LE-NEXT:    xscvspdpn 1, 02398; PC64LE-NEXT:    bl cosf2399; PC64LE-NEXT:    nop2400; PC64LE-NEXT:    xxsldwi 0, 63, 63, 32401; PC64LE-NEXT:    fmr 30, 12402; PC64LE-NEXT:    xscvspdpn 1, 02403; PC64LE-NEXT:    bl cosf2404; PC64LE-NEXT:    nop2405; PC64LE-NEXT:    xscvdpspn 0, 12406; PC64LE-NEXT:    xscvdpspn 1, 302407; PC64LE-NEXT:    addis 3, 2, .LCPI47_0@toc@ha2408; PC64LE-NEXT:    lfd 30, 64(1) # 8-byte Folded Reload2409; PC64LE-NEXT:    xscvdpspn 36, 312410; PC64LE-NEXT:    lfd 31, 72(1) # 8-byte Folded Reload2411; PC64LE-NEXT:    addi 3, 3, .LCPI47_0@toc@l2412; PC64LE-NEXT:    xxmrghw 34, 1, 02413; PC64LE-NEXT:    lxvd2x 0, 0, 32414; PC64LE-NEXT:    li 3, 482415; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload2416; PC64LE-NEXT:    xxswapd 35, 02417; PC64LE-NEXT:    vperm 2, 4, 2, 32418; PC64LE-NEXT:    addi 1, 1, 802419; PC64LE-NEXT:    ld 0, 16(1)2420; PC64LE-NEXT:    mtlr 02421; PC64LE-NEXT:    blr2422;2423; PC64LE9-LABEL: constrained_vector_cos_v3f32:2424; PC64LE9:       # %bb.0: # %entry2425; PC64LE9-NEXT:    mflr 02426; PC64LE9-NEXT:    stdu 1, -64(1)2427; PC64LE9-NEXT:    xxsldwi 0, 34, 34, 12428; PC64LE9-NEXT:    std 0, 80(1)2429; PC64LE9-NEXT:    stfd 30, 48(1) # 8-byte Folded Spill2430; PC64LE9-NEXT:    stxv 63, 32(1) # 16-byte Folded Spill2431; PC64LE9-NEXT:    stfd 31, 56(1) # 8-byte Folded Spill2432; PC64LE9-NEXT:    vmr 31, 22433; PC64LE9-NEXT:    xscvspdpn 1, 02434; PC64LE9-NEXT:    bl cosf2435; PC64LE9-NEXT:    nop2436; PC64LE9-NEXT:    xxswapd 0, 632437; PC64LE9-NEXT:    fmr 31, 12438; PC64LE9-NEXT:    xscvspdpn 1, 02439; PC64LE9-NEXT:    bl cosf2440; PC64LE9-NEXT:    nop2441; PC64LE9-NEXT:    xxsldwi 0, 63, 63, 32442; PC64LE9-NEXT:    fmr 30, 12443; PC64LE9-NEXT:    xscvspdpn 1, 02444; PC64LE9-NEXT:    bl cosf2445; PC64LE9-NEXT:    nop2446; PC64LE9-NEXT:    xscvdpspn 0, 12447; PC64LE9-NEXT:    xscvdpspn 1, 302448; PC64LE9-NEXT:    addis 3, 2, .LCPI47_0@toc@ha2449; PC64LE9-NEXT:    xscvdpspn 34, 312450; PC64LE9-NEXT:    lxv 63, 32(1) # 16-byte Folded Reload2451; PC64LE9-NEXT:    lfd 31, 56(1) # 8-byte Folded Reload2452; PC64LE9-NEXT:    addi 3, 3, .LCPI47_0@toc@l2453; PC64LE9-NEXT:    lfd 30, 48(1) # 8-byte Folded Reload2454; PC64LE9-NEXT:    xxmrghw 35, 1, 02455; PC64LE9-NEXT:    lxv 0, 0(3)2456; PC64LE9-NEXT:    xxperm 34, 35, 02457; PC64LE9-NEXT:    addi 1, 1, 642458; PC64LE9-NEXT:    ld 0, 16(1)2459; PC64LE9-NEXT:    mtlr 02460; PC64LE9-NEXT:    blr2461entry:2462  %cos = call <3 x float> @llvm.experimental.constrained.cos.v3f32(2463                              <3 x float> %x,2464                              metadata !"round.dynamic",2465                              metadata !"fpexcept.strict") #12466  ret <3 x float> %cos2467}2468 2469define <3 x double> @constrained_vector_cos_v3f64(<3 x double> %x) #0 {2470; PC64LE-LABEL: constrained_vector_cos_v3f64:2471; PC64LE:       # %bb.0: # %entry2472; PC64LE-NEXT:    mflr 02473; PC64LE-NEXT:    stdu 1, -80(1)2474; PC64LE-NEXT:    li 3, 482475; PC64LE-NEXT:    std 0, 96(1)2476; PC64LE-NEXT:    stfd 30, 64(1) # 8-byte Folded Spill2477; PC64LE-NEXT:    fmr 30, 22478; PC64LE-NEXT:    stfd 31, 72(1) # 8-byte Folded Spill2479; PC64LE-NEXT:    fmr 31, 32480; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill2481; PC64LE-NEXT:    bl cos2482; PC64LE-NEXT:    nop2483; PC64LE-NEXT:    xxlor 63, 1, 12484; PC64LE-NEXT:    fmr 1, 302485; PC64LE-NEXT:    bl cos2486; PC64LE-NEXT:    nop2487; PC64LE-NEXT:    xxmrghd 63, 1, 632488; PC64LE-NEXT:    fmr 1, 312489; PC64LE-NEXT:    bl cos2490; PC64LE-NEXT:    nop2491; PC64LE-NEXT:    li 3, 482492; PC64LE-NEXT:    fmr 3, 12493; PC64LE-NEXT:    xxswapd 1, 632494; PC64LE-NEXT:    lfd 31, 72(1) # 8-byte Folded Reload2495; PC64LE-NEXT:    xxlor 2, 63, 632496; PC64LE-NEXT:    lfd 30, 64(1) # 8-byte Folded Reload2497; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload2498; PC64LE-NEXT:    addi 1, 1, 802499; PC64LE-NEXT:    ld 0, 16(1)2500; PC64LE-NEXT:    mtlr 02501; PC64LE-NEXT:    blr2502;2503; PC64LE9-LABEL: constrained_vector_cos_v3f64:2504; PC64LE9:       # %bb.0: # %entry2505; PC64LE9-NEXT:    mflr 02506; PC64LE9-NEXT:    stdu 1, -64(1)2507; PC64LE9-NEXT:    std 0, 80(1)2508; PC64LE9-NEXT:    stfd 30, 48(1) # 8-byte Folded Spill2509; PC64LE9-NEXT:    stxv 63, 32(1) # 16-byte Folded Spill2510; PC64LE9-NEXT:    stfd 31, 56(1) # 8-byte Folded Spill2511; PC64LE9-NEXT:    fmr 31, 32512; PC64LE9-NEXT:    fmr 30, 22513; PC64LE9-NEXT:    bl cos2514; PC64LE9-NEXT:    nop2515; PC64LE9-NEXT:    xscpsgndp 63, 1, 12516; PC64LE9-NEXT:    fmr 1, 302517; PC64LE9-NEXT:    bl cos2518; PC64LE9-NEXT:    nop2519; PC64LE9-NEXT:    xxmrghd 63, 1, 632520; PC64LE9-NEXT:    fmr 1, 312521; PC64LE9-NEXT:    bl cos2522; PC64LE9-NEXT:    nop2523; PC64LE9-NEXT:    fmr 3, 12524; PC64LE9-NEXT:    xxswapd 1, 632525; PC64LE9-NEXT:    xscpsgndp 2, 63, 632526; PC64LE9-NEXT:    lxv 63, 32(1) # 16-byte Folded Reload2527; PC64LE9-NEXT:    lfd 31, 56(1) # 8-byte Folded Reload2528; PC64LE9-NEXT:    lfd 30, 48(1) # 8-byte Folded Reload2529; PC64LE9-NEXT:    addi 1, 1, 642530; PC64LE9-NEXT:    ld 0, 16(1)2531; PC64LE9-NEXT:    mtlr 02532; PC64LE9-NEXT:    blr2533entry:2534  %cos = call <3 x double> @llvm.experimental.constrained.cos.v3f64(2535                          <3 x double> %x,2536                          metadata !"round.dynamic",2537                          metadata !"fpexcept.strict") #12538  ret <3 x double> %cos2539}2540 2541define <4 x double> @constrained_vector_cos_v4f64(<4 x double> %x) #0 {2542; PC64LE-LABEL: constrained_vector_cos_v4f64:2543; PC64LE:       # %bb.0: # %entry2544; PC64LE-NEXT:    mflr 02545; PC64LE-NEXT:    stdu 1, -96(1)2546; PC64LE-NEXT:    li 3, 482547; PC64LE-NEXT:    std 0, 112(1)2548; PC64LE-NEXT:    stxvd2x 61, 1, 3 # 16-byte Folded Spill2549; PC64LE-NEXT:    li 3, 642550; PC64LE-NEXT:    stxvd2x 62, 1, 3 # 16-byte Folded Spill2551; PC64LE-NEXT:    vmr 30, 22552; PC64LE-NEXT:    li 3, 802553; PC64LE-NEXT:    xxlor 1, 62, 622554; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill2555; PC64LE-NEXT:    vmr 31, 32556; PC64LE-NEXT:    bl cos2557; PC64LE-NEXT:    nop2558; PC64LE-NEXT:    xxlor 61, 1, 12559; PC64LE-NEXT:    xxswapd 1, 622560; PC64LE-NEXT:    bl cos2561; PC64LE-NEXT:    nop2562; PC64LE-NEXT:    xxmrghd 62, 61, 12563; PC64LE-NEXT:    xxlor 1, 63, 632564; PC64LE-NEXT:    bl cos2565; PC64LE-NEXT:    nop2566; PC64LE-NEXT:    xxlor 61, 1, 12567; PC64LE-NEXT:    xxswapd 1, 632568; PC64LE-NEXT:    bl cos2569; PC64LE-NEXT:    nop2570; PC64LE-NEXT:    li 3, 802571; PC64LE-NEXT:    vmr 2, 302572; PC64LE-NEXT:    xxmrghd 35, 61, 12573; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload2574; PC64LE-NEXT:    li 3, 642575; PC64LE-NEXT:    lxvd2x 62, 1, 3 # 16-byte Folded Reload2576; PC64LE-NEXT:    li 3, 482577; PC64LE-NEXT:    lxvd2x 61, 1, 3 # 16-byte Folded Reload2578; PC64LE-NEXT:    addi 1, 1, 962579; PC64LE-NEXT:    ld 0, 16(1)2580; PC64LE-NEXT:    mtlr 02581; PC64LE-NEXT:    blr2582;2583; PC64LE9-LABEL: constrained_vector_cos_v4f64:2584; PC64LE9:       # %bb.0: # %entry2585; PC64LE9-NEXT:    mflr 02586; PC64LE9-NEXT:    stdu 1, -80(1)2587; PC64LE9-NEXT:    std 0, 96(1)2588; PC64LE9-NEXT:    stxv 62, 48(1) # 16-byte Folded Spill2589; PC64LE9-NEXT:    vmr 30, 22590; PC64LE9-NEXT:    xscpsgndp 1, 62, 622591; PC64LE9-NEXT:    stxv 61, 32(1) # 16-byte Folded Spill2592; PC64LE9-NEXT:    stxv 63, 64(1) # 16-byte Folded Spill2593; PC64LE9-NEXT:    vmr 31, 32594; PC64LE9-NEXT:    bl cos2595; PC64LE9-NEXT:    nop2596; PC64LE9-NEXT:    xscpsgndp 61, 1, 12597; PC64LE9-NEXT:    xxswapd 1, 622598; PC64LE9-NEXT:    bl cos2599; PC64LE9-NEXT:    nop2600; PC64LE9-NEXT:    xxmrghd 62, 61, 12601; PC64LE9-NEXT:    xscpsgndp 1, 63, 632602; PC64LE9-NEXT:    bl cos2603; PC64LE9-NEXT:    nop2604; PC64LE9-NEXT:    xscpsgndp 61, 1, 12605; PC64LE9-NEXT:    xxswapd 1, 632606; PC64LE9-NEXT:    bl cos2607; PC64LE9-NEXT:    nop2608; PC64LE9-NEXT:    xxmrghd 35, 61, 12609; PC64LE9-NEXT:    vmr 2, 302610; PC64LE9-NEXT:    lxv 63, 64(1) # 16-byte Folded Reload2611; PC64LE9-NEXT:    lxv 62, 48(1) # 16-byte Folded Reload2612; PC64LE9-NEXT:    lxv 61, 32(1) # 16-byte Folded Reload2613; PC64LE9-NEXT:    addi 1, 1, 802614; PC64LE9-NEXT:    ld 0, 16(1)2615; PC64LE9-NEXT:    mtlr 02616; PC64LE9-NEXT:    blr2617entry:2618  %cos = call <4 x double> @llvm.experimental.constrained.cos.v4f64(2619                             <4 x double> %x,2620                             metadata !"round.dynamic",2621                             metadata !"fpexcept.strict") #12622  ret <4 x double> %cos2623}2624 2625define <1 x float> @constrained_vector_exp_v1f32(<1 x float> %x) #0 {2626; PC64LE-LABEL: constrained_vector_exp_v1f32:2627; PC64LE:       # %bb.0: # %entry2628; PC64LE-NEXT:    mflr 02629; PC64LE-NEXT:    stdu 1, -32(1)2630; PC64LE-NEXT:    std 0, 48(1)2631; PC64LE-NEXT:    bl expf2632; PC64LE-NEXT:    nop2633; PC64LE-NEXT:    addi 1, 1, 322634; PC64LE-NEXT:    ld 0, 16(1)2635; PC64LE-NEXT:    mtlr 02636; PC64LE-NEXT:    blr2637;2638; PC64LE9-LABEL: constrained_vector_exp_v1f32:2639; PC64LE9:       # %bb.0: # %entry2640; PC64LE9-NEXT:    mflr 02641; PC64LE9-NEXT:    stdu 1, -32(1)2642; PC64LE9-NEXT:    std 0, 48(1)2643; PC64LE9-NEXT:    bl expf2644; PC64LE9-NEXT:    nop2645; PC64LE9-NEXT:    addi 1, 1, 322646; PC64LE9-NEXT:    ld 0, 16(1)2647; PC64LE9-NEXT:    mtlr 02648; PC64LE9-NEXT:    blr2649entry:2650  %exp = call <1 x float> @llvm.experimental.constrained.exp.v1f32(2651                             <1 x float> %x,2652                             metadata !"round.dynamic",2653                             metadata !"fpexcept.strict") #12654  ret <1 x float> %exp2655}2656 2657define <2 x double> @constrained_vector_exp_v2f64(<2 x double> %x) #0 {2658; PC64LE-LABEL: constrained_vector_exp_v2f64:2659; PC64LE:       # %bb.0: # %entry2660; PC64LE-NEXT:    mflr 02661; PC64LE-NEXT:    stdu 1, -80(1)2662; PC64LE-NEXT:    li 3, 482663; PC64LE-NEXT:    std 0, 96(1)2664; PC64LE-NEXT:    stxvd2x 62, 1, 3 # 16-byte Folded Spill2665; PC64LE-NEXT:    li 3, 642666; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill2667; PC64LE-NEXT:    vmr 31, 22668; PC64LE-NEXT:    xxlor 1, 63, 632669; PC64LE-NEXT:    bl exp2670; PC64LE-NEXT:    nop2671; PC64LE-NEXT:    xxlor 62, 1, 12672; PC64LE-NEXT:    xxswapd 1, 632673; PC64LE-NEXT:    bl exp2674; PC64LE-NEXT:    nop2675; PC64LE-NEXT:    li 3, 642676; PC64LE-NEXT:    xxmrghd 34, 62, 12677; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload2678; PC64LE-NEXT:    li 3, 482679; PC64LE-NEXT:    lxvd2x 62, 1, 3 # 16-byte Folded Reload2680; PC64LE-NEXT:    addi 1, 1, 802681; PC64LE-NEXT:    ld 0, 16(1)2682; PC64LE-NEXT:    mtlr 02683; PC64LE-NEXT:    blr2684;2685; PC64LE9-LABEL: constrained_vector_exp_v2f64:2686; PC64LE9:       # %bb.0: # %entry2687; PC64LE9-NEXT:    mflr 02688; PC64LE9-NEXT:    stdu 1, -64(1)2689; PC64LE9-NEXT:    std 0, 80(1)2690; PC64LE9-NEXT:    stxv 63, 48(1) # 16-byte Folded Spill2691; PC64LE9-NEXT:    vmr 31, 22692; PC64LE9-NEXT:    xscpsgndp 1, 63, 632693; PC64LE9-NEXT:    stxv 62, 32(1) # 16-byte Folded Spill2694; PC64LE9-NEXT:    bl exp2695; PC64LE9-NEXT:    nop2696; PC64LE9-NEXT:    xscpsgndp 62, 1, 12697; PC64LE9-NEXT:    xxswapd 1, 632698; PC64LE9-NEXT:    bl exp2699; PC64LE9-NEXT:    nop2700; PC64LE9-NEXT:    xxmrghd 34, 62, 12701; PC64LE9-NEXT:    lxv 63, 48(1) # 16-byte Folded Reload2702; PC64LE9-NEXT:    lxv 62, 32(1) # 16-byte Folded Reload2703; PC64LE9-NEXT:    addi 1, 1, 642704; PC64LE9-NEXT:    ld 0, 16(1)2705; PC64LE9-NEXT:    mtlr 02706; PC64LE9-NEXT:    blr2707entry:2708  %exp = call <2 x double> @llvm.experimental.constrained.exp.v2f64(2709                             <2 x double> %x,2710                             metadata !"round.dynamic",2711                             metadata !"fpexcept.strict") #12712  ret <2 x double> %exp2713}2714 2715define <3 x float> @constrained_vector_exp_v3f32(<3 x float> %x) #0 {2716; PC64LE-LABEL: constrained_vector_exp_v3f32:2717; PC64LE:       # %bb.0: # %entry2718; PC64LE-NEXT:    mflr 02719; PC64LE-NEXT:    stdu 1, -80(1)2720; PC64LE-NEXT:    xxsldwi 0, 34, 34, 12721; PC64LE-NEXT:    li 3, 482722; PC64LE-NEXT:    std 0, 96(1)2723; PC64LE-NEXT:    stfd 30, 64(1) # 8-byte Folded Spill2724; PC64LE-NEXT:    stfd 31, 72(1) # 8-byte Folded Spill2725; PC64LE-NEXT:    xscvspdpn 1, 02726; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill2727; PC64LE-NEXT:    vmr 31, 22728; PC64LE-NEXT:    bl expf2729; PC64LE-NEXT:    nop2730; PC64LE-NEXT:    xxswapd 0, 632731; PC64LE-NEXT:    fmr 31, 12732; PC64LE-NEXT:    xscvspdpn 1, 02733; PC64LE-NEXT:    bl expf2734; PC64LE-NEXT:    nop2735; PC64LE-NEXT:    xxsldwi 0, 63, 63, 32736; PC64LE-NEXT:    fmr 30, 12737; PC64LE-NEXT:    xscvspdpn 1, 02738; PC64LE-NEXT:    bl expf2739; PC64LE-NEXT:    nop2740; PC64LE-NEXT:    xscvdpspn 0, 12741; PC64LE-NEXT:    xscvdpspn 1, 302742; PC64LE-NEXT:    addis 3, 2, .LCPI52_0@toc@ha2743; PC64LE-NEXT:    lfd 30, 64(1) # 8-byte Folded Reload2744; PC64LE-NEXT:    xscvdpspn 36, 312745; PC64LE-NEXT:    lfd 31, 72(1) # 8-byte Folded Reload2746; PC64LE-NEXT:    addi 3, 3, .LCPI52_0@toc@l2747; PC64LE-NEXT:    xxmrghw 34, 1, 02748; PC64LE-NEXT:    lxvd2x 0, 0, 32749; PC64LE-NEXT:    li 3, 482750; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload2751; PC64LE-NEXT:    xxswapd 35, 02752; PC64LE-NEXT:    vperm 2, 4, 2, 32753; PC64LE-NEXT:    addi 1, 1, 802754; PC64LE-NEXT:    ld 0, 16(1)2755; PC64LE-NEXT:    mtlr 02756; PC64LE-NEXT:    blr2757;2758; PC64LE9-LABEL: constrained_vector_exp_v3f32:2759; PC64LE9:       # %bb.0: # %entry2760; PC64LE9-NEXT:    mflr 02761; PC64LE9-NEXT:    stdu 1, -64(1)2762; PC64LE9-NEXT:    xxsldwi 0, 34, 34, 12763; PC64LE9-NEXT:    std 0, 80(1)2764; PC64LE9-NEXT:    stfd 30, 48(1) # 8-byte Folded Spill2765; PC64LE9-NEXT:    stxv 63, 32(1) # 16-byte Folded Spill2766; PC64LE9-NEXT:    stfd 31, 56(1) # 8-byte Folded Spill2767; PC64LE9-NEXT:    vmr 31, 22768; PC64LE9-NEXT:    xscvspdpn 1, 02769; PC64LE9-NEXT:    bl expf2770; PC64LE9-NEXT:    nop2771; PC64LE9-NEXT:    xxswapd 0, 632772; PC64LE9-NEXT:    fmr 31, 12773; PC64LE9-NEXT:    xscvspdpn 1, 02774; PC64LE9-NEXT:    bl expf2775; PC64LE9-NEXT:    nop2776; PC64LE9-NEXT:    xxsldwi 0, 63, 63, 32777; PC64LE9-NEXT:    fmr 30, 12778; PC64LE9-NEXT:    xscvspdpn 1, 02779; PC64LE9-NEXT:    bl expf2780; PC64LE9-NEXT:    nop2781; PC64LE9-NEXT:    xscvdpspn 0, 12782; PC64LE9-NEXT:    xscvdpspn 1, 302783; PC64LE9-NEXT:    addis 3, 2, .LCPI52_0@toc@ha2784; PC64LE9-NEXT:    xscvdpspn 34, 312785; PC64LE9-NEXT:    lxv 63, 32(1) # 16-byte Folded Reload2786; PC64LE9-NEXT:    lfd 31, 56(1) # 8-byte Folded Reload2787; PC64LE9-NEXT:    addi 3, 3, .LCPI52_0@toc@l2788; PC64LE9-NEXT:    lfd 30, 48(1) # 8-byte Folded Reload2789; PC64LE9-NEXT:    xxmrghw 35, 1, 02790; PC64LE9-NEXT:    lxv 0, 0(3)2791; PC64LE9-NEXT:    xxperm 34, 35, 02792; PC64LE9-NEXT:    addi 1, 1, 642793; PC64LE9-NEXT:    ld 0, 16(1)2794; PC64LE9-NEXT:    mtlr 02795; PC64LE9-NEXT:    blr2796entry:2797  %exp = call <3 x float> @llvm.experimental.constrained.exp.v3f32(2798                              <3 x float> %x,2799                              metadata !"round.dynamic",2800                              metadata !"fpexcept.strict") #12801  ret <3 x float> %exp2802}2803 2804define <3 x double> @constrained_vector_exp_v3f64(<3 x double> %x) #0 {2805; PC64LE-LABEL: constrained_vector_exp_v3f64:2806; PC64LE:       # %bb.0: # %entry2807; PC64LE-NEXT:    mflr 02808; PC64LE-NEXT:    stdu 1, -80(1)2809; PC64LE-NEXT:    li 3, 482810; PC64LE-NEXT:    std 0, 96(1)2811; PC64LE-NEXT:    stfd 30, 64(1) # 8-byte Folded Spill2812; PC64LE-NEXT:    fmr 30, 22813; PC64LE-NEXT:    stfd 31, 72(1) # 8-byte Folded Spill2814; PC64LE-NEXT:    fmr 31, 32815; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill2816; PC64LE-NEXT:    bl exp2817; PC64LE-NEXT:    nop2818; PC64LE-NEXT:    xxlor 63, 1, 12819; PC64LE-NEXT:    fmr 1, 302820; PC64LE-NEXT:    bl exp2821; PC64LE-NEXT:    nop2822; PC64LE-NEXT:    xxmrghd 63, 1, 632823; PC64LE-NEXT:    fmr 1, 312824; PC64LE-NEXT:    bl exp2825; PC64LE-NEXT:    nop2826; PC64LE-NEXT:    li 3, 482827; PC64LE-NEXT:    fmr 3, 12828; PC64LE-NEXT:    xxswapd 1, 632829; PC64LE-NEXT:    lfd 31, 72(1) # 8-byte Folded Reload2830; PC64LE-NEXT:    xxlor 2, 63, 632831; PC64LE-NEXT:    lfd 30, 64(1) # 8-byte Folded Reload2832; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload2833; PC64LE-NEXT:    addi 1, 1, 802834; PC64LE-NEXT:    ld 0, 16(1)2835; PC64LE-NEXT:    mtlr 02836; PC64LE-NEXT:    blr2837;2838; PC64LE9-LABEL: constrained_vector_exp_v3f64:2839; PC64LE9:       # %bb.0: # %entry2840; PC64LE9-NEXT:    mflr 02841; PC64LE9-NEXT:    stdu 1, -64(1)2842; PC64LE9-NEXT:    std 0, 80(1)2843; PC64LE9-NEXT:    stfd 30, 48(1) # 8-byte Folded Spill2844; PC64LE9-NEXT:    stxv 63, 32(1) # 16-byte Folded Spill2845; PC64LE9-NEXT:    stfd 31, 56(1) # 8-byte Folded Spill2846; PC64LE9-NEXT:    fmr 31, 32847; PC64LE9-NEXT:    fmr 30, 22848; PC64LE9-NEXT:    bl exp2849; PC64LE9-NEXT:    nop2850; PC64LE9-NEXT:    xscpsgndp 63, 1, 12851; PC64LE9-NEXT:    fmr 1, 302852; PC64LE9-NEXT:    bl exp2853; PC64LE9-NEXT:    nop2854; PC64LE9-NEXT:    xxmrghd 63, 1, 632855; PC64LE9-NEXT:    fmr 1, 312856; PC64LE9-NEXT:    bl exp2857; PC64LE9-NEXT:    nop2858; PC64LE9-NEXT:    fmr 3, 12859; PC64LE9-NEXT:    xxswapd 1, 632860; PC64LE9-NEXT:    xscpsgndp 2, 63, 632861; PC64LE9-NEXT:    lxv 63, 32(1) # 16-byte Folded Reload2862; PC64LE9-NEXT:    lfd 31, 56(1) # 8-byte Folded Reload2863; PC64LE9-NEXT:    lfd 30, 48(1) # 8-byte Folded Reload2864; PC64LE9-NEXT:    addi 1, 1, 642865; PC64LE9-NEXT:    ld 0, 16(1)2866; PC64LE9-NEXT:    mtlr 02867; PC64LE9-NEXT:    blr2868entry:2869  %exp = call <3 x double> @llvm.experimental.constrained.exp.v3f64(2870                          <3 x double> %x,2871                          metadata !"round.dynamic",2872                          metadata !"fpexcept.strict") #12873  ret <3 x double> %exp2874}2875 2876define <4 x double> @constrained_vector_exp_v4f64(<4 x double> %x) #0 {2877; PC64LE-LABEL: constrained_vector_exp_v4f64:2878; PC64LE:       # %bb.0: # %entry2879; PC64LE-NEXT:    mflr 02880; PC64LE-NEXT:    stdu 1, -96(1)2881; PC64LE-NEXT:    li 3, 482882; PC64LE-NEXT:    std 0, 112(1)2883; PC64LE-NEXT:    stxvd2x 61, 1, 3 # 16-byte Folded Spill2884; PC64LE-NEXT:    li 3, 642885; PC64LE-NEXT:    stxvd2x 62, 1, 3 # 16-byte Folded Spill2886; PC64LE-NEXT:    vmr 30, 22887; PC64LE-NEXT:    li 3, 802888; PC64LE-NEXT:    xxlor 1, 62, 622889; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill2890; PC64LE-NEXT:    vmr 31, 32891; PC64LE-NEXT:    bl exp2892; PC64LE-NEXT:    nop2893; PC64LE-NEXT:    xxlor 61, 1, 12894; PC64LE-NEXT:    xxswapd 1, 622895; PC64LE-NEXT:    bl exp2896; PC64LE-NEXT:    nop2897; PC64LE-NEXT:    xxmrghd 62, 61, 12898; PC64LE-NEXT:    xxlor 1, 63, 632899; PC64LE-NEXT:    bl exp2900; PC64LE-NEXT:    nop2901; PC64LE-NEXT:    xxlor 61, 1, 12902; PC64LE-NEXT:    xxswapd 1, 632903; PC64LE-NEXT:    bl exp2904; PC64LE-NEXT:    nop2905; PC64LE-NEXT:    li 3, 802906; PC64LE-NEXT:    vmr 2, 302907; PC64LE-NEXT:    xxmrghd 35, 61, 12908; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload2909; PC64LE-NEXT:    li 3, 642910; PC64LE-NEXT:    lxvd2x 62, 1, 3 # 16-byte Folded Reload2911; PC64LE-NEXT:    li 3, 482912; PC64LE-NEXT:    lxvd2x 61, 1, 3 # 16-byte Folded Reload2913; PC64LE-NEXT:    addi 1, 1, 962914; PC64LE-NEXT:    ld 0, 16(1)2915; PC64LE-NEXT:    mtlr 02916; PC64LE-NEXT:    blr2917;2918; PC64LE9-LABEL: constrained_vector_exp_v4f64:2919; PC64LE9:       # %bb.0: # %entry2920; PC64LE9-NEXT:    mflr 02921; PC64LE9-NEXT:    stdu 1, -80(1)2922; PC64LE9-NEXT:    std 0, 96(1)2923; PC64LE9-NEXT:    stxv 62, 48(1) # 16-byte Folded Spill2924; PC64LE9-NEXT:    vmr 30, 22925; PC64LE9-NEXT:    xscpsgndp 1, 62, 622926; PC64LE9-NEXT:    stxv 61, 32(1) # 16-byte Folded Spill2927; PC64LE9-NEXT:    stxv 63, 64(1) # 16-byte Folded Spill2928; PC64LE9-NEXT:    vmr 31, 32929; PC64LE9-NEXT:    bl exp2930; PC64LE9-NEXT:    nop2931; PC64LE9-NEXT:    xscpsgndp 61, 1, 12932; PC64LE9-NEXT:    xxswapd 1, 622933; PC64LE9-NEXT:    bl exp2934; PC64LE9-NEXT:    nop2935; PC64LE9-NEXT:    xxmrghd 62, 61, 12936; PC64LE9-NEXT:    xscpsgndp 1, 63, 632937; PC64LE9-NEXT:    bl exp2938; PC64LE9-NEXT:    nop2939; PC64LE9-NEXT:    xscpsgndp 61, 1, 12940; PC64LE9-NEXT:    xxswapd 1, 632941; PC64LE9-NEXT:    bl exp2942; PC64LE9-NEXT:    nop2943; PC64LE9-NEXT:    xxmrghd 35, 61, 12944; PC64LE9-NEXT:    vmr 2, 302945; PC64LE9-NEXT:    lxv 63, 64(1) # 16-byte Folded Reload2946; PC64LE9-NEXT:    lxv 62, 48(1) # 16-byte Folded Reload2947; PC64LE9-NEXT:    lxv 61, 32(1) # 16-byte Folded Reload2948; PC64LE9-NEXT:    addi 1, 1, 802949; PC64LE9-NEXT:    ld 0, 16(1)2950; PC64LE9-NEXT:    mtlr 02951; PC64LE9-NEXT:    blr2952entry:2953  %exp = call <4 x double> @llvm.experimental.constrained.exp.v4f64(2954                             <4 x double> %x,2955                             metadata !"round.dynamic",2956                             metadata !"fpexcept.strict") #12957  ret <4 x double> %exp2958}2959 2960define <1 x float> @constrained_vector_exp2_v1f32(<1 x float> %x) #0 {2961; PC64LE-LABEL: constrained_vector_exp2_v1f32:2962; PC64LE:       # %bb.0: # %entry2963; PC64LE-NEXT:    mflr 02964; PC64LE-NEXT:    stdu 1, -32(1)2965; PC64LE-NEXT:    std 0, 48(1)2966; PC64LE-NEXT:    bl exp2f2967; PC64LE-NEXT:    nop2968; PC64LE-NEXT:    addi 1, 1, 322969; PC64LE-NEXT:    ld 0, 16(1)2970; PC64LE-NEXT:    mtlr 02971; PC64LE-NEXT:    blr2972;2973; PC64LE9-LABEL: constrained_vector_exp2_v1f32:2974; PC64LE9:       # %bb.0: # %entry2975; PC64LE9-NEXT:    mflr 02976; PC64LE9-NEXT:    stdu 1, -32(1)2977; PC64LE9-NEXT:    std 0, 48(1)2978; PC64LE9-NEXT:    bl exp2f2979; PC64LE9-NEXT:    nop2980; PC64LE9-NEXT:    addi 1, 1, 322981; PC64LE9-NEXT:    ld 0, 16(1)2982; PC64LE9-NEXT:    mtlr 02983; PC64LE9-NEXT:    blr2984entry:2985  %exp2 = call <1 x float> @llvm.experimental.constrained.exp2.v1f32(2986                             <1 x float> %x,2987                             metadata !"round.dynamic",2988                             metadata !"fpexcept.strict") #12989  ret <1 x float> %exp22990}2991 2992define <2 x double> @constrained_vector_exp2_v2f64(<2 x double> %x) #0 {2993; PC64LE-LABEL: constrained_vector_exp2_v2f64:2994; PC64LE:       # %bb.0: # %entry2995; PC64LE-NEXT:    mflr 02996; PC64LE-NEXT:    stdu 1, -80(1)2997; PC64LE-NEXT:    li 3, 482998; PC64LE-NEXT:    std 0, 96(1)2999; PC64LE-NEXT:    stxvd2x 62, 1, 3 # 16-byte Folded Spill3000; PC64LE-NEXT:    li 3, 643001; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill3002; PC64LE-NEXT:    vmr 31, 23003; PC64LE-NEXT:    xxlor 1, 63, 633004; PC64LE-NEXT:    bl exp23005; PC64LE-NEXT:    nop3006; PC64LE-NEXT:    xxlor 62, 1, 13007; PC64LE-NEXT:    xxswapd 1, 633008; PC64LE-NEXT:    bl exp23009; PC64LE-NEXT:    nop3010; PC64LE-NEXT:    li 3, 643011; PC64LE-NEXT:    xxmrghd 34, 62, 13012; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload3013; PC64LE-NEXT:    li 3, 483014; PC64LE-NEXT:    lxvd2x 62, 1, 3 # 16-byte Folded Reload3015; PC64LE-NEXT:    addi 1, 1, 803016; PC64LE-NEXT:    ld 0, 16(1)3017; PC64LE-NEXT:    mtlr 03018; PC64LE-NEXT:    blr3019;3020; PC64LE9-LABEL: constrained_vector_exp2_v2f64:3021; PC64LE9:       # %bb.0: # %entry3022; PC64LE9-NEXT:    mflr 03023; PC64LE9-NEXT:    stdu 1, -64(1)3024; PC64LE9-NEXT:    std 0, 80(1)3025; PC64LE9-NEXT:    stxv 63, 48(1) # 16-byte Folded Spill3026; PC64LE9-NEXT:    vmr 31, 23027; PC64LE9-NEXT:    xscpsgndp 1, 63, 633028; PC64LE9-NEXT:    stxv 62, 32(1) # 16-byte Folded Spill3029; PC64LE9-NEXT:    bl exp23030; PC64LE9-NEXT:    nop3031; PC64LE9-NEXT:    xscpsgndp 62, 1, 13032; PC64LE9-NEXT:    xxswapd 1, 633033; PC64LE9-NEXT:    bl exp23034; PC64LE9-NEXT:    nop3035; PC64LE9-NEXT:    xxmrghd 34, 62, 13036; PC64LE9-NEXT:    lxv 63, 48(1) # 16-byte Folded Reload3037; PC64LE9-NEXT:    lxv 62, 32(1) # 16-byte Folded Reload3038; PC64LE9-NEXT:    addi 1, 1, 643039; PC64LE9-NEXT:    ld 0, 16(1)3040; PC64LE9-NEXT:    mtlr 03041; PC64LE9-NEXT:    blr3042entry:3043  %exp2 = call <2 x double> @llvm.experimental.constrained.exp2.v2f64(3044                              <2 x double> %x,3045                              metadata !"round.dynamic",3046                              metadata !"fpexcept.strict") #13047  ret <2 x double> %exp23048}3049 3050define <3 x float> @constrained_vector_exp2_v3f32(<3 x float> %x) #0 {3051; PC64LE-LABEL: constrained_vector_exp2_v3f32:3052; PC64LE:       # %bb.0: # %entry3053; PC64LE-NEXT:    mflr 03054; PC64LE-NEXT:    stdu 1, -80(1)3055; PC64LE-NEXT:    xxsldwi 0, 34, 34, 13056; PC64LE-NEXT:    li 3, 483057; PC64LE-NEXT:    std 0, 96(1)3058; PC64LE-NEXT:    stfd 30, 64(1) # 8-byte Folded Spill3059; PC64LE-NEXT:    stfd 31, 72(1) # 8-byte Folded Spill3060; PC64LE-NEXT:    xscvspdpn 1, 03061; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill3062; PC64LE-NEXT:    vmr 31, 23063; PC64LE-NEXT:    bl exp2f3064; PC64LE-NEXT:    nop3065; PC64LE-NEXT:    xxswapd 0, 633066; PC64LE-NEXT:    fmr 31, 13067; PC64LE-NEXT:    xscvspdpn 1, 03068; PC64LE-NEXT:    bl exp2f3069; PC64LE-NEXT:    nop3070; PC64LE-NEXT:    xxsldwi 0, 63, 63, 33071; PC64LE-NEXT:    fmr 30, 13072; PC64LE-NEXT:    xscvspdpn 1, 03073; PC64LE-NEXT:    bl exp2f3074; PC64LE-NEXT:    nop3075; PC64LE-NEXT:    xscvdpspn 0, 13076; PC64LE-NEXT:    xscvdpspn 1, 303077; PC64LE-NEXT:    addis 3, 2, .LCPI57_0@toc@ha3078; PC64LE-NEXT:    lfd 30, 64(1) # 8-byte Folded Reload3079; PC64LE-NEXT:    xscvdpspn 36, 313080; PC64LE-NEXT:    lfd 31, 72(1) # 8-byte Folded Reload3081; PC64LE-NEXT:    addi 3, 3, .LCPI57_0@toc@l3082; PC64LE-NEXT:    xxmrghw 34, 1, 03083; PC64LE-NEXT:    lxvd2x 0, 0, 33084; PC64LE-NEXT:    li 3, 483085; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload3086; PC64LE-NEXT:    xxswapd 35, 03087; PC64LE-NEXT:    vperm 2, 4, 2, 33088; PC64LE-NEXT:    addi 1, 1, 803089; PC64LE-NEXT:    ld 0, 16(1)3090; PC64LE-NEXT:    mtlr 03091; PC64LE-NEXT:    blr3092;3093; PC64LE9-LABEL: constrained_vector_exp2_v3f32:3094; PC64LE9:       # %bb.0: # %entry3095; PC64LE9-NEXT:    mflr 03096; PC64LE9-NEXT:    stdu 1, -64(1)3097; PC64LE9-NEXT:    xxsldwi 0, 34, 34, 13098; PC64LE9-NEXT:    std 0, 80(1)3099; PC64LE9-NEXT:    stfd 30, 48(1) # 8-byte Folded Spill3100; PC64LE9-NEXT:    stxv 63, 32(1) # 16-byte Folded Spill3101; PC64LE9-NEXT:    stfd 31, 56(1) # 8-byte Folded Spill3102; PC64LE9-NEXT:    vmr 31, 23103; PC64LE9-NEXT:    xscvspdpn 1, 03104; PC64LE9-NEXT:    bl exp2f3105; PC64LE9-NEXT:    nop3106; PC64LE9-NEXT:    xxswapd 0, 633107; PC64LE9-NEXT:    fmr 31, 13108; PC64LE9-NEXT:    xscvspdpn 1, 03109; PC64LE9-NEXT:    bl exp2f3110; PC64LE9-NEXT:    nop3111; PC64LE9-NEXT:    xxsldwi 0, 63, 63, 33112; PC64LE9-NEXT:    fmr 30, 13113; PC64LE9-NEXT:    xscvspdpn 1, 03114; PC64LE9-NEXT:    bl exp2f3115; PC64LE9-NEXT:    nop3116; PC64LE9-NEXT:    xscvdpspn 0, 13117; PC64LE9-NEXT:    xscvdpspn 1, 303118; PC64LE9-NEXT:    addis 3, 2, .LCPI57_0@toc@ha3119; PC64LE9-NEXT:    xscvdpspn 34, 313120; PC64LE9-NEXT:    lxv 63, 32(1) # 16-byte Folded Reload3121; PC64LE9-NEXT:    lfd 31, 56(1) # 8-byte Folded Reload3122; PC64LE9-NEXT:    addi 3, 3, .LCPI57_0@toc@l3123; PC64LE9-NEXT:    lfd 30, 48(1) # 8-byte Folded Reload3124; PC64LE9-NEXT:    xxmrghw 35, 1, 03125; PC64LE9-NEXT:    lxv 0, 0(3)3126; PC64LE9-NEXT:    xxperm 34, 35, 03127; PC64LE9-NEXT:    addi 1, 1, 643128; PC64LE9-NEXT:    ld 0, 16(1)3129; PC64LE9-NEXT:    mtlr 03130; PC64LE9-NEXT:    blr3131entry:3132  %exp2 = call <3 x float> @llvm.experimental.constrained.exp2.v3f32(3133                              <3 x float> %x,3134                              metadata !"round.dynamic",3135                              metadata !"fpexcept.strict") #13136  ret <3 x float> %exp23137}3138 3139define <3 x double> @constrained_vector_exp2_v3f64(<3 x double> %x) #0 {3140; PC64LE-LABEL: constrained_vector_exp2_v3f64:3141; PC64LE:       # %bb.0: # %entry3142; PC64LE-NEXT:    mflr 03143; PC64LE-NEXT:    stdu 1, -80(1)3144; PC64LE-NEXT:    li 3, 483145; PC64LE-NEXT:    std 0, 96(1)3146; PC64LE-NEXT:    stfd 30, 64(1) # 8-byte Folded Spill3147; PC64LE-NEXT:    fmr 30, 23148; PC64LE-NEXT:    stfd 31, 72(1) # 8-byte Folded Spill3149; PC64LE-NEXT:    fmr 31, 33150; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill3151; PC64LE-NEXT:    bl exp23152; PC64LE-NEXT:    nop3153; PC64LE-NEXT:    xxlor 63, 1, 13154; PC64LE-NEXT:    fmr 1, 303155; PC64LE-NEXT:    bl exp23156; PC64LE-NEXT:    nop3157; PC64LE-NEXT:    xxmrghd 63, 1, 633158; PC64LE-NEXT:    fmr 1, 313159; PC64LE-NEXT:    bl exp23160; PC64LE-NEXT:    nop3161; PC64LE-NEXT:    li 3, 483162; PC64LE-NEXT:    fmr 3, 13163; PC64LE-NEXT:    xxswapd 1, 633164; PC64LE-NEXT:    lfd 31, 72(1) # 8-byte Folded Reload3165; PC64LE-NEXT:    xxlor 2, 63, 633166; PC64LE-NEXT:    lfd 30, 64(1) # 8-byte Folded Reload3167; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload3168; PC64LE-NEXT:    addi 1, 1, 803169; PC64LE-NEXT:    ld 0, 16(1)3170; PC64LE-NEXT:    mtlr 03171; PC64LE-NEXT:    blr3172;3173; PC64LE9-LABEL: constrained_vector_exp2_v3f64:3174; PC64LE9:       # %bb.0: # %entry3175; PC64LE9-NEXT:    mflr 03176; PC64LE9-NEXT:    stdu 1, -64(1)3177; PC64LE9-NEXT:    std 0, 80(1)3178; PC64LE9-NEXT:    stfd 30, 48(1) # 8-byte Folded Spill3179; PC64LE9-NEXT:    stxv 63, 32(1) # 16-byte Folded Spill3180; PC64LE9-NEXT:    stfd 31, 56(1) # 8-byte Folded Spill3181; PC64LE9-NEXT:    fmr 31, 33182; PC64LE9-NEXT:    fmr 30, 23183; PC64LE9-NEXT:    bl exp23184; PC64LE9-NEXT:    nop3185; PC64LE9-NEXT:    xscpsgndp 63, 1, 13186; PC64LE9-NEXT:    fmr 1, 303187; PC64LE9-NEXT:    bl exp23188; PC64LE9-NEXT:    nop3189; PC64LE9-NEXT:    xxmrghd 63, 1, 633190; PC64LE9-NEXT:    fmr 1, 313191; PC64LE9-NEXT:    bl exp23192; PC64LE9-NEXT:    nop3193; PC64LE9-NEXT:    fmr 3, 13194; PC64LE9-NEXT:    xxswapd 1, 633195; PC64LE9-NEXT:    xscpsgndp 2, 63, 633196; PC64LE9-NEXT:    lxv 63, 32(1) # 16-byte Folded Reload3197; PC64LE9-NEXT:    lfd 31, 56(1) # 8-byte Folded Reload3198; PC64LE9-NEXT:    lfd 30, 48(1) # 8-byte Folded Reload3199; PC64LE9-NEXT:    addi 1, 1, 643200; PC64LE9-NEXT:    ld 0, 16(1)3201; PC64LE9-NEXT:    mtlr 03202; PC64LE9-NEXT:    blr3203entry:3204  %exp2 = call <3 x double> @llvm.experimental.constrained.exp2.v3f64(3205                          <3 x double> %x,3206                          metadata !"round.dynamic",3207                          metadata !"fpexcept.strict") #13208  ret <3 x double> %exp23209}3210 3211define <4 x double> @constrained_vector_exp2_v4f64(<4 x double> %x) #0 {3212; PC64LE-LABEL: constrained_vector_exp2_v4f64:3213; PC64LE:       # %bb.0: # %entry3214; PC64LE-NEXT:    mflr 03215; PC64LE-NEXT:    stdu 1, -96(1)3216; PC64LE-NEXT:    li 3, 483217; PC64LE-NEXT:    std 0, 112(1)3218; PC64LE-NEXT:    stxvd2x 61, 1, 3 # 16-byte Folded Spill3219; PC64LE-NEXT:    li 3, 643220; PC64LE-NEXT:    stxvd2x 62, 1, 3 # 16-byte Folded Spill3221; PC64LE-NEXT:    vmr 30, 23222; PC64LE-NEXT:    li 3, 803223; PC64LE-NEXT:    xxlor 1, 62, 623224; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill3225; PC64LE-NEXT:    vmr 31, 33226; PC64LE-NEXT:    bl exp23227; PC64LE-NEXT:    nop3228; PC64LE-NEXT:    xxlor 61, 1, 13229; PC64LE-NEXT:    xxswapd 1, 623230; PC64LE-NEXT:    bl exp23231; PC64LE-NEXT:    nop3232; PC64LE-NEXT:    xxmrghd 62, 61, 13233; PC64LE-NEXT:    xxlor 1, 63, 633234; PC64LE-NEXT:    bl exp23235; PC64LE-NEXT:    nop3236; PC64LE-NEXT:    xxlor 61, 1, 13237; PC64LE-NEXT:    xxswapd 1, 633238; PC64LE-NEXT:    bl exp23239; PC64LE-NEXT:    nop3240; PC64LE-NEXT:    li 3, 803241; PC64LE-NEXT:    vmr 2, 303242; PC64LE-NEXT:    xxmrghd 35, 61, 13243; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload3244; PC64LE-NEXT:    li 3, 643245; PC64LE-NEXT:    lxvd2x 62, 1, 3 # 16-byte Folded Reload3246; PC64LE-NEXT:    li 3, 483247; PC64LE-NEXT:    lxvd2x 61, 1, 3 # 16-byte Folded Reload3248; PC64LE-NEXT:    addi 1, 1, 963249; PC64LE-NEXT:    ld 0, 16(1)3250; PC64LE-NEXT:    mtlr 03251; PC64LE-NEXT:    blr3252;3253; PC64LE9-LABEL: constrained_vector_exp2_v4f64:3254; PC64LE9:       # %bb.0: # %entry3255; PC64LE9-NEXT:    mflr 03256; PC64LE9-NEXT:    stdu 1, -80(1)3257; PC64LE9-NEXT:    std 0, 96(1)3258; PC64LE9-NEXT:    stxv 62, 48(1) # 16-byte Folded Spill3259; PC64LE9-NEXT:    vmr 30, 23260; PC64LE9-NEXT:    xscpsgndp 1, 62, 623261; PC64LE9-NEXT:    stxv 61, 32(1) # 16-byte Folded Spill3262; PC64LE9-NEXT:    stxv 63, 64(1) # 16-byte Folded Spill3263; PC64LE9-NEXT:    vmr 31, 33264; PC64LE9-NEXT:    bl exp23265; PC64LE9-NEXT:    nop3266; PC64LE9-NEXT:    xscpsgndp 61, 1, 13267; PC64LE9-NEXT:    xxswapd 1, 623268; PC64LE9-NEXT:    bl exp23269; PC64LE9-NEXT:    nop3270; PC64LE9-NEXT:    xxmrghd 62, 61, 13271; PC64LE9-NEXT:    xscpsgndp 1, 63, 633272; PC64LE9-NEXT:    bl exp23273; PC64LE9-NEXT:    nop3274; PC64LE9-NEXT:    xscpsgndp 61, 1, 13275; PC64LE9-NEXT:    xxswapd 1, 633276; PC64LE9-NEXT:    bl exp23277; PC64LE9-NEXT:    nop3278; PC64LE9-NEXT:    xxmrghd 35, 61, 13279; PC64LE9-NEXT:    vmr 2, 303280; PC64LE9-NEXT:    lxv 63, 64(1) # 16-byte Folded Reload3281; PC64LE9-NEXT:    lxv 62, 48(1) # 16-byte Folded Reload3282; PC64LE9-NEXT:    lxv 61, 32(1) # 16-byte Folded Reload3283; PC64LE9-NEXT:    addi 1, 1, 803284; PC64LE9-NEXT:    ld 0, 16(1)3285; PC64LE9-NEXT:    mtlr 03286; PC64LE9-NEXT:    blr3287entry:3288  %exp2 = call <4 x double> @llvm.experimental.constrained.exp2.v4f64(3289                              <4 x double> %x,3290                              metadata !"round.dynamic",3291                              metadata !"fpexcept.strict") #13292  ret <4 x double> %exp23293}3294 3295define <1 x float> @constrained_vector_log_v1f32(<1 x float> %x) #0 {3296; PC64LE-LABEL: constrained_vector_log_v1f32:3297; PC64LE:       # %bb.0: # %entry3298; PC64LE-NEXT:    mflr 03299; PC64LE-NEXT:    stdu 1, -32(1)3300; PC64LE-NEXT:    std 0, 48(1)3301; PC64LE-NEXT:    bl logf3302; PC64LE-NEXT:    nop3303; PC64LE-NEXT:    addi 1, 1, 323304; PC64LE-NEXT:    ld 0, 16(1)3305; PC64LE-NEXT:    mtlr 03306; PC64LE-NEXT:    blr3307;3308; PC64LE9-LABEL: constrained_vector_log_v1f32:3309; PC64LE9:       # %bb.0: # %entry3310; PC64LE9-NEXT:    mflr 03311; PC64LE9-NEXT:    stdu 1, -32(1)3312; PC64LE9-NEXT:    std 0, 48(1)3313; PC64LE9-NEXT:    bl logf3314; PC64LE9-NEXT:    nop3315; PC64LE9-NEXT:    addi 1, 1, 323316; PC64LE9-NEXT:    ld 0, 16(1)3317; PC64LE9-NEXT:    mtlr 03318; PC64LE9-NEXT:    blr3319entry:3320  %log = call <1 x float> @llvm.experimental.constrained.log.v1f32(3321                             <1 x float> %x,3322                             metadata !"round.dynamic",3323                             metadata !"fpexcept.strict") #13324  ret <1 x float> %log3325}3326 3327define <2 x double> @constrained_vector_log_v2f64(<2 x double> %x) #0 {3328; PC64LE-LABEL: constrained_vector_log_v2f64:3329; PC64LE:       # %bb.0: # %entry3330; PC64LE-NEXT:    mflr 03331; PC64LE-NEXT:    stdu 1, -80(1)3332; PC64LE-NEXT:    li 3, 483333; PC64LE-NEXT:    std 0, 96(1)3334; PC64LE-NEXT:    stxvd2x 62, 1, 3 # 16-byte Folded Spill3335; PC64LE-NEXT:    li 3, 643336; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill3337; PC64LE-NEXT:    vmr 31, 23338; PC64LE-NEXT:    xxlor 1, 63, 633339; PC64LE-NEXT:    bl log3340; PC64LE-NEXT:    nop3341; PC64LE-NEXT:    xxlor 62, 1, 13342; PC64LE-NEXT:    xxswapd 1, 633343; PC64LE-NEXT:    bl log3344; PC64LE-NEXT:    nop3345; PC64LE-NEXT:    li 3, 643346; PC64LE-NEXT:    xxmrghd 34, 62, 13347; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload3348; PC64LE-NEXT:    li 3, 483349; PC64LE-NEXT:    lxvd2x 62, 1, 3 # 16-byte Folded Reload3350; PC64LE-NEXT:    addi 1, 1, 803351; PC64LE-NEXT:    ld 0, 16(1)3352; PC64LE-NEXT:    mtlr 03353; PC64LE-NEXT:    blr3354;3355; PC64LE9-LABEL: constrained_vector_log_v2f64:3356; PC64LE9:       # %bb.0: # %entry3357; PC64LE9-NEXT:    mflr 03358; PC64LE9-NEXT:    stdu 1, -64(1)3359; PC64LE9-NEXT:    std 0, 80(1)3360; PC64LE9-NEXT:    stxv 63, 48(1) # 16-byte Folded Spill3361; PC64LE9-NEXT:    vmr 31, 23362; PC64LE9-NEXT:    xscpsgndp 1, 63, 633363; PC64LE9-NEXT:    stxv 62, 32(1) # 16-byte Folded Spill3364; PC64LE9-NEXT:    bl log3365; PC64LE9-NEXT:    nop3366; PC64LE9-NEXT:    xscpsgndp 62, 1, 13367; PC64LE9-NEXT:    xxswapd 1, 633368; PC64LE9-NEXT:    bl log3369; PC64LE9-NEXT:    nop3370; PC64LE9-NEXT:    xxmrghd 34, 62, 13371; PC64LE9-NEXT:    lxv 63, 48(1) # 16-byte Folded Reload3372; PC64LE9-NEXT:    lxv 62, 32(1) # 16-byte Folded Reload3373; PC64LE9-NEXT:    addi 1, 1, 643374; PC64LE9-NEXT:    ld 0, 16(1)3375; PC64LE9-NEXT:    mtlr 03376; PC64LE9-NEXT:    blr3377entry:3378  %log = call <2 x double> @llvm.experimental.constrained.log.v2f64(3379                             <2 x double> %x,3380                             metadata !"round.dynamic",3381                             metadata !"fpexcept.strict") #13382  ret <2 x double> %log3383}3384 3385define <3 x float> @constrained_vector_log_v3f32(<3 x float> %x) #0 {3386; PC64LE-LABEL: constrained_vector_log_v3f32:3387; PC64LE:       # %bb.0: # %entry3388; PC64LE-NEXT:    mflr 03389; PC64LE-NEXT:    stdu 1, -80(1)3390; PC64LE-NEXT:    xxsldwi 0, 34, 34, 13391; PC64LE-NEXT:    li 3, 483392; PC64LE-NEXT:    std 0, 96(1)3393; PC64LE-NEXT:    stfd 30, 64(1) # 8-byte Folded Spill3394; PC64LE-NEXT:    stfd 31, 72(1) # 8-byte Folded Spill3395; PC64LE-NEXT:    xscvspdpn 1, 03396; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill3397; PC64LE-NEXT:    vmr 31, 23398; PC64LE-NEXT:    bl logf3399; PC64LE-NEXT:    nop3400; PC64LE-NEXT:    xxswapd 0, 633401; PC64LE-NEXT:    fmr 31, 13402; PC64LE-NEXT:    xscvspdpn 1, 03403; PC64LE-NEXT:    bl logf3404; PC64LE-NEXT:    nop3405; PC64LE-NEXT:    xxsldwi 0, 63, 63, 33406; PC64LE-NEXT:    fmr 30, 13407; PC64LE-NEXT:    xscvspdpn 1, 03408; PC64LE-NEXT:    bl logf3409; PC64LE-NEXT:    nop3410; PC64LE-NEXT:    xscvdpspn 0, 13411; PC64LE-NEXT:    xscvdpspn 1, 303412; PC64LE-NEXT:    addis 3, 2, .LCPI62_0@toc@ha3413; PC64LE-NEXT:    lfd 30, 64(1) # 8-byte Folded Reload3414; PC64LE-NEXT:    xscvdpspn 36, 313415; PC64LE-NEXT:    lfd 31, 72(1) # 8-byte Folded Reload3416; PC64LE-NEXT:    addi 3, 3, .LCPI62_0@toc@l3417; PC64LE-NEXT:    xxmrghw 34, 1, 03418; PC64LE-NEXT:    lxvd2x 0, 0, 33419; PC64LE-NEXT:    li 3, 483420; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload3421; PC64LE-NEXT:    xxswapd 35, 03422; PC64LE-NEXT:    vperm 2, 4, 2, 33423; PC64LE-NEXT:    addi 1, 1, 803424; PC64LE-NEXT:    ld 0, 16(1)3425; PC64LE-NEXT:    mtlr 03426; PC64LE-NEXT:    blr3427;3428; PC64LE9-LABEL: constrained_vector_log_v3f32:3429; PC64LE9:       # %bb.0: # %entry3430; PC64LE9-NEXT:    mflr 03431; PC64LE9-NEXT:    stdu 1, -64(1)3432; PC64LE9-NEXT:    xxsldwi 0, 34, 34, 13433; PC64LE9-NEXT:    std 0, 80(1)3434; PC64LE9-NEXT:    stfd 30, 48(1) # 8-byte Folded Spill3435; PC64LE9-NEXT:    stxv 63, 32(1) # 16-byte Folded Spill3436; PC64LE9-NEXT:    stfd 31, 56(1) # 8-byte Folded Spill3437; PC64LE9-NEXT:    vmr 31, 23438; PC64LE9-NEXT:    xscvspdpn 1, 03439; PC64LE9-NEXT:    bl logf3440; PC64LE9-NEXT:    nop3441; PC64LE9-NEXT:    xxswapd 0, 633442; PC64LE9-NEXT:    fmr 31, 13443; PC64LE9-NEXT:    xscvspdpn 1, 03444; PC64LE9-NEXT:    bl logf3445; PC64LE9-NEXT:    nop3446; PC64LE9-NEXT:    xxsldwi 0, 63, 63, 33447; PC64LE9-NEXT:    fmr 30, 13448; PC64LE9-NEXT:    xscvspdpn 1, 03449; PC64LE9-NEXT:    bl logf3450; PC64LE9-NEXT:    nop3451; PC64LE9-NEXT:    xscvdpspn 0, 13452; PC64LE9-NEXT:    xscvdpspn 1, 303453; PC64LE9-NEXT:    addis 3, 2, .LCPI62_0@toc@ha3454; PC64LE9-NEXT:    xscvdpspn 34, 313455; PC64LE9-NEXT:    lxv 63, 32(1) # 16-byte Folded Reload3456; PC64LE9-NEXT:    lfd 31, 56(1) # 8-byte Folded Reload3457; PC64LE9-NEXT:    addi 3, 3, .LCPI62_0@toc@l3458; PC64LE9-NEXT:    lfd 30, 48(1) # 8-byte Folded Reload3459; PC64LE9-NEXT:    xxmrghw 35, 1, 03460; PC64LE9-NEXT:    lxv 0, 0(3)3461; PC64LE9-NEXT:    xxperm 34, 35, 03462; PC64LE9-NEXT:    addi 1, 1, 643463; PC64LE9-NEXT:    ld 0, 16(1)3464; PC64LE9-NEXT:    mtlr 03465; PC64LE9-NEXT:    blr3466entry:3467  %log = call <3 x float> @llvm.experimental.constrained.log.v3f32(3468                              <3 x float> %x,3469                              metadata !"round.dynamic",3470                              metadata !"fpexcept.strict") #13471  ret <3 x float> %log3472}3473 3474define <3 x double> @constrained_vector_log_v3f64(<3 x double> %x) #0 {3475; PC64LE-LABEL: constrained_vector_log_v3f64:3476; PC64LE:       # %bb.0: # %entry3477; PC64LE-NEXT:    mflr 03478; PC64LE-NEXT:    stdu 1, -80(1)3479; PC64LE-NEXT:    li 3, 483480; PC64LE-NEXT:    std 0, 96(1)3481; PC64LE-NEXT:    stfd 30, 64(1) # 8-byte Folded Spill3482; PC64LE-NEXT:    fmr 30, 23483; PC64LE-NEXT:    stfd 31, 72(1) # 8-byte Folded Spill3484; PC64LE-NEXT:    fmr 31, 33485; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill3486; PC64LE-NEXT:    bl log3487; PC64LE-NEXT:    nop3488; PC64LE-NEXT:    xxlor 63, 1, 13489; PC64LE-NEXT:    fmr 1, 303490; PC64LE-NEXT:    bl log3491; PC64LE-NEXT:    nop3492; PC64LE-NEXT:    xxmrghd 63, 1, 633493; PC64LE-NEXT:    fmr 1, 313494; PC64LE-NEXT:    bl log3495; PC64LE-NEXT:    nop3496; PC64LE-NEXT:    li 3, 483497; PC64LE-NEXT:    fmr 3, 13498; PC64LE-NEXT:    xxswapd 1, 633499; PC64LE-NEXT:    lfd 31, 72(1) # 8-byte Folded Reload3500; PC64LE-NEXT:    xxlor 2, 63, 633501; PC64LE-NEXT:    lfd 30, 64(1) # 8-byte Folded Reload3502; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload3503; PC64LE-NEXT:    addi 1, 1, 803504; PC64LE-NEXT:    ld 0, 16(1)3505; PC64LE-NEXT:    mtlr 03506; PC64LE-NEXT:    blr3507;3508; PC64LE9-LABEL: constrained_vector_log_v3f64:3509; PC64LE9:       # %bb.0: # %entry3510; PC64LE9-NEXT:    mflr 03511; PC64LE9-NEXT:    stdu 1, -64(1)3512; PC64LE9-NEXT:    std 0, 80(1)3513; PC64LE9-NEXT:    stfd 30, 48(1) # 8-byte Folded Spill3514; PC64LE9-NEXT:    stxv 63, 32(1) # 16-byte Folded Spill3515; PC64LE9-NEXT:    stfd 31, 56(1) # 8-byte Folded Spill3516; PC64LE9-NEXT:    fmr 31, 33517; PC64LE9-NEXT:    fmr 30, 23518; PC64LE9-NEXT:    bl log3519; PC64LE9-NEXT:    nop3520; PC64LE9-NEXT:    xscpsgndp 63, 1, 13521; PC64LE9-NEXT:    fmr 1, 303522; PC64LE9-NEXT:    bl log3523; PC64LE9-NEXT:    nop3524; PC64LE9-NEXT:    xxmrghd 63, 1, 633525; PC64LE9-NEXT:    fmr 1, 313526; PC64LE9-NEXT:    bl log3527; PC64LE9-NEXT:    nop3528; PC64LE9-NEXT:    fmr 3, 13529; PC64LE9-NEXT:    xxswapd 1, 633530; PC64LE9-NEXT:    xscpsgndp 2, 63, 633531; PC64LE9-NEXT:    lxv 63, 32(1) # 16-byte Folded Reload3532; PC64LE9-NEXT:    lfd 31, 56(1) # 8-byte Folded Reload3533; PC64LE9-NEXT:    lfd 30, 48(1) # 8-byte Folded Reload3534; PC64LE9-NEXT:    addi 1, 1, 643535; PC64LE9-NEXT:    ld 0, 16(1)3536; PC64LE9-NEXT:    mtlr 03537; PC64LE9-NEXT:    blr3538entry:3539  %log = call <3 x double> @llvm.experimental.constrained.log.v3f64(3540                          <3 x double> %x,3541                          metadata !"round.dynamic",3542                          metadata !"fpexcept.strict") #13543  ret <3 x double> %log3544}3545 3546define <4 x double> @constrained_vector_log_v4f64(<4 x double> %x) #0 {3547; PC64LE-LABEL: constrained_vector_log_v4f64:3548; PC64LE:       # %bb.0: # %entry3549; PC64LE-NEXT:    mflr 03550; PC64LE-NEXT:    stdu 1, -96(1)3551; PC64LE-NEXT:    li 3, 483552; PC64LE-NEXT:    std 0, 112(1)3553; PC64LE-NEXT:    stxvd2x 61, 1, 3 # 16-byte Folded Spill3554; PC64LE-NEXT:    li 3, 643555; PC64LE-NEXT:    stxvd2x 62, 1, 3 # 16-byte Folded Spill3556; PC64LE-NEXT:    vmr 30, 23557; PC64LE-NEXT:    li 3, 803558; PC64LE-NEXT:    xxlor 1, 62, 623559; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill3560; PC64LE-NEXT:    vmr 31, 33561; PC64LE-NEXT:    bl log3562; PC64LE-NEXT:    nop3563; PC64LE-NEXT:    xxlor 61, 1, 13564; PC64LE-NEXT:    xxswapd 1, 623565; PC64LE-NEXT:    bl log3566; PC64LE-NEXT:    nop3567; PC64LE-NEXT:    xxmrghd 62, 61, 13568; PC64LE-NEXT:    xxlor 1, 63, 633569; PC64LE-NEXT:    bl log3570; PC64LE-NEXT:    nop3571; PC64LE-NEXT:    xxlor 61, 1, 13572; PC64LE-NEXT:    xxswapd 1, 633573; PC64LE-NEXT:    bl log3574; PC64LE-NEXT:    nop3575; PC64LE-NEXT:    li 3, 803576; PC64LE-NEXT:    vmr 2, 303577; PC64LE-NEXT:    xxmrghd 35, 61, 13578; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload3579; PC64LE-NEXT:    li 3, 643580; PC64LE-NEXT:    lxvd2x 62, 1, 3 # 16-byte Folded Reload3581; PC64LE-NEXT:    li 3, 483582; PC64LE-NEXT:    lxvd2x 61, 1, 3 # 16-byte Folded Reload3583; PC64LE-NEXT:    addi 1, 1, 963584; PC64LE-NEXT:    ld 0, 16(1)3585; PC64LE-NEXT:    mtlr 03586; PC64LE-NEXT:    blr3587;3588; PC64LE9-LABEL: constrained_vector_log_v4f64:3589; PC64LE9:       # %bb.0: # %entry3590; PC64LE9-NEXT:    mflr 03591; PC64LE9-NEXT:    stdu 1, -80(1)3592; PC64LE9-NEXT:    std 0, 96(1)3593; PC64LE9-NEXT:    stxv 62, 48(1) # 16-byte Folded Spill3594; PC64LE9-NEXT:    vmr 30, 23595; PC64LE9-NEXT:    xscpsgndp 1, 62, 623596; PC64LE9-NEXT:    stxv 61, 32(1) # 16-byte Folded Spill3597; PC64LE9-NEXT:    stxv 63, 64(1) # 16-byte Folded Spill3598; PC64LE9-NEXT:    vmr 31, 33599; PC64LE9-NEXT:    bl log3600; PC64LE9-NEXT:    nop3601; PC64LE9-NEXT:    xscpsgndp 61, 1, 13602; PC64LE9-NEXT:    xxswapd 1, 623603; PC64LE9-NEXT:    bl log3604; PC64LE9-NEXT:    nop3605; PC64LE9-NEXT:    xxmrghd 62, 61, 13606; PC64LE9-NEXT:    xscpsgndp 1, 63, 633607; PC64LE9-NEXT:    bl log3608; PC64LE9-NEXT:    nop3609; PC64LE9-NEXT:    xscpsgndp 61, 1, 13610; PC64LE9-NEXT:    xxswapd 1, 633611; PC64LE9-NEXT:    bl log3612; PC64LE9-NEXT:    nop3613; PC64LE9-NEXT:    xxmrghd 35, 61, 13614; PC64LE9-NEXT:    vmr 2, 303615; PC64LE9-NEXT:    lxv 63, 64(1) # 16-byte Folded Reload3616; PC64LE9-NEXT:    lxv 62, 48(1) # 16-byte Folded Reload3617; PC64LE9-NEXT:    lxv 61, 32(1) # 16-byte Folded Reload3618; PC64LE9-NEXT:    addi 1, 1, 803619; PC64LE9-NEXT:    ld 0, 16(1)3620; PC64LE9-NEXT:    mtlr 03621; PC64LE9-NEXT:    blr3622entry:3623  %log = call <4 x double> @llvm.experimental.constrained.log.v4f64(3624                             <4 x double> %x,3625                             metadata !"round.dynamic",3626                             metadata !"fpexcept.strict") #13627  ret <4 x double> %log3628}3629 3630define <1 x float> @constrained_vector_log10_v1f32(<1 x float> %x) #0 {3631; PC64LE-LABEL: constrained_vector_log10_v1f32:3632; PC64LE:       # %bb.0: # %entry3633; PC64LE-NEXT:    mflr 03634; PC64LE-NEXT:    stdu 1, -32(1)3635; PC64LE-NEXT:    std 0, 48(1)3636; PC64LE-NEXT:    bl log10f3637; PC64LE-NEXT:    nop3638; PC64LE-NEXT:    addi 1, 1, 323639; PC64LE-NEXT:    ld 0, 16(1)3640; PC64LE-NEXT:    mtlr 03641; PC64LE-NEXT:    blr3642;3643; PC64LE9-LABEL: constrained_vector_log10_v1f32:3644; PC64LE9:       # %bb.0: # %entry3645; PC64LE9-NEXT:    mflr 03646; PC64LE9-NEXT:    stdu 1, -32(1)3647; PC64LE9-NEXT:    std 0, 48(1)3648; PC64LE9-NEXT:    bl log10f3649; PC64LE9-NEXT:    nop3650; PC64LE9-NEXT:    addi 1, 1, 323651; PC64LE9-NEXT:    ld 0, 16(1)3652; PC64LE9-NEXT:    mtlr 03653; PC64LE9-NEXT:    blr3654entry:3655  %log10 = call <1 x float> @llvm.experimental.constrained.log10.v1f32(3656                             <1 x float> %x,3657                             metadata !"round.dynamic",3658                             metadata !"fpexcept.strict") #13659  ret <1 x float> %log103660}3661 3662define <2 x double> @constrained_vector_log10_v2f64(<2 x double> %x) #0 {3663; PC64LE-LABEL: constrained_vector_log10_v2f64:3664; PC64LE:       # %bb.0: # %entry3665; PC64LE-NEXT:    mflr 03666; PC64LE-NEXT:    stdu 1, -80(1)3667; PC64LE-NEXT:    li 3, 483668; PC64LE-NEXT:    std 0, 96(1)3669; PC64LE-NEXT:    stxvd2x 62, 1, 3 # 16-byte Folded Spill3670; PC64LE-NEXT:    li 3, 643671; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill3672; PC64LE-NEXT:    vmr 31, 23673; PC64LE-NEXT:    xxlor 1, 63, 633674; PC64LE-NEXT:    bl log103675; PC64LE-NEXT:    nop3676; PC64LE-NEXT:    xxlor 62, 1, 13677; PC64LE-NEXT:    xxswapd 1, 633678; PC64LE-NEXT:    bl log103679; PC64LE-NEXT:    nop3680; PC64LE-NEXT:    li 3, 643681; PC64LE-NEXT:    xxmrghd 34, 62, 13682; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload3683; PC64LE-NEXT:    li 3, 483684; PC64LE-NEXT:    lxvd2x 62, 1, 3 # 16-byte Folded Reload3685; PC64LE-NEXT:    addi 1, 1, 803686; PC64LE-NEXT:    ld 0, 16(1)3687; PC64LE-NEXT:    mtlr 03688; PC64LE-NEXT:    blr3689;3690; PC64LE9-LABEL: constrained_vector_log10_v2f64:3691; PC64LE9:       # %bb.0: # %entry3692; PC64LE9-NEXT:    mflr 03693; PC64LE9-NEXT:    stdu 1, -64(1)3694; PC64LE9-NEXT:    std 0, 80(1)3695; PC64LE9-NEXT:    stxv 63, 48(1) # 16-byte Folded Spill3696; PC64LE9-NEXT:    vmr 31, 23697; PC64LE9-NEXT:    xscpsgndp 1, 63, 633698; PC64LE9-NEXT:    stxv 62, 32(1) # 16-byte Folded Spill3699; PC64LE9-NEXT:    bl log103700; PC64LE9-NEXT:    nop3701; PC64LE9-NEXT:    xscpsgndp 62, 1, 13702; PC64LE9-NEXT:    xxswapd 1, 633703; PC64LE9-NEXT:    bl log103704; PC64LE9-NEXT:    nop3705; PC64LE9-NEXT:    xxmrghd 34, 62, 13706; PC64LE9-NEXT:    lxv 63, 48(1) # 16-byte Folded Reload3707; PC64LE9-NEXT:    lxv 62, 32(1) # 16-byte Folded Reload3708; PC64LE9-NEXT:    addi 1, 1, 643709; PC64LE9-NEXT:    ld 0, 16(1)3710; PC64LE9-NEXT:    mtlr 03711; PC64LE9-NEXT:    blr3712entry:3713  %log10 = call <2 x double> @llvm.experimental.constrained.log10.v2f64(3714                               <2 x double> %x,3715                               metadata !"round.dynamic",3716                               metadata !"fpexcept.strict") #13717  ret <2 x double> %log103718}3719 3720define <3 x float> @constrained_vector_log10_v3f32(<3 x float> %x) #0 {3721; PC64LE-LABEL: constrained_vector_log10_v3f32:3722; PC64LE:       # %bb.0: # %entry3723; PC64LE-NEXT:    mflr 03724; PC64LE-NEXT:    stdu 1, -80(1)3725; PC64LE-NEXT:    xxsldwi 0, 34, 34, 13726; PC64LE-NEXT:    li 3, 483727; PC64LE-NEXT:    std 0, 96(1)3728; PC64LE-NEXT:    stfd 30, 64(1) # 8-byte Folded Spill3729; PC64LE-NEXT:    stfd 31, 72(1) # 8-byte Folded Spill3730; PC64LE-NEXT:    xscvspdpn 1, 03731; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill3732; PC64LE-NEXT:    vmr 31, 23733; PC64LE-NEXT:    bl log10f3734; PC64LE-NEXT:    nop3735; PC64LE-NEXT:    xxswapd 0, 633736; PC64LE-NEXT:    fmr 31, 13737; PC64LE-NEXT:    xscvspdpn 1, 03738; PC64LE-NEXT:    bl log10f3739; PC64LE-NEXT:    nop3740; PC64LE-NEXT:    xxsldwi 0, 63, 63, 33741; PC64LE-NEXT:    fmr 30, 13742; PC64LE-NEXT:    xscvspdpn 1, 03743; PC64LE-NEXT:    bl log10f3744; PC64LE-NEXT:    nop3745; PC64LE-NEXT:    xscvdpspn 0, 13746; PC64LE-NEXT:    xscvdpspn 1, 303747; PC64LE-NEXT:    addis 3, 2, .LCPI67_0@toc@ha3748; PC64LE-NEXT:    lfd 30, 64(1) # 8-byte Folded Reload3749; PC64LE-NEXT:    xscvdpspn 36, 313750; PC64LE-NEXT:    lfd 31, 72(1) # 8-byte Folded Reload3751; PC64LE-NEXT:    addi 3, 3, .LCPI67_0@toc@l3752; PC64LE-NEXT:    xxmrghw 34, 1, 03753; PC64LE-NEXT:    lxvd2x 0, 0, 33754; PC64LE-NEXT:    li 3, 483755; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload3756; PC64LE-NEXT:    xxswapd 35, 03757; PC64LE-NEXT:    vperm 2, 4, 2, 33758; PC64LE-NEXT:    addi 1, 1, 803759; PC64LE-NEXT:    ld 0, 16(1)3760; PC64LE-NEXT:    mtlr 03761; PC64LE-NEXT:    blr3762;3763; PC64LE9-LABEL: constrained_vector_log10_v3f32:3764; PC64LE9:       # %bb.0: # %entry3765; PC64LE9-NEXT:    mflr 03766; PC64LE9-NEXT:    stdu 1, -64(1)3767; PC64LE9-NEXT:    xxsldwi 0, 34, 34, 13768; PC64LE9-NEXT:    std 0, 80(1)3769; PC64LE9-NEXT:    stfd 30, 48(1) # 8-byte Folded Spill3770; PC64LE9-NEXT:    stxv 63, 32(1) # 16-byte Folded Spill3771; PC64LE9-NEXT:    stfd 31, 56(1) # 8-byte Folded Spill3772; PC64LE9-NEXT:    vmr 31, 23773; PC64LE9-NEXT:    xscvspdpn 1, 03774; PC64LE9-NEXT:    bl log10f3775; PC64LE9-NEXT:    nop3776; PC64LE9-NEXT:    xxswapd 0, 633777; PC64LE9-NEXT:    fmr 31, 13778; PC64LE9-NEXT:    xscvspdpn 1, 03779; PC64LE9-NEXT:    bl log10f3780; PC64LE9-NEXT:    nop3781; PC64LE9-NEXT:    xxsldwi 0, 63, 63, 33782; PC64LE9-NEXT:    fmr 30, 13783; PC64LE9-NEXT:    xscvspdpn 1, 03784; PC64LE9-NEXT:    bl log10f3785; PC64LE9-NEXT:    nop3786; PC64LE9-NEXT:    xscvdpspn 0, 13787; PC64LE9-NEXT:    xscvdpspn 1, 303788; PC64LE9-NEXT:    addis 3, 2, .LCPI67_0@toc@ha3789; PC64LE9-NEXT:    xscvdpspn 34, 313790; PC64LE9-NEXT:    lxv 63, 32(1) # 16-byte Folded Reload3791; PC64LE9-NEXT:    lfd 31, 56(1) # 8-byte Folded Reload3792; PC64LE9-NEXT:    addi 3, 3, .LCPI67_0@toc@l3793; PC64LE9-NEXT:    lfd 30, 48(1) # 8-byte Folded Reload3794; PC64LE9-NEXT:    xxmrghw 35, 1, 03795; PC64LE9-NEXT:    lxv 0, 0(3)3796; PC64LE9-NEXT:    xxperm 34, 35, 03797; PC64LE9-NEXT:    addi 1, 1, 643798; PC64LE9-NEXT:    ld 0, 16(1)3799; PC64LE9-NEXT:    mtlr 03800; PC64LE9-NEXT:    blr3801entry:3802  %log10 = call <3 x float> @llvm.experimental.constrained.log10.v3f32(3803                              <3 x float> %x,3804                              metadata !"round.dynamic",3805                              metadata !"fpexcept.strict") #13806  ret <3 x float> %log103807}3808 3809define <3 x double> @constrained_vector_log10_v3f64(<3 x double> %x) #0 {3810; PC64LE-LABEL: constrained_vector_log10_v3f64:3811; PC64LE:       # %bb.0: # %entry3812; PC64LE-NEXT:    mflr 03813; PC64LE-NEXT:    stdu 1, -80(1)3814; PC64LE-NEXT:    li 3, 483815; PC64LE-NEXT:    std 0, 96(1)3816; PC64LE-NEXT:    stfd 30, 64(1) # 8-byte Folded Spill3817; PC64LE-NEXT:    fmr 30, 23818; PC64LE-NEXT:    stfd 31, 72(1) # 8-byte Folded Spill3819; PC64LE-NEXT:    fmr 31, 33820; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill3821; PC64LE-NEXT:    bl log103822; PC64LE-NEXT:    nop3823; PC64LE-NEXT:    xxlor 63, 1, 13824; PC64LE-NEXT:    fmr 1, 303825; PC64LE-NEXT:    bl log103826; PC64LE-NEXT:    nop3827; PC64LE-NEXT:    xxmrghd 63, 1, 633828; PC64LE-NEXT:    fmr 1, 313829; PC64LE-NEXT:    bl log103830; PC64LE-NEXT:    nop3831; PC64LE-NEXT:    li 3, 483832; PC64LE-NEXT:    fmr 3, 13833; PC64LE-NEXT:    xxswapd 1, 633834; PC64LE-NEXT:    lfd 31, 72(1) # 8-byte Folded Reload3835; PC64LE-NEXT:    xxlor 2, 63, 633836; PC64LE-NEXT:    lfd 30, 64(1) # 8-byte Folded Reload3837; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload3838; PC64LE-NEXT:    addi 1, 1, 803839; PC64LE-NEXT:    ld 0, 16(1)3840; PC64LE-NEXT:    mtlr 03841; PC64LE-NEXT:    blr3842;3843; PC64LE9-LABEL: constrained_vector_log10_v3f64:3844; PC64LE9:       # %bb.0: # %entry3845; PC64LE9-NEXT:    mflr 03846; PC64LE9-NEXT:    stdu 1, -64(1)3847; PC64LE9-NEXT:    std 0, 80(1)3848; PC64LE9-NEXT:    stfd 30, 48(1) # 8-byte Folded Spill3849; PC64LE9-NEXT:    stxv 63, 32(1) # 16-byte Folded Spill3850; PC64LE9-NEXT:    stfd 31, 56(1) # 8-byte Folded Spill3851; PC64LE9-NEXT:    fmr 31, 33852; PC64LE9-NEXT:    fmr 30, 23853; PC64LE9-NEXT:    bl log103854; PC64LE9-NEXT:    nop3855; PC64LE9-NEXT:    xscpsgndp 63, 1, 13856; PC64LE9-NEXT:    fmr 1, 303857; PC64LE9-NEXT:    bl log103858; PC64LE9-NEXT:    nop3859; PC64LE9-NEXT:    xxmrghd 63, 1, 633860; PC64LE9-NEXT:    fmr 1, 313861; PC64LE9-NEXT:    bl log103862; PC64LE9-NEXT:    nop3863; PC64LE9-NEXT:    fmr 3, 13864; PC64LE9-NEXT:    xxswapd 1, 633865; PC64LE9-NEXT:    xscpsgndp 2, 63, 633866; PC64LE9-NEXT:    lxv 63, 32(1) # 16-byte Folded Reload3867; PC64LE9-NEXT:    lfd 31, 56(1) # 8-byte Folded Reload3868; PC64LE9-NEXT:    lfd 30, 48(1) # 8-byte Folded Reload3869; PC64LE9-NEXT:    addi 1, 1, 643870; PC64LE9-NEXT:    ld 0, 16(1)3871; PC64LE9-NEXT:    mtlr 03872; PC64LE9-NEXT:    blr3873entry:3874  %log10 = call <3 x double> @llvm.experimental.constrained.log10.v3f64(3875                          <3 x double> %x,3876                          metadata !"round.dynamic",3877                          metadata !"fpexcept.strict") #13878  ret <3 x double> %log103879}3880 3881define <4 x double> @constrained_vector_log10_v4f64(<4 x double> %x) #0 {3882; PC64LE-LABEL: constrained_vector_log10_v4f64:3883; PC64LE:       # %bb.0: # %entry3884; PC64LE-NEXT:    mflr 03885; PC64LE-NEXT:    stdu 1, -96(1)3886; PC64LE-NEXT:    li 3, 483887; PC64LE-NEXT:    std 0, 112(1)3888; PC64LE-NEXT:    stxvd2x 61, 1, 3 # 16-byte Folded Spill3889; PC64LE-NEXT:    li 3, 643890; PC64LE-NEXT:    stxvd2x 62, 1, 3 # 16-byte Folded Spill3891; PC64LE-NEXT:    vmr 30, 23892; PC64LE-NEXT:    li 3, 803893; PC64LE-NEXT:    xxlor 1, 62, 623894; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill3895; PC64LE-NEXT:    vmr 31, 33896; PC64LE-NEXT:    bl log103897; PC64LE-NEXT:    nop3898; PC64LE-NEXT:    xxlor 61, 1, 13899; PC64LE-NEXT:    xxswapd 1, 623900; PC64LE-NEXT:    bl log103901; PC64LE-NEXT:    nop3902; PC64LE-NEXT:    xxmrghd 62, 61, 13903; PC64LE-NEXT:    xxlor 1, 63, 633904; PC64LE-NEXT:    bl log103905; PC64LE-NEXT:    nop3906; PC64LE-NEXT:    xxlor 61, 1, 13907; PC64LE-NEXT:    xxswapd 1, 633908; PC64LE-NEXT:    bl log103909; PC64LE-NEXT:    nop3910; PC64LE-NEXT:    li 3, 803911; PC64LE-NEXT:    vmr 2, 303912; PC64LE-NEXT:    xxmrghd 35, 61, 13913; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload3914; PC64LE-NEXT:    li 3, 643915; PC64LE-NEXT:    lxvd2x 62, 1, 3 # 16-byte Folded Reload3916; PC64LE-NEXT:    li 3, 483917; PC64LE-NEXT:    lxvd2x 61, 1, 3 # 16-byte Folded Reload3918; PC64LE-NEXT:    addi 1, 1, 963919; PC64LE-NEXT:    ld 0, 16(1)3920; PC64LE-NEXT:    mtlr 03921; PC64LE-NEXT:    blr3922;3923; PC64LE9-LABEL: constrained_vector_log10_v4f64:3924; PC64LE9:       # %bb.0: # %entry3925; PC64LE9-NEXT:    mflr 03926; PC64LE9-NEXT:    stdu 1, -80(1)3927; PC64LE9-NEXT:    std 0, 96(1)3928; PC64LE9-NEXT:    stxv 62, 48(1) # 16-byte Folded Spill3929; PC64LE9-NEXT:    vmr 30, 23930; PC64LE9-NEXT:    xscpsgndp 1, 62, 623931; PC64LE9-NEXT:    stxv 61, 32(1) # 16-byte Folded Spill3932; PC64LE9-NEXT:    stxv 63, 64(1) # 16-byte Folded Spill3933; PC64LE9-NEXT:    vmr 31, 33934; PC64LE9-NEXT:    bl log103935; PC64LE9-NEXT:    nop3936; PC64LE9-NEXT:    xscpsgndp 61, 1, 13937; PC64LE9-NEXT:    xxswapd 1, 623938; PC64LE9-NEXT:    bl log103939; PC64LE9-NEXT:    nop3940; PC64LE9-NEXT:    xxmrghd 62, 61, 13941; PC64LE9-NEXT:    xscpsgndp 1, 63, 633942; PC64LE9-NEXT:    bl log103943; PC64LE9-NEXT:    nop3944; PC64LE9-NEXT:    xscpsgndp 61, 1, 13945; PC64LE9-NEXT:    xxswapd 1, 633946; PC64LE9-NEXT:    bl log103947; PC64LE9-NEXT:    nop3948; PC64LE9-NEXT:    xxmrghd 35, 61, 13949; PC64LE9-NEXT:    vmr 2, 303950; PC64LE9-NEXT:    lxv 63, 64(1) # 16-byte Folded Reload3951; PC64LE9-NEXT:    lxv 62, 48(1) # 16-byte Folded Reload3952; PC64LE9-NEXT:    lxv 61, 32(1) # 16-byte Folded Reload3953; PC64LE9-NEXT:    addi 1, 1, 803954; PC64LE9-NEXT:    ld 0, 16(1)3955; PC64LE9-NEXT:    mtlr 03956; PC64LE9-NEXT:    blr3957entry:3958  %log10 = call <4 x double> @llvm.experimental.constrained.log10.v4f64(3959                               <4 x double> %x,3960                               metadata !"round.dynamic",3961                               metadata !"fpexcept.strict") #13962  ret <4 x double> %log103963}3964 3965define <1 x float> @constrained_vector_log2_v1f32(<1 x float> %x) #0 {3966; PC64LE-LABEL: constrained_vector_log2_v1f32:3967; PC64LE:       # %bb.0: # %entry3968; PC64LE-NEXT:    mflr 03969; PC64LE-NEXT:    stdu 1, -32(1)3970; PC64LE-NEXT:    std 0, 48(1)3971; PC64LE-NEXT:    bl log2f3972; PC64LE-NEXT:    nop3973; PC64LE-NEXT:    addi 1, 1, 323974; PC64LE-NEXT:    ld 0, 16(1)3975; PC64LE-NEXT:    mtlr 03976; PC64LE-NEXT:    blr3977;3978; PC64LE9-LABEL: constrained_vector_log2_v1f32:3979; PC64LE9:       # %bb.0: # %entry3980; PC64LE9-NEXT:    mflr 03981; PC64LE9-NEXT:    stdu 1, -32(1)3982; PC64LE9-NEXT:    std 0, 48(1)3983; PC64LE9-NEXT:    bl log2f3984; PC64LE9-NEXT:    nop3985; PC64LE9-NEXT:    addi 1, 1, 323986; PC64LE9-NEXT:    ld 0, 16(1)3987; PC64LE9-NEXT:    mtlr 03988; PC64LE9-NEXT:    blr3989entry:3990  %log2 = call <1 x float> @llvm.experimental.constrained.log2.v1f32(3991                             <1 x float> %x,3992                             metadata !"round.dynamic",3993                             metadata !"fpexcept.strict") #13994  ret <1 x float> %log23995}3996 3997define <2 x double> @constrained_vector_log2_v2f64(<2 x double> %x) #0 {3998; PC64LE-LABEL: constrained_vector_log2_v2f64:3999; PC64LE:       # %bb.0: # %entry4000; PC64LE-NEXT:    mflr 04001; PC64LE-NEXT:    stdu 1, -80(1)4002; PC64LE-NEXT:    li 3, 484003; PC64LE-NEXT:    std 0, 96(1)4004; PC64LE-NEXT:    stxvd2x 62, 1, 3 # 16-byte Folded Spill4005; PC64LE-NEXT:    li 3, 644006; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill4007; PC64LE-NEXT:    vmr 31, 24008; PC64LE-NEXT:    xxlor 1, 63, 634009; PC64LE-NEXT:    bl log24010; PC64LE-NEXT:    nop4011; PC64LE-NEXT:    xxlor 62, 1, 14012; PC64LE-NEXT:    xxswapd 1, 634013; PC64LE-NEXT:    bl log24014; PC64LE-NEXT:    nop4015; PC64LE-NEXT:    li 3, 644016; PC64LE-NEXT:    xxmrghd 34, 62, 14017; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload4018; PC64LE-NEXT:    li 3, 484019; PC64LE-NEXT:    lxvd2x 62, 1, 3 # 16-byte Folded Reload4020; PC64LE-NEXT:    addi 1, 1, 804021; PC64LE-NEXT:    ld 0, 16(1)4022; PC64LE-NEXT:    mtlr 04023; PC64LE-NEXT:    blr4024;4025; PC64LE9-LABEL: constrained_vector_log2_v2f64:4026; PC64LE9:       # %bb.0: # %entry4027; PC64LE9-NEXT:    mflr 04028; PC64LE9-NEXT:    stdu 1, -64(1)4029; PC64LE9-NEXT:    std 0, 80(1)4030; PC64LE9-NEXT:    stxv 63, 48(1) # 16-byte Folded Spill4031; PC64LE9-NEXT:    vmr 31, 24032; PC64LE9-NEXT:    xscpsgndp 1, 63, 634033; PC64LE9-NEXT:    stxv 62, 32(1) # 16-byte Folded Spill4034; PC64LE9-NEXT:    bl log24035; PC64LE9-NEXT:    nop4036; PC64LE9-NEXT:    xscpsgndp 62, 1, 14037; PC64LE9-NEXT:    xxswapd 1, 634038; PC64LE9-NEXT:    bl log24039; PC64LE9-NEXT:    nop4040; PC64LE9-NEXT:    xxmrghd 34, 62, 14041; PC64LE9-NEXT:    lxv 63, 48(1) # 16-byte Folded Reload4042; PC64LE9-NEXT:    lxv 62, 32(1) # 16-byte Folded Reload4043; PC64LE9-NEXT:    addi 1, 1, 644044; PC64LE9-NEXT:    ld 0, 16(1)4045; PC64LE9-NEXT:    mtlr 04046; PC64LE9-NEXT:    blr4047entry:4048  %log2 = call <2 x double> @llvm.experimental.constrained.log2.v2f64(4049                              <2 x double> %x,4050                              metadata !"round.dynamic",4051                              metadata !"fpexcept.strict") #14052  ret <2 x double> %log24053}4054 4055define <3 x float> @constrained_vector_log2_v3f32(<3 x float> %x) #0 {4056; PC64LE-LABEL: constrained_vector_log2_v3f32:4057; PC64LE:       # %bb.0: # %entry4058; PC64LE-NEXT:    mflr 04059; PC64LE-NEXT:    stdu 1, -80(1)4060; PC64LE-NEXT:    xxsldwi 0, 34, 34, 14061; PC64LE-NEXT:    li 3, 484062; PC64LE-NEXT:    std 0, 96(1)4063; PC64LE-NEXT:    stfd 30, 64(1) # 8-byte Folded Spill4064; PC64LE-NEXT:    stfd 31, 72(1) # 8-byte Folded Spill4065; PC64LE-NEXT:    xscvspdpn 1, 04066; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill4067; PC64LE-NEXT:    vmr 31, 24068; PC64LE-NEXT:    bl log2f4069; PC64LE-NEXT:    nop4070; PC64LE-NEXT:    xxswapd 0, 634071; PC64LE-NEXT:    fmr 31, 14072; PC64LE-NEXT:    xscvspdpn 1, 04073; PC64LE-NEXT:    bl log2f4074; PC64LE-NEXT:    nop4075; PC64LE-NEXT:    xxsldwi 0, 63, 63, 34076; PC64LE-NEXT:    fmr 30, 14077; PC64LE-NEXT:    xscvspdpn 1, 04078; PC64LE-NEXT:    bl log2f4079; PC64LE-NEXT:    nop4080; PC64LE-NEXT:    xscvdpspn 0, 14081; PC64LE-NEXT:    xscvdpspn 1, 304082; PC64LE-NEXT:    addis 3, 2, .LCPI72_0@toc@ha4083; PC64LE-NEXT:    lfd 30, 64(1) # 8-byte Folded Reload4084; PC64LE-NEXT:    xscvdpspn 36, 314085; PC64LE-NEXT:    lfd 31, 72(1) # 8-byte Folded Reload4086; PC64LE-NEXT:    addi 3, 3, .LCPI72_0@toc@l4087; PC64LE-NEXT:    xxmrghw 34, 1, 04088; PC64LE-NEXT:    lxvd2x 0, 0, 34089; PC64LE-NEXT:    li 3, 484090; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload4091; PC64LE-NEXT:    xxswapd 35, 04092; PC64LE-NEXT:    vperm 2, 4, 2, 34093; PC64LE-NEXT:    addi 1, 1, 804094; PC64LE-NEXT:    ld 0, 16(1)4095; PC64LE-NEXT:    mtlr 04096; PC64LE-NEXT:    blr4097;4098; PC64LE9-LABEL: constrained_vector_log2_v3f32:4099; PC64LE9:       # %bb.0: # %entry4100; PC64LE9-NEXT:    mflr 04101; PC64LE9-NEXT:    stdu 1, -64(1)4102; PC64LE9-NEXT:    xxsldwi 0, 34, 34, 14103; PC64LE9-NEXT:    std 0, 80(1)4104; PC64LE9-NEXT:    stfd 30, 48(1) # 8-byte Folded Spill4105; PC64LE9-NEXT:    stxv 63, 32(1) # 16-byte Folded Spill4106; PC64LE9-NEXT:    stfd 31, 56(1) # 8-byte Folded Spill4107; PC64LE9-NEXT:    vmr 31, 24108; PC64LE9-NEXT:    xscvspdpn 1, 04109; PC64LE9-NEXT:    bl log2f4110; PC64LE9-NEXT:    nop4111; PC64LE9-NEXT:    xxswapd 0, 634112; PC64LE9-NEXT:    fmr 31, 14113; PC64LE9-NEXT:    xscvspdpn 1, 04114; PC64LE9-NEXT:    bl log2f4115; PC64LE9-NEXT:    nop4116; PC64LE9-NEXT:    xxsldwi 0, 63, 63, 34117; PC64LE9-NEXT:    fmr 30, 14118; PC64LE9-NEXT:    xscvspdpn 1, 04119; PC64LE9-NEXT:    bl log2f4120; PC64LE9-NEXT:    nop4121; PC64LE9-NEXT:    xscvdpspn 0, 14122; PC64LE9-NEXT:    xscvdpspn 1, 304123; PC64LE9-NEXT:    addis 3, 2, .LCPI72_0@toc@ha4124; PC64LE9-NEXT:    xscvdpspn 34, 314125; PC64LE9-NEXT:    lxv 63, 32(1) # 16-byte Folded Reload4126; PC64LE9-NEXT:    lfd 31, 56(1) # 8-byte Folded Reload4127; PC64LE9-NEXT:    addi 3, 3, .LCPI72_0@toc@l4128; PC64LE9-NEXT:    lfd 30, 48(1) # 8-byte Folded Reload4129; PC64LE9-NEXT:    xxmrghw 35, 1, 04130; PC64LE9-NEXT:    lxv 0, 0(3)4131; PC64LE9-NEXT:    xxperm 34, 35, 04132; PC64LE9-NEXT:    addi 1, 1, 644133; PC64LE9-NEXT:    ld 0, 16(1)4134; PC64LE9-NEXT:    mtlr 04135; PC64LE9-NEXT:    blr4136entry:4137  %log2 = call <3 x float> @llvm.experimental.constrained.log2.v3f32(4138                              <3 x float> %x,4139                              metadata !"round.dynamic",4140                              metadata !"fpexcept.strict") #14141  ret <3 x float> %log24142}4143 4144define <3 x double> @constrained_vector_log2_v3f64(<3 x double> %x) #0 {4145; PC64LE-LABEL: constrained_vector_log2_v3f64:4146; PC64LE:       # %bb.0: # %entry4147; PC64LE-NEXT:    mflr 04148; PC64LE-NEXT:    stdu 1, -80(1)4149; PC64LE-NEXT:    li 3, 484150; PC64LE-NEXT:    std 0, 96(1)4151; PC64LE-NEXT:    stfd 30, 64(1) # 8-byte Folded Spill4152; PC64LE-NEXT:    fmr 30, 24153; PC64LE-NEXT:    stfd 31, 72(1) # 8-byte Folded Spill4154; PC64LE-NEXT:    fmr 31, 34155; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill4156; PC64LE-NEXT:    bl log24157; PC64LE-NEXT:    nop4158; PC64LE-NEXT:    xxlor 63, 1, 14159; PC64LE-NEXT:    fmr 1, 304160; PC64LE-NEXT:    bl log24161; PC64LE-NEXT:    nop4162; PC64LE-NEXT:    xxmrghd 63, 1, 634163; PC64LE-NEXT:    fmr 1, 314164; PC64LE-NEXT:    bl log24165; PC64LE-NEXT:    nop4166; PC64LE-NEXT:    li 3, 484167; PC64LE-NEXT:    fmr 3, 14168; PC64LE-NEXT:    xxswapd 1, 634169; PC64LE-NEXT:    lfd 31, 72(1) # 8-byte Folded Reload4170; PC64LE-NEXT:    xxlor 2, 63, 634171; PC64LE-NEXT:    lfd 30, 64(1) # 8-byte Folded Reload4172; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload4173; PC64LE-NEXT:    addi 1, 1, 804174; PC64LE-NEXT:    ld 0, 16(1)4175; PC64LE-NEXT:    mtlr 04176; PC64LE-NEXT:    blr4177;4178; PC64LE9-LABEL: constrained_vector_log2_v3f64:4179; PC64LE9:       # %bb.0: # %entry4180; PC64LE9-NEXT:    mflr 04181; PC64LE9-NEXT:    stdu 1, -64(1)4182; PC64LE9-NEXT:    std 0, 80(1)4183; PC64LE9-NEXT:    stfd 30, 48(1) # 8-byte Folded Spill4184; PC64LE9-NEXT:    stxv 63, 32(1) # 16-byte Folded Spill4185; PC64LE9-NEXT:    stfd 31, 56(1) # 8-byte Folded Spill4186; PC64LE9-NEXT:    fmr 31, 34187; PC64LE9-NEXT:    fmr 30, 24188; PC64LE9-NEXT:    bl log24189; PC64LE9-NEXT:    nop4190; PC64LE9-NEXT:    xscpsgndp 63, 1, 14191; PC64LE9-NEXT:    fmr 1, 304192; PC64LE9-NEXT:    bl log24193; PC64LE9-NEXT:    nop4194; PC64LE9-NEXT:    xxmrghd 63, 1, 634195; PC64LE9-NEXT:    fmr 1, 314196; PC64LE9-NEXT:    bl log24197; PC64LE9-NEXT:    nop4198; PC64LE9-NEXT:    fmr 3, 14199; PC64LE9-NEXT:    xxswapd 1, 634200; PC64LE9-NEXT:    xscpsgndp 2, 63, 634201; PC64LE9-NEXT:    lxv 63, 32(1) # 16-byte Folded Reload4202; PC64LE9-NEXT:    lfd 31, 56(1) # 8-byte Folded Reload4203; PC64LE9-NEXT:    lfd 30, 48(1) # 8-byte Folded Reload4204; PC64LE9-NEXT:    addi 1, 1, 644205; PC64LE9-NEXT:    ld 0, 16(1)4206; PC64LE9-NEXT:    mtlr 04207; PC64LE9-NEXT:    blr4208entry:4209  %log2 = call <3 x double> @llvm.experimental.constrained.log2.v3f64(4210                          <3 x double> %x,4211                          metadata !"round.dynamic",4212                          metadata !"fpexcept.strict") #14213  ret <3 x double> %log24214}4215 4216define <4 x double> @constrained_vector_log2_v4f64(<4 x double> %x) #0 {4217; PC64LE-LABEL: constrained_vector_log2_v4f64:4218; PC64LE:       # %bb.0: # %entry4219; PC64LE-NEXT:    mflr 04220; PC64LE-NEXT:    stdu 1, -96(1)4221; PC64LE-NEXT:    li 3, 484222; PC64LE-NEXT:    std 0, 112(1)4223; PC64LE-NEXT:    stxvd2x 61, 1, 3 # 16-byte Folded Spill4224; PC64LE-NEXT:    li 3, 644225; PC64LE-NEXT:    stxvd2x 62, 1, 3 # 16-byte Folded Spill4226; PC64LE-NEXT:    vmr 30, 24227; PC64LE-NEXT:    li 3, 804228; PC64LE-NEXT:    xxlor 1, 62, 624229; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill4230; PC64LE-NEXT:    vmr 31, 34231; PC64LE-NEXT:    bl log24232; PC64LE-NEXT:    nop4233; PC64LE-NEXT:    xxlor 61, 1, 14234; PC64LE-NEXT:    xxswapd 1, 624235; PC64LE-NEXT:    bl log24236; PC64LE-NEXT:    nop4237; PC64LE-NEXT:    xxmrghd 62, 61, 14238; PC64LE-NEXT:    xxlor 1, 63, 634239; PC64LE-NEXT:    bl log24240; PC64LE-NEXT:    nop4241; PC64LE-NEXT:    xxlor 61, 1, 14242; PC64LE-NEXT:    xxswapd 1, 634243; PC64LE-NEXT:    bl log24244; PC64LE-NEXT:    nop4245; PC64LE-NEXT:    li 3, 804246; PC64LE-NEXT:    vmr 2, 304247; PC64LE-NEXT:    xxmrghd 35, 61, 14248; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload4249; PC64LE-NEXT:    li 3, 644250; PC64LE-NEXT:    lxvd2x 62, 1, 3 # 16-byte Folded Reload4251; PC64LE-NEXT:    li 3, 484252; PC64LE-NEXT:    lxvd2x 61, 1, 3 # 16-byte Folded Reload4253; PC64LE-NEXT:    addi 1, 1, 964254; PC64LE-NEXT:    ld 0, 16(1)4255; PC64LE-NEXT:    mtlr 04256; PC64LE-NEXT:    blr4257;4258; PC64LE9-LABEL: constrained_vector_log2_v4f64:4259; PC64LE9:       # %bb.0: # %entry4260; PC64LE9-NEXT:    mflr 04261; PC64LE9-NEXT:    stdu 1, -80(1)4262; PC64LE9-NEXT:    std 0, 96(1)4263; PC64LE9-NEXT:    stxv 62, 48(1) # 16-byte Folded Spill4264; PC64LE9-NEXT:    vmr 30, 24265; PC64LE9-NEXT:    xscpsgndp 1, 62, 624266; PC64LE9-NEXT:    stxv 61, 32(1) # 16-byte Folded Spill4267; PC64LE9-NEXT:    stxv 63, 64(1) # 16-byte Folded Spill4268; PC64LE9-NEXT:    vmr 31, 34269; PC64LE9-NEXT:    bl log24270; PC64LE9-NEXT:    nop4271; PC64LE9-NEXT:    xscpsgndp 61, 1, 14272; PC64LE9-NEXT:    xxswapd 1, 624273; PC64LE9-NEXT:    bl log24274; PC64LE9-NEXT:    nop4275; PC64LE9-NEXT:    xxmrghd 62, 61, 14276; PC64LE9-NEXT:    xscpsgndp 1, 63, 634277; PC64LE9-NEXT:    bl log24278; PC64LE9-NEXT:    nop4279; PC64LE9-NEXT:    xscpsgndp 61, 1, 14280; PC64LE9-NEXT:    xxswapd 1, 634281; PC64LE9-NEXT:    bl log24282; PC64LE9-NEXT:    nop4283; PC64LE9-NEXT:    xxmrghd 35, 61, 14284; PC64LE9-NEXT:    vmr 2, 304285; PC64LE9-NEXT:    lxv 63, 64(1) # 16-byte Folded Reload4286; PC64LE9-NEXT:    lxv 62, 48(1) # 16-byte Folded Reload4287; PC64LE9-NEXT:    lxv 61, 32(1) # 16-byte Folded Reload4288; PC64LE9-NEXT:    addi 1, 1, 804289; PC64LE9-NEXT:    ld 0, 16(1)4290; PC64LE9-NEXT:    mtlr 04291; PC64LE9-NEXT:    blr4292entry:4293  %log2 = call <4 x double> @llvm.experimental.constrained.log2.v4f64(4294                              <4 x double> %x,4295                              metadata !"round.dynamic",4296                              metadata !"fpexcept.strict") #14297  ret <4 x double> %log24298}4299 4300define <1 x float> @constrained_vector_rint_v1f32(<1 x float> %x) #0 {4301; PC64LE-LABEL: constrained_vector_rint_v1f32:4302; PC64LE:       # %bb.0: # %entry4303; PC64LE-NEXT:    xsrdpic 1, 14304; PC64LE-NEXT:    blr4305;4306; PC64LE9-LABEL: constrained_vector_rint_v1f32:4307; PC64LE9:       # %bb.0: # %entry4308; PC64LE9-NEXT:    xsrdpic 1, 14309; PC64LE9-NEXT:    blr4310entry:4311  %rint = call <1 x float> @llvm.experimental.constrained.rint.v1f32(4312                             <1 x float> %x,4313                             metadata !"round.dynamic",4314                             metadata !"fpexcept.strict") #14315  ret <1 x float> %rint4316}4317 4318define <2 x double> @constrained_vector_rint_v2f64(<2 x double> %x) #0 {4319; PC64LE-LABEL: constrained_vector_rint_v2f64:4320; PC64LE:       # %bb.0: # %entry4321; PC64LE-NEXT:    xvrdpic 34, 344322; PC64LE-NEXT:    blr4323;4324; PC64LE9-LABEL: constrained_vector_rint_v2f64:4325; PC64LE9:       # %bb.0: # %entry4326; PC64LE9-NEXT:    xvrdpic 34, 344327; PC64LE9-NEXT:    blr4328entry:4329  %rint = call <2 x double> @llvm.experimental.constrained.rint.v2f64(4330                        <2 x double> %x,4331                        metadata !"round.dynamic",4332                        metadata !"fpexcept.strict") #14333  ret <2 x double> %rint4334}4335 4336define <3 x float> @constrained_vector_rint_v3f32(<3 x float> %x) #0 {4337; PC64LE-LABEL: constrained_vector_rint_v3f32:4338; PC64LE:       # %bb.0: # %entry4339; PC64LE-NEXT:    xxswapd 0, 344340; PC64LE-NEXT:    xxsldwi 1, 34, 34, 34341; PC64LE-NEXT:    addis 3, 2, .LCPI77_0@toc@ha4342; PC64LE-NEXT:    xscvspdpn 0, 04343; PC64LE-NEXT:    xscvspdpn 1, 14344; PC64LE-NEXT:    addi 3, 3, .LCPI77_0@toc@l4345; PC64LE-NEXT:    xxsldwi 2, 34, 34, 14346; PC64LE-NEXT:    xsrdpic 0, 04347; PC64LE-NEXT:    xsrdpic 1, 14348; PC64LE-NEXT:    xscvdpspn 1, 14349; PC64LE-NEXT:    xscvdpspn 0, 04350; PC64LE-NEXT:    xxmrghw 34, 0, 14351; PC64LE-NEXT:    lxvd2x 0, 0, 34352; PC64LE-NEXT:    xxswapd 35, 04353; PC64LE-NEXT:    xscvspdpn 0, 24354; PC64LE-NEXT:    xsrdpic 0, 04355; PC64LE-NEXT:    xscvdpspn 36, 04356; PC64LE-NEXT:    vperm 2, 4, 2, 34357; PC64LE-NEXT:    blr4358;4359; PC64LE9-LABEL: constrained_vector_rint_v3f32:4360; PC64LE9:       # %bb.0: # %entry4361; PC64LE9-NEXT:    xxswapd 1, 344362; PC64LE9-NEXT:    xxsldwi 2, 34, 34, 34363; PC64LE9-NEXT:    addis 3, 2, .LCPI77_0@toc@ha4364; PC64LE9-NEXT:    addi 3, 3, .LCPI77_0@toc@l4365; PC64LE9-NEXT:    xxsldwi 0, 34, 34, 14366; PC64LE9-NEXT:    xscvspdpn 1, 14367; PC64LE9-NEXT:    xscvspdpn 2, 24368; PC64LE9-NEXT:    xscvspdpn 0, 04369; PC64LE9-NEXT:    xsrdpic 1, 14370; PC64LE9-NEXT:    xsrdpic 2, 24371; PC64LE9-NEXT:    xsrdpic 0, 04372; PC64LE9-NEXT:    xscvdpspn 2, 24373; PC64LE9-NEXT:    xscvdpspn 1, 14374; PC64LE9-NEXT:    xscvdpspn 34, 04375; PC64LE9-NEXT:    xxmrghw 35, 1, 24376; PC64LE9-NEXT:    lxv 1, 0(3)4377; PC64LE9-NEXT:    xxperm 34, 35, 14378; PC64LE9-NEXT:    blr4379 entry:4380  %rint = call <3 x float> @llvm.experimental.constrained.rint.v3f32(4381                              <3 x float> %x,4382                              metadata !"round.dynamic",4383                              metadata !"fpexcept.strict") #14384  ret <3 x float> %rint4385}4386 4387define <3 x double> @constrained_vector_rint_v3f64(<3 x double> %x) #0 {4388; PC64LE-LABEL: constrained_vector_rint_v3f64:4389; PC64LE:       # %bb.0: # %entry4390; PC64LE-NEXT:    xxmrghd 0, 2, 14391; PC64LE-NEXT:    xsrdpic 3, 34392; PC64LE-NEXT:    xvrdpic 2, 04393; PC64LE-NEXT:    xxswapd 1, 24394; PC64LE-NEXT:    blr4395;4396; PC64LE9-LABEL: constrained_vector_rint_v3f64:4397; PC64LE9:       # %bb.0: # %entry4398; PC64LE9-NEXT:    xxmrghd 0, 2, 14399; PC64LE9-NEXT:    xsrdpic 3, 34400; PC64LE9-NEXT:    xvrdpic 2, 04401; PC64LE9-NEXT:    xxswapd 1, 24402; PC64LE9-NEXT:    blr4403entry:4404  %rint = call <3 x double> @llvm.experimental.constrained.rint.v3f64(4405                          <3 x double> %x,4406                          metadata !"round.dynamic",4407                          metadata !"fpexcept.strict") #14408  ret <3 x double> %rint4409}4410 4411define <4 x double> @constrained_vector_rint_v4f64(<4 x double> %x) #0 {4412; PC64LE-LABEL: constrained_vector_rint_v4f64:4413; PC64LE:       # %bb.0: # %entry4414; PC64LE-NEXT:    xvrdpic 35, 354415; PC64LE-NEXT:    xvrdpic 34, 344416; PC64LE-NEXT:    blr4417;4418; PC64LE9-LABEL: constrained_vector_rint_v4f64:4419; PC64LE9:       # %bb.0: # %entry4420; PC64LE9-NEXT:    xvrdpic 35, 354421; PC64LE9-NEXT:    xvrdpic 34, 344422; PC64LE9-NEXT:    blr4423entry:4424  %rint = call <4 x double> @llvm.experimental.constrained.rint.v4f64(4425                        <4 x double> %x,4426                        metadata !"round.dynamic",4427                        metadata !"fpexcept.strict") #14428  ret <4 x double> %rint4429}4430 4431define <1 x float> @constrained_vector_nearbyint_v1f32(<1 x float> %x) #0 {4432; PC64LE-LABEL: constrained_vector_nearbyint_v1f32:4433; PC64LE:       # %bb.0: # %entry4434; PC64LE-NEXT:    mflr 04435; PC64LE-NEXT:    stdu 1, -32(1)4436; PC64LE-NEXT:    std 0, 48(1)4437; PC64LE-NEXT:    bl nearbyintf4438; PC64LE-NEXT:    nop4439; PC64LE-NEXT:    addi 1, 1, 324440; PC64LE-NEXT:    ld 0, 16(1)4441; PC64LE-NEXT:    mtlr 04442; PC64LE-NEXT:    blr4443;4444; PC64LE9-LABEL: constrained_vector_nearbyint_v1f32:4445; PC64LE9:       # %bb.0: # %entry4446; PC64LE9-NEXT:    mflr 04447; PC64LE9-NEXT:    stdu 1, -32(1)4448; PC64LE9-NEXT:    std 0, 48(1)4449; PC64LE9-NEXT:    bl nearbyintf4450; PC64LE9-NEXT:    nop4451; PC64LE9-NEXT:    addi 1, 1, 324452; PC64LE9-NEXT:    ld 0, 16(1)4453; PC64LE9-NEXT:    mtlr 04454; PC64LE9-NEXT:    blr4455entry:4456  %nearby = call <1 x float> @llvm.experimental.constrained.nearbyint.v1f32(4457                               <1 x float> %x,4458                               metadata !"round.dynamic",4459                               metadata !"fpexcept.strict") #14460  ret <1 x float> %nearby4461}4462 4463define <2 x double> @constrained_vector_nearbyint_v2f64(<2 x double> %x) #0 {4464; PC64LE-LABEL: constrained_vector_nearbyint_v2f64:4465; PC64LE:       # %bb.0: # %entry4466; PC64LE-NEXT:    mflr 04467; PC64LE-NEXT:    stdu 1, -80(1)4468; PC64LE-NEXT:    li 3, 484469; PC64LE-NEXT:    std 0, 96(1)4470; PC64LE-NEXT:    stxvd2x 62, 1, 3 # 16-byte Folded Spill4471; PC64LE-NEXT:    li 3, 644472; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill4473; PC64LE-NEXT:    vmr 31, 24474; PC64LE-NEXT:    xxlor 1, 63, 634475; PC64LE-NEXT:    bl nearbyint4476; PC64LE-NEXT:    nop4477; PC64LE-NEXT:    xxlor 62, 1, 14478; PC64LE-NEXT:    xxswapd 1, 634479; PC64LE-NEXT:    bl nearbyint4480; PC64LE-NEXT:    nop4481; PC64LE-NEXT:    li 3, 644482; PC64LE-NEXT:    xxmrghd 34, 62, 14483; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload4484; PC64LE-NEXT:    li 3, 484485; PC64LE-NEXT:    lxvd2x 62, 1, 3 # 16-byte Folded Reload4486; PC64LE-NEXT:    addi 1, 1, 804487; PC64LE-NEXT:    ld 0, 16(1)4488; PC64LE-NEXT:    mtlr 04489; PC64LE-NEXT:    blr4490;4491; PC64LE9-LABEL: constrained_vector_nearbyint_v2f64:4492; PC64LE9:       # %bb.0: # %entry4493; PC64LE9-NEXT:    mflr 04494; PC64LE9-NEXT:    stdu 1, -64(1)4495; PC64LE9-NEXT:    std 0, 80(1)4496; PC64LE9-NEXT:    stxv 63, 48(1) # 16-byte Folded Spill4497; PC64LE9-NEXT:    vmr 31, 24498; PC64LE9-NEXT:    xscpsgndp 1, 63, 634499; PC64LE9-NEXT:    stxv 62, 32(1) # 16-byte Folded Spill4500; PC64LE9-NEXT:    bl nearbyint4501; PC64LE9-NEXT:    nop4502; PC64LE9-NEXT:    xscpsgndp 62, 1, 14503; PC64LE9-NEXT:    xxswapd 1, 634504; PC64LE9-NEXT:    bl nearbyint4505; PC64LE9-NEXT:    nop4506; PC64LE9-NEXT:    xxmrghd 34, 62, 14507; PC64LE9-NEXT:    lxv 63, 48(1) # 16-byte Folded Reload4508; PC64LE9-NEXT:    lxv 62, 32(1) # 16-byte Folded Reload4509; PC64LE9-NEXT:    addi 1, 1, 644510; PC64LE9-NEXT:    ld 0, 16(1)4511; PC64LE9-NEXT:    mtlr 04512; PC64LE9-NEXT:    blr4513entry:4514  %nearby = call <2 x double> @llvm.experimental.constrained.nearbyint.v2f64(4515                                <2 x double> %x,4516                                metadata !"round.dynamic",4517                                metadata !"fpexcept.strict") #14518  ret <2 x double> %nearby4519}4520 4521define <3 x float> @constrained_vector_nearbyint_v3f32(<3 x float> %x) #0 {4522; PC64LE-LABEL: constrained_vector_nearbyint_v3f32:4523; PC64LE:       # %bb.0: # %entry4524; PC64LE-NEXT:    mflr 04525; PC64LE-NEXT:    stdu 1, -80(1)4526; PC64LE-NEXT:    xxsldwi 0, 34, 34, 14527; PC64LE-NEXT:    li 3, 484528; PC64LE-NEXT:    std 0, 96(1)4529; PC64LE-NEXT:    stfd 30, 64(1) # 8-byte Folded Spill4530; PC64LE-NEXT:    stfd 31, 72(1) # 8-byte Folded Spill4531; PC64LE-NEXT:    xscvspdpn 1, 04532; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill4533; PC64LE-NEXT:    vmr 31, 24534; PC64LE-NEXT:    bl nearbyintf4535; PC64LE-NEXT:    nop4536; PC64LE-NEXT:    xxswapd 0, 634537; PC64LE-NEXT:    fmr 31, 14538; PC64LE-NEXT:    xscvspdpn 1, 04539; PC64LE-NEXT:    bl nearbyintf4540; PC64LE-NEXT:    nop4541; PC64LE-NEXT:    xxsldwi 0, 63, 63, 34542; PC64LE-NEXT:    fmr 30, 14543; PC64LE-NEXT:    xscvspdpn 1, 04544; PC64LE-NEXT:    bl nearbyintf4545; PC64LE-NEXT:    nop4546; PC64LE-NEXT:    xscvdpspn 0, 14547; PC64LE-NEXT:    xscvdpspn 1, 304548; PC64LE-NEXT:    addis 3, 2, .LCPI82_0@toc@ha4549; PC64LE-NEXT:    lfd 30, 64(1) # 8-byte Folded Reload4550; PC64LE-NEXT:    xscvdpspn 36, 314551; PC64LE-NEXT:    lfd 31, 72(1) # 8-byte Folded Reload4552; PC64LE-NEXT:    addi 3, 3, .LCPI82_0@toc@l4553; PC64LE-NEXT:    xxmrghw 34, 1, 04554; PC64LE-NEXT:    lxvd2x 0, 0, 34555; PC64LE-NEXT:    li 3, 484556; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload4557; PC64LE-NEXT:    xxswapd 35, 04558; PC64LE-NEXT:    vperm 2, 4, 2, 34559; PC64LE-NEXT:    addi 1, 1, 804560; PC64LE-NEXT:    ld 0, 16(1)4561; PC64LE-NEXT:    mtlr 04562; PC64LE-NEXT:    blr4563;4564; PC64LE9-LABEL: constrained_vector_nearbyint_v3f32:4565; PC64LE9:       # %bb.0: # %entry4566; PC64LE9-NEXT:    mflr 04567; PC64LE9-NEXT:    stdu 1, -64(1)4568; PC64LE9-NEXT:    xxsldwi 0, 34, 34, 14569; PC64LE9-NEXT:    std 0, 80(1)4570; PC64LE9-NEXT:    stfd 30, 48(1) # 8-byte Folded Spill4571; PC64LE9-NEXT:    stxv 63, 32(1) # 16-byte Folded Spill4572; PC64LE9-NEXT:    stfd 31, 56(1) # 8-byte Folded Spill4573; PC64LE9-NEXT:    vmr 31, 24574; PC64LE9-NEXT:    xscvspdpn 1, 04575; PC64LE9-NEXT:    bl nearbyintf4576; PC64LE9-NEXT:    nop4577; PC64LE9-NEXT:    xxswapd 0, 634578; PC64LE9-NEXT:    fmr 31, 14579; PC64LE9-NEXT:    xscvspdpn 1, 04580; PC64LE9-NEXT:    bl nearbyintf4581; PC64LE9-NEXT:    nop4582; PC64LE9-NEXT:    xxsldwi 0, 63, 63, 34583; PC64LE9-NEXT:    fmr 30, 14584; PC64LE9-NEXT:    xscvspdpn 1, 04585; PC64LE9-NEXT:    bl nearbyintf4586; PC64LE9-NEXT:    nop4587; PC64LE9-NEXT:    xscvdpspn 0, 14588; PC64LE9-NEXT:    xscvdpspn 1, 304589; PC64LE9-NEXT:    addis 3, 2, .LCPI82_0@toc@ha4590; PC64LE9-NEXT:    xscvdpspn 34, 314591; PC64LE9-NEXT:    lxv 63, 32(1) # 16-byte Folded Reload4592; PC64LE9-NEXT:    lfd 31, 56(1) # 8-byte Folded Reload4593; PC64LE9-NEXT:    addi 3, 3, .LCPI82_0@toc@l4594; PC64LE9-NEXT:    lfd 30, 48(1) # 8-byte Folded Reload4595; PC64LE9-NEXT:    xxmrghw 35, 1, 04596; PC64LE9-NEXT:    lxv 0, 0(3)4597; PC64LE9-NEXT:    xxperm 34, 35, 04598; PC64LE9-NEXT:    addi 1, 1, 644599; PC64LE9-NEXT:    ld 0, 16(1)4600; PC64LE9-NEXT:    mtlr 04601; PC64LE9-NEXT:    blr4602entry:4603  %nearby = call <3 x float> @llvm.experimental.constrained.nearbyint.v3f32(4604                              <3 x float> %x,4605                              metadata !"round.dynamic",4606                              metadata !"fpexcept.strict") #14607  ret <3 x float> %nearby4608}4609 4610define <3 x double> @constrained_vector_nearby_v3f64(<3 x double> %x) #0 {4611; PC64LE-LABEL: constrained_vector_nearby_v3f64:4612; PC64LE:       # %bb.0: # %entry4613; PC64LE-NEXT:    mflr 04614; PC64LE-NEXT:    stdu 1, -80(1)4615; PC64LE-NEXT:    li 3, 484616; PC64LE-NEXT:    std 0, 96(1)4617; PC64LE-NEXT:    stfd 30, 64(1) # 8-byte Folded Spill4618; PC64LE-NEXT:    fmr 30, 24619; PC64LE-NEXT:    stfd 31, 72(1) # 8-byte Folded Spill4620; PC64LE-NEXT:    fmr 31, 34621; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill4622; PC64LE-NEXT:    bl nearbyint4623; PC64LE-NEXT:    nop4624; PC64LE-NEXT:    xxlor 63, 1, 14625; PC64LE-NEXT:    fmr 1, 304626; PC64LE-NEXT:    bl nearbyint4627; PC64LE-NEXT:    nop4628; PC64LE-NEXT:    xxmrghd 63, 1, 634629; PC64LE-NEXT:    fmr 1, 314630; PC64LE-NEXT:    bl nearbyint4631; PC64LE-NEXT:    nop4632; PC64LE-NEXT:    li 3, 484633; PC64LE-NEXT:    fmr 3, 14634; PC64LE-NEXT:    xxswapd 1, 634635; PC64LE-NEXT:    lfd 31, 72(1) # 8-byte Folded Reload4636; PC64LE-NEXT:    xxlor 2, 63, 634637; PC64LE-NEXT:    lfd 30, 64(1) # 8-byte Folded Reload4638; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload4639; PC64LE-NEXT:    addi 1, 1, 804640; PC64LE-NEXT:    ld 0, 16(1)4641; PC64LE-NEXT:    mtlr 04642; PC64LE-NEXT:    blr4643;4644; PC64LE9-LABEL: constrained_vector_nearby_v3f64:4645; PC64LE9:       # %bb.0: # %entry4646; PC64LE9-NEXT:    mflr 04647; PC64LE9-NEXT:    stdu 1, -64(1)4648; PC64LE9-NEXT:    std 0, 80(1)4649; PC64LE9-NEXT:    stfd 30, 48(1) # 8-byte Folded Spill4650; PC64LE9-NEXT:    stxv 63, 32(1) # 16-byte Folded Spill4651; PC64LE9-NEXT:    stfd 31, 56(1) # 8-byte Folded Spill4652; PC64LE9-NEXT:    fmr 31, 34653; PC64LE9-NEXT:    fmr 30, 24654; PC64LE9-NEXT:    bl nearbyint4655; PC64LE9-NEXT:    nop4656; PC64LE9-NEXT:    xscpsgndp 63, 1, 14657; PC64LE9-NEXT:    fmr 1, 304658; PC64LE9-NEXT:    bl nearbyint4659; PC64LE9-NEXT:    nop4660; PC64LE9-NEXT:    xxmrghd 63, 1, 634661; PC64LE9-NEXT:    fmr 1, 314662; PC64LE9-NEXT:    bl nearbyint4663; PC64LE9-NEXT:    nop4664; PC64LE9-NEXT:    fmr 3, 14665; PC64LE9-NEXT:    xxswapd 1, 634666; PC64LE9-NEXT:    xscpsgndp 2, 63, 634667; PC64LE9-NEXT:    lxv 63, 32(1) # 16-byte Folded Reload4668; PC64LE9-NEXT:    lfd 31, 56(1) # 8-byte Folded Reload4669; PC64LE9-NEXT:    lfd 30, 48(1) # 8-byte Folded Reload4670; PC64LE9-NEXT:    addi 1, 1, 644671; PC64LE9-NEXT:    ld 0, 16(1)4672; PC64LE9-NEXT:    mtlr 04673; PC64LE9-NEXT:    blr4674entry:4675  %nearby = call <3 x double> @llvm.experimental.constrained.nearbyint.v3f64(4676                          <3 x double> %x,4677                          metadata !"round.dynamic",4678                          metadata !"fpexcept.strict") #14679  ret <3 x double> %nearby4680}4681 4682define <4 x double> @constrained_vector_nearbyint_v4f64(<4 x double> %x) #0 {4683; PC64LE-LABEL: constrained_vector_nearbyint_v4f64:4684; PC64LE:       # %bb.0: # %entry4685; PC64LE-NEXT:    mflr 04686; PC64LE-NEXT:    stdu 1, -96(1)4687; PC64LE-NEXT:    li 3, 484688; PC64LE-NEXT:    std 0, 112(1)4689; PC64LE-NEXT:    stxvd2x 61, 1, 3 # 16-byte Folded Spill4690; PC64LE-NEXT:    li 3, 644691; PC64LE-NEXT:    stxvd2x 62, 1, 3 # 16-byte Folded Spill4692; PC64LE-NEXT:    vmr 30, 24693; PC64LE-NEXT:    li 3, 804694; PC64LE-NEXT:    xxlor 1, 62, 624695; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill4696; PC64LE-NEXT:    vmr 31, 34697; PC64LE-NEXT:    bl nearbyint4698; PC64LE-NEXT:    nop4699; PC64LE-NEXT:    xxlor 61, 1, 14700; PC64LE-NEXT:    xxswapd 1, 624701; PC64LE-NEXT:    bl nearbyint4702; PC64LE-NEXT:    nop4703; PC64LE-NEXT:    xxmrghd 62, 61, 14704; PC64LE-NEXT:    xxlor 1, 63, 634705; PC64LE-NEXT:    bl nearbyint4706; PC64LE-NEXT:    nop4707; PC64LE-NEXT:    xxlor 61, 1, 14708; PC64LE-NEXT:    xxswapd 1, 634709; PC64LE-NEXT:    bl nearbyint4710; PC64LE-NEXT:    nop4711; PC64LE-NEXT:    li 3, 804712; PC64LE-NEXT:    vmr 2, 304713; PC64LE-NEXT:    xxmrghd 35, 61, 14714; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload4715; PC64LE-NEXT:    li 3, 644716; PC64LE-NEXT:    lxvd2x 62, 1, 3 # 16-byte Folded Reload4717; PC64LE-NEXT:    li 3, 484718; PC64LE-NEXT:    lxvd2x 61, 1, 3 # 16-byte Folded Reload4719; PC64LE-NEXT:    addi 1, 1, 964720; PC64LE-NEXT:    ld 0, 16(1)4721; PC64LE-NEXT:    mtlr 04722; PC64LE-NEXT:    blr4723;4724; PC64LE9-LABEL: constrained_vector_nearbyint_v4f64:4725; PC64LE9:       # %bb.0: # %entry4726; PC64LE9-NEXT:    mflr 04727; PC64LE9-NEXT:    stdu 1, -80(1)4728; PC64LE9-NEXT:    std 0, 96(1)4729; PC64LE9-NEXT:    stxv 62, 48(1) # 16-byte Folded Spill4730; PC64LE9-NEXT:    vmr 30, 24731; PC64LE9-NEXT:    xscpsgndp 1, 62, 624732; PC64LE9-NEXT:    stxv 61, 32(1) # 16-byte Folded Spill4733; PC64LE9-NEXT:    stxv 63, 64(1) # 16-byte Folded Spill4734; PC64LE9-NEXT:    vmr 31, 34735; PC64LE9-NEXT:    bl nearbyint4736; PC64LE9-NEXT:    nop4737; PC64LE9-NEXT:    xscpsgndp 61, 1, 14738; PC64LE9-NEXT:    xxswapd 1, 624739; PC64LE9-NEXT:    bl nearbyint4740; PC64LE9-NEXT:    nop4741; PC64LE9-NEXT:    xxmrghd 62, 61, 14742; PC64LE9-NEXT:    xscpsgndp 1, 63, 634743; PC64LE9-NEXT:    bl nearbyint4744; PC64LE9-NEXT:    nop4745; PC64LE9-NEXT:    xscpsgndp 61, 1, 14746; PC64LE9-NEXT:    xxswapd 1, 634747; PC64LE9-NEXT:    bl nearbyint4748; PC64LE9-NEXT:    nop4749; PC64LE9-NEXT:    xxmrghd 35, 61, 14750; PC64LE9-NEXT:    vmr 2, 304751; PC64LE9-NEXT:    lxv 63, 64(1) # 16-byte Folded Reload4752; PC64LE9-NEXT:    lxv 62, 48(1) # 16-byte Folded Reload4753; PC64LE9-NEXT:    lxv 61, 32(1) # 16-byte Folded Reload4754; PC64LE9-NEXT:    addi 1, 1, 804755; PC64LE9-NEXT:    ld 0, 16(1)4756; PC64LE9-NEXT:    mtlr 04757; PC64LE9-NEXT:    blr4758entry:4759  %nearby = call <4 x double> @llvm.experimental.constrained.nearbyint.v4f64(4760                                <4 x double> %x,4761                                metadata !"round.dynamic",4762                                metadata !"fpexcept.strict") #14763  ret <4 x double> %nearby4764}4765 4766define <1 x float> @constrained_vector_maxnum_v1f32(<1 x float> %x, <1 x float> %y) #0 {4767; PC64LE-LABEL: constrained_vector_maxnum_v1f32:4768; PC64LE:       # %bb.0: # %entry4769; PC64LE-NEXT:    mflr 04770; PC64LE-NEXT:    stdu 1, -32(1)4771; PC64LE-NEXT:    std 0, 48(1)4772; PC64LE-NEXT:    bl fmaxf4773; PC64LE-NEXT:    nop4774; PC64LE-NEXT:    addi 1, 1, 324775; PC64LE-NEXT:    ld 0, 16(1)4776; PC64LE-NEXT:    mtlr 04777; PC64LE-NEXT:    blr4778;4779; PC64LE9-LABEL: constrained_vector_maxnum_v1f32:4780; PC64LE9:       # %bb.0: # %entry4781; PC64LE9-NEXT:    mflr 04782; PC64LE9-NEXT:    stdu 1, -32(1)4783; PC64LE9-NEXT:    std 0, 48(1)4784; PC64LE9-NEXT:    bl fmaxf4785; PC64LE9-NEXT:    nop4786; PC64LE9-NEXT:    addi 1, 1, 324787; PC64LE9-NEXT:    ld 0, 16(1)4788; PC64LE9-NEXT:    mtlr 04789; PC64LE9-NEXT:    blr4790entry:4791  %max = call <1 x float> @llvm.experimental.constrained.maxnum.v1f32(4792                               <1 x float> %x, <1 x float> %y,4793                               metadata !"fpexcept.strict") #14794  ret <1 x float> %max4795}4796 4797define <2 x double> @constrained_vector_maxnum_v2f64(<2 x double> %x, <2 x double> %y) #0 {4798; PC64LE-LABEL: constrained_vector_maxnum_v2f64:4799; PC64LE:       # %bb.0: # %entry4800; PC64LE-NEXT:    xvmaxdp 34, 34, 354801; PC64LE-NEXT:    blr4802;4803; PC64LE9-LABEL: constrained_vector_maxnum_v2f64:4804; PC64LE9:       # %bb.0: # %entry4805; PC64LE9-NEXT:    xvmaxdp 34, 34, 354806; PC64LE9-NEXT:    blr4807entry:4808  %max = call <2 x double> @llvm.experimental.constrained.maxnum.v2f64(4809                                <2 x double> %x,4810                                <2 x double> %y,4811                                metadata !"fpexcept.strict") #14812  ret <2 x double> %max4813}4814 4815define <3 x float> @constrained_vector_maxnum_v3f32(<3 x float> %x, <3 x float> %y) #0 {4816; PC64LE-LABEL: constrained_vector_maxnum_v3f32:4817; PC64LE:       # %bb.0: # %entry4818; PC64LE-NEXT:    mflr 04819; PC64LE-NEXT:    stdu 1, -96(1)4820; PC64LE-NEXT:    xxsldwi 0, 34, 34, 14821; PC64LE-NEXT:    xxsldwi 2, 35, 35, 14822; PC64LE-NEXT:    li 3, 484823; PC64LE-NEXT:    std 0, 112(1)4824; PC64LE-NEXT:    stfd 30, 80(1) # 8-byte Folded Spill4825; PC64LE-NEXT:    stfd 31, 88(1) # 8-byte Folded Spill4826; PC64LE-NEXT:    xscvspdpn 1, 04827; PC64LE-NEXT:    xscvspdpn 2, 24828; PC64LE-NEXT:    stxvd2x 62, 1, 3 # 16-byte Folded Spill4829; PC64LE-NEXT:    li 3, 644830; PC64LE-NEXT:    vmr 30, 24831; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill4832; PC64LE-NEXT:    vmr 31, 34833; PC64LE-NEXT:    bl fmaxf4834; PC64LE-NEXT:    nop4835; PC64LE-NEXT:    xxswapd 0, 624836; PC64LE-NEXT:    xxswapd 2, 634837; PC64LE-NEXT:    fmr 31, 14838; PC64LE-NEXT:    xscvspdpn 1, 04839; PC64LE-NEXT:    xscvspdpn 2, 24840; PC64LE-NEXT:    bl fmaxf4841; PC64LE-NEXT:    nop4842; PC64LE-NEXT:    xxsldwi 0, 62, 62, 34843; PC64LE-NEXT:    xxsldwi 2, 63, 63, 34844; PC64LE-NEXT:    fmr 30, 14845; PC64LE-NEXT:    xscvspdpn 1, 04846; PC64LE-NEXT:    xscvspdpn 2, 24847; PC64LE-NEXT:    bl fmaxf4848; PC64LE-NEXT:    nop4849; PC64LE-NEXT:    xscvdpspn 0, 14850; PC64LE-NEXT:    xscvdpspn 1, 304851; PC64LE-NEXT:    addis 3, 2, .LCPI87_0@toc@ha4852; PC64LE-NEXT:    lfd 30, 80(1) # 8-byte Folded Reload4853; PC64LE-NEXT:    xscvdpspn 36, 314854; PC64LE-NEXT:    lfd 31, 88(1) # 8-byte Folded Reload4855; PC64LE-NEXT:    addi 3, 3, .LCPI87_0@toc@l4856; PC64LE-NEXT:    xxmrghw 34, 1, 04857; PC64LE-NEXT:    lxvd2x 0, 0, 34858; PC64LE-NEXT:    li 3, 644859; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload4860; PC64LE-NEXT:    li 3, 484861; PC64LE-NEXT:    lxvd2x 62, 1, 3 # 16-byte Folded Reload4862; PC64LE-NEXT:    xxswapd 35, 04863; PC64LE-NEXT:    vperm 2, 4, 2, 34864; PC64LE-NEXT:    addi 1, 1, 964865; PC64LE-NEXT:    ld 0, 16(1)4866; PC64LE-NEXT:    mtlr 04867; PC64LE-NEXT:    blr4868;4869; PC64LE9-LABEL: constrained_vector_maxnum_v3f32:4870; PC64LE9:       # %bb.0: # %entry4871; PC64LE9-NEXT:    mflr 04872; PC64LE9-NEXT:    stdu 1, -80(1)4873; PC64LE9-NEXT:    xxsldwi 0, 34, 34, 14874; PC64LE9-NEXT:    std 0, 96(1)4875; PC64LE9-NEXT:    stfd 30, 64(1) # 8-byte Folded Spill4876; PC64LE9-NEXT:    stxv 62, 32(1) # 16-byte Folded Spill4877; PC64LE9-NEXT:    stfd 31, 72(1) # 8-byte Folded Spill4878; PC64LE9-NEXT:    stxv 63, 48(1) # 16-byte Folded Spill4879; PC64LE9-NEXT:    xscvspdpn 1, 04880; PC64LE9-NEXT:    xxsldwi 0, 35, 35, 14881; PC64LE9-NEXT:    vmr 31, 34882; PC64LE9-NEXT:    vmr 30, 24883; PC64LE9-NEXT:    xscvspdpn 2, 04884; PC64LE9-NEXT:    bl fmaxf4885; PC64LE9-NEXT:    nop4886; PC64LE9-NEXT:    xxswapd 0, 624887; PC64LE9-NEXT:    fmr 31, 14888; PC64LE9-NEXT:    xscvspdpn 1, 04889; PC64LE9-NEXT:    xxswapd 0, 634890; PC64LE9-NEXT:    xscvspdpn 2, 04891; PC64LE9-NEXT:    bl fmaxf4892; PC64LE9-NEXT:    nop4893; PC64LE9-NEXT:    xxsldwi 0, 62, 62, 34894; PC64LE9-NEXT:    fmr 30, 14895; PC64LE9-NEXT:    xscvspdpn 1, 04896; PC64LE9-NEXT:    xxsldwi 0, 63, 63, 34897; PC64LE9-NEXT:    xscvspdpn 2, 04898; PC64LE9-NEXT:    bl fmaxf4899; PC64LE9-NEXT:    nop4900; PC64LE9-NEXT:    xscvdpspn 0, 14901; PC64LE9-NEXT:    xscvdpspn 1, 304902; PC64LE9-NEXT:    addis 3, 2, .LCPI87_0@toc@ha4903; PC64LE9-NEXT:    xscvdpspn 34, 314904; PC64LE9-NEXT:    lxv 63, 48(1) # 16-byte Folded Reload4905; PC64LE9-NEXT:    lxv 62, 32(1) # 16-byte Folded Reload4906; PC64LE9-NEXT:    lfd 31, 72(1) # 8-byte Folded Reload4907; PC64LE9-NEXT:    addi 3, 3, .LCPI87_0@toc@l4908; PC64LE9-NEXT:    lfd 30, 64(1) # 8-byte Folded Reload4909; PC64LE9-NEXT:    xxmrghw 35, 1, 04910; PC64LE9-NEXT:    lxv 0, 0(3)4911; PC64LE9-NEXT:    xxperm 34, 35, 04912; PC64LE9-NEXT:    addi 1, 1, 804913; PC64LE9-NEXT:    ld 0, 16(1)4914; PC64LE9-NEXT:    mtlr 04915; PC64LE9-NEXT:    blr4916entry:4917  %max = call <3 x float> @llvm.experimental.constrained.maxnum.v3f32(4918                              <3 x float> %x,4919                              <3 x float> %y,4920                              metadata !"fpexcept.strict") #14921  ret <3 x float> %max4922}4923 4924define <3 x double> @constrained_vector_max_v3f64(<3 x double> %x, <3 x double> %y) #0 {4925; PC64LE-LABEL: constrained_vector_max_v3f64:4926; PC64LE:       # %bb.0: # %entry4927; PC64LE-NEXT:    mflr 04928; PC64LE-NEXT:    stdu 1, -64(1)4929; PC64LE-NEXT:    li 3, 484930; PC64LE-NEXT:    xxmrghd 0, 5, 44931; PC64LE-NEXT:    xxmrghd 1, 2, 14932; PC64LE-NEXT:    std 0, 80(1)4933; PC64LE-NEXT:    fmr 2, 64934; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill4935; PC64LE-NEXT:    xvmaxdp 63, 1, 04936; PC64LE-NEXT:    fmr 1, 34937; PC64LE-NEXT:    bl fmax4938; PC64LE-NEXT:    nop4939; PC64LE-NEXT:    li 3, 484940; PC64LE-NEXT:    fmr 3, 14941; PC64LE-NEXT:    xxswapd 1, 634942; PC64LE-NEXT:    xxlor 2, 63, 634943; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload4944; PC64LE-NEXT:    addi 1, 1, 644945; PC64LE-NEXT:    ld 0, 16(1)4946; PC64LE-NEXT:    mtlr 04947; PC64LE-NEXT:    blr4948;4949; PC64LE9-LABEL: constrained_vector_max_v3f64:4950; PC64LE9:       # %bb.0: # %entry4951; PC64LE9-NEXT:    mflr 04952; PC64LE9-NEXT:    stdu 1, -48(1)4953; PC64LE9-NEXT:    xxmrghd 0, 5, 44954; PC64LE9-NEXT:    xxmrghd 1, 2, 14955; PC64LE9-NEXT:    std 0, 64(1)4956; PC64LE9-NEXT:    fmr 2, 64957; PC64LE9-NEXT:    stxv 63, 32(1) # 16-byte Folded Spill4958; PC64LE9-NEXT:    xvmaxdp 63, 1, 04959; PC64LE9-NEXT:    fmr 1, 34960; PC64LE9-NEXT:    bl fmax4961; PC64LE9-NEXT:    nop4962; PC64LE9-NEXT:    fmr 3, 14963; PC64LE9-NEXT:    xxswapd 1, 634964; PC64LE9-NEXT:    xscpsgndp 2, 63, 634965; PC64LE9-NEXT:    lxv 63, 32(1) # 16-byte Folded Reload4966; PC64LE9-NEXT:    addi 1, 1, 484967; PC64LE9-NEXT:    ld 0, 16(1)4968; PC64LE9-NEXT:    mtlr 04969; PC64LE9-NEXT:    blr4970entry:4971  %max = call <3 x double> @llvm.experimental.constrained.maxnum.v3f64(4972                          <3 x double> %x,4973                          <3 x double> %y,4974                          metadata !"fpexcept.strict") #14975  ret <3 x double> %max4976}4977 4978define <4 x double> @constrained_vector_maxnum_v4f64(<4 x double> %x, <4 x double> %y) #0 {4979; PC64LE-LABEL: constrained_vector_maxnum_v4f64:4980; PC64LE:       # %bb.0: # %entry4981; PC64LE-NEXT:    xvmaxdp 34, 34, 364982; PC64LE-NEXT:    xvmaxdp 35, 35, 374983; PC64LE-NEXT:    blr4984;4985; PC64LE9-LABEL: constrained_vector_maxnum_v4f64:4986; PC64LE9:       # %bb.0: # %entry4987; PC64LE9-NEXT:    xvmaxdp 34, 34, 364988; PC64LE9-NEXT:    xvmaxdp 35, 35, 374989; PC64LE9-NEXT:    blr4990entry:4991  %max = call <4 x double> @llvm.experimental.constrained.maxnum.v4f64(4992                                <4 x double> %x,4993                                <4 x double> %y,4994                                metadata !"fpexcept.strict") #14995  ret <4 x double> %max4996}4997 4998define <1 x float> @constrained_vector_minnum_v1f32(<1 x float> %x, <1 x float> %y) #0 {4999; PC64LE-LABEL: constrained_vector_minnum_v1f32:5000; PC64LE:       # %bb.0: # %entry5001; PC64LE-NEXT:    mflr 05002; PC64LE-NEXT:    stdu 1, -32(1)5003; PC64LE-NEXT:    std 0, 48(1)5004; PC64LE-NEXT:    bl fminf5005; PC64LE-NEXT:    nop5006; PC64LE-NEXT:    addi 1, 1, 325007; PC64LE-NEXT:    ld 0, 16(1)5008; PC64LE-NEXT:    mtlr 05009; PC64LE-NEXT:    blr5010;5011; PC64LE9-LABEL: constrained_vector_minnum_v1f32:5012; PC64LE9:       # %bb.0: # %entry5013; PC64LE9-NEXT:    mflr 05014; PC64LE9-NEXT:    stdu 1, -32(1)5015; PC64LE9-NEXT:    std 0, 48(1)5016; PC64LE9-NEXT:    bl fminf5017; PC64LE9-NEXT:    nop5018; PC64LE9-NEXT:    addi 1, 1, 325019; PC64LE9-NEXT:    ld 0, 16(1)5020; PC64LE9-NEXT:    mtlr 05021; PC64LE9-NEXT:    blr5022 entry:5023  %min = call <1 x float> @llvm.experimental.constrained.minnum.v1f32(5024                               <1 x float> %x, <1 x float> %y,5025                               metadata !"fpexcept.strict") #15026  ret <1 x float> %min5027}5028 5029define <2 x double> @constrained_vector_minnum_v2f64(<2 x double> %x, <2 x double> %y) #0 {5030; PC64LE-LABEL: constrained_vector_minnum_v2f64:5031; PC64LE:       # %bb.0: # %entry5032; PC64LE-NEXT:    xvmindp 34, 34, 355033; PC64LE-NEXT:    blr5034;5035; PC64LE9-LABEL: constrained_vector_minnum_v2f64:5036; PC64LE9:       # %bb.0: # %entry5037; PC64LE9-NEXT:    xvmindp 34, 34, 355038; PC64LE9-NEXT:    blr5039entry:5040  %min = call <2 x double> @llvm.experimental.constrained.minnum.v2f64(5041                                <2 x double> %x,5042                                <2 x double> %y,5043                                metadata !"fpexcept.strict") #15044  ret <2 x double> %min5045}5046 5047define <3 x float> @constrained_vector_minnum_v3f32(<3 x float> %x, <3 x float> %y) #0 {5048; PC64LE-LABEL: constrained_vector_minnum_v3f32:5049; PC64LE:       # %bb.0: # %entry5050; PC64LE-NEXT:    mflr 05051; PC64LE-NEXT:    stdu 1, -96(1)5052; PC64LE-NEXT:    xxsldwi 0, 34, 34, 15053; PC64LE-NEXT:    xxsldwi 2, 35, 35, 15054; PC64LE-NEXT:    li 3, 485055; PC64LE-NEXT:    std 0, 112(1)5056; PC64LE-NEXT:    stfd 30, 80(1) # 8-byte Folded Spill5057; PC64LE-NEXT:    stfd 31, 88(1) # 8-byte Folded Spill5058; PC64LE-NEXT:    xscvspdpn 1, 05059; PC64LE-NEXT:    xscvspdpn 2, 25060; PC64LE-NEXT:    stxvd2x 62, 1, 3 # 16-byte Folded Spill5061; PC64LE-NEXT:    li 3, 645062; PC64LE-NEXT:    vmr 30, 25063; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill5064; PC64LE-NEXT:    vmr 31, 35065; PC64LE-NEXT:    bl fminf5066; PC64LE-NEXT:    nop5067; PC64LE-NEXT:    xxswapd 0, 625068; PC64LE-NEXT:    xxswapd 2, 635069; PC64LE-NEXT:    fmr 31, 15070; PC64LE-NEXT:    xscvspdpn 1, 05071; PC64LE-NEXT:    xscvspdpn 2, 25072; PC64LE-NEXT:    bl fminf5073; PC64LE-NEXT:    nop5074; PC64LE-NEXT:    xxsldwi 0, 62, 62, 35075; PC64LE-NEXT:    xxsldwi 2, 63, 63, 35076; PC64LE-NEXT:    fmr 30, 15077; PC64LE-NEXT:    xscvspdpn 1, 05078; PC64LE-NEXT:    xscvspdpn 2, 25079; PC64LE-NEXT:    bl fminf5080; PC64LE-NEXT:    nop5081; PC64LE-NEXT:    xscvdpspn 0, 15082; PC64LE-NEXT:    xscvdpspn 1, 305083; PC64LE-NEXT:    addis 3, 2, .LCPI92_0@toc@ha5084; PC64LE-NEXT:    lfd 30, 80(1) # 8-byte Folded Reload5085; PC64LE-NEXT:    xscvdpspn 36, 315086; PC64LE-NEXT:    lfd 31, 88(1) # 8-byte Folded Reload5087; PC64LE-NEXT:    addi 3, 3, .LCPI92_0@toc@l5088; PC64LE-NEXT:    xxmrghw 34, 1, 05089; PC64LE-NEXT:    lxvd2x 0, 0, 35090; PC64LE-NEXT:    li 3, 645091; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload5092; PC64LE-NEXT:    li 3, 485093; PC64LE-NEXT:    lxvd2x 62, 1, 3 # 16-byte Folded Reload5094; PC64LE-NEXT:    xxswapd 35, 05095; PC64LE-NEXT:    vperm 2, 4, 2, 35096; PC64LE-NEXT:    addi 1, 1, 965097; PC64LE-NEXT:    ld 0, 16(1)5098; PC64LE-NEXT:    mtlr 05099; PC64LE-NEXT:    blr5100;5101; PC64LE9-LABEL: constrained_vector_minnum_v3f32:5102; PC64LE9:       # %bb.0: # %entry5103; PC64LE9-NEXT:    mflr 05104; PC64LE9-NEXT:    stdu 1, -80(1)5105; PC64LE9-NEXT:    xxsldwi 0, 34, 34, 15106; PC64LE9-NEXT:    std 0, 96(1)5107; PC64LE9-NEXT:    stfd 30, 64(1) # 8-byte Folded Spill5108; PC64LE9-NEXT:    stxv 62, 32(1) # 16-byte Folded Spill5109; PC64LE9-NEXT:    stfd 31, 72(1) # 8-byte Folded Spill5110; PC64LE9-NEXT:    stxv 63, 48(1) # 16-byte Folded Spill5111; PC64LE9-NEXT:    xscvspdpn 1, 05112; PC64LE9-NEXT:    xxsldwi 0, 35, 35, 15113; PC64LE9-NEXT:    vmr 31, 35114; PC64LE9-NEXT:    vmr 30, 25115; PC64LE9-NEXT:    xscvspdpn 2, 05116; PC64LE9-NEXT:    bl fminf5117; PC64LE9-NEXT:    nop5118; PC64LE9-NEXT:    xxswapd 0, 625119; PC64LE9-NEXT:    fmr 31, 15120; PC64LE9-NEXT:    xscvspdpn 1, 05121; PC64LE9-NEXT:    xxswapd 0, 635122; PC64LE9-NEXT:    xscvspdpn 2, 05123; PC64LE9-NEXT:    bl fminf5124; PC64LE9-NEXT:    nop5125; PC64LE9-NEXT:    xxsldwi 0, 62, 62, 35126; PC64LE9-NEXT:    fmr 30, 15127; PC64LE9-NEXT:    xscvspdpn 1, 05128; PC64LE9-NEXT:    xxsldwi 0, 63, 63, 35129; PC64LE9-NEXT:    xscvspdpn 2, 05130; PC64LE9-NEXT:    bl fminf5131; PC64LE9-NEXT:    nop5132; PC64LE9-NEXT:    xscvdpspn 0, 15133; PC64LE9-NEXT:    xscvdpspn 1, 305134; PC64LE9-NEXT:    addis 3, 2, .LCPI92_0@toc@ha5135; PC64LE9-NEXT:    xscvdpspn 34, 315136; PC64LE9-NEXT:    lxv 63, 48(1) # 16-byte Folded Reload5137; PC64LE9-NEXT:    lxv 62, 32(1) # 16-byte Folded Reload5138; PC64LE9-NEXT:    lfd 31, 72(1) # 8-byte Folded Reload5139; PC64LE9-NEXT:    addi 3, 3, .LCPI92_0@toc@l5140; PC64LE9-NEXT:    lfd 30, 64(1) # 8-byte Folded Reload5141; PC64LE9-NEXT:    xxmrghw 35, 1, 05142; PC64LE9-NEXT:    lxv 0, 0(3)5143; PC64LE9-NEXT:    xxperm 34, 35, 05144; PC64LE9-NEXT:    addi 1, 1, 805145; PC64LE9-NEXT:    ld 0, 16(1)5146; PC64LE9-NEXT:    mtlr 05147; PC64LE9-NEXT:    blr5148entry:5149  %min = call <3 x float> @llvm.experimental.constrained.minnum.v3f32(5150                              <3 x float> %x,5151                              <3 x float> %y,5152                              metadata !"fpexcept.strict") #15153  ret <3 x float> %min5154}5155 5156define <3 x double> @constrained_vector_min_v3f64(<3 x double> %x, <3 x double> %y) #0 {5157; PC64LE-LABEL: constrained_vector_min_v3f64:5158; PC64LE:       # %bb.0: # %entry5159; PC64LE-NEXT:    mflr 05160; PC64LE-NEXT:    stdu 1, -64(1)5161; PC64LE-NEXT:    li 3, 485162; PC64LE-NEXT:    xxmrghd 0, 5, 45163; PC64LE-NEXT:    xxmrghd 1, 2, 15164; PC64LE-NEXT:    std 0, 80(1)5165; PC64LE-NEXT:    fmr 2, 65166; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill5167; PC64LE-NEXT:    xvmindp 63, 1, 05168; PC64LE-NEXT:    fmr 1, 35169; PC64LE-NEXT:    bl fmin5170; PC64LE-NEXT:    nop5171; PC64LE-NEXT:    li 3, 485172; PC64LE-NEXT:    fmr 3, 15173; PC64LE-NEXT:    xxswapd 1, 635174; PC64LE-NEXT:    xxlor 2, 63, 635175; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload5176; PC64LE-NEXT:    addi 1, 1, 645177; PC64LE-NEXT:    ld 0, 16(1)5178; PC64LE-NEXT:    mtlr 05179; PC64LE-NEXT:    blr5180;5181; PC64LE9-LABEL: constrained_vector_min_v3f64:5182; PC64LE9:       # %bb.0: # %entry5183; PC64LE9-NEXT:    mflr 05184; PC64LE9-NEXT:    stdu 1, -48(1)5185; PC64LE9-NEXT:    xxmrghd 0, 5, 45186; PC64LE9-NEXT:    xxmrghd 1, 2, 15187; PC64LE9-NEXT:    std 0, 64(1)5188; PC64LE9-NEXT:    fmr 2, 65189; PC64LE9-NEXT:    stxv 63, 32(1) # 16-byte Folded Spill5190; PC64LE9-NEXT:    xvmindp 63, 1, 05191; PC64LE9-NEXT:    fmr 1, 35192; PC64LE9-NEXT:    bl fmin5193; PC64LE9-NEXT:    nop5194; PC64LE9-NEXT:    fmr 3, 15195; PC64LE9-NEXT:    xxswapd 1, 635196; PC64LE9-NEXT:    xscpsgndp 2, 63, 635197; PC64LE9-NEXT:    lxv 63, 32(1) # 16-byte Folded Reload5198; PC64LE9-NEXT:    addi 1, 1, 485199; PC64LE9-NEXT:    ld 0, 16(1)5200; PC64LE9-NEXT:    mtlr 05201; PC64LE9-NEXT:    blr5202entry:5203 %min = call <3 x double> @llvm.experimental.constrained.minnum.v3f64(5204                          <3 x double> %x,5205                          <3 x double> %y,5206                          metadata !"fpexcept.strict") #15207  ret <3 x double> %min5208}5209 5210define <4 x double> @constrained_vector_minnum_v4f64(<4 x double> %x, <4 x double> %y) #0 {5211; PC64LE-LABEL: constrained_vector_minnum_v4f64:5212; PC64LE:       # %bb.0: # %entry5213; PC64LE-NEXT:    xvmindp 34, 34, 365214; PC64LE-NEXT:    xvmindp 35, 35, 375215; PC64LE-NEXT:    blr5216;5217; PC64LE9-LABEL: constrained_vector_minnum_v4f64:5218; PC64LE9:       # %bb.0: # %entry5219; PC64LE9-NEXT:    xvmindp 34, 34, 365220; PC64LE9-NEXT:    xvmindp 35, 35, 375221; PC64LE9-NEXT:    blr5222entry:5223  %min = call <4 x double> @llvm.experimental.constrained.minnum.v4f64(5224                                <4 x double> %x,5225                                <4 x double> %y,5226                                metadata !"fpexcept.strict") #15227  ret <4 x double> %min5228}5229 5230define <1 x i32> @constrained_vector_fptosi_v1i32_v1f32(<1 x float> %x) #0 {5231; PC64LE-LABEL: constrained_vector_fptosi_v1i32_v1f32:5232; PC64LE:       # %bb.0: # %entry5233; PC64LE-NEXT:    xscvdpsxws 0, 15234; PC64LE-NEXT:    mffprwz 3, 05235; PC64LE-NEXT:    blr5236;5237; PC64LE9-LABEL: constrained_vector_fptosi_v1i32_v1f32:5238; PC64LE9:       # %bb.0: # %entry5239; PC64LE9-NEXT:    xscvdpsxws 0, 15240; PC64LE9-NEXT:    mffprwz 3, 05241; PC64LE9-NEXT:    blr5242entry:5243  %result = call <1 x i32> @llvm.experimental.constrained.fptosi.v1i32.v1f32(5244                               <1 x float> %x,5245                               metadata !"fpexcept.strict") #05246  ret <1 x i32> %result5247}5248 5249define <2 x i32> @constrained_vector_fptosi_v2i32_v2f32(<2 x float> %x) #0 {5250; PC64LE-LABEL: constrained_vector_fptosi_v2i32_v2f32:5251; PC64LE:       # %bb.0: # %entry5252; PC64LE-NEXT:    xxsldwi 0, 34, 34, 35253; PC64LE-NEXT:    xxswapd 1, 345254; PC64LE-NEXT:    xscvspdpn 0, 05255; PC64LE-NEXT:    xscvspdpn 1, 15256; PC64LE-NEXT:    xscvdpsxws 0, 05257; PC64LE-NEXT:    xscvdpsxws 1, 15258; PC64LE-NEXT:    mffprwz 3, 05259; PC64LE-NEXT:    mtfprwz 0, 35260; PC64LE-NEXT:    mffprwz 3, 15261; PC64LE-NEXT:    mtfprwz 1, 35262; PC64LE-NEXT:    xxmrghw 34, 1, 05263; PC64LE-NEXT:    blr5264;5265; PC64LE9-LABEL: constrained_vector_fptosi_v2i32_v2f32:5266; PC64LE9:       # %bb.0: # %entry5267; PC64LE9-NEXT:    xxsldwi 0, 34, 34, 35268; PC64LE9-NEXT:    xxswapd 1, 345269; PC64LE9-NEXT:    xscvspdpn 0, 05270; PC64LE9-NEXT:    xscvspdpn 1, 15271; PC64LE9-NEXT:    xscvdpsxws 0, 05272; PC64LE9-NEXT:    xscvdpsxws 1, 15273; PC64LE9-NEXT:    mffprwz 3, 05274; PC64LE9-NEXT:    mtfprwz 0, 35275; PC64LE9-NEXT:    mffprwz 3, 15276; PC64LE9-NEXT:    mtfprwz 1, 35277; PC64LE9-NEXT:    xxmrghw 34, 1, 05278; PC64LE9-NEXT:    blr5279entry:5280  %result = call <2 x i32> @llvm.experimental.constrained.fptosi.v2i32.v2f32(5281                                <2 x float> %x,5282                                metadata !"fpexcept.strict") #05283  ret <2 x i32> %result5284}5285 5286define <3 x i32> @constrained_vector_fptosi_v3i32_v3f32(<3 x float> %x) #0 {5287; PC64LE-LABEL: constrained_vector_fptosi_v3i32_v3f32:5288; PC64LE:       # %bb.0: # %entry5289; PC64LE-NEXT:    xxswapd 0, 345290; PC64LE-NEXT:    xxsldwi 1, 34, 34, 35291; PC64LE-NEXT:    xscvspdpn 0, 05292; PC64LE-NEXT:    xscvspdpn 1, 15293; PC64LE-NEXT:    xxsldwi 2, 34, 34, 15294; PC64LE-NEXT:    xscvdpsxws 0, 05295; PC64LE-NEXT:    xscvdpsxws 1, 15296; PC64LE-NEXT:    mffprwz 3, 05297; PC64LE-NEXT:    mffprwz 4, 15298; PC64LE-NEXT:    mtfprwz 0, 45299; PC64LE-NEXT:    mtfprwz 1, 35300; PC64LE-NEXT:    addis 3, 2, .LCPI97_0@toc@ha5301; PC64LE-NEXT:    addi 3, 3, .LCPI97_0@toc@l5302; PC64LE-NEXT:    xxmrghw 34, 1, 05303; PC64LE-NEXT:    lxvd2x 0, 0, 35304; PC64LE-NEXT:    xxswapd 35, 05305; PC64LE-NEXT:    xscvspdpn 0, 25306; PC64LE-NEXT:    xscvdpsxws 0, 05307; PC64LE-NEXT:    mffprwz 3, 05308; PC64LE-NEXT:    mtvsrwz 36, 35309; PC64LE-NEXT:    vperm 2, 4, 2, 35310; PC64LE-NEXT:    blr5311;5312; PC64LE9-LABEL: constrained_vector_fptosi_v3i32_v3f32:5313; PC64LE9:       # %bb.0: # %entry5314; PC64LE9-NEXT:    xxsldwi 0, 34, 34, 15315; PC64LE9-NEXT:    xscvspdpn 0, 05316; PC64LE9-NEXT:    xscvdpsxws 0, 05317; PC64LE9-NEXT:    mffprwz 3, 05318; PC64LE9-NEXT:    xxswapd 0, 345319; PC64LE9-NEXT:    xscvspdpn 0, 05320; PC64LE9-NEXT:    xscvdpsxws 0, 05321; PC64LE9-NEXT:    mffprwz 4, 05322; PC64LE9-NEXT:    xxsldwi 0, 34, 34, 35323; PC64LE9-NEXT:    mtvsrwz 34, 35324; PC64LE9-NEXT:    mtfprwz 1, 45325; PC64LE9-NEXT:    addis 4, 2, .LCPI97_0@toc@ha5326; PC64LE9-NEXT:    xscvspdpn 0, 05327; PC64LE9-NEXT:    addi 4, 4, .LCPI97_0@toc@l5328; PC64LE9-NEXT:    xscvdpsxws 0, 05329; PC64LE9-NEXT:    mffprwz 5, 05330; PC64LE9-NEXT:    mtfprwz 0, 55331; PC64LE9-NEXT:    xxmrghw 35, 1, 05332; PC64LE9-NEXT:    lxv 0, 0(4)5333; PC64LE9-NEXT:    xxperm 34, 35, 05334; PC64LE9-NEXT:    blr5335entry:5336  %result = call <3 x i32> @llvm.experimental.constrained.fptosi.v3i32.v3f32(5337                                <3 x float> %x,5338                                metadata !"fpexcept.strict") #05339  ret <3 x i32> %result5340}5341 5342define <4 x i32> @constrained_vector_fptosi_v4i32_v4f32(<4 x float> %x) #0 {5343; PC64LE-LABEL: constrained_vector_fptosi_v4i32_v4f32:5344; PC64LE:       # %bb.0: # %entry5345; PC64LE-NEXT:    xvcvspsxws 34, 345346; PC64LE-NEXT:    blr5347;5348; PC64LE9-LABEL: constrained_vector_fptosi_v4i32_v4f32:5349; PC64LE9:       # %bb.0: # %entry5350; PC64LE9-NEXT:    xvcvspsxws 34, 345351; PC64LE9-NEXT:    blr5352entry:5353  %result = call <4 x i32> @llvm.experimental.constrained.fptosi.v4i32.v4f32(5354                                <4 x float> %x,5355                                metadata !"fpexcept.strict") #05356  ret <4 x i32> %result5357}5358 5359define <1 x i64> @constrained_vector_fptosi_v1i64_v1f32(<1 x float> %x) #0 {5360; PC64LE-LABEL: constrained_vector_fptosi_v1i64_v1f32:5361; PC64LE:       # %bb.0: # %entry5362; PC64LE-NEXT:    xscvdpsxds 0, 15363; PC64LE-NEXT:    mffprd 3, 05364; PC64LE-NEXT:    blr5365;5366; PC64LE9-LABEL: constrained_vector_fptosi_v1i64_v1f32:5367; PC64LE9:       # %bb.0: # %entry5368; PC64LE9-NEXT:    xscvdpsxds 0, 15369; PC64LE9-NEXT:    mffprd 3, 05370; PC64LE9-NEXT:    blr5371entry:5372  %result = call <1 x i64> @llvm.experimental.constrained.fptosi.v1i64.v1f32(5373                               <1 x float> %x,5374                               metadata !"fpexcept.strict") #05375  ret <1 x i64> %result5376}5377 5378define <2 x i64> @constrained_vector_fptosi_v2i64_v2f32(<2 x float> %x) #0 {5379; PC64LE-LABEL: constrained_vector_fptosi_v2i64_v2f32:5380; PC64LE:       # %bb.0: # %entry5381; PC64LE-NEXT:    xxsldwi 0, 34, 34, 35382; PC64LE-NEXT:    xxswapd 1, 345383; PC64LE-NEXT:    xscvspdpn 0, 05384; PC64LE-NEXT:    xscvspdpn 1, 15385; PC64LE-NEXT:    xscvdpsxds 0, 05386; PC64LE-NEXT:    xscvdpsxds 1, 15387; PC64LE-NEXT:    mffprd 3, 05388; PC64LE-NEXT:    mtfprd 0, 35389; PC64LE-NEXT:    mffprd 3, 15390; PC64LE-NEXT:    mtfprd 1, 35391; PC64LE-NEXT:    xxmrghd 34, 1, 05392; PC64LE-NEXT:    blr5393;5394; PC64LE9-LABEL: constrained_vector_fptosi_v2i64_v2f32:5395; PC64LE9:       # %bb.0: # %entry5396; PC64LE9-NEXT:    xxsldwi 0, 34, 34, 35397; PC64LE9-NEXT:    xscvspdpn 0, 05398; PC64LE9-NEXT:    xscvdpsxds 0, 05399; PC64LE9-NEXT:    mffprd 3, 05400; PC64LE9-NEXT:    xxswapd 0, 345401; PC64LE9-NEXT:    xscvspdpn 0, 05402; PC64LE9-NEXT:    xscvdpsxds 0, 05403; PC64LE9-NEXT:    mffprd 4, 05404; PC64LE9-NEXT:    mtvsrdd 34, 4, 35405; PC64LE9-NEXT:    blr5406entry:5407  %result = call <2 x i64> @llvm.experimental.constrained.fptosi.v2i64.v2f32(5408                                <2 x float> %x,5409                                metadata !"fpexcept.strict") #05410  ret <2 x i64> %result5411}5412 5413define <3 x i64> @constrained_vector_fptosi_v3i64_v3f32(<3 x float> %x) #0 {5414; PC64LE-LABEL: constrained_vector_fptosi_v3i64_v3f32:5415; PC64LE:       # %bb.0: # %entry5416; PC64LE-NEXT:    xxsldwi 0, 34, 34, 35417; PC64LE-NEXT:    xxswapd 1, 345418; PC64LE-NEXT:    xscvspdpn 0, 05419; PC64LE-NEXT:    xxsldwi 2, 34, 34, 15420; PC64LE-NEXT:    xscvdpsxds 0, 05421; PC64LE-NEXT:    mffprd 3, 05422; PC64LE-NEXT:    xscvspdpn 0, 15423; PC64LE-NEXT:    xscvdpsxds 0, 05424; PC64LE-NEXT:    mffprd 4, 05425; PC64LE-NEXT:    xscvspdpn 0, 25426; PC64LE-NEXT:    xscvdpsxds 0, 05427; PC64LE-NEXT:    mffprd 5, 05428; PC64LE-NEXT:    blr5429;5430; PC64LE9-LABEL: constrained_vector_fptosi_v3i64_v3f32:5431; PC64LE9:       # %bb.0: # %entry5432; PC64LE9-NEXT:    xxsldwi 0, 34, 34, 35433; PC64LE9-NEXT:    xscvspdpn 0, 05434; PC64LE9-NEXT:    xscvdpsxds 0, 05435; PC64LE9-NEXT:    mffprd 3, 05436; PC64LE9-NEXT:    xxswapd 0, 345437; PC64LE9-NEXT:    xscvspdpn 0, 05438; PC64LE9-NEXT:    xscvdpsxds 0, 05439; PC64LE9-NEXT:    mffprd 4, 05440; PC64LE9-NEXT:    xxsldwi 0, 34, 34, 15441; PC64LE9-NEXT:    xscvspdpn 0, 05442; PC64LE9-NEXT:    xscvdpsxds 0, 05443; PC64LE9-NEXT:    mffprd 5, 05444; PC64LE9-NEXT:    blr5445entry:5446  %result = call <3 x i64> @llvm.experimental.constrained.fptosi.v3i64.v3f32(5447                                <3 x float> %x,5448                                metadata !"fpexcept.strict") #05449  ret <3 x i64> %result5450}5451 5452define <4 x i64> @constrained_vector_fptosi_v4i64_v4f32(<4 x float> %x) #0 {5453; PC64LE-LABEL: constrained_vector_fptosi_v4i64_v4f32:5454; PC64LE:       # %bb.0: # %entry5455; PC64LE-NEXT:    xxsldwi 0, 34, 34, 35456; PC64LE-NEXT:    xxswapd 1, 345457; PC64LE-NEXT:    xscvspdpn 0, 05458; PC64LE-NEXT:    xscvspdpn 1, 15459; PC64LE-NEXT:    xxsldwi 2, 34, 34, 15460; PC64LE-NEXT:    xscvdpsxds 0, 05461; PC64LE-NEXT:    xscvdpsxds 1, 15462; PC64LE-NEXT:    mffprd 3, 05463; PC64LE-NEXT:    mtfprd 0, 35464; PC64LE-NEXT:    mffprd 3, 15465; PC64LE-NEXT:    mtfprd 1, 35466; PC64LE-NEXT:    xxmrghd 36, 1, 05467; PC64LE-NEXT:    xscvspdpn 0, 345468; PC64LE-NEXT:    xscvspdpn 1, 25469; PC64LE-NEXT:    vmr 2, 45470; PC64LE-NEXT:    xscvdpsxds 0, 05471; PC64LE-NEXT:    xscvdpsxds 1, 15472; PC64LE-NEXT:    mffprd 3, 05473; PC64LE-NEXT:    mtfprd 0, 35474; PC64LE-NEXT:    mffprd 3, 15475; PC64LE-NEXT:    mtfprd 1, 35476; PC64LE-NEXT:    xxmrghd 35, 0, 15477; PC64LE-NEXT:    blr5478;5479; PC64LE9-LABEL: constrained_vector_fptosi_v4i64_v4f32:5480; PC64LE9:       # %bb.0: # %entry5481; PC64LE9-NEXT:    xxsldwi 0, 34, 34, 35482; PC64LE9-NEXT:    xscvspdpn 0, 05483; PC64LE9-NEXT:    xscvdpsxds 0, 05484; PC64LE9-NEXT:    mffprd 3, 05485; PC64LE9-NEXT:    xxswapd 0, 345486; PC64LE9-NEXT:    xscvspdpn 0, 05487; PC64LE9-NEXT:    xscvdpsxds 0, 05488; PC64LE9-NEXT:    mffprd 4, 05489; PC64LE9-NEXT:    xscvspdpn 0, 345490; PC64LE9-NEXT:    mtvsrdd 36, 4, 35491; PC64LE9-NEXT:    xscvdpsxds 0, 05492; PC64LE9-NEXT:    mffprd 3, 05493; PC64LE9-NEXT:    xxsldwi 0, 34, 34, 15494; PC64LE9-NEXT:    vmr 2, 45495; PC64LE9-NEXT:    xscvspdpn 0, 05496; PC64LE9-NEXT:    xscvdpsxds 0, 05497; PC64LE9-NEXT:    mffprd 4, 05498; PC64LE9-NEXT:    mtvsrdd 35, 3, 45499; PC64LE9-NEXT:    blr5500entry:5501  %result = call <4 x i64> @llvm.experimental.constrained.fptosi.v4i64.v4f32(5502                                <4 x float> %x,5503                                metadata !"fpexcept.strict") #05504  ret <4 x i64> %result5505}5506 5507define <1 x i32> @constrained_vector_fptosi_v1i32_v1f64(<1 x double> %x) #0 {5508; PC64LE-LABEL: constrained_vector_fptosi_v1i32_v1f64:5509; PC64LE:       # %bb.0: # %entry5510; PC64LE-NEXT:    xscvdpsxws 0, 15511; PC64LE-NEXT:    mffprwz 3, 05512; PC64LE-NEXT:    blr5513;5514; PC64LE9-LABEL: constrained_vector_fptosi_v1i32_v1f64:5515; PC64LE9:       # %bb.0: # %entry5516; PC64LE9-NEXT:    xscvdpsxws 0, 15517; PC64LE9-NEXT:    mffprwz 3, 05518; PC64LE9-NEXT:    blr5519entry:5520  %result = call <1 x i32> @llvm.experimental.constrained.fptosi.v1i32.v1f64(5521                               <1 x double> %x,5522                               metadata !"fpexcept.strict") #05523  ret <1 x i32> %result5524}5525 5526 5527define <2 x i32> @constrained_vector_fptosi_v2i32_v2f64(<2 x double> %x) #0 {5528; PC64LE-LABEL: constrained_vector_fptosi_v2i32_v2f64:5529; PC64LE:       # %bb.0: # %entry5530; PC64LE-NEXT:    xscvdpsxws 1, 345531; PC64LE-NEXT:    xxswapd 0, 345532; PC64LE-NEXT:    xscvdpsxws 0, 05533; PC64LE-NEXT:    mffprwz 3, 15534; PC64LE-NEXT:    mtfprwz 1, 35535; PC64LE-NEXT:    mffprwz 3, 05536; PC64LE-NEXT:    mtfprwz 0, 35537; PC64LE-NEXT:    xxmrghw 34, 1, 05538; PC64LE-NEXT:    blr5539;5540; PC64LE9-LABEL: constrained_vector_fptosi_v2i32_v2f64:5541; PC64LE9:       # %bb.0: # %entry5542; PC64LE9-NEXT:    xxswapd 1, 345543; PC64LE9-NEXT:    xscvdpsxws 0, 345544; PC64LE9-NEXT:    xscvdpsxws 1, 15545; PC64LE9-NEXT:    mffprwz 3, 05546; PC64LE9-NEXT:    mtfprwz 0, 35547; PC64LE9-NEXT:    mffprwz 3, 15548; PC64LE9-NEXT:    mtfprwz 1, 35549; PC64LE9-NEXT:    xxmrghw 34, 0, 15550; PC64LE9-NEXT:    blr5551entry:5552  %result = call <2 x i32> @llvm.experimental.constrained.fptosi.v2i32.v2f64(5553                                <2 x double> %x,5554                                metadata !"fpexcept.strict") #05555  ret <2 x i32> %result5556}5557 5558define <3 x i32> @constrained_vector_fptosi_v3i32_v3f64(<3 x double> %x) #0 {5559; PC64LE-LABEL: constrained_vector_fptosi_v3i32_v3f64:5560; PC64LE:       # %bb.0: # %entry5561; PC64LE-NEXT:    xscvdpsxws 0, 25562; PC64LE-NEXT:    xscvdpsxws 1, 15563; PC64LE-NEXT:    mffprwz 3, 05564; PC64LE-NEXT:    mffprwz 4, 15565; PC64LE-NEXT:    mtfprwz 0, 45566; PC64LE-NEXT:    mtfprwz 1, 35567; PC64LE-NEXT:    addis 3, 2, .LCPI105_0@toc@ha5568; PC64LE-NEXT:    addi 3, 3, .LCPI105_0@toc@l5569; PC64LE-NEXT:    xxmrghw 34, 1, 05570; PC64LE-NEXT:    lxvd2x 0, 0, 35571; PC64LE-NEXT:    xxswapd 35, 05572; PC64LE-NEXT:    xscvdpsxws 0, 35573; PC64LE-NEXT:    mffprwz 3, 05574; PC64LE-NEXT:    mtvsrwz 36, 35575; PC64LE-NEXT:    vperm 2, 4, 2, 35576; PC64LE-NEXT:    blr5577;5578; PC64LE9-LABEL: constrained_vector_fptosi_v3i32_v3f64:5579; PC64LE9:       # %bb.0: # %entry5580; PC64LE9-NEXT:    xscvdpsxws 0, 35581; PC64LE9-NEXT:    mffprwz 3, 05582; PC64LE9-NEXT:    xscvdpsxws 0, 25583; PC64LE9-NEXT:    mtvsrwz 34, 35584; PC64LE9-NEXT:    mffprwz 4, 05585; PC64LE9-NEXT:    xscvdpsxws 0, 15586; PC64LE9-NEXT:    mtfprwz 1, 45587; PC64LE9-NEXT:    addis 4, 2, .LCPI105_0@toc@ha5588; PC64LE9-NEXT:    addi 4, 4, .LCPI105_0@toc@l5589; PC64LE9-NEXT:    mffprwz 5, 05590; PC64LE9-NEXT:    mtfprwz 0, 55591; PC64LE9-NEXT:    xxmrghw 35, 1, 05592; PC64LE9-NEXT:    lxv 0, 0(4)5593; PC64LE9-NEXT:    xxperm 34, 35, 05594; PC64LE9-NEXT:    blr5595entry:5596  %result = call <3 x i32> @llvm.experimental.constrained.fptosi.v3i32.v3f64(5597                                <3 x double> %x,5598                                metadata !"fpexcept.strict") #05599  ret <3 x i32> %result5600}5601 5602define <4 x i32> @constrained_vector_fptosi_v4i32_v4f64(<4 x double> %x) #0 {5603; PC64LE-LABEL: constrained_vector_fptosi_v4i32_v4f64:5604; PC64LE:       # %bb.0: # %entry5605; PC64LE-NEXT:    xxswapd 0, 345606; PC64LE-NEXT:    xscvdpsxws 2, 345607; PC64LE-NEXT:    xxswapd 1, 355608; PC64LE-NEXT:    xscvdpsxws 0, 05609; PC64LE-NEXT:    xscvdpsxws 1, 15610; PC64LE-NEXT:    mffprwz 3, 25611; PC64LE-NEXT:    xscvdpsxws 2, 355612; PC64LE-NEXT:    mffprwz 4, 05613; PC64LE-NEXT:    rldimi 4, 3, 32, 05614; PC64LE-NEXT:    mffprwz 3, 25615; PC64LE-NEXT:    mtfprd 0, 45616; PC64LE-NEXT:    mffprwz 4, 15617; PC64LE-NEXT:    rldimi 4, 3, 32, 05618; PC64LE-NEXT:    mtfprd 1, 45619; PC64LE-NEXT:    xxmrghd 34, 1, 05620; PC64LE-NEXT:    blr5621;5622; PC64LE9-LABEL: constrained_vector_fptosi_v4i32_v4f64:5623; PC64LE9:       # %bb.0: # %entry5624; PC64LE9-NEXT:    xscvdpsxws 0, 345625; PC64LE9-NEXT:    mffprwz 3, 05626; PC64LE9-NEXT:    xxswapd 0, 345627; PC64LE9-NEXT:    xscvdpsxws 0, 05628; PC64LE9-NEXT:    mffprwz 4, 05629; PC64LE9-NEXT:    xscvdpsxws 0, 355630; PC64LE9-NEXT:    rldimi 4, 3, 32, 05631; PC64LE9-NEXT:    mffprwz 3, 05632; PC64LE9-NEXT:    xxswapd 0, 355633; PC64LE9-NEXT:    xscvdpsxws 0, 05634; PC64LE9-NEXT:    mffprwz 5, 05635; PC64LE9-NEXT:    rldimi 5, 3, 32, 05636; PC64LE9-NEXT:    mtvsrdd 34, 5, 45637; PC64LE9-NEXT:    blr5638entry:5639  %result = call <4 x i32> @llvm.experimental.constrained.fptosi.v4i32.v4f64(5640                                <4 x double> %x,5641                                metadata !"fpexcept.strict") #05642  ret <4 x i32> %result5643}5644 5645define <1 x i64> @constrained_vector_fptosi_v1i64_v1f64(<1 x double> %x) #0 {5646; PC64LE-LABEL: constrained_vector_fptosi_v1i64_v1f64:5647; PC64LE:       # %bb.0: # %entry5648; PC64LE-NEXT:    xscvdpsxds 0, 15649; PC64LE-NEXT:    mffprd 3, 05650; PC64LE-NEXT:    blr5651;5652; PC64LE9-LABEL: constrained_vector_fptosi_v1i64_v1f64:5653; PC64LE9:       # %bb.0: # %entry5654; PC64LE9-NEXT:    xscvdpsxds 0, 15655; PC64LE9-NEXT:    mffprd 3, 05656; PC64LE9-NEXT:    blr5657entry:5658  %result = call <1 x i64> @llvm.experimental.constrained.fptosi.v1i64.v1f64(5659                               <1 x double> %x,5660                               metadata !"fpexcept.strict") #05661  ret <1 x i64> %result5662}5663 5664define <2 x i64> @constrained_vector_fptosi_v2i64_v2f64(<2 x double> %x) #0 {5665; PC64LE-LABEL: constrained_vector_fptosi_v2i64_v2f64:5666; PC64LE:       # %bb.0: # %entry5667; PC64LE-NEXT:    xvcvdpsxds 34, 345668; PC64LE-NEXT:    blr5669;5670; PC64LE9-LABEL: constrained_vector_fptosi_v2i64_v2f64:5671; PC64LE9:       # %bb.0: # %entry5672; PC64LE9-NEXT:    xvcvdpsxds 34, 345673; PC64LE9-NEXT:    blr5674entry:5675  %result = call <2 x i64> @llvm.experimental.constrained.fptosi.v2i64.v2f64(5676                                <2 x double> %x,5677                                metadata !"fpexcept.strict") #05678  ret <2 x i64> %result5679}5680 5681define <3 x i64> @constrained_vector_fptosi_v3i64_v3f64(<3 x double> %x) #0 {5682; PC64LE-LABEL: constrained_vector_fptosi_v3i64_v3f64:5683; PC64LE:       # %bb.0: # %entry5684; PC64LE-NEXT:    xscvdpsxds 0, 15685; PC64LE-NEXT:    mffprd 3, 05686; PC64LE-NEXT:    xscvdpsxds 0, 25687; PC64LE-NEXT:    mffprd 4, 05688; PC64LE-NEXT:    xscvdpsxds 0, 35689; PC64LE-NEXT:    mffprd 5, 05690; PC64LE-NEXT:    blr5691;5692; PC64LE9-LABEL: constrained_vector_fptosi_v3i64_v3f64:5693; PC64LE9:       # %bb.0: # %entry5694; PC64LE9-NEXT:    xscvdpsxds 0, 15695; PC64LE9-NEXT:    mffprd 3, 05696; PC64LE9-NEXT:    xscvdpsxds 0, 25697; PC64LE9-NEXT:    mffprd 4, 05698; PC64LE9-NEXT:    xscvdpsxds 0, 35699; PC64LE9-NEXT:    mffprd 5, 05700; PC64LE9-NEXT:    blr5701entry:5702  %result = call <3 x i64> @llvm.experimental.constrained.fptosi.v3i64.v3f64(5703                                <3 x double> %x,5704                                metadata !"fpexcept.strict") #05705  ret <3 x i64> %result5706}5707 5708define <4 x i64> @constrained_vector_fptosi_v4i64_v4f64(<4 x double> %x) #0 {5709; PC64LE-LABEL: constrained_vector_fptosi_v4i64_v4f64:5710; PC64LE:       # %bb.0: # %entry5711; PC64LE-NEXT:    xvcvdpsxds 35, 355712; PC64LE-NEXT:    xvcvdpsxds 34, 345713; PC64LE-NEXT:    blr5714;5715; PC64LE9-LABEL: constrained_vector_fptosi_v4i64_v4f64:5716; PC64LE9:       # %bb.0: # %entry5717; PC64LE9-NEXT:    xvcvdpsxds 35, 355718; PC64LE9-NEXT:    xvcvdpsxds 34, 345719; PC64LE9-NEXT:    blr5720entry:5721  %result = call <4 x i64> @llvm.experimental.constrained.fptosi.v4i64.v4f64(5722                                <4 x double> %x,5723                                metadata !"fpexcept.strict") #05724  ret <4 x i64> %result5725}5726 5727define <1 x i32> @constrained_vector_fptoui_v1i32_v1f32(<1 x float> %x) #0 {5728; PC64LE-LABEL: constrained_vector_fptoui_v1i32_v1f32:5729; PC64LE:       # %bb.0: # %entry5730; PC64LE-NEXT:    xscvdpuxws 0, 15731; PC64LE-NEXT:    mffprwz 3, 05732; PC64LE-NEXT:    blr5733;5734; PC64LE9-LABEL: constrained_vector_fptoui_v1i32_v1f32:5735; PC64LE9:       # %bb.0: # %entry5736; PC64LE9-NEXT:    xscvdpuxws 0, 15737; PC64LE9-NEXT:    mffprwz 3, 05738; PC64LE9-NEXT:    blr5739entry:5740  %result = call <1 x i32> @llvm.experimental.constrained.fptoui.v1i32.v1f32(5741                               <1 x float> %x,5742                               metadata !"fpexcept.strict") #05743  ret <1 x i32> %result5744}5745 5746define <2 x i32> @constrained_vector_fptoui_v2i32_v2f32(<2 x float> %x) #0 {5747; PC64LE-LABEL: constrained_vector_fptoui_v2i32_v2f32:5748; PC64LE:       # %bb.0: # %entry5749; PC64LE-NEXT:    xxsldwi 0, 34, 34, 35750; PC64LE-NEXT:    xxswapd 1, 345751; PC64LE-NEXT:    xscvspdpn 0, 05752; PC64LE-NEXT:    xscvspdpn 1, 15753; PC64LE-NEXT:    xscvdpuxws 0, 05754; PC64LE-NEXT:    xscvdpuxws 1, 15755; PC64LE-NEXT:    mffprwz 3, 05756; PC64LE-NEXT:    mtfprwz 0, 35757; PC64LE-NEXT:    mffprwz 3, 15758; PC64LE-NEXT:    mtfprwz 1, 35759; PC64LE-NEXT:    xxmrghw 34, 1, 05760; PC64LE-NEXT:    blr5761;5762; PC64LE9-LABEL: constrained_vector_fptoui_v2i32_v2f32:5763; PC64LE9:       # %bb.0: # %entry5764; PC64LE9-NEXT:    xxsldwi 0, 34, 34, 35765; PC64LE9-NEXT:    xxswapd 1, 345766; PC64LE9-NEXT:    xscvspdpn 0, 05767; PC64LE9-NEXT:    xscvspdpn 1, 15768; PC64LE9-NEXT:    xscvdpuxws 0, 05769; PC64LE9-NEXT:    xscvdpuxws 1, 15770; PC64LE9-NEXT:    mffprwz 3, 05771; PC64LE9-NEXT:    mtfprwz 0, 35772; PC64LE9-NEXT:    mffprwz 3, 15773; PC64LE9-NEXT:    mtfprwz 1, 35774; PC64LE9-NEXT:    xxmrghw 34, 1, 05775; PC64LE9-NEXT:    blr5776entry:5777  %result = call <2 x i32> @llvm.experimental.constrained.fptoui.v2i32.v2f32(5778                                <2 x float> %x,5779                                metadata !"fpexcept.strict") #05780  ret <2 x i32> %result5781}5782 5783define <3 x i32> @constrained_vector_fptoui_v3i32_v3f32(<3 x float> %x) #0 {5784; PC64LE-LABEL: constrained_vector_fptoui_v3i32_v3f32:5785; PC64LE:       # %bb.0: # %entry5786; PC64LE-NEXT:    xxswapd 0, 345787; PC64LE-NEXT:    xxsldwi 1, 34, 34, 35788; PC64LE-NEXT:    xscvspdpn 0, 05789; PC64LE-NEXT:    xscvspdpn 1, 15790; PC64LE-NEXT:    xxsldwi 2, 34, 34, 15791; PC64LE-NEXT:    xscvdpuxws 0, 05792; PC64LE-NEXT:    xscvdpuxws 1, 15793; PC64LE-NEXT:    mffprwz 3, 05794; PC64LE-NEXT:    mffprwz 4, 15795; PC64LE-NEXT:    mtfprwz 0, 45796; PC64LE-NEXT:    mtfprwz 1, 35797; PC64LE-NEXT:    addis 3, 2, .LCPI113_0@toc@ha5798; PC64LE-NEXT:    addi 3, 3, .LCPI113_0@toc@l5799; PC64LE-NEXT:    xxmrghw 34, 1, 05800; PC64LE-NEXT:    lxvd2x 0, 0, 35801; PC64LE-NEXT:    xxswapd 35, 05802; PC64LE-NEXT:    xscvspdpn 0, 25803; PC64LE-NEXT:    xscvdpuxws 0, 05804; PC64LE-NEXT:    mffprwz 3, 05805; PC64LE-NEXT:    mtvsrwz 36, 35806; PC64LE-NEXT:    vperm 2, 4, 2, 35807; PC64LE-NEXT:    blr5808;5809; PC64LE9-LABEL: constrained_vector_fptoui_v3i32_v3f32:5810; PC64LE9:       # %bb.0: # %entry5811; PC64LE9-NEXT:    xxsldwi 0, 34, 34, 15812; PC64LE9-NEXT:    xscvspdpn 0, 05813; PC64LE9-NEXT:    xscvdpuxws 0, 05814; PC64LE9-NEXT:    mffprwz 3, 05815; PC64LE9-NEXT:    xxswapd 0, 345816; PC64LE9-NEXT:    xscvspdpn 0, 05817; PC64LE9-NEXT:    xscvdpuxws 0, 05818; PC64LE9-NEXT:    mffprwz 4, 05819; PC64LE9-NEXT:    xxsldwi 0, 34, 34, 35820; PC64LE9-NEXT:    mtvsrwz 34, 35821; PC64LE9-NEXT:    mtfprwz 1, 45822; PC64LE9-NEXT:    addis 4, 2, .LCPI113_0@toc@ha5823; PC64LE9-NEXT:    xscvspdpn 0, 05824; PC64LE9-NEXT:    addi 4, 4, .LCPI113_0@toc@l5825; PC64LE9-NEXT:    xscvdpuxws 0, 05826; PC64LE9-NEXT:    mffprwz 5, 05827; PC64LE9-NEXT:    mtfprwz 0, 55828; PC64LE9-NEXT:    xxmrghw 35, 1, 05829; PC64LE9-NEXT:    lxv 0, 0(4)5830; PC64LE9-NEXT:    xxperm 34, 35, 05831; PC64LE9-NEXT:    blr5832entry:5833  %result = call <3 x i32> @llvm.experimental.constrained.fptoui.v3i32.v3f32(5834                                <3 x float> %x,5835                                metadata !"fpexcept.strict") #05836  ret <3 x i32> %result5837}5838 5839define <4 x i32> @constrained_vector_fptoui_v4i32_v4f32(<4 x float> %x) #0 {5840; PC64LE-LABEL: constrained_vector_fptoui_v4i32_v4f32:5841; PC64LE:       # %bb.0: # %entry5842; PC64LE-NEXT:    xvcvspuxws 34, 345843; PC64LE-NEXT:    blr5844;5845; PC64LE9-LABEL: constrained_vector_fptoui_v4i32_v4f32:5846; PC64LE9:       # %bb.0: # %entry5847; PC64LE9-NEXT:    xvcvspuxws 34, 345848; PC64LE9-NEXT:    blr5849entry:5850  %result = call <4 x i32> @llvm.experimental.constrained.fptoui.v4i32.v4f32(5851                                <4 x float> %x,5852                                metadata !"fpexcept.strict") #05853  ret <4 x i32> %result5854}5855 5856define <1 x i64> @constrained_vector_fptoui_v1i64_v1f32(<1 x float> %x) #0 {5857; PC64LE-LABEL: constrained_vector_fptoui_v1i64_v1f32:5858; PC64LE:       # %bb.0: # %entry5859; PC64LE-NEXT:    xscvdpuxds 0, 15860; PC64LE-NEXT:    mffprd 3, 05861; PC64LE-NEXT:    blr5862;5863; PC64LE9-LABEL: constrained_vector_fptoui_v1i64_v1f32:5864; PC64LE9:       # %bb.0: # %entry5865; PC64LE9-NEXT:    xscvdpuxds 0, 15866; PC64LE9-NEXT:    mffprd 3, 05867; PC64LE9-NEXT:    blr5868entry:5869  %result = call <1 x i64> @llvm.experimental.constrained.fptoui.v1i64.v1f32(5870                               <1 x float> %x,5871                               metadata !"fpexcept.strict") #05872  ret <1 x i64> %result5873}5874 5875define <2 x i64> @constrained_vector_fptoui_v2i64_v2f32(<2 x float> %x) #0 {5876; PC64LE-LABEL: constrained_vector_fptoui_v2i64_v2f32:5877; PC64LE:       # %bb.0: # %entry5878; PC64LE-NEXT:    xxsldwi 0, 34, 34, 35879; PC64LE-NEXT:    xxswapd 1, 345880; PC64LE-NEXT:    xscvspdpn 0, 05881; PC64LE-NEXT:    xscvspdpn 1, 15882; PC64LE-NEXT:    xscvdpuxds 0, 05883; PC64LE-NEXT:    xscvdpuxds 1, 15884; PC64LE-NEXT:    mffprd 3, 05885; PC64LE-NEXT:    mtfprd 0, 35886; PC64LE-NEXT:    mffprd 3, 15887; PC64LE-NEXT:    mtfprd 1, 35888; PC64LE-NEXT:    xxmrghd 34, 1, 05889; PC64LE-NEXT:    blr5890;5891; PC64LE9-LABEL: constrained_vector_fptoui_v2i64_v2f32:5892; PC64LE9:       # %bb.0: # %entry5893; PC64LE9-NEXT:    xxsldwi 0, 34, 34, 35894; PC64LE9-NEXT:    xscvspdpn 0, 05895; PC64LE9-NEXT:    xscvdpuxds 0, 05896; PC64LE9-NEXT:    mffprd 3, 05897; PC64LE9-NEXT:    xxswapd 0, 345898; PC64LE9-NEXT:    xscvspdpn 0, 05899; PC64LE9-NEXT:    xscvdpuxds 0, 05900; PC64LE9-NEXT:    mffprd 4, 05901; PC64LE9-NEXT:    mtvsrdd 34, 4, 35902; PC64LE9-NEXT:    blr5903entry:5904  %result = call <2 x i64> @llvm.experimental.constrained.fptoui.v2i64.v2f32(5905                                <2 x float> %x,5906                                metadata !"fpexcept.strict") #05907  ret <2 x i64> %result5908}5909 5910define <3 x i64> @constrained_vector_fptoui_v3i64_v3f32(<3 x float> %x) #0 {5911; PC64LE-LABEL: constrained_vector_fptoui_v3i64_v3f32:5912; PC64LE:       # %bb.0: # %entry5913; PC64LE-NEXT:    xxsldwi 0, 34, 34, 35914; PC64LE-NEXT:    xxswapd 1, 345915; PC64LE-NEXT:    xscvspdpn 0, 05916; PC64LE-NEXT:    xxsldwi 2, 34, 34, 15917; PC64LE-NEXT:    xscvdpuxds 0, 05918; PC64LE-NEXT:    mffprd 3, 05919; PC64LE-NEXT:    xscvspdpn 0, 15920; PC64LE-NEXT:    xscvdpuxds 0, 05921; PC64LE-NEXT:    mffprd 4, 05922; PC64LE-NEXT:    xscvspdpn 0, 25923; PC64LE-NEXT:    xscvdpuxds 0, 05924; PC64LE-NEXT:    mffprd 5, 05925; PC64LE-NEXT:    blr5926;5927; PC64LE9-LABEL: constrained_vector_fptoui_v3i64_v3f32:5928; PC64LE9:       # %bb.0: # %entry5929; PC64LE9-NEXT:    xxsldwi 0, 34, 34, 35930; PC64LE9-NEXT:    xscvspdpn 0, 05931; PC64LE9-NEXT:    xscvdpuxds 0, 05932; PC64LE9-NEXT:    mffprd 3, 05933; PC64LE9-NEXT:    xxswapd 0, 345934; PC64LE9-NEXT:    xscvspdpn 0, 05935; PC64LE9-NEXT:    xscvdpuxds 0, 05936; PC64LE9-NEXT:    mffprd 4, 05937; PC64LE9-NEXT:    xxsldwi 0, 34, 34, 15938; PC64LE9-NEXT:    xscvspdpn 0, 05939; PC64LE9-NEXT:    xscvdpuxds 0, 05940; PC64LE9-NEXT:    mffprd 5, 05941; PC64LE9-NEXT:    blr5942entry:5943  %result = call <3 x i64> @llvm.experimental.constrained.fptoui.v3i64.v3f32(5944                                <3 x float> %x,5945                                metadata !"fpexcept.strict") #05946  ret <3 x i64> %result5947}5948 5949define <4 x i64> @constrained_vector_fptoui_v4i64_v4f32(<4 x float> %x) #0 {5950; PC64LE-LABEL: constrained_vector_fptoui_v4i64_v4f32:5951; PC64LE:       # %bb.0: # %entry5952; PC64LE-NEXT:    xxsldwi 0, 34, 34, 35953; PC64LE-NEXT:    xxswapd 1, 345954; PC64LE-NEXT:    xscvspdpn 0, 05955; PC64LE-NEXT:    xscvspdpn 1, 15956; PC64LE-NEXT:    xxsldwi 2, 34, 34, 15957; PC64LE-NEXT:    xscvdpuxds 0, 05958; PC64LE-NEXT:    xscvdpuxds 1, 15959; PC64LE-NEXT:    mffprd 3, 05960; PC64LE-NEXT:    mtfprd 0, 35961; PC64LE-NEXT:    mffprd 3, 15962; PC64LE-NEXT:    mtfprd 1, 35963; PC64LE-NEXT:    xxmrghd 36, 1, 05964; PC64LE-NEXT:    xscvspdpn 0, 345965; PC64LE-NEXT:    xscvspdpn 1, 25966; PC64LE-NEXT:    vmr 2, 45967; PC64LE-NEXT:    xscvdpuxds 0, 05968; PC64LE-NEXT:    xscvdpuxds 1, 15969; PC64LE-NEXT:    mffprd 3, 05970; PC64LE-NEXT:    mtfprd 0, 35971; PC64LE-NEXT:    mffprd 3, 15972; PC64LE-NEXT:    mtfprd 1, 35973; PC64LE-NEXT:    xxmrghd 35, 0, 15974; PC64LE-NEXT:    blr5975;5976; PC64LE9-LABEL: constrained_vector_fptoui_v4i64_v4f32:5977; PC64LE9:       # %bb.0: # %entry5978; PC64LE9-NEXT:    xxsldwi 0, 34, 34, 35979; PC64LE9-NEXT:    xscvspdpn 0, 05980; PC64LE9-NEXT:    xscvdpuxds 0, 05981; PC64LE9-NEXT:    mffprd 3, 05982; PC64LE9-NEXT:    xxswapd 0, 345983; PC64LE9-NEXT:    xscvspdpn 0, 05984; PC64LE9-NEXT:    xscvdpuxds 0, 05985; PC64LE9-NEXT:    mffprd 4, 05986; PC64LE9-NEXT:    xscvspdpn 0, 345987; PC64LE9-NEXT:    mtvsrdd 36, 4, 35988; PC64LE9-NEXT:    xscvdpuxds 0, 05989; PC64LE9-NEXT:    mffprd 3, 05990; PC64LE9-NEXT:    xxsldwi 0, 34, 34, 15991; PC64LE9-NEXT:    vmr 2, 45992; PC64LE9-NEXT:    xscvspdpn 0, 05993; PC64LE9-NEXT:    xscvdpuxds 0, 05994; PC64LE9-NEXT:    mffprd 4, 05995; PC64LE9-NEXT:    mtvsrdd 35, 3, 45996; PC64LE9-NEXT:    blr5997entry:5998  %result = call <4 x i64> @llvm.experimental.constrained.fptoui.v4i64.v4f32(5999                                <4 x float> %x,6000                                metadata !"fpexcept.strict") #06001  ret <4 x i64> %result6002}6003 6004define <1 x i32> @constrained_vector_fptoui_v1i32_v1f64(<1 x double> %x) #0 {6005; PC64LE-LABEL: constrained_vector_fptoui_v1i32_v1f64:6006; PC64LE:       # %bb.0: # %entry6007; PC64LE-NEXT:    xscvdpuxws 0, 16008; PC64LE-NEXT:    mffprwz 3, 06009; PC64LE-NEXT:    blr6010;6011; PC64LE9-LABEL: constrained_vector_fptoui_v1i32_v1f64:6012; PC64LE9:       # %bb.0: # %entry6013; PC64LE9-NEXT:    xscvdpuxws 0, 16014; PC64LE9-NEXT:    mffprwz 3, 06015; PC64LE9-NEXT:    blr6016entry:6017  %result = call <1 x i32> @llvm.experimental.constrained.fptoui.v1i32.v1f64(6018                               <1 x double> %x,6019                               metadata !"fpexcept.strict") #06020  ret <1 x i32> %result6021}6022 6023define <2 x i32> @constrained_vector_fptoui_v2i32_v2f64(<2 x double> %x) #0 {6024; PC64LE-LABEL: constrained_vector_fptoui_v2i32_v2f64:6025; PC64LE:       # %bb.0: # %entry6026; PC64LE-NEXT:    xscvdpuxws 1, 346027; PC64LE-NEXT:    xxswapd 0, 346028; PC64LE-NEXT:    xscvdpuxws 0, 06029; PC64LE-NEXT:    mffprwz 3, 16030; PC64LE-NEXT:    mtfprwz 1, 36031; PC64LE-NEXT:    mffprwz 3, 06032; PC64LE-NEXT:    mtfprwz 0, 36033; PC64LE-NEXT:    xxmrghw 34, 1, 06034; PC64LE-NEXT:    blr6035;6036; PC64LE9-LABEL: constrained_vector_fptoui_v2i32_v2f64:6037; PC64LE9:       # %bb.0: # %entry6038; PC64LE9-NEXT:    xxswapd 1, 346039; PC64LE9-NEXT:    xscvdpuxws 0, 346040; PC64LE9-NEXT:    xscvdpuxws 1, 16041; PC64LE9-NEXT:    mffprwz 3, 06042; PC64LE9-NEXT:    mtfprwz 0, 36043; PC64LE9-NEXT:    mffprwz 3, 16044; PC64LE9-NEXT:    mtfprwz 1, 36045; PC64LE9-NEXT:    xxmrghw 34, 0, 16046; PC64LE9-NEXT:    blr6047entry:6048  %result = call <2 x i32> @llvm.experimental.constrained.fptoui.v2i32.v2f64(6049                                <2 x double> %x,6050                                metadata !"fpexcept.strict") #06051  ret <2 x i32> %result6052}6053 6054define <3 x i32> @constrained_vector_fptoui_v3i32_v3f64(<3 x double> %x) #0 {6055; PC64LE-LABEL: constrained_vector_fptoui_v3i32_v3f64:6056; PC64LE:       # %bb.0: # %entry6057; PC64LE-NEXT:    xscvdpuxws 0, 26058; PC64LE-NEXT:    xscvdpuxws 1, 16059; PC64LE-NEXT:    mffprwz 3, 06060; PC64LE-NEXT:    mffprwz 4, 16061; PC64LE-NEXT:    mtfprwz 0, 46062; PC64LE-NEXT:    mtfprwz 1, 36063; PC64LE-NEXT:    addis 3, 2, .LCPI121_0@toc@ha6064; PC64LE-NEXT:    addi 3, 3, .LCPI121_0@toc@l6065; PC64LE-NEXT:    xxmrghw 34, 1, 06066; PC64LE-NEXT:    lxvd2x 0, 0, 36067; PC64LE-NEXT:    xxswapd 35, 06068; PC64LE-NEXT:    xscvdpuxws 0, 36069; PC64LE-NEXT:    mffprwz 3, 06070; PC64LE-NEXT:    mtvsrwz 36, 36071; PC64LE-NEXT:    vperm 2, 4, 2, 36072; PC64LE-NEXT:    blr6073;6074; PC64LE9-LABEL: constrained_vector_fptoui_v3i32_v3f64:6075; PC64LE9:       # %bb.0: # %entry6076; PC64LE9-NEXT:    xscvdpuxws 0, 36077; PC64LE9-NEXT:    mffprwz 3, 06078; PC64LE9-NEXT:    xscvdpuxws 0, 26079; PC64LE9-NEXT:    mtvsrwz 34, 36080; PC64LE9-NEXT:    mffprwz 4, 06081; PC64LE9-NEXT:    xscvdpuxws 0, 16082; PC64LE9-NEXT:    mtfprwz 1, 46083; PC64LE9-NEXT:    addis 4, 2, .LCPI121_0@toc@ha6084; PC64LE9-NEXT:    addi 4, 4, .LCPI121_0@toc@l6085; PC64LE9-NEXT:    mffprwz 5, 06086; PC64LE9-NEXT:    mtfprwz 0, 56087; PC64LE9-NEXT:    xxmrghw 35, 1, 06088; PC64LE9-NEXT:    lxv 0, 0(4)6089; PC64LE9-NEXT:    xxperm 34, 35, 06090; PC64LE9-NEXT:    blr6091entry:6092  %result = call <3 x i32> @llvm.experimental.constrained.fptoui.v3i32.v3f64(6093                                <3 x double> %x,6094                                metadata !"fpexcept.strict") #06095  ret <3 x i32> %result6096}6097 6098define <4 x i32> @constrained_vector_fptoui_v4i32_v4f64(<4 x double> %x) #0 {6099; PC64LE-LABEL: constrained_vector_fptoui_v4i32_v4f64:6100; PC64LE:       # %bb.0: # %entry6101; PC64LE-NEXT:    xxswapd 0, 346102; PC64LE-NEXT:    xscvdpuxws 2, 346103; PC64LE-NEXT:    xxswapd 1, 356104; PC64LE-NEXT:    xscvdpuxws 0, 06105; PC64LE-NEXT:    xscvdpuxws 1, 16106; PC64LE-NEXT:    mffprwz 3, 26107; PC64LE-NEXT:    xscvdpuxws 2, 356108; PC64LE-NEXT:    mffprwz 4, 06109; PC64LE-NEXT:    rldimi 4, 3, 32, 06110; PC64LE-NEXT:    mffprwz 3, 26111; PC64LE-NEXT:    mtfprd 0, 46112; PC64LE-NEXT:    mffprwz 4, 16113; PC64LE-NEXT:    rldimi 4, 3, 32, 06114; PC64LE-NEXT:    mtfprd 1, 46115; PC64LE-NEXT:    xxmrghd 34, 1, 06116; PC64LE-NEXT:    blr6117;6118; PC64LE9-LABEL: constrained_vector_fptoui_v4i32_v4f64:6119; PC64LE9:       # %bb.0: # %entry6120; PC64LE9-NEXT:    xscvdpuxws 0, 346121; PC64LE9-NEXT:    mffprwz 3, 06122; PC64LE9-NEXT:    xxswapd 0, 346123; PC64LE9-NEXT:    xscvdpuxws 0, 06124; PC64LE9-NEXT:    mffprwz 4, 06125; PC64LE9-NEXT:    xscvdpuxws 0, 356126; PC64LE9-NEXT:    rldimi 4, 3, 32, 06127; PC64LE9-NEXT:    mffprwz 3, 06128; PC64LE9-NEXT:    xxswapd 0, 356129; PC64LE9-NEXT:    xscvdpuxws 0, 06130; PC64LE9-NEXT:    mffprwz 5, 06131; PC64LE9-NEXT:    rldimi 5, 3, 32, 06132; PC64LE9-NEXT:    mtvsrdd 34, 5, 46133; PC64LE9-NEXT:    blr6134entry:6135  %result = call <4 x i32> @llvm.experimental.constrained.fptoui.v4i32.v4f64(6136                                <4 x double> %x,6137                                metadata !"fpexcept.strict") #06138  ret <4 x i32> %result6139}6140 6141define <1 x i64> @constrained_vector_fptoui_v1i64_v1f64(<1 x double> %x) #0 {6142; PC64LE-LABEL: constrained_vector_fptoui_v1i64_v1f64:6143; PC64LE:       # %bb.0: # %entry6144; PC64LE-NEXT:    xscvdpuxds 0, 16145; PC64LE-NEXT:    mffprd 3, 06146; PC64LE-NEXT:    blr6147;6148; PC64LE9-LABEL: constrained_vector_fptoui_v1i64_v1f64:6149; PC64LE9:       # %bb.0: # %entry6150; PC64LE9-NEXT:    xscvdpuxds 0, 16151; PC64LE9-NEXT:    mffprd 3, 06152; PC64LE9-NEXT:    blr6153entry:6154  %result = call <1 x i64> @llvm.experimental.constrained.fptoui.v1i64.v1f64(6155                               <1 x double> %x,6156                               metadata !"fpexcept.strict") #06157  ret <1 x i64> %result6158}6159 6160define <2 x i64> @constrained_vector_fptoui_v2i64_v2f64(<2 x double> %x) #0 {6161; PC64LE-LABEL: constrained_vector_fptoui_v2i64_v2f64:6162; PC64LE:       # %bb.0: # %entry6163; PC64LE-NEXT:    xvcvdpuxds 34, 346164; PC64LE-NEXT:    blr6165;6166; PC64LE9-LABEL: constrained_vector_fptoui_v2i64_v2f64:6167; PC64LE9:       # %bb.0: # %entry6168; PC64LE9-NEXT:    xvcvdpuxds 34, 346169; PC64LE9-NEXT:    blr6170entry:6171  %result = call <2 x i64> @llvm.experimental.constrained.fptoui.v2i64.v2f64(6172                                <2 x double> %x,6173                                metadata !"fpexcept.strict") #06174  ret <2 x i64> %result6175}6176 6177define <3 x i64> @constrained_vector_fptoui_v3i64_v3f64(<3 x double> %x) #0 {6178; PC64LE-LABEL: constrained_vector_fptoui_v3i64_v3f64:6179; PC64LE:       # %bb.0: # %entry6180; PC64LE-NEXT:    xscvdpuxds 0, 16181; PC64LE-NEXT:    mffprd 3, 06182; PC64LE-NEXT:    xscvdpuxds 0, 26183; PC64LE-NEXT:    mffprd 4, 06184; PC64LE-NEXT:    xscvdpuxds 0, 36185; PC64LE-NEXT:    mffprd 5, 06186; PC64LE-NEXT:    blr6187;6188; PC64LE9-LABEL: constrained_vector_fptoui_v3i64_v3f64:6189; PC64LE9:       # %bb.0: # %entry6190; PC64LE9-NEXT:    xscvdpuxds 0, 16191; PC64LE9-NEXT:    mffprd 3, 06192; PC64LE9-NEXT:    xscvdpuxds 0, 26193; PC64LE9-NEXT:    mffprd 4, 06194; PC64LE9-NEXT:    xscvdpuxds 0, 36195; PC64LE9-NEXT:    mffprd 5, 06196; PC64LE9-NEXT:    blr6197entry:6198  %result = call <3 x i64> @llvm.experimental.constrained.fptoui.v3i64.v3f64(6199                                <3 x double> %x,6200                                metadata !"fpexcept.strict") #06201  ret <3 x i64> %result6202}6203 6204define <4 x i64> @constrained_vector_fptoui_v4i64_v4f64(<4 x double> %x) #0 {6205; PC64LE-LABEL: constrained_vector_fptoui_v4i64_v4f64:6206; PC64LE:       # %bb.0: # %entry6207; PC64LE-NEXT:    xvcvdpuxds 35, 356208; PC64LE-NEXT:    xvcvdpuxds 34, 346209; PC64LE-NEXT:    blr6210;6211; PC64LE9-LABEL: constrained_vector_fptoui_v4i64_v4f64:6212; PC64LE9:       # %bb.0: # %entry6213; PC64LE9-NEXT:    xvcvdpuxds 35, 356214; PC64LE9-NEXT:    xvcvdpuxds 34, 346215; PC64LE9-NEXT:    blr6216entry:6217  %result = call <4 x i64> @llvm.experimental.constrained.fptoui.v4i64.v4f64(6218                                <4 x double> %x,6219                                metadata !"fpexcept.strict") #06220  ret <4 x i64> %result6221}6222 6223define <1 x float> @constrained_vector_fptrunc_v1f64(<1 x double> %x) #0 {6224; PC64LE-LABEL: constrained_vector_fptrunc_v1f64:6225; PC64LE:       # %bb.0: # %entry6226; PC64LE-NEXT:    xsrsp 1, 16227; PC64LE-NEXT:    blr6228;6229; PC64LE9-LABEL: constrained_vector_fptrunc_v1f64:6230; PC64LE9:       # %bb.0: # %entry6231; PC64LE9-NEXT:    xsrsp 1, 16232; PC64LE9-NEXT:    blr6233entry:6234  %result = call <1 x float> @llvm.experimental.constrained.fptrunc.v1f32.v1f64(6235                                <1 x double> %x,6236                                metadata !"round.dynamic",6237                                metadata !"fpexcept.strict") #16238  ret <1 x float> %result6239}6240 6241define <2 x float> @constrained_vector_fptrunc_v2f64(<2 x double> %x) #0 {6242; PC64LE-LABEL: constrained_vector_fptrunc_v2f64:6243; PC64LE:       # %bb.0: # %entry6244; PC64LE-NEXT:    xxswapd 0, 346245; PC64LE-NEXT:    xsrsp 1, 346246; PC64LE-NEXT:    xsrsp 0, 06247; PC64LE-NEXT:    xscvdpspn 1, 16248; PC64LE-NEXT:    xscvdpspn 0, 06249; PC64LE-NEXT:    xxmrghw 34, 1, 06250; PC64LE-NEXT:    blr6251;6252; PC64LE9-LABEL: constrained_vector_fptrunc_v2f64:6253; PC64LE9:       # %bb.0: # %entry6254; PC64LE9-NEXT:    xxswapd 1, 346255; PC64LE9-NEXT:    xsrsp 0, 346256; PC64LE9-NEXT:    xsrsp 1, 16257; PC64LE9-NEXT:    xscvdpspn 0, 06258; PC64LE9-NEXT:    xscvdpspn 1, 16259; PC64LE9-NEXT:    xxmrghw 34, 0, 16260; PC64LE9-NEXT:    blr6261entry:6262  %result = call <2 x float> @llvm.experimental.constrained.fptrunc.v2f32.v2f64(6263                                <2 x double> %x,6264                                metadata !"round.dynamic",6265                                metadata !"fpexcept.strict") #16266  ret <2 x float> %result6267}6268 6269define <3 x float> @constrained_vector_fptrunc_v3f64(<3 x double> %x) #0 {6270; PC64LE-LABEL: constrained_vector_fptrunc_v3f64:6271; PC64LE:       # %bb.0: # %entry6272; PC64LE-NEXT:    xsrsp 0, 36273; PC64LE-NEXT:    xsrsp 2, 26274; PC64LE-NEXT:    addis 3, 2, .LCPI129_0@toc@ha6275; PC64LE-NEXT:    addi 3, 3, .LCPI129_0@toc@l6276; PC64LE-NEXT:    xsrsp 1, 16277; PC64LE-NEXT:    xscvdpspn 1, 16278; PC64LE-NEXT:    xscvdpspn 2, 26279; PC64LE-NEXT:    xscvdpspn 36, 06280; PC64LE-NEXT:    xxmrghw 34, 2, 16281; PC64LE-NEXT:    lxvd2x 1, 0, 36282; PC64LE-NEXT:    xxswapd 35, 16283; PC64LE-NEXT:    vperm 2, 4, 2, 36284; PC64LE-NEXT:    blr6285;6286; PC64LE9-LABEL: constrained_vector_fptrunc_v3f64:6287; PC64LE9:       # %bb.0: # %entry6288; PC64LE9-NEXT:    xsrsp 0, 36289; PC64LE9-NEXT:    xsrsp 2, 26290; PC64LE9-NEXT:    xsrsp 1, 16291; PC64LE9-NEXT:    addis 3, 2, .LCPI129_0@toc@ha6292; PC64LE9-NEXT:    addi 3, 3, .LCPI129_0@toc@l6293; PC64LE9-NEXT:    xscvdpspn 1, 16294; PC64LE9-NEXT:    xscvdpspn 2, 26295; PC64LE9-NEXT:    xscvdpspn 34, 06296; PC64LE9-NEXT:    xxmrghw 35, 2, 16297; PC64LE9-NEXT:    lxv 1, 0(3)6298; PC64LE9-NEXT:    xxperm 34, 35, 16299; PC64LE9-NEXT:    blr6300entry:6301  %result = call <3 x float> @llvm.experimental.constrained.fptrunc.v3f32.v3f64(6302                                <3 x double> %x,6303                                metadata !"round.dynamic",6304                                metadata !"fpexcept.strict") #16305  ret <3 x float> %result6306}6307 6308define <4 x float> @constrained_vector_fptrunc_v4f64(<4 x double> %x) #0 {6309; PC64LE-LABEL: constrained_vector_fptrunc_v4f64:6310; PC64LE:       # %bb.0: # %entry6311; PC64LE-NEXT:    xxmrgld 0, 35, 346312; PC64LE-NEXT:    xxmrghd 1, 35, 346313; PC64LE-NEXT:    xvcvdpsp 34, 06314; PC64LE-NEXT:    xvcvdpsp 35, 16315; PC64LE-NEXT:    vmrgew 2, 3, 26316; PC64LE-NEXT:    blr6317;6318; PC64LE9-LABEL: constrained_vector_fptrunc_v4f64:6319; PC64LE9:       # %bb.0: # %entry6320; PC64LE9-NEXT:    xxmrgld 0, 35, 346321; PC64LE9-NEXT:    xvcvdpsp 36, 06322; PC64LE9-NEXT:    xxmrghd 0, 35, 346323; PC64LE9-NEXT:    xvcvdpsp 34, 06324; PC64LE9-NEXT:    vmrgew 2, 2, 46325; PC64LE9-NEXT:    blr6326entry:6327  %result = call <4 x float> @llvm.experimental.constrained.fptrunc.v4f32.v4f64(6328                                <4 x double> %x,6329                                metadata !"round.dynamic",6330                                metadata !"fpexcept.strict") #16331  ret <4 x float> %result6332}6333 6334define <1 x double> @constrained_vector_fpext_v1f32(<1 x float> %x) #0 {6335; PC64LE-LABEL: constrained_vector_fpext_v1f32:6336; PC64LE:       # %bb.0: # %entry6337; PC64LE-NEXT:    blr6338;6339; PC64LE9-LABEL: constrained_vector_fpext_v1f32:6340; PC64LE9:       # %bb.0: # %entry6341; PC64LE9-NEXT:    blr6342entry:6343  %result = call <1 x double> @llvm.experimental.constrained.fpext.v1f64.v1f32(6344                                <1 x float> %x,6345                                metadata !"fpexcept.strict") #16346  ret <1 x double> %result6347}6348 6349define <2 x double> @constrained_vector_fpext_v2f32(<2 x float> %x) #0 {6350; PC64LE-LABEL: constrained_vector_fpext_v2f32:6351; PC64LE:       # %bb.0: # %entry6352; PC64LE-NEXT:    xxsldwi 0, 34, 34, 36353; PC64LE-NEXT:    xxswapd 1, 346354; PC64LE-NEXT:    xscvspdpn 0, 06355; PC64LE-NEXT:    xscvspdpn 1, 16356; PC64LE-NEXT:    xxmrghd 34, 1, 06357; PC64LE-NEXT:    blr6358;6359; PC64LE9-LABEL: constrained_vector_fpext_v2f32:6360; PC64LE9:       # %bb.0: # %entry6361; PC64LE9-NEXT:    xxsldwi 0, 34, 34, 36362; PC64LE9-NEXT:    xxswapd 1, 346363; PC64LE9-NEXT:    xscvspdpn 0, 06364; PC64LE9-NEXT:    xscvspdpn 1, 16365; PC64LE9-NEXT:    xxmrghd 34, 1, 06366; PC64LE9-NEXT:    blr6367entry:6368  %result = call <2 x double> @llvm.experimental.constrained.fpext.v2f64.v2f32(6369                                <2 x float> %x,6370                                metadata !"fpexcept.strict") #16371  ret <2 x double> %result6372}6373 6374define <3 x double> @constrained_vector_fpext_v3f32(<3 x float> %x) #0 {6375; PC64LE-LABEL: constrained_vector_fpext_v3f32:6376; PC64LE:       # %bb.0: # %entry6377; PC64LE-NEXT:    xxsldwi 0, 34, 34, 16378; PC64LE-NEXT:    xxswapd 1, 346379; PC64LE-NEXT:    xscvspdpn 3, 06380; PC64LE-NEXT:    xxsldwi 4, 34, 34, 36381; PC64LE-NEXT:    xscvspdpn 2, 16382; PC64LE-NEXT:    xscvspdpn 1, 46383; PC64LE-NEXT:    blr6384;6385; PC64LE9-LABEL: constrained_vector_fpext_v3f32:6386; PC64LE9:       # %bb.0: # %entry6387; PC64LE9-NEXT:    xxsldwi 0, 34, 34, 16388; PC64LE9-NEXT:    xscvspdpn 3, 06389; PC64LE9-NEXT:    xxswapd 0, 346390; PC64LE9-NEXT:    xscvspdpn 2, 06391; PC64LE9-NEXT:    xxsldwi 0, 34, 34, 36392; PC64LE9-NEXT:    xscvspdpn 1, 06393; PC64LE9-NEXT:    blr6394entry:6395  %result = call <3 x double> @llvm.experimental.constrained.fpext.v3f64.v3f32(6396                                <3 x float> %x,6397                                metadata !"fpexcept.strict") #16398  ret <3 x double> %result6399}6400 6401define <4 x double> @constrained_vector_fpext_v4f32(<4 x float> %x) #0 {6402; PC64LE-LABEL: constrained_vector_fpext_v4f32:6403; PC64LE:       # %bb.0: # %entry6404; PC64LE-NEXT:    xxsldwi 0, 34, 34, 36405; PC64LE-NEXT:    xxswapd 1, 346406; PC64LE-NEXT:    xscvspdpn 0, 06407; PC64LE-NEXT:    xscvspdpn 1, 16408; PC64LE-NEXT:    xxsldwi 2, 34, 34, 16409; PC64LE-NEXT:    xscvspdpn 2, 26410; PC64LE-NEXT:    xxmrghd 0, 1, 06411; PC64LE-NEXT:    xscvspdpn 1, 346412; PC64LE-NEXT:    xxlor 34, 0, 06413; PC64LE-NEXT:    xxmrghd 35, 1, 26414; PC64LE-NEXT:    blr6415;6416; PC64LE9-LABEL: constrained_vector_fpext_v4f32:6417; PC64LE9:       # %bb.0: # %entry6418; PC64LE9-NEXT:    xxsldwi 0, 34, 34, 36419; PC64LE9-NEXT:    xxswapd 1, 346420; PC64LE9-NEXT:    xscvspdpn 0, 06421; PC64LE9-NEXT:    xscvspdpn 1, 16422; PC64LE9-NEXT:    xxsldwi 2, 34, 34, 16423; PC64LE9-NEXT:    xscvspdpn 2, 26424; PC64LE9-NEXT:    xxmrghd 0, 1, 06425; PC64LE9-NEXT:    xscvspdpn 1, 346426; PC64LE9-NEXT:    xxmrghd 35, 1, 26427; PC64LE9-NEXT:    xxlor 34, 0, 06428; PC64LE9-NEXT:    blr6429entry:6430  %result = call <4 x double> @llvm.experimental.constrained.fpext.v4f64.v4f32(6431                                <4 x float> %x,6432                                metadata !"fpexcept.strict") #16433  ret <4 x double> %result6434}6435 6436define <1 x float> @constrained_vector_ceil_v1f32(<1 x float> %x) #0 {6437; PC64LE-LABEL: constrained_vector_ceil_v1f32:6438; PC64LE:       # %bb.0: # %entry6439; PC64LE-NEXT:    xsrdpip 1, 16440; PC64LE-NEXT:    blr6441;6442; PC64LE9-LABEL: constrained_vector_ceil_v1f32:6443; PC64LE9:       # %bb.0: # %entry6444; PC64LE9-NEXT:    xsrdpip 1, 16445; PC64LE9-NEXT:    blr6446entry:6447  %ceil = call <1 x float> @llvm.experimental.constrained.ceil.v1f32(6448                               <1 x float> %x,6449                               metadata !"fpexcept.strict") #16450  ret <1 x float> %ceil6451}6452 6453define <2 x double> @constrained_vector_ceil_v2f64(<2 x double> %x) #0 {6454; PC64LE-LABEL: constrained_vector_ceil_v2f64:6455; PC64LE:       # %bb.0: # %entry6456; PC64LE-NEXT:    xvrdpip 34, 346457; PC64LE-NEXT:    blr6458;6459; PC64LE9-LABEL: constrained_vector_ceil_v2f64:6460; PC64LE9:       # %bb.0: # %entry6461; PC64LE9-NEXT:    xvrdpip 34, 346462; PC64LE9-NEXT:    blr6463entry:6464  %ceil = call <2 x double> @llvm.experimental.constrained.ceil.v2f64(6465                                <2 x double> %x,6466                                metadata !"fpexcept.strict") #16467  ret <2 x double> %ceil6468}6469 6470define <3 x float> @constrained_vector_ceil_v3f32(<3 x float> %x) #0 {6471; PC64LE-LABEL: constrained_vector_ceil_v3f32:6472; PC64LE:       # %bb.0: # %entry6473; PC64LE-NEXT:    xxswapd 0, 346474; PC64LE-NEXT:    xxsldwi 1, 34, 34, 36475; PC64LE-NEXT:    addis 3, 2, .LCPI137_0@toc@ha6476; PC64LE-NEXT:    xscvspdpn 0, 06477; PC64LE-NEXT:    xscvspdpn 1, 16478; PC64LE-NEXT:    addi 3, 3, .LCPI137_0@toc@l6479; PC64LE-NEXT:    xxsldwi 2, 34, 34, 16480; PC64LE-NEXT:    xsrdpip 0, 06481; PC64LE-NEXT:    xsrdpip 1, 16482; PC64LE-NEXT:    xscvdpspn 1, 16483; PC64LE-NEXT:    xscvdpspn 0, 06484; PC64LE-NEXT:    xxmrghw 34, 0, 16485; PC64LE-NEXT:    lxvd2x 0, 0, 36486; PC64LE-NEXT:    xxswapd 35, 06487; PC64LE-NEXT:    xscvspdpn 0, 26488; PC64LE-NEXT:    xsrdpip 0, 06489; PC64LE-NEXT:    xscvdpspn 36, 06490; PC64LE-NEXT:    vperm 2, 4, 2, 36491; PC64LE-NEXT:    blr6492;6493; PC64LE9-LABEL: constrained_vector_ceil_v3f32:6494; PC64LE9:       # %bb.0: # %entry6495; PC64LE9-NEXT:    xxswapd 1, 346496; PC64LE9-NEXT:    xxsldwi 2, 34, 34, 36497; PC64LE9-NEXT:    addis 3, 2, .LCPI137_0@toc@ha6498; PC64LE9-NEXT:    addi 3, 3, .LCPI137_0@toc@l6499; PC64LE9-NEXT:    xxsldwi 0, 34, 34, 16500; PC64LE9-NEXT:    xscvspdpn 1, 16501; PC64LE9-NEXT:    xscvspdpn 2, 26502; PC64LE9-NEXT:    xscvspdpn 0, 06503; PC64LE9-NEXT:    xsrdpip 1, 16504; PC64LE9-NEXT:    xsrdpip 2, 26505; PC64LE9-NEXT:    xsrdpip 0, 06506; PC64LE9-NEXT:    xscvdpspn 2, 26507; PC64LE9-NEXT:    xscvdpspn 1, 16508; PC64LE9-NEXT:    xscvdpspn 34, 06509; PC64LE9-NEXT:    xxmrghw 35, 1, 26510; PC64LE9-NEXT:    lxv 1, 0(3)6511; PC64LE9-NEXT:    xxperm 34, 35, 16512; PC64LE9-NEXT:    blr6513entry:6514  %ceil = call <3 x float> @llvm.experimental.constrained.ceil.v3f32(6515                              <3 x float> %x,6516                              metadata !"fpexcept.strict") #16517  ret <3 x float> %ceil6518}6519 6520define <3 x double> @constrained_vector_ceil_v3f64(<3 x double> %x) #0 {6521; PC64LE-LABEL: constrained_vector_ceil_v3f64:6522; PC64LE:       # %bb.0: # %entry6523; PC64LE-NEXT:    xxmrghd 0, 2, 16524; PC64LE-NEXT:    xsrdpip 3, 36525; PC64LE-NEXT:    xvrdpip 2, 06526; PC64LE-NEXT:    xxswapd 1, 26527; PC64LE-NEXT:    blr6528;6529; PC64LE9-LABEL: constrained_vector_ceil_v3f64:6530; PC64LE9:       # %bb.0: # %entry6531; PC64LE9-NEXT:    xxmrghd 0, 2, 16532; PC64LE9-NEXT:    xsrdpip 3, 36533; PC64LE9-NEXT:    xvrdpip 2, 06534; PC64LE9-NEXT:    xxswapd 1, 26535; PC64LE9-NEXT:    blr6536entry:6537  %ceil = call <3 x double> @llvm.experimental.constrained.ceil.v3f64(6538                          <3 x double> %x,6539                          metadata !"fpexcept.strict") #16540  ret <3 x double> %ceil6541}6542 6543define <1 x float> @constrained_vector_floor_v1f32(<1 x float> %x) #0 {6544; PC64LE-LABEL: constrained_vector_floor_v1f32:6545; PC64LE:       # %bb.0: # %entry6546; PC64LE-NEXT:    xsrdpim 1, 16547; PC64LE-NEXT:    blr6548;6549; PC64LE9-LABEL: constrained_vector_floor_v1f32:6550; PC64LE9:       # %bb.0: # %entry6551; PC64LE9-NEXT:    xsrdpim 1, 16552; PC64LE9-NEXT:    blr6553entry:6554  %floor = call <1 x float> @llvm.experimental.constrained.floor.v1f32(6555                               <1 x float> %x,6556                               metadata !"fpexcept.strict") #16557  ret <1 x float> %floor6558}6559 6560 6561define <2 x double> @constrained_vector_floor_v2f64(<2 x double> %x) #0 {6562; PC64LE-LABEL: constrained_vector_floor_v2f64:6563; PC64LE:       # %bb.0: # %entry6564; PC64LE-NEXT:    xvrdpim 34, 346565; PC64LE-NEXT:    blr6566;6567; PC64LE9-LABEL: constrained_vector_floor_v2f64:6568; PC64LE9:       # %bb.0: # %entry6569; PC64LE9-NEXT:    xvrdpim 34, 346570; PC64LE9-NEXT:    blr6571entry:6572  %floor = call <2 x double> @llvm.experimental.constrained.floor.v2f64(6573                                <2 x double> %x,6574                                metadata !"fpexcept.strict") #16575  ret <2 x double> %floor6576}6577 6578define <3 x float> @constrained_vector_floor_v3f32(<3 x float> %x) #0 {6579; PC64LE-LABEL: constrained_vector_floor_v3f32:6580; PC64LE:       # %bb.0: # %entry6581; PC64LE-NEXT:    xxswapd 0, 346582; PC64LE-NEXT:    xxsldwi 1, 34, 34, 36583; PC64LE-NEXT:    addis 3, 2, .LCPI141_0@toc@ha6584; PC64LE-NEXT:    xscvspdpn 0, 06585; PC64LE-NEXT:    xscvspdpn 1, 16586; PC64LE-NEXT:    addi 3, 3, .LCPI141_0@toc@l6587; PC64LE-NEXT:    xxsldwi 2, 34, 34, 16588; PC64LE-NEXT:    xsrdpim 0, 06589; PC64LE-NEXT:    xsrdpim 1, 16590; PC64LE-NEXT:    xscvdpspn 1, 16591; PC64LE-NEXT:    xscvdpspn 0, 06592; PC64LE-NEXT:    xxmrghw 34, 0, 16593; PC64LE-NEXT:    lxvd2x 0, 0, 36594; PC64LE-NEXT:    xxswapd 35, 06595; PC64LE-NEXT:    xscvspdpn 0, 26596; PC64LE-NEXT:    xsrdpim 0, 06597; PC64LE-NEXT:    xscvdpspn 36, 06598; PC64LE-NEXT:    vperm 2, 4, 2, 36599; PC64LE-NEXT:    blr6600;6601; PC64LE9-LABEL: constrained_vector_floor_v3f32:6602; PC64LE9:       # %bb.0: # %entry6603; PC64LE9-NEXT:    xxswapd 1, 346604; PC64LE9-NEXT:    xxsldwi 2, 34, 34, 36605; PC64LE9-NEXT:    addis 3, 2, .LCPI141_0@toc@ha6606; PC64LE9-NEXT:    addi 3, 3, .LCPI141_0@toc@l6607; PC64LE9-NEXT:    xxsldwi 0, 34, 34, 16608; PC64LE9-NEXT:    xscvspdpn 1, 16609; PC64LE9-NEXT:    xscvspdpn 2, 26610; PC64LE9-NEXT:    xscvspdpn 0, 06611; PC64LE9-NEXT:    xsrdpim 1, 16612; PC64LE9-NEXT:    xsrdpim 2, 26613; PC64LE9-NEXT:    xsrdpim 0, 06614; PC64LE9-NEXT:    xscvdpspn 2, 26615; PC64LE9-NEXT:    xscvdpspn 1, 16616; PC64LE9-NEXT:    xscvdpspn 34, 06617; PC64LE9-NEXT:    xxmrghw 35, 1, 26618; PC64LE9-NEXT:    lxv 1, 0(3)6619; PC64LE9-NEXT:    xxperm 34, 35, 16620; PC64LE9-NEXT:    blr6621entry:6622  %floor = call <3 x float> @llvm.experimental.constrained.floor.v3f32(6623                              <3 x float> %x,6624                              metadata !"fpexcept.strict") #16625  ret <3 x float> %floor6626}6627 6628define <3 x double> @constrained_vector_floor_v3f64(<3 x double> %x) #0 {6629; PC64LE-LABEL: constrained_vector_floor_v3f64:6630; PC64LE:       # %bb.0: # %entry6631; PC64LE-NEXT:    xxmrghd 0, 2, 16632; PC64LE-NEXT:    xsrdpim 3, 36633; PC64LE-NEXT:    xvrdpim 2, 06634; PC64LE-NEXT:    xxswapd 1, 26635; PC64LE-NEXT:    blr6636;6637; PC64LE9-LABEL: constrained_vector_floor_v3f64:6638; PC64LE9:       # %bb.0: # %entry6639; PC64LE9-NEXT:    xxmrghd 0, 2, 16640; PC64LE9-NEXT:    xsrdpim 3, 36641; PC64LE9-NEXT:    xvrdpim 2, 06642; PC64LE9-NEXT:    xxswapd 1, 26643; PC64LE9-NEXT:    blr6644entry:6645  %floor = call <3 x double> @llvm.experimental.constrained.floor.v3f64(6646                          <3 x double> %x,6647                          metadata !"fpexcept.strict") #16648  ret <3 x double> %floor6649}6650 6651define <1 x float> @constrained_vector_round_v1f32(<1 x float> %x) #0 {6652; PC64LE-LABEL: constrained_vector_round_v1f32:6653; PC64LE:       # %bb.0: # %entry6654; PC64LE-NEXT:    xsrdpi 1, 16655; PC64LE-NEXT:    blr6656;6657; PC64LE9-LABEL: constrained_vector_round_v1f32:6658; PC64LE9:       # %bb.0: # %entry6659; PC64LE9-NEXT:    xsrdpi 1, 16660; PC64LE9-NEXT:    blr6661entry:6662  %round = call <1 x float> @llvm.experimental.constrained.round.v1f32(6663                               <1 x float> %x,6664                               metadata !"fpexcept.strict") #16665  ret <1 x float> %round6666}6667 6668define <2 x double> @constrained_vector_round_v2f64(<2 x double> %x) #0 {6669; PC64LE-LABEL: constrained_vector_round_v2f64:6670; PC64LE:       # %bb.0: # %entry6671; PC64LE-NEXT:    xvrdpi 34, 346672; PC64LE-NEXT:    blr6673;6674; PC64LE9-LABEL: constrained_vector_round_v2f64:6675; PC64LE9:       # %bb.0: # %entry6676; PC64LE9-NEXT:    xvrdpi 34, 346677; PC64LE9-NEXT:    blr6678entry:6679  %round = call <2 x double> @llvm.experimental.constrained.round.v2f64(6680                                <2 x double> %x,6681                                metadata !"fpexcept.strict") #16682  ret <2 x double> %round6683}6684 6685define <3 x float> @constrained_vector_round_v3f32(<3 x float> %x) #0 {6686; PC64LE-LABEL: constrained_vector_round_v3f32:6687; PC64LE:       # %bb.0: # %entry6688; PC64LE-NEXT:    xxswapd 0, 346689; PC64LE-NEXT:    xxsldwi 1, 34, 34, 36690; PC64LE-NEXT:    addis 3, 2, .LCPI145_0@toc@ha6691; PC64LE-NEXT:    xscvspdpn 0, 06692; PC64LE-NEXT:    xscvspdpn 1, 16693; PC64LE-NEXT:    addi 3, 3, .LCPI145_0@toc@l6694; PC64LE-NEXT:    xxsldwi 2, 34, 34, 16695; PC64LE-NEXT:    xsrdpi 0, 06696; PC64LE-NEXT:    xsrdpi 1, 16697; PC64LE-NEXT:    xscvdpspn 1, 16698; PC64LE-NEXT:    xscvdpspn 0, 06699; PC64LE-NEXT:    xxmrghw 34, 0, 16700; PC64LE-NEXT:    lxvd2x 0, 0, 36701; PC64LE-NEXT:    xxswapd 35, 06702; PC64LE-NEXT:    xscvspdpn 0, 26703; PC64LE-NEXT:    xsrdpi 0, 06704; PC64LE-NEXT:    xscvdpspn 36, 06705; PC64LE-NEXT:    vperm 2, 4, 2, 36706; PC64LE-NEXT:    blr6707;6708; PC64LE9-LABEL: constrained_vector_round_v3f32:6709; PC64LE9:       # %bb.0: # %entry6710; PC64LE9-NEXT:    xxswapd 1, 346711; PC64LE9-NEXT:    xxsldwi 2, 34, 34, 36712; PC64LE9-NEXT:    addis 3, 2, .LCPI145_0@toc@ha6713; PC64LE9-NEXT:    addi 3, 3, .LCPI145_0@toc@l6714; PC64LE9-NEXT:    xxsldwi 0, 34, 34, 16715; PC64LE9-NEXT:    xscvspdpn 1, 16716; PC64LE9-NEXT:    xscvspdpn 2, 26717; PC64LE9-NEXT:    xscvspdpn 0, 06718; PC64LE9-NEXT:    xsrdpi 1, 16719; PC64LE9-NEXT:    xsrdpi 2, 26720; PC64LE9-NEXT:    xsrdpi 0, 06721; PC64LE9-NEXT:    xscvdpspn 2, 26722; PC64LE9-NEXT:    xscvdpspn 1, 16723; PC64LE9-NEXT:    xscvdpspn 34, 06724; PC64LE9-NEXT:    xxmrghw 35, 1, 26725; PC64LE9-NEXT:    lxv 1, 0(3)6726; PC64LE9-NEXT:    xxperm 34, 35, 16727; PC64LE9-NEXT:    blr6728entry:6729  %round = call <3 x float> @llvm.experimental.constrained.round.v3f32(6730                              <3 x float> %x,6731                              metadata !"fpexcept.strict") #16732  ret <3 x float> %round6733}6734 6735 6736define <3 x double> @constrained_vector_round_v3f64(<3 x double> %x) #0 {6737; PC64LE-LABEL: constrained_vector_round_v3f64:6738; PC64LE:       # %bb.0: # %entry6739; PC64LE-NEXT:    xxmrghd 0, 2, 16740; PC64LE-NEXT:    xsrdpi 3, 36741; PC64LE-NEXT:    xvrdpi 2, 06742; PC64LE-NEXT:    xxswapd 1, 26743; PC64LE-NEXT:    blr6744;6745; PC64LE9-LABEL: constrained_vector_round_v3f64:6746; PC64LE9:       # %bb.0: # %entry6747; PC64LE9-NEXT:    xxmrghd 0, 2, 16748; PC64LE9-NEXT:    xsrdpi 3, 36749; PC64LE9-NEXT:    xvrdpi 2, 06750; PC64LE9-NEXT:    xxswapd 1, 26751; PC64LE9-NEXT:    blr6752entry:6753  %round = call <3 x double> @llvm.experimental.constrained.round.v3f64(6754                          <3 x double> %x,6755                          metadata !"fpexcept.strict") #16756  ret <3 x double> %round6757}6758 6759define <1 x float> @constrained_vector_trunc_v1f32(<1 x float> %x) #0 {6760; PC64LE-LABEL: constrained_vector_trunc_v1f32:6761; PC64LE:       # %bb.0: # %entry6762; PC64LE-NEXT:    xsrdpiz 1, 16763; PC64LE-NEXT:    blr6764;6765; PC64LE9-LABEL: constrained_vector_trunc_v1f32:6766; PC64LE9:       # %bb.0: # %entry6767; PC64LE9-NEXT:    xsrdpiz 1, 16768; PC64LE9-NEXT:    blr6769entry:6770  %trunc = call <1 x float> @llvm.experimental.constrained.trunc.v1f32(6771                               <1 x float> %x,6772                               metadata !"fpexcept.strict") #16773  ret <1 x float> %trunc6774}6775 6776define <2 x double> @constrained_vector_trunc_v2f64(<2 x double> %x) #0 {6777; PC64LE-LABEL: constrained_vector_trunc_v2f64:6778; PC64LE:       # %bb.0: # %entry6779; PC64LE-NEXT:    xvrdpiz 34, 346780; PC64LE-NEXT:    blr6781;6782; PC64LE9-LABEL: constrained_vector_trunc_v2f64:6783; PC64LE9:       # %bb.0: # %entry6784; PC64LE9-NEXT:    xvrdpiz 34, 346785; PC64LE9-NEXT:    blr6786entry:6787  %trunc = call <2 x double> @llvm.experimental.constrained.trunc.v2f64(6788                                <2 x double> %x,6789                                metadata !"fpexcept.strict") #16790  ret <2 x double> %trunc6791}6792 6793define <3 x float> @constrained_vector_trunc_v3f32(<3 x float> %x) #0 {6794; PC64LE-LABEL: constrained_vector_trunc_v3f32:6795; PC64LE:       # %bb.0: # %entry6796; PC64LE-NEXT:    xxswapd 0, 346797; PC64LE-NEXT:    xxsldwi 1, 34, 34, 36798; PC64LE-NEXT:    addis 3, 2, .LCPI149_0@toc@ha6799; PC64LE-NEXT:    xscvspdpn 0, 06800; PC64LE-NEXT:    xscvspdpn 1, 16801; PC64LE-NEXT:    addi 3, 3, .LCPI149_0@toc@l6802; PC64LE-NEXT:    xxsldwi 2, 34, 34, 16803; PC64LE-NEXT:    xsrdpiz 0, 06804; PC64LE-NEXT:    xsrdpiz 1, 16805; PC64LE-NEXT:    xscvdpspn 1, 16806; PC64LE-NEXT:    xscvdpspn 0, 06807; PC64LE-NEXT:    xxmrghw 34, 0, 16808; PC64LE-NEXT:    lxvd2x 0, 0, 36809; PC64LE-NEXT:    xxswapd 35, 06810; PC64LE-NEXT:    xscvspdpn 0, 26811; PC64LE-NEXT:    xsrdpiz 0, 06812; PC64LE-NEXT:    xscvdpspn 36, 06813; PC64LE-NEXT:    vperm 2, 4, 2, 36814; PC64LE-NEXT:    blr6815;6816; PC64LE9-LABEL: constrained_vector_trunc_v3f32:6817; PC64LE9:       # %bb.0: # %entry6818; PC64LE9-NEXT:    xxswapd 1, 346819; PC64LE9-NEXT:    xxsldwi 2, 34, 34, 36820; PC64LE9-NEXT:    addis 3, 2, .LCPI149_0@toc@ha6821; PC64LE9-NEXT:    addi 3, 3, .LCPI149_0@toc@l6822; PC64LE9-NEXT:    xxsldwi 0, 34, 34, 16823; PC64LE9-NEXT:    xscvspdpn 1, 16824; PC64LE9-NEXT:    xscvspdpn 2, 26825; PC64LE9-NEXT:    xscvspdpn 0, 06826; PC64LE9-NEXT:    xsrdpiz 1, 16827; PC64LE9-NEXT:    xsrdpiz 2, 26828; PC64LE9-NEXT:    xsrdpiz 0, 06829; PC64LE9-NEXT:    xscvdpspn 2, 26830; PC64LE9-NEXT:    xscvdpspn 1, 16831; PC64LE9-NEXT:    xscvdpspn 34, 06832; PC64LE9-NEXT:    xxmrghw 35, 1, 26833; PC64LE9-NEXT:    lxv 1, 0(3)6834; PC64LE9-NEXT:    xxperm 34, 35, 16835; PC64LE9-NEXT:    blr6836entry:6837  %trunc = call <3 x float> @llvm.experimental.constrained.trunc.v3f32(6838                              <3 x float> %x,6839                              metadata !"fpexcept.strict") #16840  ret <3 x float> %trunc6841}6842 6843define <3 x double> @constrained_vector_trunc_v3f64(<3 x double> %x) #0 {6844; PC64LE-LABEL: constrained_vector_trunc_v3f64:6845; PC64LE:       # %bb.0: # %entry6846; PC64LE-NEXT:    xxmrghd 0, 2, 16847; PC64LE-NEXT:    xsrdpiz 3, 36848; PC64LE-NEXT:    xvrdpiz 2, 06849; PC64LE-NEXT:    xxswapd 1, 26850; PC64LE-NEXT:    blr6851;6852; PC64LE9-LABEL: constrained_vector_trunc_v3f64:6853; PC64LE9:       # %bb.0: # %entry6854; PC64LE9-NEXT:    xxmrghd 0, 2, 16855; PC64LE9-NEXT:    xsrdpiz 3, 36856; PC64LE9-NEXT:    xvrdpiz 2, 06857; PC64LE9-NEXT:    xxswapd 1, 26858; PC64LE9-NEXT:    blr6859entry:6860  %trunc = call <3 x double> @llvm.experimental.constrained.trunc.v3f64(6861                          <3 x double> %x,6862                          metadata !"fpexcept.strict") #16863  ret <3 x double> %trunc6864}6865 6866define <1 x double> @constrained_vector_sitofp_v1f64_v1i32(<1 x i32> %x) #0 {6867; PC64LE-LABEL: constrained_vector_sitofp_v1f64_v1i32:6868; PC64LE:       # %bb.0: # %entry6869; PC64LE-NEXT:    mtfprwa 0, 36870; PC64LE-NEXT:    xscvsxddp 1, 06871; PC64LE-NEXT:    blr6872;6873; PC64LE9-LABEL: constrained_vector_sitofp_v1f64_v1i32:6874; PC64LE9:       # %bb.0: # %entry6875; PC64LE9-NEXT:    mtfprwa 0, 36876; PC64LE9-NEXT:    xscvsxddp 1, 06877; PC64LE9-NEXT:    blr6878entry:6879  %result = call <1 x double>6880           @llvm.experimental.constrained.sitofp.v1f64.v1i32(<1 x i32> %x,6881                                               metadata !"round.dynamic",6882                                               metadata !"fpexcept.strict") #06883  ret <1 x double> %result6884}6885 6886define <1 x float> @constrained_vector_sitofp_v1f32_v1i32(<1 x i32> %x) #0 {6887; PC64LE-LABEL: constrained_vector_sitofp_v1f32_v1i32:6888; PC64LE:       # %bb.0: # %entry6889; PC64LE-NEXT:    mtfprwa 0, 36890; PC64LE-NEXT:    xscvsxdsp 1, 06891; PC64LE-NEXT:    blr6892;6893; PC64LE9-LABEL: constrained_vector_sitofp_v1f32_v1i32:6894; PC64LE9:       # %bb.0: # %entry6895; PC64LE9-NEXT:    mtfprwa 0, 36896; PC64LE9-NEXT:    xscvsxdsp 1, 06897; PC64LE9-NEXT:    blr6898entry:6899  %result = call <1 x float>6900           @llvm.experimental.constrained.sitofp.v1f32.v1i32(<1 x i32> %x,6901                                               metadata !"round.dynamic",6902                                               metadata !"fpexcept.strict") #06903  ret <1 x float> %result6904}6905 6906define <1 x double> @constrained_vector_sitofp_v1f64_v1i64(<1 x i64> %x) #0 {6907; PC64LE-LABEL: constrained_vector_sitofp_v1f64_v1i64:6908; PC64LE:       # %bb.0: # %entry6909; PC64LE-NEXT:    mtfprd 0, 36910; PC64LE-NEXT:    xscvsxddp 1, 06911; PC64LE-NEXT:    blr6912;6913; PC64LE9-LABEL: constrained_vector_sitofp_v1f64_v1i64:6914; PC64LE9:       # %bb.0: # %entry6915; PC64LE9-NEXT:    mtfprd 0, 36916; PC64LE9-NEXT:    xscvsxddp 1, 06917; PC64LE9-NEXT:    blr6918entry:6919  %result = call <1 x double>6920           @llvm.experimental.constrained.sitofp.v1f64.v1i64(<1 x i64> %x,6921                                               metadata !"round.dynamic",6922                                               metadata !"fpexcept.strict") #06923  ret <1 x double> %result6924}6925 6926define <1 x float> @constrained_vector_sitofp_v1f32_v1i64(<1 x i64> %x) #0 {6927; PC64LE-LABEL: constrained_vector_sitofp_v1f32_v1i64:6928; PC64LE:       # %bb.0: # %entry6929; PC64LE-NEXT:    mtfprd 0, 36930; PC64LE-NEXT:    xscvsxdsp 1, 06931; PC64LE-NEXT:    blr6932;6933; PC64LE9-LABEL: constrained_vector_sitofp_v1f32_v1i64:6934; PC64LE9:       # %bb.0: # %entry6935; PC64LE9-NEXT:    mtfprd 0, 36936; PC64LE9-NEXT:    xscvsxdsp 1, 06937; PC64LE9-NEXT:    blr6938entry:6939  %result = call <1 x float>6940           @llvm.experimental.constrained.sitofp.v1f32.v1i64(<1 x i64> %x,6941                                               metadata !"round.dynamic",6942                                               metadata !"fpexcept.strict") #06943  ret <1 x float> %result6944}6945 6946define <2 x double> @constrained_vector_sitofp_v2f64_v2i16(<2 x i16> %x) #0 {6947; PC64LE-LABEL: constrained_vector_sitofp_v2f64_v2i16:6948; PC64LE:       # %bb.0: # %entry6949; PC64LE-NEXT:    addis 3, 2, .LCPI155_0@toc@ha6950; PC64LE-NEXT:    addi 3, 3, .LCPI155_0@toc@l6951; PC64LE-NEXT:    lxvd2x 0, 0, 36952; PC64LE-NEXT:    addis 3, 2, .LCPI155_1@toc@ha6953; PC64LE-NEXT:    addi 3, 3, .LCPI155_1@toc@l6954; PC64LE-NEXT:    xxswapd 35, 06955; PC64LE-NEXT:    vperm 2, 2, 2, 36956; PC64LE-NEXT:    lxvd2x 35, 0, 36957; PC64LE-NEXT:    vsld 2, 2, 36958; PC64LE-NEXT:    vsrad 2, 2, 36959; PC64LE-NEXT:    xvcvsxddp 34, 346960; PC64LE-NEXT:    blr6961;6962; PC64LE9-LABEL: constrained_vector_sitofp_v2f64_v2i16:6963; PC64LE9:       # %bb.0: # %entry6964; PC64LE9-NEXT:    addis 3, 2, .LCPI155_0@toc@ha6965; PC64LE9-NEXT:    addi 3, 3, .LCPI155_0@toc@l6966; PC64LE9-NEXT:    lxv 0, 0(3)6967; PC64LE9-NEXT:    xxperm 34, 34, 06968; PC64LE9-NEXT:    vextsh2d 2, 26969; PC64LE9-NEXT:    xvcvsxddp 34, 346970; PC64LE9-NEXT:    blr6971entry:6972  %result = call <2 x double>6973           @llvm.experimental.constrained.sitofp.v2f64.v2i16(<2 x i16> %x,6974                                                metadata !"round.dynamic",6975                                                metadata !"fpexcept.strict") #06976  ret <2 x double> %result6977}6978 6979define <2 x double> @constrained_vector_sitofp_v2f64_v2i32(<2 x i32> %x) #0 {6980; PC64LE-LABEL: constrained_vector_sitofp_v2f64_v2i32:6981; PC64LE:       # %bb.0: # %entry6982; PC64LE-NEXT:    xxswapd 0, 346983; PC64LE-NEXT:    xxsldwi 1, 34, 34, 16984; PC64LE-NEXT:    mffprwz 3, 06985; PC64LE-NEXT:    mtfprwa 0, 36986; PC64LE-NEXT:    mffprwz 3, 16987; PC64LE-NEXT:    mtfprwa 1, 36988; PC64LE-NEXT:    xscvsxddp 0, 06989; PC64LE-NEXT:    xscvsxddp 1, 16990; PC64LE-NEXT:    xxmrghd 34, 1, 06991; PC64LE-NEXT:    blr6992;6993; PC64LE9-LABEL: constrained_vector_sitofp_v2f64_v2i32:6994; PC64LE9:       # %bb.0: # %entry6995; PC64LE9-NEXT:    li 3, 06996; PC64LE9-NEXT:    vextuwrx 3, 3, 26997; PC64LE9-NEXT:    mtfprwa 0, 36998; PC64LE9-NEXT:    li 3, 46999; PC64LE9-NEXT:    vextuwrx 3, 3, 27000; PC64LE9-NEXT:    xscvsxddp 0, 07001; PC64LE9-NEXT:    mtfprwa 1, 37002; PC64LE9-NEXT:    xscvsxddp 1, 17003; PC64LE9-NEXT:    xxmrghd 34, 1, 07004; PC64LE9-NEXT:    blr7005entry:7006  %result = call <2 x double>7007           @llvm.experimental.constrained.sitofp.v2f64.v2i32(<2 x i32> %x,7008                                               metadata !"round.dynamic",7009                                               metadata !"fpexcept.strict") #07010  ret <2 x double> %result7011}7012 7013define <2 x float> @constrained_vector_sitofp_v2f32_v2i32(<2 x i32> %x) #0 {7014; PC64LE-LABEL: constrained_vector_sitofp_v2f32_v2i32:7015; PC64LE:       # %bb.0: # %entry7016; PC64LE-NEXT:    xxswapd 0, 347017; PC64LE-NEXT:    xxsldwi 1, 34, 34, 17018; PC64LE-NEXT:    mffprwz 3, 07019; PC64LE-NEXT:    mtfprwa 0, 37020; PC64LE-NEXT:    mffprwz 3, 17021; PC64LE-NEXT:    mtfprwa 1, 37022; PC64LE-NEXT:    xscvsxdsp 0, 07023; PC64LE-NEXT:    xscvsxdsp 1, 17024; PC64LE-NEXT:    xscvdpspn 0, 07025; PC64LE-NEXT:    xscvdpspn 1, 17026; PC64LE-NEXT:    xxmrghw 34, 1, 07027; PC64LE-NEXT:    blr7028;7029; PC64LE9-LABEL: constrained_vector_sitofp_v2f32_v2i32:7030; PC64LE9:       # %bb.0: # %entry7031; PC64LE9-NEXT:    li 3, 07032; PC64LE9-NEXT:    vextuwrx 3, 3, 27033; PC64LE9-NEXT:    mtfprwa 0, 37034; PC64LE9-NEXT:    li 3, 47035; PC64LE9-NEXT:    vextuwrx 3, 3, 27036; PC64LE9-NEXT:    xscvsxdsp 0, 07037; PC64LE9-NEXT:    mtfprwa 1, 37038; PC64LE9-NEXT:    xscvsxdsp 1, 17039; PC64LE9-NEXT:    xscvdpspn 0, 07040; PC64LE9-NEXT:    xscvdpspn 1, 17041; PC64LE9-NEXT:    xxmrghw 34, 1, 07042; PC64LE9-NEXT:    blr7043entry:7044  %result = call <2 x float>7045           @llvm.experimental.constrained.sitofp.v2f32.v2i32(<2 x i32> %x,7046                                               metadata !"round.dynamic",7047                                               metadata !"fpexcept.strict") #07048  ret <2 x float> %result7049}7050 7051define <2 x double> @constrained_vector_sitofp_v2f64_v2i64(<2 x i64> %x) #0 {7052; PC64LE-LABEL: constrained_vector_sitofp_v2f64_v2i64:7053; PC64LE:       # %bb.0: # %entry7054; PC64LE-NEXT:    xvcvsxddp 34, 347055; PC64LE-NEXT:    blr7056;7057; PC64LE9-LABEL: constrained_vector_sitofp_v2f64_v2i64:7058; PC64LE9:       # %bb.0: # %entry7059; PC64LE9-NEXT:    xvcvsxddp 34, 347060; PC64LE9-NEXT:    blr7061entry:7062  %result = call <2 x double>7063           @llvm.experimental.constrained.sitofp.v2f64.v2i64(<2 x i64> %x,7064                                               metadata !"round.dynamic",7065                                               metadata !"fpexcept.strict") #07066  ret <2 x double> %result7067}7068 7069define <2 x float> @constrained_vector_sitofp_v2f32_v2i64(<2 x i64> %x) #0 {7070; PC64LE-LABEL: constrained_vector_sitofp_v2f32_v2i64:7071; PC64LE:       # %bb.0: # %entry7072; PC64LE-NEXT:    mfvsrd 3, 347073; PC64LE-NEXT:    xxswapd 0, 347074; PC64LE-NEXT:    mtfprd 1, 37075; PC64LE-NEXT:    mffprd 3, 07076; PC64LE-NEXT:    mtfprd 0, 37077; PC64LE-NEXT:    xscvsxdsp 1, 17078; PC64LE-NEXT:    xscvsxdsp 0, 07079; PC64LE-NEXT:    xscvdpspn 1, 17080; PC64LE-NEXT:    xscvdpspn 0, 07081; PC64LE-NEXT:    xxmrghw 34, 1, 07082; PC64LE-NEXT:    blr7083;7084; PC64LE9-LABEL: constrained_vector_sitofp_v2f32_v2i64:7085; PC64LE9:       # %bb.0: # %entry7086; PC64LE9-NEXT:    mfvsrld 3, 347087; PC64LE9-NEXT:    mtfprd 0, 37088; PC64LE9-NEXT:    mfvsrd 3, 347089; PC64LE9-NEXT:    mtfprd 1, 37090; PC64LE9-NEXT:    xscvsxdsp 0, 07091; PC64LE9-NEXT:    xscvsxdsp 1, 17092; PC64LE9-NEXT:    xscvdpspn 0, 07093; PC64LE9-NEXT:    xscvdpspn 1, 17094; PC64LE9-NEXT:    xxmrghw 34, 1, 07095; PC64LE9-NEXT:    blr7096entry:7097  %result = call <2 x float>7098           @llvm.experimental.constrained.sitofp.v2f32.v2i64(<2 x i64> %x,7099                                               metadata !"round.dynamic",7100                                               metadata !"fpexcept.strict") #07101  ret <2 x float> %result7102}7103 7104define <3 x double> @constrained_vector_sitofp_v3f64_v3i32(<3 x i32> %x) #0 {7105; PC64LE-LABEL: constrained_vector_sitofp_v3f64_v3i32:7106; PC64LE:       # %bb.0: # %entry7107; PC64LE-NEXT:    xxswapd 0, 347108; PC64LE-NEXT:    xxsldwi 2, 34, 34, 17109; PC64LE-NEXT:    mffprwz 3, 07110; PC64LE-NEXT:    mtfprwa 0, 37111; PC64LE-NEXT:    mffprwz 3, 27112; PC64LE-NEXT:    xscvsxddp 1, 07113; PC64LE-NEXT:    mtfprwa 0, 37114; PC64LE-NEXT:    mfvsrwz 3, 347115; PC64LE-NEXT:    xscvsxddp 2, 07116; PC64LE-NEXT:    mtfprwa 0, 37117; PC64LE-NEXT:    xscvsxddp 3, 07118; PC64LE-NEXT:    blr7119;7120; PC64LE9-LABEL: constrained_vector_sitofp_v3f64_v3i32:7121; PC64LE9:       # %bb.0: # %entry7122; PC64LE9-NEXT:    li 3, 07123; PC64LE9-NEXT:    vextuwrx 3, 3, 27124; PC64LE9-NEXT:    mtfprwa 0, 37125; PC64LE9-NEXT:    li 3, 47126; PC64LE9-NEXT:    vextuwrx 3, 3, 27127; PC64LE9-NEXT:    xscvsxddp 1, 07128; PC64LE9-NEXT:    mtfprwa 0, 37129; PC64LE9-NEXT:    mfvsrwz 3, 347130; PC64LE9-NEXT:    xscvsxddp 2, 07131; PC64LE9-NEXT:    mtfprwa 0, 37132; PC64LE9-NEXT:    xscvsxddp 3, 07133; PC64LE9-NEXT:    blr7134entry:7135  %result = call <3 x double>7136           @llvm.experimental.constrained.sitofp.v3f64.v3i32(<3 x i32> %x,7137                                               metadata !"round.dynamic",7138                                               metadata !"fpexcept.strict") #07139  ret <3 x double> %result7140}7141 7142define <3 x float> @constrained_vector_sitofp_v3f32_v3i32(<3 x i32> %x) #0 {7143; PC64LE-LABEL: constrained_vector_sitofp_v3f32_v3i32:7144; PC64LE:       # %bb.0: # %entry7145; PC64LE-NEXT:    xxsldwi 0, 34, 34, 17146; PC64LE-NEXT:    xxswapd 1, 347147; PC64LE-NEXT:    mffprwz 3, 07148; PC64LE-NEXT:    mtfprwa 0, 37149; PC64LE-NEXT:    mffprwz 3, 17150; PC64LE-NEXT:    mtfprwa 1, 37151; PC64LE-NEXT:    xscvsxdsp 0, 07152; PC64LE-NEXT:    addis 3, 2, .LCPI161_0@toc@ha7153; PC64LE-NEXT:    addi 3, 3, .LCPI161_0@toc@l7154; PC64LE-NEXT:    xscvsxdsp 1, 17155; PC64LE-NEXT:    xscvdpspn 0, 07156; PC64LE-NEXT:    xscvdpspn 1, 17157; PC64LE-NEXT:    xxmrghw 35, 0, 17158; PC64LE-NEXT:    lxvd2x 0, 0, 37159; PC64LE-NEXT:    mfvsrwz 3, 347160; PC64LE-NEXT:    xxswapd 36, 07161; PC64LE-NEXT:    mtfprwa 0, 37162; PC64LE-NEXT:    xscvsxdsp 0, 07163; PC64LE-NEXT:    xscvdpspn 34, 07164; PC64LE-NEXT:    vperm 2, 2, 3, 47165; PC64LE-NEXT:    blr7166;7167; PC64LE9-LABEL: constrained_vector_sitofp_v3f32_v3i32:7168; PC64LE9:       # %bb.0: # %entry7169; PC64LE9-NEXT:    li 3, 47170; PC64LE9-NEXT:    vextuwrx 3, 3, 27171; PC64LE9-NEXT:    mtfprwa 0, 37172; PC64LE9-NEXT:    li 3, 07173; PC64LE9-NEXT:    vextuwrx 3, 3, 27174; PC64LE9-NEXT:    xscvsxdsp 0, 07175; PC64LE9-NEXT:    mtfprwa 1, 37176; PC64LE9-NEXT:    mfvsrwz 3, 347177; PC64LE9-NEXT:    xscvsxdsp 1, 17178; PC64LE9-NEXT:    mtfprwa 2, 37179; PC64LE9-NEXT:    addis 3, 2, .LCPI161_0@toc@ha7180; PC64LE9-NEXT:    xscvsxdsp 2, 27181; PC64LE9-NEXT:    xscvdpspn 0, 07182; PC64LE9-NEXT:    addi 3, 3, .LCPI161_0@toc@l7183; PC64LE9-NEXT:    xscvdpspn 1, 17184; PC64LE9-NEXT:    xscvdpspn 34, 27185; PC64LE9-NEXT:    xxmrghw 35, 0, 17186; PC64LE9-NEXT:    lxv 0, 0(3)7187; PC64LE9-NEXT:    xxperm 34, 35, 07188; PC64LE9-NEXT:    blr7189entry:7190  %result = call <3 x float>7191           @llvm.experimental.constrained.sitofp.v3f32.v3i32(<3 x i32> %x,7192                                               metadata !"round.dynamic",7193                                               metadata !"fpexcept.strict") #07194  ret <3 x float> %result7195}7196 7197define <3 x double> @constrained_vector_sitofp_v3f64_v3i64(<3 x i64> %x) #0 {7198; PC64LE-LABEL: constrained_vector_sitofp_v3f64_v3i64:7199; PC64LE:       # %bb.0: # %entry7200; PC64LE-NEXT:    mtfprd 0, 37201; PC64LE-NEXT:    xscvsxddp 1, 07202; PC64LE-NEXT:    mtfprd 0, 47203; PC64LE-NEXT:    xscvsxddp 2, 07204; PC64LE-NEXT:    mtfprd 0, 57205; PC64LE-NEXT:    xscvsxddp 3, 07206; PC64LE-NEXT:    blr7207;7208; PC64LE9-LABEL: constrained_vector_sitofp_v3f64_v3i64:7209; PC64LE9:       # %bb.0: # %entry7210; PC64LE9-NEXT:    mtfprd 0, 37211; PC64LE9-NEXT:    xscvsxddp 1, 07212; PC64LE9-NEXT:    mtfprd 0, 47213; PC64LE9-NEXT:    xscvsxddp 2, 07214; PC64LE9-NEXT:    mtfprd 0, 57215; PC64LE9-NEXT:    xscvsxddp 3, 07216; PC64LE9-NEXT:    blr7217entry:7218  %result = call <3 x double>7219           @llvm.experimental.constrained.sitofp.v3f64.v3i64(<3 x i64> %x,7220                                               metadata !"round.dynamic",7221                                               metadata !"fpexcept.strict") #07222  ret <3 x double> %result7223}7224 7225define <3 x float> @constrained_vector_sitofp_v3f32_v3i64(<3 x i64> %x) #0 {7226; PC64LE-LABEL: constrained_vector_sitofp_v3f32_v3i64:7227; PC64LE:       # %bb.0: # %entry7228; PC64LE-NEXT:    mtfprd 0, 47229; PC64LE-NEXT:    mtfprd 1, 37230; PC64LE-NEXT:    addis 3, 2, .LCPI163_0@toc@ha7231; PC64LE-NEXT:    addi 3, 3, .LCPI163_0@toc@l7232; PC64LE-NEXT:    xscvsxdsp 0, 07233; PC64LE-NEXT:    xscvsxdsp 1, 17234; PC64LE-NEXT:    xscvdpspn 1, 17235; PC64LE-NEXT:    xscvdpspn 0, 07236; PC64LE-NEXT:    xxmrghw 34, 0, 17237; PC64LE-NEXT:    lxvd2x 0, 0, 37238; PC64LE-NEXT:    xxswapd 35, 07239; PC64LE-NEXT:    mtfprd 0, 57240; PC64LE-NEXT:    xscvsxdsp 0, 07241; PC64LE-NEXT:    xscvdpspn 36, 07242; PC64LE-NEXT:    vperm 2, 4, 2, 37243; PC64LE-NEXT:    blr7244;7245; PC64LE9-LABEL: constrained_vector_sitofp_v3f32_v3i64:7246; PC64LE9:       # %bb.0: # %entry7247; PC64LE9-NEXT:    mtfprd 1, 47248; PC64LE9-NEXT:    mtfprd 2, 37249; PC64LE9-NEXT:    mtfprd 0, 57250; PC64LE9-NEXT:    addis 3, 2, .LCPI163_0@toc@ha7251; PC64LE9-NEXT:    xscvsxdsp 1, 17252; PC64LE9-NEXT:    xscvsxdsp 2, 27253; PC64LE9-NEXT:    xscvsxdsp 0, 07254; PC64LE9-NEXT:    addi 3, 3, .LCPI163_0@toc@l7255; PC64LE9-NEXT:    xscvdpspn 2, 27256; PC64LE9-NEXT:    xscvdpspn 1, 17257; PC64LE9-NEXT:    xscvdpspn 34, 07258; PC64LE9-NEXT:    xxmrghw 35, 1, 27259; PC64LE9-NEXT:    lxv 1, 0(3)7260; PC64LE9-NEXT:    xxperm 34, 35, 17261; PC64LE9-NEXT:    blr7262entry:7263  %result = call <3 x float>7264           @llvm.experimental.constrained.sitofp.v3f32.v3i64(<3 x i64> %x,7265                                               metadata !"round.dynamic",7266                                               metadata !"fpexcept.strict") #07267  ret <3 x float> %result7268}7269 7270define <4 x double> @constrained_vector_sitofp_v4f64_v4i32(<4 x i32> %x) #0 {7271; PC64LE-LABEL: constrained_vector_sitofp_v4f64_v4i32:7272; PC64LE:       # %bb.0: # %entry7273; PC64LE-NEXT:    xxswapd 0, 347274; PC64LE-NEXT:    xxsldwi 1, 34, 34, 17275; PC64LE-NEXT:    mffprwz 3, 07276; PC64LE-NEXT:    xxsldwi 2, 34, 34, 37277; PC64LE-NEXT:    mtfprwa 0, 37278; PC64LE-NEXT:    mffprwz 3, 17279; PC64LE-NEXT:    mtfprwa 1, 37280; PC64LE-NEXT:    xscvsxddp 0, 07281; PC64LE-NEXT:    mfvsrwz 3, 347282; PC64LE-NEXT:    xscvsxddp 1, 17283; PC64LE-NEXT:    xxmrghd 0, 1, 07284; PC64LE-NEXT:    mtfprwa 1, 37285; PC64LE-NEXT:    mffprwz 3, 27286; PC64LE-NEXT:    xxlor 34, 0, 07287; PC64LE-NEXT:    mtfprwa 2, 37288; PC64LE-NEXT:    xscvsxddp 1, 17289; PC64LE-NEXT:    xscvsxddp 2, 27290; PC64LE-NEXT:    xxmrghd 35, 2, 17291; PC64LE-NEXT:    blr7292;7293; PC64LE9-LABEL: constrained_vector_sitofp_v4f64_v4i32:7294; PC64LE9:       # %bb.0: # %entry7295; PC64LE9-NEXT:    li 3, 07296; PC64LE9-NEXT:    vextuwrx 3, 3, 27297; PC64LE9-NEXT:    mtfprwa 0, 37298; PC64LE9-NEXT:    li 3, 47299; PC64LE9-NEXT:    vextuwrx 3, 3, 27300; PC64LE9-NEXT:    xscvsxddp 0, 07301; PC64LE9-NEXT:    mtfprwa 1, 37302; PC64LE9-NEXT:    li 3, 127303; PC64LE9-NEXT:    xscvsxddp 1, 17304; PC64LE9-NEXT:    vextuwrx 3, 3, 27305; PC64LE9-NEXT:    xxmrghd 0, 1, 07306; PC64LE9-NEXT:    mtfprwa 1, 37307; PC64LE9-NEXT:    mfvsrwz 3, 347308; PC64LE9-NEXT:    mtfprwa 2, 37309; PC64LE9-NEXT:    xscvsxddp 1, 17310; PC64LE9-NEXT:    xscvsxddp 2, 27311; PC64LE9-NEXT:    xxlor 34, 0, 07312; PC64LE9-NEXT:    xxmrghd 35, 1, 27313; PC64LE9-NEXT:    blr7314entry:7315  %result = call <4 x double>7316           @llvm.experimental.constrained.sitofp.v4f64.v4i32(<4 x i32> %x,7317                                               metadata !"round.dynamic",7318                                               metadata !"fpexcept.strict") #07319  ret <4 x double> %result7320}7321 7322define <4 x float> @constrained_vector_sitofp_v4f32_v4i16(<4 x i16> %x) #0 {7323; PC64LE-LABEL: constrained_vector_sitofp_v4f32_v4i16:7324; PC64LE:       # %bb.0: # %entry7325; PC64LE-NEXT:    vspltisw 3, 87326; PC64LE-NEXT:    vmrglh 2, 2, 27327; PC64LE-NEXT:    vadduwm 3, 3, 37328; PC64LE-NEXT:    vslw 2, 2, 37329; PC64LE-NEXT:    vsraw 2, 2, 37330; PC64LE-NEXT:    xvcvsxwsp 34, 347331; PC64LE-NEXT:    blr7332;7333; PC64LE9-LABEL: constrained_vector_sitofp_v4f32_v4i16:7334; PC64LE9:       # %bb.0: # %entry7335; PC64LE9-NEXT:    vmrglh 2, 2, 27336; PC64LE9-NEXT:    vextsh2w 2, 27337; PC64LE9-NEXT:    xvcvsxwsp 34, 347338; PC64LE9-NEXT:    blr7339entry:7340  %result = call <4 x float>7341         @llvm.experimental.constrained.sitofp.v4f32.v4i16(<4 x i16> %x,7342                                               metadata !"round.dynamic",7343                                               metadata !"fpexcept.strict") #07344  ret <4 x float> %result7345}7346 7347define <4 x float> @constrained_vector_sitofp_v4f32_v4i32(<4 x i32> %x) #0 {7348; PC64LE-LABEL: constrained_vector_sitofp_v4f32_v4i32:7349; PC64LE:       # %bb.0: # %entry7350; PC64LE-NEXT:    xvcvsxwsp 34, 347351; PC64LE-NEXT:    blr7352;7353; PC64LE9-LABEL: constrained_vector_sitofp_v4f32_v4i32:7354; PC64LE9:       # %bb.0: # %entry7355; PC64LE9-NEXT:    xvcvsxwsp 34, 347356; PC64LE9-NEXT:    blr7357entry:7358  %result = call <4 x float>7359           @llvm.experimental.constrained.sitofp.v4f32.v4i32(<4 x i32> %x,7360                                               metadata !"round.dynamic",7361                                               metadata !"fpexcept.strict") #07362  ret <4 x float> %result7363}7364 7365define <4 x double> @constrained_vector_sitofp_v4f64_v4i64(<4 x i64> %x) #0 {7366; PC64LE-LABEL: constrained_vector_sitofp_v4f64_v4i64:7367; PC64LE:       # %bb.0: # %entry7368; PC64LE-NEXT:    xvcvsxddp 35, 357369; PC64LE-NEXT:    xvcvsxddp 34, 347370; PC64LE-NEXT:    blr7371;7372; PC64LE9-LABEL: constrained_vector_sitofp_v4f64_v4i64:7373; PC64LE9:       # %bb.0: # %entry7374; PC64LE9-NEXT:    xvcvsxddp 35, 357375; PC64LE9-NEXT:    xvcvsxddp 34, 347376; PC64LE9-NEXT:    blr7377entry:7378  %result = call <4 x double>7379           @llvm.experimental.constrained.sitofp.v4f64.v4i64(<4 x i64> %x,7380                                               metadata !"round.dynamic",7381                                               metadata !"fpexcept.strict") #07382  ret <4 x double> %result7383}7384 7385define <4 x float> @constrained_vector_sitofp_v4f32_v4i64(<4 x i64> %x) #0 {7386; PC64LE-LABEL: constrained_vector_sitofp_v4f32_v4i64:7387; PC64LE:       # %bb.0: # %entry7388; PC64LE-NEXT:    mfvsrd 3, 347389; PC64LE-NEXT:    xxswapd 0, 347390; PC64LE-NEXT:    xxswapd 1, 357391; PC64LE-NEXT:    mtfprd 2, 37392; PC64LE-NEXT:    mfvsrd 3, 357393; PC64LE-NEXT:    mtfprd 3, 37394; PC64LE-NEXT:    mffprd 3, 07395; PC64LE-NEXT:    xscvsxdsp 2, 27396; PC64LE-NEXT:    mtfprd 0, 37397; PC64LE-NEXT:    mffprd 3, 17398; PC64LE-NEXT:    xscvsxdsp 3, 37399; PC64LE-NEXT:    mtfprd 1, 37400; PC64LE-NEXT:    xscvsxdsp 0, 07401; PC64LE-NEXT:    xscvsxdsp 1, 17402; PC64LE-NEXT:    xxmrghd 2, 3, 27403; PC64LE-NEXT:    xvcvdpsp 34, 27404; PC64LE-NEXT:    xxmrghd 0, 1, 07405; PC64LE-NEXT:    xvcvdpsp 35, 07406; PC64LE-NEXT:    vmrgew 2, 2, 37407; PC64LE-NEXT:    blr7408;7409; PC64LE9-LABEL: constrained_vector_sitofp_v4f32_v4i64:7410; PC64LE9:       # %bb.0: # %entry7411; PC64LE9-NEXT:    mfvsrld 3, 347412; PC64LE9-NEXT:    mtfprd 0, 37413; PC64LE9-NEXT:    mfvsrld 3, 357414; PC64LE9-NEXT:    xscvsxdsp 0, 07415; PC64LE9-NEXT:    mtfprd 1, 37416; PC64LE9-NEXT:    mfvsrd 3, 347417; PC64LE9-NEXT:    xscvsxdsp 1, 17418; PC64LE9-NEXT:    xxmrghd 0, 1, 07419; PC64LE9-NEXT:    xvcvdpsp 36, 07420; PC64LE9-NEXT:    mtfprd 0, 37421; PC64LE9-NEXT:    mfvsrd 3, 357422; PC64LE9-NEXT:    mtfprd 1, 37423; PC64LE9-NEXT:    xscvsxdsp 0, 07424; PC64LE9-NEXT:    xscvsxdsp 1, 17425; PC64LE9-NEXT:    xxmrghd 0, 1, 07426; PC64LE9-NEXT:    xvcvdpsp 34, 07427; PC64LE9-NEXT:    vmrgew 2, 2, 47428; PC64LE9-NEXT:    blr7429entry:7430  %result = call <4 x float>7431           @llvm.experimental.constrained.sitofp.v4f32.v4i64(<4 x i64> %x,7432                                               metadata !"round.dynamic",7433                                               metadata !"fpexcept.strict") #07434  ret <4 x float> %result7435}7436 7437define <1 x double> @constrained_vector_uitofp_v1f64_v1i32(<1 x i32> %x) #0 {7438; PC64LE-LABEL: constrained_vector_uitofp_v1f64_v1i32:7439; PC64LE:       # %bb.0: # %entry7440; PC64LE-NEXT:    mtfprwz 0, 37441; PC64LE-NEXT:    xscvuxddp 1, 07442; PC64LE-NEXT:    blr7443;7444; PC64LE9-LABEL: constrained_vector_uitofp_v1f64_v1i32:7445; PC64LE9:       # %bb.0: # %entry7446; PC64LE9-NEXT:    mtfprwz 0, 37447; PC64LE9-NEXT:    xscvuxddp 1, 07448; PC64LE9-NEXT:    blr7449entry:7450  %result = call <1 x double>7451           @llvm.experimental.constrained.uitofp.v1f64.v1i32(<1 x i32> %x,7452                                               metadata !"round.dynamic",7453                                               metadata !"fpexcept.strict") #07454  ret <1 x double> %result7455}7456 7457define <1 x float> @constrained_vector_uitofp_v1f32_v1i32(<1 x i32> %x) #0 {7458; PC64LE-LABEL: constrained_vector_uitofp_v1f32_v1i32:7459; PC64LE:       # %bb.0: # %entry7460; PC64LE-NEXT:    mtfprwz 0, 37461; PC64LE-NEXT:    xscvuxdsp 1, 07462; PC64LE-NEXT:    blr7463;7464; PC64LE9-LABEL: constrained_vector_uitofp_v1f32_v1i32:7465; PC64LE9:       # %bb.0: # %entry7466; PC64LE9-NEXT:    mtfprwz 0, 37467; PC64LE9-NEXT:    xscvuxdsp 1, 07468; PC64LE9-NEXT:    blr7469entry:7470  %result = call <1 x float>7471           @llvm.experimental.constrained.uitofp.v1f32.v1i32(<1 x i32> %x,7472                                               metadata !"round.dynamic",7473                                               metadata !"fpexcept.strict") #07474  ret <1 x float> %result7475}7476 7477define <1 x double> @constrained_vector_uitofp_v1f64_v1i64(<1 x i64> %x) #0 {7478; PC64LE-LABEL: constrained_vector_uitofp_v1f64_v1i64:7479; PC64LE:       # %bb.0: # %entry7480; PC64LE-NEXT:    mtfprd 0, 37481; PC64LE-NEXT:    xscvuxddp 1, 07482; PC64LE-NEXT:    blr7483;7484; PC64LE9-LABEL: constrained_vector_uitofp_v1f64_v1i64:7485; PC64LE9:       # %bb.0: # %entry7486; PC64LE9-NEXT:    mtfprd 0, 37487; PC64LE9-NEXT:    xscvuxddp 1, 07488; PC64LE9-NEXT:    blr7489entry:7490  %result = call <1 x double>7491           @llvm.experimental.constrained.uitofp.v1f64.v1i64(<1 x i64> %x,7492                                               metadata !"round.dynamic",7493                                               metadata !"fpexcept.strict") #07494  ret <1 x double> %result7495}7496 7497define <1 x float> @constrained_vector_uitofp_v1f32_v1i64(<1 x i64> %x) #0 {7498; PC64LE-LABEL: constrained_vector_uitofp_v1f32_v1i64:7499; PC64LE:       # %bb.0: # %entry7500; PC64LE-NEXT:    mtfprd 0, 37501; PC64LE-NEXT:    xscvuxdsp 1, 07502; PC64LE-NEXT:    blr7503;7504; PC64LE9-LABEL: constrained_vector_uitofp_v1f32_v1i64:7505; PC64LE9:       # %bb.0: # %entry7506; PC64LE9-NEXT:    mtfprd 0, 37507; PC64LE9-NEXT:    xscvuxdsp 1, 07508; PC64LE9-NEXT:    blr7509entry:7510  %result = call <1 x float>7511           @llvm.experimental.constrained.uitofp.v1f32.v1i64(<1 x i64> %x,7512                                               metadata !"round.dynamic",7513                                               metadata !"fpexcept.strict") #07514  ret <1 x float> %result7515}7516 7517define <2 x double> @constrained_vector_uitofp_v2f64_v2i16(<2 x i16> %x) #0 {7518; PC64LE-LABEL: constrained_vector_uitofp_v2f64_v2i16:7519; PC64LE:       # %bb.0: # %entry7520; PC64LE-NEXT:    addis 3, 2, .LCPI173_0@toc@ha7521; PC64LE-NEXT:    xxlxor 36, 36, 367522; PC64LE-NEXT:    addi 3, 3, .LCPI173_0@toc@l7523; PC64LE-NEXT:    lxvd2x 0, 0, 37524; PC64LE-NEXT:    xxswapd 35, 07525; PC64LE-NEXT:    vperm 2, 4, 2, 37526; PC64LE-NEXT:    xvcvuxddp 34, 347527; PC64LE-NEXT:    blr7528;7529; PC64LE9-LABEL: constrained_vector_uitofp_v2f64_v2i16:7530; PC64LE9:       # %bb.0: # %entry7531; PC64LE9-NEXT:    addis 3, 2, .LCPI173_0@toc@ha7532; PC64LE9-NEXT:    xxlxor 1, 1, 17533; PC64LE9-NEXT:    addi 3, 3, .LCPI173_0@toc@l7534; PC64LE9-NEXT:    lxv 0, 0(3)7535; PC64LE9-NEXT:    xxperm 34, 1, 07536; PC64LE9-NEXT:    xvcvuxddp 34, 347537; PC64LE9-NEXT:    blr7538entry:7539  %result = call <2 x double>7540           @llvm.experimental.constrained.uitofp.v2f64.v2i16(<2 x i16> %x,7541                                               metadata !"round.dynamic",7542                                               metadata !"fpexcept.strict") #07543  ret <2 x double> %result7544}7545 7546define <2 x double> @constrained_vector_uitofp_v2f64_v2i32(<2 x i32> %x) #0 {7547; PC64LE-LABEL: constrained_vector_uitofp_v2f64_v2i32:7548; PC64LE:       # %bb.0: # %entry7549; PC64LE-NEXT:    xxswapd 0, 347550; PC64LE-NEXT:    xxsldwi 1, 34, 34, 17551; PC64LE-NEXT:    mffprwz 3, 07552; PC64LE-NEXT:    mtfprwz 0, 37553; PC64LE-NEXT:    mffprwz 3, 17554; PC64LE-NEXT:    mtfprwz 1, 37555; PC64LE-NEXT:    xscvuxddp 0, 07556; PC64LE-NEXT:    xscvuxddp 1, 17557; PC64LE-NEXT:    xxmrghd 34, 1, 07558; PC64LE-NEXT:    blr7559;7560; PC64LE9-LABEL: constrained_vector_uitofp_v2f64_v2i32:7561; PC64LE9:       # %bb.0: # %entry7562; PC64LE9-NEXT:    li 3, 07563; PC64LE9-NEXT:    vextuwrx 3, 3, 27564; PC64LE9-NEXT:    mtfprwz 0, 37565; PC64LE9-NEXT:    li 3, 47566; PC64LE9-NEXT:    vextuwrx 3, 3, 27567; PC64LE9-NEXT:    xscvuxddp 0, 07568; PC64LE9-NEXT:    mtfprwz 1, 37569; PC64LE9-NEXT:    xscvuxddp 1, 17570; PC64LE9-NEXT:    xxmrghd 34, 1, 07571; PC64LE9-NEXT:    blr7572entry:7573  %result = call <2 x double>7574           @llvm.experimental.constrained.uitofp.v2f64.v2i32(<2 x i32> %x,7575                                               metadata !"round.dynamic",7576                                               metadata !"fpexcept.strict") #07577  ret <2 x double> %result7578}7579 7580define <2 x float> @constrained_vector_uitofp_v2f32_v2i32(<2 x i32> %x) #0 {7581; PC64LE-LABEL: constrained_vector_uitofp_v2f32_v2i32:7582; PC64LE:       # %bb.0: # %entry7583; PC64LE-NEXT:    xxswapd 0, 347584; PC64LE-NEXT:    xxsldwi 1, 34, 34, 17585; PC64LE-NEXT:    mffprwz 3, 07586; PC64LE-NEXT:    mtfprwz 0, 37587; PC64LE-NEXT:    mffprwz 3, 17588; PC64LE-NEXT:    mtfprwz 1, 37589; PC64LE-NEXT:    xscvuxdsp 0, 07590; PC64LE-NEXT:    xscvuxdsp 1, 17591; PC64LE-NEXT:    xscvdpspn 0, 07592; PC64LE-NEXT:    xscvdpspn 1, 17593; PC64LE-NEXT:    xxmrghw 34, 1, 07594; PC64LE-NEXT:    blr7595;7596; PC64LE9-LABEL: constrained_vector_uitofp_v2f32_v2i32:7597; PC64LE9:       # %bb.0: # %entry7598; PC64LE9-NEXT:    li 3, 07599; PC64LE9-NEXT:    vextuwrx 3, 3, 27600; PC64LE9-NEXT:    mtfprwz 0, 37601; PC64LE9-NEXT:    li 3, 47602; PC64LE9-NEXT:    vextuwrx 3, 3, 27603; PC64LE9-NEXT:    xscvuxdsp 0, 07604; PC64LE9-NEXT:    mtfprwz 1, 37605; PC64LE9-NEXT:    xscvuxdsp 1, 17606; PC64LE9-NEXT:    xscvdpspn 0, 07607; PC64LE9-NEXT:    xscvdpspn 1, 17608; PC64LE9-NEXT:    xxmrghw 34, 1, 07609; PC64LE9-NEXT:    blr7610entry:7611  %result = call <2 x float>7612           @llvm.experimental.constrained.uitofp.v2f32.v2i32(<2 x i32> %x,7613                                               metadata !"round.dynamic",7614                                               metadata !"fpexcept.strict") #07615  ret <2 x float> %result7616}7617 7618define <2 x double> @constrained_vector_uitofp_v2f64_v2i64(<2 x i64> %x) #0 {7619; PC64LE-LABEL: constrained_vector_uitofp_v2f64_v2i64:7620; PC64LE:       # %bb.0: # %entry7621; PC64LE-NEXT:    xvcvuxddp 34, 347622; PC64LE-NEXT:    blr7623;7624; PC64LE9-LABEL: constrained_vector_uitofp_v2f64_v2i64:7625; PC64LE9:       # %bb.0: # %entry7626; PC64LE9-NEXT:    xvcvuxddp 34, 347627; PC64LE9-NEXT:    blr7628entry:7629  %result = call <2 x double>7630           @llvm.experimental.constrained.uitofp.v2f64.v2i64(<2 x i64> %x,7631                                               metadata !"round.dynamic",7632                                               metadata !"fpexcept.strict") #07633  ret <2 x double> %result7634}7635 7636define <2 x float> @constrained_vector_uitofp_v2f32_v2i64(<2 x i64> %x) #0 {7637; PC64LE-LABEL: constrained_vector_uitofp_v2f32_v2i64:7638; PC64LE:       # %bb.0: # %entry7639; PC64LE-NEXT:    mfvsrd 3, 347640; PC64LE-NEXT:    xxswapd 0, 347641; PC64LE-NEXT:    mtfprd 1, 37642; PC64LE-NEXT:    mffprd 3, 07643; PC64LE-NEXT:    mtfprd 0, 37644; PC64LE-NEXT:    xscvuxdsp 1, 17645; PC64LE-NEXT:    xscvuxdsp 0, 07646; PC64LE-NEXT:    xscvdpspn 1, 17647; PC64LE-NEXT:    xscvdpspn 0, 07648; PC64LE-NEXT:    xxmrghw 34, 1, 07649; PC64LE-NEXT:    blr7650;7651; PC64LE9-LABEL: constrained_vector_uitofp_v2f32_v2i64:7652; PC64LE9:       # %bb.0: # %entry7653; PC64LE9-NEXT:    mfvsrld 3, 347654; PC64LE9-NEXT:    mtfprd 0, 37655; PC64LE9-NEXT:    mfvsrd 3, 347656; PC64LE9-NEXT:    mtfprd 1, 37657; PC64LE9-NEXT:    xscvuxdsp 0, 07658; PC64LE9-NEXT:    xscvuxdsp 1, 17659; PC64LE9-NEXT:    xscvdpspn 0, 07660; PC64LE9-NEXT:    xscvdpspn 1, 17661; PC64LE9-NEXT:    xxmrghw 34, 1, 07662; PC64LE9-NEXT:    blr7663entry:7664  %result = call <2 x float>7665           @llvm.experimental.constrained.uitofp.v2f32.v2i64(<2 x i64> %x,7666                                               metadata !"round.dynamic",7667                                               metadata !"fpexcept.strict") #07668  ret <2 x float> %result7669}7670 7671define <3 x double> @constrained_vector_uitofp_v3f64_v3i32(<3 x i32> %x) #0 {7672; PC64LE-LABEL: constrained_vector_uitofp_v3f64_v3i32:7673; PC64LE:       # %bb.0: # %entry7674; PC64LE-NEXT:    xxswapd 0, 347675; PC64LE-NEXT:    xxsldwi 2, 34, 34, 17676; PC64LE-NEXT:    mffprwz 3, 07677; PC64LE-NEXT:    mtfprwz 0, 37678; PC64LE-NEXT:    mffprwz 3, 27679; PC64LE-NEXT:    xscvuxddp 1, 07680; PC64LE-NEXT:    mtfprwz 0, 37681; PC64LE-NEXT:    mfvsrwz 3, 347682; PC64LE-NEXT:    xscvuxddp 2, 07683; PC64LE-NEXT:    mtfprwz 0, 37684; PC64LE-NEXT:    xscvuxddp 3, 07685; PC64LE-NEXT:    blr7686;7687; PC64LE9-LABEL: constrained_vector_uitofp_v3f64_v3i32:7688; PC64LE9:       # %bb.0: # %entry7689; PC64LE9-NEXT:    li 3, 07690; PC64LE9-NEXT:    vextuwrx 3, 3, 27691; PC64LE9-NEXT:    mtfprwz 0, 37692; PC64LE9-NEXT:    li 3, 47693; PC64LE9-NEXT:    vextuwrx 3, 3, 27694; PC64LE9-NEXT:    xscvuxddp 1, 07695; PC64LE9-NEXT:    mtfprwz 0, 37696; PC64LE9-NEXT:    mfvsrwz 3, 347697; PC64LE9-NEXT:    xscvuxddp 2, 07698; PC64LE9-NEXT:    mtfprwz 0, 37699; PC64LE9-NEXT:    xscvuxddp 3, 07700; PC64LE9-NEXT:    blr7701entry:7702  %result = call <3 x double>7703           @llvm.experimental.constrained.uitofp.v3f64.v3i32(<3 x i32> %x,7704                                               metadata !"round.dynamic",7705                                               metadata !"fpexcept.strict") #07706  ret <3 x double> %result7707}7708 7709define <3 x float> @constrained_vector_uitofp_v3f32_v3i32(<3 x i32> %x) #0 {7710; PC64LE-LABEL: constrained_vector_uitofp_v3f32_v3i32:7711; PC64LE:       # %bb.0: # %entry7712; PC64LE-NEXT:    xxsldwi 0, 34, 34, 17713; PC64LE-NEXT:    xxswapd 1, 347714; PC64LE-NEXT:    mffprwz 3, 07715; PC64LE-NEXT:    mtfprwz 0, 37716; PC64LE-NEXT:    mffprwz 3, 17717; PC64LE-NEXT:    mtfprwz 1, 37718; PC64LE-NEXT:    xscvuxdsp 0, 07719; PC64LE-NEXT:    addis 3, 2, .LCPI179_0@toc@ha7720; PC64LE-NEXT:    addi 3, 3, .LCPI179_0@toc@l7721; PC64LE-NEXT:    xscvuxdsp 1, 17722; PC64LE-NEXT:    xscvdpspn 0, 07723; PC64LE-NEXT:    xscvdpspn 1, 17724; PC64LE-NEXT:    xxmrghw 35, 0, 17725; PC64LE-NEXT:    lxvd2x 0, 0, 37726; PC64LE-NEXT:    mfvsrwz 3, 347727; PC64LE-NEXT:    xxswapd 36, 07728; PC64LE-NEXT:    mtfprwz 0, 37729; PC64LE-NEXT:    xscvuxdsp 0, 07730; PC64LE-NEXT:    xscvdpspn 34, 07731; PC64LE-NEXT:    vperm 2, 2, 3, 47732; PC64LE-NEXT:    blr7733;7734; PC64LE9-LABEL: constrained_vector_uitofp_v3f32_v3i32:7735; PC64LE9:       # %bb.0: # %entry7736; PC64LE9-NEXT:    li 3, 47737; PC64LE9-NEXT:    vextuwrx 3, 3, 27738; PC64LE9-NEXT:    mtfprwz 0, 37739; PC64LE9-NEXT:    li 3, 07740; PC64LE9-NEXT:    vextuwrx 3, 3, 27741; PC64LE9-NEXT:    xscvuxdsp 0, 07742; PC64LE9-NEXT:    mtfprwz 1, 37743; PC64LE9-NEXT:    mfvsrwz 3, 347744; PC64LE9-NEXT:    xscvuxdsp 1, 17745; PC64LE9-NEXT:    mtfprwz 2, 37746; PC64LE9-NEXT:    addis 3, 2, .LCPI179_0@toc@ha7747; PC64LE9-NEXT:    xscvuxdsp 2, 27748; PC64LE9-NEXT:    xscvdpspn 0, 07749; PC64LE9-NEXT:    addi 3, 3, .LCPI179_0@toc@l7750; PC64LE9-NEXT:    xscvdpspn 1, 17751; PC64LE9-NEXT:    xscvdpspn 34, 27752; PC64LE9-NEXT:    xxmrghw 35, 0, 17753; PC64LE9-NEXT:    lxv 0, 0(3)7754; PC64LE9-NEXT:    xxperm 34, 35, 07755; PC64LE9-NEXT:    blr7756entry:7757  %result = call <3 x float>7758           @llvm.experimental.constrained.uitofp.v3f32.v3i32(<3 x i32> %x,7759                                               metadata !"round.dynamic",7760                                               metadata !"fpexcept.strict") #07761  ret <3 x float> %result7762}7763 7764define <3 x double> @constrained_vector_uitofp_v3f64_v3i64(<3 x i64> %x) #0 {7765; PC64LE-LABEL: constrained_vector_uitofp_v3f64_v3i64:7766; PC64LE:       # %bb.0: # %entry7767; PC64LE-NEXT:    mtfprd 0, 37768; PC64LE-NEXT:    xscvuxddp 1, 07769; PC64LE-NEXT:    mtfprd 0, 47770; PC64LE-NEXT:    xscvuxddp 2, 07771; PC64LE-NEXT:    mtfprd 0, 57772; PC64LE-NEXT:    xscvuxddp 3, 07773; PC64LE-NEXT:    blr7774;7775; PC64LE9-LABEL: constrained_vector_uitofp_v3f64_v3i64:7776; PC64LE9:       # %bb.0: # %entry7777; PC64LE9-NEXT:    mtfprd 0, 37778; PC64LE9-NEXT:    xscvuxddp 1, 07779; PC64LE9-NEXT:    mtfprd 0, 47780; PC64LE9-NEXT:    xscvuxddp 2, 07781; PC64LE9-NEXT:    mtfprd 0, 57782; PC64LE9-NEXT:    xscvuxddp 3, 07783; PC64LE9-NEXT:    blr7784entry:7785  %result = call <3 x double>7786           @llvm.experimental.constrained.uitofp.v3f64.v3i64(<3 x i64> %x,7787                                               metadata !"round.dynamic",7788                                               metadata !"fpexcept.strict") #07789  ret <3 x double> %result7790}7791 7792define <3 x float> @constrained_vector_uitofp_v3f32_v3i64(<3 x i64> %x) #0 {7793; PC64LE-LABEL: constrained_vector_uitofp_v3f32_v3i64:7794; PC64LE:       # %bb.0: # %entry7795; PC64LE-NEXT:    mtfprd 0, 47796; PC64LE-NEXT:    mtfprd 1, 37797; PC64LE-NEXT:    addis 3, 2, .LCPI181_0@toc@ha7798; PC64LE-NEXT:    addi 3, 3, .LCPI181_0@toc@l7799; PC64LE-NEXT:    xscvuxdsp 0, 07800; PC64LE-NEXT:    xscvuxdsp 1, 17801; PC64LE-NEXT:    xscvdpspn 1, 17802; PC64LE-NEXT:    xscvdpspn 0, 07803; PC64LE-NEXT:    xxmrghw 34, 0, 17804; PC64LE-NEXT:    lxvd2x 0, 0, 37805; PC64LE-NEXT:    xxswapd 35, 07806; PC64LE-NEXT:    mtfprd 0, 57807; PC64LE-NEXT:    xscvuxdsp 0, 07808; PC64LE-NEXT:    xscvdpspn 36, 07809; PC64LE-NEXT:    vperm 2, 4, 2, 37810; PC64LE-NEXT:    blr7811;7812; PC64LE9-LABEL: constrained_vector_uitofp_v3f32_v3i64:7813; PC64LE9:       # %bb.0: # %entry7814; PC64LE9-NEXT:    mtfprd 1, 47815; PC64LE9-NEXT:    mtfprd 2, 37816; PC64LE9-NEXT:    mtfprd 0, 57817; PC64LE9-NEXT:    addis 3, 2, .LCPI181_0@toc@ha7818; PC64LE9-NEXT:    xscvuxdsp 1, 17819; PC64LE9-NEXT:    xscvuxdsp 2, 27820; PC64LE9-NEXT:    xscvuxdsp 0, 07821; PC64LE9-NEXT:    addi 3, 3, .LCPI181_0@toc@l7822; PC64LE9-NEXT:    xscvdpspn 2, 27823; PC64LE9-NEXT:    xscvdpspn 1, 17824; PC64LE9-NEXT:    xscvdpspn 34, 07825; PC64LE9-NEXT:    xxmrghw 35, 1, 27826; PC64LE9-NEXT:    lxv 1, 0(3)7827; PC64LE9-NEXT:    xxperm 34, 35, 17828; PC64LE9-NEXT:    blr7829entry:7830  %result = call <3 x float>7831           @llvm.experimental.constrained.uitofp.v3f32.v3i64(<3 x i64> %x,7832                                               metadata !"round.dynamic",7833                                               metadata !"fpexcept.strict") #07834  ret <3 x float> %result7835}7836 7837define <4 x double> @constrained_vector_uitofp_v4f64_v4i32(<4 x i32> %x) #0 {7838; PC64LE-LABEL: constrained_vector_uitofp_v4f64_v4i32:7839; PC64LE:       # %bb.0: # %entry7840; PC64LE-NEXT:    xxswapd 0, 347841; PC64LE-NEXT:    xxsldwi 1, 34, 34, 17842; PC64LE-NEXT:    mffprwz 3, 07843; PC64LE-NEXT:    xxsldwi 2, 34, 34, 37844; PC64LE-NEXT:    mtfprwz 0, 37845; PC64LE-NEXT:    mffprwz 3, 17846; PC64LE-NEXT:    mtfprwz 1, 37847; PC64LE-NEXT:    xscvuxddp 0, 07848; PC64LE-NEXT:    mfvsrwz 3, 347849; PC64LE-NEXT:    xscvuxddp 1, 17850; PC64LE-NEXT:    xxmrghd 0, 1, 07851; PC64LE-NEXT:    mtfprwz 1, 37852; PC64LE-NEXT:    mffprwz 3, 27853; PC64LE-NEXT:    xxlor 34, 0, 07854; PC64LE-NEXT:    mtfprwz 2, 37855; PC64LE-NEXT:    xscvuxddp 1, 17856; PC64LE-NEXT:    xscvuxddp 2, 27857; PC64LE-NEXT:    xxmrghd 35, 2, 17858; PC64LE-NEXT:    blr7859;7860; PC64LE9-LABEL: constrained_vector_uitofp_v4f64_v4i32:7861; PC64LE9:       # %bb.0: # %entry7862; PC64LE9-NEXT:    li 3, 07863; PC64LE9-NEXT:    vextuwrx 3, 3, 27864; PC64LE9-NEXT:    mtfprwz 0, 37865; PC64LE9-NEXT:    li 3, 47866; PC64LE9-NEXT:    vextuwrx 3, 3, 27867; PC64LE9-NEXT:    xscvuxddp 0, 07868; PC64LE9-NEXT:    mtfprwz 1, 37869; PC64LE9-NEXT:    li 3, 127870; PC64LE9-NEXT:    xscvuxddp 1, 17871; PC64LE9-NEXT:    vextuwrx 3, 3, 27872; PC64LE9-NEXT:    xxmrghd 0, 1, 07873; PC64LE9-NEXT:    mtfprwz 1, 37874; PC64LE9-NEXT:    mfvsrwz 3, 347875; PC64LE9-NEXT:    mtfprwz 2, 37876; PC64LE9-NEXT:    xscvuxddp 1, 17877; PC64LE9-NEXT:    xscvuxddp 2, 27878; PC64LE9-NEXT:    xxlor 34, 0, 07879; PC64LE9-NEXT:    xxmrghd 35, 1, 27880; PC64LE9-NEXT:    blr7881entry:7882  %result = call <4 x double>7883           @llvm.experimental.constrained.uitofp.v4f64.v4i32(<4 x i32> %x,7884                                               metadata !"round.dynamic",7885                                               metadata !"fpexcept.strict") #07886  ret <4 x double> %result7887}7888 7889define <4 x float> @constrained_vector_uitofp_v4f32_v4i16(<4 x i16> %x) #0 {7890; PC64LE-LABEL: constrained_vector_uitofp_v4f32_v4i16:7891; PC64LE:       # %bb.0: # %entry7892; PC64LE-NEXT:    xxlxor 35, 35, 357893; PC64LE-NEXT:    vmrglh 2, 3, 27894; PC64LE-NEXT:    xvcvuxwsp 34, 347895; PC64LE-NEXT:    blr7896;7897; PC64LE9-LABEL: constrained_vector_uitofp_v4f32_v4i16:7898; PC64LE9:       # %bb.0: # %entry7899; PC64LE9-NEXT:    xxlxor 35, 35, 357900; PC64LE9-NEXT:    vmrglh 2, 3, 27901; PC64LE9-NEXT:    xvcvuxwsp 34, 347902; PC64LE9-NEXT:    blr7903entry:7904  %result = call <4 x float>7905         @llvm.experimental.constrained.uitofp.v4f32.v4i16(<4 x i16> %x,7906                                               metadata !"round.dynamic",7907                                               metadata !"fpexcept.strict") #07908  ret <4 x float> %result7909}7910 7911define <4 x float> @constrained_vector_uitofp_v4f32_v4i32(<4 x i32> %x) #0 {7912; PC64LE-LABEL: constrained_vector_uitofp_v4f32_v4i32:7913; PC64LE:       # %bb.0: # %entry7914; PC64LE-NEXT:    xvcvuxwsp 34, 347915; PC64LE-NEXT:    blr7916;7917; PC64LE9-LABEL: constrained_vector_uitofp_v4f32_v4i32:7918; PC64LE9:       # %bb.0: # %entry7919; PC64LE9-NEXT:    xvcvuxwsp 34, 347920; PC64LE9-NEXT:    blr7921entry:7922  %result = call <4 x float>7923           @llvm.experimental.constrained.uitofp.v4f32.v4i32(<4 x i32> %x,7924                                               metadata !"round.dynamic",7925                                               metadata !"fpexcept.strict") #07926  ret <4 x float> %result7927}7928 7929define <4 x double> @constrained_vector_uitofp_v4f64_v4i64(<4 x i64> %x) #0 {7930; PC64LE-LABEL: constrained_vector_uitofp_v4f64_v4i64:7931; PC64LE:       # %bb.0: # %entry7932; PC64LE-NEXT:    xvcvuxddp 35, 357933; PC64LE-NEXT:    xvcvuxddp 34, 347934; PC64LE-NEXT:    blr7935;7936; PC64LE9-LABEL: constrained_vector_uitofp_v4f64_v4i64:7937; PC64LE9:       # %bb.0: # %entry7938; PC64LE9-NEXT:    xvcvuxddp 35, 357939; PC64LE9-NEXT:    xvcvuxddp 34, 347940; PC64LE9-NEXT:    blr7941entry:7942  %result = call <4 x double>7943           @llvm.experimental.constrained.uitofp.v4f64.v4i64(<4 x i64> %x,7944                                               metadata !"round.dynamic",7945                                               metadata !"fpexcept.strict") #07946  ret <4 x double> %result7947}7948 7949define <4 x float> @constrained_vector_uitofp_v4f32_v4i64(<4 x i64> %x) #0 {7950; PC64LE-LABEL: constrained_vector_uitofp_v4f32_v4i64:7951; PC64LE:       # %bb.0: # %entry7952; PC64LE-NEXT:    mfvsrd 3, 347953; PC64LE-NEXT:    xxswapd 0, 347954; PC64LE-NEXT:    xxswapd 1, 357955; PC64LE-NEXT:    mtfprd 2, 37956; PC64LE-NEXT:    mfvsrd 3, 357957; PC64LE-NEXT:    mtfprd 3, 37958; PC64LE-NEXT:    mffprd 3, 07959; PC64LE-NEXT:    xscvuxdsp 2, 27960; PC64LE-NEXT:    mtfprd 0, 37961; PC64LE-NEXT:    mffprd 3, 17962; PC64LE-NEXT:    xscvuxdsp 3, 37963; PC64LE-NEXT:    mtfprd 1, 37964; PC64LE-NEXT:    xscvuxdsp 0, 07965; PC64LE-NEXT:    xscvuxdsp 1, 17966; PC64LE-NEXT:    xxmrghd 2, 3, 27967; PC64LE-NEXT:    xvcvdpsp 34, 27968; PC64LE-NEXT:    xxmrghd 0, 1, 07969; PC64LE-NEXT:    xvcvdpsp 35, 07970; PC64LE-NEXT:    vmrgew 2, 2, 37971; PC64LE-NEXT:    blr7972;7973; PC64LE9-LABEL: constrained_vector_uitofp_v4f32_v4i64:7974; PC64LE9:       # %bb.0: # %entry7975; PC64LE9-NEXT:    mfvsrld 3, 347976; PC64LE9-NEXT:    mtfprd 0, 37977; PC64LE9-NEXT:    mfvsrld 3, 357978; PC64LE9-NEXT:    xscvuxdsp 0, 07979; PC64LE9-NEXT:    mtfprd 1, 37980; PC64LE9-NEXT:    mfvsrd 3, 347981; PC64LE9-NEXT:    xscvuxdsp 1, 17982; PC64LE9-NEXT:    xxmrghd 0, 1, 07983; PC64LE9-NEXT:    xvcvdpsp 36, 07984; PC64LE9-NEXT:    mtfprd 0, 37985; PC64LE9-NEXT:    mfvsrd 3, 357986; PC64LE9-NEXT:    mtfprd 1, 37987; PC64LE9-NEXT:    xscvuxdsp 0, 07988; PC64LE9-NEXT:    xscvuxdsp 1, 17989; PC64LE9-NEXT:    xxmrghd 0, 1, 07990; PC64LE9-NEXT:    xvcvdpsp 34, 07991; PC64LE9-NEXT:    vmrgew 2, 2, 47992; PC64LE9-NEXT:    blr7993entry:7994  %result = call <4 x float>7995           @llvm.experimental.constrained.uitofp.v4f32.v4i64(<4 x i64> %x,7996                                               metadata !"round.dynamic",7997                                               metadata !"fpexcept.strict") #07998  ret <4 x float> %result7999}8000 8001define <1 x float> @constrained_vector_tan_v1f32(<1 x float> %x) #0 {8002; PC64LE-LABEL: constrained_vector_tan_v1f32:8003; PC64LE:       # %bb.0: # %entry8004; PC64LE-NEXT:    mflr 08005; PC64LE-NEXT:    stdu 1, -32(1)8006; PC64LE-NEXT:    std 0, 48(1)8007; PC64LE-NEXT:    bl tanf8008; PC64LE-NEXT:    nop8009; PC64LE-NEXT:    addi 1, 1, 328010; PC64LE-NEXT:    ld 0, 16(1)8011; PC64LE-NEXT:    mtlr 08012; PC64LE-NEXT:    blr8013;8014; PC64LE9-LABEL: constrained_vector_tan_v1f32:8015; PC64LE9:       # %bb.0: # %entry8016; PC64LE9-NEXT:    mflr 08017; PC64LE9-NEXT:    stdu 1, -32(1)8018; PC64LE9-NEXT:    std 0, 48(1)8019; PC64LE9-NEXT:    bl tanf8020; PC64LE9-NEXT:    nop8021; PC64LE9-NEXT:    addi 1, 1, 328022; PC64LE9-NEXT:    ld 0, 16(1)8023; PC64LE9-NEXT:    mtlr 08024; PC64LE9-NEXT:    blr8025entry:8026  %tan = call <1 x float> @llvm.experimental.constrained.tan.v1f32(8027                             <1 x float> %x,8028                             metadata !"round.dynamic",8029                             metadata !"fpexcept.strict") #18030  ret <1 x float> %tan8031}8032 8033define <2 x double> @constrained_vector_tan_v2f64(<2 x double> %x) #0 {8034; PC64LE-LABEL: constrained_vector_tan_v2f64:8035; PC64LE:       # %bb.0: # %entry8036; PC64LE-NEXT:    mflr 08037; PC64LE-NEXT:    stdu 1, -80(1)8038; PC64LE-NEXT:    li 3, 488039; PC64LE-NEXT:    std 0, 96(1)8040; PC64LE-NEXT:    stxvd2x 62, 1, 3 # 16-byte Folded Spill8041; PC64LE-NEXT:    li 3, 648042; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill8043; PC64LE-NEXT:    vmr 31, 28044; PC64LE-NEXT:    xxlor 1, 63, 638045; PC64LE-NEXT:    bl tan8046; PC64LE-NEXT:    nop8047; PC64LE-NEXT:    xxlor 62, 1, 18048; PC64LE-NEXT:    xxswapd 1, 638049; PC64LE-NEXT:    bl tan8050; PC64LE-NEXT:    nop8051; PC64LE-NEXT:    li 3, 648052; PC64LE-NEXT:    xxmrghd 34, 62, 18053; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload8054; PC64LE-NEXT:    li 3, 488055; PC64LE-NEXT:    lxvd2x 62, 1, 3 # 16-byte Folded Reload8056; PC64LE-NEXT:    addi 1, 1, 808057; PC64LE-NEXT:    ld 0, 16(1)8058; PC64LE-NEXT:    mtlr 08059; PC64LE-NEXT:    blr8060;8061; PC64LE9-LABEL: constrained_vector_tan_v2f64:8062; PC64LE9:       # %bb.0: # %entry8063; PC64LE9-NEXT:    mflr 08064; PC64LE9-NEXT:    stdu 1, -64(1)8065; PC64LE9-NEXT:    std 0, 80(1)8066; PC64LE9-NEXT:    stxv 63, 48(1) # 16-byte Folded Spill8067; PC64LE9-NEXT:    vmr 31, 28068; PC64LE9-NEXT:    xscpsgndp 1, 63, 638069; PC64LE9-NEXT:    stxv 62, 32(1) # 16-byte Folded Spill8070; PC64LE9-NEXT:    bl tan8071; PC64LE9-NEXT:    nop8072; PC64LE9-NEXT:    xscpsgndp 62, 1, 18073; PC64LE9-NEXT:    xxswapd 1, 638074; PC64LE9-NEXT:    bl tan8075; PC64LE9-NEXT:    nop8076; PC64LE9-NEXT:    xxmrghd 34, 62, 18077; PC64LE9-NEXT:    lxv 63, 48(1) # 16-byte Folded Reload8078; PC64LE9-NEXT:    lxv 62, 32(1) # 16-byte Folded Reload8079; PC64LE9-NEXT:    addi 1, 1, 648080; PC64LE9-NEXT:    ld 0, 16(1)8081; PC64LE9-NEXT:    mtlr 08082; PC64LE9-NEXT:    blr8083entry:8084  %tan = call <2 x double> @llvm.experimental.constrained.tan.v2f64(8085                             <2 x double> %x,8086                             metadata !"round.dynamic",8087                             metadata !"fpexcept.strict") #18088  ret <2 x double> %tan8089}8090 8091define <3 x float> @constrained_vector_tan_v3f32(<3 x float> %x) #0 {8092; PC64LE-LABEL: constrained_vector_tan_v3f32:8093; PC64LE:       # %bb.0: # %entry8094; PC64LE-NEXT:    mflr 08095; PC64LE-NEXT:    stdu 1, -80(1)8096; PC64LE-NEXT:    xxsldwi 0, 34, 34, 18097; PC64LE-NEXT:    li 3, 488098; PC64LE-NEXT:    std 0, 96(1)8099; PC64LE-NEXT:    stfd 30, 64(1) # 8-byte Folded Spill8100; PC64LE-NEXT:    stfd 31, 72(1) # 8-byte Folded Spill8101; PC64LE-NEXT:    xscvspdpn 1, 08102; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill8103; PC64LE-NEXT:    vmr 31, 28104; PC64LE-NEXT:    bl tanf8105; PC64LE-NEXT:    nop8106; PC64LE-NEXT:    xxswapd 0, 638107; PC64LE-NEXT:    fmr 31, 18108; PC64LE-NEXT:    xscvspdpn 1, 08109; PC64LE-NEXT:    bl tanf8110; PC64LE-NEXT:    nop8111; PC64LE-NEXT:    xxsldwi 0, 63, 63, 38112; PC64LE-NEXT:    fmr 30, 18113; PC64LE-NEXT:    xscvspdpn 1, 08114; PC64LE-NEXT:    bl tanf8115; PC64LE-NEXT:    nop8116; PC64LE-NEXT:    xscvdpspn 0, 18117; PC64LE-NEXT:    xscvdpspn 1, 308118; PC64LE-NEXT:    addis 3, 2, .LCPI189_0@toc@ha8119; PC64LE-NEXT:    lfd 30, 64(1) # 8-byte Folded Reload8120; PC64LE-NEXT:    xscvdpspn 36, 318121; PC64LE-NEXT:    lfd 31, 72(1) # 8-byte Folded Reload8122; PC64LE-NEXT:    addi 3, 3, .LCPI189_0@toc@l8123; PC64LE-NEXT:    xxmrghw 34, 1, 08124; PC64LE-NEXT:    lxvd2x 0, 0, 38125; PC64LE-NEXT:    li 3, 488126; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload8127; PC64LE-NEXT:    xxswapd 35, 08128; PC64LE-NEXT:    vperm 2, 4, 2, 38129; PC64LE-NEXT:    addi 1, 1, 808130; PC64LE-NEXT:    ld 0, 16(1)8131; PC64LE-NEXT:    mtlr 08132; PC64LE-NEXT:    blr8133;8134; PC64LE9-LABEL: constrained_vector_tan_v3f32:8135; PC64LE9:       # %bb.0: # %entry8136; PC64LE9-NEXT:    mflr 08137; PC64LE9-NEXT:    stdu 1, -64(1)8138; PC64LE9-NEXT:    xxsldwi 0, 34, 34, 18139; PC64LE9-NEXT:    std 0, 80(1)8140; PC64LE9-NEXT:    stfd 30, 48(1) # 8-byte Folded Spill8141; PC64LE9-NEXT:    stxv 63, 32(1) # 16-byte Folded Spill8142; PC64LE9-NEXT:    stfd 31, 56(1) # 8-byte Folded Spill8143; PC64LE9-NEXT:    vmr 31, 28144; PC64LE9-NEXT:    xscvspdpn 1, 08145; PC64LE9-NEXT:    bl tanf8146; PC64LE9-NEXT:    nop8147; PC64LE9-NEXT:    xxswapd 0, 638148; PC64LE9-NEXT:    fmr 31, 18149; PC64LE9-NEXT:    xscvspdpn 1, 08150; PC64LE9-NEXT:    bl tanf8151; PC64LE9-NEXT:    nop8152; PC64LE9-NEXT:    xxsldwi 0, 63, 63, 38153; PC64LE9-NEXT:    fmr 30, 18154; PC64LE9-NEXT:    xscvspdpn 1, 08155; PC64LE9-NEXT:    bl tanf8156; PC64LE9-NEXT:    nop8157; PC64LE9-NEXT:    xscvdpspn 0, 18158; PC64LE9-NEXT:    xscvdpspn 1, 308159; PC64LE9-NEXT:    addis 3, 2, .LCPI189_0@toc@ha8160; PC64LE9-NEXT:    xscvdpspn 34, 318161; PC64LE9-NEXT:    lxv 63, 32(1) # 16-byte Folded Reload8162; PC64LE9-NEXT:    lfd 31, 56(1) # 8-byte Folded Reload8163; PC64LE9-NEXT:    addi 3, 3, .LCPI189_0@toc@l8164; PC64LE9-NEXT:    lfd 30, 48(1) # 8-byte Folded Reload8165; PC64LE9-NEXT:    xxmrghw 35, 1, 08166; PC64LE9-NEXT:    lxv 0, 0(3)8167; PC64LE9-NEXT:    xxperm 34, 35, 08168; PC64LE9-NEXT:    addi 1, 1, 648169; PC64LE9-NEXT:    ld 0, 16(1)8170; PC64LE9-NEXT:    mtlr 08171; PC64LE9-NEXT:    blr8172entry:8173  %tan = call <3 x float> @llvm.experimental.constrained.tan.v3f32(8174                              <3 x float> %x,8175                              metadata !"round.dynamic",8176                              metadata !"fpexcept.strict") #18177  ret <3 x float> %tan8178}8179 8180define <3 x double> @constrained_vector_tan_v3f64(<3 x double> %x) #0 {8181; PC64LE-LABEL: constrained_vector_tan_v3f64:8182; PC64LE:       # %bb.0: # %entry8183; PC64LE-NEXT:    mflr 08184; PC64LE-NEXT:    stdu 1, -80(1)8185; PC64LE-NEXT:    li 3, 488186; PC64LE-NEXT:    std 0, 96(1)8187; PC64LE-NEXT:    stfd 30, 64(1) # 8-byte Folded Spill8188; PC64LE-NEXT:    fmr 30, 28189; PC64LE-NEXT:    stfd 31, 72(1) # 8-byte Folded Spill8190; PC64LE-NEXT:    fmr 31, 38191; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill8192; PC64LE-NEXT:    bl tan8193; PC64LE-NEXT:    nop8194; PC64LE-NEXT:    xxlor 63, 1, 18195; PC64LE-NEXT:    fmr 1, 308196; PC64LE-NEXT:    bl tan8197; PC64LE-NEXT:    nop8198; PC64LE-NEXT:    xxmrghd 63, 1, 638199; PC64LE-NEXT:    fmr 1, 318200; PC64LE-NEXT:    bl tan8201; PC64LE-NEXT:    nop8202; PC64LE-NEXT:    li 3, 488203; PC64LE-NEXT:    fmr 3, 18204; PC64LE-NEXT:    xxswapd 1, 638205; PC64LE-NEXT:    lfd 31, 72(1) # 8-byte Folded Reload8206; PC64LE-NEXT:    xxlor 2, 63, 638207; PC64LE-NEXT:    lfd 30, 64(1) # 8-byte Folded Reload8208; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload8209; PC64LE-NEXT:    addi 1, 1, 808210; PC64LE-NEXT:    ld 0, 16(1)8211; PC64LE-NEXT:    mtlr 08212; PC64LE-NEXT:    blr8213;8214; PC64LE9-LABEL: constrained_vector_tan_v3f64:8215; PC64LE9:       # %bb.0: # %entry8216; PC64LE9-NEXT:    mflr 08217; PC64LE9-NEXT:    stdu 1, -64(1)8218; PC64LE9-NEXT:    std 0, 80(1)8219; PC64LE9-NEXT:    stfd 30, 48(1) # 8-byte Folded Spill8220; PC64LE9-NEXT:    stxv 63, 32(1) # 16-byte Folded Spill8221; PC64LE9-NEXT:    stfd 31, 56(1) # 8-byte Folded Spill8222; PC64LE9-NEXT:    fmr 31, 38223; PC64LE9-NEXT:    fmr 30, 28224; PC64LE9-NEXT:    bl tan8225; PC64LE9-NEXT:    nop8226; PC64LE9-NEXT:    xscpsgndp 63, 1, 18227; PC64LE9-NEXT:    fmr 1, 308228; PC64LE9-NEXT:    bl tan8229; PC64LE9-NEXT:    nop8230; PC64LE9-NEXT:    xxmrghd 63, 1, 638231; PC64LE9-NEXT:    fmr 1, 318232; PC64LE9-NEXT:    bl tan8233; PC64LE9-NEXT:    nop8234; PC64LE9-NEXT:    fmr 3, 18235; PC64LE9-NEXT:    xxswapd 1, 638236; PC64LE9-NEXT:    xscpsgndp 2, 63, 638237; PC64LE9-NEXT:    lxv 63, 32(1) # 16-byte Folded Reload8238; PC64LE9-NEXT:    lfd 31, 56(1) # 8-byte Folded Reload8239; PC64LE9-NEXT:    lfd 30, 48(1) # 8-byte Folded Reload8240; PC64LE9-NEXT:    addi 1, 1, 648241; PC64LE9-NEXT:    ld 0, 16(1)8242; PC64LE9-NEXT:    mtlr 08243; PC64LE9-NEXT:    blr8244entry:8245  %tan = call <3 x double> @llvm.experimental.constrained.tan.v3f64(8246                          <3 x double> %x,8247                          metadata !"round.dynamic",8248                          metadata !"fpexcept.strict") #18249  ret <3 x double> %tan8250}8251 8252define <4 x double> @constrained_vector_tan_v4f64(<4 x double> %x) #0 {8253; PC64LE-LABEL: constrained_vector_tan_v4f64:8254; PC64LE:       # %bb.0: # %entry8255; PC64LE-NEXT:    mflr 08256; PC64LE-NEXT:    stdu 1, -96(1)8257; PC64LE-NEXT:    li 3, 488258; PC64LE-NEXT:    std 0, 112(1)8259; PC64LE-NEXT:    stxvd2x 61, 1, 3 # 16-byte Folded Spill8260; PC64LE-NEXT:    li 3, 648261; PC64LE-NEXT:    stxvd2x 62, 1, 3 # 16-byte Folded Spill8262; PC64LE-NEXT:    vmr 30, 28263; PC64LE-NEXT:    li 3, 808264; PC64LE-NEXT:    xxlor 1, 62, 628265; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill8266; PC64LE-NEXT:    vmr 31, 38267; PC64LE-NEXT:    bl tan8268; PC64LE-NEXT:    nop8269; PC64LE-NEXT:    xxlor 61, 1, 18270; PC64LE-NEXT:    xxswapd 1, 628271; PC64LE-NEXT:    bl tan8272; PC64LE-NEXT:    nop8273; PC64LE-NEXT:    xxmrghd 62, 61, 18274; PC64LE-NEXT:    xxlor 1, 63, 638275; PC64LE-NEXT:    bl tan8276; PC64LE-NEXT:    nop8277; PC64LE-NEXT:    xxlor 61, 1, 18278; PC64LE-NEXT:    xxswapd 1, 638279; PC64LE-NEXT:    bl tan8280; PC64LE-NEXT:    nop8281; PC64LE-NEXT:    li 3, 808282; PC64LE-NEXT:    vmr 2, 308283; PC64LE-NEXT:    xxmrghd 35, 61, 18284; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload8285; PC64LE-NEXT:    li 3, 648286; PC64LE-NEXT:    lxvd2x 62, 1, 3 # 16-byte Folded Reload8287; PC64LE-NEXT:    li 3, 488288; PC64LE-NEXT:    lxvd2x 61, 1, 3 # 16-byte Folded Reload8289; PC64LE-NEXT:    addi 1, 1, 968290; PC64LE-NEXT:    ld 0, 16(1)8291; PC64LE-NEXT:    mtlr 08292; PC64LE-NEXT:    blr8293;8294; PC64LE9-LABEL: constrained_vector_tan_v4f64:8295; PC64LE9:       # %bb.0: # %entry8296; PC64LE9-NEXT:    mflr 08297; PC64LE9-NEXT:    stdu 1, -80(1)8298; PC64LE9-NEXT:    std 0, 96(1)8299; PC64LE9-NEXT:    stxv 62, 48(1) # 16-byte Folded Spill8300; PC64LE9-NEXT:    vmr 30, 28301; PC64LE9-NEXT:    xscpsgndp 1, 62, 628302; PC64LE9-NEXT:    stxv 61, 32(1) # 16-byte Folded Spill8303; PC64LE9-NEXT:    stxv 63, 64(1) # 16-byte Folded Spill8304; PC64LE9-NEXT:    vmr 31, 38305; PC64LE9-NEXT:    bl tan8306; PC64LE9-NEXT:    nop8307; PC64LE9-NEXT:    xscpsgndp 61, 1, 18308; PC64LE9-NEXT:    xxswapd 1, 628309; PC64LE9-NEXT:    bl tan8310; PC64LE9-NEXT:    nop8311; PC64LE9-NEXT:    xxmrghd 62, 61, 18312; PC64LE9-NEXT:    xscpsgndp 1, 63, 638313; PC64LE9-NEXT:    bl tan8314; PC64LE9-NEXT:    nop8315; PC64LE9-NEXT:    xscpsgndp 61, 1, 18316; PC64LE9-NEXT:    xxswapd 1, 638317; PC64LE9-NEXT:    bl tan8318; PC64LE9-NEXT:    nop8319; PC64LE9-NEXT:    xxmrghd 35, 61, 18320; PC64LE9-NEXT:    vmr 2, 308321; PC64LE9-NEXT:    lxv 63, 64(1) # 16-byte Folded Reload8322; PC64LE9-NEXT:    lxv 62, 48(1) # 16-byte Folded Reload8323; PC64LE9-NEXT:    lxv 61, 32(1) # 16-byte Folded Reload8324; PC64LE9-NEXT:    addi 1, 1, 808325; PC64LE9-NEXT:    ld 0, 16(1)8326; PC64LE9-NEXT:    mtlr 08327; PC64LE9-NEXT:    blr8328entry:8329  %tan = call <4 x double> @llvm.experimental.constrained.tan.v4f64(8330                             <4 x double> %x,8331                             metadata !"round.dynamic",8332                             metadata !"fpexcept.strict") #18333  ret <4 x double> %tan8334}8335 8336define <1 x float> @constrained_vector_atan2_v1f32(<1 x float> %x, <1 x float> %y) #0 {8337; PC64LE-LABEL: constrained_vector_atan2_v1f32:8338; PC64LE:       # %bb.0: # %entry8339; PC64LE-NEXT:    mflr 08340; PC64LE-NEXT:    stdu 1, -32(1)8341; PC64LE-NEXT:    std 0, 48(1)8342; PC64LE-NEXT:    bl atan2f8343; PC64LE-NEXT:    nop8344; PC64LE-NEXT:    addi 1, 1, 328345; PC64LE-NEXT:    ld 0, 16(1)8346; PC64LE-NEXT:    mtlr 08347; PC64LE-NEXT:    blr8348;8349; PC64LE9-LABEL: constrained_vector_atan2_v1f32:8350; PC64LE9:       # %bb.0: # %entry8351; PC64LE9-NEXT:    mflr 08352; PC64LE9-NEXT:    stdu 1, -32(1)8353; PC64LE9-NEXT:    std 0, 48(1)8354; PC64LE9-NEXT:    bl atan2f8355; PC64LE9-NEXT:    nop8356; PC64LE9-NEXT:    addi 1, 1, 328357; PC64LE9-NEXT:    ld 0, 16(1)8358; PC64LE9-NEXT:    mtlr 08359; PC64LE9-NEXT:    blr8360entry:8361  %atan2 = call <1 x float> @llvm.experimental.constrained.atan2.v1f32(8362                             <1 x float> %x,8363                             <1 x float> %y,8364                             metadata !"round.dynamic",8365                             metadata !"fpexcept.strict") #18366  ret <1 x float> %atan28367}8368 8369define <2 x double> @constrained_vector_atan2_v2f64(<2 x double> %x, <2 x double> %y) #0 {8370; PC64LE-LABEL: constrained_vector_atan2_v2f64:8371; PC64LE:       # %bb.0: # %entry8372; PC64LE-NEXT:    mflr 08373; PC64LE-NEXT:    stdu 1, -96(1)8374; PC64LE-NEXT:    li 3, 488375; PC64LE-NEXT:    std 0, 112(1)8376; PC64LE-NEXT:    stxvd2x 61, 1, 3 # 16-byte Folded Spill8377; PC64LE-NEXT:    li 3, 648378; PC64LE-NEXT:    stxvd2x 62, 1, 3 # 16-byte Folded Spill8379; PC64LE-NEXT:    li 3, 808380; PC64LE-NEXT:    vmr 30, 28381; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill8382; PC64LE-NEXT:    vmr 31, 38383; PC64LE-NEXT:    xxlor 1, 62, 628384; PC64LE-NEXT:    xxlor 2, 63, 638385; PC64LE-NEXT:    bl atan28386; PC64LE-NEXT:    nop8387; PC64LE-NEXT:    xxlor 61, 1, 18388; PC64LE-NEXT:    xxswapd 1, 628389; PC64LE-NEXT:    xxswapd 2, 638390; PC64LE-NEXT:    bl atan28391; PC64LE-NEXT:    nop8392; PC64LE-NEXT:    li 3, 808393; PC64LE-NEXT:    xxmrghd 34, 61, 18394; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload8395; PC64LE-NEXT:    li 3, 648396; PC64LE-NEXT:    lxvd2x 62, 1, 3 # 16-byte Folded Reload8397; PC64LE-NEXT:    li 3, 488398; PC64LE-NEXT:    lxvd2x 61, 1, 3 # 16-byte Folded Reload8399; PC64LE-NEXT:    addi 1, 1, 968400; PC64LE-NEXT:    ld 0, 16(1)8401; PC64LE-NEXT:    mtlr 08402; PC64LE-NEXT:    blr8403;8404; PC64LE9-LABEL: constrained_vector_atan2_v2f64:8405; PC64LE9:       # %bb.0: # %entry8406; PC64LE9-NEXT:    mflr 08407; PC64LE9-NEXT:    stdu 1, -80(1)8408; PC64LE9-NEXT:    std 0, 96(1)8409; PC64LE9-NEXT:    stxv 62, 48(1) # 16-byte Folded Spill8410; PC64LE9-NEXT:    stxv 63, 64(1) # 16-byte Folded Spill8411; PC64LE9-NEXT:    vmr 31, 38412; PC64LE9-NEXT:    xscpsgndp 2, 63, 638413; PC64LE9-NEXT:    vmr 30, 28414; PC64LE9-NEXT:    xscpsgndp 1, 62, 628415; PC64LE9-NEXT:    stxv 61, 32(1) # 16-byte Folded Spill8416; PC64LE9-NEXT:    bl atan28417; PC64LE9-NEXT:    nop8418; PC64LE9-NEXT:    xscpsgndp 61, 1, 18419; PC64LE9-NEXT:    xxswapd 1, 628420; PC64LE9-NEXT:    xxswapd 2, 638421; PC64LE9-NEXT:    bl atan28422; PC64LE9-NEXT:    nop8423; PC64LE9-NEXT:    xxmrghd 34, 61, 18424; PC64LE9-NEXT:    lxv 63, 64(1) # 16-byte Folded Reload8425; PC64LE9-NEXT:    lxv 62, 48(1) # 16-byte Folded Reload8426; PC64LE9-NEXT:    lxv 61, 32(1) # 16-byte Folded Reload8427; PC64LE9-NEXT:    addi 1, 1, 808428; PC64LE9-NEXT:    ld 0, 16(1)8429; PC64LE9-NEXT:    mtlr 08430; PC64LE9-NEXT:    blr8431entry:8432  %atan2 = call <2 x double> @llvm.experimental.constrained.atan2.v2f64(8433                             <2 x double> %x,8434                             <2 x double> %y,8435                             metadata !"round.dynamic",8436                             metadata !"fpexcept.strict") #18437  ret <2 x double> %atan28438}8439 8440define <3 x float> @constrained_vector_atan2_v3f32(<3 x float> %x, <3 x float> %y) #0 {8441; PC64LE-LABEL: constrained_vector_atan2_v3f32:8442; PC64LE:       # %bb.0: # %entry8443; PC64LE-NEXT:    mflr 08444; PC64LE-NEXT:    stdu 1, -96(1)8445; PC64LE-NEXT:    xxsldwi 0, 34, 34, 18446; PC64LE-NEXT:    xxsldwi 2, 35, 35, 18447; PC64LE-NEXT:    li 3, 488448; PC64LE-NEXT:    std 0, 112(1)8449; PC64LE-NEXT:    stfd 30, 80(1) # 8-byte Folded Spill8450; PC64LE-NEXT:    stfd 31, 88(1) # 8-byte Folded Spill8451; PC64LE-NEXT:    xscvspdpn 1, 08452; PC64LE-NEXT:    xscvspdpn 2, 28453; PC64LE-NEXT:    stxvd2x 62, 1, 3 # 16-byte Folded Spill8454; PC64LE-NEXT:    li 3, 648455; PC64LE-NEXT:    vmr 30, 28456; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill8457; PC64LE-NEXT:    vmr 31, 38458; PC64LE-NEXT:    bl atan2f8459; PC64LE-NEXT:    nop8460; PC64LE-NEXT:    xxswapd 0, 628461; PC64LE-NEXT:    xxswapd 2, 638462; PC64LE-NEXT:    fmr 31, 18463; PC64LE-NEXT:    xscvspdpn 1, 08464; PC64LE-NEXT:    xscvspdpn 2, 28465; PC64LE-NEXT:    bl atan2f8466; PC64LE-NEXT:    nop8467; PC64LE-NEXT:    xxsldwi 0, 62, 62, 38468; PC64LE-NEXT:    xxsldwi 2, 63, 63, 38469; PC64LE-NEXT:    fmr 30, 18470; PC64LE-NEXT:    xscvspdpn 1, 08471; PC64LE-NEXT:    xscvspdpn 2, 28472; PC64LE-NEXT:    bl atan2f8473; PC64LE-NEXT:    nop8474; PC64LE-NEXT:    xscvdpspn 0, 18475; PC64LE-NEXT:    xscvdpspn 1, 308476; PC64LE-NEXT:    addis 3, 2, .LCPI194_0@toc@ha8477; PC64LE-NEXT:    lfd 30, 80(1) # 8-byte Folded Reload8478; PC64LE-NEXT:    xscvdpspn 36, 318479; PC64LE-NEXT:    lfd 31, 88(1) # 8-byte Folded Reload8480; PC64LE-NEXT:    addi 3, 3, .LCPI194_0@toc@l8481; PC64LE-NEXT:    xxmrghw 34, 1, 08482; PC64LE-NEXT:    lxvd2x 0, 0, 38483; PC64LE-NEXT:    li 3, 648484; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload8485; PC64LE-NEXT:    li 3, 488486; PC64LE-NEXT:    lxvd2x 62, 1, 3 # 16-byte Folded Reload8487; PC64LE-NEXT:    xxswapd 35, 08488; PC64LE-NEXT:    vperm 2, 4, 2, 38489; PC64LE-NEXT:    addi 1, 1, 968490; PC64LE-NEXT:    ld 0, 16(1)8491; PC64LE-NEXT:    mtlr 08492; PC64LE-NEXT:    blr8493;8494; PC64LE9-LABEL: constrained_vector_atan2_v3f32:8495; PC64LE9:       # %bb.0: # %entry8496; PC64LE9-NEXT:    mflr 08497; PC64LE9-NEXT:    stdu 1, -80(1)8498; PC64LE9-NEXT:    xxsldwi 0, 34, 34, 18499; PC64LE9-NEXT:    std 0, 96(1)8500; PC64LE9-NEXT:    stfd 30, 64(1) # 8-byte Folded Spill8501; PC64LE9-NEXT:    stxv 62, 32(1) # 16-byte Folded Spill8502; PC64LE9-NEXT:    stfd 31, 72(1) # 8-byte Folded Spill8503; PC64LE9-NEXT:    stxv 63, 48(1) # 16-byte Folded Spill8504; PC64LE9-NEXT:    xscvspdpn 1, 08505; PC64LE9-NEXT:    xxsldwi 0, 35, 35, 18506; PC64LE9-NEXT:    vmr 31, 38507; PC64LE9-NEXT:    vmr 30, 28508; PC64LE9-NEXT:    xscvspdpn 2, 08509; PC64LE9-NEXT:    bl atan2f8510; PC64LE9-NEXT:    nop8511; PC64LE9-NEXT:    xxswapd 0, 628512; PC64LE9-NEXT:    fmr 31, 18513; PC64LE9-NEXT:    xscvspdpn 1, 08514; PC64LE9-NEXT:    xxswapd 0, 638515; PC64LE9-NEXT:    xscvspdpn 2, 08516; PC64LE9-NEXT:    bl atan2f8517; PC64LE9-NEXT:    nop8518; PC64LE9-NEXT:    xxsldwi 0, 62, 62, 38519; PC64LE9-NEXT:    fmr 30, 18520; PC64LE9-NEXT:    xscvspdpn 1, 08521; PC64LE9-NEXT:    xxsldwi 0, 63, 63, 38522; PC64LE9-NEXT:    xscvspdpn 2, 08523; PC64LE9-NEXT:    bl atan2f8524; PC64LE9-NEXT:    nop8525; PC64LE9-NEXT:    xscvdpspn 0, 18526; PC64LE9-NEXT:    xscvdpspn 1, 308527; PC64LE9-NEXT:    addis 3, 2, .LCPI194_0@toc@ha8528; PC64LE9-NEXT:    xscvdpspn 34, 318529; PC64LE9-NEXT:    lxv 63, 48(1) # 16-byte Folded Reload8530; PC64LE9-NEXT:    lxv 62, 32(1) # 16-byte Folded Reload8531; PC64LE9-NEXT:    lfd 31, 72(1) # 8-byte Folded Reload8532; PC64LE9-NEXT:    addi 3, 3, .LCPI194_0@toc@l8533; PC64LE9-NEXT:    lfd 30, 64(1) # 8-byte Folded Reload8534; PC64LE9-NEXT:    xxmrghw 35, 1, 08535; PC64LE9-NEXT:    lxv 0, 0(3)8536; PC64LE9-NEXT:    xxperm 34, 35, 08537; PC64LE9-NEXT:    addi 1, 1, 808538; PC64LE9-NEXT:    ld 0, 16(1)8539; PC64LE9-NEXT:    mtlr 08540; PC64LE9-NEXT:    blr8541entry:8542  %atan2 = call <3 x float> @llvm.experimental.constrained.atan2.v3f32(8543                              <3 x float> %x,8544                              <3 x float> %y,8545                              metadata !"round.dynamic",8546                              metadata !"fpexcept.strict") #18547  ret <3 x float> %atan28548}8549 8550define <3 x double> @constrained_vector_atan2_v3f64(<3 x double> %x, <3 x double> %y) #0 {8551; PC64LE-LABEL: constrained_vector_atan2_v3f64:8552; PC64LE:       # %bb.0: # %entry8553; PC64LE-NEXT:    mflr 08554; PC64LE-NEXT:    stdu 1, -96(1)8555; PC64LE-NEXT:    std 0, 112(1)8556; PC64LE-NEXT:    stfd 28, 64(1) # 8-byte Folded Spill8557; PC64LE-NEXT:    fmr 28, 28558; PC64LE-NEXT:    fmr 2, 48559; PC64LE-NEXT:    li 3, 488560; PC64LE-NEXT:    stfd 29, 72(1) # 8-byte Folded Spill8561; PC64LE-NEXT:    stfd 30, 80(1) # 8-byte Folded Spill8562; PC64LE-NEXT:    fmr 30, 58563; PC64LE-NEXT:    stfd 31, 88(1) # 8-byte Folded Spill8564; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill8565; PC64LE-NEXT:    fmr 31, 68566; PC64LE-NEXT:    fmr 29, 38567; PC64LE-NEXT:    bl atan28568; PC64LE-NEXT:    nop8569; PC64LE-NEXT:    xxlor 63, 1, 18570; PC64LE-NEXT:    fmr 1, 288571; PC64LE-NEXT:    fmr 2, 308572; PC64LE-NEXT:    bl atan28573; PC64LE-NEXT:    nop8574; PC64LE-NEXT:    xxmrghd 63, 1, 638575; PC64LE-NEXT:    fmr 1, 298576; PC64LE-NEXT:    fmr 2, 318577; PC64LE-NEXT:    bl atan28578; PC64LE-NEXT:    nop8579; PC64LE-NEXT:    li 3, 488580; PC64LE-NEXT:    fmr 3, 18581; PC64LE-NEXT:    xxswapd 1, 638582; PC64LE-NEXT:    lfd 31, 88(1) # 8-byte Folded Reload8583; PC64LE-NEXT:    xxlor 2, 63, 638584; PC64LE-NEXT:    lfd 30, 80(1) # 8-byte Folded Reload8585; PC64LE-NEXT:    lfd 29, 72(1) # 8-byte Folded Reload8586; PC64LE-NEXT:    lfd 28, 64(1) # 8-byte Folded Reload8587; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload8588; PC64LE-NEXT:    addi 1, 1, 968589; PC64LE-NEXT:    ld 0, 16(1)8590; PC64LE-NEXT:    mtlr 08591; PC64LE-NEXT:    blr8592;8593; PC64LE9-LABEL: constrained_vector_atan2_v3f64:8594; PC64LE9:       # %bb.0: # %entry8595; PC64LE9-NEXT:    mflr 08596; PC64LE9-NEXT:    stdu 1, -80(1)8597; PC64LE9-NEXT:    std 0, 96(1)8598; PC64LE9-NEXT:    stfd 28, 48(1) # 8-byte Folded Spill8599; PC64LE9-NEXT:    stxv 63, 32(1) # 16-byte Folded Spill8600; PC64LE9-NEXT:    fmr 28, 28601; PC64LE9-NEXT:    fmr 2, 48602; PC64LE9-NEXT:    stfd 29, 56(1) # 8-byte Folded Spill8603; PC64LE9-NEXT:    stfd 30, 64(1) # 8-byte Folded Spill8604; PC64LE9-NEXT:    stfd 31, 72(1) # 8-byte Folded Spill8605; PC64LE9-NEXT:    fmr 31, 68606; PC64LE9-NEXT:    fmr 30, 58607; PC64LE9-NEXT:    fmr 29, 38608; PC64LE9-NEXT:    bl atan28609; PC64LE9-NEXT:    nop8610; PC64LE9-NEXT:    xscpsgndp 63, 1, 18611; PC64LE9-NEXT:    fmr 1, 288612; PC64LE9-NEXT:    fmr 2, 308613; PC64LE9-NEXT:    bl atan28614; PC64LE9-NEXT:    nop8615; PC64LE9-NEXT:    xxmrghd 63, 1, 638616; PC64LE9-NEXT:    fmr 1, 298617; PC64LE9-NEXT:    fmr 2, 318618; PC64LE9-NEXT:    bl atan28619; PC64LE9-NEXT:    nop8620; PC64LE9-NEXT:    fmr 3, 18621; PC64LE9-NEXT:    xxswapd 1, 638622; PC64LE9-NEXT:    xscpsgndp 2, 63, 638623; PC64LE9-NEXT:    lxv 63, 32(1) # 16-byte Folded Reload8624; PC64LE9-NEXT:    lfd 31, 72(1) # 8-byte Folded Reload8625; PC64LE9-NEXT:    lfd 30, 64(1) # 8-byte Folded Reload8626; PC64LE9-NEXT:    lfd 29, 56(1) # 8-byte Folded Reload8627; PC64LE9-NEXT:    lfd 28, 48(1) # 8-byte Folded Reload8628; PC64LE9-NEXT:    addi 1, 1, 808629; PC64LE9-NEXT:    ld 0, 16(1)8630; PC64LE9-NEXT:    mtlr 08631; PC64LE9-NEXT:    blr8632entry:8633  %atan2 = call <3 x double> @llvm.experimental.constrained.atan2.v3f64(8634                          <3 x double> %x,8635                          <3 x double> %y,8636                          metadata !"round.dynamic",8637                          metadata !"fpexcept.strict") #18638  ret <3 x double> %atan28639}8640 8641define <4 x double> @constrained_vector_atan2_v4f64(<4 x double> %x, <4 x double> %y) #0 {8642; PC64LE-LABEL: constrained_vector_atan2_v4f64:8643; PC64LE:       # %bb.0: # %entry8644; PC64LE-NEXT:    mflr 08645; PC64LE-NEXT:    stdu 1, -128(1)8646; PC64LE-NEXT:    li 3, 488647; PC64LE-NEXT:    std 0, 144(1)8648; PC64LE-NEXT:    stxvd2x 59, 1, 3 # 16-byte Folded Spill8649; PC64LE-NEXT:    li 3, 648650; PC64LE-NEXT:    stxvd2x 60, 1, 3 # 16-byte Folded Spill8651; PC64LE-NEXT:    li 3, 808652; PC64LE-NEXT:    vmr 28, 28653; PC64LE-NEXT:    stxvd2x 61, 1, 3 # 16-byte Folded Spill8654; PC64LE-NEXT:    li 3, 968655; PC64LE-NEXT:    xxlor 1, 60, 608656; PC64LE-NEXT:    vmr 29, 38657; PC64LE-NEXT:    stxvd2x 62, 1, 3 # 16-byte Folded Spill8658; PC64LE-NEXT:    vmr 30, 48659; PC64LE-NEXT:    li 3, 1128660; PC64LE-NEXT:    xxlor 2, 62, 628661; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill8662; PC64LE-NEXT:    vmr 31, 58663; PC64LE-NEXT:    bl atan28664; PC64LE-NEXT:    nop8665; PC64LE-NEXT:    xxlor 59, 1, 18666; PC64LE-NEXT:    xxswapd 1, 608667; PC64LE-NEXT:    xxswapd 2, 628668; PC64LE-NEXT:    bl atan28669; PC64LE-NEXT:    nop8670; PC64LE-NEXT:    xxmrghd 62, 59, 18671; PC64LE-NEXT:    xxlor 1, 61, 618672; PC64LE-NEXT:    xxlor 2, 63, 638673; PC64LE-NEXT:    bl atan28674; PC64LE-NEXT:    nop8675; PC64LE-NEXT:    xxlor 60, 1, 18676; PC64LE-NEXT:    xxswapd 1, 618677; PC64LE-NEXT:    xxswapd 2, 638678; PC64LE-NEXT:    bl atan28679; PC64LE-NEXT:    nop8680; PC64LE-NEXT:    li 3, 1128681; PC64LE-NEXT:    vmr 2, 308682; PC64LE-NEXT:    xxmrghd 35, 60, 18683; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload8684; PC64LE-NEXT:    li 3, 968685; PC64LE-NEXT:    lxvd2x 62, 1, 3 # 16-byte Folded Reload8686; PC64LE-NEXT:    li 3, 808687; PC64LE-NEXT:    lxvd2x 61, 1, 3 # 16-byte Folded Reload8688; PC64LE-NEXT:    li 3, 648689; PC64LE-NEXT:    lxvd2x 60, 1, 3 # 16-byte Folded Reload8690; PC64LE-NEXT:    li 3, 488691; PC64LE-NEXT:    lxvd2x 59, 1, 3 # 16-byte Folded Reload8692; PC64LE-NEXT:    addi 1, 1, 1288693; PC64LE-NEXT:    ld 0, 16(1)8694; PC64LE-NEXT:    mtlr 08695; PC64LE-NEXT:    blr8696;8697; PC64LE9-LABEL: constrained_vector_atan2_v4f64:8698; PC64LE9:       # %bb.0: # %entry8699; PC64LE9-NEXT:    mflr 08700; PC64LE9-NEXT:    stdu 1, -112(1)8701; PC64LE9-NEXT:    std 0, 128(1)8702; PC64LE9-NEXT:    stxv 60, 48(1) # 16-byte Folded Spill8703; PC64LE9-NEXT:    stxv 62, 80(1) # 16-byte Folded Spill8704; PC64LE9-NEXT:    vmr 30, 48705; PC64LE9-NEXT:    xscpsgndp 2, 62, 628706; PC64LE9-NEXT:    vmr 28, 28707; PC64LE9-NEXT:    xscpsgndp 1, 60, 608708; PC64LE9-NEXT:    stxv 59, 32(1) # 16-byte Folded Spill8709; PC64LE9-NEXT:    stxv 61, 64(1) # 16-byte Folded Spill8710; PC64LE9-NEXT:    stxv 63, 96(1) # 16-byte Folded Spill8711; PC64LE9-NEXT:    vmr 31, 58712; PC64LE9-NEXT:    vmr 29, 38713; PC64LE9-NEXT:    bl atan28714; PC64LE9-NEXT:    nop8715; PC64LE9-NEXT:    xscpsgndp 59, 1, 18716; PC64LE9-NEXT:    xxswapd 1, 608717; PC64LE9-NEXT:    xxswapd 2, 628718; PC64LE9-NEXT:    bl atan28719; PC64LE9-NEXT:    nop8720; PC64LE9-NEXT:    xxmrghd 62, 59, 18721; PC64LE9-NEXT:    xscpsgndp 1, 61, 618722; PC64LE9-NEXT:    xscpsgndp 2, 63, 638723; PC64LE9-NEXT:    bl atan28724; PC64LE9-NEXT:    nop8725; PC64LE9-NEXT:    xscpsgndp 60, 1, 18726; PC64LE9-NEXT:    xxswapd 1, 618727; PC64LE9-NEXT:    xxswapd 2, 638728; PC64LE9-NEXT:    bl atan28729; PC64LE9-NEXT:    nop8730; PC64LE9-NEXT:    xxmrghd 35, 60, 18731; PC64LE9-NEXT:    vmr 2, 308732; PC64LE9-NEXT:    lxv 63, 96(1) # 16-byte Folded Reload8733; PC64LE9-NEXT:    lxv 62, 80(1) # 16-byte Folded Reload8734; PC64LE9-NEXT:    lxv 61, 64(1) # 16-byte Folded Reload8735; PC64LE9-NEXT:    lxv 60, 48(1) # 16-byte Folded Reload8736; PC64LE9-NEXT:    lxv 59, 32(1) # 16-byte Folded Reload8737; PC64LE9-NEXT:    addi 1, 1, 1128738; PC64LE9-NEXT:    ld 0, 16(1)8739; PC64LE9-NEXT:    mtlr 08740; PC64LE9-NEXT:    blr8741entry:8742  %atan2 = call <4 x double> @llvm.experimental.constrained.atan2.v4f64(8743                             <4 x double> %x,8744                             <4 x double> %y,8745                             metadata !"round.dynamic",8746                             metadata !"fpexcept.strict") #18747  ret <4 x double> %atan28748}8749 8750attributes #0 = { nounwind strictfp noimplicitfloat }8751attributes #1 = { strictfp }8752 8753; Single width declarations8754declare <2 x double> @llvm.experimental.constrained.fadd.v2f64(<2 x double>, <2 x double>, metadata, metadata)8755declare <2 x double> @llvm.experimental.constrained.fsub.v2f64(<2 x double>, <2 x double>, metadata, metadata)8756declare <2 x double> @llvm.experimental.constrained.fmul.v2f64(<2 x double>, <2 x double>, metadata, metadata)8757declare <2 x double> @llvm.experimental.constrained.fdiv.v2f64(<2 x double>, <2 x double>, metadata, metadata)8758declare <2 x double> @llvm.experimental.constrained.frem.v2f64(<2 x double>, <2 x double>, metadata, metadata)8759declare <2 x double> @llvm.experimental.constrained.sqrt.v2f64(<2 x double>, metadata, metadata)8760declare <2 x double> @llvm.experimental.constrained.pow.v2f64(<2 x double>, <2 x double>, metadata, metadata)8761declare <2 x double> @llvm.experimental.constrained.powi.v2f64(<2 x double>, i32, metadata, metadata)8762declare <2 x double> @llvm.experimental.constrained.sin.v2f64(<2 x double>, metadata, metadata)8763declare <2 x double> @llvm.experimental.constrained.cos.v2f64(<2 x double>, metadata, metadata)8764declare <2 x double> @llvm.experimental.constrained.tan.v2f64(<2 x double>, metadata, metadata)8765declare <2 x double> @llvm.experimental.constrained.atan2.v2f64(<2 x double>, <2 x double>, metadata, metadata)8766declare <2 x double> @llvm.experimental.constrained.exp.v2f64(<2 x double>, metadata, metadata)8767declare <2 x double> @llvm.experimental.constrained.exp2.v2f64(<2 x double>, metadata, metadata)8768declare <2 x double> @llvm.experimental.constrained.log.v2f64(<2 x double>, metadata, metadata)8769declare <2 x double> @llvm.experimental.constrained.log10.v2f64(<2 x double>, metadata, metadata)8770declare <2 x double> @llvm.experimental.constrained.log2.v2f64(<2 x double>, metadata, metadata)8771declare <2 x double> @llvm.experimental.constrained.rint.v2f64(<2 x double>, metadata, metadata)8772declare <2 x double> @llvm.experimental.constrained.nearbyint.v2f64(<2 x double>, metadata, metadata)8773declare <2 x double> @llvm.experimental.constrained.maxnum.v2f64(<2 x double>, <2 x double>, metadata)8774declare <2 x double> @llvm.experimental.constrained.minnum.v2f64(<2 x double>, <2 x double>, metadata)8775declare <2 x i32> @llvm.experimental.constrained.fptosi.v2i32.v2f32(<2 x float>, metadata)8776declare <2 x i64> @llvm.experimental.constrained.fptosi.v2i64.v2f32(<2 x float>, metadata)8777declare <2 x i32> @llvm.experimental.constrained.fptosi.v2i32.v2f64(<2 x double>, metadata)8778declare <2 x i64> @llvm.experimental.constrained.fptosi.v2i64.v2f64(<2 x double>, metadata)8779declare <2 x i32> @llvm.experimental.constrained.fptoui.v2i32.v2f32(<2 x float>, metadata)8780declare <2 x i64> @llvm.experimental.constrained.fptoui.v2i64.v2f32(<2 x float>, metadata)8781declare <2 x i32> @llvm.experimental.constrained.fptoui.v2i32.v2f64(<2 x double>, metadata)8782declare <2 x i64> @llvm.experimental.constrained.fptoui.v2i64.v2f64(<2 x double>, metadata)8783declare <2 x float> @llvm.experimental.constrained.fptrunc.v2f32.v2f64(<2 x double>, metadata, metadata)8784declare <2 x double> @llvm.experimental.constrained.fpext.v2f64.v2f32(<2 x float>, metadata)8785declare <2 x double> @llvm.experimental.constrained.ceil.v2f64(<2 x double>, metadata)8786declare <2 x double> @llvm.experimental.constrained.floor.v2f64(<2 x double>, metadata)8787declare <2 x double> @llvm.experimental.constrained.round.v2f64(<2 x double>, metadata)8788declare <2 x double> @llvm.experimental.constrained.trunc.v2f64(<2 x double>, metadata)8789declare <2 x double> @llvm.experimental.constrained.uitofp.v2f64.v2i16(<2 x i16>, metadata, metadata)8790declare <2 x double> @llvm.experimental.constrained.sitofp.v2f64.v2i16(<2 x i16>, metadata, metadata)8791declare <2 x double> @llvm.experimental.constrained.sitofp.v2f64.v2i32(<2 x i32>, metadata, metadata)8792declare <2 x float> @llvm.experimental.constrained.sitofp.v2f32.v2i32(<2 x i32>, metadata, metadata)8793declare <2 x double> @llvm.experimental.constrained.sitofp.v2f64.v2i64(<2 x i64>, metadata, metadata)8794declare <2 x float> @llvm.experimental.constrained.sitofp.v2f32.v2i64(<2 x i64>, metadata, metadata)8795declare <2 x double> @llvm.experimental.constrained.uitofp.v2f64.v2i32(<2 x i32>, metadata, metadata)8796declare <2 x float> @llvm.experimental.constrained.uitofp.v2f32.v2i32(<2 x i32>, metadata, metadata)8797declare <2 x double> @llvm.experimental.constrained.uitofp.v2f64.v2i64(<2 x i64>, metadata, metadata)8798declare <2 x float> @llvm.experimental.constrained.uitofp.v2f32.v2i64(<2 x i64>, metadata, metadata)8799 8800; Scalar width declarations8801declare <1 x float> @llvm.experimental.constrained.fadd.v1f32(<1 x float>, <1 x float>, metadata, metadata)8802declare <1 x float> @llvm.experimental.constrained.fsub.v1f32(<1 x float>, <1 x float>, metadata, metadata)8803declare <1 x float> @llvm.experimental.constrained.fmul.v1f32(<1 x float>, <1 x float>, metadata, metadata)8804declare <1 x float> @llvm.experimental.constrained.fdiv.v1f32(<1 x float>, <1 x float>, metadata, metadata)8805declare <1 x float> @llvm.experimental.constrained.frem.v1f32(<1 x float>, <1 x float>, metadata, metadata)8806declare <1 x float> @llvm.experimental.constrained.sqrt.v1f32(<1 x float>, metadata, metadata)8807declare <1 x float> @llvm.experimental.constrained.pow.v1f32(<1 x float>, <1 x float>, metadata, metadata)8808declare <1 x float> @llvm.experimental.constrained.powi.v1f32(<1 x float>, i32, metadata, metadata)8809declare <1 x float> @llvm.experimental.constrained.sin.v1f32(<1 x float>, metadata, metadata)8810declare <1 x float> @llvm.experimental.constrained.cos.v1f32(<1 x float>, metadata, metadata)8811declare <1 x float> @llvm.experimental.constrained.tan.v1f32(<1 x float>, metadata, metadata)8812declare <1 x float> @llvm.experimental.constrained.atan2.v1f32(<1 x float>, <1 x float>, metadata, metadata)8813declare <1 x float> @llvm.experimental.constrained.exp.v1f32(<1 x float>, metadata, metadata)8814declare <1 x float> @llvm.experimental.constrained.exp2.v1f32(<1 x float>, metadata, metadata)8815declare <1 x float> @llvm.experimental.constrained.log.v1f32(<1 x float>, metadata, metadata)8816declare <1 x float> @llvm.experimental.constrained.log10.v1f32(<1 x float>, metadata, metadata)8817declare <1 x float> @llvm.experimental.constrained.log2.v1f32(<1 x float>, metadata, metadata)8818declare <1 x float> @llvm.experimental.constrained.rint.v1f32(<1 x float>, metadata, metadata)8819declare <1 x float> @llvm.experimental.constrained.nearbyint.v1f32(<1 x float>, metadata, metadata)8820declare <1 x float> @llvm.experimental.constrained.maxnum.v1f32(<1 x float>, <1 x float>, metadata)8821declare <1 x float> @llvm.experimental.constrained.minnum.v1f32(<1 x float>, <1 x float>, metadata)8822declare <1 x i32> @llvm.experimental.constrained.fptosi.v1i32.v1f32(<1 x float>, metadata)8823declare <1 x i64> @llvm.experimental.constrained.fptosi.v1i64.v1f32(<1 x float>, metadata)8824declare <1 x i32> @llvm.experimental.constrained.fptosi.v1i32.v1f64(<1 x double>, metadata)8825declare <1 x i64> @llvm.experimental.constrained.fptosi.v1i64.v1f64(<1 x double>, metadata)8826declare <1 x i32> @llvm.experimental.constrained.fptoui.v1i32.v1f32(<1 x float>, metadata)8827declare <1 x i64> @llvm.experimental.constrained.fptoui.v1i64.v1f32(<1 x float>, metadata)8828declare <1 x i32> @llvm.experimental.constrained.fptoui.v1i32.v1f64(<1 x double>, metadata)8829declare <1 x i64> @llvm.experimental.constrained.fptoui.v1i64.v1f64(<1 x double>, metadata)8830declare <1 x float> @llvm.experimental.constrained.fptrunc.v1f32.v1f64(<1 x double>, metadata, metadata)8831declare <1 x double> @llvm.experimental.constrained.fpext.v1f64.v1f32(<1 x float>, metadata)8832declare <1 x float> @llvm.experimental.constrained.ceil.v1f32(<1 x float>, metadata)8833declare <1 x float> @llvm.experimental.constrained.floor.v1f32(<1 x float>, metadata)8834declare <1 x float> @llvm.experimental.constrained.round.v1f32(<1 x float>, metadata)8835declare <1 x float> @llvm.experimental.constrained.trunc.v1f32(<1 x float>, metadata)8836declare <1 x double> @llvm.experimental.constrained.sitofp.v1f64.v1i32(<1 x i32>, metadata, metadata)8837declare <1 x float> @llvm.experimental.constrained.sitofp.v1f32.v1i32(<1 x i32>, metadata, metadata)8838declare <1 x double> @llvm.experimental.constrained.sitofp.v1f64.v1i64(<1 x i64>, metadata, metadata)8839declare <1 x float> @llvm.experimental.constrained.sitofp.v1f32.v1i64(<1 x i64>, metadata, metadata)8840declare <1 x double> @llvm.experimental.constrained.uitofp.v1f64.v1i32(<1 x i32>, metadata, metadata)8841declare <1 x float> @llvm.experimental.constrained.uitofp.v1f32.v1i32(<1 x i32>, metadata, metadata)8842declare <1 x double> @llvm.experimental.constrained.uitofp.v1f64.v1i64(<1 x i64>, metadata, metadata)8843declare <1 x float> @llvm.experimental.constrained.uitofp.v1f32.v1i64(<1 x i64>, metadata, metadata)8844 8845; Illegal width declarations8846declare <3 x float> @llvm.experimental.constrained.fadd.v3f32(<3 x float>, <3 x float>, metadata, metadata)8847declare <3 x double> @llvm.experimental.constrained.fadd.v3f64(<3 x double>, <3 x double>, metadata, metadata)8848declare <3 x float> @llvm.experimental.constrained.fsub.v3f32(<3 x float>, <3 x float>, metadata, metadata)8849declare <3 x double> @llvm.experimental.constrained.fsub.v3f64(<3 x double>, <3 x double>, metadata, metadata)8850declare <3 x float> @llvm.experimental.constrained.fmul.v3f32(<3 x float>, <3 x float>, metadata, metadata)8851declare <3 x double> @llvm.experimental.constrained.fmul.v3f64(<3 x double>, <3 x double>, metadata, metadata)8852declare <3 x float> @llvm.experimental.constrained.fdiv.v3f32(<3 x float>, <3 x float>, metadata, metadata)8853declare <3 x double> @llvm.experimental.constrained.fdiv.v3f64(<3 x double>, <3 x double>, metadata, metadata)8854declare <3 x float> @llvm.experimental.constrained.frem.v3f32(<3 x float>, <3 x float>, metadata, metadata)8855declare <3 x double> @llvm.experimental.constrained.frem.v3f64(<3 x double>, <3 x double>, metadata, metadata)8856declare <3 x float> @llvm.experimental.constrained.sqrt.v3f32(<3 x float>, metadata, metadata)8857declare <3 x double> @llvm.experimental.constrained.sqrt.v3f64(<3 x double>, metadata, metadata)8858declare <3 x float> @llvm.experimental.constrained.pow.v3f32(<3 x float>, <3 x float>, metadata, metadata)8859declare <3 x double> @llvm.experimental.constrained.pow.v3f64(<3 x double>, <3 x double>, metadata, metadata)8860declare <3 x float> @llvm.experimental.constrained.powi.v3f32(<3 x float>, i32, metadata, metadata)8861declare <3 x double> @llvm.experimental.constrained.powi.v3f64(<3 x double>, i32, metadata, metadata)8862declare <3 x float> @llvm.experimental.constrained.sin.v3f32(<3 x float>, metadata, metadata)8863declare <3 x double> @llvm.experimental.constrained.sin.v3f64(<3 x double>, metadata, metadata)8864declare <3 x float> @llvm.experimental.constrained.cos.v3f32(<3 x float>, metadata, metadata)8865declare <3 x double> @llvm.experimental.constrained.cos.v3f64(<3 x double>, metadata, metadata)8866declare <3 x float> @llvm.experimental.constrained.tan.v3f32(<3 x float>, metadata, metadata)8867declare <3 x double> @llvm.experimental.constrained.tan.v3f64(<3 x double>, metadata, metadata)8868declare <3 x float> @llvm.experimental.constrained.atan2.v3f32(<3 x float>, <3 x float>, metadata, metadata)8869declare <3 x double> @llvm.experimental.constrained.atan2.v3f64(<3 x double>, <3 x double>, metadata, metadata)8870declare <3 x float> @llvm.experimental.constrained.exp.v3f32(<3 x float>, metadata, metadata)8871declare <3 x double> @llvm.experimental.constrained.exp.v3f64(<3 x double>, metadata, metadata)8872declare <3 x float> @llvm.experimental.constrained.exp2.v3f32(<3 x float>, metadata, metadata)8873declare <3 x double> @llvm.experimental.constrained.exp2.v3f64(<3 x double>, metadata, metadata)8874declare <3 x float> @llvm.experimental.constrained.log.v3f32(<3 x float>, metadata, metadata)8875declare <3 x double> @llvm.experimental.constrained.log.v3f64(<3 x double>, metadata, metadata)8876declare <3 x float> @llvm.experimental.constrained.log10.v3f32(<3 x float>, metadata, metadata)8877declare <3 x double> @llvm.experimental.constrained.log10.v3f64(<3 x double>, metadata, metadata)8878declare <3 x float> @llvm.experimental.constrained.log2.v3f32(<3 x float>, metadata, metadata)8879declare <3 x double> @llvm.experimental.constrained.log2.v3f64(<3 x double>, metadata, metadata)8880declare <3 x float> @llvm.experimental.constrained.rint.v3f32(<3 x float>, metadata, metadata)8881declare <3 x double> @llvm.experimental.constrained.rint.v3f64(<3 x double>, metadata, metadata)8882declare <3 x float> @llvm.experimental.constrained.nearbyint.v3f32(<3 x float>, metadata, metadata)8883declare <3 x double> @llvm.experimental.constrained.nearbyint.v3f64(<3 x double>, metadata, metadata)8884declare <3 x float> @llvm.experimental.constrained.maxnum.v3f32(<3 x float>, <3 x float>, metadata)8885declare <3 x double> @llvm.experimental.constrained.maxnum.v3f64(<3 x double>, <3 x double>, metadata)8886declare <3 x float> @llvm.experimental.constrained.minnum.v3f32(<3 x float>, <3 x float>, metadata)8887declare <3 x double> @llvm.experimental.constrained.minnum.v3f64(<3 x double>, <3 x double>, metadata)8888declare <3 x i32> @llvm.experimental.constrained.fptosi.v3i32.v3f32(<3 x float>, metadata)8889declare <3 x i64> @llvm.experimental.constrained.fptosi.v3i64.v3f32(<3 x float>, metadata)8890declare <3 x i32> @llvm.experimental.constrained.fptosi.v3i32.v3f64(<3 x double>, metadata)8891declare <3 x i64> @llvm.experimental.constrained.fptosi.v3i64.v3f64(<3 x double>, metadata)8892declare <3 x i32> @llvm.experimental.constrained.fptoui.v3i32.v3f32(<3 x float>, metadata)8893declare <3 x i64> @llvm.experimental.constrained.fptoui.v3i64.v3f32(<3 x float>, metadata)8894declare <3 x i32> @llvm.experimental.constrained.fptoui.v3i32.v3f64(<3 x double>, metadata)8895declare <3 x i64> @llvm.experimental.constrained.fptoui.v3i64.v3f64(<3 x double>, metadata)8896declare <3 x float> @llvm.experimental.constrained.fptrunc.v3f32.v3f64(<3 x double>, metadata, metadata)8897declare <3 x double> @llvm.experimental.constrained.fpext.v3f64.v3f32(<3 x float>, metadata)8898declare <3 x float> @llvm.experimental.constrained.ceil.v3f32(<3 x float>, metadata)8899declare <3 x double> @llvm.experimental.constrained.ceil.v3f64(<3 x double>, metadata)8900declare <3 x float> @llvm.experimental.constrained.floor.v3f32(<3 x float>, metadata)8901declare <3 x double> @llvm.experimental.constrained.floor.v3f64(<3 x double>, metadata)8902declare <3 x float> @llvm.experimental.constrained.round.v3f32(<3 x float>, metadata)8903declare <3 x double> @llvm.experimental.constrained.round.v3f64(<3 x double>, metadata)8904declare <3 x float> @llvm.experimental.constrained.trunc.v3f32(<3 x float>, metadata)8905declare <3 x double> @llvm.experimental.constrained.trunc.v3f64(<3 x double>, metadata)8906declare <3 x double> @llvm.experimental.constrained.sitofp.v3f64.v3i32(<3 x i32>, metadata, metadata)8907declare <3 x float> @llvm.experimental.constrained.sitofp.v3f32.v3i32(<3 x i32>, metadata, metadata)8908declare <3 x double> @llvm.experimental.constrained.sitofp.v3f64.v3i64(<3 x i64>, metadata, metadata)8909declare <3 x float> @llvm.experimental.constrained.sitofp.v3f32.v3i64(<3 x i64>, metadata, metadata)8910declare <3 x double> @llvm.experimental.constrained.uitofp.v3f64.v3i32(<3 x i32>, metadata, metadata)8911declare <3 x float> @llvm.experimental.constrained.uitofp.v3f32.v3i32(<3 x i32>, metadata, metadata)8912declare <3 x double> @llvm.experimental.constrained.uitofp.v3f64.v3i64(<3 x i64>, metadata, metadata)8913declare <3 x float> @llvm.experimental.constrained.uitofp.v3f32.v3i64(<3 x i64>, metadata, metadata)8914 8915; Double width declarations8916declare <4 x double> @llvm.experimental.constrained.fadd.v4f64(<4 x double>, <4 x double>, metadata, metadata)8917declare <4 x double> @llvm.experimental.constrained.fsub.v4f64(<4 x double>, <4 x double>, metadata, metadata)8918declare <4 x double> @llvm.experimental.constrained.fmul.v4f64(<4 x double>, <4 x double>, metadata, metadata)8919declare <4 x double> @llvm.experimental.constrained.fdiv.v4f64(<4 x double>, <4 x double>, metadata, metadata)8920declare <4 x double> @llvm.experimental.constrained.frem.v4f64(<4 x double>, <4 x double>, metadata, metadata)8921declare <4 x double> @llvm.experimental.constrained.sqrt.v4f64(<4 x double>, metadata, metadata)8922declare <4 x double> @llvm.experimental.constrained.pow.v4f64(<4 x double>, <4 x double>, metadata, metadata)8923declare <4 x double> @llvm.experimental.constrained.powi.v4f64(<4 x double>, i32, metadata, metadata)8924declare <4 x double> @llvm.experimental.constrained.sin.v4f64(<4 x double>, metadata, metadata)8925declare <4 x double> @llvm.experimental.constrained.cos.v4f64(<4 x double>, metadata, metadata)8926declare <4 x double> @llvm.experimental.constrained.tan.v4f64(<4 x double>, metadata, metadata)8927declare <4 x double> @llvm.experimental.constrained.atan2.v4f64(<4 x double>, <4 x double>, metadata, metadata)8928declare <4 x double> @llvm.experimental.constrained.exp.v4f64(<4 x double>, metadata, metadata)8929declare <4 x double> @llvm.experimental.constrained.exp2.v4f64(<4 x double>, metadata, metadata)8930declare <4 x double> @llvm.experimental.constrained.log.v4f64(<4 x double>, metadata, metadata)8931declare <4 x double> @llvm.experimental.constrained.log10.v4f64(<4 x double>, metadata, metadata)8932declare <4 x double> @llvm.experimental.constrained.log2.v4f64(<4 x double>, metadata, metadata)8933declare <4 x double> @llvm.experimental.constrained.rint.v4f64(<4 x double>, metadata, metadata)8934declare <4 x double> @llvm.experimental.constrained.nearbyint.v4f64(<4 x double>, metadata, metadata)8935declare <4 x double> @llvm.experimental.constrained.maxnum.v4f64(<4 x double>, <4 x double>, metadata)8936declare <4 x double> @llvm.experimental.constrained.minnum.v4f64(<4 x double>, <4 x double>, metadata)8937declare <4 x i32> @llvm.experimental.constrained.fptosi.v4i32.v4f32(<4 x float>, metadata)8938declare <4 x i64> @llvm.experimental.constrained.fptosi.v4i64.v4f32(<4 x float>, metadata)8939declare <4 x i32> @llvm.experimental.constrained.fptosi.v4i32.v4f64(<4 x double>, metadata)8940declare <4 x i64> @llvm.experimental.constrained.fptosi.v4i64.v4f64(<4 x double>, metadata)8941declare <4 x i32> @llvm.experimental.constrained.fptoui.v4i32.v4f32(<4 x float>, metadata)8942declare <4 x i64> @llvm.experimental.constrained.fptoui.v4i64.v4f32(<4 x float>, metadata)8943declare <4 x i32> @llvm.experimental.constrained.fptoui.v4i32.v4f64(<4 x double>, metadata)8944declare <4 x i64> @llvm.experimental.constrained.fptoui.v4i64.v4f64(<4 x double>, metadata)8945declare <4 x float> @llvm.experimental.constrained.fptrunc.v4f32.v4f64(<4 x double>, metadata, metadata)8946declare <4 x double> @llvm.experimental.constrained.fpext.v4f64.v4f32(<4 x float>, metadata)8947declare <4 x double> @llvm.experimental.constrained.ceil.v4f64(<4 x double>, metadata)8948declare <4 x double> @llvm.experimental.constrained.floor.v4f64(<4 x double>, metadata)8949declare <4 x double> @llvm.experimental.constrained.round.v4f64(<4 x double>, metadata)8950declare <4 x double> @llvm.experimental.constrained.trunc.v4f64(<4 x double>, metadata)8951declare <4 x float> @llvm.experimental.constrained.sitofp.v4f32.v4i16(<4 x i16>, metadata, metadata)8952declare <4 x double> @llvm.experimental.constrained.sitofp.v4f64.v4i32(<4 x i32>, metadata, metadata)8953declare <4 x float> @llvm.experimental.constrained.sitofp.v4f32.v4i32(<4 x i32>, metadata, metadata)8954declare <4 x double> @llvm.experimental.constrained.sitofp.v4f64.v4i64(<4 x i64>, metadata, metadata)8955declare <4 x float> @llvm.experimental.constrained.sitofp.v4f32.v4i64(<4 x i64>, metadata, metadata)8956declare <4 x float> @llvm.experimental.constrained.uitofp.v4f32.v4i16(<4 x i16>, metadata, metadata)8957declare <4 x double> @llvm.experimental.constrained.uitofp.v4f64.v4i32(<4 x i32>, metadata, metadata)8958declare <4 x float> @llvm.experimental.constrained.uitofp.v4f32.v4i32(<4 x i32>, metadata, metadata)8959declare <4 x double> @llvm.experimental.constrained.uitofp.v4f64.v4i64(<4 x i64>, metadata, metadata)8960declare <4 x float> @llvm.experimental.constrained.uitofp.v4f32.v4i64(<4 x i64>, metadata, metadata)8961