[llvm] r361831 - Revert 361827. It broke the bots.

Kevin P. Neal via llvm-commits llvm-commits at lists.llvm.org
Tue May 28 07:37:45 PDT 2019


Author: kpn
Date: Tue May 28 07:37:45 2019
New Revision: 361831

URL: http://llvm.org/viewvc/llvm-project?rev=361831&view=rev
Log:
Revert 361827. It broke the bots.


Removed:
    llvm/trunk/test/CodeGen/PowerPC/vector-constrained-fp-intrinsics.ll

Removed: llvm/trunk/test/CodeGen/PowerPC/vector-constrained-fp-intrinsics.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/PowerPC/vector-constrained-fp-intrinsics.ll?rev=361830&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/PowerPC/vector-constrained-fp-intrinsics.ll (original)
+++ llvm/trunk/test/CodeGen/PowerPC/vector-constrained-fp-intrinsics.ll (removed)
@@ -1,10810 +0,0 @@
-; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
-; RUN: llc -O3 -mtriple=powerpc64le-linux-gnu < %s | FileCheck --check-prefix=PC64LE %s
-; RUN: llc -O3 -mtriple=powerpc64le-linux-gnu -mcpu=pwr9 < %s | FileCheck --check-prefix=PC64LE9 %s
-; RUN: llc -O3 -mtriple=powerpc64-linux-gnu < %s | FileCheck --check-prefix=PC64 %s
-
-define <1 x float> @constrained_vector_fdiv_v1f32() {
-; PC64LE-LABEL: constrained_vector_fdiv_v1f32:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    addis 3, 2, .LCPI0_0 at toc@ha
-; PC64LE-NEXT:    addis 4, 2, .LCPI0_1 at toc@ha
-; PC64LE-NEXT:    lfs 0, .LCPI0_0 at toc@l(3)
-; PC64LE-NEXT:    lfs 1, .LCPI0_1 at toc@l(4)
-; PC64LE-NEXT:    xsdivsp 0, 1, 0
-; PC64LE-NEXT:    xscvdpspn 0, 0
-; PC64LE-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_fdiv_v1f32:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    addis 3, 2, .LCPI0_0 at toc@ha
-; PC64LE9-NEXT:    lfs 0, .LCPI0_0 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI0_1 at toc@ha
-; PC64LE9-NEXT:    lfs 1, .LCPI0_1 at toc@l(3)
-; PC64LE9-NEXT:    xsdivsp 0, 1, 0
-; PC64LE9-NEXT:    xscvdpspn 0, 0
-; PC64LE9-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_fdiv_v1f32:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    addis 3, 2, .LCPI0_0 at toc@ha
-; PC64-NEXT:    lfs 0, .LCPI0_0 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI0_1 at toc@ha
-; PC64-NEXT:    lfs 1, .LCPI0_1 at toc@l(3)
-; PC64-NEXT:    fdivs 1, 1, 0
-; PC64-NEXT:    blr
-entry:
-  %div = call <1 x float> @llvm.experimental.constrained.fdiv.v1f32(
-           <1 x float> <float 1.000000e+00>,
-           <1 x float> <float 1.000000e+01>,
-           metadata !"round.dynamic",
-           metadata !"fpexcept.strict")
-  ret <1 x float> %div
-}
-
-define <2 x double> @constrained_vector_fdiv_v2f64() {
-; PC64LE-LABEL: constrained_vector_fdiv_v2f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    addis 3, 2, .LCPI1_0 at toc@ha
-; PC64LE-NEXT:    addis 4, 2, .LCPI1_1 at toc@ha
-; PC64LE-NEXT:    addi 3, 3, .LCPI1_0 at toc@l
-; PC64LE-NEXT:    addi 4, 4, .LCPI1_1 at toc@l
-; PC64LE-NEXT:    lxvd2x 0, 0, 3
-; PC64LE-NEXT:    lxvd2x 1, 0, 4
-; PC64LE-NEXT:    xxswapd 0, 0
-; PC64LE-NEXT:    xxswapd 1, 1
-; PC64LE-NEXT:    xvdivdp 34, 1, 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_fdiv_v2f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    addis 3, 2, .LCPI1_0 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI1_0 at toc@l
-; PC64LE9-NEXT:    lxvx 0, 0, 3
-; PC64LE9-NEXT:    addis 3, 2, .LCPI1_1 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI1_1 at toc@l
-; PC64LE9-NEXT:    lxvx 1, 0, 3
-; PC64LE9-NEXT:    xvdivdp 34, 1, 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_fdiv_v2f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    addis 3, 2, .LCPI1_0 at toc@ha
-; PC64-NEXT:    lfs 0, .LCPI1_0 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI1_1 at toc@ha
-; PC64-NEXT:    lfs 1, .LCPI1_1 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI1_2 at toc@ha
-; PC64-NEXT:    lfs 2, .LCPI1_2 at toc@l(3)
-; PC64-NEXT:    fdiv 1, 1, 0
-; PC64-NEXT:    fdiv 2, 2, 0
-; PC64-NEXT:    blr
-entry:
-  %div = call <2 x double> @llvm.experimental.constrained.fdiv.v2f64(
-           <2 x double> <double 1.000000e+00, double 2.000000e+00>,
-           <2 x double> <double 1.000000e+01, double 1.000000e+01>,
-           metadata !"round.dynamic",
-           metadata !"fpexcept.strict")
-  ret <2 x double> %div
-}
-
-define <3 x float> @constrained_vector_fdiv_v3f32() {
-; PC64LE-LABEL: constrained_vector_fdiv_v3f32:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    addis 3, 2, .LCPI2_0 at toc@ha
-; PC64LE-NEXT:    addis 4, 2, .LCPI2_3 at toc@ha
-; PC64LE-NEXT:    addis 5, 2, .LCPI2_2 at toc@ha
-; PC64LE-NEXT:    lfs 0, .LCPI2_0 at toc@l(3)
-; PC64LE-NEXT:    lfs 1, .LCPI2_3 at toc@l(4)
-; PC64LE-NEXT:    lfs 2, .LCPI2_2 at toc@l(5)
-; PC64LE-NEXT:    addis 3, 2, .LCPI2_1 at toc@ha
-; PC64LE-NEXT:    xsdivsp 1, 1, 0
-; PC64LE-NEXT:    lfs 3, .LCPI2_1 at toc@l(3)
-; PC64LE-NEXT:    addis 3, 2, .LCPI2_4 at toc@ha
-; PC64LE-NEXT:    xsdivsp 2, 2, 0
-; PC64LE-NEXT:    addi 3, 3, .LCPI2_4 at toc@l
-; PC64LE-NEXT:    lvx 4, 0, 3
-; PC64LE-NEXT:    xsdivsp 0, 3, 0
-; PC64LE-NEXT:    xscvdpspn 1, 1
-; PC64LE-NEXT:    xscvdpspn 2, 2
-; PC64LE-NEXT:    xscvdpspn 0, 0
-; PC64LE-NEXT:    xxsldwi 34, 1, 1, 1
-; PC64LE-NEXT:    xxsldwi 35, 2, 2, 1
-; PC64LE-NEXT:    vmrglw 2, 3, 2
-; PC64LE-NEXT:    xxsldwi 35, 0, 0, 1
-; PC64LE-NEXT:    vperm 2, 3, 2, 4
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_fdiv_v3f32:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    addis 3, 2, .LCPI2_0 at toc@ha
-; PC64LE9-NEXT:    lfs 0, .LCPI2_0 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI2_1 at toc@ha
-; PC64LE9-NEXT:    lfs 1, .LCPI2_1 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI2_2 at toc@ha
-; PC64LE9-NEXT:    xsdivsp 1, 1, 0
-; PC64LE9-NEXT:    lfs 2, .LCPI2_2 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI2_3 at toc@ha
-; PC64LE9-NEXT:    lfs 3, .LCPI2_3 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI2_4 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI2_4 at toc@l
-; PC64LE9-NEXT:    lxvx 36, 0, 3
-; PC64LE9-NEXT:    xsdivsp 2, 2, 0
-; PC64LE9-NEXT:    xsdivsp 0, 3, 0
-; PC64LE9-NEXT:    xscvdpspn 0, 0
-; PC64LE9-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE9-NEXT:    xscvdpspn 0, 2
-; PC64LE9-NEXT:    xxsldwi 35, 0, 0, 1
-; PC64LE9-NEXT:    xscvdpspn 0, 1
-; PC64LE9-NEXT:    vmrglw 2, 3, 2
-; PC64LE9-NEXT:    xxsldwi 35, 0, 0, 1
-; PC64LE9-NEXT:    vperm 2, 3, 2, 4
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_fdiv_v3f32:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    addis 3, 2, .LCPI2_0 at toc@ha
-; PC64-NEXT:    lfs 0, .LCPI2_0 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI2_1 at toc@ha
-; PC64-NEXT:    lfs 1, .LCPI2_1 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI2_2 at toc@ha
-; PC64-NEXT:    lfs 2, .LCPI2_2 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI2_3 at toc@ha
-; PC64-NEXT:    lfs 3, .LCPI2_3 at toc@l(3)
-; PC64-NEXT:    fdivs 1, 1, 0
-; PC64-NEXT:    fdivs 2, 2, 0
-; PC64-NEXT:    fdivs 3, 3, 0
-; PC64-NEXT:    blr
-entry:
-  %div = call <3 x float> @llvm.experimental.constrained.fdiv.v3f32(
-           <3 x float> <float 1.000000e+00, float 2.000000e+00, float 3.000000e+00>,
-           <3 x float> <float 1.000000e+01, float 1.000000e+01, float 1.000000e+01>,
-           metadata !"round.dynamic",
-           metadata !"fpexcept.strict")
-  ret <3 x float> %div
-}
-
-define <3 x double> @constrained_vector_fdiv_v3f64() {
-; PC64LE-LABEL: constrained_vector_fdiv_v3f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    addis 3, 2, .LCPI3_2 at toc@ha
-; PC64LE-NEXT:    addis 4, 2, .LCPI3_3 at toc@ha
-; PC64LE-NEXT:    addi 3, 3, .LCPI3_2 at toc@l
-; PC64LE-NEXT:    addi 4, 4, .LCPI3_3 at toc@l
-; PC64LE-NEXT:    lxvd2x 0, 0, 3
-; PC64LE-NEXT:    lxvd2x 1, 0, 4
-; PC64LE-NEXT:    addis 3, 2, .LCPI3_0 at toc@ha
-; PC64LE-NEXT:    addis 4, 2, .LCPI3_1 at toc@ha
-; PC64LE-NEXT:    lfs 3, .LCPI3_0 at toc@l(3)
-; PC64LE-NEXT:    xxswapd 0, 0
-; PC64LE-NEXT:    xxswapd 1, 1
-; PC64LE-NEXT:    xvdivdp 2, 1, 0
-; PC64LE-NEXT:    lfs 0, .LCPI3_1 at toc@l(4)
-; PC64LE-NEXT:    xsdivdp 3, 0, 3
-; PC64LE-NEXT:    xxswapd 1, 2
-; PC64LE-NEXT:    # kill: def $f2 killed $f2 killed $vsl2
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 killed $vsl1
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_fdiv_v3f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    addis 3, 2, .LCPI3_0 at toc@ha
-; PC64LE9-NEXT:    lfs 0, .LCPI3_0 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI3_1 at toc@ha
-; PC64LE9-NEXT:    lfs 1, .LCPI3_1 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI3_2 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI3_2 at toc@l
-; PC64LE9-NEXT:    xsdivdp 3, 1, 0
-; PC64LE9-NEXT:    lxvx 0, 0, 3
-; PC64LE9-NEXT:    addis 3, 2, .LCPI3_3 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI3_3 at toc@l
-; PC64LE9-NEXT:    lxvx 1, 0, 3
-; PC64LE9-NEXT:    xvdivdp 2, 1, 0
-; PC64LE9-NEXT:    xxswapd 1, 2
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 killed $vsl1
-; PC64LE9-NEXT:    # kill: def $f2 killed $f2 killed $vsl2
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_fdiv_v3f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    addis 3, 2, .LCPI3_0 at toc@ha
-; PC64-NEXT:    lfs 0, .LCPI3_0 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI3_1 at toc@ha
-; PC64-NEXT:    lfs 1, .LCPI3_1 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI3_2 at toc@ha
-; PC64-NEXT:    lfs 2, .LCPI3_2 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI3_3 at toc@ha
-; PC64-NEXT:    lfs 3, .LCPI3_3 at toc@l(3)
-; PC64-NEXT:    fdiv 1, 1, 0
-; PC64-NEXT:    fdiv 2, 2, 0
-; PC64-NEXT:    fdiv 3, 3, 0
-; PC64-NEXT:    blr
-entry:
-  %div = call <3 x double> @llvm.experimental.constrained.fdiv.v3f64(
-           <3 x double> <double 1.000000e+00, double 2.000000e+00, double 3.000000e+00>,
-           <3 x double> <double 1.000000e+01, double 1.000000e+01, double 1.000000e+01>,
-           metadata !"round.dynamic",
-           metadata !"fpexcept.strict")
-  ret <3 x double> %div
-}
-
-define <4 x double> @constrained_vector_fdiv_v4f64() {
-; PC64LE-LABEL: constrained_vector_fdiv_v4f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    addis 3, 2, .LCPI4_0 at toc@ha
-; PC64LE-NEXT:    addis 4, 2, .LCPI4_1 at toc@ha
-; PC64LE-NEXT:    addis 5, 2, .LCPI4_2 at toc@ha
-; PC64LE-NEXT:    addi 3, 3, .LCPI4_0 at toc@l
-; PC64LE-NEXT:    lxvd2x 0, 0, 3
-; PC64LE-NEXT:    addi 3, 4, .LCPI4_1 at toc@l
-; PC64LE-NEXT:    addi 4, 5, .LCPI4_2 at toc@l
-; PC64LE-NEXT:    lxvd2x 1, 0, 3
-; PC64LE-NEXT:    lxvd2x 2, 0, 4
-; PC64LE-NEXT:    xxswapd 0, 0
-; PC64LE-NEXT:    xxswapd 1, 1
-; PC64LE-NEXT:    xxswapd 2, 2
-; PC64LE-NEXT:    xvdivdp 34, 1, 0
-; PC64LE-NEXT:    xvdivdp 35, 2, 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_fdiv_v4f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    addis 3, 2, .LCPI4_0 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI4_0 at toc@l
-; PC64LE9-NEXT:    lxvx 0, 0, 3
-; PC64LE9-NEXT:    addis 3, 2, .LCPI4_1 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI4_1 at toc@l
-; PC64LE9-NEXT:    lxvx 1, 0, 3
-; PC64LE9-NEXT:    addis 3, 2, .LCPI4_2 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI4_2 at toc@l
-; PC64LE9-NEXT:    xvdivdp 34, 1, 0
-; PC64LE9-NEXT:    lxvx 1, 0, 3
-; PC64LE9-NEXT:    xvdivdp 35, 1, 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_fdiv_v4f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    addis 3, 2, .LCPI4_0 at toc@ha
-; PC64-NEXT:    lfs 0, .LCPI4_0 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI4_1 at toc@ha
-; PC64-NEXT:    lfs 1, .LCPI4_1 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI4_2 at toc@ha
-; PC64-NEXT:    lfs 2, .LCPI4_2 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI4_3 at toc@ha
-; PC64-NEXT:    lfs 3, .LCPI4_3 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI4_4 at toc@ha
-; PC64-NEXT:    fdiv 1, 1, 0
-; PC64-NEXT:    lfs 4, .LCPI4_4 at toc@l(3)
-; PC64-NEXT:    fdiv 2, 2, 0
-; PC64-NEXT:    fdiv 3, 3, 0
-; PC64-NEXT:    fdiv 4, 4, 0
-; PC64-NEXT:    blr
-entry:
-  %div = call <4 x double> @llvm.experimental.constrained.fdiv.v4f64(
-           <4 x double> <double 1.000000e+00, double 2.000000e+00,
-                         double 3.000000e+00, double 4.000000e+00>,
-           <4 x double> <double 1.000000e+01, double 1.000000e+01,
-                         double 1.000000e+01, double 1.000000e+01>,
-           metadata !"round.dynamic",
-           metadata !"fpexcept.strict")
-  ret <4 x double> %div
-}
-
-define <1 x float> @constrained_vector_frem_v1f32() {
-; PC64LE-LABEL: constrained_vector_frem_v1f32:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -32(1)
-; PC64LE-NEXT:    .cfi_def_cfa_offset 32
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    addis 3, 2, .LCPI5_0 at toc@ha
-; PC64LE-NEXT:    addis 4, 2, .LCPI5_1 at toc@ha
-; PC64LE-NEXT:    lfs 1, .LCPI5_0 at toc@l(3)
-; PC64LE-NEXT:    lfs 2, .LCPI5_1 at toc@l(4)
-; PC64LE-NEXT:    bl fmodf
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    xscvdpspn 0, 1
-; PC64LE-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE-NEXT:    addi 1, 1, 32
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_frem_v1f32:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -32(1)
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 32
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    addis 3, 2, .LCPI5_0 at toc@ha
-; PC64LE9-NEXT:    lfs 1, .LCPI5_0 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI5_1 at toc@ha
-; PC64LE9-NEXT:    lfs 2, .LCPI5_1 at toc@l(3)
-; PC64LE9-NEXT:    bl fmodf
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    xscvdpspn 0, 1
-; PC64LE9-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE9-NEXT:    addi 1, 1, 32
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_frem_v1f32:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -112(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 112
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    addis 3, 2, .LCPI5_0 at toc@ha
-; PC64-NEXT:    lfs 1, .LCPI5_0 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI5_1 at toc@ha
-; PC64-NEXT:    lfs 2, .LCPI5_1 at toc@l(3)
-; PC64-NEXT:    bl fmodf
-; PC64-NEXT:    nop
-; PC64-NEXT:    addi 1, 1, 112
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %rem = call <1 x float> @llvm.experimental.constrained.frem.v1f32(
-           <1 x float> <float 1.000000e+00>,
-           <1 x float> <float 1.000000e+01>,
-           metadata !"round.dynamic",
-           metadata !"fpexcept.strict")
-  ret <1 x float> %rem
-}
-
-define <2 x double> @constrained_vector_frem_v2f64() {
-; PC64LE-LABEL: constrained_vector_frem_v2f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    .cfi_def_cfa_offset 80
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    .cfi_offset f31, -8
-; PC64LE-NEXT:    stfd 31, -8(1) # 8-byte Folded Spill
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -80(1)
-; PC64LE-NEXT:    addis 4, 2, .LCPI6_1 at toc@ha
-; PC64LE-NEXT:    addis 3, 2, .LCPI6_0 at toc@ha
-; PC64LE-NEXT:    lfs 31, .LCPI6_1 at toc@l(4)
-; PC64LE-NEXT:    lfs 1, .LCPI6_0 at toc@l(3)
-; PC64LE-NEXT:    fmr 2, 31
-; PC64LE-NEXT:    bl fmod
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    fmr 2, 31
-; PC64LE-NEXT:    stxvd2x 1, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI6_2 at toc@ha
-; PC64LE-NEXT:    lfs 1, .LCPI6_2 at toc@l(3)
-; PC64LE-NEXT:    bl fmod
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    lxvd2x 0, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    xxmrghd 34, 1, 0
-; PC64LE-NEXT:    addi 1, 1, 80
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    lfd 31, -8(1) # 8-byte Folded Reload
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_frem_v2f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 64
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    .cfi_offset f31, -8
-; PC64LE9-NEXT:    stfd 31, -8(1) # 8-byte Folded Spill
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -64(1)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI6_0 at toc@ha
-; PC64LE9-NEXT:    lfs 1, .LCPI6_0 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI6_1 at toc@ha
-; PC64LE9-NEXT:    lfs 31, .LCPI6_1 at toc@l(3)
-; PC64LE9-NEXT:    fmr 2, 31
-; PC64LE9-NEXT:    bl fmod
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI6_2 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    stxv 1, 32(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    lfs 1, .LCPI6_2 at toc@l(3)
-; PC64LE9-NEXT:    fmr 2, 31
-; PC64LE9-NEXT:    bl fmod
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    lxv 0, 32(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    xxmrghd 34, 1, 0
-; PC64LE9-NEXT:    addi 1, 1, 64
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    lfd 31, -8(1) # 8-byte Folded Reload
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_frem_v2f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -128(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 128
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f30, -16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI6_0 at toc@ha
-; PC64-NEXT:    stfd 31, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 30, 112(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfs 1, .LCPI6_0 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI6_1 at toc@ha
-; PC64-NEXT:    lfs 31, .LCPI6_1 at toc@l(3)
-; PC64-NEXT:    fmr 2, 31
-; PC64-NEXT:    bl fmod
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI6_2 at toc@ha
-; PC64-NEXT:    fmr 30, 1
-; PC64-NEXT:    lfs 1, .LCPI6_2 at toc@l(3)
-; PC64-NEXT:    fmr 2, 31
-; PC64-NEXT:    bl fmod
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 2, 1
-; PC64-NEXT:    fmr 1, 30
-; PC64-NEXT:    lfd 31, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 30, 112(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 128
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %rem = call <2 x double> @llvm.experimental.constrained.frem.v2f64(
-           <2 x double> <double 1.000000e+00, double 2.000000e+00>,
-           <2 x double> <double 1.000000e+01, double 1.000000e+01>,
-           metadata !"round.dynamic",
-           metadata !"fpexcept.strict")
-  ret <2 x double> %rem
-}
-
-define <3 x float> @constrained_vector_frem_v3f32() {
-; PC64LE-LABEL: constrained_vector_frem_v3f32:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    .cfi_def_cfa_offset 64
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    .cfi_offset f29, -24
-; PC64LE-NEXT:    .cfi_offset f30, -16
-; PC64LE-NEXT:    .cfi_offset f31, -8
-; PC64LE-NEXT:    stfd 29, -24(1) # 8-byte Folded Spill
-; PC64LE-NEXT:    stfd 30, -16(1) # 8-byte Folded Spill
-; PC64LE-NEXT:    stfd 31, -8(1) # 8-byte Folded Spill
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -64(1)
-; PC64LE-NEXT:    addis 4, 2, .LCPI7_1 at toc@ha
-; PC64LE-NEXT:    addis 3, 2, .LCPI7_0 at toc@ha
-; PC64LE-NEXT:    lfs 31, .LCPI7_1 at toc@l(4)
-; PC64LE-NEXT:    lfs 1, .LCPI7_0 at toc@l(3)
-; PC64LE-NEXT:    fmr 2, 31
-; PC64LE-NEXT:    bl fmodf
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    addis 3, 2, .LCPI7_2 at toc@ha
-; PC64LE-NEXT:    fmr 2, 31
-; PC64LE-NEXT:    fmr 30, 1
-; PC64LE-NEXT:    lfs 1, .LCPI7_2 at toc@l(3)
-; PC64LE-NEXT:    bl fmodf
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    addis 3, 2, .LCPI7_3 at toc@ha
-; PC64LE-NEXT:    fmr 2, 31
-; PC64LE-NEXT:    fmr 29, 1
-; PC64LE-NEXT:    lfs 1, .LCPI7_3 at toc@l(3)
-; PC64LE-NEXT:    bl fmodf
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    xscvdpspn 0, 29
-; PC64LE-NEXT:    addis 3, 2, .LCPI7_4 at toc@ha
-; PC64LE-NEXT:    xscvdpspn 1, 1
-; PC64LE-NEXT:    addi 3, 3, .LCPI7_4 at toc@l
-; PC64LE-NEXT:    lvx 4, 0, 3
-; PC64LE-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE-NEXT:    xscvdpspn 0, 30
-; PC64LE-NEXT:    xxsldwi 35, 1, 1, 1
-; PC64LE-NEXT:    vmrglw 2, 2, 3
-; PC64LE-NEXT:    xxsldwi 35, 0, 0, 1
-; PC64LE-NEXT:    vperm 2, 3, 2, 4
-; PC64LE-NEXT:    addi 1, 1, 64
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    lfd 31, -8(1) # 8-byte Folded Reload
-; PC64LE-NEXT:    lfd 30, -16(1) # 8-byte Folded Reload
-; PC64LE-NEXT:    lfd 29, -24(1) # 8-byte Folded Reload
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_frem_v3f32:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 64
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    .cfi_offset f29, -24
-; PC64LE9-NEXT:    .cfi_offset f30, -16
-; PC64LE9-NEXT:    .cfi_offset f31, -8
-; PC64LE9-NEXT:    stfd 29, -24(1) # 8-byte Folded Spill
-; PC64LE9-NEXT:    stfd 30, -16(1) # 8-byte Folded Spill
-; PC64LE9-NEXT:    stfd 31, -8(1) # 8-byte Folded Spill
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -64(1)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI7_0 at toc@ha
-; PC64LE9-NEXT:    lfs 1, .LCPI7_0 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI7_1 at toc@ha
-; PC64LE9-NEXT:    lfs 31, .LCPI7_1 at toc@l(3)
-; PC64LE9-NEXT:    fmr 2, 31
-; PC64LE9-NEXT:    bl fmodf
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI7_2 at toc@ha
-; PC64LE9-NEXT:    fmr 30, 1
-; PC64LE9-NEXT:    lfs 1, .LCPI7_2 at toc@l(3)
-; PC64LE9-NEXT:    fmr 2, 31
-; PC64LE9-NEXT:    bl fmodf
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI7_3 at toc@ha
-; PC64LE9-NEXT:    fmr 29, 1
-; PC64LE9-NEXT:    lfs 1, .LCPI7_3 at toc@l(3)
-; PC64LE9-NEXT:    fmr 2, 31
-; PC64LE9-NEXT:    bl fmodf
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    xscvdpspn 0, 1
-; PC64LE9-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE9-NEXT:    xscvdpspn 0, 29
-; PC64LE9-NEXT:    xxsldwi 35, 0, 0, 1
-; PC64LE9-NEXT:    xscvdpspn 0, 30
-; PC64LE9-NEXT:    addis 3, 2, .LCPI7_4 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI7_4 at toc@l
-; PC64LE9-NEXT:    lxvx 36, 0, 3
-; PC64LE9-NEXT:    vmrglw 2, 3, 2
-; PC64LE9-NEXT:    xxsldwi 35, 0, 0, 1
-; PC64LE9-NEXT:    vperm 2, 3, 2, 4
-; PC64LE9-NEXT:    addi 1, 1, 64
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    lfd 31, -8(1) # 8-byte Folded Reload
-; PC64LE9-NEXT:    lfd 30, -16(1) # 8-byte Folded Reload
-; PC64LE9-NEXT:    lfd 29, -24(1) # 8-byte Folded Reload
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_frem_v3f32:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -144(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 144
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f29, -24
-; PC64-NEXT:    .cfi_offset f30, -16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI7_0 at toc@ha
-; PC64-NEXT:    stfd 31, 136(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 29, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 30, 128(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfs 1, .LCPI7_0 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI7_1 at toc@ha
-; PC64-NEXT:    lfs 31, .LCPI7_1 at toc@l(3)
-; PC64-NEXT:    fmr 2, 31
-; PC64-NEXT:    bl fmodf
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI7_2 at toc@ha
-; PC64-NEXT:    fmr 30, 1
-; PC64-NEXT:    lfs 1, .LCPI7_2 at toc@l(3)
-; PC64-NEXT:    fmr 2, 31
-; PC64-NEXT:    bl fmodf
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI7_3 at toc@ha
-; PC64-NEXT:    fmr 29, 1
-; PC64-NEXT:    lfs 1, .LCPI7_3 at toc@l(3)
-; PC64-NEXT:    fmr 2, 31
-; PC64-NEXT:    bl fmodf
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 3, 1
-; PC64-NEXT:    fmr 1, 30
-; PC64-NEXT:    fmr 2, 29
-; PC64-NEXT:    lfd 31, 136(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 30, 128(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 29, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 144
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %rem = call <3 x float> @llvm.experimental.constrained.frem.v3f32(
-           <3 x float> <float 1.000000e+00, float 2.000000e+00, float 3.000000e+00>,
-           <3 x float> <float 1.000000e+01, float 1.000000e+01, float 1.000000e+01>,
-           metadata !"round.dynamic",
-           metadata !"fpexcept.strict")
-  ret <3 x float> %rem
-}
-
-define <3 x double> @constrained_vector_frem_v3f64() {
-; PC64LE-LABEL: constrained_vector_frem_v3f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -96(1)
-; PC64LE-NEXT:    .cfi_def_cfa_offset 96
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    .cfi_offset f31, -8
-; PC64LE-NEXT:    .cfi_offset v31, -32
-; PC64LE-NEXT:    addis 4, 2, .LCPI8_1 at toc@ha
-; PC64LE-NEXT:    stfd 31, 88(1) # 8-byte Folded Spill
-; PC64LE-NEXT:    li 3, 64
-; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI8_0 at toc@ha
-; PC64LE-NEXT:    lfs 31, .LCPI8_1 at toc@l(4)
-; PC64LE-NEXT:    lfs 1, .LCPI8_0 at toc@l(3)
-; PC64LE-NEXT:    fmr 2, 31
-; PC64LE-NEXT:    bl fmod
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    fmr 2, 31
-; PC64LE-NEXT:    stxvd2x 1, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI8_2 at toc@ha
-; PC64LE-NEXT:    lfs 1, .LCPI8_2 at toc@l(3)
-; PC64LE-NEXT:    bl fmod
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    fmr 2, 31
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    lxvd2x 0, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    addis 3, 2, .LCPI8_3 at toc@ha
-; PC64LE-NEXT:    xxmrghd 63, 1, 0
-; PC64LE-NEXT:    lfs 1, .LCPI8_3 at toc@l(3)
-; PC64LE-NEXT:    bl fmod
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 64
-; PC64LE-NEXT:    fmr 3, 1
-; PC64LE-NEXT:    xxlor 1, 63, 63
-; PC64LE-NEXT:    lfd 31, 88(1) # 8-byte Folded Reload
-; PC64LE-NEXT:    xxlor 2, 63, 63
-; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    addi 1, 1, 96
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_frem_v3f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -80(1)
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 80
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    .cfi_offset f31, -8
-; PC64LE9-NEXT:    .cfi_offset v31, -32
-; PC64LE9-NEXT:    addis 3, 2, .LCPI8_0 at toc@ha
-; PC64LE9-NEXT:    lfs 1, .LCPI8_0 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI8_1 at toc@ha
-; PC64LE9-NEXT:    stfd 31, 72(1) # 8-byte Folded Spill
-; PC64LE9-NEXT:    lfs 31, .LCPI8_1 at toc@l(3)
-; PC64LE9-NEXT:    fmr 2, 31
-; PC64LE9-NEXT:    stxv 63, 48(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    bl fmod
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI8_2 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    stxv 1, 32(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    lfs 1, .LCPI8_2 at toc@l(3)
-; PC64LE9-NEXT:    fmr 2, 31
-; PC64LE9-NEXT:    bl fmod
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    lxv 0, 32(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    addis 3, 2, .LCPI8_3 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    xxmrghd 63, 1, 0
-; PC64LE9-NEXT:    lfs 1, .LCPI8_3 at toc@l(3)
-; PC64LE9-NEXT:    fmr 2, 31
-; PC64LE9-NEXT:    bl fmod
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    fmr 3, 1
-; PC64LE9-NEXT:    xscpsgndp 1, 63, 63
-; PC64LE9-NEXT:    xscpsgndp 2, 63, 63
-; PC64LE9-NEXT:    lxv 63, 48(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    lfd 31, 72(1) # 8-byte Folded Reload
-; PC64LE9-NEXT:    addi 1, 1, 80
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_frem_v3f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -144(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 144
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f29, -24
-; PC64-NEXT:    .cfi_offset f30, -16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI8_0 at toc@ha
-; PC64-NEXT:    stfd 31, 136(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 29, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 30, 128(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfs 1, .LCPI8_0 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI8_1 at toc@ha
-; PC64-NEXT:    lfs 31, .LCPI8_1 at toc@l(3)
-; PC64-NEXT:    fmr 2, 31
-; PC64-NEXT:    bl fmod
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI8_2 at toc@ha
-; PC64-NEXT:    fmr 30, 1
-; PC64-NEXT:    lfs 1, .LCPI8_2 at toc@l(3)
-; PC64-NEXT:    fmr 2, 31
-; PC64-NEXT:    bl fmod
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI8_3 at toc@ha
-; PC64-NEXT:    fmr 29, 1
-; PC64-NEXT:    lfs 1, .LCPI8_3 at toc@l(3)
-; PC64-NEXT:    fmr 2, 31
-; PC64-NEXT:    bl fmod
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 3, 1
-; PC64-NEXT:    fmr 1, 30
-; PC64-NEXT:    fmr 2, 29
-; PC64-NEXT:    lfd 31, 136(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 30, 128(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 29, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 144
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %rem = call <3 x double> @llvm.experimental.constrained.frem.v3f64(
-           <3 x double> <double 1.000000e+00, double 2.000000e+00, double 3.000000e+00>,
-           <3 x double> <double 1.000000e+01, double 1.000000e+01, double 1.000000e+01>,
-           metadata !"round.dynamic",
-           metadata !"fpexcept.strict")
-  ret <3 x double> %rem
-}
-
-define <4 x double> @constrained_vector_frem_v4f64() {
-; PC64LE-LABEL: constrained_vector_frem_v4f64:
-; PC64LE:       # %bb.0:
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -96(1)
-; PC64LE-NEXT:    .cfi_def_cfa_offset 96
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    .cfi_offset f31, -8
-; PC64LE-NEXT:    .cfi_offset v31, -32
-; PC64LE-NEXT:    addis 4, 2, .LCPI9_1 at toc@ha
-; PC64LE-NEXT:    stfd 31, 88(1) # 8-byte Folded Spill
-; PC64LE-NEXT:    li 3, 64
-; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI9_0 at toc@ha
-; PC64LE-NEXT:    lfs 31, .LCPI9_1 at toc@l(4)
-; PC64LE-NEXT:    lfs 1, .LCPI9_0 at toc@l(3)
-; PC64LE-NEXT:    fmr 2, 31
-; PC64LE-NEXT:    bl fmod
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    fmr 2, 31
-; PC64LE-NEXT:    stxvd2x 1, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI9_2 at toc@ha
-; PC64LE-NEXT:    lfs 1, .LCPI9_2 at toc@l(3)
-; PC64LE-NEXT:    bl fmod
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    fmr 2, 31
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    lxvd2x 0, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    addis 3, 2, .LCPI9_3 at toc@ha
-; PC64LE-NEXT:    xxmrghd 63, 1, 0
-; PC64LE-NEXT:    lfs 1, .LCPI9_3 at toc@l(3)
-; PC64LE-NEXT:    bl fmod
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    fmr 2, 31
-; PC64LE-NEXT:    stxvd2x 1, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI9_4 at toc@ha
-; PC64LE-NEXT:    lfs 1, .LCPI9_4 at toc@l(3)
-; PC64LE-NEXT:    bl fmod
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    vmr 2, 31
-; PC64LE-NEXT:    lfd 31, 88(1) # 8-byte Folded Reload
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    lxvd2x 0, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    li 3, 64
-; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    xxmrghd 35, 1, 0
-; PC64LE-NEXT:    addi 1, 1, 96
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_frem_v4f64:
-; PC64LE9:       # %bb.0:
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -80(1)
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 80
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    .cfi_offset f31, -8
-; PC64LE9-NEXT:    .cfi_offset v31, -32
-; PC64LE9-NEXT:    addis 3, 2, .LCPI9_0 at toc@ha
-; PC64LE9-NEXT:    lfs 1, .LCPI9_0 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI9_1 at toc@ha
-; PC64LE9-NEXT:    stfd 31, 72(1) # 8-byte Folded Spill
-; PC64LE9-NEXT:    lfs 31, .LCPI9_1 at toc@l(3)
-; PC64LE9-NEXT:    fmr 2, 31
-; PC64LE9-NEXT:    stxv 63, 48(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    bl fmod
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI9_2 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    stxv 1, 32(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    lfs 1, .LCPI9_2 at toc@l(3)
-; PC64LE9-NEXT:    fmr 2, 31
-; PC64LE9-NEXT:    bl fmod
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    lxv 0, 32(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    addis 3, 2, .LCPI9_3 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    xxmrghd 63, 1, 0
-; PC64LE9-NEXT:    lfs 1, .LCPI9_3 at toc@l(3)
-; PC64LE9-NEXT:    fmr 2, 31
-; PC64LE9-NEXT:    bl fmod
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI9_4 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    stxv 1, 32(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    lfs 1, .LCPI9_4 at toc@l(3)
-; PC64LE9-NEXT:    fmr 2, 31
-; PC64LE9-NEXT:    bl fmod
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    lxv 0, 32(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    vmr 2, 31
-; PC64LE9-NEXT:    lxv 63, 48(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    lfd 31, 72(1) # 8-byte Folded Reload
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    xxmrghd 35, 1, 0
-; PC64LE9-NEXT:    addi 1, 1, 80
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_frem_v4f64:
-; PC64:       # %bb.0:
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -144(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 144
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f28, -32
-; PC64-NEXT:    .cfi_offset f29, -24
-; PC64-NEXT:    .cfi_offset f30, -16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI9_0 at toc@ha
-; PC64-NEXT:    stfd 31, 136(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 28, 112(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 29, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 30, 128(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfs 1, .LCPI9_0 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI9_1 at toc@ha
-; PC64-NEXT:    lfs 31, .LCPI9_1 at toc@l(3)
-; PC64-NEXT:    fmr 2, 31
-; PC64-NEXT:    bl fmod
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI9_2 at toc@ha
-; PC64-NEXT:    fmr 30, 1
-; PC64-NEXT:    lfs 1, .LCPI9_2 at toc@l(3)
-; PC64-NEXT:    fmr 2, 31
-; PC64-NEXT:    bl fmod
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI9_3 at toc@ha
-; PC64-NEXT:    fmr 29, 1
-; PC64-NEXT:    lfs 1, .LCPI9_3 at toc@l(3)
-; PC64-NEXT:    fmr 2, 31
-; PC64-NEXT:    bl fmod
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI9_4 at toc@ha
-; PC64-NEXT:    fmr 28, 1
-; PC64-NEXT:    lfs 1, .LCPI9_4 at toc@l(3)
-; PC64-NEXT:    fmr 2, 31
-; PC64-NEXT:    bl fmod
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 4, 1
-; PC64-NEXT:    fmr 1, 30
-; PC64-NEXT:    fmr 2, 29
-; PC64-NEXT:    fmr 3, 28
-; PC64-NEXT:    lfd 31, 136(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 30, 128(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 29, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 28, 112(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 144
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-  %rem = call <4 x double> @llvm.experimental.constrained.frem.v4f64(
-           <4 x double> <double 1.000000e+00, double 2.000000e+00,
-                         double 3.000000e+00, double 4.000000e+00>,
-           <4 x double> <double 1.000000e+01, double 1.000000e+01,
-                         double 1.000000e+01, double 1.000000e+01>,
-           metadata !"round.dynamic",
-           metadata !"fpexcept.strict")
-  ret <4 x double> %rem
-}
-
-define <1 x float> @constrained_vector_fmul_v1f32() {
-; PC64LE-LABEL: constrained_vector_fmul_v1f32:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    addis 3, 2, .LCPI10_0 at toc@ha
-; PC64LE-NEXT:    addis 4, 2, .LCPI10_1 at toc@ha
-; PC64LE-NEXT:    lfs 0, .LCPI10_0 at toc@l(3)
-; PC64LE-NEXT:    lfs 1, .LCPI10_1 at toc@l(4)
-; PC64LE-NEXT:    xsmulsp 0, 1, 0
-; PC64LE-NEXT:    xscvdpspn 0, 0
-; PC64LE-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_fmul_v1f32:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    addis 3, 2, .LCPI10_0 at toc@ha
-; PC64LE9-NEXT:    lfs 0, .LCPI10_0 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI10_1 at toc@ha
-; PC64LE9-NEXT:    lfs 1, .LCPI10_1 at toc@l(3)
-; PC64LE9-NEXT:    xsmulsp 0, 1, 0
-; PC64LE9-NEXT:    xscvdpspn 0, 0
-; PC64LE9-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_fmul_v1f32:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    addis 3, 2, .LCPI10_0 at toc@ha
-; PC64-NEXT:    lfs 0, .LCPI10_0 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI10_1 at toc@ha
-; PC64-NEXT:    lfs 1, .LCPI10_1 at toc@l(3)
-; PC64-NEXT:    fmuls 1, 1, 0
-; PC64-NEXT:    blr
-entry:
-  %mul = call <1 x float> @llvm.experimental.constrained.fmul.v1f32(
-           <1 x float> <float 0x7FF0000000000000>,
-           <1 x float> <float 2.000000e+00>,
-           metadata !"round.dynamic",
-           metadata !"fpexcept.strict")
-  ret <1 x float> %mul
-}
-
-define <2 x double> @constrained_vector_fmul_v2f64() {
-; PC64LE-LABEL: constrained_vector_fmul_v2f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    addis 3, 2, .LCPI11_0 at toc@ha
-; PC64LE-NEXT:    addis 4, 2, .LCPI11_1 at toc@ha
-; PC64LE-NEXT:    addi 3, 3, .LCPI11_0 at toc@l
-; PC64LE-NEXT:    addi 4, 4, .LCPI11_1 at toc@l
-; PC64LE-NEXT:    lxvd2x 0, 0, 3
-; PC64LE-NEXT:    lxvd2x 1, 0, 4
-; PC64LE-NEXT:    xxswapd 0, 0
-; PC64LE-NEXT:    xxswapd 1, 1
-; PC64LE-NEXT:    xvmuldp 34, 1, 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_fmul_v2f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    addis 3, 2, .LCPI11_0 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI11_0 at toc@l
-; PC64LE9-NEXT:    lxvx 0, 0, 3
-; PC64LE9-NEXT:    addis 3, 2, .LCPI11_1 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI11_1 at toc@l
-; PC64LE9-NEXT:    lxvx 1, 0, 3
-; PC64LE9-NEXT:    xvmuldp 34, 1, 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_fmul_v2f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    addis 3, 2, .LCPI11_0 at toc@ha
-; PC64-NEXT:    lfd 0, .LCPI11_0 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI11_1 at toc@ha
-; PC64-NEXT:    lfs 1, .LCPI11_1 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI11_2 at toc@ha
-; PC64-NEXT:    lfs 2, .LCPI11_2 at toc@l(3)
-; PC64-NEXT:    fmul 1, 0, 1
-; PC64-NEXT:    fmul 2, 0, 2
-; PC64-NEXT:    blr
-entry:
-  %mul = call <2 x double> @llvm.experimental.constrained.fmul.v2f64(
-           <2 x double> <double 0x7FEFFFFFFFFFFFFF, double 0x7FEFFFFFFFFFFFFF>,
-           <2 x double> <double 2.000000e+00, double 3.000000e+00>,
-           metadata !"round.dynamic",
-           metadata !"fpexcept.strict")
-  ret <2 x double> %mul
-}
-
-define <3 x float> @constrained_vector_fmul_v3f32() {
-; PC64LE-LABEL: constrained_vector_fmul_v3f32:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    addis 3, 2, .LCPI12_1 at toc@ha
-; PC64LE-NEXT:    addis 4, 2, .LCPI12_3 at toc@ha
-; PC64LE-NEXT:    addis 5, 2, .LCPI12_2 at toc@ha
-; PC64LE-NEXT:    lfs 0, .LCPI12_1 at toc@l(3)
-; PC64LE-NEXT:    lfs 1, .LCPI12_3 at toc@l(4)
-; PC64LE-NEXT:    lfs 2, .LCPI12_2 at toc@l(5)
-; PC64LE-NEXT:    addis 3, 2, .LCPI12_0 at toc@ha
-; PC64LE-NEXT:    xsmulsp 1, 0, 1
-; PC64LE-NEXT:    lfs 3, .LCPI12_0 at toc@l(3)
-; PC64LE-NEXT:    addis 3, 2, .LCPI12_4 at toc@ha
-; PC64LE-NEXT:    xsmulsp 2, 0, 2
-; PC64LE-NEXT:    addi 3, 3, .LCPI12_4 at toc@l
-; PC64LE-NEXT:    lvx 4, 0, 3
-; PC64LE-NEXT:    xsmulsp 0, 0, 3
-; PC64LE-NEXT:    xscvdpspn 1, 1
-; PC64LE-NEXT:    xscvdpspn 2, 2
-; PC64LE-NEXT:    xscvdpspn 0, 0
-; PC64LE-NEXT:    xxsldwi 34, 1, 1, 1
-; PC64LE-NEXT:    xxsldwi 35, 2, 2, 1
-; PC64LE-NEXT:    vmrglw 2, 3, 2
-; PC64LE-NEXT:    xxsldwi 35, 0, 0, 1
-; PC64LE-NEXT:    vperm 2, 3, 2, 4
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_fmul_v3f32:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    addis 3, 2, .LCPI12_0 at toc@ha
-; PC64LE9-NEXT:    lfs 0, .LCPI12_0 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI12_1 at toc@ha
-; PC64LE9-NEXT:    lfs 1, .LCPI12_1 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI12_2 at toc@ha
-; PC64LE9-NEXT:    xsmulsp 0, 1, 0
-; PC64LE9-NEXT:    lfs 2, .LCPI12_2 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI12_3 at toc@ha
-; PC64LE9-NEXT:    lfs 3, .LCPI12_3 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI12_4 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI12_4 at toc@l
-; PC64LE9-NEXT:    lxvx 36, 0, 3
-; PC64LE9-NEXT:    xsmulsp 2, 1, 2
-; PC64LE9-NEXT:    xsmulsp 1, 1, 3
-; PC64LE9-NEXT:    xscvdpspn 0, 0
-; PC64LE9-NEXT:    xscvdpspn 1, 1
-; PC64LE9-NEXT:    xxsldwi 34, 1, 1, 1
-; PC64LE9-NEXT:    xscvdpspn 1, 2
-; PC64LE9-NEXT:    xxsldwi 35, 1, 1, 1
-; PC64LE9-NEXT:    vmrglw 2, 3, 2
-; PC64LE9-NEXT:    xxsldwi 35, 0, 0, 1
-; PC64LE9-NEXT:    vperm 2, 3, 2, 4
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_fmul_v3f32:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    addis 3, 2, .LCPI12_0 at toc@ha
-; PC64-NEXT:    lfs 0, .LCPI12_0 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI12_1 at toc@ha
-; PC64-NEXT:    lfs 3, .LCPI12_1 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI12_2 at toc@ha
-; PC64-NEXT:    lfs 2, .LCPI12_2 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI12_3 at toc@ha
-; PC64-NEXT:    lfs 4, .LCPI12_3 at toc@l(3)
-; PC64-NEXT:    fmuls 1, 3, 0
-; PC64-NEXT:    fmuls 2, 3, 2
-; PC64-NEXT:    fmuls 3, 3, 4
-; PC64-NEXT:    blr
-entry:
-  %mul = call <3 x float> @llvm.experimental.constrained.fmul.v3f32(
-           <3 x float> <float 0x7FF0000000000000, float 0x7FF0000000000000,
-                        float 0x7FF0000000000000>,
-           <3 x float> <float 1.000000e+00, float 1.000000e+01, float 1.000000e+02>,
-           metadata !"round.dynamic",
-           metadata !"fpexcept.strict")
-  ret <3 x float> %mul
-}
-
-define <3 x double> @constrained_vector_fmul_v3f64() {
-; PC64LE-LABEL: constrained_vector_fmul_v3f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    addis 3, 2, .LCPI13_2 at toc@ha
-; PC64LE-NEXT:    addis 4, 2, .LCPI13_3 at toc@ha
-; PC64LE-NEXT:    addi 3, 3, .LCPI13_2 at toc@l
-; PC64LE-NEXT:    addi 4, 4, .LCPI13_3 at toc@l
-; PC64LE-NEXT:    lxvd2x 0, 0, 3
-; PC64LE-NEXT:    lxvd2x 1, 0, 4
-; PC64LE-NEXT:    addis 3, 2, .LCPI13_0 at toc@ha
-; PC64LE-NEXT:    addis 4, 2, .LCPI13_1 at toc@ha
-; PC64LE-NEXT:    lfd 3, .LCPI13_0 at toc@l(3)
-; PC64LE-NEXT:    xxswapd 0, 0
-; PC64LE-NEXT:    xxswapd 1, 1
-; PC64LE-NEXT:    xvmuldp 2, 1, 0
-; PC64LE-NEXT:    lfs 0, .LCPI13_1 at toc@l(4)
-; PC64LE-NEXT:    xsmuldp 3, 3, 0
-; PC64LE-NEXT:    xxswapd 1, 2
-; PC64LE-NEXT:    # kill: def $f2 killed $f2 killed $vsl2
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 killed $vsl1
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_fmul_v3f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    addis 3, 2, .LCPI13_0 at toc@ha
-; PC64LE9-NEXT:    lfd 0, .LCPI13_0 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI13_1 at toc@ha
-; PC64LE9-NEXT:    lfs 1, .LCPI13_1 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI13_2 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI13_2 at toc@l
-; PC64LE9-NEXT:    xsmuldp 3, 0, 1
-; PC64LE9-NEXT:    lxvx 0, 0, 3
-; PC64LE9-NEXT:    addis 3, 2, .LCPI13_3 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI13_3 at toc@l
-; PC64LE9-NEXT:    lxvx 1, 0, 3
-; PC64LE9-NEXT:    xvmuldp 2, 1, 0
-; PC64LE9-NEXT:    xxswapd 1, 2
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 killed $vsl1
-; PC64LE9-NEXT:    # kill: def $f2 killed $f2 killed $vsl2
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_fmul_v3f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    addis 3, 2, .LCPI13_0 at toc@ha
-; PC64-NEXT:    lfd 0, .LCPI13_0 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI13_1 at toc@ha
-; PC64-NEXT:    lfs 1, .LCPI13_1 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI13_2 at toc@ha
-; PC64-NEXT:    lfs 2, .LCPI13_2 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI13_3 at toc@ha
-; PC64-NEXT:    lfs 3, .LCPI13_3 at toc@l(3)
-; PC64-NEXT:    fmul 1, 0, 1
-; PC64-NEXT:    fmul 2, 0, 2
-; PC64-NEXT:    fmul 3, 0, 3
-; PC64-NEXT:    blr
-entry:
-  %mul = call <3 x double> @llvm.experimental.constrained.fmul.v3f64(
-           <3 x double> <double 0x7FEFFFFFFFFFFFFF, double 0x7FEFFFFFFFFFFFFF,
-                         double 0x7FEFFFFFFFFFFFFF>,
-           <3 x double> <double 1.000000e+00, double 1.000000e+01, double 1.000000e+02>,
-           metadata !"round.dynamic",
-           metadata !"fpexcept.strict")
-  ret <3 x double> %mul
-}
-
-define <4 x double> @constrained_vector_fmul_v4f64() {
-; PC64LE-LABEL: constrained_vector_fmul_v4f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    addis 3, 2, .LCPI14_0 at toc@ha
-; PC64LE-NEXT:    addis 4, 2, .LCPI14_1 at toc@ha
-; PC64LE-NEXT:    addis 5, 2, .LCPI14_2 at toc@ha
-; PC64LE-NEXT:    addi 3, 3, .LCPI14_0 at toc@l
-; PC64LE-NEXT:    addi 4, 4, .LCPI14_1 at toc@l
-; PC64LE-NEXT:    lxvd2x 0, 0, 3
-; PC64LE-NEXT:    addi 3, 5, .LCPI14_2 at toc@l
-; PC64LE-NEXT:    lxvd2x 1, 0, 4
-; PC64LE-NEXT:    lxvd2x 2, 0, 3
-; PC64LE-NEXT:    xxswapd 0, 0
-; PC64LE-NEXT:    xxswapd 1, 1
-; PC64LE-NEXT:    xxswapd 2, 2
-; PC64LE-NEXT:    xvmuldp 34, 1, 0
-; PC64LE-NEXT:    xvmuldp 35, 1, 2
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_fmul_v4f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    addis 3, 2, .LCPI14_0 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI14_0 at toc@l
-; PC64LE9-NEXT:    lxvx 0, 0, 3
-; PC64LE9-NEXT:    addis 3, 2, .LCPI14_1 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI14_1 at toc@l
-; PC64LE9-NEXT:    lxvx 1, 0, 3
-; PC64LE9-NEXT:    addis 3, 2, .LCPI14_2 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI14_2 at toc@l
-; PC64LE9-NEXT:    xvmuldp 34, 1, 0
-; PC64LE9-NEXT:    lxvx 0, 0, 3
-; PC64LE9-NEXT:    xvmuldp 35, 1, 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_fmul_v4f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    addis 3, 2, .LCPI14_0 at toc@ha
-; PC64-NEXT:    lfd 0, .LCPI14_0 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI14_1 at toc@ha
-; PC64-NEXT:    lfs 1, .LCPI14_1 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI14_2 at toc@ha
-; PC64-NEXT:    lfs 2, .LCPI14_2 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI14_3 at toc@ha
-; PC64-NEXT:    lfs 3, .LCPI14_3 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI14_4 at toc@ha
-; PC64-NEXT:    fmul 1, 0, 1
-; PC64-NEXT:    lfs 4, .LCPI14_4 at toc@l(3)
-; PC64-NEXT:    fmul 2, 0, 2
-; PC64-NEXT:    fmul 3, 0, 3
-; PC64-NEXT:    fmul 4, 0, 4
-; PC64-NEXT:    blr
-entry:
-  %mul = call <4 x double> @llvm.experimental.constrained.fmul.v4f64(
-           <4 x double> <double 0x7FEFFFFFFFFFFFFF, double 0x7FEFFFFFFFFFFFFF,
-                         double 0x7FEFFFFFFFFFFFFF, double 0x7FEFFFFFFFFFFFFF>,
-           <4 x double> <double 2.000000e+00, double 3.000000e+00,
-                         double 4.000000e+00, double 5.000000e+00>,
-           metadata !"round.dynamic",
-           metadata !"fpexcept.strict")
-  ret <4 x double> %mul
-}
-
-define <1 x float> @constrained_vector_fadd_v1f32() {
-; PC64LE-LABEL: constrained_vector_fadd_v1f32:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    addis 3, 2, .LCPI15_0 at toc@ha
-; PC64LE-NEXT:    addis 4, 2, .LCPI15_1 at toc@ha
-; PC64LE-NEXT:    lfs 0, .LCPI15_0 at toc@l(3)
-; PC64LE-NEXT:    lfs 1, .LCPI15_1 at toc@l(4)
-; PC64LE-NEXT:    xsaddsp 0, 1, 0
-; PC64LE-NEXT:    xscvdpspn 0, 0
-; PC64LE-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_fadd_v1f32:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    addis 3, 2, .LCPI15_0 at toc@ha
-; PC64LE9-NEXT:    lfs 0, .LCPI15_0 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI15_1 at toc@ha
-; PC64LE9-NEXT:    lfs 1, .LCPI15_1 at toc@l(3)
-; PC64LE9-NEXT:    xsaddsp 0, 1, 0
-; PC64LE9-NEXT:    xscvdpspn 0, 0
-; PC64LE9-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_fadd_v1f32:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    addis 3, 2, .LCPI15_0 at toc@ha
-; PC64-NEXT:    lfs 0, .LCPI15_0 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI15_1 at toc@ha
-; PC64-NEXT:    lfs 1, .LCPI15_1 at toc@l(3)
-; PC64-NEXT:    fadds 1, 1, 0
-; PC64-NEXT:    blr
-entry:
-  %add = call <1 x float> @llvm.experimental.constrained.fadd.v1f32(
-           <1 x float> <float 0x7FF0000000000000>,
-           <1 x float> <float 1.0>,
-           metadata !"round.dynamic",
-           metadata !"fpexcept.strict")
-  ret <1 x float> %add
-}
-
-define <2 x double> @constrained_vector_fadd_v2f64() {
-; PC64LE-LABEL: constrained_vector_fadd_v2f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    addis 3, 2, .LCPI16_0 at toc@ha
-; PC64LE-NEXT:    addis 4, 2, .LCPI16_1 at toc@ha
-; PC64LE-NEXT:    addi 3, 3, .LCPI16_0 at toc@l
-; PC64LE-NEXT:    addi 4, 4, .LCPI16_1 at toc@l
-; PC64LE-NEXT:    lxvd2x 0, 0, 3
-; PC64LE-NEXT:    lxvd2x 1, 0, 4
-; PC64LE-NEXT:    xxswapd 0, 0
-; PC64LE-NEXT:    xxswapd 1, 1
-; PC64LE-NEXT:    xvadddp 34, 1, 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_fadd_v2f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    addis 3, 2, .LCPI16_0 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI16_0 at toc@l
-; PC64LE9-NEXT:    lxvx 0, 0, 3
-; PC64LE9-NEXT:    addis 3, 2, .LCPI16_1 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI16_1 at toc@l
-; PC64LE9-NEXT:    lxvx 1, 0, 3
-; PC64LE9-NEXT:    xvadddp 34, 1, 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_fadd_v2f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    addis 3, 2, .LCPI16_0 at toc@ha
-; PC64-NEXT:    lfd 0, .LCPI16_0 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI16_1 at toc@ha
-; PC64-NEXT:    lfd 1, .LCPI16_1 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI16_2 at toc@ha
-; PC64-NEXT:    lfs 3, .LCPI16_2 at toc@l(3)
-; PC64-NEXT:    fadd 2, 1, 0
-; PC64-NEXT:    fadd 1, 1, 3
-; PC64-NEXT:    blr
-entry:
-  %add = call <2 x double> @llvm.experimental.constrained.fadd.v2f64(
-           <2 x double> <double 0x7FEFFFFFFFFFFFFF, double 0x7FEFFFFFFFFFFFFF>,
-           <2 x double> <double 1.000000e+00, double 1.000000e-01>,
-           metadata !"round.dynamic",
-           metadata !"fpexcept.strict")
-  ret <2 x double> %add
-}
-
-define <3 x float> @constrained_vector_fadd_v3f32() {
-; PC64LE-LABEL: constrained_vector_fadd_v3f32:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    addis 3, 2, .LCPI17_0 at toc@ha
-; PC64LE-NEXT:    addis 4, 2, .LCPI17_2 at toc@ha
-; PC64LE-NEXT:    addis 5, 2, .LCPI17_1 at toc@ha
-; PC64LE-NEXT:    xxlxor 3, 3, 3
-; PC64LE-NEXT:    lfs 0, .LCPI17_0 at toc@l(3)
-; PC64LE-NEXT:    lfs 1, .LCPI17_2 at toc@l(4)
-; PC64LE-NEXT:    lfs 2, .LCPI17_1 at toc@l(5)
-; PC64LE-NEXT:    addis 3, 2, .LCPI17_3 at toc@ha
-; PC64LE-NEXT:    addi 3, 3, .LCPI17_3 at toc@l
-; PC64LE-NEXT:    xsaddsp 1, 0, 1
-; PC64LE-NEXT:    lvx 4, 0, 3
-; PC64LE-NEXT:    xsaddsp 2, 0, 2
-; PC64LE-NEXT:    xsaddsp 0, 0, 3
-; PC64LE-NEXT:    xscvdpspn 1, 1
-; PC64LE-NEXT:    xscvdpspn 2, 2
-; PC64LE-NEXT:    xscvdpspn 0, 0
-; PC64LE-NEXT:    xxsldwi 34, 1, 1, 1
-; PC64LE-NEXT:    xxsldwi 35, 2, 2, 1
-; PC64LE-NEXT:    vmrglw 2, 3, 2
-; PC64LE-NEXT:    xxsldwi 35, 0, 0, 1
-; PC64LE-NEXT:    vperm 2, 3, 2, 4
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_fadd_v3f32:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    addis 3, 2, .LCPI17_0 at toc@ha
-; PC64LE9-NEXT:    lfs 0, .LCPI17_0 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI17_1 at toc@ha
-; PC64LE9-NEXT:    lfs 2, .LCPI17_1 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI17_2 at toc@ha
-; PC64LE9-NEXT:    xsaddsp 2, 0, 2
-; PC64LE9-NEXT:    lfs 3, .LCPI17_2 at toc@l(3)
-; PC64LE9-NEXT:    xxlxor 1, 1, 1
-; PC64LE9-NEXT:    xsaddsp 1, 0, 1
-; PC64LE9-NEXT:    xsaddsp 0, 0, 3
-; PC64LE9-NEXT:    xscvdpspn 0, 0
-; PC64LE9-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE9-NEXT:    xscvdpspn 0, 2
-; PC64LE9-NEXT:    xxsldwi 35, 0, 0, 1
-; PC64LE9-NEXT:    xscvdpspn 0, 1
-; PC64LE9-NEXT:    addis 3, 2, .LCPI17_3 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI17_3 at toc@l
-; PC64LE9-NEXT:    lxvx 36, 0, 3
-; PC64LE9-NEXT:    vmrglw 2, 3, 2
-; PC64LE9-NEXT:    xxsldwi 35, 0, 0, 1
-; PC64LE9-NEXT:    vperm 2, 3, 2, 4
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_fadd_v3f32:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    addis 3, 2, .LCPI17_0 at toc@ha
-; PC64-NEXT:    lfs 0, .LCPI17_0 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI17_1 at toc@ha
-; PC64-NEXT:    lfs 3, .LCPI17_1 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI17_2 at toc@ha
-; PC64-NEXT:    lfs 2, .LCPI17_2 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI17_3 at toc@ha
-; PC64-NEXT:    lfs 4, .LCPI17_3 at toc@l(3)
-; PC64-NEXT:    fadds 1, 3, 0
-; PC64-NEXT:    fadds 2, 3, 2
-; PC64-NEXT:    fadds 3, 3, 4
-; PC64-NEXT:    blr
-entry:
-  %add = call <3 x float> @llvm.experimental.constrained.fadd.v3f32(
-           <3 x float> <float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000,
-                        float 0xFFFFFFFFE0000000>,
-           <3 x float> <float 2.0, float 1.0, float 0.0>,
-           metadata !"round.dynamic",
-           metadata !"fpexcept.strict")
-  ret <3 x float> %add
-}
-
-define <3 x double> @constrained_vector_fadd_v3f64() {
-; PC64LE-LABEL: constrained_vector_fadd_v3f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    addis 3, 2, .LCPI18_1 at toc@ha
-; PC64LE-NEXT:    addis 4, 2, .LCPI18_2 at toc@ha
-; PC64LE-NEXT:    addi 3, 3, .LCPI18_1 at toc@l
-; PC64LE-NEXT:    addi 4, 4, .LCPI18_2 at toc@l
-; PC64LE-NEXT:    lxvd2x 0, 0, 3
-; PC64LE-NEXT:    lxvd2x 1, 0, 4
-; PC64LE-NEXT:    addis 3, 2, .LCPI18_0 at toc@ha
-; PC64LE-NEXT:    lfd 3, .LCPI18_0 at toc@l(3)
-; PC64LE-NEXT:    xxswapd 0, 0
-; PC64LE-NEXT:    xxswapd 1, 1
-; PC64LE-NEXT:    xvadddp 2, 1, 0
-; PC64LE-NEXT:    xxlxor 0, 0, 0
-; PC64LE-NEXT:    xsadddp 3, 3, 0
-; PC64LE-NEXT:    xxswapd 1, 2
-; PC64LE-NEXT:    # kill: def $f2 killed $f2 killed $vsl2
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 killed $vsl1
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_fadd_v3f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    addis 3, 2, .LCPI18_0 at toc@ha
-; PC64LE9-NEXT:    lfd 0, .LCPI18_0 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI18_1 at toc@ha
-; PC64LE9-NEXT:    xxlxor 1, 1, 1
-; PC64LE9-NEXT:    addi 3, 3, .LCPI18_1 at toc@l
-; PC64LE9-NEXT:    xsadddp 3, 0, 1
-; PC64LE9-NEXT:    lxvx 0, 0, 3
-; PC64LE9-NEXT:    addis 3, 2, .LCPI18_2 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI18_2 at toc@l
-; PC64LE9-NEXT:    lxvx 1, 0, 3
-; PC64LE9-NEXT:    xvadddp 2, 1, 0
-; PC64LE9-NEXT:    xxswapd 1, 2
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 killed $vsl1
-; PC64LE9-NEXT:    # kill: def $f2 killed $f2 killed $vsl2
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_fadd_v3f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    addis 3, 2, .LCPI18_0 at toc@ha
-; PC64-NEXT:    lfd 0, .LCPI18_0 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI18_1 at toc@ha
-; PC64-NEXT:    lfs 1, .LCPI18_1 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI18_2 at toc@ha
-; PC64-NEXT:    lfs 2, .LCPI18_2 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI18_3 at toc@ha
-; PC64-NEXT:    lfs 3, .LCPI18_3 at toc@l(3)
-; PC64-NEXT:    fadd 1, 0, 1
-; PC64-NEXT:    fadd 2, 0, 2
-; PC64-NEXT:    fadd 3, 0, 3
-; PC64-NEXT:    blr
-entry:
-  %add = call <3 x double> @llvm.experimental.constrained.fadd.v3f64(
-           <3 x double> <double 0x7FEFFFFFFFFFFFFF, double 0x7FEFFFFFFFFFFFFF,
-                         double 0x7FEFFFFFFFFFFFFF>,
-           <3 x double> <double 2.0, double 1.0, double 0.0>,
-           metadata !"round.dynamic",
-           metadata !"fpexcept.strict")
-  ret <3 x double> %add
-}
-
-define <4 x double> @constrained_vector_fadd_v4f64() {
-; PC64LE-LABEL: constrained_vector_fadd_v4f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    addis 3, 2, .LCPI19_0 at toc@ha
-; PC64LE-NEXT:    addis 4, 2, .LCPI19_1 at toc@ha
-; PC64LE-NEXT:    addis 5, 2, .LCPI19_2 at toc@ha
-; PC64LE-NEXT:    addi 3, 3, .LCPI19_0 at toc@l
-; PC64LE-NEXT:    addi 4, 4, .LCPI19_1 at toc@l
-; PC64LE-NEXT:    lxvd2x 0, 0, 3
-; PC64LE-NEXT:    addi 3, 5, .LCPI19_2 at toc@l
-; PC64LE-NEXT:    lxvd2x 1, 0, 4
-; PC64LE-NEXT:    lxvd2x 2, 0, 3
-; PC64LE-NEXT:    xxswapd 0, 0
-; PC64LE-NEXT:    xxswapd 1, 1
-; PC64LE-NEXT:    xxswapd 2, 2
-; PC64LE-NEXT:    xvadddp 34, 1, 0
-; PC64LE-NEXT:    xvadddp 35, 1, 2
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_fadd_v4f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    addis 3, 2, .LCPI19_0 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI19_0 at toc@l
-; PC64LE9-NEXT:    lxvx 0, 0, 3
-; PC64LE9-NEXT:    addis 3, 2, .LCPI19_1 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI19_1 at toc@l
-; PC64LE9-NEXT:    lxvx 1, 0, 3
-; PC64LE9-NEXT:    addis 3, 2, .LCPI19_2 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI19_2 at toc@l
-; PC64LE9-NEXT:    xvadddp 34, 1, 0
-; PC64LE9-NEXT:    lxvx 0, 0, 3
-; PC64LE9-NEXT:    xvadddp 35, 1, 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_fadd_v4f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    addis 3, 2, .LCPI19_0 at toc@ha
-; PC64-NEXT:    lfd 0, .LCPI19_0 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI19_1 at toc@ha
-; PC64-NEXT:    lfd 3, .LCPI19_1 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI19_2 at toc@ha
-; PC64-NEXT:    lfd 1, .LCPI19_2 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI19_3 at toc@ha
-; PC64-NEXT:    lfs 5, .LCPI19_3 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI19_4 at toc@ha
-; PC64-NEXT:    fadd 2, 3, 0
-; PC64-NEXT:    lfs 6, .LCPI19_4 at toc@l(3)
-; PC64-NEXT:    fadd 4, 3, 1
-; PC64-NEXT:    fadd 1, 3, 5
-; PC64-NEXT:    fadd 3, 3, 6
-; PC64-NEXT:    blr
-entry:
-  %add = call <4 x double> @llvm.experimental.constrained.fadd.v4f64(
-           <4 x double> <double 0x7FEFFFFFFFFFFFFF, double 0x7FEFFFFFFFFFFFFF,
-                         double 0x7FEFFFFFFFFFFFFF, double 0x7FEFFFFFFFFFFFFF>,
-           <4 x double> <double 1.000000e+00, double 1.000000e-01,
-                         double 2.000000e+00, double 2.000000e-01>,
-           metadata !"round.dynamic",
-           metadata !"fpexcept.strict")
-  ret <4 x double> %add
-}
-
-define <1 x float> @constrained_vector_fsub_v1f32() {
-; PC64LE-LABEL: constrained_vector_fsub_v1f32:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    addis 3, 2, .LCPI20_0 at toc@ha
-; PC64LE-NEXT:    addis 4, 2, .LCPI20_1 at toc@ha
-; PC64LE-NEXT:    lfs 0, .LCPI20_0 at toc@l(3)
-; PC64LE-NEXT:    lfs 1, .LCPI20_1 at toc@l(4)
-; PC64LE-NEXT:    xssubsp 0, 1, 0
-; PC64LE-NEXT:    xscvdpspn 0, 0
-; PC64LE-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_fsub_v1f32:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    addis 3, 2, .LCPI20_0 at toc@ha
-; PC64LE9-NEXT:    lfs 0, .LCPI20_0 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI20_1 at toc@ha
-; PC64LE9-NEXT:    lfs 1, .LCPI20_1 at toc@l(3)
-; PC64LE9-NEXT:    xssubsp 0, 1, 0
-; PC64LE9-NEXT:    xscvdpspn 0, 0
-; PC64LE9-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_fsub_v1f32:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    addis 3, 2, .LCPI20_0 at toc@ha
-; PC64-NEXT:    lfs 0, .LCPI20_0 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI20_1 at toc@ha
-; PC64-NEXT:    lfs 1, .LCPI20_1 at toc@l(3)
-; PC64-NEXT:    fsubs 1, 1, 0
-; PC64-NEXT:    blr
-entry:
-  %sub = call <1 x float> @llvm.experimental.constrained.fsub.v1f32(
-           <1 x float> <float 0x7FF0000000000000>,
-           <1 x float> <float 1.000000e+00>,
-           metadata !"round.dynamic",
-           metadata !"fpexcept.strict")
-  ret <1 x float> %sub
-}
-
-define <2 x double> @constrained_vector_fsub_v2f64() {
-; PC64LE-LABEL: constrained_vector_fsub_v2f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    addis 3, 2, .LCPI21_0 at toc@ha
-; PC64LE-NEXT:    addis 4, 2, .LCPI21_1 at toc@ha
-; PC64LE-NEXT:    addi 3, 3, .LCPI21_0 at toc@l
-; PC64LE-NEXT:    addi 4, 4, .LCPI21_1 at toc@l
-; PC64LE-NEXT:    lxvd2x 0, 0, 3
-; PC64LE-NEXT:    lxvd2x 1, 0, 4
-; PC64LE-NEXT:    xxswapd 0, 0
-; PC64LE-NEXT:    xxswapd 1, 1
-; PC64LE-NEXT:    xvsubdp 34, 1, 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_fsub_v2f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    addis 3, 2, .LCPI21_0 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI21_0 at toc@l
-; PC64LE9-NEXT:    lxvx 0, 0, 3
-; PC64LE9-NEXT:    addis 3, 2, .LCPI21_1 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI21_1 at toc@l
-; PC64LE9-NEXT:    lxvx 1, 0, 3
-; PC64LE9-NEXT:    xvsubdp 34, 1, 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_fsub_v2f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    addis 3, 2, .LCPI21_0 at toc@ha
-; PC64-NEXT:    lfd 0, .LCPI21_0 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI21_1 at toc@ha
-; PC64-NEXT:    lfd 1, .LCPI21_1 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI21_2 at toc@ha
-; PC64-NEXT:    lfs 3, .LCPI21_2 at toc@l(3)
-; PC64-NEXT:    fsub 2, 1, 0
-; PC64-NEXT:    fsub 1, 1, 3
-; PC64-NEXT:    blr
-entry:
-  %sub = call <2 x double> @llvm.experimental.constrained.fsub.v2f64(
-           <2 x double> <double 0xFFEFFFFFFFFFFFFF, double 0xFFEFFFFFFFFFFFFF>,
-           <2 x double> <double 1.000000e+00, double 1.000000e-01>,
-           metadata !"round.dynamic",
-           metadata !"fpexcept.strict")
-  ret <2 x double> %sub
-}
-
-define <3 x float> @constrained_vector_fsub_v3f32() {
-; PC64LE-LABEL: constrained_vector_fsub_v3f32:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    addis 3, 2, .LCPI22_0 at toc@ha
-; PC64LE-NEXT:    addis 4, 2, .LCPI22_2 at toc@ha
-; PC64LE-NEXT:    addis 5, 2, .LCPI22_1 at toc@ha
-; PC64LE-NEXT:    xxlxor 3, 3, 3
-; PC64LE-NEXT:    lfs 0, .LCPI22_0 at toc@l(3)
-; PC64LE-NEXT:    lfs 1, .LCPI22_2 at toc@l(4)
-; PC64LE-NEXT:    lfs 2, .LCPI22_1 at toc@l(5)
-; PC64LE-NEXT:    addis 3, 2, .LCPI22_3 at toc@ha
-; PC64LE-NEXT:    addi 3, 3, .LCPI22_3 at toc@l
-; PC64LE-NEXT:    xssubsp 1, 0, 1
-; PC64LE-NEXT:    lvx 4, 0, 3
-; PC64LE-NEXT:    xssubsp 2, 0, 2
-; PC64LE-NEXT:    xssubsp 0, 0, 3
-; PC64LE-NEXT:    xscvdpspn 1, 1
-; PC64LE-NEXT:    xscvdpspn 2, 2
-; PC64LE-NEXT:    xscvdpspn 0, 0
-; PC64LE-NEXT:    xxsldwi 34, 1, 1, 1
-; PC64LE-NEXT:    xxsldwi 35, 2, 2, 1
-; PC64LE-NEXT:    vmrglw 2, 3, 2
-; PC64LE-NEXT:    xxsldwi 35, 0, 0, 1
-; PC64LE-NEXT:    vperm 2, 3, 2, 4
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_fsub_v3f32:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    addis 3, 2, .LCPI22_0 at toc@ha
-; PC64LE9-NEXT:    lfs 0, .LCPI22_0 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI22_1 at toc@ha
-; PC64LE9-NEXT:    lfs 2, .LCPI22_1 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI22_2 at toc@ha
-; PC64LE9-NEXT:    xssubsp 2, 0, 2
-; PC64LE9-NEXT:    lfs 3, .LCPI22_2 at toc@l(3)
-; PC64LE9-NEXT:    xxlxor 1, 1, 1
-; PC64LE9-NEXT:    xssubsp 1, 0, 1
-; PC64LE9-NEXT:    xssubsp 0, 0, 3
-; PC64LE9-NEXT:    xscvdpspn 0, 0
-; PC64LE9-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE9-NEXT:    xscvdpspn 0, 2
-; PC64LE9-NEXT:    xxsldwi 35, 0, 0, 1
-; PC64LE9-NEXT:    xscvdpspn 0, 1
-; PC64LE9-NEXT:    addis 3, 2, .LCPI22_3 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI22_3 at toc@l
-; PC64LE9-NEXT:    lxvx 36, 0, 3
-; PC64LE9-NEXT:    vmrglw 2, 3, 2
-; PC64LE9-NEXT:    xxsldwi 35, 0, 0, 1
-; PC64LE9-NEXT:    vperm 2, 3, 2, 4
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_fsub_v3f32:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    addis 3, 2, .LCPI22_0 at toc@ha
-; PC64-NEXT:    lfs 0, .LCPI22_0 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI22_1 at toc@ha
-; PC64-NEXT:    lfs 3, .LCPI22_1 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI22_2 at toc@ha
-; PC64-NEXT:    lfs 2, .LCPI22_2 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI22_3 at toc@ha
-; PC64-NEXT:    lfs 4, .LCPI22_3 at toc@l(3)
-; PC64-NEXT:    fsubs 1, 3, 0
-; PC64-NEXT:    fsubs 2, 3, 2
-; PC64-NEXT:    fsubs 3, 3, 4
-; PC64-NEXT:    blr
-entry:
-  %sub = call <3 x float> @llvm.experimental.constrained.fsub.v3f32(
-           <3 x float> <float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000,
-                        float 0xFFFFFFFFE0000000>,
-           <3 x float> <float 2.0, float 1.0, float 0.0>,
-           metadata !"round.dynamic",
-           metadata !"fpexcept.strict")
-  ret <3 x float> %sub
-}
-
-define <3 x double> @constrained_vector_fsub_v3f64() {
-; PC64LE-LABEL: constrained_vector_fsub_v3f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    addis 3, 2, .LCPI23_1 at toc@ha
-; PC64LE-NEXT:    addis 4, 2, .LCPI23_2 at toc@ha
-; PC64LE-NEXT:    addi 3, 3, .LCPI23_1 at toc@l
-; PC64LE-NEXT:    addi 4, 4, .LCPI23_2 at toc@l
-; PC64LE-NEXT:    lxvd2x 0, 0, 3
-; PC64LE-NEXT:    lxvd2x 1, 0, 4
-; PC64LE-NEXT:    addis 3, 2, .LCPI23_0 at toc@ha
-; PC64LE-NEXT:    lfd 3, .LCPI23_0 at toc@l(3)
-; PC64LE-NEXT:    xxswapd 0, 0
-; PC64LE-NEXT:    xxswapd 1, 1
-; PC64LE-NEXT:    xvsubdp 2, 1, 0
-; PC64LE-NEXT:    xxlxor 0, 0, 0
-; PC64LE-NEXT:    xssubdp 3, 3, 0
-; PC64LE-NEXT:    xxswapd 1, 2
-; PC64LE-NEXT:    # kill: def $f2 killed $f2 killed $vsl2
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 killed $vsl1
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_fsub_v3f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    addis 3, 2, .LCPI23_0 at toc@ha
-; PC64LE9-NEXT:    lfd 0, .LCPI23_0 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI23_1 at toc@ha
-; PC64LE9-NEXT:    xxlxor 1, 1, 1
-; PC64LE9-NEXT:    addi 3, 3, .LCPI23_1 at toc@l
-; PC64LE9-NEXT:    xssubdp 3, 0, 1
-; PC64LE9-NEXT:    lxvx 0, 0, 3
-; PC64LE9-NEXT:    addis 3, 2, .LCPI23_2 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI23_2 at toc@l
-; PC64LE9-NEXT:    lxvx 1, 0, 3
-; PC64LE9-NEXT:    xvsubdp 2, 1, 0
-; PC64LE9-NEXT:    xxswapd 1, 2
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 killed $vsl1
-; PC64LE9-NEXT:    # kill: def $f2 killed $f2 killed $vsl2
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_fsub_v3f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    addis 3, 2, .LCPI23_0 at toc@ha
-; PC64-NEXT:    lfd 0, .LCPI23_0 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI23_1 at toc@ha
-; PC64-NEXT:    lfs 1, .LCPI23_1 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI23_2 at toc@ha
-; PC64-NEXT:    lfs 2, .LCPI23_2 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI23_3 at toc@ha
-; PC64-NEXT:    lfs 3, .LCPI23_3 at toc@l(3)
-; PC64-NEXT:    fsub 1, 0, 1
-; PC64-NEXT:    fsub 2, 0, 2
-; PC64-NEXT:    fsub 3, 0, 3
-; PC64-NEXT:    blr
-entry:
-  %sub = call <3 x double> @llvm.experimental.constrained.fsub.v3f64(
-           <3 x double> <double 0xFFEFFFFFFFFFFFFF, double 0xFFEFFFFFFFFFFFFF,
-                         double 0xFFEFFFFFFFFFFFFF>,
-           <3 x double> <double 2.0, double 1.0, double 0.0>,
-           metadata !"round.dynamic",
-           metadata !"fpexcept.strict")
-  ret <3 x double> %sub
-}
-
-define <4 x double> @constrained_vector_fsub_v4f64() {
-; PC64LE-LABEL: constrained_vector_fsub_v4f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    addis 3, 2, .LCPI24_0 at toc@ha
-; PC64LE-NEXT:    addis 4, 2, .LCPI24_1 at toc@ha
-; PC64LE-NEXT:    addis 5, 2, .LCPI24_2 at toc@ha
-; PC64LE-NEXT:    addi 3, 3, .LCPI24_0 at toc@l
-; PC64LE-NEXT:    addi 4, 4, .LCPI24_1 at toc@l
-; PC64LE-NEXT:    lxvd2x 0, 0, 3
-; PC64LE-NEXT:    addi 3, 5, .LCPI24_2 at toc@l
-; PC64LE-NEXT:    lxvd2x 1, 0, 4
-; PC64LE-NEXT:    lxvd2x 2, 0, 3
-; PC64LE-NEXT:    xxswapd 0, 0
-; PC64LE-NEXT:    xxswapd 1, 1
-; PC64LE-NEXT:    xxswapd 2, 2
-; PC64LE-NEXT:    xvsubdp 34, 1, 0
-; PC64LE-NEXT:    xvsubdp 35, 1, 2
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_fsub_v4f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    addis 3, 2, .LCPI24_0 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI24_0 at toc@l
-; PC64LE9-NEXT:    lxvx 0, 0, 3
-; PC64LE9-NEXT:    addis 3, 2, .LCPI24_1 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI24_1 at toc@l
-; PC64LE9-NEXT:    lxvx 1, 0, 3
-; PC64LE9-NEXT:    addis 3, 2, .LCPI24_2 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI24_2 at toc@l
-; PC64LE9-NEXT:    xvsubdp 34, 1, 0
-; PC64LE9-NEXT:    lxvx 0, 0, 3
-; PC64LE9-NEXT:    xvsubdp 35, 1, 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_fsub_v4f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    addis 3, 2, .LCPI24_0 at toc@ha
-; PC64-NEXT:    lfd 0, .LCPI24_0 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI24_1 at toc@ha
-; PC64-NEXT:    lfd 3, .LCPI24_1 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI24_2 at toc@ha
-; PC64-NEXT:    lfd 1, .LCPI24_2 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI24_3 at toc@ha
-; PC64-NEXT:    lfs 5, .LCPI24_3 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI24_4 at toc@ha
-; PC64-NEXT:    fsub 2, 3, 0
-; PC64-NEXT:    lfs 6, .LCPI24_4 at toc@l(3)
-; PC64-NEXT:    fsub 4, 3, 1
-; PC64-NEXT:    fsub 1, 3, 5
-; PC64-NEXT:    fsub 3, 3, 6
-; PC64-NEXT:    blr
-entry:
-  %sub = call <4 x double> @llvm.experimental.constrained.fsub.v4f64(
-           <4 x double> <double 0xFFEFFFFFFFFFFFFF, double 0xFFEFFFFFFFFFFFFF,
-                         double 0xFFEFFFFFFFFFFFFF, double 0xFFEFFFFFFFFFFFFF>,
-           <4 x double> <double 1.000000e+00, double 1.000000e-01,
-                         double 2.000000e+00, double 2.000000e-01>,
-           metadata !"round.dynamic",
-           metadata !"fpexcept.strict")
-  ret <4 x double> %sub
-}
-
-define <1 x float> @constrained_vector_sqrt_v1f32() {
-; PC64LE-LABEL: constrained_vector_sqrt_v1f32:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    addis 3, 2, .LCPI25_0 at toc@ha
-; PC64LE-NEXT:    lfs 0, .LCPI25_0 at toc@l(3)
-; PC64LE-NEXT:    xssqrtsp 0, 0
-; PC64LE-NEXT:    xscvdpspn 0, 0
-; PC64LE-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_sqrt_v1f32:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    addis 3, 2, .LCPI25_0 at toc@ha
-; PC64LE9-NEXT:    lfs 0, .LCPI25_0 at toc@l(3)
-; PC64LE9-NEXT:    xssqrtsp 0, 0
-; PC64LE9-NEXT:    xscvdpspn 0, 0
-; PC64LE9-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_sqrt_v1f32:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -112(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 112
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    addis 3, 2, .LCPI25_0 at toc@ha
-; PC64-NEXT:    lfs 1, .LCPI25_0 at toc@l(3)
-; PC64-NEXT:    bl sqrtf
-; PC64-NEXT:    nop
-; PC64-NEXT:    addi 1, 1, 112
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %sqrt = call <1 x float> @llvm.experimental.constrained.sqrt.v1f32(
-                              <1 x float> <float 42.0>,
-                              metadata !"round.dynamic",
-                              metadata !"fpexcept.strict")
-  ret <1 x float> %sqrt
-}
-
-define <2 x double> @constrained_vector_sqrt_v2f64() {
-; PC64LE-LABEL: constrained_vector_sqrt_v2f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    addis 3, 2, .LCPI26_0 at toc@ha
-; PC64LE-NEXT:    addi 3, 3, .LCPI26_0 at toc@l
-; PC64LE-NEXT:    lxvd2x 0, 0, 3
-; PC64LE-NEXT:    xxswapd 0, 0
-; PC64LE-NEXT:    xvsqrtdp 34, 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_sqrt_v2f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    addis 3, 2, .LCPI26_0 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI26_0 at toc@l
-; PC64LE9-NEXT:    lxvx 0, 0, 3
-; PC64LE9-NEXT:    xvsqrtdp 34, 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_sqrt_v2f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -128(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 128
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI26_0 at toc@ha
-; PC64-NEXT:    stfd 31, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfs 1, .LCPI26_0 at toc@l(3)
-; PC64-NEXT:    bl sqrt
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI26_1 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfd 1, .LCPI26_1 at toc@l(3)
-; PC64-NEXT:    bl sqrt
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 2, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    lfd 31, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 128
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %sqrt = call <2 x double> @llvm.experimental.constrained.sqrt.v2f64(
-                              <2 x double> <double 42.0, double 42.1>,
-                              metadata !"round.dynamic",
-                              metadata !"fpexcept.strict")
-  ret <2 x double> %sqrt
-}
-
-define <3 x float> @constrained_vector_sqrt_v3f32() {
-; PC64LE-LABEL: constrained_vector_sqrt_v3f32:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    addis 3, 2, .LCPI27_2 at toc@ha
-; PC64LE-NEXT:    addis 4, 2, .LCPI27_1 at toc@ha
-; PC64LE-NEXT:    lfs 0, .LCPI27_2 at toc@l(3)
-; PC64LE-NEXT:    lfs 1, .LCPI27_1 at toc@l(4)
-; PC64LE-NEXT:    addis 3, 2, .LCPI27_0 at toc@ha
-; PC64LE-NEXT:    xssqrtsp 0, 0
-; PC64LE-NEXT:    lfs 2, .LCPI27_0 at toc@l(3)
-; PC64LE-NEXT:    addis 3, 2, .LCPI27_3 at toc@ha
-; PC64LE-NEXT:    xssqrtsp 1, 1
-; PC64LE-NEXT:    addi 3, 3, .LCPI27_3 at toc@l
-; PC64LE-NEXT:    xssqrtsp 2, 2
-; PC64LE-NEXT:    xscvdpspn 0, 0
-; PC64LE-NEXT:    xscvdpspn 1, 1
-; PC64LE-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE-NEXT:    xscvdpspn 0, 2
-; PC64LE-NEXT:    xxsldwi 35, 1, 1, 1
-; PC64LE-NEXT:    vmrglw 2, 3, 2
-; PC64LE-NEXT:    lvx 3, 0, 3
-; PC64LE-NEXT:    xxsldwi 36, 0, 0, 1
-; PC64LE-NEXT:    vperm 2, 4, 2, 3
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_sqrt_v3f32:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    addis 3, 2, .LCPI27_0 at toc@ha
-; PC64LE9-NEXT:    lfs 0, .LCPI27_0 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI27_1 at toc@ha
-; PC64LE9-NEXT:    lfs 1, .LCPI27_1 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI27_2 at toc@ha
-; PC64LE9-NEXT:    xssqrtsp 0, 0
-; PC64LE9-NEXT:    lfs 2, .LCPI27_2 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI27_3 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI27_3 at toc@l
-; PC64LE9-NEXT:    xssqrtsp 1, 1
-; PC64LE9-NEXT:    xssqrtsp 2, 2
-; PC64LE9-NEXT:    xscvdpspn 0, 0
-; PC64LE9-NEXT:    xscvdpspn 1, 1
-; PC64LE9-NEXT:    xscvdpspn 2, 2
-; PC64LE9-NEXT:    xxsldwi 36, 0, 0, 1
-; PC64LE9-NEXT:    xxsldwi 35, 1, 1, 1
-; PC64LE9-NEXT:    xxsldwi 34, 2, 2, 1
-; PC64LE9-NEXT:    vmrglw 2, 3, 2
-; PC64LE9-NEXT:    lxvx 35, 0, 3
-; PC64LE9-NEXT:    vperm 2, 4, 2, 3
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_sqrt_v3f32:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -128(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 128
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f30, -16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI27_0 at toc@ha
-; PC64-NEXT:    stfd 30, 112(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 31, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfs 1, .LCPI27_0 at toc@l(3)
-; PC64-NEXT:    bl sqrtf
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI27_1 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfs 1, .LCPI27_1 at toc@l(3)
-; PC64-NEXT:    bl sqrtf
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI27_2 at toc@ha
-; PC64-NEXT:    fmr 30, 1
-; PC64-NEXT:    lfs 1, .LCPI27_2 at toc@l(3)
-; PC64-NEXT:    bl sqrtf
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 3, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    fmr 2, 30
-; PC64-NEXT:    lfd 31, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 30, 112(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 128
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %sqrt = call <3 x float> @llvm.experimental.constrained.sqrt.v3f32(
-                              <3 x float> <float 42.0, float 43.0, float 44.0>,
-                              metadata !"round.dynamic",
-                              metadata !"fpexcept.strict")
-  ret <3 x float> %sqrt
-}
-
-define <3 x double> @constrained_vector_sqrt_v3f64() {
-; PC64LE-LABEL: constrained_vector_sqrt_v3f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    addis 3, 2, .LCPI28_1 at toc@ha
-; PC64LE-NEXT:    addi 3, 3, .LCPI28_1 at toc@l
-; PC64LE-NEXT:    lxvd2x 0, 0, 3
-; PC64LE-NEXT:    addis 3, 2, .LCPI28_0 at toc@ha
-; PC64LE-NEXT:    lfd 1, .LCPI28_0 at toc@l(3)
-; PC64LE-NEXT:    xxswapd 0, 0
-; PC64LE-NEXT:    xssqrtdp 3, 1
-; PC64LE-NEXT:    xvsqrtdp 2, 0
-; PC64LE-NEXT:    xxswapd 1, 2
-; PC64LE-NEXT:    # kill: def $f2 killed $f2 killed $vsl2
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 killed $vsl1
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_sqrt_v3f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    addis 3, 2, .LCPI28_0 at toc@ha
-; PC64LE9-NEXT:    lfd 0, .LCPI28_0 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI28_1 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI28_1 at toc@l
-; PC64LE9-NEXT:    xssqrtdp 3, 0
-; PC64LE9-NEXT:    lxvx 0, 0, 3
-; PC64LE9-NEXT:    xvsqrtdp 2, 0
-; PC64LE9-NEXT:    xxswapd 1, 2
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 killed $vsl1
-; PC64LE9-NEXT:    # kill: def $f2 killed $f2 killed $vsl2
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_sqrt_v3f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -128(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 128
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f30, -16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI28_0 at toc@ha
-; PC64-NEXT:    stfd 30, 112(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 31, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfs 1, .LCPI28_0 at toc@l(3)
-; PC64-NEXT:    bl sqrt
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI28_1 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfd 1, .LCPI28_1 at toc@l(3)
-; PC64-NEXT:    bl sqrt
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI28_2 at toc@ha
-; PC64-NEXT:    fmr 30, 1
-; PC64-NEXT:    lfd 1, .LCPI28_2 at toc@l(3)
-; PC64-NEXT:    bl sqrt
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 3, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    fmr 2, 30
-; PC64-NEXT:    lfd 31, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 30, 112(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 128
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %sqrt = call <3 x double> @llvm.experimental.constrained.sqrt.v3f64(
-                          <3 x double> <double 42.0, double 42.1, double 42.2>,
-                          metadata !"round.dynamic",
-                          metadata !"fpexcept.strict")
-  ret <3 x double> %sqrt
-}
-
-define <4 x double> @constrained_vector_sqrt_v4f64() {
-; PC64LE-LABEL: constrained_vector_sqrt_v4f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    addis 3, 2, .LCPI29_0 at toc@ha
-; PC64LE-NEXT:    addis 4, 2, .LCPI29_1 at toc@ha
-; PC64LE-NEXT:    addi 3, 3, .LCPI29_0 at toc@l
-; PC64LE-NEXT:    addi 4, 4, .LCPI29_1 at toc@l
-; PC64LE-NEXT:    lxvd2x 0, 0, 3
-; PC64LE-NEXT:    lxvd2x 1, 0, 4
-; PC64LE-NEXT:    xxswapd 0, 0
-; PC64LE-NEXT:    xxswapd 1, 1
-; PC64LE-NEXT:    xvsqrtdp 34, 0
-; PC64LE-NEXT:    xvsqrtdp 35, 1
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_sqrt_v4f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    addis 3, 2, .LCPI29_0 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI29_0 at toc@l
-; PC64LE9-NEXT:    lxvx 0, 0, 3
-; PC64LE9-NEXT:    addis 3, 2, .LCPI29_1 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI29_1 at toc@l
-; PC64LE9-NEXT:    xvsqrtdp 34, 0
-; PC64LE9-NEXT:    lxvx 0, 0, 3
-; PC64LE9-NEXT:    xvsqrtdp 35, 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_sqrt_v4f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -144(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 144
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f29, -24
-; PC64-NEXT:    .cfi_offset f30, -16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI29_0 at toc@ha
-; PC64-NEXT:    stfd 29, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 30, 128(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 31, 136(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfs 1, .LCPI29_0 at toc@l(3)
-; PC64-NEXT:    bl sqrt
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI29_1 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfd 1, .LCPI29_1 at toc@l(3)
-; PC64-NEXT:    bl sqrt
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI29_2 at toc@ha
-; PC64-NEXT:    fmr 30, 1
-; PC64-NEXT:    lfd 1, .LCPI29_2 at toc@l(3)
-; PC64-NEXT:    bl sqrt
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI29_3 at toc@ha
-; PC64-NEXT:    fmr 29, 1
-; PC64-NEXT:    lfd 1, .LCPI29_3 at toc@l(3)
-; PC64-NEXT:    bl sqrt
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 4, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    fmr 2, 30
-; PC64-NEXT:    fmr 3, 29
-; PC64-NEXT:    lfd 31, 136(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 30, 128(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 29, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 144
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
- entry:
-  %sqrt = call <4 x double> @llvm.experimental.constrained.sqrt.v4f64(
-                              <4 x double> <double 42.0, double 42.1,
-                                            double 42.2, double 42.3>,
-                              metadata !"round.dynamic",
-                              metadata !"fpexcept.strict")
-  ret <4 x double> %sqrt
-}
-
-define <1 x float> @constrained_vector_pow_v1f32() {
-; PC64LE-LABEL: constrained_vector_pow_v1f32:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -32(1)
-; PC64LE-NEXT:    .cfi_def_cfa_offset 32
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    addis 3, 2, .LCPI30_0 at toc@ha
-; PC64LE-NEXT:    addis 4, 2, .LCPI30_1 at toc@ha
-; PC64LE-NEXT:    lfs 1, .LCPI30_0 at toc@l(3)
-; PC64LE-NEXT:    lfs 2, .LCPI30_1 at toc@l(4)
-; PC64LE-NEXT:    bl powf
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    xscvdpspn 0, 1
-; PC64LE-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE-NEXT:    addi 1, 1, 32
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_pow_v1f32:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -32(1)
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 32
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    addis 3, 2, .LCPI30_0 at toc@ha
-; PC64LE9-NEXT:    lfs 1, .LCPI30_0 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI30_1 at toc@ha
-; PC64LE9-NEXT:    lfs 2, .LCPI30_1 at toc@l(3)
-; PC64LE9-NEXT:    bl powf
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    xscvdpspn 0, 1
-; PC64LE9-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE9-NEXT:    addi 1, 1, 32
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_pow_v1f32:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -112(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 112
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    addis 3, 2, .LCPI30_0 at toc@ha
-; PC64-NEXT:    lfs 1, .LCPI30_0 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI30_1 at toc@ha
-; PC64-NEXT:    lfs 2, .LCPI30_1 at toc@l(3)
-; PC64-NEXT:    bl powf
-; PC64-NEXT:    nop
-; PC64-NEXT:    addi 1, 1, 112
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %pow = call <1 x float> @llvm.experimental.constrained.pow.v1f32(
-                             <1 x float> <float 42.0>,
-                             <1 x float> <float 3.0>,
-                             metadata !"round.dynamic",
-                             metadata !"fpexcept.strict")
-  ret <1 x float> %pow
-}
-
-define <2 x double> @constrained_vector_pow_v2f64() {
-; PC64LE-LABEL: constrained_vector_pow_v2f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    .cfi_def_cfa_offset 80
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    .cfi_offset f31, -8
-; PC64LE-NEXT:    stfd 31, -8(1) # 8-byte Folded Spill
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -80(1)
-; PC64LE-NEXT:    addis 4, 2, .LCPI31_1 at toc@ha
-; PC64LE-NEXT:    addis 3, 2, .LCPI31_0 at toc@ha
-; PC64LE-NEXT:    lfs 31, .LCPI31_1 at toc@l(4)
-; PC64LE-NEXT:    lfd 1, .LCPI31_0 at toc@l(3)
-; PC64LE-NEXT:    fmr 2, 31
-; PC64LE-NEXT:    bl pow
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    fmr 2, 31
-; PC64LE-NEXT:    stxvd2x 1, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI31_2 at toc@ha
-; PC64LE-NEXT:    lfd 1, .LCPI31_2 at toc@l(3)
-; PC64LE-NEXT:    bl pow
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    lxvd2x 0, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    xxmrghd 34, 1, 0
-; PC64LE-NEXT:    addi 1, 1, 80
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    lfd 31, -8(1) # 8-byte Folded Reload
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_pow_v2f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 64
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    .cfi_offset f31, -8
-; PC64LE9-NEXT:    stfd 31, -8(1) # 8-byte Folded Spill
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -64(1)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI31_0 at toc@ha
-; PC64LE9-NEXT:    lfd 1, .LCPI31_0 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI31_1 at toc@ha
-; PC64LE9-NEXT:    lfs 31, .LCPI31_1 at toc@l(3)
-; PC64LE9-NEXT:    fmr 2, 31
-; PC64LE9-NEXT:    bl pow
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI31_2 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    stxv 1, 32(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    lfd 1, .LCPI31_2 at toc@l(3)
-; PC64LE9-NEXT:    fmr 2, 31
-; PC64LE9-NEXT:    bl pow
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    lxv 0, 32(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    xxmrghd 34, 1, 0
-; PC64LE9-NEXT:    addi 1, 1, 64
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    lfd 31, -8(1) # 8-byte Folded Reload
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_pow_v2f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -128(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 128
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f30, -16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI31_0 at toc@ha
-; PC64-NEXT:    stfd 31, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 30, 112(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfd 1, .LCPI31_0 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI31_1 at toc@ha
-; PC64-NEXT:    lfs 31, .LCPI31_1 at toc@l(3)
-; PC64-NEXT:    fmr 2, 31
-; PC64-NEXT:    bl pow
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI31_2 at toc@ha
-; PC64-NEXT:    fmr 30, 1
-; PC64-NEXT:    lfd 1, .LCPI31_2 at toc@l(3)
-; PC64-NEXT:    fmr 2, 31
-; PC64-NEXT:    bl pow
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 2, 1
-; PC64-NEXT:    fmr 1, 30
-; PC64-NEXT:    lfd 31, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 30, 112(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 128
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %pow = call <2 x double> @llvm.experimental.constrained.pow.v2f64(
-                             <2 x double> <double 42.1, double 42.2>,
-                             <2 x double> <double 3.0, double 3.0>,
-                             metadata !"round.dynamic",
-                             metadata !"fpexcept.strict")
-  ret <2 x double> %pow
-}
-
-define <3 x float> @constrained_vector_pow_v3f32() {
-; PC64LE-LABEL: constrained_vector_pow_v3f32:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    .cfi_def_cfa_offset 64
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    .cfi_offset f29, -24
-; PC64LE-NEXT:    .cfi_offset f30, -16
-; PC64LE-NEXT:    .cfi_offset f31, -8
-; PC64LE-NEXT:    stfd 29, -24(1) # 8-byte Folded Spill
-; PC64LE-NEXT:    stfd 30, -16(1) # 8-byte Folded Spill
-; PC64LE-NEXT:    stfd 31, -8(1) # 8-byte Folded Spill
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -64(1)
-; PC64LE-NEXT:    addis 4, 2, .LCPI32_1 at toc@ha
-; PC64LE-NEXT:    addis 3, 2, .LCPI32_0 at toc@ha
-; PC64LE-NEXT:    lfs 31, .LCPI32_1 at toc@l(4)
-; PC64LE-NEXT:    lfs 1, .LCPI32_0 at toc@l(3)
-; PC64LE-NEXT:    fmr 2, 31
-; PC64LE-NEXT:    bl powf
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    addis 3, 2, .LCPI32_2 at toc@ha
-; PC64LE-NEXT:    fmr 2, 31
-; PC64LE-NEXT:    fmr 30, 1
-; PC64LE-NEXT:    lfs 1, .LCPI32_2 at toc@l(3)
-; PC64LE-NEXT:    bl powf
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    addis 3, 2, .LCPI32_3 at toc@ha
-; PC64LE-NEXT:    fmr 2, 31
-; PC64LE-NEXT:    fmr 29, 1
-; PC64LE-NEXT:    lfs 1, .LCPI32_3 at toc@l(3)
-; PC64LE-NEXT:    bl powf
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    xscvdpspn 0, 29
-; PC64LE-NEXT:    addis 3, 2, .LCPI32_4 at toc@ha
-; PC64LE-NEXT:    xscvdpspn 1, 1
-; PC64LE-NEXT:    addi 3, 3, .LCPI32_4 at toc@l
-; PC64LE-NEXT:    lvx 4, 0, 3
-; PC64LE-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE-NEXT:    xscvdpspn 0, 30
-; PC64LE-NEXT:    xxsldwi 35, 1, 1, 1
-; PC64LE-NEXT:    vmrglw 2, 2, 3
-; PC64LE-NEXT:    xxsldwi 35, 0, 0, 1
-; PC64LE-NEXT:    vperm 2, 3, 2, 4
-; PC64LE-NEXT:    addi 1, 1, 64
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    lfd 31, -8(1) # 8-byte Folded Reload
-; PC64LE-NEXT:    lfd 30, -16(1) # 8-byte Folded Reload
-; PC64LE-NEXT:    lfd 29, -24(1) # 8-byte Folded Reload
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_pow_v3f32:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 64
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    .cfi_offset f29, -24
-; PC64LE9-NEXT:    .cfi_offset f30, -16
-; PC64LE9-NEXT:    .cfi_offset f31, -8
-; PC64LE9-NEXT:    stfd 29, -24(1) # 8-byte Folded Spill
-; PC64LE9-NEXT:    stfd 30, -16(1) # 8-byte Folded Spill
-; PC64LE9-NEXT:    stfd 31, -8(1) # 8-byte Folded Spill
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -64(1)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI32_0 at toc@ha
-; PC64LE9-NEXT:    lfs 1, .LCPI32_0 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI32_1 at toc@ha
-; PC64LE9-NEXT:    lfs 31, .LCPI32_1 at toc@l(3)
-; PC64LE9-NEXT:    fmr 2, 31
-; PC64LE9-NEXT:    bl powf
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI32_2 at toc@ha
-; PC64LE9-NEXT:    fmr 30, 1
-; PC64LE9-NEXT:    lfs 1, .LCPI32_2 at toc@l(3)
-; PC64LE9-NEXT:    fmr 2, 31
-; PC64LE9-NEXT:    bl powf
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI32_3 at toc@ha
-; PC64LE9-NEXT:    fmr 29, 1
-; PC64LE9-NEXT:    lfs 1, .LCPI32_3 at toc@l(3)
-; PC64LE9-NEXT:    fmr 2, 31
-; PC64LE9-NEXT:    bl powf
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    xscvdpspn 0, 1
-; PC64LE9-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE9-NEXT:    xscvdpspn 0, 29
-; PC64LE9-NEXT:    xxsldwi 35, 0, 0, 1
-; PC64LE9-NEXT:    xscvdpspn 0, 30
-; PC64LE9-NEXT:    addis 3, 2, .LCPI32_4 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI32_4 at toc@l
-; PC64LE9-NEXT:    lxvx 36, 0, 3
-; PC64LE9-NEXT:    vmrglw 2, 3, 2
-; PC64LE9-NEXT:    xxsldwi 35, 0, 0, 1
-; PC64LE9-NEXT:    vperm 2, 3, 2, 4
-; PC64LE9-NEXT:    addi 1, 1, 64
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    lfd 31, -8(1) # 8-byte Folded Reload
-; PC64LE9-NEXT:    lfd 30, -16(1) # 8-byte Folded Reload
-; PC64LE9-NEXT:    lfd 29, -24(1) # 8-byte Folded Reload
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_pow_v3f32:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -144(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 144
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f29, -24
-; PC64-NEXT:    .cfi_offset f30, -16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI32_0 at toc@ha
-; PC64-NEXT:    stfd 31, 136(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 29, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 30, 128(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfs 1, .LCPI32_0 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI32_1 at toc@ha
-; PC64-NEXT:    lfs 31, .LCPI32_1 at toc@l(3)
-; PC64-NEXT:    fmr 2, 31
-; PC64-NEXT:    bl powf
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI32_2 at toc@ha
-; PC64-NEXT:    fmr 30, 1
-; PC64-NEXT:    lfs 1, .LCPI32_2 at toc@l(3)
-; PC64-NEXT:    fmr 2, 31
-; PC64-NEXT:    bl powf
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI32_3 at toc@ha
-; PC64-NEXT:    fmr 29, 1
-; PC64-NEXT:    lfs 1, .LCPI32_3 at toc@l(3)
-; PC64-NEXT:    fmr 2, 31
-; PC64-NEXT:    bl powf
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 3, 1
-; PC64-NEXT:    fmr 1, 30
-; PC64-NEXT:    fmr 2, 29
-; PC64-NEXT:    lfd 31, 136(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 30, 128(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 29, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 144
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %pow = call <3 x float> @llvm.experimental.constrained.pow.v3f32(
-                             <3 x float> <float 42.0, float 43.0, float 44.0>,
-                             <3 x float> <float 3.0, float 3.0, float 3.0>,
-                             metadata !"round.dynamic",
-                             metadata !"fpexcept.strict")
-  ret <3 x float> %pow
-}
-
-define <3 x double> @constrained_vector_pow_v3f64() {
-; PC64LE-LABEL: constrained_vector_pow_v3f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -96(1)
-; PC64LE-NEXT:    .cfi_def_cfa_offset 96
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    .cfi_offset f31, -8
-; PC64LE-NEXT:    .cfi_offset v31, -32
-; PC64LE-NEXT:    addis 4, 2, .LCPI33_1 at toc@ha
-; PC64LE-NEXT:    stfd 31, 88(1) # 8-byte Folded Spill
-; PC64LE-NEXT:    li 3, 64
-; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI33_0 at toc@ha
-; PC64LE-NEXT:    lfs 31, .LCPI33_1 at toc@l(4)
-; PC64LE-NEXT:    lfs 1, .LCPI33_0 at toc@l(3)
-; PC64LE-NEXT:    fmr 2, 31
-; PC64LE-NEXT:    bl pow
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    fmr 2, 31
-; PC64LE-NEXT:    stxvd2x 1, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI33_2 at toc@ha
-; PC64LE-NEXT:    lfd 1, .LCPI33_2 at toc@l(3)
-; PC64LE-NEXT:    bl pow
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    fmr 2, 31
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    lxvd2x 0, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    addis 3, 2, .LCPI33_3 at toc@ha
-; PC64LE-NEXT:    xxmrghd 63, 1, 0
-; PC64LE-NEXT:    lfd 1, .LCPI33_3 at toc@l(3)
-; PC64LE-NEXT:    bl pow
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 64
-; PC64LE-NEXT:    fmr 3, 1
-; PC64LE-NEXT:    xxlor 1, 63, 63
-; PC64LE-NEXT:    lfd 31, 88(1) # 8-byte Folded Reload
-; PC64LE-NEXT:    xxlor 2, 63, 63
-; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    addi 1, 1, 96
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_pow_v3f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -80(1)
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 80
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    .cfi_offset f31, -8
-; PC64LE9-NEXT:    .cfi_offset v31, -32
-; PC64LE9-NEXT:    addis 3, 2, .LCPI33_0 at toc@ha
-; PC64LE9-NEXT:    lfs 1, .LCPI33_0 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI33_1 at toc@ha
-; PC64LE9-NEXT:    stfd 31, 72(1) # 8-byte Folded Spill
-; PC64LE9-NEXT:    lfs 31, .LCPI33_1 at toc@l(3)
-; PC64LE9-NEXT:    fmr 2, 31
-; PC64LE9-NEXT:    stxv 63, 48(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    bl pow
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI33_2 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    stxv 1, 32(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    lfd 1, .LCPI33_2 at toc@l(3)
-; PC64LE9-NEXT:    fmr 2, 31
-; PC64LE9-NEXT:    bl pow
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    lxv 0, 32(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    addis 3, 2, .LCPI33_3 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    xxmrghd 63, 1, 0
-; PC64LE9-NEXT:    lfd 1, .LCPI33_3 at toc@l(3)
-; PC64LE9-NEXT:    fmr 2, 31
-; PC64LE9-NEXT:    bl pow
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    fmr 3, 1
-; PC64LE9-NEXT:    xscpsgndp 1, 63, 63
-; PC64LE9-NEXT:    xscpsgndp 2, 63, 63
-; PC64LE9-NEXT:    lxv 63, 48(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    lfd 31, 72(1) # 8-byte Folded Reload
-; PC64LE9-NEXT:    addi 1, 1, 80
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_pow_v3f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -144(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 144
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f29, -24
-; PC64-NEXT:    .cfi_offset f30, -16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI33_0 at toc@ha
-; PC64-NEXT:    stfd 31, 136(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 29, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 30, 128(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfs 1, .LCPI33_0 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI33_1 at toc@ha
-; PC64-NEXT:    lfs 31, .LCPI33_1 at toc@l(3)
-; PC64-NEXT:    fmr 2, 31
-; PC64-NEXT:    bl pow
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI33_2 at toc@ha
-; PC64-NEXT:    fmr 30, 1
-; PC64-NEXT:    lfd 1, .LCPI33_2 at toc@l(3)
-; PC64-NEXT:    fmr 2, 31
-; PC64-NEXT:    bl pow
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI33_3 at toc@ha
-; PC64-NEXT:    fmr 29, 1
-; PC64-NEXT:    lfd 1, .LCPI33_3 at toc@l(3)
-; PC64-NEXT:    fmr 2, 31
-; PC64-NEXT:    bl pow
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 3, 1
-; PC64-NEXT:    fmr 1, 30
-; PC64-NEXT:    fmr 2, 29
-; PC64-NEXT:    lfd 31, 136(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 30, 128(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 29, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 144
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %pow = call <3 x double> @llvm.experimental.constrained.pow.v3f64(
-                          <3 x double> <double 42.0, double 42.1, double 42.2>,
-                          <3 x double> <double 3.0, double 3.0, double 3.0>,
-                          metadata !"round.dynamic",
-                          metadata !"fpexcept.strict")
-  ret <3 x double> %pow
-}
-
-define <4 x double> @constrained_vector_pow_v4f64() {
-; PC64LE-LABEL: constrained_vector_pow_v4f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -96(1)
-; PC64LE-NEXT:    .cfi_def_cfa_offset 96
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    .cfi_offset f31, -8
-; PC64LE-NEXT:    .cfi_offset v31, -32
-; PC64LE-NEXT:    addis 4, 2, .LCPI34_1 at toc@ha
-; PC64LE-NEXT:    stfd 31, 88(1) # 8-byte Folded Spill
-; PC64LE-NEXT:    li 3, 64
-; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI34_0 at toc@ha
-; PC64LE-NEXT:    lfs 31, .LCPI34_1 at toc@l(4)
-; PC64LE-NEXT:    lfd 1, .LCPI34_0 at toc@l(3)
-; PC64LE-NEXT:    fmr 2, 31
-; PC64LE-NEXT:    bl pow
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    fmr 2, 31
-; PC64LE-NEXT:    stxvd2x 1, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI34_2 at toc@ha
-; PC64LE-NEXT:    lfd 1, .LCPI34_2 at toc@l(3)
-; PC64LE-NEXT:    bl pow
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    fmr 2, 31
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    lxvd2x 0, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    addis 3, 2, .LCPI34_3 at toc@ha
-; PC64LE-NEXT:    xxmrghd 63, 1, 0
-; PC64LE-NEXT:    lfd 1, .LCPI34_3 at toc@l(3)
-; PC64LE-NEXT:    bl pow
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    fmr 2, 31
-; PC64LE-NEXT:    stxvd2x 1, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI34_4 at toc@ha
-; PC64LE-NEXT:    lfd 1, .LCPI34_4 at toc@l(3)
-; PC64LE-NEXT:    bl pow
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    vmr 2, 31
-; PC64LE-NEXT:    lfd 31, 88(1) # 8-byte Folded Reload
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    lxvd2x 0, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    li 3, 64
-; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    xxmrghd 35, 1, 0
-; PC64LE-NEXT:    addi 1, 1, 96
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_pow_v4f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -80(1)
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 80
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    .cfi_offset f31, -8
-; PC64LE9-NEXT:    .cfi_offset v31, -32
-; PC64LE9-NEXT:    addis 3, 2, .LCPI34_0 at toc@ha
-; PC64LE9-NEXT:    lfd 1, .LCPI34_0 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI34_1 at toc@ha
-; PC64LE9-NEXT:    stfd 31, 72(1) # 8-byte Folded Spill
-; PC64LE9-NEXT:    lfs 31, .LCPI34_1 at toc@l(3)
-; PC64LE9-NEXT:    fmr 2, 31
-; PC64LE9-NEXT:    stxv 63, 48(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    bl pow
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI34_2 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    stxv 1, 32(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    lfd 1, .LCPI34_2 at toc@l(3)
-; PC64LE9-NEXT:    fmr 2, 31
-; PC64LE9-NEXT:    bl pow
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    lxv 0, 32(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    addis 3, 2, .LCPI34_3 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    xxmrghd 63, 1, 0
-; PC64LE9-NEXT:    lfd 1, .LCPI34_3 at toc@l(3)
-; PC64LE9-NEXT:    fmr 2, 31
-; PC64LE9-NEXT:    bl pow
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI34_4 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    stxv 1, 32(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    lfd 1, .LCPI34_4 at toc@l(3)
-; PC64LE9-NEXT:    fmr 2, 31
-; PC64LE9-NEXT:    bl pow
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    lxv 0, 32(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    vmr 2, 31
-; PC64LE9-NEXT:    lxv 63, 48(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    lfd 31, 72(1) # 8-byte Folded Reload
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    xxmrghd 35, 1, 0
-; PC64LE9-NEXT:    addi 1, 1, 80
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_pow_v4f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -144(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 144
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f28, -32
-; PC64-NEXT:    .cfi_offset f29, -24
-; PC64-NEXT:    .cfi_offset f30, -16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI34_0 at toc@ha
-; PC64-NEXT:    stfd 31, 136(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 28, 112(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 29, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 30, 128(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfd 1, .LCPI34_0 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI34_1 at toc@ha
-; PC64-NEXT:    lfs 31, .LCPI34_1 at toc@l(3)
-; PC64-NEXT:    fmr 2, 31
-; PC64-NEXT:    bl pow
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI34_2 at toc@ha
-; PC64-NEXT:    fmr 30, 1
-; PC64-NEXT:    lfd 1, .LCPI34_2 at toc@l(3)
-; PC64-NEXT:    fmr 2, 31
-; PC64-NEXT:    bl pow
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI34_3 at toc@ha
-; PC64-NEXT:    fmr 29, 1
-; PC64-NEXT:    lfd 1, .LCPI34_3 at toc@l(3)
-; PC64-NEXT:    fmr 2, 31
-; PC64-NEXT:    bl pow
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI34_4 at toc@ha
-; PC64-NEXT:    fmr 28, 1
-; PC64-NEXT:    lfd 1, .LCPI34_4 at toc@l(3)
-; PC64-NEXT:    fmr 2, 31
-; PC64-NEXT:    bl pow
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 4, 1
-; PC64-NEXT:    fmr 1, 30
-; PC64-NEXT:    fmr 2, 29
-; PC64-NEXT:    fmr 3, 28
-; PC64-NEXT:    lfd 31, 136(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 30, 128(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 29, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 28, 112(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 144
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %pow = call <4 x double> @llvm.experimental.constrained.pow.v4f64(
-                             <4 x double> <double 42.1, double 42.2,
-                                           double 42.3, double 42.4>,
-                             <4 x double> <double 3.0, double 3.0,
-                                           double 3.0, double 3.0>,
-                             metadata !"round.dynamic",
-                             metadata !"fpexcept.strict")
-  ret <4 x double> %pow
-}
-
-define <1 x float> @constrained_vector_powi_v1f32() {
-; PC64LE-LABEL: constrained_vector_powi_v1f32:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -32(1)
-; PC64LE-NEXT:    .cfi_def_cfa_offset 32
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    addis 3, 2, .LCPI35_0 at toc@ha
-; PC64LE-NEXT:    li 4, 3
-; PC64LE-NEXT:    lfs 1, .LCPI35_0 at toc@l(3)
-; PC64LE-NEXT:    bl __powisf2
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    xscvdpspn 0, 1
-; PC64LE-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE-NEXT:    addi 1, 1, 32
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_powi_v1f32:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -32(1)
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 32
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    addis 3, 2, .LCPI35_0 at toc@ha
-; PC64LE9-NEXT:    lfs 1, .LCPI35_0 at toc@l(3)
-; PC64LE9-NEXT:    li 4, 3
-; PC64LE9-NEXT:    bl __powisf2
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    xscvdpspn 0, 1
-; PC64LE9-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE9-NEXT:    addi 1, 1, 32
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_powi_v1f32:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -112(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 112
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    addis 3, 2, .LCPI35_0 at toc@ha
-; PC64-NEXT:    li 4, 3
-; PC64-NEXT:    lfs 1, .LCPI35_0 at toc@l(3)
-; PC64-NEXT:    bl __powisf2
-; PC64-NEXT:    nop
-; PC64-NEXT:    addi 1, 1, 112
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %powi = call <1 x float> @llvm.experimental.constrained.powi.v1f32(
-                              <1 x float> <float 42.0>,
-                              i32 3,
-                              metadata !"round.dynamic",
-                              metadata !"fpexcept.strict")
-  ret <1 x float> %powi
-}
-
-define <2 x double> @constrained_vector_powi_v2f64() {
-; PC64LE-LABEL: constrained_vector_powi_v2f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -64(1)
-; PC64LE-NEXT:    .cfi_def_cfa_offset 64
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    addis 3, 2, .LCPI36_0 at toc@ha
-; PC64LE-NEXT:    li 4, 3
-; PC64LE-NEXT:    lfd 1, .LCPI36_0 at toc@l(3)
-; PC64LE-NEXT:    bl __powidf2
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    li 4, 3
-; PC64LE-NEXT:    stxvd2x 1, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI36_1 at toc@ha
-; PC64LE-NEXT:    lfd 1, .LCPI36_1 at toc@l(3)
-; PC64LE-NEXT:    bl __powidf2
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    lxvd2x 0, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    xxmrghd 34, 1, 0
-; PC64LE-NEXT:    addi 1, 1, 64
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_powi_v2f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -48(1)
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 48
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    addis 3, 2, .LCPI36_0 at toc@ha
-; PC64LE9-NEXT:    lfd 1, .LCPI36_0 at toc@l(3)
-; PC64LE9-NEXT:    li 4, 3
-; PC64LE9-NEXT:    bl __powidf2
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI36_1 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    stxv 1, 32(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    lfd 1, .LCPI36_1 at toc@l(3)
-; PC64LE9-NEXT:    li 4, 3
-; PC64LE9-NEXT:    bl __powidf2
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    lxv 0, 32(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    xxmrghd 34, 1, 0
-; PC64LE9-NEXT:    addi 1, 1, 48
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_powi_v2f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -128(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 128
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI36_0 at toc@ha
-; PC64-NEXT:    li 4, 3
-; PC64-NEXT:    lfd 1, .LCPI36_0 at toc@l(3)
-; PC64-NEXT:    stfd 31, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    bl __powidf2
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI36_1 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfd 1, .LCPI36_1 at toc@l(3)
-; PC64-NEXT:    li 4, 3
-; PC64-NEXT:    bl __powidf2
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 2, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    lfd 31, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 128
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %powi = call <2 x double> @llvm.experimental.constrained.powi.v2f64(
-                              <2 x double> <double 42.1, double 42.2>,
-                              i32 3,
-                              metadata !"round.dynamic",
-                              metadata !"fpexcept.strict")
-  ret <2 x double> %powi
-}
-
-define <3 x float> @constrained_vector_powi_v3f32() {
-;
-;
-; PC64LE-LABEL: constrained_vector_powi_v3f32:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    .cfi_def_cfa_offset 48
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    .cfi_offset f30, -16
-; PC64LE-NEXT:    .cfi_offset f31, -8
-; PC64LE-NEXT:    stfd 30, -16(1) # 8-byte Folded Spill
-; PC64LE-NEXT:    stfd 31, -8(1) # 8-byte Folded Spill
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -48(1)
-; PC64LE-NEXT:    addis 3, 2, .LCPI37_0 at toc@ha
-; PC64LE-NEXT:    li 4, 3
-; PC64LE-NEXT:    lfs 1, .LCPI37_0 at toc@l(3)
-; PC64LE-NEXT:    bl __powisf2
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    addis 3, 2, .LCPI37_1 at toc@ha
-; PC64LE-NEXT:    fmr 31, 1
-; PC64LE-NEXT:    li 4, 3
-; PC64LE-NEXT:    lfs 1, .LCPI37_1 at toc@l(3)
-; PC64LE-NEXT:    bl __powisf2
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    addis 3, 2, .LCPI37_2 at toc@ha
-; PC64LE-NEXT:    fmr 30, 1
-; PC64LE-NEXT:    li 4, 3
-; PC64LE-NEXT:    lfs 1, .LCPI37_2 at toc@l(3)
-; PC64LE-NEXT:    bl __powisf2
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    xscvdpspn 0, 30
-; PC64LE-NEXT:    addis 3, 2, .LCPI37_3 at toc@ha
-; PC64LE-NEXT:    xscvdpspn 1, 1
-; PC64LE-NEXT:    addi 3, 3, .LCPI37_3 at toc@l
-; PC64LE-NEXT:    lvx 4, 0, 3
-; PC64LE-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE-NEXT:    xscvdpspn 0, 31
-; PC64LE-NEXT:    xxsldwi 35, 1, 1, 1
-; PC64LE-NEXT:    vmrglw 2, 2, 3
-; PC64LE-NEXT:    xxsldwi 35, 0, 0, 1
-; PC64LE-NEXT:    vperm 2, 3, 2, 4
-; PC64LE-NEXT:    addi 1, 1, 48
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    lfd 31, -8(1) # 8-byte Folded Reload
-; PC64LE-NEXT:    lfd 30, -16(1) # 8-byte Folded Reload
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_powi_v3f32:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 48
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    .cfi_offset f30, -16
-; PC64LE9-NEXT:    .cfi_offset f31, -8
-; PC64LE9-NEXT:    stfd 30, -16(1) # 8-byte Folded Spill
-; PC64LE9-NEXT:    stfd 31, -8(1) # 8-byte Folded Spill
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -48(1)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI37_0 at toc@ha
-; PC64LE9-NEXT:    lfs 1, .LCPI37_0 at toc@l(3)
-; PC64LE9-NEXT:    li 4, 3
-; PC64LE9-NEXT:    bl __powisf2
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI37_1 at toc@ha
-; PC64LE9-NEXT:    fmr 31, 1
-; PC64LE9-NEXT:    lfs 1, .LCPI37_1 at toc@l(3)
-; PC64LE9-NEXT:    li 4, 3
-; PC64LE9-NEXT:    bl __powisf2
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI37_2 at toc@ha
-; PC64LE9-NEXT:    fmr 30, 1
-; PC64LE9-NEXT:    lfs 1, .LCPI37_2 at toc@l(3)
-; PC64LE9-NEXT:    li 4, 3
-; PC64LE9-NEXT:    bl __powisf2
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    xscvdpspn 0, 1
-; PC64LE9-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE9-NEXT:    xscvdpspn 0, 30
-; PC64LE9-NEXT:    xxsldwi 35, 0, 0, 1
-; PC64LE9-NEXT:    xscvdpspn 0, 31
-; PC64LE9-NEXT:    addis 3, 2, .LCPI37_3 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI37_3 at toc@l
-; PC64LE9-NEXT:    lxvx 36, 0, 3
-; PC64LE9-NEXT:    vmrglw 2, 3, 2
-; PC64LE9-NEXT:    xxsldwi 35, 0, 0, 1
-; PC64LE9-NEXT:    vperm 2, 3, 2, 4
-; PC64LE9-NEXT:    addi 1, 1, 48
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    lfd 31, -8(1) # 8-byte Folded Reload
-; PC64LE9-NEXT:    lfd 30, -16(1) # 8-byte Folded Reload
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_powi_v3f32:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -128(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 128
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f30, -16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI37_0 at toc@ha
-; PC64-NEXT:    li 4, 3
-; PC64-NEXT:    lfs 1, .LCPI37_0 at toc@l(3)
-; PC64-NEXT:    stfd 30, 112(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 31, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    bl __powisf2
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI37_1 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfs 1, .LCPI37_1 at toc@l(3)
-; PC64-NEXT:    li 4, 3
-; PC64-NEXT:    bl __powisf2
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI37_2 at toc@ha
-; PC64-NEXT:    fmr 30, 1
-; PC64-NEXT:    lfs 1, .LCPI37_2 at toc@l(3)
-; PC64-NEXT:    li 4, 3
-; PC64-NEXT:    bl __powisf2
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 3, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    fmr 2, 30
-; PC64-NEXT:    lfd 31, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 30, 112(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 128
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %powi = call <3 x float> @llvm.experimental.constrained.powi.v3f32(
-                              <3 x float> <float 42.0, float 43.0, float 44.0>,
-                              i32 3,
-                              metadata !"round.dynamic",
-                              metadata !"fpexcept.strict")
-  ret <3 x float> %powi
-}
-
-define <3 x double> @constrained_vector_powi_v3f64() {
-; PC64LE-LABEL: constrained_vector_powi_v3f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -80(1)
-; PC64LE-NEXT:    .cfi_def_cfa_offset 80
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    .cfi_offset v31, -16
-; PC64LE-NEXT:    li 3, 64
-; PC64LE-NEXT:    li 4, 3
-; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI38_0 at toc@ha
-; PC64LE-NEXT:    lfd 1, .LCPI38_0 at toc@l(3)
-; PC64LE-NEXT:    bl __powidf2
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    li 4, 3
-; PC64LE-NEXT:    stxvd2x 1, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI38_1 at toc@ha
-; PC64LE-NEXT:    lfs 1, .LCPI38_1 at toc@l(3)
-; PC64LE-NEXT:    bl __powidf2
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    li 4, 3
-; PC64LE-NEXT:    lxvd2x 0, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    addis 3, 2, .LCPI38_2 at toc@ha
-; PC64LE-NEXT:    xxmrghd 63, 0, 1
-; PC64LE-NEXT:    lfd 1, .LCPI38_2 at toc@l(3)
-; PC64LE-NEXT:    bl __powidf2
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 64
-; PC64LE-NEXT:    fmr 3, 1
-; PC64LE-NEXT:    xxlor 1, 63, 63
-; PC64LE-NEXT:    xxlor 2, 63, 63
-; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    addi 1, 1, 80
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_powi_v3f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -64(1)
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 64
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    .cfi_offset v31, -16
-; PC64LE9-NEXT:    addis 3, 2, .LCPI38_0 at toc@ha
-; PC64LE9-NEXT:    lfd 1, .LCPI38_0 at toc@l(3)
-; PC64LE9-NEXT:    li 4, 3
-; PC64LE9-NEXT:    stxv 63, 48(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    bl __powidf2
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI38_1 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    stxv 1, 32(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    lfs 1, .LCPI38_1 at toc@l(3)
-; PC64LE9-NEXT:    li 4, 3
-; PC64LE9-NEXT:    bl __powidf2
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    lxv 0, 32(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    addis 3, 2, .LCPI38_2 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    xxmrghd 63, 0, 1
-; PC64LE9-NEXT:    lfd 1, .LCPI38_2 at toc@l(3)
-; PC64LE9-NEXT:    li 4, 3
-; PC64LE9-NEXT:    bl __powidf2
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    fmr 3, 1
-; PC64LE9-NEXT:    xscpsgndp 1, 63, 63
-; PC64LE9-NEXT:    xscpsgndp 2, 63, 63
-; PC64LE9-NEXT:    lxv 63, 48(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    addi 1, 1, 64
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_powi_v3f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -128(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 128
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f30, -16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI38_0 at toc@ha
-; PC64-NEXT:    li 4, 3
-; PC64-NEXT:    lfs 1, .LCPI38_0 at toc@l(3)
-; PC64-NEXT:    stfd 30, 112(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 31, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    bl __powidf2
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI38_1 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfd 1, .LCPI38_1 at toc@l(3)
-; PC64-NEXT:    li 4, 3
-; PC64-NEXT:    bl __powidf2
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI38_2 at toc@ha
-; PC64-NEXT:    fmr 30, 1
-; PC64-NEXT:    lfd 1, .LCPI38_2 at toc@l(3)
-; PC64-NEXT:    li 4, 3
-; PC64-NEXT:    bl __powidf2
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 3, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    fmr 2, 30
-; PC64-NEXT:    lfd 31, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 30, 112(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 128
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %powi = call <3 x double> @llvm.experimental.constrained.powi.v3f64(
-                          <3 x double> <double 42.0, double 42.1, double 42.2>,
-                          i32 3,
-                          metadata !"round.dynamic",
-                          metadata !"fpexcept.strict")
-  ret <3 x double> %powi
-}
-
-define <4 x double> @constrained_vector_powi_v4f64() {
-; PC64LE-LABEL: constrained_vector_powi_v4f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -80(1)
-; PC64LE-NEXT:    .cfi_def_cfa_offset 80
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    .cfi_offset v31, -16
-; PC64LE-NEXT:    li 3, 64
-; PC64LE-NEXT:    li 4, 3
-; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI39_0 at toc@ha
-; PC64LE-NEXT:    lfd 1, .LCPI39_0 at toc@l(3)
-; PC64LE-NEXT:    bl __powidf2
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    li 4, 3
-; PC64LE-NEXT:    stxvd2x 1, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI39_1 at toc@ha
-; PC64LE-NEXT:    lfd 1, .LCPI39_1 at toc@l(3)
-; PC64LE-NEXT:    bl __powidf2
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    li 4, 3
-; PC64LE-NEXT:    lxvd2x 0, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    addis 3, 2, .LCPI39_2 at toc@ha
-; PC64LE-NEXT:    xxmrghd 63, 1, 0
-; PC64LE-NEXT:    lfd 1, .LCPI39_2 at toc@l(3)
-; PC64LE-NEXT:    bl __powidf2
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    li 4, 3
-; PC64LE-NEXT:    stxvd2x 1, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI39_3 at toc@ha
-; PC64LE-NEXT:    lfd 1, .LCPI39_3 at toc@l(3)
-; PC64LE-NEXT:    bl __powidf2
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    vmr 2, 31
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    lxvd2x 0, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    li 3, 64
-; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    xxmrghd 35, 1, 0
-; PC64LE-NEXT:    addi 1, 1, 80
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_powi_v4f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -64(1)
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 64
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    .cfi_offset v31, -16
-; PC64LE9-NEXT:    addis 3, 2, .LCPI39_0 at toc@ha
-; PC64LE9-NEXT:    lfd 1, .LCPI39_0 at toc@l(3)
-; PC64LE9-NEXT:    li 4, 3
-; PC64LE9-NEXT:    stxv 63, 48(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    bl __powidf2
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI39_1 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    stxv 1, 32(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    lfd 1, .LCPI39_1 at toc@l(3)
-; PC64LE9-NEXT:    li 4, 3
-; PC64LE9-NEXT:    bl __powidf2
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    lxv 0, 32(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    addis 3, 2, .LCPI39_2 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    xxmrghd 63, 1, 0
-; PC64LE9-NEXT:    lfd 1, .LCPI39_2 at toc@l(3)
-; PC64LE9-NEXT:    li 4, 3
-; PC64LE9-NEXT:    bl __powidf2
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI39_3 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    stxv 1, 32(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    lfd 1, .LCPI39_3 at toc@l(3)
-; PC64LE9-NEXT:    li 4, 3
-; PC64LE9-NEXT:    bl __powidf2
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    lxv 0, 32(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    vmr 2, 31
-; PC64LE9-NEXT:    lxv 63, 48(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    xxmrghd 35, 1, 0
-; PC64LE9-NEXT:    addi 1, 1, 64
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_powi_v4f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -144(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 144
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f29, -24
-; PC64-NEXT:    .cfi_offset f30, -16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI39_0 at toc@ha
-; PC64-NEXT:    li 4, 3
-; PC64-NEXT:    lfd 1, .LCPI39_0 at toc@l(3)
-; PC64-NEXT:    stfd 29, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 30, 128(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 31, 136(1) # 8-byte Folded Spill
-; PC64-NEXT:    bl __powidf2
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI39_1 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfd 1, .LCPI39_1 at toc@l(3)
-; PC64-NEXT:    li 4, 3
-; PC64-NEXT:    bl __powidf2
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI39_2 at toc@ha
-; PC64-NEXT:    fmr 30, 1
-; PC64-NEXT:    lfd 1, .LCPI39_2 at toc@l(3)
-; PC64-NEXT:    li 4, 3
-; PC64-NEXT:    bl __powidf2
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI39_3 at toc@ha
-; PC64-NEXT:    fmr 29, 1
-; PC64-NEXT:    lfd 1, .LCPI39_3 at toc@l(3)
-; PC64-NEXT:    li 4, 3
-; PC64-NEXT:    bl __powidf2
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 4, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    fmr 2, 30
-; PC64-NEXT:    fmr 3, 29
-; PC64-NEXT:    lfd 31, 136(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 30, 128(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 29, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 144
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %powi = call <4 x double> @llvm.experimental.constrained.powi.v4f64(
-                              <4 x double> <double 42.1, double 42.2,
-                                            double 42.3, double 42.4>,
-                              i32 3,
-                              metadata !"round.dynamic",
-                              metadata !"fpexcept.strict")
-  ret <4 x double> %powi
-}
-
-define <1 x float> @constrained_vector_sin_v1f32() {
-; PC64LE-LABEL: constrained_vector_sin_v1f32:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -32(1)
-; PC64LE-NEXT:    .cfi_def_cfa_offset 32
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    addis 3, 2, .LCPI40_0 at toc@ha
-; PC64LE-NEXT:    lfs 1, .LCPI40_0 at toc@l(3)
-; PC64LE-NEXT:    bl sinf
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    xscvdpspn 0, 1
-; PC64LE-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE-NEXT:    addi 1, 1, 32
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_sin_v1f32:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -32(1)
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 32
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    addis 3, 2, .LCPI40_0 at toc@ha
-; PC64LE9-NEXT:    lfs 1, .LCPI40_0 at toc@l(3)
-; PC64LE9-NEXT:    bl sinf
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    xscvdpspn 0, 1
-; PC64LE9-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE9-NEXT:    addi 1, 1, 32
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_sin_v1f32:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -112(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 112
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    addis 3, 2, .LCPI40_0 at toc@ha
-; PC64-NEXT:    lfs 1, .LCPI40_0 at toc@l(3)
-; PC64-NEXT:    bl sinf
-; PC64-NEXT:    nop
-; PC64-NEXT:    addi 1, 1, 112
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %sin = call <1 x float> @llvm.experimental.constrained.sin.v1f32(
-                             <1 x float> <float 42.0>,
-                             metadata !"round.dynamic",
-                             metadata !"fpexcept.strict")
-  ret <1 x float> %sin
-}
-
-define <2 x double> @constrained_vector_sin_v2f64() {
-; PC64LE-LABEL: constrained_vector_sin_v2f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -64(1)
-; PC64LE-NEXT:    .cfi_def_cfa_offset 64
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    addis 3, 2, .LCPI41_0 at toc@ha
-; PC64LE-NEXT:    lfd 1, .LCPI41_0 at toc@l(3)
-; PC64LE-NEXT:    bl sin
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    stxvd2x 1, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI41_1 at toc@ha
-; PC64LE-NEXT:    lfs 1, .LCPI41_1 at toc@l(3)
-; PC64LE-NEXT:    bl sin
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    lxvd2x 0, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    xxmrghd 34, 0, 1
-; PC64LE-NEXT:    addi 1, 1, 64
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_sin_v2f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -48(1)
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 48
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    addis 3, 2, .LCPI41_0 at toc@ha
-; PC64LE9-NEXT:    lfd 1, .LCPI41_0 at toc@l(3)
-; PC64LE9-NEXT:    bl sin
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI41_1 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    stxv 1, 32(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    lfs 1, .LCPI41_1 at toc@l(3)
-; PC64LE9-NEXT:    bl sin
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    lxv 0, 32(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    xxmrghd 34, 0, 1
-; PC64LE9-NEXT:    addi 1, 1, 48
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_sin_v2f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -128(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 128
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI41_0 at toc@ha
-; PC64-NEXT:    stfd 31, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfs 1, .LCPI41_0 at toc@l(3)
-; PC64-NEXT:    bl sin
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI41_1 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfd 1, .LCPI41_1 at toc@l(3)
-; PC64-NEXT:    bl sin
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 2, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    lfd 31, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 128
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %sin = call <2 x double> @llvm.experimental.constrained.sin.v2f64(
-                             <2 x double> <double 42.0, double 42.1>,
-                             metadata !"round.dynamic",
-                             metadata !"fpexcept.strict")
-  ret <2 x double> %sin
-}
-
-define <3 x float> @constrained_vector_sin_v3f32() {
-; PC64LE-LABEL: constrained_vector_sin_v3f32:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    .cfi_def_cfa_offset 48
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    .cfi_offset f30, -16
-; PC64LE-NEXT:    .cfi_offset f31, -8
-; PC64LE-NEXT:    stfd 30, -16(1) # 8-byte Folded Spill
-; PC64LE-NEXT:    stfd 31, -8(1) # 8-byte Folded Spill
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -48(1)
-; PC64LE-NEXT:    addis 3, 2, .LCPI42_0 at toc@ha
-; PC64LE-NEXT:    lfs 1, .LCPI42_0 at toc@l(3)
-; PC64LE-NEXT:    bl sinf
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    addis 3, 2, .LCPI42_1 at toc@ha
-; PC64LE-NEXT:    fmr 31, 1
-; PC64LE-NEXT:    lfs 1, .LCPI42_1 at toc@l(3)
-; PC64LE-NEXT:    bl sinf
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    addis 3, 2, .LCPI42_2 at toc@ha
-; PC64LE-NEXT:    fmr 30, 1
-; PC64LE-NEXT:    lfs 1, .LCPI42_2 at toc@l(3)
-; PC64LE-NEXT:    bl sinf
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    xscvdpspn 0, 30
-; PC64LE-NEXT:    addis 3, 2, .LCPI42_3 at toc@ha
-; PC64LE-NEXT:    xscvdpspn 1, 1
-; PC64LE-NEXT:    addi 3, 3, .LCPI42_3 at toc@l
-; PC64LE-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE-NEXT:    xscvdpspn 0, 31
-; PC64LE-NEXT:    xxsldwi 35, 1, 1, 1
-; PC64LE-NEXT:    vmrglw 2, 2, 3
-; PC64LE-NEXT:    lvx 3, 0, 3
-; PC64LE-NEXT:    xxsldwi 36, 0, 0, 1
-; PC64LE-NEXT:    vperm 2, 4, 2, 3
-; PC64LE-NEXT:    addi 1, 1, 48
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    lfd 31, -8(1) # 8-byte Folded Reload
-; PC64LE-NEXT:    lfd 30, -16(1) # 8-byte Folded Reload
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_sin_v3f32:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 48
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    .cfi_offset f30, -16
-; PC64LE9-NEXT:    .cfi_offset f31, -8
-; PC64LE9-NEXT:    stfd 30, -16(1) # 8-byte Folded Spill
-; PC64LE9-NEXT:    stfd 31, -8(1) # 8-byte Folded Spill
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -48(1)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI42_0 at toc@ha
-; PC64LE9-NEXT:    lfs 1, .LCPI42_0 at toc@l(3)
-; PC64LE9-NEXT:    bl sinf
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI42_1 at toc@ha
-; PC64LE9-NEXT:    fmr 31, 1
-; PC64LE9-NEXT:    lfs 1, .LCPI42_1 at toc@l(3)
-; PC64LE9-NEXT:    bl sinf
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI42_2 at toc@ha
-; PC64LE9-NEXT:    fmr 30, 1
-; PC64LE9-NEXT:    lfs 1, .LCPI42_2 at toc@l(3)
-; PC64LE9-NEXT:    bl sinf
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    xscvdpspn 0, 1
-; PC64LE9-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE9-NEXT:    xscvdpspn 0, 30
-; PC64LE9-NEXT:    xxsldwi 35, 0, 0, 1
-; PC64LE9-NEXT:    xscvdpspn 0, 31
-; PC64LE9-NEXT:    addis 3, 2, .LCPI42_3 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI42_3 at toc@l
-; PC64LE9-NEXT:    vmrglw 2, 3, 2
-; PC64LE9-NEXT:    lxvx 35, 0, 3
-; PC64LE9-NEXT:    xxsldwi 36, 0, 0, 1
-; PC64LE9-NEXT:    vperm 2, 4, 2, 3
-; PC64LE9-NEXT:    addi 1, 1, 48
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    lfd 31, -8(1) # 8-byte Folded Reload
-; PC64LE9-NEXT:    lfd 30, -16(1) # 8-byte Folded Reload
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_sin_v3f32:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -128(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 128
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f30, -16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI42_0 at toc@ha
-; PC64-NEXT:    stfd 30, 112(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 31, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfs 1, .LCPI42_0 at toc@l(3)
-; PC64-NEXT:    bl sinf
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI42_1 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfs 1, .LCPI42_1 at toc@l(3)
-; PC64-NEXT:    bl sinf
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI42_2 at toc@ha
-; PC64-NEXT:    fmr 30, 1
-; PC64-NEXT:    lfs 1, .LCPI42_2 at toc@l(3)
-; PC64-NEXT:    bl sinf
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 3, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    fmr 2, 30
-; PC64-NEXT:    lfd 31, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 30, 112(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 128
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %sin = call <3 x float> @llvm.experimental.constrained.sin.v3f32(
-                              <3 x float> <float 42.0, float 43.0, float 44.0>,
-                              metadata !"round.dynamic",
-                              metadata !"fpexcept.strict")
-  ret <3 x float> %sin
-}
-
-define <3 x double> @constrained_vector_sin_v3f64() {
-; PC64LE-LABEL: constrained_vector_sin_v3f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -80(1)
-; PC64LE-NEXT:    .cfi_def_cfa_offset 80
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    .cfi_offset v31, -16
-; PC64LE-NEXT:    li 3, 64
-; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI43_0 at toc@ha
-; PC64LE-NEXT:    lfd 1, .LCPI43_0 at toc@l(3)
-; PC64LE-NEXT:    bl sin
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    stxvd2x 1, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI43_1 at toc@ha
-; PC64LE-NEXT:    lfs 1, .LCPI43_1 at toc@l(3)
-; PC64LE-NEXT:    bl sin
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    lxvd2x 0, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    addis 3, 2, .LCPI43_2 at toc@ha
-; PC64LE-NEXT:    xxmrghd 63, 0, 1
-; PC64LE-NEXT:    lfd 1, .LCPI43_2 at toc@l(3)
-; PC64LE-NEXT:    bl sin
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 64
-; PC64LE-NEXT:    fmr 3, 1
-; PC64LE-NEXT:    xxlor 1, 63, 63
-; PC64LE-NEXT:    xxlor 2, 63, 63
-; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    addi 1, 1, 80
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_sin_v3f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -64(1)
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 64
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    .cfi_offset v31, -16
-; PC64LE9-NEXT:    addis 3, 2, .LCPI43_0 at toc@ha
-; PC64LE9-NEXT:    lfd 1, .LCPI43_0 at toc@l(3)
-; PC64LE9-NEXT:    stxv 63, 48(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    bl sin
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI43_1 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    stxv 1, 32(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    lfs 1, .LCPI43_1 at toc@l(3)
-; PC64LE9-NEXT:    bl sin
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    lxv 0, 32(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    addis 3, 2, .LCPI43_2 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    xxmrghd 63, 0, 1
-; PC64LE9-NEXT:    lfd 1, .LCPI43_2 at toc@l(3)
-; PC64LE9-NEXT:    bl sin
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    fmr 3, 1
-; PC64LE9-NEXT:    xscpsgndp 1, 63, 63
-; PC64LE9-NEXT:    xscpsgndp 2, 63, 63
-; PC64LE9-NEXT:    lxv 63, 48(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    addi 1, 1, 64
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_sin_v3f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -128(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 128
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f30, -16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI43_0 at toc@ha
-; PC64-NEXT:    stfd 30, 112(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 31, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfs 1, .LCPI43_0 at toc@l(3)
-; PC64-NEXT:    bl sin
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI43_1 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfd 1, .LCPI43_1 at toc@l(3)
-; PC64-NEXT:    bl sin
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI43_2 at toc@ha
-; PC64-NEXT:    fmr 30, 1
-; PC64-NEXT:    lfd 1, .LCPI43_2 at toc@l(3)
-; PC64-NEXT:    bl sin
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 3, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    fmr 2, 30
-; PC64-NEXT:    lfd 31, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 30, 112(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 128
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %sin = call <3 x double> @llvm.experimental.constrained.sin.v3f64(
-                          <3 x double> <double 42.0, double 42.1, double 42.2>,
-                          metadata !"round.dynamic",
-                          metadata !"fpexcept.strict")
-  ret <3 x double> %sin
-}
-
-define <4 x double> @constrained_vector_sin_v4f64() {
-; PC64LE-LABEL: constrained_vector_sin_v4f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -80(1)
-; PC64LE-NEXT:    .cfi_def_cfa_offset 80
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    .cfi_offset v31, -16
-; PC64LE-NEXT:    li 3, 64
-; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI44_0 at toc@ha
-; PC64LE-NEXT:    lfd 1, .LCPI44_0 at toc@l(3)
-; PC64LE-NEXT:    bl sin
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    stxvd2x 1, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI44_1 at toc@ha
-; PC64LE-NEXT:    lfd 1, .LCPI44_1 at toc@l(3)
-; PC64LE-NEXT:    bl sin
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    lxvd2x 0, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    addis 3, 2, .LCPI44_2 at toc@ha
-; PC64LE-NEXT:    xxmrghd 63, 1, 0
-; PC64LE-NEXT:    lfd 1, .LCPI44_2 at toc@l(3)
-; PC64LE-NEXT:    bl sin
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    stxvd2x 1, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI44_3 at toc@ha
-; PC64LE-NEXT:    lfs 1, .LCPI44_3 at toc@l(3)
-; PC64LE-NEXT:    bl sin
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    vmr 3, 31
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    lxvd2x 0, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    li 3, 64
-; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    xxmrghd 34, 0, 1
-; PC64LE-NEXT:    addi 1, 1, 80
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_sin_v4f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -64(1)
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 64
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    .cfi_offset v31, -16
-; PC64LE9-NEXT:    addis 3, 2, .LCPI44_0 at toc@ha
-; PC64LE9-NEXT:    lfd 1, .LCPI44_0 at toc@l(3)
-; PC64LE9-NEXT:    stxv 63, 48(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    bl sin
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI44_1 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    stxv 1, 32(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    lfd 1, .LCPI44_1 at toc@l(3)
-; PC64LE9-NEXT:    bl sin
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    lxv 0, 32(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    addis 3, 2, .LCPI44_2 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    xxmrghd 63, 1, 0
-; PC64LE9-NEXT:    lfd 1, .LCPI44_2 at toc@l(3)
-; PC64LE9-NEXT:    bl sin
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI44_3 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    stxv 1, 32(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    lfs 1, .LCPI44_3 at toc@l(3)
-; PC64LE9-NEXT:    bl sin
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    lxv 0, 32(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    vmr 3, 31
-; PC64LE9-NEXT:    lxv 63, 48(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    xxmrghd 34, 0, 1
-; PC64LE9-NEXT:    addi 1, 1, 64
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_sin_v4f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -144(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 144
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f29, -24
-; PC64-NEXT:    .cfi_offset f30, -16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI44_0 at toc@ha
-; PC64-NEXT:    stfd 29, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 30, 128(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 31, 136(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfs 1, .LCPI44_0 at toc@l(3)
-; PC64-NEXT:    bl sin
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI44_1 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfd 1, .LCPI44_1 at toc@l(3)
-; PC64-NEXT:    bl sin
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI44_2 at toc@ha
-; PC64-NEXT:    fmr 30, 1
-; PC64-NEXT:    lfd 1, .LCPI44_2 at toc@l(3)
-; PC64-NEXT:    bl sin
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI44_3 at toc@ha
-; PC64-NEXT:    fmr 29, 1
-; PC64-NEXT:    lfd 1, .LCPI44_3 at toc@l(3)
-; PC64-NEXT:    bl sin
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 4, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    fmr 2, 30
-; PC64-NEXT:    fmr 3, 29
-; PC64-NEXT:    lfd 31, 136(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 30, 128(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 29, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 144
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %sin = call <4 x double> @llvm.experimental.constrained.sin.v4f64(
-                             <4 x double> <double 42.0, double 42.1,
-                                           double 42.2, double 42.3>,
-                             metadata !"round.dynamic",
-                             metadata !"fpexcept.strict")
-  ret <4 x double> %sin
-}
-
-define <1 x float> @constrained_vector_cos_v1f32() {
-; PC64LE-LABEL: constrained_vector_cos_v1f32:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -32(1)
-; PC64LE-NEXT:    .cfi_def_cfa_offset 32
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    addis 3, 2, .LCPI45_0 at toc@ha
-; PC64LE-NEXT:    lfs 1, .LCPI45_0 at toc@l(3)
-; PC64LE-NEXT:    bl cosf
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    xscvdpspn 0, 1
-; PC64LE-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE-NEXT:    addi 1, 1, 32
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_cos_v1f32:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -32(1)
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 32
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    addis 3, 2, .LCPI45_0 at toc@ha
-; PC64LE9-NEXT:    lfs 1, .LCPI45_0 at toc@l(3)
-; PC64LE9-NEXT:    bl cosf
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    xscvdpspn 0, 1
-; PC64LE9-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE9-NEXT:    addi 1, 1, 32
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_cos_v1f32:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -112(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 112
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    addis 3, 2, .LCPI45_0 at toc@ha
-; PC64-NEXT:    lfs 1, .LCPI45_0 at toc@l(3)
-; PC64-NEXT:    bl cosf
-; PC64-NEXT:    nop
-; PC64-NEXT:    addi 1, 1, 112
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %cos = call <1 x float> @llvm.experimental.constrained.cos.v1f32(
-                             <1 x float> <float 42.0>,
-                             metadata !"round.dynamic",
-                             metadata !"fpexcept.strict")
-  ret <1 x float> %cos
-}
-
-define <2 x double> @constrained_vector_cos_v2f64() {
-; PC64LE-LABEL: constrained_vector_cos_v2f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -64(1)
-; PC64LE-NEXT:    .cfi_def_cfa_offset 64
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    addis 3, 2, .LCPI46_0 at toc@ha
-; PC64LE-NEXT:    lfd 1, .LCPI46_0 at toc@l(3)
-; PC64LE-NEXT:    bl cos
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    stxvd2x 1, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI46_1 at toc@ha
-; PC64LE-NEXT:    lfs 1, .LCPI46_1 at toc@l(3)
-; PC64LE-NEXT:    bl cos
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    lxvd2x 0, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    xxmrghd 34, 0, 1
-; PC64LE-NEXT:    addi 1, 1, 64
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_cos_v2f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -48(1)
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 48
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    addis 3, 2, .LCPI46_0 at toc@ha
-; PC64LE9-NEXT:    lfd 1, .LCPI46_0 at toc@l(3)
-; PC64LE9-NEXT:    bl cos
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI46_1 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    stxv 1, 32(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    lfs 1, .LCPI46_1 at toc@l(3)
-; PC64LE9-NEXT:    bl cos
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    lxv 0, 32(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    xxmrghd 34, 0, 1
-; PC64LE9-NEXT:    addi 1, 1, 48
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_cos_v2f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -128(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 128
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI46_0 at toc@ha
-; PC64-NEXT:    stfd 31, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfs 1, .LCPI46_0 at toc@l(3)
-; PC64-NEXT:    bl cos
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI46_1 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfd 1, .LCPI46_1 at toc@l(3)
-; PC64-NEXT:    bl cos
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 2, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    lfd 31, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 128
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %cos = call <2 x double> @llvm.experimental.constrained.cos.v2f64(
-                             <2 x double> <double 42.0, double 42.1>,
-                             metadata !"round.dynamic",
-                             metadata !"fpexcept.strict")
-  ret <2 x double> %cos
-}
-
-define <3 x float> @constrained_vector_cos_v3f32() {
-; PC64LE-LABEL: constrained_vector_cos_v3f32:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    .cfi_def_cfa_offset 48
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    .cfi_offset f30, -16
-; PC64LE-NEXT:    .cfi_offset f31, -8
-; PC64LE-NEXT:    stfd 30, -16(1) # 8-byte Folded Spill
-; PC64LE-NEXT:    stfd 31, -8(1) # 8-byte Folded Spill
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -48(1)
-; PC64LE-NEXT:    addis 3, 2, .LCPI47_0 at toc@ha
-; PC64LE-NEXT:    lfs 1, .LCPI47_0 at toc@l(3)
-; PC64LE-NEXT:    bl cosf
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    addis 3, 2, .LCPI47_1 at toc@ha
-; PC64LE-NEXT:    fmr 31, 1
-; PC64LE-NEXT:    lfs 1, .LCPI47_1 at toc@l(3)
-; PC64LE-NEXT:    bl cosf
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    addis 3, 2, .LCPI47_2 at toc@ha
-; PC64LE-NEXT:    fmr 30, 1
-; PC64LE-NEXT:    lfs 1, .LCPI47_2 at toc@l(3)
-; PC64LE-NEXT:    bl cosf
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    xscvdpspn 0, 30
-; PC64LE-NEXT:    addis 3, 2, .LCPI47_3 at toc@ha
-; PC64LE-NEXT:    xscvdpspn 1, 1
-; PC64LE-NEXT:    addi 3, 3, .LCPI47_3 at toc@l
-; PC64LE-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE-NEXT:    xscvdpspn 0, 31
-; PC64LE-NEXT:    xxsldwi 35, 1, 1, 1
-; PC64LE-NEXT:    vmrglw 2, 2, 3
-; PC64LE-NEXT:    lvx 3, 0, 3
-; PC64LE-NEXT:    xxsldwi 36, 0, 0, 1
-; PC64LE-NEXT:    vperm 2, 4, 2, 3
-; PC64LE-NEXT:    addi 1, 1, 48
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    lfd 31, -8(1) # 8-byte Folded Reload
-; PC64LE-NEXT:    lfd 30, -16(1) # 8-byte Folded Reload
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_cos_v3f32:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 48
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    .cfi_offset f30, -16
-; PC64LE9-NEXT:    .cfi_offset f31, -8
-; PC64LE9-NEXT:    stfd 30, -16(1) # 8-byte Folded Spill
-; PC64LE9-NEXT:    stfd 31, -8(1) # 8-byte Folded Spill
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -48(1)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI47_0 at toc@ha
-; PC64LE9-NEXT:    lfs 1, .LCPI47_0 at toc@l(3)
-; PC64LE9-NEXT:    bl cosf
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI47_1 at toc@ha
-; PC64LE9-NEXT:    fmr 31, 1
-; PC64LE9-NEXT:    lfs 1, .LCPI47_1 at toc@l(3)
-; PC64LE9-NEXT:    bl cosf
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI47_2 at toc@ha
-; PC64LE9-NEXT:    fmr 30, 1
-; PC64LE9-NEXT:    lfs 1, .LCPI47_2 at toc@l(3)
-; PC64LE9-NEXT:    bl cosf
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    xscvdpspn 0, 1
-; PC64LE9-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE9-NEXT:    xscvdpspn 0, 30
-; PC64LE9-NEXT:    xxsldwi 35, 0, 0, 1
-; PC64LE9-NEXT:    xscvdpspn 0, 31
-; PC64LE9-NEXT:    addis 3, 2, .LCPI47_3 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI47_3 at toc@l
-; PC64LE9-NEXT:    vmrglw 2, 3, 2
-; PC64LE9-NEXT:    lxvx 35, 0, 3
-; PC64LE9-NEXT:    xxsldwi 36, 0, 0, 1
-; PC64LE9-NEXT:    vperm 2, 4, 2, 3
-; PC64LE9-NEXT:    addi 1, 1, 48
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    lfd 31, -8(1) # 8-byte Folded Reload
-; PC64LE9-NEXT:    lfd 30, -16(1) # 8-byte Folded Reload
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_cos_v3f32:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -128(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 128
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f30, -16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI47_0 at toc@ha
-; PC64-NEXT:    stfd 30, 112(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 31, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfs 1, .LCPI47_0 at toc@l(3)
-; PC64-NEXT:    bl cosf
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI47_1 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfs 1, .LCPI47_1 at toc@l(3)
-; PC64-NEXT:    bl cosf
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI47_2 at toc@ha
-; PC64-NEXT:    fmr 30, 1
-; PC64-NEXT:    lfs 1, .LCPI47_2 at toc@l(3)
-; PC64-NEXT:    bl cosf
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 3, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    fmr 2, 30
-; PC64-NEXT:    lfd 31, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 30, 112(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 128
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %cos = call <3 x float> @llvm.experimental.constrained.cos.v3f32(
-                              <3 x float> <float 42.0, float 43.0, float 44.0>,
-                              metadata !"round.dynamic",
-                              metadata !"fpexcept.strict")
-  ret <3 x float> %cos
-}
-
-define <3 x double> @constrained_vector_cos_v3f64() {
-; PC64LE-LABEL: constrained_vector_cos_v3f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -80(1)
-; PC64LE-NEXT:    .cfi_def_cfa_offset 80
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    .cfi_offset v31, -16
-; PC64LE-NEXT:    li 3, 64
-; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI48_0 at toc@ha
-; PC64LE-NEXT:    lfd 1, .LCPI48_0 at toc@l(3)
-; PC64LE-NEXT:    bl cos
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    stxvd2x 1, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI48_1 at toc@ha
-; PC64LE-NEXT:    lfs 1, .LCPI48_1 at toc@l(3)
-; PC64LE-NEXT:    bl cos
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    lxvd2x 0, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    addis 3, 2, .LCPI48_2 at toc@ha
-; PC64LE-NEXT:    xxmrghd 63, 0, 1
-; PC64LE-NEXT:    lfd 1, .LCPI48_2 at toc@l(3)
-; PC64LE-NEXT:    bl cos
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 64
-; PC64LE-NEXT:    fmr 3, 1
-; PC64LE-NEXT:    xxlor 1, 63, 63
-; PC64LE-NEXT:    xxlor 2, 63, 63
-; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    addi 1, 1, 80
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_cos_v3f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -64(1)
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 64
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    .cfi_offset v31, -16
-; PC64LE9-NEXT:    addis 3, 2, .LCPI48_0 at toc@ha
-; PC64LE9-NEXT:    lfd 1, .LCPI48_0 at toc@l(3)
-; PC64LE9-NEXT:    stxv 63, 48(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    bl cos
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI48_1 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    stxv 1, 32(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    lfs 1, .LCPI48_1 at toc@l(3)
-; PC64LE9-NEXT:    bl cos
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    lxv 0, 32(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    addis 3, 2, .LCPI48_2 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    xxmrghd 63, 0, 1
-; PC64LE9-NEXT:    lfd 1, .LCPI48_2 at toc@l(3)
-; PC64LE9-NEXT:    bl cos
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    fmr 3, 1
-; PC64LE9-NEXT:    xscpsgndp 1, 63, 63
-; PC64LE9-NEXT:    xscpsgndp 2, 63, 63
-; PC64LE9-NEXT:    lxv 63, 48(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    addi 1, 1, 64
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_cos_v3f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -128(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 128
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f30, -16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI48_0 at toc@ha
-; PC64-NEXT:    stfd 30, 112(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 31, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfs 1, .LCPI48_0 at toc@l(3)
-; PC64-NEXT:    bl cos
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI48_1 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfd 1, .LCPI48_1 at toc@l(3)
-; PC64-NEXT:    bl cos
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI48_2 at toc@ha
-; PC64-NEXT:    fmr 30, 1
-; PC64-NEXT:    lfd 1, .LCPI48_2 at toc@l(3)
-; PC64-NEXT:    bl cos
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 3, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    fmr 2, 30
-; PC64-NEXT:    lfd 31, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 30, 112(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 128
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %cos = call <3 x double> @llvm.experimental.constrained.cos.v3f64(
-                          <3 x double> <double 42.0, double 42.1, double 42.2>,
-                          metadata !"round.dynamic",
-                          metadata !"fpexcept.strict")
-  ret <3 x double> %cos
-}
-
-define <4 x double> @constrained_vector_cos_v4f64() {
-; PC64LE-LABEL: constrained_vector_cos_v4f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -80(1)
-; PC64LE-NEXT:    .cfi_def_cfa_offset 80
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    .cfi_offset v31, -16
-; PC64LE-NEXT:    li 3, 64
-; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI49_0 at toc@ha
-; PC64LE-NEXT:    lfd 1, .LCPI49_0 at toc@l(3)
-; PC64LE-NEXT:    bl cos
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    stxvd2x 1, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI49_1 at toc@ha
-; PC64LE-NEXT:    lfd 1, .LCPI49_1 at toc@l(3)
-; PC64LE-NEXT:    bl cos
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    lxvd2x 0, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    addis 3, 2, .LCPI49_2 at toc@ha
-; PC64LE-NEXT:    xxmrghd 63, 1, 0
-; PC64LE-NEXT:    lfd 1, .LCPI49_2 at toc@l(3)
-; PC64LE-NEXT:    bl cos
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    stxvd2x 1, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI49_3 at toc@ha
-; PC64LE-NEXT:    lfs 1, .LCPI49_3 at toc@l(3)
-; PC64LE-NEXT:    bl cos
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    vmr 3, 31
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    lxvd2x 0, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    li 3, 64
-; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    xxmrghd 34, 0, 1
-; PC64LE-NEXT:    addi 1, 1, 80
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_cos_v4f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -64(1)
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 64
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    .cfi_offset v31, -16
-; PC64LE9-NEXT:    addis 3, 2, .LCPI49_0 at toc@ha
-; PC64LE9-NEXT:    lfd 1, .LCPI49_0 at toc@l(3)
-; PC64LE9-NEXT:    stxv 63, 48(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    bl cos
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI49_1 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    stxv 1, 32(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    lfd 1, .LCPI49_1 at toc@l(3)
-; PC64LE9-NEXT:    bl cos
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    lxv 0, 32(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    addis 3, 2, .LCPI49_2 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    xxmrghd 63, 1, 0
-; PC64LE9-NEXT:    lfd 1, .LCPI49_2 at toc@l(3)
-; PC64LE9-NEXT:    bl cos
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI49_3 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    stxv 1, 32(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    lfs 1, .LCPI49_3 at toc@l(3)
-; PC64LE9-NEXT:    bl cos
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    lxv 0, 32(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    vmr 3, 31
-; PC64LE9-NEXT:    lxv 63, 48(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    xxmrghd 34, 0, 1
-; PC64LE9-NEXT:    addi 1, 1, 64
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_cos_v4f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -144(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 144
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f29, -24
-; PC64-NEXT:    .cfi_offset f30, -16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI49_0 at toc@ha
-; PC64-NEXT:    stfd 29, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 30, 128(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 31, 136(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfs 1, .LCPI49_0 at toc@l(3)
-; PC64-NEXT:    bl cos
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI49_1 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfd 1, .LCPI49_1 at toc@l(3)
-; PC64-NEXT:    bl cos
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI49_2 at toc@ha
-; PC64-NEXT:    fmr 30, 1
-; PC64-NEXT:    lfd 1, .LCPI49_2 at toc@l(3)
-; PC64-NEXT:    bl cos
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI49_3 at toc@ha
-; PC64-NEXT:    fmr 29, 1
-; PC64-NEXT:    lfd 1, .LCPI49_3 at toc@l(3)
-; PC64-NEXT:    bl cos
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 4, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    fmr 2, 30
-; PC64-NEXT:    fmr 3, 29
-; PC64-NEXT:    lfd 31, 136(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 30, 128(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 29, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 144
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %cos = call <4 x double> @llvm.experimental.constrained.cos.v4f64(
-                             <4 x double> <double 42.0, double 42.1,
-                                           double 42.2, double 42.3>,
-                             metadata !"round.dynamic",
-                             metadata !"fpexcept.strict")
-  ret <4 x double> %cos
-}
-
-define <1 x float> @constrained_vector_exp_v1f32() {
-; PC64LE-LABEL: constrained_vector_exp_v1f32:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -32(1)
-; PC64LE-NEXT:    .cfi_def_cfa_offset 32
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    addis 3, 2, .LCPI50_0 at toc@ha
-; PC64LE-NEXT:    lfs 1, .LCPI50_0 at toc@l(3)
-; PC64LE-NEXT:    bl expf
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    xscvdpspn 0, 1
-; PC64LE-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE-NEXT:    addi 1, 1, 32
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_exp_v1f32:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -32(1)
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 32
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    addis 3, 2, .LCPI50_0 at toc@ha
-; PC64LE9-NEXT:    lfs 1, .LCPI50_0 at toc@l(3)
-; PC64LE9-NEXT:    bl expf
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    xscvdpspn 0, 1
-; PC64LE9-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE9-NEXT:    addi 1, 1, 32
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_exp_v1f32:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -112(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 112
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    addis 3, 2, .LCPI50_0 at toc@ha
-; PC64-NEXT:    lfs 1, .LCPI50_0 at toc@l(3)
-; PC64-NEXT:    bl expf
-; PC64-NEXT:    nop
-; PC64-NEXT:    addi 1, 1, 112
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %exp = call <1 x float> @llvm.experimental.constrained.exp.v1f32(
-                             <1 x float> <float 42.0>,
-                             metadata !"round.dynamic",
-                             metadata !"fpexcept.strict")
-  ret <1 x float> %exp
-}
-
-define <2 x double> @constrained_vector_exp_v2f64() {
-; PC64LE-LABEL: constrained_vector_exp_v2f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -64(1)
-; PC64LE-NEXT:    .cfi_def_cfa_offset 64
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    addis 3, 2, .LCPI51_0 at toc@ha
-; PC64LE-NEXT:    lfd 1, .LCPI51_0 at toc@l(3)
-; PC64LE-NEXT:    bl exp
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    stxvd2x 1, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI51_1 at toc@ha
-; PC64LE-NEXT:    lfs 1, .LCPI51_1 at toc@l(3)
-; PC64LE-NEXT:    bl exp
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    lxvd2x 0, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    xxmrghd 34, 0, 1
-; PC64LE-NEXT:    addi 1, 1, 64
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_exp_v2f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -48(1)
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 48
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    addis 3, 2, .LCPI51_0 at toc@ha
-; PC64LE9-NEXT:    lfd 1, .LCPI51_0 at toc@l(3)
-; PC64LE9-NEXT:    bl exp
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI51_1 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    stxv 1, 32(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    lfs 1, .LCPI51_1 at toc@l(3)
-; PC64LE9-NEXT:    bl exp
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    lxv 0, 32(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    xxmrghd 34, 0, 1
-; PC64LE9-NEXT:    addi 1, 1, 48
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_exp_v2f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -128(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 128
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI51_0 at toc@ha
-; PC64-NEXT:    stfd 31, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfs 1, .LCPI51_0 at toc@l(3)
-; PC64-NEXT:    bl exp
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI51_1 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfd 1, .LCPI51_1 at toc@l(3)
-; PC64-NEXT:    bl exp
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 2, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    lfd 31, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 128
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %exp = call <2 x double> @llvm.experimental.constrained.exp.v2f64(
-                             <2 x double> <double 42.0, double 42.1>,
-                             metadata !"round.dynamic",
-                             metadata !"fpexcept.strict")
-  ret <2 x double> %exp
-}
-
-define <3 x float> @constrained_vector_exp_v3f32() {
-; PC64LE-LABEL: constrained_vector_exp_v3f32:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    .cfi_def_cfa_offset 48
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    .cfi_offset f30, -16
-; PC64LE-NEXT:    .cfi_offset f31, -8
-; PC64LE-NEXT:    stfd 30, -16(1) # 8-byte Folded Spill
-; PC64LE-NEXT:    stfd 31, -8(1) # 8-byte Folded Spill
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -48(1)
-; PC64LE-NEXT:    addis 3, 2, .LCPI52_0 at toc@ha
-; PC64LE-NEXT:    lfs 1, .LCPI52_0 at toc@l(3)
-; PC64LE-NEXT:    bl expf
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    addis 3, 2, .LCPI52_1 at toc@ha
-; PC64LE-NEXT:    fmr 31, 1
-; PC64LE-NEXT:    lfs 1, .LCPI52_1 at toc@l(3)
-; PC64LE-NEXT:    bl expf
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    addis 3, 2, .LCPI52_2 at toc@ha
-; PC64LE-NEXT:    fmr 30, 1
-; PC64LE-NEXT:    lfs 1, .LCPI52_2 at toc@l(3)
-; PC64LE-NEXT:    bl expf
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    xscvdpspn 0, 30
-; PC64LE-NEXT:    addis 3, 2, .LCPI52_3 at toc@ha
-; PC64LE-NEXT:    xscvdpspn 1, 1
-; PC64LE-NEXT:    addi 3, 3, .LCPI52_3 at toc@l
-; PC64LE-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE-NEXT:    xscvdpspn 0, 31
-; PC64LE-NEXT:    xxsldwi 35, 1, 1, 1
-; PC64LE-NEXT:    vmrglw 2, 2, 3
-; PC64LE-NEXT:    lvx 3, 0, 3
-; PC64LE-NEXT:    xxsldwi 36, 0, 0, 1
-; PC64LE-NEXT:    vperm 2, 4, 2, 3
-; PC64LE-NEXT:    addi 1, 1, 48
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    lfd 31, -8(1) # 8-byte Folded Reload
-; PC64LE-NEXT:    lfd 30, -16(1) # 8-byte Folded Reload
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_exp_v3f32:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 48
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    .cfi_offset f30, -16
-; PC64LE9-NEXT:    .cfi_offset f31, -8
-; PC64LE9-NEXT:    stfd 30, -16(1) # 8-byte Folded Spill
-; PC64LE9-NEXT:    stfd 31, -8(1) # 8-byte Folded Spill
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -48(1)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI52_0 at toc@ha
-; PC64LE9-NEXT:    lfs 1, .LCPI52_0 at toc@l(3)
-; PC64LE9-NEXT:    bl expf
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI52_1 at toc@ha
-; PC64LE9-NEXT:    fmr 31, 1
-; PC64LE9-NEXT:    lfs 1, .LCPI52_1 at toc@l(3)
-; PC64LE9-NEXT:    bl expf
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI52_2 at toc@ha
-; PC64LE9-NEXT:    fmr 30, 1
-; PC64LE9-NEXT:    lfs 1, .LCPI52_2 at toc@l(3)
-; PC64LE9-NEXT:    bl expf
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    xscvdpspn 0, 1
-; PC64LE9-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE9-NEXT:    xscvdpspn 0, 30
-; PC64LE9-NEXT:    xxsldwi 35, 0, 0, 1
-; PC64LE9-NEXT:    xscvdpspn 0, 31
-; PC64LE9-NEXT:    addis 3, 2, .LCPI52_3 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI52_3 at toc@l
-; PC64LE9-NEXT:    vmrglw 2, 3, 2
-; PC64LE9-NEXT:    lxvx 35, 0, 3
-; PC64LE9-NEXT:    xxsldwi 36, 0, 0, 1
-; PC64LE9-NEXT:    vperm 2, 4, 2, 3
-; PC64LE9-NEXT:    addi 1, 1, 48
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    lfd 31, -8(1) # 8-byte Folded Reload
-; PC64LE9-NEXT:    lfd 30, -16(1) # 8-byte Folded Reload
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_exp_v3f32:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -128(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 128
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f30, -16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI52_0 at toc@ha
-; PC64-NEXT:    stfd 30, 112(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 31, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfs 1, .LCPI52_0 at toc@l(3)
-; PC64-NEXT:    bl expf
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI52_1 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfs 1, .LCPI52_1 at toc@l(3)
-; PC64-NEXT:    bl expf
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI52_2 at toc@ha
-; PC64-NEXT:    fmr 30, 1
-; PC64-NEXT:    lfs 1, .LCPI52_2 at toc@l(3)
-; PC64-NEXT:    bl expf
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 3, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    fmr 2, 30
-; PC64-NEXT:    lfd 31, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 30, 112(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 128
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %exp = call <3 x float> @llvm.experimental.constrained.exp.v3f32(
-                              <3 x float> <float 42.0, float 43.0, float 44.0>,
-                              metadata !"round.dynamic",
-                              metadata !"fpexcept.strict")
-  ret <3 x float> %exp
-}
-
-define <3 x double> @constrained_vector_exp_v3f64() {
-; PC64LE-LABEL: constrained_vector_exp_v3f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -80(1)
-; PC64LE-NEXT:    .cfi_def_cfa_offset 80
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    .cfi_offset v31, -16
-; PC64LE-NEXT:    li 3, 64
-; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI53_0 at toc@ha
-; PC64LE-NEXT:    lfd 1, .LCPI53_0 at toc@l(3)
-; PC64LE-NEXT:    bl exp
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    stxvd2x 1, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI53_1 at toc@ha
-; PC64LE-NEXT:    lfs 1, .LCPI53_1 at toc@l(3)
-; PC64LE-NEXT:    bl exp
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    lxvd2x 0, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    addis 3, 2, .LCPI53_2 at toc@ha
-; PC64LE-NEXT:    xxmrghd 63, 0, 1
-; PC64LE-NEXT:    lfd 1, .LCPI53_2 at toc@l(3)
-; PC64LE-NEXT:    bl exp
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 64
-; PC64LE-NEXT:    fmr 3, 1
-; PC64LE-NEXT:    xxlor 1, 63, 63
-; PC64LE-NEXT:    xxlor 2, 63, 63
-; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    addi 1, 1, 80
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_exp_v3f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -64(1)
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 64
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    .cfi_offset v31, -16
-; PC64LE9-NEXT:    addis 3, 2, .LCPI53_0 at toc@ha
-; PC64LE9-NEXT:    lfd 1, .LCPI53_0 at toc@l(3)
-; PC64LE9-NEXT:    stxv 63, 48(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    bl exp
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI53_1 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    stxv 1, 32(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    lfs 1, .LCPI53_1 at toc@l(3)
-; PC64LE9-NEXT:    bl exp
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    lxv 0, 32(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    addis 3, 2, .LCPI53_2 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    xxmrghd 63, 0, 1
-; PC64LE9-NEXT:    lfd 1, .LCPI53_2 at toc@l(3)
-; PC64LE9-NEXT:    bl exp
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    fmr 3, 1
-; PC64LE9-NEXT:    xscpsgndp 1, 63, 63
-; PC64LE9-NEXT:    xscpsgndp 2, 63, 63
-; PC64LE9-NEXT:    lxv 63, 48(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    addi 1, 1, 64
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_exp_v3f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -128(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 128
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f30, -16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI53_0 at toc@ha
-; PC64-NEXT:    stfd 30, 112(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 31, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfs 1, .LCPI53_0 at toc@l(3)
-; PC64-NEXT:    bl exp
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI53_1 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfd 1, .LCPI53_1 at toc@l(3)
-; PC64-NEXT:    bl exp
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI53_2 at toc@ha
-; PC64-NEXT:    fmr 30, 1
-; PC64-NEXT:    lfd 1, .LCPI53_2 at toc@l(3)
-; PC64-NEXT:    bl exp
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 3, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    fmr 2, 30
-; PC64-NEXT:    lfd 31, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 30, 112(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 128
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %exp = call <3 x double> @llvm.experimental.constrained.exp.v3f64(
-                          <3 x double> <double 42.0, double 42.1, double 42.2>,
-                          metadata !"round.dynamic",
-                          metadata !"fpexcept.strict")
-  ret <3 x double> %exp
-}
-
-define <4 x double> @constrained_vector_exp_v4f64() {
-; PC64LE-LABEL: constrained_vector_exp_v4f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -80(1)
-; PC64LE-NEXT:    .cfi_def_cfa_offset 80
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    .cfi_offset v31, -16
-; PC64LE-NEXT:    li 3, 64
-; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI54_0 at toc@ha
-; PC64LE-NEXT:    lfd 1, .LCPI54_0 at toc@l(3)
-; PC64LE-NEXT:    bl exp
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    stxvd2x 1, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI54_1 at toc@ha
-; PC64LE-NEXT:    lfd 1, .LCPI54_1 at toc@l(3)
-; PC64LE-NEXT:    bl exp
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    lxvd2x 0, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    addis 3, 2, .LCPI54_2 at toc@ha
-; PC64LE-NEXT:    xxmrghd 63, 1, 0
-; PC64LE-NEXT:    lfd 1, .LCPI54_2 at toc@l(3)
-; PC64LE-NEXT:    bl exp
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    stxvd2x 1, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI54_3 at toc@ha
-; PC64LE-NEXT:    lfs 1, .LCPI54_3 at toc@l(3)
-; PC64LE-NEXT:    bl exp
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    vmr 3, 31
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    lxvd2x 0, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    li 3, 64
-; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    xxmrghd 34, 0, 1
-; PC64LE-NEXT:    addi 1, 1, 80
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_exp_v4f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -64(1)
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 64
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    .cfi_offset v31, -16
-; PC64LE9-NEXT:    addis 3, 2, .LCPI54_0 at toc@ha
-; PC64LE9-NEXT:    lfd 1, .LCPI54_0 at toc@l(3)
-; PC64LE9-NEXT:    stxv 63, 48(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    bl exp
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI54_1 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    stxv 1, 32(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    lfd 1, .LCPI54_1 at toc@l(3)
-; PC64LE9-NEXT:    bl exp
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    lxv 0, 32(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    addis 3, 2, .LCPI54_2 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    xxmrghd 63, 1, 0
-; PC64LE9-NEXT:    lfd 1, .LCPI54_2 at toc@l(3)
-; PC64LE9-NEXT:    bl exp
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI54_3 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    stxv 1, 32(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    lfs 1, .LCPI54_3 at toc@l(3)
-; PC64LE9-NEXT:    bl exp
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    lxv 0, 32(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    vmr 3, 31
-; PC64LE9-NEXT:    lxv 63, 48(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    xxmrghd 34, 0, 1
-; PC64LE9-NEXT:    addi 1, 1, 64
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_exp_v4f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -144(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 144
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f29, -24
-; PC64-NEXT:    .cfi_offset f30, -16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI54_0 at toc@ha
-; PC64-NEXT:    stfd 29, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 30, 128(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 31, 136(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfs 1, .LCPI54_0 at toc@l(3)
-; PC64-NEXT:    bl exp
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI54_1 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfd 1, .LCPI54_1 at toc@l(3)
-; PC64-NEXT:    bl exp
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI54_2 at toc@ha
-; PC64-NEXT:    fmr 30, 1
-; PC64-NEXT:    lfd 1, .LCPI54_2 at toc@l(3)
-; PC64-NEXT:    bl exp
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI54_3 at toc@ha
-; PC64-NEXT:    fmr 29, 1
-; PC64-NEXT:    lfd 1, .LCPI54_3 at toc@l(3)
-; PC64-NEXT:    bl exp
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 4, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    fmr 2, 30
-; PC64-NEXT:    fmr 3, 29
-; PC64-NEXT:    lfd 31, 136(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 30, 128(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 29, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 144
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %exp = call <4 x double> @llvm.experimental.constrained.exp.v4f64(
-                             <4 x double> <double 42.0, double 42.1,
-                                           double 42.2, double 42.3>,
-                             metadata !"round.dynamic",
-                             metadata !"fpexcept.strict")
-  ret <4 x double> %exp
-}
-
-define <1 x float> @constrained_vector_exp2_v1f32() {
-; PC64LE-LABEL: constrained_vector_exp2_v1f32:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -32(1)
-; PC64LE-NEXT:    .cfi_def_cfa_offset 32
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    addis 3, 2, .LCPI55_0 at toc@ha
-; PC64LE-NEXT:    lfs 1, .LCPI55_0 at toc@l(3)
-; PC64LE-NEXT:    bl exp2f
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    xscvdpspn 0, 1
-; PC64LE-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE-NEXT:    addi 1, 1, 32
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_exp2_v1f32:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -32(1)
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 32
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    addis 3, 2, .LCPI55_0 at toc@ha
-; PC64LE9-NEXT:    lfs 1, .LCPI55_0 at toc@l(3)
-; PC64LE9-NEXT:    bl exp2f
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    xscvdpspn 0, 1
-; PC64LE9-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE9-NEXT:    addi 1, 1, 32
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_exp2_v1f32:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -112(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 112
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    addis 3, 2, .LCPI55_0 at toc@ha
-; PC64-NEXT:    lfs 1, .LCPI55_0 at toc@l(3)
-; PC64-NEXT:    bl exp2f
-; PC64-NEXT:    nop
-; PC64-NEXT:    addi 1, 1, 112
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %exp2 = call <1 x float> @llvm.experimental.constrained.exp2.v1f32(
-                             <1 x float> <float 42.0>,
-                             metadata !"round.dynamic",
-                             metadata !"fpexcept.strict")
-  ret <1 x float> %exp2
-}
-
-define <2 x double> @constrained_vector_exp2_v2f64() {
-; PC64LE-LABEL: constrained_vector_exp2_v2f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -64(1)
-; PC64LE-NEXT:    .cfi_def_cfa_offset 64
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    addis 3, 2, .LCPI56_0 at toc@ha
-; PC64LE-NEXT:    lfd 1, .LCPI56_0 at toc@l(3)
-; PC64LE-NEXT:    bl exp2
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    stxvd2x 1, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI56_1 at toc@ha
-; PC64LE-NEXT:    lfs 1, .LCPI56_1 at toc@l(3)
-; PC64LE-NEXT:    bl exp2
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    lxvd2x 0, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    xxmrghd 34, 1, 0
-; PC64LE-NEXT:    addi 1, 1, 64
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_exp2_v2f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -48(1)
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 48
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    addis 3, 2, .LCPI56_0 at toc@ha
-; PC64LE9-NEXT:    lfd 1, .LCPI56_0 at toc@l(3)
-; PC64LE9-NEXT:    bl exp2
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI56_1 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    stxv 1, 32(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    lfs 1, .LCPI56_1 at toc@l(3)
-; PC64LE9-NEXT:    bl exp2
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    lxv 0, 32(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    xxmrghd 34, 1, 0
-; PC64LE9-NEXT:    addi 1, 1, 48
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_exp2_v2f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -128(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 128
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI56_0 at toc@ha
-; PC64-NEXT:    stfd 31, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfd 1, .LCPI56_0 at toc@l(3)
-; PC64-NEXT:    bl exp2
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI56_1 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfs 1, .LCPI56_1 at toc@l(3)
-; PC64-NEXT:    bl exp2
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 2, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    lfd 31, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 128
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %exp2 = call <2 x double> @llvm.experimental.constrained.exp2.v2f64(
-                              <2 x double> <double 42.1, double 42.0>,
-                              metadata !"round.dynamic",
-                              metadata !"fpexcept.strict")
-  ret <2 x double> %exp2
-}
-
-define <3 x float> @constrained_vector_exp2_v3f32() {
-; PC64LE-LABEL: constrained_vector_exp2_v3f32:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    .cfi_def_cfa_offset 48
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    .cfi_offset f30, -16
-; PC64LE-NEXT:    .cfi_offset f31, -8
-; PC64LE-NEXT:    stfd 30, -16(1) # 8-byte Folded Spill
-; PC64LE-NEXT:    stfd 31, -8(1) # 8-byte Folded Spill
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -48(1)
-; PC64LE-NEXT:    addis 3, 2, .LCPI57_0 at toc@ha
-; PC64LE-NEXT:    lfs 1, .LCPI57_0 at toc@l(3)
-; PC64LE-NEXT:    bl exp2f
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    addis 3, 2, .LCPI57_1 at toc@ha
-; PC64LE-NEXT:    fmr 31, 1
-; PC64LE-NEXT:    lfs 1, .LCPI57_1 at toc@l(3)
-; PC64LE-NEXT:    bl exp2f
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    addis 3, 2, .LCPI57_2 at toc@ha
-; PC64LE-NEXT:    fmr 30, 1
-; PC64LE-NEXT:    lfs 1, .LCPI57_2 at toc@l(3)
-; PC64LE-NEXT:    bl exp2f
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    xscvdpspn 0, 30
-; PC64LE-NEXT:    addis 3, 2, .LCPI57_3 at toc@ha
-; PC64LE-NEXT:    xscvdpspn 1, 1
-; PC64LE-NEXT:    addi 3, 3, .LCPI57_3 at toc@l
-; PC64LE-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE-NEXT:    xscvdpspn 0, 31
-; PC64LE-NEXT:    xxsldwi 35, 1, 1, 1
-; PC64LE-NEXT:    vmrglw 2, 2, 3
-; PC64LE-NEXT:    lvx 3, 0, 3
-; PC64LE-NEXT:    xxsldwi 36, 0, 0, 1
-; PC64LE-NEXT:    vperm 2, 4, 2, 3
-; PC64LE-NEXT:    addi 1, 1, 48
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    lfd 31, -8(1) # 8-byte Folded Reload
-; PC64LE-NEXT:    lfd 30, -16(1) # 8-byte Folded Reload
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_exp2_v3f32:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 48
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    .cfi_offset f30, -16
-; PC64LE9-NEXT:    .cfi_offset f31, -8
-; PC64LE9-NEXT:    stfd 30, -16(1) # 8-byte Folded Spill
-; PC64LE9-NEXT:    stfd 31, -8(1) # 8-byte Folded Spill
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -48(1)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI57_0 at toc@ha
-; PC64LE9-NEXT:    lfs 1, .LCPI57_0 at toc@l(3)
-; PC64LE9-NEXT:    bl exp2f
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI57_1 at toc@ha
-; PC64LE9-NEXT:    fmr 31, 1
-; PC64LE9-NEXT:    lfs 1, .LCPI57_1 at toc@l(3)
-; PC64LE9-NEXT:    bl exp2f
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI57_2 at toc@ha
-; PC64LE9-NEXT:    fmr 30, 1
-; PC64LE9-NEXT:    lfs 1, .LCPI57_2 at toc@l(3)
-; PC64LE9-NEXT:    bl exp2f
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    xscvdpspn 0, 1
-; PC64LE9-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE9-NEXT:    xscvdpspn 0, 30
-; PC64LE9-NEXT:    xxsldwi 35, 0, 0, 1
-; PC64LE9-NEXT:    xscvdpspn 0, 31
-; PC64LE9-NEXT:    addis 3, 2, .LCPI57_3 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI57_3 at toc@l
-; PC64LE9-NEXT:    vmrglw 2, 3, 2
-; PC64LE9-NEXT:    lxvx 35, 0, 3
-; PC64LE9-NEXT:    xxsldwi 36, 0, 0, 1
-; PC64LE9-NEXT:    vperm 2, 4, 2, 3
-; PC64LE9-NEXT:    addi 1, 1, 48
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    lfd 31, -8(1) # 8-byte Folded Reload
-; PC64LE9-NEXT:    lfd 30, -16(1) # 8-byte Folded Reload
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_exp2_v3f32:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -128(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 128
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f30, -16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI57_0 at toc@ha
-; PC64-NEXT:    stfd 30, 112(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 31, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfs 1, .LCPI57_0 at toc@l(3)
-; PC64-NEXT:    bl exp2f
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI57_1 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfs 1, .LCPI57_1 at toc@l(3)
-; PC64-NEXT:    bl exp2f
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI57_2 at toc@ha
-; PC64-NEXT:    fmr 30, 1
-; PC64-NEXT:    lfs 1, .LCPI57_2 at toc@l(3)
-; PC64-NEXT:    bl exp2f
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 3, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    fmr 2, 30
-; PC64-NEXT:    lfd 31, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 30, 112(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 128
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %exp2 = call <3 x float> @llvm.experimental.constrained.exp2.v3f32(
-                              <3 x float> <float 42.0, float 43.0, float 44.0>,
-                              metadata !"round.dynamic",
-                              metadata !"fpexcept.strict")
-  ret <3 x float> %exp2
-}
-
-define <3 x double> @constrained_vector_exp2_v3f64() {
-; PC64LE-LABEL: constrained_vector_exp2_v3f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -80(1)
-; PC64LE-NEXT:    .cfi_def_cfa_offset 80
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    .cfi_offset v31, -16
-; PC64LE-NEXT:    li 3, 64
-; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI58_0 at toc@ha
-; PC64LE-NEXT:    lfd 1, .LCPI58_0 at toc@l(3)
-; PC64LE-NEXT:    bl exp2
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    stxvd2x 1, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI58_1 at toc@ha
-; PC64LE-NEXT:    lfs 1, .LCPI58_1 at toc@l(3)
-; PC64LE-NEXT:    bl exp2
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    lxvd2x 0, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    addis 3, 2, .LCPI58_2 at toc@ha
-; PC64LE-NEXT:    xxmrghd 63, 0, 1
-; PC64LE-NEXT:    lfd 1, .LCPI58_2 at toc@l(3)
-; PC64LE-NEXT:    bl exp2
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 64
-; PC64LE-NEXT:    fmr 3, 1
-; PC64LE-NEXT:    xxlor 1, 63, 63
-; PC64LE-NEXT:    xxlor 2, 63, 63
-; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    addi 1, 1, 80
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_exp2_v3f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -64(1)
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 64
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    .cfi_offset v31, -16
-; PC64LE9-NEXT:    addis 3, 2, .LCPI58_0 at toc@ha
-; PC64LE9-NEXT:    lfd 1, .LCPI58_0 at toc@l(3)
-; PC64LE9-NEXT:    stxv 63, 48(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    bl exp2
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI58_1 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    stxv 1, 32(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    lfs 1, .LCPI58_1 at toc@l(3)
-; PC64LE9-NEXT:    bl exp2
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    lxv 0, 32(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    addis 3, 2, .LCPI58_2 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    xxmrghd 63, 0, 1
-; PC64LE9-NEXT:    lfd 1, .LCPI58_2 at toc@l(3)
-; PC64LE9-NEXT:    bl exp2
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    fmr 3, 1
-; PC64LE9-NEXT:    xscpsgndp 1, 63, 63
-; PC64LE9-NEXT:    xscpsgndp 2, 63, 63
-; PC64LE9-NEXT:    lxv 63, 48(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    addi 1, 1, 64
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_exp2_v3f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -128(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 128
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f30, -16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI58_0 at toc@ha
-; PC64-NEXT:    stfd 30, 112(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 31, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfs 1, .LCPI58_0 at toc@l(3)
-; PC64-NEXT:    bl exp2
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI58_1 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfd 1, .LCPI58_1 at toc@l(3)
-; PC64-NEXT:    bl exp2
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI58_2 at toc@ha
-; PC64-NEXT:    fmr 30, 1
-; PC64-NEXT:    lfd 1, .LCPI58_2 at toc@l(3)
-; PC64-NEXT:    bl exp2
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 3, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    fmr 2, 30
-; PC64-NEXT:    lfd 31, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 30, 112(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 128
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %exp2 = call <3 x double> @llvm.experimental.constrained.exp2.v3f64(
-                          <3 x double> <double 42.0, double 42.1, double 42.2>,
-                          metadata !"round.dynamic",
-                          metadata !"fpexcept.strict")
-  ret <3 x double> %exp2
-}
-
-define <4 x double> @constrained_vector_exp2_v4f64() {
-; PC64LE-LABEL: constrained_vector_exp2_v4f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -80(1)
-; PC64LE-NEXT:    .cfi_def_cfa_offset 80
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    .cfi_offset v31, -16
-; PC64LE-NEXT:    li 3, 64
-; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI59_0 at toc@ha
-; PC64LE-NEXT:    lfd 1, .LCPI59_0 at toc@l(3)
-; PC64LE-NEXT:    bl exp2
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    stxvd2x 1, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI59_1 at toc@ha
-; PC64LE-NEXT:    lfd 1, .LCPI59_1 at toc@l(3)
-; PC64LE-NEXT:    bl exp2
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    lxvd2x 0, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    addis 3, 2, .LCPI59_2 at toc@ha
-; PC64LE-NEXT:    xxmrghd 63, 1, 0
-; PC64LE-NEXT:    lfd 1, .LCPI59_2 at toc@l(3)
-; PC64LE-NEXT:    bl exp2
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    stxvd2x 1, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI59_3 at toc@ha
-; PC64LE-NEXT:    lfd 1, .LCPI59_3 at toc@l(3)
-; PC64LE-NEXT:    bl exp2
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    vmr 2, 31
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    lxvd2x 0, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    li 3, 64
-; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    xxmrghd 35, 1, 0
-; PC64LE-NEXT:    addi 1, 1, 80
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_exp2_v4f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -64(1)
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 64
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    .cfi_offset v31, -16
-; PC64LE9-NEXT:    addis 3, 2, .LCPI59_0 at toc@ha
-; PC64LE9-NEXT:    lfd 1, .LCPI59_0 at toc@l(3)
-; PC64LE9-NEXT:    stxv 63, 48(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    bl exp2
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI59_1 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    stxv 1, 32(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    lfd 1, .LCPI59_1 at toc@l(3)
-; PC64LE9-NEXT:    bl exp2
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    lxv 0, 32(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    addis 3, 2, .LCPI59_2 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    xxmrghd 63, 1, 0
-; PC64LE9-NEXT:    lfd 1, .LCPI59_2 at toc@l(3)
-; PC64LE9-NEXT:    bl exp2
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI59_3 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    stxv 1, 32(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    lfd 1, .LCPI59_3 at toc@l(3)
-; PC64LE9-NEXT:    bl exp2
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    lxv 0, 32(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    vmr 2, 31
-; PC64LE9-NEXT:    lxv 63, 48(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    xxmrghd 35, 1, 0
-; PC64LE9-NEXT:    addi 1, 1, 64
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_exp2_v4f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -144(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 144
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f29, -24
-; PC64-NEXT:    .cfi_offset f30, -16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI59_0 at toc@ha
-; PC64-NEXT:    stfd 29, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 30, 128(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 31, 136(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfd 1, .LCPI59_0 at toc@l(3)
-; PC64-NEXT:    bl exp2
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI59_1 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfd 1, .LCPI59_1 at toc@l(3)
-; PC64-NEXT:    bl exp2
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI59_2 at toc@ha
-; PC64-NEXT:    fmr 30, 1
-; PC64-NEXT:    lfd 1, .LCPI59_2 at toc@l(3)
-; PC64-NEXT:    bl exp2
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI59_3 at toc@ha
-; PC64-NEXT:    fmr 29, 1
-; PC64-NEXT:    lfd 1, .LCPI59_3 at toc@l(3)
-; PC64-NEXT:    bl exp2
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 4, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    fmr 2, 30
-; PC64-NEXT:    fmr 3, 29
-; PC64-NEXT:    lfd 31, 136(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 30, 128(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 29, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 144
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %exp2 = call <4 x double> @llvm.experimental.constrained.exp2.v4f64(
-                              <4 x double> <double 42.1, double 42.2,
-                                            double 42.3, double 42.4>,
-                              metadata !"round.dynamic",
-                              metadata !"fpexcept.strict")
-  ret <4 x double> %exp2
-}
-
-define <1 x float> @constrained_vector_log_v1f32() {
-; PC64LE-LABEL: constrained_vector_log_v1f32:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -32(1)
-; PC64LE-NEXT:    .cfi_def_cfa_offset 32
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    addis 3, 2, .LCPI60_0 at toc@ha
-; PC64LE-NEXT:    lfs 1, .LCPI60_0 at toc@l(3)
-; PC64LE-NEXT:    bl logf
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    xscvdpspn 0, 1
-; PC64LE-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE-NEXT:    addi 1, 1, 32
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_log_v1f32:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -32(1)
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 32
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    addis 3, 2, .LCPI60_0 at toc@ha
-; PC64LE9-NEXT:    lfs 1, .LCPI60_0 at toc@l(3)
-; PC64LE9-NEXT:    bl logf
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    xscvdpspn 0, 1
-; PC64LE9-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE9-NEXT:    addi 1, 1, 32
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_log_v1f32:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -112(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 112
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    addis 3, 2, .LCPI60_0 at toc@ha
-; PC64-NEXT:    lfs 1, .LCPI60_0 at toc@l(3)
-; PC64-NEXT:    bl logf
-; PC64-NEXT:    nop
-; PC64-NEXT:    addi 1, 1, 112
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %log = call <1 x float> @llvm.experimental.constrained.log.v1f32(
-                             <1 x float> <float 42.0>,
-                             metadata !"round.dynamic",
-                             metadata !"fpexcept.strict")
-  ret <1 x float> %log
-}
-
-define <2 x double> @constrained_vector_log_v2f64() {
-; PC64LE-LABEL: constrained_vector_log_v2f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -64(1)
-; PC64LE-NEXT:    .cfi_def_cfa_offset 64
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    addis 3, 2, .LCPI61_0 at toc@ha
-; PC64LE-NEXT:    lfd 1, .LCPI61_0 at toc@l(3)
-; PC64LE-NEXT:    bl log
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    stxvd2x 1, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI61_1 at toc@ha
-; PC64LE-NEXT:    lfs 1, .LCPI61_1 at toc@l(3)
-; PC64LE-NEXT:    bl log
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    lxvd2x 0, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    xxmrghd 34, 0, 1
-; PC64LE-NEXT:    addi 1, 1, 64
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_log_v2f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -48(1)
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 48
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    addis 3, 2, .LCPI61_0 at toc@ha
-; PC64LE9-NEXT:    lfd 1, .LCPI61_0 at toc@l(3)
-; PC64LE9-NEXT:    bl log
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI61_1 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    stxv 1, 32(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    lfs 1, .LCPI61_1 at toc@l(3)
-; PC64LE9-NEXT:    bl log
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    lxv 0, 32(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    xxmrghd 34, 0, 1
-; PC64LE9-NEXT:    addi 1, 1, 48
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_log_v2f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -128(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 128
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI61_0 at toc@ha
-; PC64-NEXT:    stfd 31, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfs 1, .LCPI61_0 at toc@l(3)
-; PC64-NEXT:    bl log
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI61_1 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfd 1, .LCPI61_1 at toc@l(3)
-; PC64-NEXT:    bl log
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 2, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    lfd 31, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 128
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %log = call <2 x double> @llvm.experimental.constrained.log.v2f64(
-                             <2 x double> <double 42.0, double 42.1>,
-                             metadata !"round.dynamic",
-                             metadata !"fpexcept.strict")
-  ret <2 x double> %log
-}
-
-define <3 x float> @constrained_vector_log_v3f32() {
-; PC64LE-LABEL: constrained_vector_log_v3f32:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    .cfi_def_cfa_offset 48
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    .cfi_offset f30, -16
-; PC64LE-NEXT:    .cfi_offset f31, -8
-; PC64LE-NEXT:    stfd 30, -16(1) # 8-byte Folded Spill
-; PC64LE-NEXT:    stfd 31, -8(1) # 8-byte Folded Spill
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -48(1)
-; PC64LE-NEXT:    addis 3, 2, .LCPI62_0 at toc@ha
-; PC64LE-NEXT:    lfs 1, .LCPI62_0 at toc@l(3)
-; PC64LE-NEXT:    bl logf
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    addis 3, 2, .LCPI62_1 at toc@ha
-; PC64LE-NEXT:    fmr 31, 1
-; PC64LE-NEXT:    lfs 1, .LCPI62_1 at toc@l(3)
-; PC64LE-NEXT:    bl logf
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    addis 3, 2, .LCPI62_2 at toc@ha
-; PC64LE-NEXT:    fmr 30, 1
-; PC64LE-NEXT:    lfs 1, .LCPI62_2 at toc@l(3)
-; PC64LE-NEXT:    bl logf
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    xscvdpspn 0, 30
-; PC64LE-NEXT:    addis 3, 2, .LCPI62_3 at toc@ha
-; PC64LE-NEXT:    xscvdpspn 1, 1
-; PC64LE-NEXT:    addi 3, 3, .LCPI62_3 at toc@l
-; PC64LE-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE-NEXT:    xscvdpspn 0, 31
-; PC64LE-NEXT:    xxsldwi 35, 1, 1, 1
-; PC64LE-NEXT:    vmrglw 2, 2, 3
-; PC64LE-NEXT:    lvx 3, 0, 3
-; PC64LE-NEXT:    xxsldwi 36, 0, 0, 1
-; PC64LE-NEXT:    vperm 2, 4, 2, 3
-; PC64LE-NEXT:    addi 1, 1, 48
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    lfd 31, -8(1) # 8-byte Folded Reload
-; PC64LE-NEXT:    lfd 30, -16(1) # 8-byte Folded Reload
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_log_v3f32:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 48
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    .cfi_offset f30, -16
-; PC64LE9-NEXT:    .cfi_offset f31, -8
-; PC64LE9-NEXT:    stfd 30, -16(1) # 8-byte Folded Spill
-; PC64LE9-NEXT:    stfd 31, -8(1) # 8-byte Folded Spill
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -48(1)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI62_0 at toc@ha
-; PC64LE9-NEXT:    lfs 1, .LCPI62_0 at toc@l(3)
-; PC64LE9-NEXT:    bl logf
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI62_1 at toc@ha
-; PC64LE9-NEXT:    fmr 31, 1
-; PC64LE9-NEXT:    lfs 1, .LCPI62_1 at toc@l(3)
-; PC64LE9-NEXT:    bl logf
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI62_2 at toc@ha
-; PC64LE9-NEXT:    fmr 30, 1
-; PC64LE9-NEXT:    lfs 1, .LCPI62_2 at toc@l(3)
-; PC64LE9-NEXT:    bl logf
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    xscvdpspn 0, 1
-; PC64LE9-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE9-NEXT:    xscvdpspn 0, 30
-; PC64LE9-NEXT:    xxsldwi 35, 0, 0, 1
-; PC64LE9-NEXT:    xscvdpspn 0, 31
-; PC64LE9-NEXT:    addis 3, 2, .LCPI62_3 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI62_3 at toc@l
-; PC64LE9-NEXT:    vmrglw 2, 3, 2
-; PC64LE9-NEXT:    lxvx 35, 0, 3
-; PC64LE9-NEXT:    xxsldwi 36, 0, 0, 1
-; PC64LE9-NEXT:    vperm 2, 4, 2, 3
-; PC64LE9-NEXT:    addi 1, 1, 48
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    lfd 31, -8(1) # 8-byte Folded Reload
-; PC64LE9-NEXT:    lfd 30, -16(1) # 8-byte Folded Reload
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_log_v3f32:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -128(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 128
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f30, -16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI62_0 at toc@ha
-; PC64-NEXT:    stfd 30, 112(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 31, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfs 1, .LCPI62_0 at toc@l(3)
-; PC64-NEXT:    bl logf
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI62_1 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfs 1, .LCPI62_1 at toc@l(3)
-; PC64-NEXT:    bl logf
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI62_2 at toc@ha
-; PC64-NEXT:    fmr 30, 1
-; PC64-NEXT:    lfs 1, .LCPI62_2 at toc@l(3)
-; PC64-NEXT:    bl logf
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 3, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    fmr 2, 30
-; PC64-NEXT:    lfd 31, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 30, 112(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 128
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %log = call <3 x float> @llvm.experimental.constrained.log.v3f32(
-                              <3 x float> <float 42.0, float 43.0, float 44.0>,
-                              metadata !"round.dynamic",
-                              metadata !"fpexcept.strict")
-  ret <3 x float> %log
-}
-
-define <3 x double> @constrained_vector_log_v3f64() {
-; PC64LE-LABEL: constrained_vector_log_v3f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -80(1)
-; PC64LE-NEXT:    .cfi_def_cfa_offset 80
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    .cfi_offset v31, -16
-; PC64LE-NEXT:    li 3, 64
-; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI63_0 at toc@ha
-; PC64LE-NEXT:    lfd 1, .LCPI63_0 at toc@l(3)
-; PC64LE-NEXT:    bl log
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    stxvd2x 1, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI63_1 at toc@ha
-; PC64LE-NEXT:    lfs 1, .LCPI63_1 at toc@l(3)
-; PC64LE-NEXT:    bl log
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    lxvd2x 0, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    addis 3, 2, .LCPI63_2 at toc@ha
-; PC64LE-NEXT:    xxmrghd 63, 0, 1
-; PC64LE-NEXT:    lfd 1, .LCPI63_2 at toc@l(3)
-; PC64LE-NEXT:    bl log
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 64
-; PC64LE-NEXT:    fmr 3, 1
-; PC64LE-NEXT:    xxlor 1, 63, 63
-; PC64LE-NEXT:    xxlor 2, 63, 63
-; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    addi 1, 1, 80
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_log_v3f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -64(1)
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 64
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    .cfi_offset v31, -16
-; PC64LE9-NEXT:    addis 3, 2, .LCPI63_0 at toc@ha
-; PC64LE9-NEXT:    lfd 1, .LCPI63_0 at toc@l(3)
-; PC64LE9-NEXT:    stxv 63, 48(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    bl log
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI63_1 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    stxv 1, 32(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    lfs 1, .LCPI63_1 at toc@l(3)
-; PC64LE9-NEXT:    bl log
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    lxv 0, 32(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    addis 3, 2, .LCPI63_2 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    xxmrghd 63, 0, 1
-; PC64LE9-NEXT:    lfd 1, .LCPI63_2 at toc@l(3)
-; PC64LE9-NEXT:    bl log
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    fmr 3, 1
-; PC64LE9-NEXT:    xscpsgndp 1, 63, 63
-; PC64LE9-NEXT:    xscpsgndp 2, 63, 63
-; PC64LE9-NEXT:    lxv 63, 48(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    addi 1, 1, 64
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_log_v3f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -128(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 128
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f30, -16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI63_0 at toc@ha
-; PC64-NEXT:    stfd 30, 112(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 31, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfs 1, .LCPI63_0 at toc@l(3)
-; PC64-NEXT:    bl log
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI63_1 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfd 1, .LCPI63_1 at toc@l(3)
-; PC64-NEXT:    bl log
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI63_2 at toc@ha
-; PC64-NEXT:    fmr 30, 1
-; PC64-NEXT:    lfd 1, .LCPI63_2 at toc@l(3)
-; PC64-NEXT:    bl log
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 3, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    fmr 2, 30
-; PC64-NEXT:    lfd 31, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 30, 112(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 128
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %log = call <3 x double> @llvm.experimental.constrained.log.v3f64(
-                          <3 x double> <double 42.0, double 42.1, double 42.2>,
-                          metadata !"round.dynamic",
-                          metadata !"fpexcept.strict")
-  ret <3 x double> %log
-}
-
-define <4 x double> @constrained_vector_log_v4f64() {
-; PC64LE-LABEL: constrained_vector_log_v4f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -80(1)
-; PC64LE-NEXT:    .cfi_def_cfa_offset 80
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    .cfi_offset v31, -16
-; PC64LE-NEXT:    li 3, 64
-; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI64_0 at toc@ha
-; PC64LE-NEXT:    lfd 1, .LCPI64_0 at toc@l(3)
-; PC64LE-NEXT:    bl log
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    stxvd2x 1, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI64_1 at toc@ha
-; PC64LE-NEXT:    lfd 1, .LCPI64_1 at toc@l(3)
-; PC64LE-NEXT:    bl log
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    lxvd2x 0, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    addis 3, 2, .LCPI64_2 at toc@ha
-; PC64LE-NEXT:    xxmrghd 63, 1, 0
-; PC64LE-NEXT:    lfd 1, .LCPI64_2 at toc@l(3)
-; PC64LE-NEXT:    bl log
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    stxvd2x 1, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI64_3 at toc@ha
-; PC64LE-NEXT:    lfs 1, .LCPI64_3 at toc@l(3)
-; PC64LE-NEXT:    bl log
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    vmr 3, 31
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    lxvd2x 0, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    li 3, 64
-; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    xxmrghd 34, 0, 1
-; PC64LE-NEXT:    addi 1, 1, 80
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_log_v4f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -64(1)
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 64
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    .cfi_offset v31, -16
-; PC64LE9-NEXT:    addis 3, 2, .LCPI64_0 at toc@ha
-; PC64LE9-NEXT:    lfd 1, .LCPI64_0 at toc@l(3)
-; PC64LE9-NEXT:    stxv 63, 48(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    bl log
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI64_1 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    stxv 1, 32(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    lfd 1, .LCPI64_1 at toc@l(3)
-; PC64LE9-NEXT:    bl log
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    lxv 0, 32(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    addis 3, 2, .LCPI64_2 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    xxmrghd 63, 1, 0
-; PC64LE9-NEXT:    lfd 1, .LCPI64_2 at toc@l(3)
-; PC64LE9-NEXT:    bl log
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI64_3 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    stxv 1, 32(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    lfs 1, .LCPI64_3 at toc@l(3)
-; PC64LE9-NEXT:    bl log
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    lxv 0, 32(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    vmr 3, 31
-; PC64LE9-NEXT:    lxv 63, 48(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    xxmrghd 34, 0, 1
-; PC64LE9-NEXT:    addi 1, 1, 64
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_log_v4f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -144(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 144
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f29, -24
-; PC64-NEXT:    .cfi_offset f30, -16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI64_0 at toc@ha
-; PC64-NEXT:    stfd 29, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 30, 128(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 31, 136(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfs 1, .LCPI64_0 at toc@l(3)
-; PC64-NEXT:    bl log
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI64_1 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfd 1, .LCPI64_1 at toc@l(3)
-; PC64-NEXT:    bl log
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI64_2 at toc@ha
-; PC64-NEXT:    fmr 30, 1
-; PC64-NEXT:    lfd 1, .LCPI64_2 at toc@l(3)
-; PC64-NEXT:    bl log
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI64_3 at toc@ha
-; PC64-NEXT:    fmr 29, 1
-; PC64-NEXT:    lfd 1, .LCPI64_3 at toc@l(3)
-; PC64-NEXT:    bl log
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 4, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    fmr 2, 30
-; PC64-NEXT:    fmr 3, 29
-; PC64-NEXT:    lfd 31, 136(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 30, 128(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 29, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 144
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %log = call <4 x double> @llvm.experimental.constrained.log.v4f64(
-                             <4 x double> <double 42.0, double 42.1,
-                                           double 42.2, double 42.3>,
-                             metadata !"round.dynamic",
-                             metadata !"fpexcept.strict")
-  ret <4 x double> %log
-}
-
-define <1 x float> @constrained_vector_log10_v1f32() {
-; PC64LE-LABEL: constrained_vector_log10_v1f32:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -32(1)
-; PC64LE-NEXT:    .cfi_def_cfa_offset 32
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    addis 3, 2, .LCPI65_0 at toc@ha
-; PC64LE-NEXT:    lfs 1, .LCPI65_0 at toc@l(3)
-; PC64LE-NEXT:    bl log10f
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    xscvdpspn 0, 1
-; PC64LE-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE-NEXT:    addi 1, 1, 32
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_log10_v1f32:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -32(1)
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 32
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    addis 3, 2, .LCPI65_0 at toc@ha
-; PC64LE9-NEXT:    lfs 1, .LCPI65_0 at toc@l(3)
-; PC64LE9-NEXT:    bl log10f
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    xscvdpspn 0, 1
-; PC64LE9-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE9-NEXT:    addi 1, 1, 32
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_log10_v1f32:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -112(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 112
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    addis 3, 2, .LCPI65_0 at toc@ha
-; PC64-NEXT:    lfs 1, .LCPI65_0 at toc@l(3)
-; PC64-NEXT:    bl log10f
-; PC64-NEXT:    nop
-; PC64-NEXT:    addi 1, 1, 112
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %log10 = call <1 x float> @llvm.experimental.constrained.log10.v1f32(
-                             <1 x float> <float 42.0>,
-                             metadata !"round.dynamic",
-                             metadata !"fpexcept.strict")
-  ret <1 x float> %log10
-}
-
-define <2 x double> @constrained_vector_log10_v2f64() {
-; PC64LE-LABEL: constrained_vector_log10_v2f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -64(1)
-; PC64LE-NEXT:    .cfi_def_cfa_offset 64
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    addis 3, 2, .LCPI66_0 at toc@ha
-; PC64LE-NEXT:    lfd 1, .LCPI66_0 at toc@l(3)
-; PC64LE-NEXT:    bl log10
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    stxvd2x 1, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI66_1 at toc@ha
-; PC64LE-NEXT:    lfs 1, .LCPI66_1 at toc@l(3)
-; PC64LE-NEXT:    bl log10
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    lxvd2x 0, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    xxmrghd 34, 0, 1
-; PC64LE-NEXT:    addi 1, 1, 64
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_log10_v2f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -48(1)
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 48
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    addis 3, 2, .LCPI66_0 at toc@ha
-; PC64LE9-NEXT:    lfd 1, .LCPI66_0 at toc@l(3)
-; PC64LE9-NEXT:    bl log10
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI66_1 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    stxv 1, 32(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    lfs 1, .LCPI66_1 at toc@l(3)
-; PC64LE9-NEXT:    bl log10
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    lxv 0, 32(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    xxmrghd 34, 0, 1
-; PC64LE9-NEXT:    addi 1, 1, 48
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_log10_v2f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -128(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 128
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI66_0 at toc@ha
-; PC64-NEXT:    stfd 31, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfs 1, .LCPI66_0 at toc@l(3)
-; PC64-NEXT:    bl log10
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI66_1 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfd 1, .LCPI66_1 at toc@l(3)
-; PC64-NEXT:    bl log10
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 2, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    lfd 31, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 128
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %log10 = call <2 x double> @llvm.experimental.constrained.log10.v2f64(
-                               <2 x double> <double 42.0, double 42.1>,
-                               metadata !"round.dynamic",
-                               metadata !"fpexcept.strict")
-  ret <2 x double> %log10
-}
-
-define <3 x float> @constrained_vector_log10_v3f32() {
-; PC64LE-LABEL: constrained_vector_log10_v3f32:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    .cfi_def_cfa_offset 48
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    .cfi_offset f30, -16
-; PC64LE-NEXT:    .cfi_offset f31, -8
-; PC64LE-NEXT:    stfd 30, -16(1) # 8-byte Folded Spill
-; PC64LE-NEXT:    stfd 31, -8(1) # 8-byte Folded Spill
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -48(1)
-; PC64LE-NEXT:    addis 3, 2, .LCPI67_0 at toc@ha
-; PC64LE-NEXT:    lfs 1, .LCPI67_0 at toc@l(3)
-; PC64LE-NEXT:    bl log10f
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    addis 3, 2, .LCPI67_1 at toc@ha
-; PC64LE-NEXT:    fmr 31, 1
-; PC64LE-NEXT:    lfs 1, .LCPI67_1 at toc@l(3)
-; PC64LE-NEXT:    bl log10f
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    addis 3, 2, .LCPI67_2 at toc@ha
-; PC64LE-NEXT:    fmr 30, 1
-; PC64LE-NEXT:    lfs 1, .LCPI67_2 at toc@l(3)
-; PC64LE-NEXT:    bl log10f
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    xscvdpspn 0, 30
-; PC64LE-NEXT:    addis 3, 2, .LCPI67_3 at toc@ha
-; PC64LE-NEXT:    xscvdpspn 1, 1
-; PC64LE-NEXT:    addi 3, 3, .LCPI67_3 at toc@l
-; PC64LE-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE-NEXT:    xscvdpspn 0, 31
-; PC64LE-NEXT:    xxsldwi 35, 1, 1, 1
-; PC64LE-NEXT:    vmrglw 2, 2, 3
-; PC64LE-NEXT:    lvx 3, 0, 3
-; PC64LE-NEXT:    xxsldwi 36, 0, 0, 1
-; PC64LE-NEXT:    vperm 2, 4, 2, 3
-; PC64LE-NEXT:    addi 1, 1, 48
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    lfd 31, -8(1) # 8-byte Folded Reload
-; PC64LE-NEXT:    lfd 30, -16(1) # 8-byte Folded Reload
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_log10_v3f32:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 48
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    .cfi_offset f30, -16
-; PC64LE9-NEXT:    .cfi_offset f31, -8
-; PC64LE9-NEXT:    stfd 30, -16(1) # 8-byte Folded Spill
-; PC64LE9-NEXT:    stfd 31, -8(1) # 8-byte Folded Spill
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -48(1)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI67_0 at toc@ha
-; PC64LE9-NEXT:    lfs 1, .LCPI67_0 at toc@l(3)
-; PC64LE9-NEXT:    bl log10f
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI67_1 at toc@ha
-; PC64LE9-NEXT:    fmr 31, 1
-; PC64LE9-NEXT:    lfs 1, .LCPI67_1 at toc@l(3)
-; PC64LE9-NEXT:    bl log10f
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI67_2 at toc@ha
-; PC64LE9-NEXT:    fmr 30, 1
-; PC64LE9-NEXT:    lfs 1, .LCPI67_2 at toc@l(3)
-; PC64LE9-NEXT:    bl log10f
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    xscvdpspn 0, 1
-; PC64LE9-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE9-NEXT:    xscvdpspn 0, 30
-; PC64LE9-NEXT:    xxsldwi 35, 0, 0, 1
-; PC64LE9-NEXT:    xscvdpspn 0, 31
-; PC64LE9-NEXT:    addis 3, 2, .LCPI67_3 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI67_3 at toc@l
-; PC64LE9-NEXT:    vmrglw 2, 3, 2
-; PC64LE9-NEXT:    lxvx 35, 0, 3
-; PC64LE9-NEXT:    xxsldwi 36, 0, 0, 1
-; PC64LE9-NEXT:    vperm 2, 4, 2, 3
-; PC64LE9-NEXT:    addi 1, 1, 48
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    lfd 31, -8(1) # 8-byte Folded Reload
-; PC64LE9-NEXT:    lfd 30, -16(1) # 8-byte Folded Reload
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_log10_v3f32:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -128(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 128
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f30, -16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI67_0 at toc@ha
-; PC64-NEXT:    stfd 30, 112(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 31, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfs 1, .LCPI67_0 at toc@l(3)
-; PC64-NEXT:    bl log10f
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI67_1 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfs 1, .LCPI67_1 at toc@l(3)
-; PC64-NEXT:    bl log10f
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI67_2 at toc@ha
-; PC64-NEXT:    fmr 30, 1
-; PC64-NEXT:    lfs 1, .LCPI67_2 at toc@l(3)
-; PC64-NEXT:    bl log10f
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 3, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    fmr 2, 30
-; PC64-NEXT:    lfd 31, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 30, 112(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 128
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %log10 = call <3 x float> @llvm.experimental.constrained.log10.v3f32(
-                              <3 x float> <float 42.0, float 43.0, float 44.0>,
-                              metadata !"round.dynamic",
-                              metadata !"fpexcept.strict")
-  ret <3 x float> %log10
-}
-
-define <3 x double> @constrained_vector_log10_v3f64() {
-; PC64LE-LABEL: constrained_vector_log10_v3f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -80(1)
-; PC64LE-NEXT:    .cfi_def_cfa_offset 80
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    .cfi_offset v31, -16
-; PC64LE-NEXT:    li 3, 64
-; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI68_0 at toc@ha
-; PC64LE-NEXT:    lfd 1, .LCPI68_0 at toc@l(3)
-; PC64LE-NEXT:    bl log10
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    stxvd2x 1, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI68_1 at toc@ha
-; PC64LE-NEXT:    lfs 1, .LCPI68_1 at toc@l(3)
-; PC64LE-NEXT:    bl log10
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    lxvd2x 0, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    addis 3, 2, .LCPI68_2 at toc@ha
-; PC64LE-NEXT:    xxmrghd 63, 0, 1
-; PC64LE-NEXT:    lfd 1, .LCPI68_2 at toc@l(3)
-; PC64LE-NEXT:    bl log10
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 64
-; PC64LE-NEXT:    fmr 3, 1
-; PC64LE-NEXT:    xxlor 1, 63, 63
-; PC64LE-NEXT:    xxlor 2, 63, 63
-; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    addi 1, 1, 80
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_log10_v3f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -64(1)
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 64
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    .cfi_offset v31, -16
-; PC64LE9-NEXT:    addis 3, 2, .LCPI68_0 at toc@ha
-; PC64LE9-NEXT:    lfd 1, .LCPI68_0 at toc@l(3)
-; PC64LE9-NEXT:    stxv 63, 48(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    bl log10
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI68_1 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    stxv 1, 32(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    lfs 1, .LCPI68_1 at toc@l(3)
-; PC64LE9-NEXT:    bl log10
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    lxv 0, 32(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    addis 3, 2, .LCPI68_2 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    xxmrghd 63, 0, 1
-; PC64LE9-NEXT:    lfd 1, .LCPI68_2 at toc@l(3)
-; PC64LE9-NEXT:    bl log10
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    fmr 3, 1
-; PC64LE9-NEXT:    xscpsgndp 1, 63, 63
-; PC64LE9-NEXT:    xscpsgndp 2, 63, 63
-; PC64LE9-NEXT:    lxv 63, 48(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    addi 1, 1, 64
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_log10_v3f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -128(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 128
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f30, -16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI68_0 at toc@ha
-; PC64-NEXT:    stfd 30, 112(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 31, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfs 1, .LCPI68_0 at toc@l(3)
-; PC64-NEXT:    bl log10
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI68_1 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfd 1, .LCPI68_1 at toc@l(3)
-; PC64-NEXT:    bl log10
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI68_2 at toc@ha
-; PC64-NEXT:    fmr 30, 1
-; PC64-NEXT:    lfd 1, .LCPI68_2 at toc@l(3)
-; PC64-NEXT:    bl log10
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 3, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    fmr 2, 30
-; PC64-NEXT:    lfd 31, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 30, 112(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 128
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %log10 = call <3 x double> @llvm.experimental.constrained.log10.v3f64(
-                          <3 x double> <double 42.0, double 42.1, double 42.2>,
-                          metadata !"round.dynamic",
-                          metadata !"fpexcept.strict")
-  ret <3 x double> %log10
-}
-
-define <4 x double> @constrained_vector_log10_v4f64() {
-; PC64LE-LABEL: constrained_vector_log10_v4f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -80(1)
-; PC64LE-NEXT:    .cfi_def_cfa_offset 80
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    .cfi_offset v31, -16
-; PC64LE-NEXT:    li 3, 64
-; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI69_0 at toc@ha
-; PC64LE-NEXT:    lfd 1, .LCPI69_0 at toc@l(3)
-; PC64LE-NEXT:    bl log10
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    stxvd2x 1, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI69_1 at toc@ha
-; PC64LE-NEXT:    lfd 1, .LCPI69_1 at toc@l(3)
-; PC64LE-NEXT:    bl log10
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    lxvd2x 0, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    addis 3, 2, .LCPI69_2 at toc@ha
-; PC64LE-NEXT:    xxmrghd 63, 1, 0
-; PC64LE-NEXT:    lfd 1, .LCPI69_2 at toc@l(3)
-; PC64LE-NEXT:    bl log10
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    stxvd2x 1, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI69_3 at toc@ha
-; PC64LE-NEXT:    lfs 1, .LCPI69_3 at toc@l(3)
-; PC64LE-NEXT:    bl log10
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    vmr 3, 31
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    lxvd2x 0, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    li 3, 64
-; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    xxmrghd 34, 0, 1
-; PC64LE-NEXT:    addi 1, 1, 80
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_log10_v4f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -64(1)
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 64
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    .cfi_offset v31, -16
-; PC64LE9-NEXT:    addis 3, 2, .LCPI69_0 at toc@ha
-; PC64LE9-NEXT:    lfd 1, .LCPI69_0 at toc@l(3)
-; PC64LE9-NEXT:    stxv 63, 48(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    bl log10
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI69_1 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    stxv 1, 32(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    lfd 1, .LCPI69_1 at toc@l(3)
-; PC64LE9-NEXT:    bl log10
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    lxv 0, 32(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    addis 3, 2, .LCPI69_2 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    xxmrghd 63, 1, 0
-; PC64LE9-NEXT:    lfd 1, .LCPI69_2 at toc@l(3)
-; PC64LE9-NEXT:    bl log10
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI69_3 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    stxv 1, 32(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    lfs 1, .LCPI69_3 at toc@l(3)
-; PC64LE9-NEXT:    bl log10
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    lxv 0, 32(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    vmr 3, 31
-; PC64LE9-NEXT:    lxv 63, 48(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    xxmrghd 34, 0, 1
-; PC64LE9-NEXT:    addi 1, 1, 64
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_log10_v4f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -144(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 144
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f29, -24
-; PC64-NEXT:    .cfi_offset f30, -16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI69_0 at toc@ha
-; PC64-NEXT:    stfd 29, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 30, 128(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 31, 136(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfs 1, .LCPI69_0 at toc@l(3)
-; PC64-NEXT:    bl log10
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI69_1 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfd 1, .LCPI69_1 at toc@l(3)
-; PC64-NEXT:    bl log10
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI69_2 at toc@ha
-; PC64-NEXT:    fmr 30, 1
-; PC64-NEXT:    lfd 1, .LCPI69_2 at toc@l(3)
-; PC64-NEXT:    bl log10
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI69_3 at toc@ha
-; PC64-NEXT:    fmr 29, 1
-; PC64-NEXT:    lfd 1, .LCPI69_3 at toc@l(3)
-; PC64-NEXT:    bl log10
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 4, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    fmr 2, 30
-; PC64-NEXT:    fmr 3, 29
-; PC64-NEXT:    lfd 31, 136(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 30, 128(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 29, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 144
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %log10 = call <4 x double> @llvm.experimental.constrained.log10.v4f64(
-                               <4 x double> <double 42.0, double 42.1,
-                                             double 42.2, double 42.3>,
-                               metadata !"round.dynamic",
-                               metadata !"fpexcept.strict")
-  ret <4 x double> %log10
-}
-
-define <1 x float> @constrained_vector_log2_v1f32() {
-; PC64LE-LABEL: constrained_vector_log2_v1f32:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -32(1)
-; PC64LE-NEXT:    .cfi_def_cfa_offset 32
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    addis 3, 2, .LCPI70_0 at toc@ha
-; PC64LE-NEXT:    lfs 1, .LCPI70_0 at toc@l(3)
-; PC64LE-NEXT:    bl log2f
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    xscvdpspn 0, 1
-; PC64LE-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE-NEXT:    addi 1, 1, 32
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_log2_v1f32:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -32(1)
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 32
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    addis 3, 2, .LCPI70_0 at toc@ha
-; PC64LE9-NEXT:    lfs 1, .LCPI70_0 at toc@l(3)
-; PC64LE9-NEXT:    bl log2f
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    xscvdpspn 0, 1
-; PC64LE9-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE9-NEXT:    addi 1, 1, 32
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_log2_v1f32:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -112(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 112
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    addis 3, 2, .LCPI70_0 at toc@ha
-; PC64-NEXT:    lfs 1, .LCPI70_0 at toc@l(3)
-; PC64-NEXT:    bl log2f
-; PC64-NEXT:    nop
-; PC64-NEXT:    addi 1, 1, 112
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %log2 = call <1 x float> @llvm.experimental.constrained.log2.v1f32(
-                             <1 x float> <float 42.0>,
-                             metadata !"round.dynamic",
-                             metadata !"fpexcept.strict")
-  ret <1 x float> %log2
-}
-
-define <2 x double> @constrained_vector_log2_v2f64() {
-; PC64LE-LABEL: constrained_vector_log2_v2f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -64(1)
-; PC64LE-NEXT:    .cfi_def_cfa_offset 64
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    addis 3, 2, .LCPI71_0 at toc@ha
-; PC64LE-NEXT:    lfd 1, .LCPI71_0 at toc@l(3)
-; PC64LE-NEXT:    bl log2
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    stxvd2x 1, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI71_1 at toc@ha
-; PC64LE-NEXT:    lfs 1, .LCPI71_1 at toc@l(3)
-; PC64LE-NEXT:    bl log2
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    lxvd2x 0, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    xxmrghd 34, 0, 1
-; PC64LE-NEXT:    addi 1, 1, 64
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_log2_v2f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -48(1)
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 48
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    addis 3, 2, .LCPI71_0 at toc@ha
-; PC64LE9-NEXT:    lfd 1, .LCPI71_0 at toc@l(3)
-; PC64LE9-NEXT:    bl log2
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI71_1 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    stxv 1, 32(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    lfs 1, .LCPI71_1 at toc@l(3)
-; PC64LE9-NEXT:    bl log2
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    lxv 0, 32(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    xxmrghd 34, 0, 1
-; PC64LE9-NEXT:    addi 1, 1, 48
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_log2_v2f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -128(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 128
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI71_0 at toc@ha
-; PC64-NEXT:    stfd 31, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfs 1, .LCPI71_0 at toc@l(3)
-; PC64-NEXT:    bl log2
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI71_1 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfd 1, .LCPI71_1 at toc@l(3)
-; PC64-NEXT:    bl log2
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 2, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    lfd 31, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 128
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %log2 = call <2 x double> @llvm.experimental.constrained.log2.v2f64(
-                              <2 x double> <double 42.0, double 42.1>,
-                              metadata !"round.dynamic",
-                              metadata !"fpexcept.strict")
-  ret <2 x double> %log2
-}
-
-define <3 x float> @constrained_vector_log2_v3f32() {
-; PC64LE-LABEL: constrained_vector_log2_v3f32:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    .cfi_def_cfa_offset 48
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    .cfi_offset f30, -16
-; PC64LE-NEXT:    .cfi_offset f31, -8
-; PC64LE-NEXT:    stfd 30, -16(1) # 8-byte Folded Spill
-; PC64LE-NEXT:    stfd 31, -8(1) # 8-byte Folded Spill
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -48(1)
-; PC64LE-NEXT:    addis 3, 2, .LCPI72_0 at toc@ha
-; PC64LE-NEXT:    lfs 1, .LCPI72_0 at toc@l(3)
-; PC64LE-NEXT:    bl log2f
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    addis 3, 2, .LCPI72_1 at toc@ha
-; PC64LE-NEXT:    fmr 31, 1
-; PC64LE-NEXT:    lfs 1, .LCPI72_1 at toc@l(3)
-; PC64LE-NEXT:    bl log2f
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    addis 3, 2, .LCPI72_2 at toc@ha
-; PC64LE-NEXT:    fmr 30, 1
-; PC64LE-NEXT:    lfs 1, .LCPI72_2 at toc@l(3)
-; PC64LE-NEXT:    bl log2f
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    xscvdpspn 0, 30
-; PC64LE-NEXT:    addis 3, 2, .LCPI72_3 at toc@ha
-; PC64LE-NEXT:    xscvdpspn 1, 1
-; PC64LE-NEXT:    addi 3, 3, .LCPI72_3 at toc@l
-; PC64LE-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE-NEXT:    xscvdpspn 0, 31
-; PC64LE-NEXT:    xxsldwi 35, 1, 1, 1
-; PC64LE-NEXT:    vmrglw 2, 2, 3
-; PC64LE-NEXT:    lvx 3, 0, 3
-; PC64LE-NEXT:    xxsldwi 36, 0, 0, 1
-; PC64LE-NEXT:    vperm 2, 4, 2, 3
-; PC64LE-NEXT:    addi 1, 1, 48
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    lfd 31, -8(1) # 8-byte Folded Reload
-; PC64LE-NEXT:    lfd 30, -16(1) # 8-byte Folded Reload
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_log2_v3f32:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 48
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    .cfi_offset f30, -16
-; PC64LE9-NEXT:    .cfi_offset f31, -8
-; PC64LE9-NEXT:    stfd 30, -16(1) # 8-byte Folded Spill
-; PC64LE9-NEXT:    stfd 31, -8(1) # 8-byte Folded Spill
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -48(1)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI72_0 at toc@ha
-; PC64LE9-NEXT:    lfs 1, .LCPI72_0 at toc@l(3)
-; PC64LE9-NEXT:    bl log2f
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI72_1 at toc@ha
-; PC64LE9-NEXT:    fmr 31, 1
-; PC64LE9-NEXT:    lfs 1, .LCPI72_1 at toc@l(3)
-; PC64LE9-NEXT:    bl log2f
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI72_2 at toc@ha
-; PC64LE9-NEXT:    fmr 30, 1
-; PC64LE9-NEXT:    lfs 1, .LCPI72_2 at toc@l(3)
-; PC64LE9-NEXT:    bl log2f
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    xscvdpspn 0, 1
-; PC64LE9-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE9-NEXT:    xscvdpspn 0, 30
-; PC64LE9-NEXT:    xxsldwi 35, 0, 0, 1
-; PC64LE9-NEXT:    xscvdpspn 0, 31
-; PC64LE9-NEXT:    addis 3, 2, .LCPI72_3 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI72_3 at toc@l
-; PC64LE9-NEXT:    vmrglw 2, 3, 2
-; PC64LE9-NEXT:    lxvx 35, 0, 3
-; PC64LE9-NEXT:    xxsldwi 36, 0, 0, 1
-; PC64LE9-NEXT:    vperm 2, 4, 2, 3
-; PC64LE9-NEXT:    addi 1, 1, 48
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    lfd 31, -8(1) # 8-byte Folded Reload
-; PC64LE9-NEXT:    lfd 30, -16(1) # 8-byte Folded Reload
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_log2_v3f32:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -128(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 128
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f30, -16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI72_0 at toc@ha
-; PC64-NEXT:    stfd 30, 112(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 31, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfs 1, .LCPI72_0 at toc@l(3)
-; PC64-NEXT:    bl log2f
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI72_1 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfs 1, .LCPI72_1 at toc@l(3)
-; PC64-NEXT:    bl log2f
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI72_2 at toc@ha
-; PC64-NEXT:    fmr 30, 1
-; PC64-NEXT:    lfs 1, .LCPI72_2 at toc@l(3)
-; PC64-NEXT:    bl log2f
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 3, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    fmr 2, 30
-; PC64-NEXT:    lfd 31, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 30, 112(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 128
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %log2 = call <3 x float> @llvm.experimental.constrained.log2.v3f32(
-                              <3 x float> <float 42.0, float 43.0, float 44.0>,
-                              metadata !"round.dynamic",
-                              metadata !"fpexcept.strict")
-  ret <3 x float> %log2
-}
-
-define <3 x double> @constrained_vector_log2_v3f64() {
-; PC64LE-LABEL: constrained_vector_log2_v3f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -80(1)
-; PC64LE-NEXT:    .cfi_def_cfa_offset 80
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    .cfi_offset v31, -16
-; PC64LE-NEXT:    li 3, 64
-; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI73_0 at toc@ha
-; PC64LE-NEXT:    lfd 1, .LCPI73_0 at toc@l(3)
-; PC64LE-NEXT:    bl log2
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    stxvd2x 1, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI73_1 at toc@ha
-; PC64LE-NEXT:    lfs 1, .LCPI73_1 at toc@l(3)
-; PC64LE-NEXT:    bl log2
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    lxvd2x 0, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    addis 3, 2, .LCPI73_2 at toc@ha
-; PC64LE-NEXT:    xxmrghd 63, 0, 1
-; PC64LE-NEXT:    lfd 1, .LCPI73_2 at toc@l(3)
-; PC64LE-NEXT:    bl log2
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 64
-; PC64LE-NEXT:    fmr 3, 1
-; PC64LE-NEXT:    xxlor 1, 63, 63
-; PC64LE-NEXT:    xxlor 2, 63, 63
-; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    addi 1, 1, 80
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_log2_v3f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -64(1)
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 64
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    .cfi_offset v31, -16
-; PC64LE9-NEXT:    addis 3, 2, .LCPI73_0 at toc@ha
-; PC64LE9-NEXT:    lfd 1, .LCPI73_0 at toc@l(3)
-; PC64LE9-NEXT:    stxv 63, 48(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    bl log2
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI73_1 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    stxv 1, 32(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    lfs 1, .LCPI73_1 at toc@l(3)
-; PC64LE9-NEXT:    bl log2
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    lxv 0, 32(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    addis 3, 2, .LCPI73_2 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    xxmrghd 63, 0, 1
-; PC64LE9-NEXT:    lfd 1, .LCPI73_2 at toc@l(3)
-; PC64LE9-NEXT:    bl log2
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    fmr 3, 1
-; PC64LE9-NEXT:    xscpsgndp 1, 63, 63
-; PC64LE9-NEXT:    xscpsgndp 2, 63, 63
-; PC64LE9-NEXT:    lxv 63, 48(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    addi 1, 1, 64
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_log2_v3f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -128(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 128
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f30, -16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI73_0 at toc@ha
-; PC64-NEXT:    stfd 30, 112(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 31, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfs 1, .LCPI73_0 at toc@l(3)
-; PC64-NEXT:    bl log2
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI73_1 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfd 1, .LCPI73_1 at toc@l(3)
-; PC64-NEXT:    bl log2
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI73_2 at toc@ha
-; PC64-NEXT:    fmr 30, 1
-; PC64-NEXT:    lfd 1, .LCPI73_2 at toc@l(3)
-; PC64-NEXT:    bl log2
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 3, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    fmr 2, 30
-; PC64-NEXT:    lfd 31, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 30, 112(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 128
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %log2 = call <3 x double> @llvm.experimental.constrained.log2.v3f64(
-                          <3 x double> <double 42.0, double 42.1, double 42.2>,
-                          metadata !"round.dynamic",
-                          metadata !"fpexcept.strict")
-  ret <3 x double> %log2
-}
-
-define <4 x double> @constrained_vector_log2_v4f64() {
-; PC64LE-LABEL: constrained_vector_log2_v4f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -80(1)
-; PC64LE-NEXT:    .cfi_def_cfa_offset 80
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    .cfi_offset v31, -16
-; PC64LE-NEXT:    li 3, 64
-; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI74_0 at toc@ha
-; PC64LE-NEXT:    lfd 1, .LCPI74_0 at toc@l(3)
-; PC64LE-NEXT:    bl log2
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    stxvd2x 1, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI74_1 at toc@ha
-; PC64LE-NEXT:    lfd 1, .LCPI74_1 at toc@l(3)
-; PC64LE-NEXT:    bl log2
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    lxvd2x 0, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    addis 3, 2, .LCPI74_2 at toc@ha
-; PC64LE-NEXT:    xxmrghd 63, 1, 0
-; PC64LE-NEXT:    lfd 1, .LCPI74_2 at toc@l(3)
-; PC64LE-NEXT:    bl log2
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    stxvd2x 1, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI74_3 at toc@ha
-; PC64LE-NEXT:    lfs 1, .LCPI74_3 at toc@l(3)
-; PC64LE-NEXT:    bl log2
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    vmr 3, 31
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    lxvd2x 0, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    li 3, 64
-; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    xxmrghd 34, 0, 1
-; PC64LE-NEXT:    addi 1, 1, 80
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_log2_v4f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -64(1)
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 64
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    .cfi_offset v31, -16
-; PC64LE9-NEXT:    addis 3, 2, .LCPI74_0 at toc@ha
-; PC64LE9-NEXT:    lfd 1, .LCPI74_0 at toc@l(3)
-; PC64LE9-NEXT:    stxv 63, 48(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    bl log2
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI74_1 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    stxv 1, 32(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    lfd 1, .LCPI74_1 at toc@l(3)
-; PC64LE9-NEXT:    bl log2
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    lxv 0, 32(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    addis 3, 2, .LCPI74_2 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    xxmrghd 63, 1, 0
-; PC64LE9-NEXT:    lfd 1, .LCPI74_2 at toc@l(3)
-; PC64LE9-NEXT:    bl log2
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI74_3 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    stxv 1, 32(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    lfs 1, .LCPI74_3 at toc@l(3)
-; PC64LE9-NEXT:    bl log2
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    lxv 0, 32(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    vmr 3, 31
-; PC64LE9-NEXT:    lxv 63, 48(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    xxmrghd 34, 0, 1
-; PC64LE9-NEXT:    addi 1, 1, 64
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_log2_v4f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -144(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 144
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f29, -24
-; PC64-NEXT:    .cfi_offset f30, -16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI74_0 at toc@ha
-; PC64-NEXT:    stfd 29, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 30, 128(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 31, 136(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfs 1, .LCPI74_0 at toc@l(3)
-; PC64-NEXT:    bl log2
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI74_1 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfd 1, .LCPI74_1 at toc@l(3)
-; PC64-NEXT:    bl log2
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI74_2 at toc@ha
-; PC64-NEXT:    fmr 30, 1
-; PC64-NEXT:    lfd 1, .LCPI74_2 at toc@l(3)
-; PC64-NEXT:    bl log2
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI74_3 at toc@ha
-; PC64-NEXT:    fmr 29, 1
-; PC64-NEXT:    lfd 1, .LCPI74_3 at toc@l(3)
-; PC64-NEXT:    bl log2
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 4, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    fmr 2, 30
-; PC64-NEXT:    fmr 3, 29
-; PC64-NEXT:    lfd 31, 136(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 30, 128(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 29, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 144
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %log2 = call <4 x double> @llvm.experimental.constrained.log2.v4f64(
-                              <4 x double> <double 42.0, double 42.1,
-                                            double 42.2, double 42.3>,
-                              metadata !"round.dynamic",
-                              metadata !"fpexcept.strict")
-  ret <4 x double> %log2
-}
-
-define <1 x float> @constrained_vector_rint_v1f32() {
-; PC64LE-LABEL: constrained_vector_rint_v1f32:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -32(1)
-; PC64LE-NEXT:    .cfi_def_cfa_offset 32
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    addis 3, 2, .LCPI75_0 at toc@ha
-; PC64LE-NEXT:    lfs 1, .LCPI75_0 at toc@l(3)
-; PC64LE-NEXT:    bl rintf
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    xscvdpspn 0, 1
-; PC64LE-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE-NEXT:    addi 1, 1, 32
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_rint_v1f32:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -32(1)
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 32
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    addis 3, 2, .LCPI75_0 at toc@ha
-; PC64LE9-NEXT:    lfs 1, .LCPI75_0 at toc@l(3)
-; PC64LE9-NEXT:    bl rintf
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    xscvdpspn 0, 1
-; PC64LE9-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE9-NEXT:    addi 1, 1, 32
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_rint_v1f32:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -112(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 112
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    addis 3, 2, .LCPI75_0 at toc@ha
-; PC64-NEXT:    lfs 1, .LCPI75_0 at toc@l(3)
-; PC64-NEXT:    bl rintf
-; PC64-NEXT:    nop
-; PC64-NEXT:    addi 1, 1, 112
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %rint = call <1 x float> @llvm.experimental.constrained.rint.v1f32(
-                             <1 x float> <float 42.0>,
-                             metadata !"round.dynamic",
-                             metadata !"fpexcept.strict")
-  ret <1 x float> %rint
-}
-
-define <2 x double> @constrained_vector_rint_v2f64() {
-; PC64LE-LABEL: constrained_vector_rint_v2f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -64(1)
-; PC64LE-NEXT:    .cfi_def_cfa_offset 64
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    addis 3, 2, .LCPI76_0 at toc@ha
-; PC64LE-NEXT:    lfd 1, .LCPI76_0 at toc@l(3)
-; PC64LE-NEXT:    bl rint
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    stxvd2x 1, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI76_1 at toc@ha
-; PC64LE-NEXT:    lfs 1, .LCPI76_1 at toc@l(3)
-; PC64LE-NEXT:    bl rint
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    lxvd2x 0, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    xxmrghd 34, 1, 0
-; PC64LE-NEXT:    addi 1, 1, 64
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_rint_v2f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -48(1)
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 48
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    addis 3, 2, .LCPI76_0 at toc@ha
-; PC64LE9-NEXT:    lfd 1, .LCPI76_0 at toc@l(3)
-; PC64LE9-NEXT:    bl rint
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI76_1 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    stxv 1, 32(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    lfs 1, .LCPI76_1 at toc@l(3)
-; PC64LE9-NEXT:    bl rint
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    lxv 0, 32(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    xxmrghd 34, 1, 0
-; PC64LE9-NEXT:    addi 1, 1, 48
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_rint_v2f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -128(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 128
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI76_0 at toc@ha
-; PC64-NEXT:    stfd 31, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfd 1, .LCPI76_0 at toc@l(3)
-; PC64-NEXT:    bl rint
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI76_1 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfs 1, .LCPI76_1 at toc@l(3)
-; PC64-NEXT:    bl rint
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 2, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    lfd 31, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 128
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %rint = call <2 x double> @llvm.experimental.constrained.rint.v2f64(
-                        <2 x double> <double 42.1, double 42.0>,
-                        metadata !"round.dynamic",
-                        metadata !"fpexcept.strict")
-  ret <2 x double> %rint
-}
-
-define <3 x float> @constrained_vector_rint_v3f32() {
-; PC64LE-LABEL: constrained_vector_rint_v3f32:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    .cfi_def_cfa_offset 48
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    .cfi_offset f30, -16
-; PC64LE-NEXT:    .cfi_offset f31, -8
-; PC64LE-NEXT:    stfd 30, -16(1) # 8-byte Folded Spill
-; PC64LE-NEXT:    stfd 31, -8(1) # 8-byte Folded Spill
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -48(1)
-; PC64LE-NEXT:    addis 3, 2, .LCPI77_0 at toc@ha
-; PC64LE-NEXT:    lfs 1, .LCPI77_0 at toc@l(3)
-; PC64LE-NEXT:    bl rintf
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    addis 3, 2, .LCPI77_1 at toc@ha
-; PC64LE-NEXT:    fmr 31, 1
-; PC64LE-NEXT:    lfs 1, .LCPI77_1 at toc@l(3)
-; PC64LE-NEXT:    bl rintf
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    addis 3, 2, .LCPI77_2 at toc@ha
-; PC64LE-NEXT:    fmr 30, 1
-; PC64LE-NEXT:    lfs 1, .LCPI77_2 at toc@l(3)
-; PC64LE-NEXT:    bl rintf
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    xscvdpspn 0, 30
-; PC64LE-NEXT:    addis 3, 2, .LCPI77_3 at toc@ha
-; PC64LE-NEXT:    xscvdpspn 1, 1
-; PC64LE-NEXT:    addi 3, 3, .LCPI77_3 at toc@l
-; PC64LE-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE-NEXT:    xscvdpspn 0, 31
-; PC64LE-NEXT:    xxsldwi 35, 1, 1, 1
-; PC64LE-NEXT:    vmrglw 2, 2, 3
-; PC64LE-NEXT:    lvx 3, 0, 3
-; PC64LE-NEXT:    xxsldwi 36, 0, 0, 1
-; PC64LE-NEXT:    vperm 2, 4, 2, 3
-; PC64LE-NEXT:    addi 1, 1, 48
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    lfd 31, -8(1) # 8-byte Folded Reload
-; PC64LE-NEXT:    lfd 30, -16(1) # 8-byte Folded Reload
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_rint_v3f32:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 48
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    .cfi_offset f30, -16
-; PC64LE9-NEXT:    .cfi_offset f31, -8
-; PC64LE9-NEXT:    stfd 30, -16(1) # 8-byte Folded Spill
-; PC64LE9-NEXT:    stfd 31, -8(1) # 8-byte Folded Spill
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -48(1)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI77_0 at toc@ha
-; PC64LE9-NEXT:    lfs 1, .LCPI77_0 at toc@l(3)
-; PC64LE9-NEXT:    bl rintf
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI77_1 at toc@ha
-; PC64LE9-NEXT:    fmr 31, 1
-; PC64LE9-NEXT:    lfs 1, .LCPI77_1 at toc@l(3)
-; PC64LE9-NEXT:    bl rintf
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI77_2 at toc@ha
-; PC64LE9-NEXT:    fmr 30, 1
-; PC64LE9-NEXT:    lfs 1, .LCPI77_2 at toc@l(3)
-; PC64LE9-NEXT:    bl rintf
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    xscvdpspn 0, 1
-; PC64LE9-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE9-NEXT:    xscvdpspn 0, 30
-; PC64LE9-NEXT:    xxsldwi 35, 0, 0, 1
-; PC64LE9-NEXT:    xscvdpspn 0, 31
-; PC64LE9-NEXT:    addis 3, 2, .LCPI77_3 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI77_3 at toc@l
-; PC64LE9-NEXT:    vmrglw 2, 3, 2
-; PC64LE9-NEXT:    lxvx 35, 0, 3
-; PC64LE9-NEXT:    xxsldwi 36, 0, 0, 1
-; PC64LE9-NEXT:    vperm 2, 4, 2, 3
-; PC64LE9-NEXT:    addi 1, 1, 48
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    lfd 31, -8(1) # 8-byte Folded Reload
-; PC64LE9-NEXT:    lfd 30, -16(1) # 8-byte Folded Reload
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_rint_v3f32:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -128(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 128
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f30, -16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI77_0 at toc@ha
-; PC64-NEXT:    stfd 30, 112(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 31, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfs 1, .LCPI77_0 at toc@l(3)
-; PC64-NEXT:    bl rintf
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI77_1 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfs 1, .LCPI77_1 at toc@l(3)
-; PC64-NEXT:    bl rintf
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI77_2 at toc@ha
-; PC64-NEXT:    fmr 30, 1
-; PC64-NEXT:    lfs 1, .LCPI77_2 at toc@l(3)
-; PC64-NEXT:    bl rintf
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 3, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    fmr 2, 30
-; PC64-NEXT:    lfd 31, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 30, 112(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 128
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
- entry:
-  %rint = call <3 x float> @llvm.experimental.constrained.rint.v3f32(
-                              <3 x float> <float 42.0, float 43.0, float 44.0>,
-                              metadata !"round.dynamic",
-                              metadata !"fpexcept.strict")
-  ret <3 x float> %rint
-}
-
-define <3 x double> @constrained_vector_rint_v3f64() {
-; PC64LE-LABEL: constrained_vector_rint_v3f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -80(1)
-; PC64LE-NEXT:    .cfi_def_cfa_offset 80
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    .cfi_offset v31, -16
-; PC64LE-NEXT:    li 3, 64
-; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI78_0 at toc@ha
-; PC64LE-NEXT:    lfd 1, .LCPI78_0 at toc@l(3)
-; PC64LE-NEXT:    bl rint
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    stxvd2x 1, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI78_1 at toc@ha
-; PC64LE-NEXT:    lfs 1, .LCPI78_1 at toc@l(3)
-; PC64LE-NEXT:    bl rint
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    lxvd2x 0, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    addis 3, 2, .LCPI78_2 at toc@ha
-; PC64LE-NEXT:    xxmrghd 63, 0, 1
-; PC64LE-NEXT:    lfd 1, .LCPI78_2 at toc@l(3)
-; PC64LE-NEXT:    bl rint
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 64
-; PC64LE-NEXT:    fmr 3, 1
-; PC64LE-NEXT:    xxlor 1, 63, 63
-; PC64LE-NEXT:    xxlor 2, 63, 63
-; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    addi 1, 1, 80
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_rint_v3f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -64(1)
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 64
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    .cfi_offset v31, -16
-; PC64LE9-NEXT:    addis 3, 2, .LCPI78_0 at toc@ha
-; PC64LE9-NEXT:    lfd 1, .LCPI78_0 at toc@l(3)
-; PC64LE9-NEXT:    stxv 63, 48(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    bl rint
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI78_1 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    stxv 1, 32(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    lfs 1, .LCPI78_1 at toc@l(3)
-; PC64LE9-NEXT:    bl rint
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    lxv 0, 32(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    addis 3, 2, .LCPI78_2 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    xxmrghd 63, 0, 1
-; PC64LE9-NEXT:    lfd 1, .LCPI78_2 at toc@l(3)
-; PC64LE9-NEXT:    bl rint
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    fmr 3, 1
-; PC64LE9-NEXT:    xscpsgndp 1, 63, 63
-; PC64LE9-NEXT:    xscpsgndp 2, 63, 63
-; PC64LE9-NEXT:    lxv 63, 48(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    addi 1, 1, 64
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_rint_v3f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -128(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 128
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f30, -16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI78_0 at toc@ha
-; PC64-NEXT:    stfd 30, 112(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 31, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfs 1, .LCPI78_0 at toc@l(3)
-; PC64-NEXT:    bl rint
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI78_1 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfd 1, .LCPI78_1 at toc@l(3)
-; PC64-NEXT:    bl rint
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI78_2 at toc@ha
-; PC64-NEXT:    fmr 30, 1
-; PC64-NEXT:    lfd 1, .LCPI78_2 at toc@l(3)
-; PC64-NEXT:    bl rint
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 3, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    fmr 2, 30
-; PC64-NEXT:    lfd 31, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 30, 112(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 128
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %rint = call <3 x double> @llvm.experimental.constrained.rint.v3f64(
-                          <3 x double> <double 42.0, double 42.1, double 42.2>,
-                          metadata !"round.dynamic",
-                          metadata !"fpexcept.strict")
-  ret <3 x double> %rint
-}
-
-define <4 x double> @constrained_vector_rint_v4f64() {
-; PC64LE-LABEL: constrained_vector_rint_v4f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -80(1)
-; PC64LE-NEXT:    .cfi_def_cfa_offset 80
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    .cfi_offset v31, -16
-; PC64LE-NEXT:    li 3, 64
-; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI79_0 at toc@ha
-; PC64LE-NEXT:    lfd 1, .LCPI79_0 at toc@l(3)
-; PC64LE-NEXT:    bl rint
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    stxvd2x 1, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI79_1 at toc@ha
-; PC64LE-NEXT:    lfd 1, .LCPI79_1 at toc@l(3)
-; PC64LE-NEXT:    bl rint
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    lxvd2x 0, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    addis 3, 2, .LCPI79_2 at toc@ha
-; PC64LE-NEXT:    xxmrghd 63, 1, 0
-; PC64LE-NEXT:    lfd 1, .LCPI79_2 at toc@l(3)
-; PC64LE-NEXT:    bl rint
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    stxvd2x 1, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI79_3 at toc@ha
-; PC64LE-NEXT:    lfd 1, .LCPI79_3 at toc@l(3)
-; PC64LE-NEXT:    bl rint
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    vmr 2, 31
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    lxvd2x 0, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    li 3, 64
-; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    xxmrghd 35, 1, 0
-; PC64LE-NEXT:    addi 1, 1, 80
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_rint_v4f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -64(1)
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 64
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    .cfi_offset v31, -16
-; PC64LE9-NEXT:    addis 3, 2, .LCPI79_0 at toc@ha
-; PC64LE9-NEXT:    lfd 1, .LCPI79_0 at toc@l(3)
-; PC64LE9-NEXT:    stxv 63, 48(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    bl rint
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI79_1 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    stxv 1, 32(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    lfd 1, .LCPI79_1 at toc@l(3)
-; PC64LE9-NEXT:    bl rint
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    lxv 0, 32(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    addis 3, 2, .LCPI79_2 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    xxmrghd 63, 1, 0
-; PC64LE9-NEXT:    lfd 1, .LCPI79_2 at toc@l(3)
-; PC64LE9-NEXT:    bl rint
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI79_3 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    stxv 1, 32(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    lfd 1, .LCPI79_3 at toc@l(3)
-; PC64LE9-NEXT:    bl rint
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    lxv 0, 32(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    vmr 2, 31
-; PC64LE9-NEXT:    lxv 63, 48(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    xxmrghd 35, 1, 0
-; PC64LE9-NEXT:    addi 1, 1, 64
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_rint_v4f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -144(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 144
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f29, -24
-; PC64-NEXT:    .cfi_offset f30, -16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI79_0 at toc@ha
-; PC64-NEXT:    stfd 29, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 30, 128(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 31, 136(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfd 1, .LCPI79_0 at toc@l(3)
-; PC64-NEXT:    bl rint
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI79_1 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfd 1, .LCPI79_1 at toc@l(3)
-; PC64-NEXT:    bl rint
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI79_2 at toc@ha
-; PC64-NEXT:    fmr 30, 1
-; PC64-NEXT:    lfd 1, .LCPI79_2 at toc@l(3)
-; PC64-NEXT:    bl rint
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI79_3 at toc@ha
-; PC64-NEXT:    fmr 29, 1
-; PC64-NEXT:    lfd 1, .LCPI79_3 at toc@l(3)
-; PC64-NEXT:    bl rint
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 4, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    fmr 2, 30
-; PC64-NEXT:    fmr 3, 29
-; PC64-NEXT:    lfd 31, 136(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 30, 128(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 29, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 144
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %rint = call <4 x double> @llvm.experimental.constrained.rint.v4f64(
-                        <4 x double> <double 42.1, double 42.2,
-                                      double 42.3, double 42.4>,
-                        metadata !"round.dynamic",
-                        metadata !"fpexcept.strict")
-  ret <4 x double> %rint
-}
-
-define <1 x float> @constrained_vector_nearbyint_v1f32() {
-; PC64LE-LABEL: constrained_vector_nearbyint_v1f32:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -32(1)
-; PC64LE-NEXT:    .cfi_def_cfa_offset 32
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    addis 3, 2, .LCPI80_0 at toc@ha
-; PC64LE-NEXT:    lfs 1, .LCPI80_0 at toc@l(3)
-; PC64LE-NEXT:    bl nearbyintf
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    xscvdpspn 0, 1
-; PC64LE-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE-NEXT:    addi 1, 1, 32
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_nearbyint_v1f32:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -32(1)
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 32
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    addis 3, 2, .LCPI80_0 at toc@ha
-; PC64LE9-NEXT:    lfs 1, .LCPI80_0 at toc@l(3)
-; PC64LE9-NEXT:    bl nearbyintf
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    xscvdpspn 0, 1
-; PC64LE9-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE9-NEXT:    addi 1, 1, 32
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_nearbyint_v1f32:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -112(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 112
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    addis 3, 2, .LCPI80_0 at toc@ha
-; PC64-NEXT:    lfs 1, .LCPI80_0 at toc@l(3)
-; PC64-NEXT:    bl nearbyintf
-; PC64-NEXT:    nop
-; PC64-NEXT:    addi 1, 1, 112
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %nearby = call <1 x float> @llvm.experimental.constrained.nearbyint.v1f32(
-                               <1 x float> <float 42.0>,
-                               metadata !"round.dynamic",
-                               metadata !"fpexcept.strict")
-  ret <1 x float> %nearby
-}
-
-define <2 x double> @constrained_vector_nearbyint_v2f64() {
-; PC64LE-LABEL: constrained_vector_nearbyint_v2f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    addis 3, 2, .LCPI81_0 at toc@ha
-; PC64LE-NEXT:    addi 3, 3, .LCPI81_0 at toc@l
-; PC64LE-NEXT:    lxvd2x 0, 0, 3
-; PC64LE-NEXT:    xxswapd 0, 0
-; PC64LE-NEXT:    xvrdpic 34, 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_nearbyint_v2f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    addis 3, 2, .LCPI81_0 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI81_0 at toc@l
-; PC64LE9-NEXT:    lxvx 0, 0, 3
-; PC64LE9-NEXT:    xvrdpic 34, 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_nearbyint_v2f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -128(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 128
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI81_0 at toc@ha
-; PC64-NEXT:    stfd 31, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfd 1, .LCPI81_0 at toc@l(3)
-; PC64-NEXT:    bl nearbyint
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI81_1 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfs 1, .LCPI81_1 at toc@l(3)
-; PC64-NEXT:    bl nearbyint
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 2, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    lfd 31, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 128
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %nearby = call <2 x double> @llvm.experimental.constrained.nearbyint.v2f64(
-                                <2 x double> <double 42.1, double 42.0>,
-                                metadata !"round.dynamic",
-                                metadata !"fpexcept.strict")
-  ret <2 x double> %nearby
-}
-
-define <3 x float> @constrained_vector_nearbyint_v3f32() {
-; PC64LE-LABEL: constrained_vector_nearbyint_v3f32:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    .cfi_def_cfa_offset 48
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    .cfi_offset f30, -16
-; PC64LE-NEXT:    .cfi_offset f31, -8
-; PC64LE-NEXT:    stfd 30, -16(1) # 8-byte Folded Spill
-; PC64LE-NEXT:    stfd 31, -8(1) # 8-byte Folded Spill
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -48(1)
-; PC64LE-NEXT:    addis 3, 2, .LCPI82_0 at toc@ha
-; PC64LE-NEXT:    lfs 1, .LCPI82_0 at toc@l(3)
-; PC64LE-NEXT:    bl nearbyintf
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    addis 3, 2, .LCPI82_1 at toc@ha
-; PC64LE-NEXT:    fmr 31, 1
-; PC64LE-NEXT:    lfs 1, .LCPI82_1 at toc@l(3)
-; PC64LE-NEXT:    bl nearbyintf
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    addis 3, 2, .LCPI82_2 at toc@ha
-; PC64LE-NEXT:    fmr 30, 1
-; PC64LE-NEXT:    lfs 1, .LCPI82_2 at toc@l(3)
-; PC64LE-NEXT:    bl nearbyintf
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    xscvdpspn 0, 30
-; PC64LE-NEXT:    addis 3, 2, .LCPI82_3 at toc@ha
-; PC64LE-NEXT:    xscvdpspn 1, 1
-; PC64LE-NEXT:    addi 3, 3, .LCPI82_3 at toc@l
-; PC64LE-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE-NEXT:    xscvdpspn 0, 31
-; PC64LE-NEXT:    xxsldwi 35, 1, 1, 1
-; PC64LE-NEXT:    vmrglw 2, 2, 3
-; PC64LE-NEXT:    lvx 3, 0, 3
-; PC64LE-NEXT:    xxsldwi 36, 0, 0, 1
-; PC64LE-NEXT:    vperm 2, 4, 2, 3
-; PC64LE-NEXT:    addi 1, 1, 48
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    lfd 31, -8(1) # 8-byte Folded Reload
-; PC64LE-NEXT:    lfd 30, -16(1) # 8-byte Folded Reload
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_nearbyint_v3f32:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 48
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    .cfi_offset f30, -16
-; PC64LE9-NEXT:    .cfi_offset f31, -8
-; PC64LE9-NEXT:    stfd 30, -16(1) # 8-byte Folded Spill
-; PC64LE9-NEXT:    stfd 31, -8(1) # 8-byte Folded Spill
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -48(1)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI82_0 at toc@ha
-; PC64LE9-NEXT:    lfs 1, .LCPI82_0 at toc@l(3)
-; PC64LE9-NEXT:    bl nearbyintf
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI82_1 at toc@ha
-; PC64LE9-NEXT:    fmr 31, 1
-; PC64LE9-NEXT:    lfs 1, .LCPI82_1 at toc@l(3)
-; PC64LE9-NEXT:    bl nearbyintf
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI82_2 at toc@ha
-; PC64LE9-NEXT:    fmr 30, 1
-; PC64LE9-NEXT:    lfs 1, .LCPI82_2 at toc@l(3)
-; PC64LE9-NEXT:    bl nearbyintf
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    xscvdpspn 0, 1
-; PC64LE9-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE9-NEXT:    xscvdpspn 0, 30
-; PC64LE9-NEXT:    xxsldwi 35, 0, 0, 1
-; PC64LE9-NEXT:    xscvdpspn 0, 31
-; PC64LE9-NEXT:    addis 3, 2, .LCPI82_3 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI82_3 at toc@l
-; PC64LE9-NEXT:    vmrglw 2, 3, 2
-; PC64LE9-NEXT:    lxvx 35, 0, 3
-; PC64LE9-NEXT:    xxsldwi 36, 0, 0, 1
-; PC64LE9-NEXT:    vperm 2, 4, 2, 3
-; PC64LE9-NEXT:    addi 1, 1, 48
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    lfd 31, -8(1) # 8-byte Folded Reload
-; PC64LE9-NEXT:    lfd 30, -16(1) # 8-byte Folded Reload
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_nearbyint_v3f32:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -128(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 128
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f30, -16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI82_0 at toc@ha
-; PC64-NEXT:    stfd 30, 112(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 31, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfs 1, .LCPI82_0 at toc@l(3)
-; PC64-NEXT:    bl nearbyintf
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI82_1 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfs 1, .LCPI82_1 at toc@l(3)
-; PC64-NEXT:    bl nearbyintf
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI82_2 at toc@ha
-; PC64-NEXT:    fmr 30, 1
-; PC64-NEXT:    lfs 1, .LCPI82_2 at toc@l(3)
-; PC64-NEXT:    bl nearbyintf
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 3, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    fmr 2, 30
-; PC64-NEXT:    lfd 31, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 30, 112(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 128
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %nearby = call <3 x float> @llvm.experimental.constrained.nearbyint.v3f32(
-                              <3 x float> <float 42.0, float 43.0, float 44.0>,
-                              metadata !"round.dynamic",
-                              metadata !"fpexcept.strict")
-  ret <3 x float> %nearby
-}
-
-define <3 x double> @constrained_vector_nearby_v3f64() {
-; PC64LE-LABEL: constrained_vector_nearby_v3f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -32(1)
-; PC64LE-NEXT:    .cfi_def_cfa_offset 32
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    addis 3, 2, .LCPI83_0 at toc@ha
-; PC64LE-NEXT:    lfd 1, .LCPI83_0 at toc@l(3)
-; PC64LE-NEXT:    bl nearbyint
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    addis 3, 2, .LCPI83_1 at toc@ha
-; PC64LE-NEXT:    fmr 3, 1
-; PC64LE-NEXT:    addi 3, 3, .LCPI83_1 at toc@l
-; PC64LE-NEXT:    lxvd2x 0, 0, 3
-; PC64LE-NEXT:    xxswapd 0, 0
-; PC64LE-NEXT:    xvrdpic 2, 0
-; PC64LE-NEXT:    xxswapd 0, 2
-; PC64LE-NEXT:    # kill: def $f2 killed $f2 killed $vsl2
-; PC64LE-NEXT:    fmr 1, 0
-; PC64LE-NEXT:    addi 1, 1, 32
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_nearby_v3f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -32(1)
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 32
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    addis 3, 2, .LCPI83_0 at toc@ha
-; PC64LE9-NEXT:    lfd 1, .LCPI83_0 at toc@l(3)
-; PC64LE9-NEXT:    bl nearbyint
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI83_1 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI83_1 at toc@l
-; PC64LE9-NEXT:    lxvx 0, 0, 3
-; PC64LE9-NEXT:    xvrdpic 2, 0
-; PC64LE9-NEXT:    fmr 3, 1
-; PC64LE9-NEXT:    xxswapd 1, 2
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 killed $vsl1
-; PC64LE9-NEXT:    # kill: def $f2 killed $f2 killed $vsl2
-; PC64LE9-NEXT:    addi 1, 1, 32
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_nearby_v3f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -128(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 128
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f30, -16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI83_0 at toc@ha
-; PC64-NEXT:    stfd 30, 112(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 31, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfs 1, .LCPI83_0 at toc@l(3)
-; PC64-NEXT:    bl nearbyint
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI83_1 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfd 1, .LCPI83_1 at toc@l(3)
-; PC64-NEXT:    bl nearbyint
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI83_2 at toc@ha
-; PC64-NEXT:    fmr 30, 1
-; PC64-NEXT:    lfd 1, .LCPI83_2 at toc@l(3)
-; PC64-NEXT:    bl nearbyint
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 3, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    fmr 2, 30
-; PC64-NEXT:    lfd 31, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 30, 112(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 128
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %nearby = call <3 x double> @llvm.experimental.constrained.nearbyint.v3f64(
-                          <3 x double> <double 42.0, double 42.1, double 42.2>,
-                          metadata !"round.dynamic",
-                          metadata !"fpexcept.strict")
-  ret <3 x double> %nearby
-}
-
-define <4 x double> @constrained_vector_nearbyint_v4f64() {
-; PC64LE-LABEL: constrained_vector_nearbyint_v4f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    addis 3, 2, .LCPI84_0 at toc@ha
-; PC64LE-NEXT:    addis 4, 2, .LCPI84_1 at toc@ha
-; PC64LE-NEXT:    addi 3, 3, .LCPI84_0 at toc@l
-; PC64LE-NEXT:    lxvd2x 0, 0, 3
-; PC64LE-NEXT:    addi 3, 4, .LCPI84_1 at toc@l
-; PC64LE-NEXT:    lxvd2x 1, 0, 3
-; PC64LE-NEXT:    xxswapd 0, 0
-; PC64LE-NEXT:    xxswapd 1, 1
-; PC64LE-NEXT:    xvrdpic 34, 0
-; PC64LE-NEXT:    xvrdpic 35, 1
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_nearbyint_v4f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    addis 3, 2, .LCPI84_0 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI84_0 at toc@l
-; PC64LE9-NEXT:    lxvx 0, 0, 3
-; PC64LE9-NEXT:    addis 3, 2, .LCPI84_1 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI84_1 at toc@l
-; PC64LE9-NEXT:    xvrdpic 34, 0
-; PC64LE9-NEXT:    lxvx 0, 0, 3
-; PC64LE9-NEXT:    xvrdpic 35, 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_nearbyint_v4f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -144(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 144
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f29, -24
-; PC64-NEXT:    .cfi_offset f30, -16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI84_0 at toc@ha
-; PC64-NEXT:    stfd 29, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 30, 128(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 31, 136(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfd 1, .LCPI84_0 at toc@l(3)
-; PC64-NEXT:    bl nearbyint
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI84_1 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfd 1, .LCPI84_1 at toc@l(3)
-; PC64-NEXT:    bl nearbyint
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI84_2 at toc@ha
-; PC64-NEXT:    fmr 30, 1
-; PC64-NEXT:    lfd 1, .LCPI84_2 at toc@l(3)
-; PC64-NEXT:    bl nearbyint
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI84_3 at toc@ha
-; PC64-NEXT:    fmr 29, 1
-; PC64-NEXT:    lfd 1, .LCPI84_3 at toc@l(3)
-; PC64-NEXT:    bl nearbyint
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 4, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    fmr 2, 30
-; PC64-NEXT:    fmr 3, 29
-; PC64-NEXT:    lfd 31, 136(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 30, 128(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 29, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 144
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %nearby = call <4 x double> @llvm.experimental.constrained.nearbyint.v4f64(
-                                <4 x double> <double 42.1, double 42.2,
-                                              double 42.3, double 42.4>,
-                                metadata !"round.dynamic",
-                                metadata !"fpexcept.strict")
-  ret <4 x double> %nearby
-}
-
-define <1 x float> @constrained_vector_maxnum_v1f32() {
-; PC64LE-LABEL: constrained_vector_maxnum_v1f32:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -32(1)
-; PC64LE-NEXT:    .cfi_def_cfa_offset 32
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    addis 3, 2, .LCPI85_0 at toc@ha
-; PC64LE-NEXT:    addis 4, 2, .LCPI85_1 at toc@ha
-; PC64LE-NEXT:    lfs 1, .LCPI85_0 at toc@l(3)
-; PC64LE-NEXT:    lfs 2, .LCPI85_1 at toc@l(4)
-; PC64LE-NEXT:    bl fmaxf
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    xscvdpspn 0, 1
-; PC64LE-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE-NEXT:    addi 1, 1, 32
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_maxnum_v1f32:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -32(1)
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 32
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    addis 3, 2, .LCPI85_0 at toc@ha
-; PC64LE9-NEXT:    lfs 1, .LCPI85_0 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI85_1 at toc@ha
-; PC64LE9-NEXT:    lfs 2, .LCPI85_1 at toc@l(3)
-; PC64LE9-NEXT:    bl fmaxf
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    xscvdpspn 0, 1
-; PC64LE9-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE9-NEXT:    addi 1, 1, 32
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_maxnum_v1f32:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -112(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 112
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    addis 3, 2, .LCPI85_0 at toc@ha
-; PC64-NEXT:    lfs 1, .LCPI85_0 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI85_1 at toc@ha
-; PC64-NEXT:    lfs 2, .LCPI85_1 at toc@l(3)
-; PC64-NEXT:    bl fmaxf
-; PC64-NEXT:    nop
-; PC64-NEXT:    addi 1, 1, 112
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %max = call <1 x float> @llvm.experimental.constrained.maxnum.v1f32(
-                               <1 x float> <float 42.0>, <1 x float> <float 41.0>,
-                               metadata !"round.dynamic",
-                               metadata !"fpexcept.strict")
-  ret <1 x float> %max
-}
-
-define <2 x double> @constrained_vector_maxnum_v2f64() {
-; PC64LE-LABEL: constrained_vector_maxnum_v2f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -64(1)
-; PC64LE-NEXT:    .cfi_def_cfa_offset 64
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    addis 3, 2, .LCPI86_0 at toc@ha
-; PC64LE-NEXT:    addis 4, 2, .LCPI86_1 at toc@ha
-; PC64LE-NEXT:    lfs 1, .LCPI86_0 at toc@l(3)
-; PC64LE-NEXT:    lfs 2, .LCPI86_1 at toc@l(4)
-; PC64LE-NEXT:    bl fmax
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    addis 4, 2, .LCPI86_3 at toc@ha
-; PC64LE-NEXT:    stxvd2x 1, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI86_2 at toc@ha
-; PC64LE-NEXT:    lfs 2, .LCPI86_3 at toc@l(4)
-; PC64LE-NEXT:    lfs 1, .LCPI86_2 at toc@l(3)
-; PC64LE-NEXT:    bl fmax
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    lxvd2x 0, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    xxmrghd 34, 1, 0
-; PC64LE-NEXT:    addi 1, 1, 64
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_maxnum_v2f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -48(1)
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 48
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    addis 3, 2, .LCPI86_0 at toc@ha
-; PC64LE9-NEXT:    lfs 1, .LCPI86_0 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI86_1 at toc@ha
-; PC64LE9-NEXT:    lfs 2, .LCPI86_1 at toc@l(3)
-; PC64LE9-NEXT:    bl fmax
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI86_2 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    stxv 1, 32(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    lfs 1, .LCPI86_2 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI86_3 at toc@ha
-; PC64LE9-NEXT:    lfs 2, .LCPI86_3 at toc@l(3)
-; PC64LE9-NEXT:    bl fmax
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    lxv 0, 32(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    xxmrghd 34, 1, 0
-; PC64LE9-NEXT:    addi 1, 1, 48
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_maxnum_v2f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -128(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 128
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI86_0 at toc@ha
-; PC64-NEXT:    stfd 31, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfs 1, .LCPI86_0 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI86_1 at toc@ha
-; PC64-NEXT:    lfs 2, .LCPI86_1 at toc@l(3)
-; PC64-NEXT:    bl fmax
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI86_2 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfs 1, .LCPI86_2 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI86_3 at toc@ha
-; PC64-NEXT:    lfs 2, .LCPI86_3 at toc@l(3)
-; PC64-NEXT:    bl fmax
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 2, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    lfd 31, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 128
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %max = call <2 x double> @llvm.experimental.constrained.maxnum.v2f64(
-                                <2 x double> <double 43.0, double 42.0>,
-                                <2 x double> <double 41.0, double 40.0>,
-                                metadata !"round.dynamic",
-                                metadata !"fpexcept.strict")
-  ret <2 x double> %max
-}
-
-define <3 x float> @constrained_vector_maxnum_v3f32() {
-; PC64LE-LABEL: constrained_vector_maxnum_v3f32:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    .cfi_def_cfa_offset 64
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    .cfi_offset f29, -24
-; PC64LE-NEXT:    .cfi_offset f30, -16
-; PC64LE-NEXT:    .cfi_offset f31, -8
-; PC64LE-NEXT:    stfd 29, -24(1) # 8-byte Folded Spill
-; PC64LE-NEXT:    stfd 30, -16(1) # 8-byte Folded Spill
-; PC64LE-NEXT:    stfd 31, -8(1) # 8-byte Folded Spill
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -64(1)
-; PC64LE-NEXT:    addis 4, 2, .LCPI87_1 at toc@ha
-; PC64LE-NEXT:    addis 3, 2, .LCPI87_0 at toc@ha
-; PC64LE-NEXT:    lfs 31, .LCPI87_1 at toc@l(4)
-; PC64LE-NEXT:    lfs 1, .LCPI87_0 at toc@l(3)
-; PC64LE-NEXT:    fmr 2, 31
-; PC64LE-NEXT:    bl fmaxf
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    addis 3, 2, .LCPI87_2 at toc@ha
-; PC64LE-NEXT:    addis 4, 2, .LCPI87_3 at toc@ha
-; PC64LE-NEXT:    fmr 30, 1
-; PC64LE-NEXT:    lfs 1, .LCPI87_2 at toc@l(3)
-; PC64LE-NEXT:    lfs 2, .LCPI87_3 at toc@l(4)
-; PC64LE-NEXT:    bl fmaxf
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    fmr 29, 1
-; PC64LE-NEXT:    addis 3, 2, .LCPI87_4 at toc@ha
-; PC64LE-NEXT:    fmr 1, 31
-; PC64LE-NEXT:    lfs 2, .LCPI87_4 at toc@l(3)
-; PC64LE-NEXT:    bl fmaxf
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    xscvdpspn 0, 29
-; PC64LE-NEXT:    addis 3, 2, .LCPI87_5 at toc@ha
-; PC64LE-NEXT:    xscvdpspn 1, 1
-; PC64LE-NEXT:    addi 3, 3, .LCPI87_5 at toc@l
-; PC64LE-NEXT:    lvx 4, 0, 3
-; PC64LE-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE-NEXT:    xscvdpspn 0, 30
-; PC64LE-NEXT:    xxsldwi 35, 1, 1, 1
-; PC64LE-NEXT:    vmrglw 2, 2, 3
-; PC64LE-NEXT:    xxsldwi 35, 0, 0, 1
-; PC64LE-NEXT:    vperm 2, 3, 2, 4
-; PC64LE-NEXT:    addi 1, 1, 64
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    lfd 31, -8(1) # 8-byte Folded Reload
-; PC64LE-NEXT:    lfd 30, -16(1) # 8-byte Folded Reload
-; PC64LE-NEXT:    lfd 29, -24(1) # 8-byte Folded Reload
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_maxnum_v3f32:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 64
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    .cfi_offset f29, -24
-; PC64LE9-NEXT:    .cfi_offset f30, -16
-; PC64LE9-NEXT:    .cfi_offset f31, -8
-; PC64LE9-NEXT:    stfd 29, -24(1) # 8-byte Folded Spill
-; PC64LE9-NEXT:    stfd 30, -16(1) # 8-byte Folded Spill
-; PC64LE9-NEXT:    stfd 31, -8(1) # 8-byte Folded Spill
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -64(1)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI87_0 at toc@ha
-; PC64LE9-NEXT:    lfs 1, .LCPI87_0 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI87_1 at toc@ha
-; PC64LE9-NEXT:    lfs 31, .LCPI87_1 at toc@l(3)
-; PC64LE9-NEXT:    fmr 2, 31
-; PC64LE9-NEXT:    bl fmaxf
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI87_2 at toc@ha
-; PC64LE9-NEXT:    fmr 30, 1
-; PC64LE9-NEXT:    lfs 1, .LCPI87_2 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI87_3 at toc@ha
-; PC64LE9-NEXT:    lfs 2, .LCPI87_3 at toc@l(3)
-; PC64LE9-NEXT:    bl fmaxf
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI87_4 at toc@ha
-; PC64LE9-NEXT:    lfs 2, .LCPI87_4 at toc@l(3)
-; PC64LE9-NEXT:    fmr 29, 1
-; PC64LE9-NEXT:    fmr 1, 31
-; PC64LE9-NEXT:    bl fmaxf
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    xscvdpspn 0, 1
-; PC64LE9-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE9-NEXT:    xscvdpspn 0, 29
-; PC64LE9-NEXT:    xxsldwi 35, 0, 0, 1
-; PC64LE9-NEXT:    xscvdpspn 0, 30
-; PC64LE9-NEXT:    addis 3, 2, .LCPI87_5 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI87_5 at toc@l
-; PC64LE9-NEXT:    lxvx 36, 0, 3
-; PC64LE9-NEXT:    vmrglw 2, 3, 2
-; PC64LE9-NEXT:    xxsldwi 35, 0, 0, 1
-; PC64LE9-NEXT:    vperm 2, 3, 2, 4
-; PC64LE9-NEXT:    addi 1, 1, 64
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    lfd 31, -8(1) # 8-byte Folded Reload
-; PC64LE9-NEXT:    lfd 30, -16(1) # 8-byte Folded Reload
-; PC64LE9-NEXT:    lfd 29, -24(1) # 8-byte Folded Reload
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_maxnum_v3f32:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -144(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 144
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f29, -24
-; PC64-NEXT:    .cfi_offset f30, -16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI87_0 at toc@ha
-; PC64-NEXT:    stfd 31, 136(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 29, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 30, 128(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfs 31, .LCPI87_0 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI87_1 at toc@ha
-; PC64-NEXT:    lfs 2, .LCPI87_1 at toc@l(3)
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    bl fmaxf
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI87_2 at toc@ha
-; PC64-NEXT:    fmr 30, 1
-; PC64-NEXT:    lfs 1, .LCPI87_2 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI87_3 at toc@ha
-; PC64-NEXT:    lfs 2, .LCPI87_3 at toc@l(3)
-; PC64-NEXT:    bl fmaxf
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI87_4 at toc@ha
-; PC64-NEXT:    fmr 29, 1
-; PC64-NEXT:    lfs 1, .LCPI87_4 at toc@l(3)
-; PC64-NEXT:    fmr 2, 31
-; PC64-NEXT:    bl fmaxf
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 3, 1
-; PC64-NEXT:    fmr 1, 30
-; PC64-NEXT:    fmr 2, 29
-; PC64-NEXT:    lfd 31, 136(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 30, 128(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 29, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 144
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %max = call <3 x float> @llvm.experimental.constrained.maxnum.v3f32(
-                              <3 x float> <float 43.0, float 44.0, float 45.0>,
-                              <3 x float> <float 41.0, float 42.0, float 43.0>,
-                              metadata !"round.dynamic",
-                              metadata !"fpexcept.strict")
-  ret <3 x float> %max
-}
-
-define <3 x double> @constrained_vector_max_v3f64() {
-; PC64LE-LABEL: constrained_vector_max_v3f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -80(1)
-; PC64LE-NEXT:    .cfi_def_cfa_offset 80
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    .cfi_offset v31, -16
-; PC64LE-NEXT:    li 3, 64
-; PC64LE-NEXT:    addis 4, 2, .LCPI88_1 at toc@ha
-; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI88_0 at toc@ha
-; PC64LE-NEXT:    lfs 2, .LCPI88_1 at toc@l(4)
-; PC64LE-NEXT:    lfs 1, .LCPI88_0 at toc@l(3)
-; PC64LE-NEXT:    bl fmax
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    addis 4, 2, .LCPI88_3 at toc@ha
-; PC64LE-NEXT:    stxvd2x 1, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI88_2 at toc@ha
-; PC64LE-NEXT:    lfs 2, .LCPI88_3 at toc@l(4)
-; PC64LE-NEXT:    lfs 1, .LCPI88_2 at toc@l(3)
-; PC64LE-NEXT:    bl fmax
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    addis 4, 2, .LCPI88_5 at toc@ha
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    lxvd2x 0, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    addis 3, 2, .LCPI88_4 at toc@ha
-; PC64LE-NEXT:    lfs 2, .LCPI88_5 at toc@l(4)
-; PC64LE-NEXT:    xxmrghd 63, 1, 0
-; PC64LE-NEXT:    lfs 1, .LCPI88_4 at toc@l(3)
-; PC64LE-NEXT:    bl fmax
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 64
-; PC64LE-NEXT:    fmr 3, 1
-; PC64LE-NEXT:    xxlor 1, 63, 63
-; PC64LE-NEXT:    xxlor 2, 63, 63
-; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    addi 1, 1, 80
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_max_v3f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -64(1)
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 64
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    .cfi_offset v31, -16
-; PC64LE9-NEXT:    addis 3, 2, .LCPI88_0 at toc@ha
-; PC64LE9-NEXT:    lfs 1, .LCPI88_0 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI88_1 at toc@ha
-; PC64LE9-NEXT:    lfs 2, .LCPI88_1 at toc@l(3)
-; PC64LE9-NEXT:    stxv 63, 48(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    bl fmax
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI88_2 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    stxv 1, 32(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    lfs 1, .LCPI88_2 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI88_3 at toc@ha
-; PC64LE9-NEXT:    lfs 2, .LCPI88_3 at toc@l(3)
-; PC64LE9-NEXT:    bl fmax
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    lxv 0, 32(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    addis 3, 2, .LCPI88_4 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    xxmrghd 63, 1, 0
-; PC64LE9-NEXT:    lfs 1, .LCPI88_4 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI88_5 at toc@ha
-; PC64LE9-NEXT:    lfs 2, .LCPI88_5 at toc@l(3)
-; PC64LE9-NEXT:    bl fmax
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    fmr 3, 1
-; PC64LE9-NEXT:    xscpsgndp 1, 63, 63
-; PC64LE9-NEXT:    xscpsgndp 2, 63, 63
-; PC64LE9-NEXT:    lxv 63, 48(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    addi 1, 1, 64
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_max_v3f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -128(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 128
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f30, -16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI88_0 at toc@ha
-; PC64-NEXT:    stfd 30, 112(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 31, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfs 1, .LCPI88_0 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI88_1 at toc@ha
-; PC64-NEXT:    lfs 2, .LCPI88_1 at toc@l(3)
-; PC64-NEXT:    bl fmax
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI88_2 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfs 1, .LCPI88_2 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI88_3 at toc@ha
-; PC64-NEXT:    lfs 2, .LCPI88_3 at toc@l(3)
-; PC64-NEXT:    bl fmax
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI88_4 at toc@ha
-; PC64-NEXT:    fmr 30, 1
-; PC64-NEXT:    lfs 1, .LCPI88_4 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI88_5 at toc@ha
-; PC64-NEXT:    lfs 2, .LCPI88_5 at toc@l(3)
-; PC64-NEXT:    bl fmax
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 3, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    fmr 2, 30
-; PC64-NEXT:    lfd 31, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 30, 112(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 128
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %max = call <3 x double> @llvm.experimental.constrained.maxnum.v3f64(
-                          <3 x double> <double 43.0, double 44.0, double 45.0>,
-                          <3 x double> <double 40.0, double 41.0, double 42.0>,
-                          metadata !"round.dynamic",
-                          metadata !"fpexcept.strict")
-  ret <3 x double> %max
-}
-
-define <4 x double> @constrained_vector_maxnum_v4f64() {
-; PC64LE-LABEL: constrained_vector_maxnum_v4f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -80(1)
-; PC64LE-NEXT:    .cfi_def_cfa_offset 80
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    .cfi_offset v31, -16
-; PC64LE-NEXT:    li 3, 64
-; PC64LE-NEXT:    addis 4, 2, .LCPI89_1 at toc@ha
-; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI89_0 at toc@ha
-; PC64LE-NEXT:    lfs 2, .LCPI89_1 at toc@l(4)
-; PC64LE-NEXT:    lfs 1, .LCPI89_0 at toc@l(3)
-; PC64LE-NEXT:    bl fmax
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    addis 4, 2, .LCPI89_3 at toc@ha
-; PC64LE-NEXT:    stxvd2x 1, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI89_2 at toc@ha
-; PC64LE-NEXT:    lfs 2, .LCPI89_3 at toc@l(4)
-; PC64LE-NEXT:    lfs 1, .LCPI89_2 at toc@l(3)
-; PC64LE-NEXT:    bl fmax
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    addis 4, 2, .LCPI89_5 at toc@ha
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    lxvd2x 0, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    addis 3, 2, .LCPI89_4 at toc@ha
-; PC64LE-NEXT:    lfs 2, .LCPI89_5 at toc@l(4)
-; PC64LE-NEXT:    xxmrghd 63, 1, 0
-; PC64LE-NEXT:    lfs 1, .LCPI89_4 at toc@l(3)
-; PC64LE-NEXT:    bl fmax
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    addis 4, 2, .LCPI89_7 at toc@ha
-; PC64LE-NEXT:    stxvd2x 1, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI89_6 at toc@ha
-; PC64LE-NEXT:    lfs 2, .LCPI89_7 at toc@l(4)
-; PC64LE-NEXT:    lfs 1, .LCPI89_6 at toc@l(3)
-; PC64LE-NEXT:    bl fmax
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    vmr 2, 31
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    lxvd2x 0, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    li 3, 64
-; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    xxmrghd 35, 1, 0
-; PC64LE-NEXT:    addi 1, 1, 80
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_maxnum_v4f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -64(1)
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 64
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    .cfi_offset v31, -16
-; PC64LE9-NEXT:    addis 3, 2, .LCPI89_0 at toc@ha
-; PC64LE9-NEXT:    lfs 1, .LCPI89_0 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI89_1 at toc@ha
-; PC64LE9-NEXT:    lfs 2, .LCPI89_1 at toc@l(3)
-; PC64LE9-NEXT:    stxv 63, 48(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    bl fmax
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI89_2 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    stxv 1, 32(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    lfs 1, .LCPI89_2 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI89_3 at toc@ha
-; PC64LE9-NEXT:    lfs 2, .LCPI89_3 at toc@l(3)
-; PC64LE9-NEXT:    bl fmax
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    lxv 0, 32(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    addis 3, 2, .LCPI89_4 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    xxmrghd 63, 1, 0
-; PC64LE9-NEXT:    lfs 1, .LCPI89_4 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI89_5 at toc@ha
-; PC64LE9-NEXT:    lfs 2, .LCPI89_5 at toc@l(3)
-; PC64LE9-NEXT:    bl fmax
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI89_6 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    stxv 1, 32(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    lfs 1, .LCPI89_6 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI89_7 at toc@ha
-; PC64LE9-NEXT:    lfs 2, .LCPI89_7 at toc@l(3)
-; PC64LE9-NEXT:    bl fmax
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    lxv 0, 32(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    vmr 2, 31
-; PC64LE9-NEXT:    lxv 63, 48(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    xxmrghd 35, 1, 0
-; PC64LE9-NEXT:    addi 1, 1, 64
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_maxnum_v4f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -144(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 144
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f29, -24
-; PC64-NEXT:    .cfi_offset f30, -16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI89_0 at toc@ha
-; PC64-NEXT:    stfd 29, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 30, 128(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 31, 136(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfs 1, .LCPI89_0 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI89_1 at toc@ha
-; PC64-NEXT:    lfs 2, .LCPI89_1 at toc@l(3)
-; PC64-NEXT:    bl fmax
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI89_2 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfs 1, .LCPI89_2 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI89_3 at toc@ha
-; PC64-NEXT:    lfs 2, .LCPI89_3 at toc@l(3)
-; PC64-NEXT:    bl fmax
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI89_4 at toc@ha
-; PC64-NEXT:    fmr 30, 1
-; PC64-NEXT:    lfs 1, .LCPI89_4 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI89_5 at toc@ha
-; PC64-NEXT:    lfs 2, .LCPI89_5 at toc@l(3)
-; PC64-NEXT:    bl fmax
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI89_6 at toc@ha
-; PC64-NEXT:    fmr 29, 1
-; PC64-NEXT:    lfs 1, .LCPI89_6 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI89_7 at toc@ha
-; PC64-NEXT:    lfs 2, .LCPI89_7 at toc@l(3)
-; PC64-NEXT:    bl fmax
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 4, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    fmr 2, 30
-; PC64-NEXT:    fmr 3, 29
-; PC64-NEXT:    lfd 31, 136(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 30, 128(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 29, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 144
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %max = call <4 x double> @llvm.experimental.constrained.maxnum.v4f64(
-                                <4 x double> <double 44.0, double 45.0,
-                                              double 46.0, double 47.0>,
-                                <4 x double> <double 40.0, double 41.0,
-                                              double 42.0, double 43.0>,
-                                metadata !"round.dynamic",
-                                metadata !"fpexcept.strict")
-  ret <4 x double> %max
-}
-
-define <1 x float> @constrained_vector_minnum_v1f32() {
-; PC64LE-LABEL: constrained_vector_minnum_v1f32:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -32(1)
-; PC64LE-NEXT:    .cfi_def_cfa_offset 32
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    addis 3, 2, .LCPI90_0 at toc@ha
-; PC64LE-NEXT:    addis 4, 2, .LCPI90_1 at toc@ha
-; PC64LE-NEXT:    lfs 1, .LCPI90_0 at toc@l(3)
-; PC64LE-NEXT:    lfs 2, .LCPI90_1 at toc@l(4)
-; PC64LE-NEXT:    bl fminf
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    xscvdpspn 0, 1
-; PC64LE-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE-NEXT:    addi 1, 1, 32
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_minnum_v1f32:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -32(1)
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 32
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    addis 3, 2, .LCPI90_0 at toc@ha
-; PC64LE9-NEXT:    lfs 1, .LCPI90_0 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI90_1 at toc@ha
-; PC64LE9-NEXT:    lfs 2, .LCPI90_1 at toc@l(3)
-; PC64LE9-NEXT:    bl fminf
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    xscvdpspn 0, 1
-; PC64LE9-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE9-NEXT:    addi 1, 1, 32
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_minnum_v1f32:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -112(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 112
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    addis 3, 2, .LCPI90_0 at toc@ha
-; PC64-NEXT:    lfs 1, .LCPI90_0 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI90_1 at toc@ha
-; PC64-NEXT:    lfs 2, .LCPI90_1 at toc@l(3)
-; PC64-NEXT:    bl fminf
-; PC64-NEXT:    nop
-; PC64-NEXT:    addi 1, 1, 112
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
- entry:
-  %min = call <1 x float> @llvm.experimental.constrained.minnum.v1f32(
-                               <1 x float> <float 42.0>, <1 x float> <float 41.0>,
-                               metadata !"round.dynamic",
-                               metadata !"fpexcept.strict")
-  ret <1 x float> %min
-}
-
-define <2 x double> @constrained_vector_minnum_v2f64() {
-; PC64LE-LABEL: constrained_vector_minnum_v2f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -64(1)
-; PC64LE-NEXT:    .cfi_def_cfa_offset 64
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    addis 3, 2, .LCPI91_0 at toc@ha
-; PC64LE-NEXT:    addis 4, 2, .LCPI91_1 at toc@ha
-; PC64LE-NEXT:    lfs 1, .LCPI91_0 at toc@l(3)
-; PC64LE-NEXT:    lfs 2, .LCPI91_1 at toc@l(4)
-; PC64LE-NEXT:    bl fmin
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    addis 4, 2, .LCPI91_3 at toc@ha
-; PC64LE-NEXT:    stxvd2x 1, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI91_2 at toc@ha
-; PC64LE-NEXT:    lfs 2, .LCPI91_3 at toc@l(4)
-; PC64LE-NEXT:    lfs 1, .LCPI91_2 at toc@l(3)
-; PC64LE-NEXT:    bl fmin
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    lxvd2x 0, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    xxmrghd 34, 1, 0
-; PC64LE-NEXT:    addi 1, 1, 64
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_minnum_v2f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -48(1)
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 48
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    addis 3, 2, .LCPI91_0 at toc@ha
-; PC64LE9-NEXT:    lfs 1, .LCPI91_0 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI91_1 at toc@ha
-; PC64LE9-NEXT:    lfs 2, .LCPI91_1 at toc@l(3)
-; PC64LE9-NEXT:    bl fmin
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI91_2 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    stxv 1, 32(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    lfs 1, .LCPI91_2 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI91_3 at toc@ha
-; PC64LE9-NEXT:    lfs 2, .LCPI91_3 at toc@l(3)
-; PC64LE9-NEXT:    bl fmin
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    lxv 0, 32(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    xxmrghd 34, 1, 0
-; PC64LE9-NEXT:    addi 1, 1, 48
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_minnum_v2f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -128(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 128
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI91_0 at toc@ha
-; PC64-NEXT:    stfd 31, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfs 1, .LCPI91_0 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI91_1 at toc@ha
-; PC64-NEXT:    lfs 2, .LCPI91_1 at toc@l(3)
-; PC64-NEXT:    bl fmin
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI91_2 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfs 1, .LCPI91_2 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI91_3 at toc@ha
-; PC64-NEXT:    lfs 2, .LCPI91_3 at toc@l(3)
-; PC64-NEXT:    bl fmin
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 2, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    lfd 31, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 128
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %min = call <2 x double> @llvm.experimental.constrained.minnum.v2f64(
-                                <2 x double> <double 43.0, double 42.0>,
-                                <2 x double> <double 41.0, double 40.0>,
-                                metadata !"round.dynamic",
-                                metadata !"fpexcept.strict")
-  ret <2 x double> %min
-}
-
-define <3 x float> @constrained_vector_minnum_v3f32() {
-; PC64LE-LABEL: constrained_vector_minnum_v3f32:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    .cfi_def_cfa_offset 64
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    .cfi_offset f29, -24
-; PC64LE-NEXT:    .cfi_offset f30, -16
-; PC64LE-NEXT:    .cfi_offset f31, -8
-; PC64LE-NEXT:    stfd 29, -24(1) # 8-byte Folded Spill
-; PC64LE-NEXT:    stfd 30, -16(1) # 8-byte Folded Spill
-; PC64LE-NEXT:    stfd 31, -8(1) # 8-byte Folded Spill
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -64(1)
-; PC64LE-NEXT:    addis 4, 2, .LCPI92_1 at toc@ha
-; PC64LE-NEXT:    addis 3, 2, .LCPI92_0 at toc@ha
-; PC64LE-NEXT:    lfs 31, .LCPI92_1 at toc@l(4)
-; PC64LE-NEXT:    lfs 1, .LCPI92_0 at toc@l(3)
-; PC64LE-NEXT:    fmr 2, 31
-; PC64LE-NEXT:    bl fminf
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    addis 3, 2, .LCPI92_2 at toc@ha
-; PC64LE-NEXT:    addis 4, 2, .LCPI92_3 at toc@ha
-; PC64LE-NEXT:    fmr 30, 1
-; PC64LE-NEXT:    lfs 1, .LCPI92_2 at toc@l(3)
-; PC64LE-NEXT:    lfs 2, .LCPI92_3 at toc@l(4)
-; PC64LE-NEXT:    bl fminf
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    fmr 29, 1
-; PC64LE-NEXT:    addis 3, 2, .LCPI92_4 at toc@ha
-; PC64LE-NEXT:    fmr 1, 31
-; PC64LE-NEXT:    lfs 2, .LCPI92_4 at toc@l(3)
-; PC64LE-NEXT:    bl fminf
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    xscvdpspn 0, 29
-; PC64LE-NEXT:    addis 3, 2, .LCPI92_5 at toc@ha
-; PC64LE-NEXT:    xscvdpspn 1, 1
-; PC64LE-NEXT:    addi 3, 3, .LCPI92_5 at toc@l
-; PC64LE-NEXT:    lvx 4, 0, 3
-; PC64LE-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE-NEXT:    xscvdpspn 0, 30
-; PC64LE-NEXT:    xxsldwi 35, 1, 1, 1
-; PC64LE-NEXT:    vmrglw 2, 2, 3
-; PC64LE-NEXT:    xxsldwi 35, 0, 0, 1
-; PC64LE-NEXT:    vperm 2, 3, 2, 4
-; PC64LE-NEXT:    addi 1, 1, 64
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    lfd 31, -8(1) # 8-byte Folded Reload
-; PC64LE-NEXT:    lfd 30, -16(1) # 8-byte Folded Reload
-; PC64LE-NEXT:    lfd 29, -24(1) # 8-byte Folded Reload
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_minnum_v3f32:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 64
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    .cfi_offset f29, -24
-; PC64LE9-NEXT:    .cfi_offset f30, -16
-; PC64LE9-NEXT:    .cfi_offset f31, -8
-; PC64LE9-NEXT:    stfd 29, -24(1) # 8-byte Folded Spill
-; PC64LE9-NEXT:    stfd 30, -16(1) # 8-byte Folded Spill
-; PC64LE9-NEXT:    stfd 31, -8(1) # 8-byte Folded Spill
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -64(1)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI92_0 at toc@ha
-; PC64LE9-NEXT:    lfs 1, .LCPI92_0 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI92_1 at toc@ha
-; PC64LE9-NEXT:    lfs 31, .LCPI92_1 at toc@l(3)
-; PC64LE9-NEXT:    fmr 2, 31
-; PC64LE9-NEXT:    bl fminf
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI92_2 at toc@ha
-; PC64LE9-NEXT:    fmr 30, 1
-; PC64LE9-NEXT:    lfs 1, .LCPI92_2 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI92_3 at toc@ha
-; PC64LE9-NEXT:    lfs 2, .LCPI92_3 at toc@l(3)
-; PC64LE9-NEXT:    bl fminf
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI92_4 at toc@ha
-; PC64LE9-NEXT:    lfs 2, .LCPI92_4 at toc@l(3)
-; PC64LE9-NEXT:    fmr 29, 1
-; PC64LE9-NEXT:    fmr 1, 31
-; PC64LE9-NEXT:    bl fminf
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    xscvdpspn 0, 1
-; PC64LE9-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE9-NEXT:    xscvdpspn 0, 29
-; PC64LE9-NEXT:    xxsldwi 35, 0, 0, 1
-; PC64LE9-NEXT:    xscvdpspn 0, 30
-; PC64LE9-NEXT:    addis 3, 2, .LCPI92_5 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI92_5 at toc@l
-; PC64LE9-NEXT:    lxvx 36, 0, 3
-; PC64LE9-NEXT:    vmrglw 2, 3, 2
-; PC64LE9-NEXT:    xxsldwi 35, 0, 0, 1
-; PC64LE9-NEXT:    vperm 2, 3, 2, 4
-; PC64LE9-NEXT:    addi 1, 1, 64
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    lfd 31, -8(1) # 8-byte Folded Reload
-; PC64LE9-NEXT:    lfd 30, -16(1) # 8-byte Folded Reload
-; PC64LE9-NEXT:    lfd 29, -24(1) # 8-byte Folded Reload
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_minnum_v3f32:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -144(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 144
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f29, -24
-; PC64-NEXT:    .cfi_offset f30, -16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI92_0 at toc@ha
-; PC64-NEXT:    stfd 31, 136(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 29, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 30, 128(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfs 31, .LCPI92_0 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI92_1 at toc@ha
-; PC64-NEXT:    lfs 2, .LCPI92_1 at toc@l(3)
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    bl fminf
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI92_2 at toc@ha
-; PC64-NEXT:    fmr 30, 1
-; PC64-NEXT:    lfs 1, .LCPI92_2 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI92_3 at toc@ha
-; PC64-NEXT:    lfs 2, .LCPI92_3 at toc@l(3)
-; PC64-NEXT:    bl fminf
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI92_4 at toc@ha
-; PC64-NEXT:    fmr 29, 1
-; PC64-NEXT:    lfs 1, .LCPI92_4 at toc@l(3)
-; PC64-NEXT:    fmr 2, 31
-; PC64-NEXT:    bl fminf
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 3, 1
-; PC64-NEXT:    fmr 1, 30
-; PC64-NEXT:    fmr 2, 29
-; PC64-NEXT:    lfd 31, 136(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 30, 128(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 29, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 144
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %min = call <3 x float> @llvm.experimental.constrained.minnum.v3f32(
-                              <3 x float> <float 43.0, float 44.0, float 45.0>,
-                              <3 x float> <float 41.0, float 42.0, float 43.0>,
-                              metadata !"round.dynamic",
-                              metadata !"fpexcept.strict")
-  ret <3 x float> %min
-}
-
-define <3 x double> @constrained_vector_min_v3f64() {
-; PC64LE-LABEL: constrained_vector_min_v3f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -80(1)
-; PC64LE-NEXT:    .cfi_def_cfa_offset 80
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    .cfi_offset v31, -16
-; PC64LE-NEXT:    li 3, 64
-; PC64LE-NEXT:    addis 4, 2, .LCPI93_1 at toc@ha
-; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI93_0 at toc@ha
-; PC64LE-NEXT:    lfs 2, .LCPI93_1 at toc@l(4)
-; PC64LE-NEXT:    lfs 1, .LCPI93_0 at toc@l(3)
-; PC64LE-NEXT:    bl fmin
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    addis 4, 2, .LCPI93_3 at toc@ha
-; PC64LE-NEXT:    stxvd2x 1, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI93_2 at toc@ha
-; PC64LE-NEXT:    lfs 2, .LCPI93_3 at toc@l(4)
-; PC64LE-NEXT:    lfs 1, .LCPI93_2 at toc@l(3)
-; PC64LE-NEXT:    bl fmin
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    addis 4, 2, .LCPI93_5 at toc@ha
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    lxvd2x 0, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    addis 3, 2, .LCPI93_4 at toc@ha
-; PC64LE-NEXT:    lfs 2, .LCPI93_5 at toc@l(4)
-; PC64LE-NEXT:    xxmrghd 63, 1, 0
-; PC64LE-NEXT:    lfs 1, .LCPI93_4 at toc@l(3)
-; PC64LE-NEXT:    bl fmin
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 64
-; PC64LE-NEXT:    fmr 3, 1
-; PC64LE-NEXT:    xxlor 1, 63, 63
-; PC64LE-NEXT:    xxlor 2, 63, 63
-; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    addi 1, 1, 80
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_min_v3f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -64(1)
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 64
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    .cfi_offset v31, -16
-; PC64LE9-NEXT:    addis 3, 2, .LCPI93_0 at toc@ha
-; PC64LE9-NEXT:    lfs 1, .LCPI93_0 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI93_1 at toc@ha
-; PC64LE9-NEXT:    lfs 2, .LCPI93_1 at toc@l(3)
-; PC64LE9-NEXT:    stxv 63, 48(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    bl fmin
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI93_2 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    stxv 1, 32(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    lfs 1, .LCPI93_2 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI93_3 at toc@ha
-; PC64LE9-NEXT:    lfs 2, .LCPI93_3 at toc@l(3)
-; PC64LE9-NEXT:    bl fmin
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    lxv 0, 32(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    addis 3, 2, .LCPI93_4 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    xxmrghd 63, 1, 0
-; PC64LE9-NEXT:    lfs 1, .LCPI93_4 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI93_5 at toc@ha
-; PC64LE9-NEXT:    lfs 2, .LCPI93_5 at toc@l(3)
-; PC64LE9-NEXT:    bl fmin
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    fmr 3, 1
-; PC64LE9-NEXT:    xscpsgndp 1, 63, 63
-; PC64LE9-NEXT:    xscpsgndp 2, 63, 63
-; PC64LE9-NEXT:    lxv 63, 48(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    addi 1, 1, 64
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_min_v3f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -128(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 128
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f30, -16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI93_0 at toc@ha
-; PC64-NEXT:    stfd 30, 112(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 31, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfs 1, .LCPI93_0 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI93_1 at toc@ha
-; PC64-NEXT:    lfs 2, .LCPI93_1 at toc@l(3)
-; PC64-NEXT:    bl fmin
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI93_2 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfs 1, .LCPI93_2 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI93_3 at toc@ha
-; PC64-NEXT:    lfs 2, .LCPI93_3 at toc@l(3)
-; PC64-NEXT:    bl fmin
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI93_4 at toc@ha
-; PC64-NEXT:    fmr 30, 1
-; PC64-NEXT:    lfs 1, .LCPI93_4 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI93_5 at toc@ha
-; PC64-NEXT:    lfs 2, .LCPI93_5 at toc@l(3)
-; PC64-NEXT:    bl fmin
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 3, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    fmr 2, 30
-; PC64-NEXT:    lfd 31, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 30, 112(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 128
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
- %min = call <3 x double> @llvm.experimental.constrained.minnum.v3f64(
-                          <3 x double> <double 43.0, double 44.0, double 45.0>,
-                          <3 x double> <double 40.0, double 41.0, double 42.0>,
-                          metadata !"round.dynamic",
-                          metadata !"fpexcept.strict")
-  ret <3 x double> %min
-}
-
-define <4 x double> @constrained_vector_minnum_v4f64() {
-; PC64LE-LABEL: constrained_vector_minnum_v4f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    mflr 0
-; PC64LE-NEXT:    std 0, 16(1)
-; PC64LE-NEXT:    stdu 1, -80(1)
-; PC64LE-NEXT:    .cfi_def_cfa_offset 80
-; PC64LE-NEXT:    .cfi_offset lr, 16
-; PC64LE-NEXT:    .cfi_offset v31, -16
-; PC64LE-NEXT:    li 3, 64
-; PC64LE-NEXT:    addis 4, 2, .LCPI94_1 at toc@ha
-; PC64LE-NEXT:    stxvd2x 63, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI94_0 at toc@ha
-; PC64LE-NEXT:    lfs 2, .LCPI94_1 at toc@l(4)
-; PC64LE-NEXT:    lfs 1, .LCPI94_0 at toc@l(3)
-; PC64LE-NEXT:    bl fmin
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    addis 4, 2, .LCPI94_3 at toc@ha
-; PC64LE-NEXT:    stxvd2x 1, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI94_2 at toc@ha
-; PC64LE-NEXT:    lfs 2, .LCPI94_3 at toc@l(4)
-; PC64LE-NEXT:    lfs 1, .LCPI94_2 at toc@l(3)
-; PC64LE-NEXT:    bl fmin
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    addis 4, 2, .LCPI94_5 at toc@ha
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    lxvd2x 0, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    addis 3, 2, .LCPI94_4 at toc@ha
-; PC64LE-NEXT:    lfs 2, .LCPI94_5 at toc@l(4)
-; PC64LE-NEXT:    xxmrghd 63, 1, 0
-; PC64LE-NEXT:    lfs 1, .LCPI94_4 at toc@l(3)
-; PC64LE-NEXT:    bl fmin
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    addis 4, 2, .LCPI94_7 at toc@ha
-; PC64LE-NEXT:    stxvd2x 1, 1, 3 # 16-byte Folded Spill
-; PC64LE-NEXT:    addis 3, 2, .LCPI94_6 at toc@ha
-; PC64LE-NEXT:    lfs 2, .LCPI94_7 at toc@l(4)
-; PC64LE-NEXT:    lfs 1, .LCPI94_6 at toc@l(3)
-; PC64LE-NEXT:    bl fmin
-; PC64LE-NEXT:    nop
-; PC64LE-NEXT:    li 3, 48
-; PC64LE-NEXT:    vmr 2, 31
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE-NEXT:    lxvd2x 0, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    li 3, 64
-; PC64LE-NEXT:    lxvd2x 63, 1, 3 # 16-byte Folded Reload
-; PC64LE-NEXT:    xxmrghd 35, 1, 0
-; PC64LE-NEXT:    addi 1, 1, 80
-; PC64LE-NEXT:    ld 0, 16(1)
-; PC64LE-NEXT:    mtlr 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_minnum_v4f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    mflr 0
-; PC64LE9-NEXT:    std 0, 16(1)
-; PC64LE9-NEXT:    stdu 1, -64(1)
-; PC64LE9-NEXT:    .cfi_def_cfa_offset 64
-; PC64LE9-NEXT:    .cfi_offset lr, 16
-; PC64LE9-NEXT:    .cfi_offset v31, -16
-; PC64LE9-NEXT:    addis 3, 2, .LCPI94_0 at toc@ha
-; PC64LE9-NEXT:    lfs 1, .LCPI94_0 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI94_1 at toc@ha
-; PC64LE9-NEXT:    lfs 2, .LCPI94_1 at toc@l(3)
-; PC64LE9-NEXT:    stxv 63, 48(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    bl fmin
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI94_2 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    stxv 1, 32(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    lfs 1, .LCPI94_2 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI94_3 at toc@ha
-; PC64LE9-NEXT:    lfs 2, .LCPI94_3 at toc@l(3)
-; PC64LE9-NEXT:    bl fmin
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    lxv 0, 32(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    addis 3, 2, .LCPI94_4 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    xxmrghd 63, 1, 0
-; PC64LE9-NEXT:    lfs 1, .LCPI94_4 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI94_5 at toc@ha
-; PC64LE9-NEXT:    lfs 2, .LCPI94_5 at toc@l(3)
-; PC64LE9-NEXT:    bl fmin
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    addis 3, 2, .LCPI94_6 at toc@ha
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    stxv 1, 32(1) # 16-byte Folded Spill
-; PC64LE9-NEXT:    lfs 1, .LCPI94_6 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI94_7 at toc@ha
-; PC64LE9-NEXT:    lfs 2, .LCPI94_7 at toc@l(3)
-; PC64LE9-NEXT:    bl fmin
-; PC64LE9-NEXT:    nop
-; PC64LE9-NEXT:    lxv 0, 32(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    vmr 2, 31
-; PC64LE9-NEXT:    lxv 63, 48(1) # 16-byte Folded Reload
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 def $vsl1
-; PC64LE9-NEXT:    xxmrghd 35, 1, 0
-; PC64LE9-NEXT:    addi 1, 1, 64
-; PC64LE9-NEXT:    ld 0, 16(1)
-; PC64LE9-NEXT:    mtlr 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_minnum_v4f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -144(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 144
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f29, -24
-; PC64-NEXT:    .cfi_offset f30, -16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI94_0 at toc@ha
-; PC64-NEXT:    stfd 29, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 30, 128(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 31, 136(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfs 1, .LCPI94_0 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI94_1 at toc@ha
-; PC64-NEXT:    lfs 2, .LCPI94_1 at toc@l(3)
-; PC64-NEXT:    bl fmin
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI94_2 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfs 1, .LCPI94_2 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI94_3 at toc@ha
-; PC64-NEXT:    lfs 2, .LCPI94_3 at toc@l(3)
-; PC64-NEXT:    bl fmin
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI94_4 at toc@ha
-; PC64-NEXT:    fmr 30, 1
-; PC64-NEXT:    lfs 1, .LCPI94_4 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI94_5 at toc@ha
-; PC64-NEXT:    lfs 2, .LCPI94_5 at toc@l(3)
-; PC64-NEXT:    bl fmin
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI94_6 at toc@ha
-; PC64-NEXT:    fmr 29, 1
-; PC64-NEXT:    lfs 1, .LCPI94_6 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI94_7 at toc@ha
-; PC64-NEXT:    lfs 2, .LCPI94_7 at toc@l(3)
-; PC64-NEXT:    bl fmin
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 4, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    fmr 2, 30
-; PC64-NEXT:    fmr 3, 29
-; PC64-NEXT:    lfd 31, 136(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 30, 128(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 29, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 144
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %min = call <4 x double> @llvm.experimental.constrained.minnum.v4f64(
-                                <4 x double> <double 44.0, double 45.0,
-                                              double 46.0, double 47.0>,
-                                <4 x double> <double 40.0, double 41.0,
-                                              double 42.0, double 43.0>,
-                                metadata !"round.dynamic",
-                                metadata !"fpexcept.strict")
-  ret <4 x double> %min
-}
-
-define <1 x float> @constrained_vector_fptrunc_v1f64() {
-; PC64LE-LABEL: constrained_vector_fptrunc_v1f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    addis 3, 2, .LCPI95_0 at toc@ha
-; PC64LE-NEXT:    lfd 0, .LCPI95_0 at toc@l(3)
-; PC64LE-NEXT:    frsp 0, 0
-; PC64LE-NEXT:    xscvdpspn 0, 0
-; PC64LE-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_fptrunc_v1f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    addis 3, 2, .LCPI95_0 at toc@ha
-; PC64LE9-NEXT:    lfd 0, .LCPI95_0 at toc@l(3)
-; PC64LE9-NEXT:    frsp 0, 0
-; PC64LE9-NEXT:    xscvdpspn 0, 0
-; PC64LE9-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_fptrunc_v1f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    addis 3, 2, .LCPI95_0 at toc@ha
-; PC64-NEXT:    lfd 0, .LCPI95_0 at toc@l(3)
-; PC64-NEXT:    frsp 1, 0
-; PC64-NEXT:    blr
-entry:
-  %result = call <1 x float> @llvm.experimental.constrained.fptrunc.v1f32.v1f64(
-                                <1 x double><double 42.1>,
-                                metadata !"round.dynamic",
-                                metadata !"fpexcept.strict")
-  ret <1 x float> %result
-}
-
-define <2 x float> @constrained_vector_fptrunc_v2f64() {
-; PC64LE-LABEL: constrained_vector_fptrunc_v2f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    addis 3, 2, .LCPI96_0 at toc@ha
-; PC64LE-NEXT:    addis 4, 2, .LCPI96_1 at toc@ha
-; PC64LE-NEXT:    lfd 0, .LCPI96_0 at toc@l(3)
-; PC64LE-NEXT:    lfd 1, .LCPI96_1 at toc@l(4)
-; PC64LE-NEXT:    frsp 0, 0
-; PC64LE-NEXT:    frsp 1, 1
-; PC64LE-NEXT:    xscvdpspn 0, 0
-; PC64LE-NEXT:    xscvdpspn 1, 1
-; PC64LE-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE-NEXT:    xxsldwi 35, 1, 1, 1
-; PC64LE-NEXT:    vmrglw 2, 3, 2
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_fptrunc_v2f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    addis 3, 2, .LCPI96_0 at toc@ha
-; PC64LE9-NEXT:    lfd 0, .LCPI96_0 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI96_1 at toc@ha
-; PC64LE9-NEXT:    frsp 0, 0
-; PC64LE9-NEXT:    xscvdpspn 0, 0
-; PC64LE9-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE9-NEXT:    lfd 0, .LCPI96_1 at toc@l(3)
-; PC64LE9-NEXT:    frsp 0, 0
-; PC64LE9-NEXT:    xscvdpspn 0, 0
-; PC64LE9-NEXT:    xxsldwi 35, 0, 0, 1
-; PC64LE9-NEXT:    vmrglw 2, 3, 2
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_fptrunc_v2f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    addis 3, 2, .LCPI96_0 at toc@ha
-; PC64-NEXT:    lfd 0, .LCPI96_0 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI96_1 at toc@ha
-; PC64-NEXT:    lfd 2, .LCPI96_1 at toc@l(3)
-; PC64-NEXT:    frsp 1, 0
-; PC64-NEXT:    frsp 2, 2
-; PC64-NEXT:    blr
-entry:
-  %result = call <2 x float> @llvm.experimental.constrained.fptrunc.v2f32.v2f64(
-                                <2 x double><double 42.1, double 42.2>,
-                                metadata !"round.dynamic",
-                                metadata !"fpexcept.strict")
-  ret <2 x float> %result
-}
-
-define <3 x float> @constrained_vector_fptrunc_v3f64() {
-; PC64LE-LABEL: constrained_vector_fptrunc_v3f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    addis 3, 2, .LCPI97_0 at toc@ha
-; PC64LE-NEXT:    addis 4, 2, .LCPI97_1 at toc@ha
-; PC64LE-NEXT:    lfd 0, .LCPI97_0 at toc@l(3)
-; PC64LE-NEXT:    lfd 1, .LCPI97_1 at toc@l(4)
-; PC64LE-NEXT:    addis 3, 2, .LCPI97_3 at toc@ha
-; PC64LE-NEXT:    frsp 0, 0
-; PC64LE-NEXT:    lfd 2, .LCPI97_3 at toc@l(3)
-; PC64LE-NEXT:    addis 3, 2, .LCPI97_2 at toc@ha
-; PC64LE-NEXT:    frsp 1, 1
-; PC64LE-NEXT:    addi 3, 3, .LCPI97_2 at toc@l
-; PC64LE-NEXT:    frsp 2, 2
-; PC64LE-NEXT:    xscvdpspn 0, 0
-; PC64LE-NEXT:    xscvdpspn 1, 1
-; PC64LE-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE-NEXT:    xscvdpspn 0, 2
-; PC64LE-NEXT:    xxsldwi 35, 1, 1, 1
-; PC64LE-NEXT:    vmrglw 2, 3, 2
-; PC64LE-NEXT:    lvx 3, 0, 3
-; PC64LE-NEXT:    xxsldwi 36, 0, 0, 1
-; PC64LE-NEXT:    vperm 2, 4, 2, 3
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_fptrunc_v3f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    addis 3, 2, .LCPI97_0 at toc@ha
-; PC64LE9-NEXT:    lfd 0, .LCPI97_0 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI97_1 at toc@ha
-; PC64LE9-NEXT:    frsp 0, 0
-; PC64LE9-NEXT:    xscvdpspn 0, 0
-; PC64LE9-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE9-NEXT:    lfd 0, .LCPI97_1 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI97_2 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI97_2 at toc@l
-; PC64LE9-NEXT:    frsp 0, 0
-; PC64LE9-NEXT:    xscvdpspn 0, 0
-; PC64LE9-NEXT:    xxsldwi 35, 0, 0, 1
-; PC64LE9-NEXT:    vmrglw 2, 3, 2
-; PC64LE9-NEXT:    lxvx 35, 0, 3
-; PC64LE9-NEXT:    addis 3, 2, .LCPI97_3 at toc@ha
-; PC64LE9-NEXT:    lfd 0, .LCPI97_3 at toc@l(3)
-; PC64LE9-NEXT:    frsp 0, 0
-; PC64LE9-NEXT:    xscvdpspn 0, 0
-; PC64LE9-NEXT:    xxsldwi 36, 0, 0, 1
-; PC64LE9-NEXT:    vperm 2, 4, 2, 3
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_fptrunc_v3f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    addis 3, 2, .LCPI97_0 at toc@ha
-; PC64-NEXT:    lfd 0, .LCPI97_0 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI97_1 at toc@ha
-; PC64-NEXT:    lfd 2, .LCPI97_1 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI97_2 at toc@ha
-; PC64-NEXT:    lfd 3, .LCPI97_2 at toc@l(3)
-; PC64-NEXT:    frsp 1, 0
-; PC64-NEXT:    frsp 2, 2
-; PC64-NEXT:    frsp 3, 3
-; PC64-NEXT:    blr
-entry:
-  %result = call <3 x float> @llvm.experimental.constrained.fptrunc.v3f32.v3f64(
-                                <3 x double><double 42.1, double 42.2,
-                                             double 42.3>,
-                                metadata !"round.dynamic",
-                                metadata !"fpexcept.strict")
-  ret <3 x float> %result
-}
-
-define <4 x float> @constrained_vector_fptrunc_v4f64() {
-; PC64LE-LABEL: constrained_vector_fptrunc_v4f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    addis 3, 2, .LCPI98_0 at toc@ha
-; PC64LE-NEXT:    addis 4, 2, .LCPI98_1 at toc@ha
-; PC64LE-NEXT:    addis 5, 2, .LCPI98_2 at toc@ha
-; PC64LE-NEXT:    addis 6, 2, .LCPI98_3 at toc@ha
-; PC64LE-NEXT:    lfd 0, .LCPI98_0 at toc@l(3)
-; PC64LE-NEXT:    lfd 1, .LCPI98_1 at toc@l(4)
-; PC64LE-NEXT:    lfd 2, .LCPI98_2 at toc@l(5)
-; PC64LE-NEXT:    lfd 3, .LCPI98_3 at toc@l(6)
-; PC64LE-NEXT:    xxmrghd 0, 1, 0
-; PC64LE-NEXT:    xxmrghd 1, 3, 2
-; PC64LE-NEXT:    xvcvdpsp 34, 0
-; PC64LE-NEXT:    xvcvdpsp 35, 1
-; PC64LE-NEXT:    vmrgew 2, 3, 2
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_fptrunc_v4f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    addis 3, 2, .LCPI98_0 at toc@ha
-; PC64LE9-NEXT:    lfd 0, .LCPI98_0 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI98_1 at toc@ha
-; PC64LE9-NEXT:    lfd 1, .LCPI98_1 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI98_2 at toc@ha
-; PC64LE9-NEXT:    xxmrghd 0, 1, 0
-; PC64LE9-NEXT:    xvcvdpsp 34, 0
-; PC64LE9-NEXT:    lfd 0, .LCPI98_2 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI98_3 at toc@ha
-; PC64LE9-NEXT:    lfd 1, .LCPI98_3 at toc@l(3)
-; PC64LE9-NEXT:    xxmrghd 0, 1, 0
-; PC64LE9-NEXT:    xvcvdpsp 35, 0
-; PC64LE9-NEXT:    vmrgew 2, 3, 2
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_fptrunc_v4f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    addis 3, 2, .LCPI98_0 at toc@ha
-; PC64-NEXT:    lfd 0, .LCPI98_0 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI98_1 at toc@ha
-; PC64-NEXT:    lfd 2, .LCPI98_1 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI98_2 at toc@ha
-; PC64-NEXT:    lfd 3, .LCPI98_2 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI98_3 at toc@ha
-; PC64-NEXT:    frsp 1, 0
-; PC64-NEXT:    lfd 4, .LCPI98_3 at toc@l(3)
-; PC64-NEXT:    frsp 2, 2
-; PC64-NEXT:    frsp 3, 3
-; PC64-NEXT:    frsp 4, 4
-; PC64-NEXT:    blr
-entry:
-  %result = call <4 x float> @llvm.experimental.constrained.fptrunc.v4f32.v4f64(
-                                <4 x double><double 42.1, double 42.2,
-                                             double 42.3, double 42.4>,
-                                metadata !"round.dynamic",
-                                metadata !"fpexcept.strict")
-  ret <4 x float> %result
-}
-
-define <1 x double> @constrained_vector_fpext_v1f32() {
-; PC64LE-LABEL: constrained_vector_fpext_v1f32:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    addis 3, 2, .LCPI99_0 at toc@ha
-; PC64LE-NEXT:    lfs 0, .LCPI99_0 at toc@l(3)
-; PC64LE-NEXT:    xxspltd 34, 0, 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_fpext_v1f32:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    addis 3, 2, .LCPI99_0 at toc@ha
-; PC64LE9-NEXT:    lfs 0, .LCPI99_0 at toc@l(3)
-; PC64LE9-NEXT:    xxspltd 34, 0, 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_fpext_v1f32:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    addis 3, 2, .LCPI99_0 at toc@ha
-; PC64-NEXT:    lfs 1, .LCPI99_0 at toc@l(3)
-; PC64-NEXT:    blr
-entry:
-  %result = call <1 x double> @llvm.experimental.constrained.fpext.v1f64.v1f32(
-                                <1 x float><float 42.0>,
-                                metadata !"fpexcept.strict")
-  ret <1 x double> %result
-}
-
-define <2 x double> @constrained_vector_fpext_v2f32() {
-; PC64LE-LABEL: constrained_vector_fpext_v2f32:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    addis 3, 2, .LCPI100_0 at toc@ha
-; PC64LE-NEXT:    addis 4, 2, .LCPI100_1 at toc@ha
-; PC64LE-NEXT:    lfs 0, .LCPI100_0 at toc@l(3)
-; PC64LE-NEXT:    lfs 1, .LCPI100_1 at toc@l(4)
-; PC64LE-NEXT:    xxmrghd 34, 1, 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_fpext_v2f32:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    addis 3, 2, .LCPI100_0 at toc@ha
-; PC64LE9-NEXT:    lfs 0, .LCPI100_0 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI100_1 at toc@ha
-; PC64LE9-NEXT:    lfs 1, .LCPI100_1 at toc@l(3)
-; PC64LE9-NEXT:    xxmrghd 34, 1, 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_fpext_v2f32:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    addis 3, 2, .LCPI100_0 at toc@ha
-; PC64-NEXT:    lfs 1, .LCPI100_0 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI100_1 at toc@ha
-; PC64-NEXT:    lfs 2, .LCPI100_1 at toc@l(3)
-; PC64-NEXT:    blr
-entry:
-  %result = call <2 x double> @llvm.experimental.constrained.fpext.v2f64.v2f32(
-                                <2 x float><float 42.0, float 43.0>,
-                                metadata !"fpexcept.strict")
-  ret <2 x double> %result
-}
-
-define <3 x double> @constrained_vector_fpext_v3f32() {
-; PC64LE-LABEL: constrained_vector_fpext_v3f32:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    addis 3, 2, .LCPI101_0 at toc@ha
-; PC64LE-NEXT:    addis 4, 2, .LCPI101_1 at toc@ha
-; PC64LE-NEXT:    addis 5, 2, .LCPI101_2 at toc@ha
-; PC64LE-NEXT:    lfs 1, .LCPI101_0 at toc@l(3)
-; PC64LE-NEXT:    lfs 2, .LCPI101_1 at toc@l(4)
-; PC64LE-NEXT:    lfs 3, .LCPI101_2 at toc@l(5)
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_fpext_v3f32:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    addis 3, 2, .LCPI101_0 at toc@ha
-; PC64LE9-NEXT:    lfs 1, .LCPI101_0 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI101_1 at toc@ha
-; PC64LE9-NEXT:    lfs 2, .LCPI101_1 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI101_2 at toc@ha
-; PC64LE9-NEXT:    lfs 3, .LCPI101_2 at toc@l(3)
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_fpext_v3f32:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    addis 3, 2, .LCPI101_0 at toc@ha
-; PC64-NEXT:    lfs 1, .LCPI101_0 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI101_1 at toc@ha
-; PC64-NEXT:    lfs 2, .LCPI101_1 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI101_2 at toc@ha
-; PC64-NEXT:    lfs 3, .LCPI101_2 at toc@l(3)
-; PC64-NEXT:    blr
-entry:
-  %result = call <3 x double> @llvm.experimental.constrained.fpext.v3f64.v3f32(
-                                <3 x float><float 42.0, float 43.0,
-                                            float 44.0>,
-                                metadata !"fpexcept.strict")
-  ret <3 x double> %result
-}
-
-define <4 x double> @constrained_vector_fpext_v4f32() {
-; PC64LE-LABEL: constrained_vector_fpext_v4f32:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    addis 3, 2, .LCPI102_0 at toc@ha
-; PC64LE-NEXT:    addis 4, 2, .LCPI102_1 at toc@ha
-; PC64LE-NEXT:    addis 5, 2, .LCPI102_2 at toc@ha
-; PC64LE-NEXT:    addis 6, 2, .LCPI102_3 at toc@ha
-; PC64LE-NEXT:    lfs 0, .LCPI102_0 at toc@l(3)
-; PC64LE-NEXT:    lfs 1, .LCPI102_1 at toc@l(4)
-; PC64LE-NEXT:    lfs 2, .LCPI102_2 at toc@l(5)
-; PC64LE-NEXT:    lfs 3, .LCPI102_3 at toc@l(6)
-; PC64LE-NEXT:    xxmrghd 34, 1, 0
-; PC64LE-NEXT:    xxmrghd 35, 3, 2
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_fpext_v4f32:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    addis 3, 2, .LCPI102_0 at toc@ha
-; PC64LE9-NEXT:    lfs 0, .LCPI102_0 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI102_1 at toc@ha
-; PC64LE9-NEXT:    lfs 1, .LCPI102_1 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI102_2 at toc@ha
-; PC64LE9-NEXT:    xxmrghd 34, 1, 0
-; PC64LE9-NEXT:    lfs 0, .LCPI102_2 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI102_3 at toc@ha
-; PC64LE9-NEXT:    lfs 1, .LCPI102_3 at toc@l(3)
-; PC64LE9-NEXT:    xxmrghd 35, 1, 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_fpext_v4f32:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    addis 3, 2, .LCPI102_0 at toc@ha
-; PC64-NEXT:    lfs 1, .LCPI102_0 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI102_1 at toc@ha
-; PC64-NEXT:    lfs 2, .LCPI102_1 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI102_2 at toc@ha
-; PC64-NEXT:    lfs 3, .LCPI102_2 at toc@l(3)
-; PC64-NEXT:    addis 3, 2, .LCPI102_3 at toc@ha
-; PC64-NEXT:    lfs 4, .LCPI102_3 at toc@l(3)
-; PC64-NEXT:    blr
-entry:
-  %result = call <4 x double> @llvm.experimental.constrained.fpext.v4f64.v4f32(
-                                <4 x float><float 42.0, float 43.0,
-                                            float 44.0, float 45.0>,
-                                metadata !"fpexcept.strict")
-  ret <4 x double> %result
-}
-
-define <1 x float> @constrained_vector_ceil_v1f32() {
-; PC64LE-LABEL: constrained_vector_ceil_v1f32:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    addis 3, 2, .LCPI103_0 at toc@ha
-; PC64LE-NEXT:    lfs 0, .LCPI103_0 at toc@l(3)
-; PC64LE-NEXT:    frip 0, 0
-; PC64LE-NEXT:    xscvdpspn 0, 0
-; PC64LE-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_ceil_v1f32:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    addis 3, 2, .LCPI103_0 at toc@ha
-; PC64LE9-NEXT:    lfs 0, .LCPI103_0 at toc@l(3)
-; PC64LE9-NEXT:    frip 0, 0
-; PC64LE9-NEXT:    xscvdpspn 0, 0
-; PC64LE9-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_ceil_v1f32:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -112(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 112
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    addis 3, 2, .LCPI103_0 at toc@ha
-; PC64-NEXT:    lfs 1, .LCPI103_0 at toc@l(3)
-; PC64-NEXT:    bl ceilf
-; PC64-NEXT:    nop
-; PC64-NEXT:    addi 1, 1, 112
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %ceil = call <1 x float> @llvm.experimental.constrained.ceil.v1f32(
-                               <1 x float> <float 1.5>,
-                               metadata !"round.dynamic",
-                               metadata !"fpexcept.strict")
-  ret <1 x float> %ceil
-}
-
-define <2 x double> @constrained_vector_ceil_v2f64() {
-; PC64LE-LABEL: constrained_vector_ceil_v2f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    addis 3, 2, .LCPI104_0 at toc@ha
-; PC64LE-NEXT:    addi 3, 3, .LCPI104_0 at toc@l
-; PC64LE-NEXT:    lxvd2x 0, 0, 3
-; PC64LE-NEXT:    xxswapd 0, 0
-; PC64LE-NEXT:    xvrdpip 34, 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_ceil_v2f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    addis 3, 2, .LCPI104_0 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI104_0 at toc@l
-; PC64LE9-NEXT:    lxvx 0, 0, 3
-; PC64LE9-NEXT:    xvrdpip 34, 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_ceil_v2f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -128(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 128
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI104_0 at toc@ha
-; PC64-NEXT:    stfd 31, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfd 1, .LCPI104_0 at toc@l(3)
-; PC64-NEXT:    bl ceil
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI104_1 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfd 1, .LCPI104_1 at toc@l(3)
-; PC64-NEXT:    bl ceil
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 2, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    lfd 31, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 128
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %ceil = call <2 x double> @llvm.experimental.constrained.ceil.v2f64(
-                                <2 x double> <double 1.1, double 1.9>,
-                                metadata !"round.dynamic",
-                                metadata !"fpexcept.strict")
-  ret <2 x double> %ceil
-}
-
-define <3 x float> @constrained_vector_ceil_v3f32() {
-; PC64LE-LABEL: constrained_vector_ceil_v3f32:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    addis 3, 2, .LCPI105_2 at toc@ha
-; PC64LE-NEXT:    addis 4, 2, .LCPI105_1 at toc@ha
-; PC64LE-NEXT:    lfs 0, .LCPI105_2 at toc@l(3)
-; PC64LE-NEXT:    lfs 1, .LCPI105_1 at toc@l(4)
-; PC64LE-NEXT:    addis 3, 2, .LCPI105_0 at toc@ha
-; PC64LE-NEXT:    frip 0, 0
-; PC64LE-NEXT:    lfs 2, .LCPI105_0 at toc@l(3)
-; PC64LE-NEXT:    addis 3, 2, .LCPI105_3 at toc@ha
-; PC64LE-NEXT:    frip 1, 1
-; PC64LE-NEXT:    addi 3, 3, .LCPI105_3 at toc@l
-; PC64LE-NEXT:    frip 2, 2
-; PC64LE-NEXT:    xscvdpspn 0, 0
-; PC64LE-NEXT:    xscvdpspn 1, 1
-; PC64LE-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE-NEXT:    xscvdpspn 0, 2
-; PC64LE-NEXT:    xxsldwi 35, 1, 1, 1
-; PC64LE-NEXT:    vmrglw 2, 3, 2
-; PC64LE-NEXT:    lvx 3, 0, 3
-; PC64LE-NEXT:    xxsldwi 36, 0, 0, 1
-; PC64LE-NEXT:    vperm 2, 4, 2, 3
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_ceil_v3f32:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    addis 3, 2, .LCPI105_0 at toc@ha
-; PC64LE9-NEXT:    lfs 0, .LCPI105_0 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI105_1 at toc@ha
-; PC64LE9-NEXT:    lfs 1, .LCPI105_1 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI105_2 at toc@ha
-; PC64LE9-NEXT:    frip 0, 0
-; PC64LE9-NEXT:    lfs 2, .LCPI105_2 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI105_3 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI105_3 at toc@l
-; PC64LE9-NEXT:    frip 1, 1
-; PC64LE9-NEXT:    frip 2, 2
-; PC64LE9-NEXT:    xscvdpspn 0, 0
-; PC64LE9-NEXT:    xscvdpspn 1, 1
-; PC64LE9-NEXT:    xscvdpspn 2, 2
-; PC64LE9-NEXT:    xxsldwi 36, 0, 0, 1
-; PC64LE9-NEXT:    xxsldwi 35, 1, 1, 1
-; PC64LE9-NEXT:    xxsldwi 34, 2, 2, 1
-; PC64LE9-NEXT:    vmrglw 2, 3, 2
-; PC64LE9-NEXT:    lxvx 35, 0, 3
-; PC64LE9-NEXT:    vperm 2, 4, 2, 3
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_ceil_v3f32:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -128(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 128
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f30, -16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI105_0 at toc@ha
-; PC64-NEXT:    stfd 30, 112(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 31, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfs 1, .LCPI105_0 at toc@l(3)
-; PC64-NEXT:    bl ceilf
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI105_1 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfs 1, .LCPI105_1 at toc@l(3)
-; PC64-NEXT:    bl ceilf
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI105_2 at toc@ha
-; PC64-NEXT:    fmr 30, 1
-; PC64-NEXT:    lfs 1, .LCPI105_2 at toc@l(3)
-; PC64-NEXT:    bl ceilf
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 3, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    fmr 2, 30
-; PC64-NEXT:    lfd 31, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 30, 112(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 128
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %ceil = call <3 x float> @llvm.experimental.constrained.ceil.v3f32(
-                              <3 x float> <float 1.5, float 2.5, float 3.5>,
-                              metadata !"round.dynamic",
-                              metadata !"fpexcept.strict")
-  ret <3 x float> %ceil
-}
-
-define <3 x double> @constrained_vector_ceil_v3f64() {
-; PC64LE-LABEL: constrained_vector_ceil_v3f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    addis 3, 2, .LCPI106_1 at toc@ha
-; PC64LE-NEXT:    addi 3, 3, .LCPI106_1 at toc@l
-; PC64LE-NEXT:    lxvd2x 0, 0, 3
-; PC64LE-NEXT:    addis 3, 2, .LCPI106_0 at toc@ha
-; PC64LE-NEXT:    lfs 1, .LCPI106_0 at toc@l(3)
-; PC64LE-NEXT:    xxswapd 0, 0
-; PC64LE-NEXT:    xsrdpip 3, 1
-; PC64LE-NEXT:    xvrdpip 2, 0
-; PC64LE-NEXT:    xxswapd 1, 2
-; PC64LE-NEXT:    # kill: def $f2 killed $f2 killed $vsl2
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 killed $vsl1
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_ceil_v3f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    addis 3, 2, .LCPI106_0 at toc@ha
-; PC64LE9-NEXT:    lfs 0, .LCPI106_0 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI106_1 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI106_1 at toc@l
-; PC64LE9-NEXT:    xsrdpip 3, 0
-; PC64LE9-NEXT:    lxvx 0, 0, 3
-; PC64LE9-NEXT:    xvrdpip 2, 0
-; PC64LE9-NEXT:    xxswapd 1, 2
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 killed $vsl1
-; PC64LE9-NEXT:    # kill: def $f2 killed $f2 killed $vsl2
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_ceil_v3f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -128(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 128
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f30, -16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI106_0 at toc@ha
-; PC64-NEXT:    stfd 30, 112(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 31, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfd 1, .LCPI106_0 at toc@l(3)
-; PC64-NEXT:    bl ceil
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI106_1 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfd 1, .LCPI106_1 at toc@l(3)
-; PC64-NEXT:    bl ceil
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI106_2 at toc@ha
-; PC64-NEXT:    fmr 30, 1
-; PC64-NEXT:    lfs 1, .LCPI106_2 at toc@l(3)
-; PC64-NEXT:    bl ceil
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 3, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    fmr 2, 30
-; PC64-NEXT:    lfd 31, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 30, 112(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 128
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %ceil = call <3 x double> @llvm.experimental.constrained.ceil.v3f64(
-                          <3 x double> <double 1.1, double 1.9, double 1.5>,
-                          metadata !"round.dynamic",
-                          metadata !"fpexcept.strict")
-  ret <3 x double> %ceil
-}
-
-define <1 x float> @constrained_vector_floor_v1f32() {
-; PC64LE-LABEL: constrained_vector_floor_v1f32:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    addis 3, 2, .LCPI107_0 at toc@ha
-; PC64LE-NEXT:    lfs 0, .LCPI107_0 at toc@l(3)
-; PC64LE-NEXT:    frim 0, 0
-; PC64LE-NEXT:    xscvdpspn 0, 0
-; PC64LE-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_floor_v1f32:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    addis 3, 2, .LCPI107_0 at toc@ha
-; PC64LE9-NEXT:    lfs 0, .LCPI107_0 at toc@l(3)
-; PC64LE9-NEXT:    frim 0, 0
-; PC64LE9-NEXT:    xscvdpspn 0, 0
-; PC64LE9-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_floor_v1f32:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -112(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 112
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    addis 3, 2, .LCPI107_0 at toc@ha
-; PC64-NEXT:    lfs 1, .LCPI107_0 at toc@l(3)
-; PC64-NEXT:    bl floorf
-; PC64-NEXT:    nop
-; PC64-NEXT:    addi 1, 1, 112
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %floor = call <1 x float> @llvm.experimental.constrained.floor.v1f32(
-                               <1 x float> <float 1.5>,
-                               metadata !"round.dynamic",
-                               metadata !"fpexcept.strict")
-  ret <1 x float> %floor
-}
-
-
-define <2 x double> @constrained_vector_floor_v2f64() {
-; PC64LE-LABEL: constrained_vector_floor_v2f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    addis 3, 2, .LCPI108_0 at toc@ha
-; PC64LE-NEXT:    addi 3, 3, .LCPI108_0 at toc@l
-; PC64LE-NEXT:    lxvd2x 0, 0, 3
-; PC64LE-NEXT:    xxswapd 0, 0
-; PC64LE-NEXT:    xvrdpim 34, 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_floor_v2f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    addis 3, 2, .LCPI108_0 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI108_0 at toc@l
-; PC64LE9-NEXT:    lxvx 0, 0, 3
-; PC64LE9-NEXT:    xvrdpim 34, 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_floor_v2f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -128(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 128
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI108_0 at toc@ha
-; PC64-NEXT:    stfd 31, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfd 1, .LCPI108_0 at toc@l(3)
-; PC64-NEXT:    bl floor
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI108_1 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfd 1, .LCPI108_1 at toc@l(3)
-; PC64-NEXT:    bl floor
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 2, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    lfd 31, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 128
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %floor = call <2 x double> @llvm.experimental.constrained.floor.v2f64(
-                                <2 x double> <double 1.1, double 1.9>,
-                                metadata !"round.dynamic",
-                                metadata !"fpexcept.strict")
-  ret <2 x double> %floor
-}
-
-define <3 x float> @constrained_vector_floor_v3f32() {
-; PC64LE-LABEL: constrained_vector_floor_v3f32:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    addis 3, 2, .LCPI109_2 at toc@ha
-; PC64LE-NEXT:    addis 4, 2, .LCPI109_1 at toc@ha
-; PC64LE-NEXT:    lfs 0, .LCPI109_2 at toc@l(3)
-; PC64LE-NEXT:    lfs 1, .LCPI109_1 at toc@l(4)
-; PC64LE-NEXT:    addis 3, 2, .LCPI109_0 at toc@ha
-; PC64LE-NEXT:    frim 0, 0
-; PC64LE-NEXT:    lfs 2, .LCPI109_0 at toc@l(3)
-; PC64LE-NEXT:    addis 3, 2, .LCPI109_3 at toc@ha
-; PC64LE-NEXT:    frim 1, 1
-; PC64LE-NEXT:    addi 3, 3, .LCPI109_3 at toc@l
-; PC64LE-NEXT:    frim 2, 2
-; PC64LE-NEXT:    xscvdpspn 0, 0
-; PC64LE-NEXT:    xscvdpspn 1, 1
-; PC64LE-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE-NEXT:    xscvdpspn 0, 2
-; PC64LE-NEXT:    xxsldwi 35, 1, 1, 1
-; PC64LE-NEXT:    vmrglw 2, 3, 2
-; PC64LE-NEXT:    lvx 3, 0, 3
-; PC64LE-NEXT:    xxsldwi 36, 0, 0, 1
-; PC64LE-NEXT:    vperm 2, 4, 2, 3
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_floor_v3f32:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    addis 3, 2, .LCPI109_0 at toc@ha
-; PC64LE9-NEXT:    lfs 0, .LCPI109_0 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI109_1 at toc@ha
-; PC64LE9-NEXT:    lfs 1, .LCPI109_1 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI109_2 at toc@ha
-; PC64LE9-NEXT:    frim 0, 0
-; PC64LE9-NEXT:    lfs 2, .LCPI109_2 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI109_3 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI109_3 at toc@l
-; PC64LE9-NEXT:    frim 1, 1
-; PC64LE9-NEXT:    frim 2, 2
-; PC64LE9-NEXT:    xscvdpspn 0, 0
-; PC64LE9-NEXT:    xscvdpspn 1, 1
-; PC64LE9-NEXT:    xscvdpspn 2, 2
-; PC64LE9-NEXT:    xxsldwi 36, 0, 0, 1
-; PC64LE9-NEXT:    xxsldwi 35, 1, 1, 1
-; PC64LE9-NEXT:    xxsldwi 34, 2, 2, 1
-; PC64LE9-NEXT:    vmrglw 2, 3, 2
-; PC64LE9-NEXT:    lxvx 35, 0, 3
-; PC64LE9-NEXT:    vperm 2, 4, 2, 3
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_floor_v3f32:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -128(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 128
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f30, -16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI109_0 at toc@ha
-; PC64-NEXT:    stfd 30, 112(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 31, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfs 1, .LCPI109_0 at toc@l(3)
-; PC64-NEXT:    bl floorf
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI109_1 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfs 1, .LCPI109_1 at toc@l(3)
-; PC64-NEXT:    bl floorf
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI109_2 at toc@ha
-; PC64-NEXT:    fmr 30, 1
-; PC64-NEXT:    lfs 1, .LCPI109_2 at toc@l(3)
-; PC64-NEXT:    bl floorf
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 3, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    fmr 2, 30
-; PC64-NEXT:    lfd 31, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 30, 112(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 128
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %floor = call <3 x float> @llvm.experimental.constrained.floor.v3f32(
-                              <3 x float> <float 1.5, float 2.5, float 3.5>,
-                              metadata !"round.dynamic",
-                              metadata !"fpexcept.strict")
-  ret <3 x float> %floor
-}
-
-define <3 x double> @constrained_vector_floor_v3f64() {
-; PC64LE-LABEL: constrained_vector_floor_v3f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    addis 3, 2, .LCPI110_1 at toc@ha
-; PC64LE-NEXT:    addi 3, 3, .LCPI110_1 at toc@l
-; PC64LE-NEXT:    lxvd2x 0, 0, 3
-; PC64LE-NEXT:    addis 3, 2, .LCPI110_0 at toc@ha
-; PC64LE-NEXT:    lfs 1, .LCPI110_0 at toc@l(3)
-; PC64LE-NEXT:    xxswapd 0, 0
-; PC64LE-NEXT:    xsrdpim 3, 1
-; PC64LE-NEXT:    xvrdpim 2, 0
-; PC64LE-NEXT:    xxswapd 1, 2
-; PC64LE-NEXT:    # kill: def $f2 killed $f2 killed $vsl2
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 killed $vsl1
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_floor_v3f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    addis 3, 2, .LCPI110_0 at toc@ha
-; PC64LE9-NEXT:    lfs 0, .LCPI110_0 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI110_1 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI110_1 at toc@l
-; PC64LE9-NEXT:    xsrdpim 3, 0
-; PC64LE9-NEXT:    lxvx 0, 0, 3
-; PC64LE9-NEXT:    xvrdpim 2, 0
-; PC64LE9-NEXT:    xxswapd 1, 2
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 killed $vsl1
-; PC64LE9-NEXT:    # kill: def $f2 killed $f2 killed $vsl2
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_floor_v3f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -128(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 128
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f30, -16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI110_0 at toc@ha
-; PC64-NEXT:    stfd 30, 112(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 31, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfd 1, .LCPI110_0 at toc@l(3)
-; PC64-NEXT:    bl floor
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI110_1 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfd 1, .LCPI110_1 at toc@l(3)
-; PC64-NEXT:    bl floor
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI110_2 at toc@ha
-; PC64-NEXT:    fmr 30, 1
-; PC64-NEXT:    lfs 1, .LCPI110_2 at toc@l(3)
-; PC64-NEXT:    bl floor
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 3, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    fmr 2, 30
-; PC64-NEXT:    lfd 31, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 30, 112(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 128
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %floor = call <3 x double> @llvm.experimental.constrained.floor.v3f64(
-                          <3 x double> <double 1.1, double 1.9, double 1.5>,
-                          metadata !"round.dynamic",
-                          metadata !"fpexcept.strict")
-  ret <3 x double> %floor
-}
-
-define <1 x float> @constrained_vector_round_v1f32() {
-; PC64LE-LABEL: constrained_vector_round_v1f32:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    addis 3, 2, .LCPI111_0 at toc@ha
-; PC64LE-NEXT:    lfs 0, .LCPI111_0 at toc@l(3)
-; PC64LE-NEXT:    frin 0, 0
-; PC64LE-NEXT:    xscvdpspn 0, 0
-; PC64LE-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_round_v1f32:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    addis 3, 2, .LCPI111_0 at toc@ha
-; PC64LE9-NEXT:    lfs 0, .LCPI111_0 at toc@l(3)
-; PC64LE9-NEXT:    frin 0, 0
-; PC64LE9-NEXT:    xscvdpspn 0, 0
-; PC64LE9-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_round_v1f32:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -112(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 112
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    addis 3, 2, .LCPI111_0 at toc@ha
-; PC64-NEXT:    lfs 1, .LCPI111_0 at toc@l(3)
-; PC64-NEXT:    bl roundf
-; PC64-NEXT:    nop
-; PC64-NEXT:    addi 1, 1, 112
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %round = call <1 x float> @llvm.experimental.constrained.round.v1f32(
-                               <1 x float> <float 1.5>,
-                               metadata !"round.dynamic",
-                               metadata !"fpexcept.strict")
-  ret <1 x float> %round
-}
-
-define <2 x double> @constrained_vector_round_v2f64() {
-; PC64LE-LABEL: constrained_vector_round_v2f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    addis 3, 2, .LCPI112_0 at toc@ha
-; PC64LE-NEXT:    addi 3, 3, .LCPI112_0 at toc@l
-; PC64LE-NEXT:    lxvd2x 0, 0, 3
-; PC64LE-NEXT:    xxswapd 0, 0
-; PC64LE-NEXT:    xvrdpi 34, 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_round_v2f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    addis 3, 2, .LCPI112_0 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI112_0 at toc@l
-; PC64LE9-NEXT:    lxvx 0, 0, 3
-; PC64LE9-NEXT:    xvrdpi 34, 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_round_v2f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -128(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 128
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI112_0 at toc@ha
-; PC64-NEXT:    stfd 31, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfd 1, .LCPI112_0 at toc@l(3)
-; PC64-NEXT:    bl round
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI112_1 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfd 1, .LCPI112_1 at toc@l(3)
-; PC64-NEXT:    bl round
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 2, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    lfd 31, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 128
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %round = call <2 x double> @llvm.experimental.constrained.round.v2f64(
-                                <2 x double> <double 1.1, double 1.9>,
-                                metadata !"round.dynamic",
-                                metadata !"fpexcept.strict")
-  ret <2 x double> %round
-}
-
-define <3 x float> @constrained_vector_round_v3f32() {
-; PC64LE-LABEL: constrained_vector_round_v3f32:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    addis 3, 2, .LCPI113_2 at toc@ha
-; PC64LE-NEXT:    addis 4, 2, .LCPI113_1 at toc@ha
-; PC64LE-NEXT:    lfs 0, .LCPI113_2 at toc@l(3)
-; PC64LE-NEXT:    lfs 1, .LCPI113_1 at toc@l(4)
-; PC64LE-NEXT:    addis 3, 2, .LCPI113_0 at toc@ha
-; PC64LE-NEXT:    frin 0, 0
-; PC64LE-NEXT:    lfs 2, .LCPI113_0 at toc@l(3)
-; PC64LE-NEXT:    addis 3, 2, .LCPI113_3 at toc@ha
-; PC64LE-NEXT:    frin 1, 1
-; PC64LE-NEXT:    addi 3, 3, .LCPI113_3 at toc@l
-; PC64LE-NEXT:    frin 2, 2
-; PC64LE-NEXT:    xscvdpspn 0, 0
-; PC64LE-NEXT:    xscvdpspn 1, 1
-; PC64LE-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE-NEXT:    xscvdpspn 0, 2
-; PC64LE-NEXT:    xxsldwi 35, 1, 1, 1
-; PC64LE-NEXT:    vmrglw 2, 3, 2
-; PC64LE-NEXT:    lvx 3, 0, 3
-; PC64LE-NEXT:    xxsldwi 36, 0, 0, 1
-; PC64LE-NEXT:    vperm 2, 4, 2, 3
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_round_v3f32:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    addis 3, 2, .LCPI113_0 at toc@ha
-; PC64LE9-NEXT:    lfs 0, .LCPI113_0 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI113_1 at toc@ha
-; PC64LE9-NEXT:    lfs 1, .LCPI113_1 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI113_2 at toc@ha
-; PC64LE9-NEXT:    frin 0, 0
-; PC64LE9-NEXT:    lfs 2, .LCPI113_2 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI113_3 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI113_3 at toc@l
-; PC64LE9-NEXT:    frin 1, 1
-; PC64LE9-NEXT:    frin 2, 2
-; PC64LE9-NEXT:    xscvdpspn 0, 0
-; PC64LE9-NEXT:    xscvdpspn 1, 1
-; PC64LE9-NEXT:    xscvdpspn 2, 2
-; PC64LE9-NEXT:    xxsldwi 36, 0, 0, 1
-; PC64LE9-NEXT:    xxsldwi 35, 1, 1, 1
-; PC64LE9-NEXT:    xxsldwi 34, 2, 2, 1
-; PC64LE9-NEXT:    vmrglw 2, 3, 2
-; PC64LE9-NEXT:    lxvx 35, 0, 3
-; PC64LE9-NEXT:    vperm 2, 4, 2, 3
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_round_v3f32:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -128(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 128
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f30, -16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI113_0 at toc@ha
-; PC64-NEXT:    stfd 30, 112(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 31, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfs 1, .LCPI113_0 at toc@l(3)
-; PC64-NEXT:    bl roundf
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI113_1 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfs 1, .LCPI113_1 at toc@l(3)
-; PC64-NEXT:    bl roundf
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI113_2 at toc@ha
-; PC64-NEXT:    fmr 30, 1
-; PC64-NEXT:    lfs 1, .LCPI113_2 at toc@l(3)
-; PC64-NEXT:    bl roundf
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 3, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    fmr 2, 30
-; PC64-NEXT:    lfd 31, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 30, 112(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 128
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %round = call <3 x float> @llvm.experimental.constrained.round.v3f32(
-                              <3 x float> <float 1.5, float 2.5, float 3.5>,
-                              metadata !"round.dynamic",
-                              metadata !"fpexcept.strict")
-  ret <3 x float> %round
-}
-
-
-define <3 x double> @constrained_vector_round_v3f64() {
-; PC64LE-LABEL: constrained_vector_round_v3f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    addis 3, 2, .LCPI114_1 at toc@ha
-; PC64LE-NEXT:    addi 3, 3, .LCPI114_1 at toc@l
-; PC64LE-NEXT:    lxvd2x 0, 0, 3
-; PC64LE-NEXT:    addis 3, 2, .LCPI114_0 at toc@ha
-; PC64LE-NEXT:    lfs 1, .LCPI114_0 at toc@l(3)
-; PC64LE-NEXT:    xxswapd 0, 0
-; PC64LE-NEXT:    xsrdpi 3, 1
-; PC64LE-NEXT:    xvrdpi 2, 0
-; PC64LE-NEXT:    xxswapd 1, 2
-; PC64LE-NEXT:    # kill: def $f2 killed $f2 killed $vsl2
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 killed $vsl1
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_round_v3f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    addis 3, 2, .LCPI114_0 at toc@ha
-; PC64LE9-NEXT:    lfs 0, .LCPI114_0 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI114_1 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI114_1 at toc@l
-; PC64LE9-NEXT:    xsrdpi 3, 0
-; PC64LE9-NEXT:    lxvx 0, 0, 3
-; PC64LE9-NEXT:    xvrdpi 2, 0
-; PC64LE9-NEXT:    xxswapd 1, 2
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 killed $vsl1
-; PC64LE9-NEXT:    # kill: def $f2 killed $f2 killed $vsl2
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_round_v3f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -128(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 128
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f30, -16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI114_0 at toc@ha
-; PC64-NEXT:    stfd 30, 112(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 31, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfd 1, .LCPI114_0 at toc@l(3)
-; PC64-NEXT:    bl round
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI114_1 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfd 1, .LCPI114_1 at toc@l(3)
-; PC64-NEXT:    bl round
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI114_2 at toc@ha
-; PC64-NEXT:    fmr 30, 1
-; PC64-NEXT:    lfs 1, .LCPI114_2 at toc@l(3)
-; PC64-NEXT:    bl round
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 3, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    fmr 2, 30
-; PC64-NEXT:    lfd 31, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 30, 112(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 128
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %round = call <3 x double> @llvm.experimental.constrained.round.v3f64(
-                          <3 x double> <double 1.1, double 1.9, double 1.5>,
-                          metadata !"round.dynamic",
-                          metadata !"fpexcept.strict")
-  ret <3 x double> %round
-}
-
-define <1 x float> @constrained_vector_trunc_v1f32() {
-; PC64LE-LABEL: constrained_vector_trunc_v1f32:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    addis 3, 2, .LCPI115_0 at toc@ha
-; PC64LE-NEXT:    lfs 0, .LCPI115_0 at toc@l(3)
-; PC64LE-NEXT:    friz 0, 0
-; PC64LE-NEXT:    xscvdpspn 0, 0
-; PC64LE-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_trunc_v1f32:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    addis 3, 2, .LCPI115_0 at toc@ha
-; PC64LE9-NEXT:    lfs 0, .LCPI115_0 at toc@l(3)
-; PC64LE9-NEXT:    friz 0, 0
-; PC64LE9-NEXT:    xscvdpspn 0, 0
-; PC64LE9-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_trunc_v1f32:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -112(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 112
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    addis 3, 2, .LCPI115_0 at toc@ha
-; PC64-NEXT:    lfs 1, .LCPI115_0 at toc@l(3)
-; PC64-NEXT:    bl truncf
-; PC64-NEXT:    nop
-; PC64-NEXT:    addi 1, 1, 112
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %trunc = call <1 x float> @llvm.experimental.constrained.trunc.v1f32(
-                               <1 x float> <float 1.5>,
-                               metadata !"round.dynamic",
-                               metadata !"fpexcept.strict")
-  ret <1 x float> %trunc
-}
-
-define <2 x double> @constrained_vector_trunc_v2f64() {
-; PC64LE-LABEL: constrained_vector_trunc_v2f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    addis 3, 2, .LCPI116_0 at toc@ha
-; PC64LE-NEXT:    addi 3, 3, .LCPI116_0 at toc@l
-; PC64LE-NEXT:    lxvd2x 0, 0, 3
-; PC64LE-NEXT:    xxswapd 0, 0
-; PC64LE-NEXT:    xvrdpiz 34, 0
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_trunc_v2f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    addis 3, 2, .LCPI116_0 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI116_0 at toc@l
-; PC64LE9-NEXT:    lxvx 0, 0, 3
-; PC64LE9-NEXT:    xvrdpiz 34, 0
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_trunc_v2f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -128(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 128
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI116_0 at toc@ha
-; PC64-NEXT:    stfd 31, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfd 1, .LCPI116_0 at toc@l(3)
-; PC64-NEXT:    bl trunc
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI116_1 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfd 1, .LCPI116_1 at toc@l(3)
-; PC64-NEXT:    bl trunc
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 2, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    lfd 31, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 128
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %trunc = call <2 x double> @llvm.experimental.constrained.trunc.v2f64(
-                                <2 x double> <double 1.1, double 1.9>,
-                                metadata !"round.dynamic",
-                                metadata !"fpexcept.strict")
-  ret <2 x double> %trunc
-}
-
-define <3 x float> @constrained_vector_trunc_v3f32() {
-; PC64LE-LABEL: constrained_vector_trunc_v3f32:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    addis 3, 2, .LCPI117_2 at toc@ha
-; PC64LE-NEXT:    addis 4, 2, .LCPI117_1 at toc@ha
-; PC64LE-NEXT:    lfs 0, .LCPI117_2 at toc@l(3)
-; PC64LE-NEXT:    lfs 1, .LCPI117_1 at toc@l(4)
-; PC64LE-NEXT:    addis 3, 2, .LCPI117_0 at toc@ha
-; PC64LE-NEXT:    friz 0, 0
-; PC64LE-NEXT:    lfs 2, .LCPI117_0 at toc@l(3)
-; PC64LE-NEXT:    addis 3, 2, .LCPI117_3 at toc@ha
-; PC64LE-NEXT:    friz 1, 1
-; PC64LE-NEXT:    addi 3, 3, .LCPI117_3 at toc@l
-; PC64LE-NEXT:    friz 2, 2
-; PC64LE-NEXT:    xscvdpspn 0, 0
-; PC64LE-NEXT:    xscvdpspn 1, 1
-; PC64LE-NEXT:    xxsldwi 34, 0, 0, 1
-; PC64LE-NEXT:    xscvdpspn 0, 2
-; PC64LE-NEXT:    xxsldwi 35, 1, 1, 1
-; PC64LE-NEXT:    vmrglw 2, 3, 2
-; PC64LE-NEXT:    lvx 3, 0, 3
-; PC64LE-NEXT:    xxsldwi 36, 0, 0, 1
-; PC64LE-NEXT:    vperm 2, 4, 2, 3
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_trunc_v3f32:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    addis 3, 2, .LCPI117_0 at toc@ha
-; PC64LE9-NEXT:    lfs 0, .LCPI117_0 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI117_1 at toc@ha
-; PC64LE9-NEXT:    lfs 1, .LCPI117_1 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI117_2 at toc@ha
-; PC64LE9-NEXT:    friz 0, 0
-; PC64LE9-NEXT:    lfs 2, .LCPI117_2 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI117_3 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI117_3 at toc@l
-; PC64LE9-NEXT:    friz 1, 1
-; PC64LE9-NEXT:    friz 2, 2
-; PC64LE9-NEXT:    xscvdpspn 0, 0
-; PC64LE9-NEXT:    xscvdpspn 1, 1
-; PC64LE9-NEXT:    xscvdpspn 2, 2
-; PC64LE9-NEXT:    xxsldwi 36, 0, 0, 1
-; PC64LE9-NEXT:    xxsldwi 35, 1, 1, 1
-; PC64LE9-NEXT:    xxsldwi 34, 2, 2, 1
-; PC64LE9-NEXT:    vmrglw 2, 3, 2
-; PC64LE9-NEXT:    lxvx 35, 0, 3
-; PC64LE9-NEXT:    vperm 2, 4, 2, 3
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_trunc_v3f32:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -128(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 128
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f30, -16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI117_0 at toc@ha
-; PC64-NEXT:    stfd 30, 112(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 31, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfs 1, .LCPI117_0 at toc@l(3)
-; PC64-NEXT:    bl truncf
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI117_1 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfs 1, .LCPI117_1 at toc@l(3)
-; PC64-NEXT:    bl truncf
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI117_2 at toc@ha
-; PC64-NEXT:    fmr 30, 1
-; PC64-NEXT:    lfs 1, .LCPI117_2 at toc@l(3)
-; PC64-NEXT:    bl truncf
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 3, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    fmr 2, 30
-; PC64-NEXT:    lfd 31, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 30, 112(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 128
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %trunc = call <3 x float> @llvm.experimental.constrained.trunc.v3f32(
-                              <3 x float> <float 1.5, float 2.5, float 3.5>,
-                              metadata !"round.dynamic",
-                              metadata !"fpexcept.strict")
-  ret <3 x float> %trunc
-}
-
-define <3 x double> @constrained_vector_trunc_v3f64() {
-; PC64LE-LABEL: constrained_vector_trunc_v3f64:
-; PC64LE:       # %bb.0: # %entry
-; PC64LE-NEXT:    addis 3, 2, .LCPI118_1 at toc@ha
-; PC64LE-NEXT:    addi 3, 3, .LCPI118_1 at toc@l
-; PC64LE-NEXT:    lxvd2x 0, 0, 3
-; PC64LE-NEXT:    addis 3, 2, .LCPI118_0 at toc@ha
-; PC64LE-NEXT:    lfs 1, .LCPI118_0 at toc@l(3)
-; PC64LE-NEXT:    xxswapd 0, 0
-; PC64LE-NEXT:    xsrdpiz 3, 1
-; PC64LE-NEXT:    xvrdpiz 2, 0
-; PC64LE-NEXT:    xxswapd 1, 2
-; PC64LE-NEXT:    # kill: def $f2 killed $f2 killed $vsl2
-; PC64LE-NEXT:    # kill: def $f1 killed $f1 killed $vsl1
-; PC64LE-NEXT:    blr
-;
-; PC64LE9-LABEL: constrained_vector_trunc_v3f64:
-; PC64LE9:       # %bb.0: # %entry
-; PC64LE9-NEXT:    addis 3, 2, .LCPI118_0 at toc@ha
-; PC64LE9-NEXT:    lfs 0, .LCPI118_0 at toc@l(3)
-; PC64LE9-NEXT:    addis 3, 2, .LCPI118_1 at toc@ha
-; PC64LE9-NEXT:    addi 3, 3, .LCPI118_1 at toc@l
-; PC64LE9-NEXT:    xsrdpiz 3, 0
-; PC64LE9-NEXT:    lxvx 0, 0, 3
-; PC64LE9-NEXT:    xvrdpiz 2, 0
-; PC64LE9-NEXT:    xxswapd 1, 2
-; PC64LE9-NEXT:    # kill: def $f1 killed $f1 killed $vsl1
-; PC64LE9-NEXT:    # kill: def $f2 killed $f2 killed $vsl2
-; PC64LE9-NEXT:    blr
-;
-; PC64-LABEL: constrained_vector_trunc_v3f64:
-; PC64:       # %bb.0: # %entry
-; PC64-NEXT:    mflr 0
-; PC64-NEXT:    std 0, 16(1)
-; PC64-NEXT:    stdu 1, -128(1)
-; PC64-NEXT:    .cfi_def_cfa_offset 128
-; PC64-NEXT:    .cfi_offset lr, 16
-; PC64-NEXT:    .cfi_offset f30, -16
-; PC64-NEXT:    .cfi_offset f31, -8
-; PC64-NEXT:    addis 3, 2, .LCPI118_0 at toc@ha
-; PC64-NEXT:    stfd 30, 112(1) # 8-byte Folded Spill
-; PC64-NEXT:    stfd 31, 120(1) # 8-byte Folded Spill
-; PC64-NEXT:    lfd 1, .LCPI118_0 at toc@l(3)
-; PC64-NEXT:    bl trunc
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI118_1 at toc@ha
-; PC64-NEXT:    fmr 31, 1
-; PC64-NEXT:    lfd 1, .LCPI118_1 at toc@l(3)
-; PC64-NEXT:    bl trunc
-; PC64-NEXT:    nop
-; PC64-NEXT:    addis 3, 2, .LCPI118_2 at toc@ha
-; PC64-NEXT:    fmr 30, 1
-; PC64-NEXT:    lfs 1, .LCPI118_2 at toc@l(3)
-; PC64-NEXT:    bl trunc
-; PC64-NEXT:    nop
-; PC64-NEXT:    fmr 3, 1
-; PC64-NEXT:    fmr 1, 31
-; PC64-NEXT:    fmr 2, 30
-; PC64-NEXT:    lfd 31, 120(1) # 8-byte Folded Reload
-; PC64-NEXT:    lfd 30, 112(1) # 8-byte Folded Reload
-; PC64-NEXT:    addi 1, 1, 128
-; PC64-NEXT:    ld 0, 16(1)
-; PC64-NEXT:    mtlr 0
-; PC64-NEXT:    blr
-entry:
-  %trunc = call <3 x double> @llvm.experimental.constrained.trunc.v3f64(
-                          <3 x double> <double 1.1, double 1.9, double 1.5>,
-                          metadata !"round.dynamic",
-                          metadata !"fpexcept.strict")
-  ret <3 x double> %trunc
-}
-
-
-; Single width declarations
-declare <2 x double> @llvm.experimental.constrained.fadd.v2f64(<2 x double>, <2 x double>, metadata, metadata)
-declare <2 x double> @llvm.experimental.constrained.fsub.v2f64(<2 x double>, <2 x double>, metadata, metadata)
-declare <2 x double> @llvm.experimental.constrained.fmul.v2f64(<2 x double>, <2 x double>, metadata, metadata)
-declare <2 x double> @llvm.experimental.constrained.fdiv.v2f64(<2 x double>, <2 x double>, metadata, metadata)
-declare <2 x double> @llvm.experimental.constrained.frem.v2f64(<2 x double>, <2 x double>, metadata, metadata)
-declare <2 x double> @llvm.experimental.constrained.sqrt.v2f64(<2 x double>, metadata, metadata)
-declare <2 x double> @llvm.experimental.constrained.pow.v2f64(<2 x double>, <2 x double>, metadata, metadata)
-declare <2 x double> @llvm.experimental.constrained.powi.v2f64(<2 x double>, i32, metadata, metadata)
-declare <2 x double> @llvm.experimental.constrained.sin.v2f64(<2 x double>, metadata, metadata)
-declare <2 x double> @llvm.experimental.constrained.cos.v2f64(<2 x double>, metadata, metadata)
-declare <2 x double> @llvm.experimental.constrained.exp.v2f64(<2 x double>, metadata, metadata)
-declare <2 x double> @llvm.experimental.constrained.exp2.v2f64(<2 x double>, metadata, metadata)
-declare <2 x double> @llvm.experimental.constrained.log.v2f64(<2 x double>, metadata, metadata)
-declare <2 x double> @llvm.experimental.constrained.log10.v2f64(<2 x double>, metadata, metadata)
-declare <2 x double> @llvm.experimental.constrained.log2.v2f64(<2 x double>, metadata, metadata)
-declare <2 x double> @llvm.experimental.constrained.rint.v2f64(<2 x double>, metadata, metadata)
-declare <2 x double> @llvm.experimental.constrained.nearbyint.v2f64(<2 x double>, metadata, metadata)
-declare <2 x double> @llvm.experimental.constrained.maxnum.v2f64(<2 x double>, <2 x double>, metadata, metadata)
-declare <2 x double> @llvm.experimental.constrained.minnum.v2f64(<2 x double>, <2 x double>, metadata, metadata)
-declare <2 x float> @llvm.experimental.constrained.fptrunc.v2f32.v2f64(<2 x double>, metadata, metadata)
-declare <2 x double> @llvm.experimental.constrained.fpext.v2f64.v2f32(<2 x float>, metadata)
-declare <2 x double> @llvm.experimental.constrained.ceil.v2f64(<2 x double>, metadata, metadata)
-declare <2 x double> @llvm.experimental.constrained.floor.v2f64(<2 x double>, metadata, metadata)
-declare <2 x double> @llvm.experimental.constrained.round.v2f64(<2 x double>, metadata, metadata)
-declare <2 x double> @llvm.experimental.constrained.trunc.v2f64(<2 x double>, metadata, metadata)
-
-; Scalar width declarations
-declare <1 x float> @llvm.experimental.constrained.fadd.v1f32(<1 x float>, <1 x float>, metadata, metadata)
-declare <1 x float> @llvm.experimental.constrained.fsub.v1f32(<1 x float>, <1 x float>, metadata, metadata)
-declare <1 x float> @llvm.experimental.constrained.fmul.v1f32(<1 x float>, <1 x float>, metadata, metadata)
-declare <1 x float> @llvm.experimental.constrained.fdiv.v1f32(<1 x float>, <1 x float>, metadata, metadata)
-declare <1 x float> @llvm.experimental.constrained.frem.v1f32(<1 x float>, <1 x float>, metadata, metadata)
-declare <1 x float> @llvm.experimental.constrained.sqrt.v1f32(<1 x float>, metadata, metadata)
-declare <1 x float> @llvm.experimental.constrained.pow.v1f32(<1 x float>, <1 x float>, metadata, metadata)
-declare <1 x float> @llvm.experimental.constrained.powi.v1f32(<1 x float>, i32, metadata, metadata)
-declare <1 x float> @llvm.experimental.constrained.sin.v1f32(<1 x float>, metadata, metadata)
-declare <1 x float> @llvm.experimental.constrained.cos.v1f32(<1 x float>, metadata, metadata)
-declare <1 x float> @llvm.experimental.constrained.exp.v1f32(<1 x float>, metadata, metadata)
-declare <1 x float> @llvm.experimental.constrained.exp2.v1f32(<1 x float>, metadata, metadata)
-declare <1 x float> @llvm.experimental.constrained.log.v1f32(<1 x float>, metadata, metadata)
-declare <1 x float> @llvm.experimental.constrained.log10.v1f32(<1 x float>, metadata, metadata)
-declare <1 x float> @llvm.experimental.constrained.log2.v1f32(<1 x float>, metadata, metadata)
-declare <1 x float> @llvm.experimental.constrained.rint.v1f32(<1 x float>, metadata, metadata)
-declare <1 x float> @llvm.experimental.constrained.nearbyint.v1f32(<1 x float>, metadata, metadata)
-declare <1 x float> @llvm.experimental.constrained.maxnum.v1f32(<1 x float>, <1 x float>, metadata, metadata)
-declare <1 x float> @llvm.experimental.constrained.minnum.v1f32(<1 x float>, <1 x float>, metadata, metadata)
-declare <1 x float> @llvm.experimental.constrained.fptrunc.v1f32.v1f64(<1 x double>, metadata, metadata)
-declare <1 x double> @llvm.experimental.constrained.fpext.v1f64.v1f32(<1 x float>, metadata)
-declare <1 x float> @llvm.experimental.constrained.ceil.v1f32(<1 x float>, metadata, metadata)
-declare <1 x float> @llvm.experimental.constrained.floor.v1f32(<1 x float>, metadata, metadata)
-declare <1 x float> @llvm.experimental.constrained.round.v1f32(<1 x float>, metadata, metadata)
-declare <1 x float> @llvm.experimental.constrained.trunc.v1f32(<1 x float>, metadata, metadata)
-
-; Illegal width declarations
-declare <3 x float> @llvm.experimental.constrained.fadd.v3f32(<3 x float>, <3 x float>, metadata, metadata)
-declare <3 x double> @llvm.experimental.constrained.fadd.v3f64(<3 x double>, <3 x double>, metadata, metadata)
-declare <3 x float> @llvm.experimental.constrained.fsub.v3f32(<3 x float>, <3 x float>, metadata, metadata)
-declare <3 x double> @llvm.experimental.constrained.fsub.v3f64(<3 x double>, <3 x double>, metadata, metadata)
-declare <3 x float> @llvm.experimental.constrained.fmul.v3f32(<3 x float>, <3 x float>, metadata, metadata)
-declare <3 x double> @llvm.experimental.constrained.fmul.v3f64(<3 x double>, <3 x double>, metadata, metadata)
-declare <3 x float> @llvm.experimental.constrained.fdiv.v3f32(<3 x float>, <3 x float>, metadata, metadata)
-declare <3 x double> @llvm.experimental.constrained.fdiv.v3f64(<3 x double>, <3 x double>, metadata, metadata)
-declare <3 x float> @llvm.experimental.constrained.frem.v3f32(<3 x float>, <3 x float>, metadata, metadata)
-declare <3 x double> @llvm.experimental.constrained.frem.v3f64(<3 x double>, <3 x double>, metadata, metadata)
-declare <3 x float> @llvm.experimental.constrained.sqrt.v3f32(<3 x float>, metadata, metadata)
-declare <3 x double> @llvm.experimental.constrained.sqrt.v3f64(<3 x double>, metadata, metadata)
-declare <3 x float> @llvm.experimental.constrained.pow.v3f32(<3 x float>, <3 x float>, metadata, metadata)
-declare <3 x double> @llvm.experimental.constrained.pow.v3f64(<3 x double>, <3 x double>, metadata, metadata)
-declare <3 x float> @llvm.experimental.constrained.powi.v3f32(<3 x float>, i32, metadata, metadata)
-declare <3 x double> @llvm.experimental.constrained.powi.v3f64(<3 x double>, i32, metadata, metadata)
-declare <3 x float> @llvm.experimental.constrained.sin.v3f32(<3 x float>, metadata, metadata)
-declare <3 x double> @llvm.experimental.constrained.sin.v3f64(<3 x double>, metadata, metadata)
-declare <3 x float> @llvm.experimental.constrained.cos.v3f32(<3 x float>, metadata, metadata)
-declare <3 x double> @llvm.experimental.constrained.cos.v3f64(<3 x double>, metadata, metadata)
-declare <3 x float> @llvm.experimental.constrained.exp.v3f32(<3 x float>, metadata, metadata)
-declare <3 x double> @llvm.experimental.constrained.exp.v3f64(<3 x double>, metadata, metadata)
-declare <3 x float> @llvm.experimental.constrained.exp2.v3f32(<3 x float>, metadata, metadata)
-declare <3 x double> @llvm.experimental.constrained.exp2.v3f64(<3 x double>, metadata, metadata)
-declare <3 x float> @llvm.experimental.constrained.log.v3f32(<3 x float>, metadata, metadata)
-declare <3 x double> @llvm.experimental.constrained.log.v3f64(<3 x double>, metadata, metadata)
-declare <3 x float> @llvm.experimental.constrained.log10.v3f32(<3 x float>, metadata, metadata)
-declare <3 x double> @llvm.experimental.constrained.log10.v3f64(<3 x double>, metadata, metadata)
-declare <3 x float> @llvm.experimental.constrained.log2.v3f32(<3 x float>, metadata, metadata)
-declare <3 x double> @llvm.experimental.constrained.log2.v3f64(<3 x double>, metadata, metadata)
-declare <3 x float> @llvm.experimental.constrained.rint.v3f32(<3 x float>, metadata, metadata)
-declare <3 x double> @llvm.experimental.constrained.rint.v3f64(<3 x double>, metadata, metadata)
-declare <3 x float> @llvm.experimental.constrained.nearbyint.v3f32(<3 x float>, metadata, metadata)
-declare <3 x double> @llvm.experimental.constrained.nearbyint.v3f64(<3 x double>, metadata, metadata)
-declare <3 x float> @llvm.experimental.constrained.maxnum.v3f32(<3 x float>, <3 x float>, metadata, metadata)
-declare <3 x double> @llvm.experimental.constrained.maxnum.v3f64(<3 x double>, <3 x double>, metadata, metadata)
-declare <3 x float> @llvm.experimental.constrained.minnum.v3f32(<3 x float>, <3 x float>, metadata, metadata)
-declare <3 x double> @llvm.experimental.constrained.minnum.v3f64(<3 x double>, <3 x double>, metadata, metadata)
-declare <3 x float> @llvm.experimental.constrained.fptrunc.v3f32.v3f64(<3 x double>, metadata, metadata)
-declare <3 x double> @llvm.experimental.constrained.fpext.v3f64.v3f32(<3 x float>, metadata)
-declare <3 x float> @llvm.experimental.constrained.ceil.v3f32(<3 x float>, metadata, metadata)
-declare <3 x double> @llvm.experimental.constrained.ceil.v3f64(<3 x double>, metadata, metadata)
-declare <3 x float> @llvm.experimental.constrained.floor.v3f32(<3 x float>, metadata, metadata)
-declare <3 x double> @llvm.experimental.constrained.floor.v3f64(<3 x double>, metadata, metadata)
-declare <3 x float> @llvm.experimental.constrained.round.v3f32(<3 x float>, metadata, metadata)
-declare <3 x double> @llvm.experimental.constrained.round.v3f64(<3 x double>, metadata, metadata)
-declare <3 x float> @llvm.experimental.constrained.trunc.v3f32(<3 x float>, metadata, metadata)
-declare <3 x double> @llvm.experimental.constrained.trunc.v3f64(<3 x double>, metadata, metadata)
-
-; Double width declarations
-declare <4 x double> @llvm.experimental.constrained.fadd.v4f64(<4 x double>, <4 x double>, metadata, metadata)
-declare <4 x double> @llvm.experimental.constrained.fsub.v4f64(<4 x double>, <4 x double>, metadata, metadata)
-declare <4 x double> @llvm.experimental.constrained.fmul.v4f64(<4 x double>, <4 x double>, metadata, metadata)
-declare <4 x double> @llvm.experimental.constrained.fdiv.v4f64(<4 x double>, <4 x double>, metadata, metadata)
-declare <4 x double> @llvm.experimental.constrained.frem.v4f64(<4 x double>, <4 x double>, metadata, metadata)
-declare <4 x double> @llvm.experimental.constrained.sqrt.v4f64(<4 x double>, metadata, metadata)
-declare <4 x double> @llvm.experimental.constrained.pow.v4f64(<4 x double>, <4 x double>, metadata, metadata)
-declare <4 x double> @llvm.experimental.constrained.powi.v4f64(<4 x double>, i32, metadata, metadata)
-declare <4 x double> @llvm.experimental.constrained.sin.v4f64(<4 x double>, metadata, metadata)
-declare <4 x double> @llvm.experimental.constrained.cos.v4f64(<4 x double>, metadata, metadata)
-declare <4 x double> @llvm.experimental.constrained.exp.v4f64(<4 x double>, metadata, metadata)
-declare <4 x double> @llvm.experimental.constrained.exp2.v4f64(<4 x double>, metadata, metadata)
-declare <4 x double> @llvm.experimental.constrained.log.v4f64(<4 x double>, metadata, metadata)
-declare <4 x double> @llvm.experimental.constrained.log10.v4f64(<4 x double>, metadata, metadata)
-declare <4 x double> @llvm.experimental.constrained.log2.v4f64(<4 x double>, metadata, metadata)
-declare <4 x double> @llvm.experimental.constrained.rint.v4f64(<4 x double>, metadata, metadata)
-declare <4 x double> @llvm.experimental.constrained.nearbyint.v4f64(<4 x double>, metadata, metadata)
-declare <4 x double> @llvm.experimental.constrained.maxnum.v4f64(<4 x double>, <4 x double>, metadata, metadata)
-declare <4 x double> @llvm.experimental.constrained.minnum.v4f64(<4 x double>, <4 x double>, metadata, metadata)
-declare <4 x float> @llvm.experimental.constrained.fptrunc.v4f32.v4f64(<4 x double>, metadata, metadata)
-declare <4 x double> @llvm.experimental.constrained.fpext.v4f64.v4f32(<4 x float>, metadata)
-declare <4 x double> @llvm.experimental.constrained.ceil.v4f64(<4 x double>, metadata, metadata)
-declare <4 x double> @llvm.experimental.constrained.floor.v4f64(<4 x double>, metadata, metadata)
-declare <4 x double> @llvm.experimental.constrained.round.v4f64(<4 x double>, metadata, metadata)
-declare <4 x double> @llvm.experimental.constrained.trunc.v4f64(<4 x double>, metadata, metadata)




More information about the llvm-commits mailing list