brintos

brintos / llvm-project-archived public Read only

0
0
Text · 272.4 KiB · 614f7b2 Raw
7229 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -O3 -mtriple=s390x-linux-gnu  < %s | FileCheck --check-prefix=S390X %s3; RUN: llc -O3 -mtriple=s390x-linux-gnu -mcpu=z13 < %s | FileCheck --check-prefix=SZ13 %s4 5define <1 x float> @constrained_vector_fdiv_v1f32() #0 {6; S390X-LABEL: constrained_vector_fdiv_v1f32:7; S390X:       # %bb.0: # %entry8; S390X-NEXT:    larl %r1, .LCPI0_09; S390X-NEXT:    le %f0, 0(%r1)10; S390X-NEXT:    larl %r1, .LCPI0_111; S390X-NEXT:    deb %f0, 0(%r1)12; S390X-NEXT:    br %r1413;14; SZ13-LABEL: constrained_vector_fdiv_v1f32:15; SZ13:       # %bb.0: # %entry16; SZ13-NEXT:    larl %r1, .LCPI0_017; SZ13-NEXT:    vgmf %v0, 2, 818; SZ13-NEXT:    deb %f0, 0(%r1)19; SZ13-NEXT:    vlr %v24, %v020; SZ13-NEXT:    br %r1421entry:22  %div = call <1 x float> @llvm.experimental.constrained.fdiv.v1f32(23           <1 x float> <float 1.000000e+00>,24           <1 x float> <float 1.000000e+01>,25           metadata !"round.dynamic",26           metadata !"fpexcept.strict") #027  ret <1 x float> %div28}29 30define <2 x double> @constrained_vector_fdiv_v2f64() #0 {31; S390X-LABEL: constrained_vector_fdiv_v2f64:32; S390X:       # %bb.0: # %entry33; S390X-NEXT:    larl %r1, .LCPI1_034; S390X-NEXT:    ld %f1, 0(%r1)35; S390X-NEXT:    larl %r1, .LCPI1_136; S390X-NEXT:    ld %f2, 0(%r1)37; S390X-NEXT:    larl %r1, .LCPI1_238; S390X-NEXT:    ld %f0, 0(%r1)39; S390X-NEXT:    ddbr %f2, %f140; S390X-NEXT:    ddbr %f0, %f141; S390X-NEXT:    br %r1442;43; SZ13-LABEL: constrained_vector_fdiv_v2f64:44; SZ13:       # %bb.0: # %entry45; SZ13-NEXT:    larl %r1, .LCPI1_046; SZ13-NEXT:    vl %v0, 0(%r1), 347; SZ13-NEXT:    larl %r1, .LCPI1_148; SZ13-NEXT:    vl %v1, 0(%r1), 349; SZ13-NEXT:    vfddb %v24, %v1, %v050; SZ13-NEXT:    br %r1451entry:52  %div = call <2 x double> @llvm.experimental.constrained.fdiv.v2f64(53           <2 x double> <double 1.000000e+00, double 2.000000e+00>,54           <2 x double> <double 1.000000e+01, double 1.000000e+01>,55           metadata !"round.dynamic",56           metadata !"fpexcept.strict") #057  ret <2 x double> %div58}59 60define <3 x float> @constrained_vector_fdiv_v3f32() #0 {61; S390X-LABEL: constrained_vector_fdiv_v3f32:62; S390X:       # %bb.0: # %entry63; S390X-NEXT:    larl %r1, .LCPI2_064; S390X-NEXT:    le %f1, 0(%r1)65; S390X-NEXT:    larl %r1, .LCPI2_166; S390X-NEXT:    le %f4, 0(%r1)67; S390X-NEXT:    larl %r1, .LCPI2_268; S390X-NEXT:    le %f2, 0(%r1)69; S390X-NEXT:    larl %r1, .LCPI2_370; S390X-NEXT:    le %f0, 0(%r1)71; S390X-NEXT:    debr %f4, %f172; S390X-NEXT:    debr %f2, %f173; S390X-NEXT:    debr %f0, %f174; S390X-NEXT:    br %r1475;76; SZ13-LABEL: constrained_vector_fdiv_v3f32:77; SZ13:       # %bb.0: # %entry78; SZ13-NEXT:    larl %r1, .LCPI2_079; SZ13-NEXT:    lde %f0, 0(%r1)80; SZ13-NEXT:    larl %r1, .LCPI2_181; SZ13-NEXT:    lde %f1, 0(%r1)82; SZ13-NEXT:    debr %f1, %f083; SZ13-NEXT:    vgmf %v2, 2, 884; SZ13-NEXT:    vgmf %v3, 1, 185; SZ13-NEXT:    debr %f2, %f086; SZ13-NEXT:    vrepf %v1, %v1, 087; SZ13-NEXT:    debr %f3, %f088; SZ13-NEXT:    vmrhf %v0, %v2, %v389; SZ13-NEXT:    vmrhg %v24, %v0, %v190; SZ13-NEXT:    br %r1491entry:92  %div = call <3 x float> @llvm.experimental.constrained.fdiv.v3f32(93           <3 x float> <float 1.000000e+00, float 2.000000e+00, float 3.000000e+00>,94           <3 x float> <float 1.000000e+01, float 1.000000e+01, float 1.000000e+01>,95           metadata !"round.dynamic",96           metadata !"fpexcept.strict") #097  ret <3 x float> %div98}99 100define void @constrained_vector_fdiv_v3f64(ptr %a) #0 {101; S390X-LABEL: constrained_vector_fdiv_v3f64:102; S390X:       # %bb.0: # %entry103; S390X-NEXT:    larl %r1, .LCPI3_1104; S390X-NEXT:    ld %f0, 0(%r1)105; S390X-NEXT:    larl %r1, .LCPI3_2106; S390X-NEXT:    ld %f1, 0(%r1)107; S390X-NEXT:    larl %r1, .LCPI3_0108; S390X-NEXT:    ld %f2, 0(%r1)109; S390X-NEXT:    ddb %f1, 0(%r2)110; S390X-NEXT:    ddb %f0, 8(%r2)111; S390X-NEXT:    ddb %f2, 16(%r2)112; S390X-NEXT:    std %f1, 0(%r2)113; S390X-NEXT:    std %f0, 8(%r2)114; S390X-NEXT:    std %f2, 16(%r2)115; S390X-NEXT:    br %r14116;117; SZ13-LABEL: constrained_vector_fdiv_v3f64:118; SZ13:       # %bb.0: # %entry119; SZ13-NEXT:    larl %r1, .LCPI3_0120; SZ13-NEXT:    ld %f1, 0(%r1)121; SZ13-NEXT:    ddb %f1, 16(%r2)122; SZ13-NEXT:    larl %r1, .LCPI3_1123; SZ13-NEXT:    vl %v0, 0(%r2), 4124; SZ13-NEXT:    vl %v2, 0(%r1), 3125; SZ13-NEXT:    std %f1, 16(%r2)126; SZ13-NEXT:    vfddb %v0, %v2, %v0127; SZ13-NEXT:    vst %v0, 0(%r2), 4128; SZ13-NEXT:    br %r14129entry:130  %b = load <3 x double>, ptr %a131  %div = call <3 x double> @llvm.experimental.constrained.fdiv.v3f64(132           <3 x double> <double 1.000000e+00, double 2.000000e+00, double 3.000000e+00>,133           <3 x double> %b,134           metadata !"round.dynamic",135           metadata !"fpexcept.strict") #0136  store <3 x double> %div, ptr %a137  ret void138}139 140define <4 x double> @constrained_vector_fdiv_v4f64() #0 {141; S390X-LABEL: constrained_vector_fdiv_v4f64:142; S390X:       # %bb.0: # %entry143; S390X-NEXT:    larl %r1, .LCPI4_0144; S390X-NEXT:    ld %f1, 0(%r1)145; S390X-NEXT:    larl %r1, .LCPI4_1146; S390X-NEXT:    ld %f6, 0(%r1)147; S390X-NEXT:    larl %r1, .LCPI4_2148; S390X-NEXT:    ld %f4, 0(%r1)149; S390X-NEXT:    larl %r1, .LCPI4_3150; S390X-NEXT:    ld %f2, 0(%r1)151; S390X-NEXT:    larl %r1, .LCPI4_4152; S390X-NEXT:    ld %f0, 0(%r1)153; S390X-NEXT:    ddbr %f6, %f1154; S390X-NEXT:    ddbr %f4, %f1155; S390X-NEXT:    ddbr %f2, %f1156; S390X-NEXT:    ddbr %f0, %f1157; S390X-NEXT:    br %r14158;159; SZ13-LABEL: constrained_vector_fdiv_v4f64:160; SZ13:       # %bb.0: # %entry161; SZ13-NEXT:    larl %r1, .LCPI4_0162; SZ13-NEXT:    vl %v0, 0(%r1), 3163; SZ13-NEXT:    larl %r1, .LCPI4_1164; SZ13-NEXT:    vl %v1, 0(%r1), 3165; SZ13-NEXT:    vfddb %v26, %v1, %v0166; SZ13-NEXT:    larl %r1, .LCPI4_2167; SZ13-NEXT:    vl %v1, 0(%r1), 3168; SZ13-NEXT:    vfddb %v24, %v1, %v0169; SZ13-NEXT:    br %r14170entry:171  %div = call <4 x double> @llvm.experimental.constrained.fdiv.v4f64(172           <4 x double> <double 1.000000e+00, double 2.000000e+00,173                         double 3.000000e+00, double 4.000000e+00>,174           <4 x double> <double 1.000000e+01, double 1.000000e+01,175                         double 1.000000e+01, double 1.000000e+01>,176           metadata !"round.dynamic",177           metadata !"fpexcept.strict") #0178  ret <4 x double> %div179}180 181define <1 x float> @constrained_vector_frem_v1f32() #0 {182; S390X-LABEL: constrained_vector_frem_v1f32:183; S390X:       # %bb.0: # %entry184; S390X-NEXT:    stmg %r14, %r15, 112(%r15)185; S390X-NEXT:    .cfi_offset %r14, -48186; S390X-NEXT:    .cfi_offset %r15, -40187; S390X-NEXT:    aghi %r15, -160188; S390X-NEXT:    .cfi_def_cfa_offset 320189; S390X-NEXT:    larl %r1, .LCPI5_0190; S390X-NEXT:    le %f0, 0(%r1)191; S390X-NEXT:    larl %r1, .LCPI5_1192; S390X-NEXT:    le %f2, 0(%r1)193; S390X-NEXT:    brasl %r14, fmodf@PLT194; S390X-NEXT:    lmg %r14, %r15, 272(%r15)195; S390X-NEXT:    br %r14196;197; SZ13-LABEL: constrained_vector_frem_v1f32:198; SZ13:       # %bb.0: # %entry199; SZ13-NEXT:    stmg %r14, %r15, 112(%r15)200; SZ13-NEXT:    .cfi_offset %r14, -48201; SZ13-NEXT:    .cfi_offset %r15, -40202; SZ13-NEXT:    aghi %r15, -160203; SZ13-NEXT:    .cfi_def_cfa_offset 320204; SZ13-NEXT:    larl %r1, .LCPI5_0205; SZ13-NEXT:    lde %f2, 0(%r1)206; SZ13-NEXT:    vgmf %v0, 2, 8207; SZ13-NEXT:    brasl %r14, fmodf@PLT208; SZ13-NEXT:    # kill: def $f0s killed $f0s def $v0209; SZ13-NEXT:    vlr %v24, %v0210; SZ13-NEXT:    lmg %r14, %r15, 272(%r15)211; SZ13-NEXT:    br %r14212entry:213  %rem = call <1 x float> @llvm.experimental.constrained.frem.v1f32(214           <1 x float> <float 1.000000e+00>,215           <1 x float> <float 1.000000e+01>,216           metadata !"round.dynamic",217           metadata !"fpexcept.strict") #0218  ret <1 x float> %rem219}220 221define <2 x double> @constrained_vector_frem_v2f64() #0 {222; S390X-LABEL: constrained_vector_frem_v2f64:223; S390X:       # %bb.0: # %entry224; S390X-NEXT:    stmg %r14, %r15, 112(%r15)225; S390X-NEXT:    .cfi_offset %r14, -48226; S390X-NEXT:    .cfi_offset %r15, -40227; S390X-NEXT:    aghi %r15, -176228; S390X-NEXT:    .cfi_def_cfa_offset 336229; S390X-NEXT:    std %f8, 168(%r15) # 8-byte Spill230; S390X-NEXT:    std %f9, 160(%r15) # 8-byte Spill231; S390X-NEXT:    .cfi_offset %f8, -168232; S390X-NEXT:    .cfi_offset %f9, -176233; S390X-NEXT:    larl %r1, .LCPI6_0234; S390X-NEXT:    ld %f0, 0(%r1)235; S390X-NEXT:    larl %r1, .LCPI6_1236; S390X-NEXT:    ld %f8, 0(%r1)237; S390X-NEXT:    ldr %f2, %f8238; S390X-NEXT:    brasl %r14, fmod@PLT239; S390X-NEXT:    larl %r1, .LCPI6_2240; S390X-NEXT:    ld %f1, 0(%r1)241; S390X-NEXT:    ldr %f9, %f0242; S390X-NEXT:    ldr %f0, %f1243; S390X-NEXT:    ldr %f2, %f8244; S390X-NEXT:    brasl %r14, fmod@PLT245; S390X-NEXT:    ldr %f2, %f9246; S390X-NEXT:    ld %f8, 168(%r15) # 8-byte Reload247; S390X-NEXT:    ld %f9, 160(%r15) # 8-byte Reload248; S390X-NEXT:    lmg %r14, %r15, 288(%r15)249; S390X-NEXT:    br %r14250;251; SZ13-LABEL: constrained_vector_frem_v2f64:252; SZ13:       # %bb.0: # %entry253; SZ13-NEXT:    stmg %r14, %r15, 112(%r15)254; SZ13-NEXT:    .cfi_offset %r14, -48255; SZ13-NEXT:    .cfi_offset %r15, -40256; SZ13-NEXT:    aghi %r15, -184257; SZ13-NEXT:    .cfi_def_cfa_offset 344258; SZ13-NEXT:    std %f8, 176(%r15) # 8-byte Spill259; SZ13-NEXT:    .cfi_offset %f8, -168260; SZ13-NEXT:    larl %r1, .LCPI6_0261; SZ13-NEXT:    ld %f8, 0(%r1)262; SZ13-NEXT:    vgmg %v0, 1, 1263; SZ13-NEXT:    ldr %f2, %f8264; SZ13-NEXT:    brasl %r14, fmod@PLT265; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v0266; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill267; SZ13-NEXT:    vgmg %v0, 2, 11268; SZ13-NEXT:    ldr %f2, %f8269; SZ13-NEXT:    brasl %r14, fmod@PLT270; SZ13-NEXT:    vl %v1, 160(%r15), 3 # 16-byte Reload271; SZ13-NEXT:    ld %f8, 176(%r15) # 8-byte Reload272; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v0273; SZ13-NEXT:    vmrhg %v24, %v0, %v1274; SZ13-NEXT:    lmg %r14, %r15, 296(%r15)275; SZ13-NEXT:    br %r14276entry:277  %rem = call <2 x double> @llvm.experimental.constrained.frem.v2f64(278           <2 x double> <double 1.000000e+00, double 2.000000e+00>,279           <2 x double> <double 1.000000e+01, double 1.000000e+01>,280           metadata !"round.dynamic",281           metadata !"fpexcept.strict") #0282  ret <2 x double> %rem283}284 285define <3 x float> @constrained_vector_frem_v3f32() #0 {286; S390X-LABEL: constrained_vector_frem_v3f32:287; S390X:       # %bb.0: # %entry288; S390X-NEXT:    stmg %r14, %r15, 112(%r15)289; S390X-NEXT:    .cfi_offset %r14, -48290; S390X-NEXT:    .cfi_offset %r15, -40291; S390X-NEXT:    aghi %r15, -184292; S390X-NEXT:    .cfi_def_cfa_offset 344293; S390X-NEXT:    std %f8, 176(%r15) # 8-byte Spill294; S390X-NEXT:    std %f9, 168(%r15) # 8-byte Spill295; S390X-NEXT:    std %f10, 160(%r15) # 8-byte Spill296; S390X-NEXT:    .cfi_offset %f8, -168297; S390X-NEXT:    .cfi_offset %f9, -176298; S390X-NEXT:    .cfi_offset %f10, -184299; S390X-NEXT:    larl %r1, .LCPI7_0300; S390X-NEXT:    le %f0, 0(%r1)301; S390X-NEXT:    larl %r1, .LCPI7_1302; S390X-NEXT:    le %f8, 0(%r1)303; S390X-NEXT:    ler %f2, %f8304; S390X-NEXT:    brasl %r14, fmodf@PLT305; S390X-NEXT:    larl %r1, .LCPI7_2306; S390X-NEXT:    le %f1, 0(%r1)307; S390X-NEXT:    ler %f9, %f0308; S390X-NEXT:    ler %f0, %f1309; S390X-NEXT:    ler %f2, %f8310; S390X-NEXT:    brasl %r14, fmodf@PLT311; S390X-NEXT:    larl %r1, .LCPI7_3312; S390X-NEXT:    le %f1, 0(%r1)313; S390X-NEXT:    ler %f10, %f0314; S390X-NEXT:    ler %f0, %f1315; S390X-NEXT:    ler %f2, %f8316; S390X-NEXT:    brasl %r14, fmodf@PLT317; S390X-NEXT:    ler %f2, %f10318; S390X-NEXT:    ler %f4, %f9319; S390X-NEXT:    ld %f8, 176(%r15) # 8-byte Reload320; S390X-NEXT:    ld %f9, 168(%r15) # 8-byte Reload321; S390X-NEXT:    ld %f10, 160(%r15) # 8-byte Reload322; S390X-NEXT:    lmg %r14, %r15, 296(%r15)323; S390X-NEXT:    br %r14324;325; SZ13-LABEL: constrained_vector_frem_v3f32:326; SZ13:       # %bb.0: # %entry327; SZ13-NEXT:    stmg %r14, %r15, 112(%r15)328; SZ13-NEXT:    .cfi_offset %r14, -48329; SZ13-NEXT:    .cfi_offset %r15, -40330; SZ13-NEXT:    aghi %r15, -200331; SZ13-NEXT:    .cfi_def_cfa_offset 360332; SZ13-NEXT:    std %f8, 192(%r15) # 8-byte Spill333; SZ13-NEXT:    .cfi_offset %f8, -168334; SZ13-NEXT:    larl %r1, .LCPI7_0335; SZ13-NEXT:    lde %f0, 0(%r1)336; SZ13-NEXT:    larl %r1, .LCPI7_1337; SZ13-NEXT:    lde %f8, 0(%r1)338; SZ13-NEXT:    ldr %f2, %f8339; SZ13-NEXT:    brasl %r14, fmodf@PLT340; SZ13-NEXT:    # kill: def $f0s killed $f0s def $v0341; SZ13-NEXT:    vst %v0, 176(%r15), 3 # 16-byte Spill342; SZ13-NEXT:    vgmf %v0, 2, 8343; SZ13-NEXT:    ldr %f2, %f8344; SZ13-NEXT:    brasl %r14, fmodf@PLT345; SZ13-NEXT:    # kill: def $f0s killed $f0s def $v0346; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill347; SZ13-NEXT:    vgmf %v0, 1, 1348; SZ13-NEXT:    ldr %f2, %f8349; SZ13-NEXT:    brasl %r14, fmodf@PLT350; SZ13-NEXT:    vl %v1, 160(%r15), 3 # 16-byte Reload351; SZ13-NEXT:    # kill: def $f0s killed $f0s def $v0352; SZ13-NEXT:    vmrhf %v0, %v1, %v0353; SZ13-NEXT:    vl %v1, 176(%r15), 3 # 16-byte Reload354; SZ13-NEXT:    ld %f8, 192(%r15) # 8-byte Reload355; SZ13-NEXT:    vrepf %v1, %v1, 0356; SZ13-NEXT:    vmrhg %v24, %v0, %v1357; SZ13-NEXT:    lmg %r14, %r15, 312(%r15)358; SZ13-NEXT:    br %r14359entry:360  %rem = call <3 x float> @llvm.experimental.constrained.frem.v3f32(361           <3 x float> <float 1.000000e+00, float 2.000000e+00, float 3.000000e+00>,362           <3 x float> <float 1.000000e+01, float 1.000000e+01, float 1.000000e+01>,363           metadata !"round.dynamic",364           metadata !"fpexcept.strict") #0365  ret <3 x float> %rem366}367 368define void @constrained_vector_frem_v3f64(ptr %a) #0 {369; S390X-LABEL: constrained_vector_frem_v3f64:370; S390X:       # %bb.0: # %entry371; S390X-NEXT:    stmg %r13, %r15, 104(%r15)372; S390X-NEXT:    .cfi_offset %r13, -56373; S390X-NEXT:    .cfi_offset %r14, -48374; S390X-NEXT:    .cfi_offset %r15, -40375; S390X-NEXT:    aghi %r15, -184376; S390X-NEXT:    .cfi_def_cfa_offset 344377; S390X-NEXT:    std %f8, 176(%r15) # 8-byte Spill378; S390X-NEXT:    std %f9, 168(%r15) # 8-byte Spill379; S390X-NEXT:    std %f10, 160(%r15) # 8-byte Spill380; S390X-NEXT:    .cfi_offset %f8, -168381; S390X-NEXT:    .cfi_offset %f9, -176382; S390X-NEXT:    .cfi_offset %f10, -184383; S390X-NEXT:    lgr %r13, %r2384; S390X-NEXT:    ld %f8, 0(%r2)385; S390X-NEXT:    ld %f2, 16(%r2)386; S390X-NEXT:    larl %r1, .LCPI8_0387; S390X-NEXT:    ld %f0, 0(%r1)388; S390X-NEXT:    ld %f9, 8(%r2)389; S390X-NEXT:    brasl %r14, fmod@PLT390; S390X-NEXT:    larl %r1, .LCPI8_1391; S390X-NEXT:    ld %f1, 0(%r1)392; S390X-NEXT:    ldr %f10, %f0393; S390X-NEXT:    ldr %f0, %f1394; S390X-NEXT:    ldr %f2, %f9395; S390X-NEXT:    brasl %r14, fmod@PLT396; S390X-NEXT:    larl %r1, .LCPI8_2397; S390X-NEXT:    ld %f1, 0(%r1)398; S390X-NEXT:    ldr %f9, %f0399; S390X-NEXT:    ldr %f0, %f1400; S390X-NEXT:    ldr %f2, %f8401; S390X-NEXT:    brasl %r14, fmod@PLT402; S390X-NEXT:    std %f0, 0(%r13)403; S390X-NEXT:    std %f9, 8(%r13)404; S390X-NEXT:    std %f10, 16(%r13)405; S390X-NEXT:    ld %f8, 176(%r15) # 8-byte Reload406; S390X-NEXT:    ld %f9, 168(%r15) # 8-byte Reload407; S390X-NEXT:    ld %f10, 160(%r15) # 8-byte Reload408; S390X-NEXT:    lmg %r13, %r15, 288(%r15)409; S390X-NEXT:    br %r14410;411; SZ13-LABEL: constrained_vector_frem_v3f64:412; SZ13:       # %bb.0: # %entry413; SZ13-NEXT:    stmg %r13, %r15, 104(%r15)414; SZ13-NEXT:    .cfi_offset %r13, -56415; SZ13-NEXT:    .cfi_offset %r14, -48416; SZ13-NEXT:    .cfi_offset %r15, -40417; SZ13-NEXT:    aghi %r15, -200418; SZ13-NEXT:    .cfi_def_cfa_offset 360419; SZ13-NEXT:    std %f8, 192(%r15) # 8-byte Spill420; SZ13-NEXT:    .cfi_offset %f8, -168421; SZ13-NEXT:    vl %v2, 0(%r2), 4422; SZ13-NEXT:    ld %f8, 16(%r2)423; SZ13-NEXT:    vgmg %v0, 2, 11424; SZ13-NEXT:    lgr %r13, %r2425; SZ13-NEXT:    vst %v2, 176(%r15), 3 # 16-byte Spill426; SZ13-NEXT:    # kill: def $f2d killed $f2d killed $v2427; SZ13-NEXT:    brasl %r14, fmod@PLT428; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v0429; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill430; SZ13-NEXT:    vl %v0, 176(%r15), 3 # 16-byte Reload431; SZ13-NEXT:    vrepg %v2, %v0, 1432; SZ13-NEXT:    vgmg %v0, 1, 1433; SZ13-NEXT:    # kill: def $f2d killed $f2d killed $v2434; SZ13-NEXT:    brasl %r14, fmod@PLT435; SZ13-NEXT:    vl %v1, 160(%r15), 3 # 16-byte Reload436; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v0437; SZ13-NEXT:    vmrhg %v0, %v1, %v0438; SZ13-NEXT:    larl %r1, .LCPI8_0439; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill440; SZ13-NEXT:    ld %f0, 0(%r1)441; SZ13-NEXT:    ldr %f2, %f8442; SZ13-NEXT:    brasl %r14, fmod@PLT443; SZ13-NEXT:    mvc 0(16,%r13), 160(%r15) # 16-byte Folded Reload444; SZ13-NEXT:    ld %f8, 192(%r15) # 8-byte Reload445; SZ13-NEXT:    std %f0, 16(%r13)446; SZ13-NEXT:    lmg %r13, %r15, 304(%r15)447; SZ13-NEXT:    br %r14448entry:449  %b = load <3 x double>, ptr %a450  %rem = call <3 x double> @llvm.experimental.constrained.frem.v3f64(451           <3 x double> <double 1.000000e+00, double 2.000000e+00, double 3.000000e+00>,452           <3 x double> %b,453           metadata !"round.dynamic",454           metadata !"fpexcept.strict") #0455  store <3 x double> %rem, ptr %a456  ret void457}458 459define <4 x double> @constrained_vector_frem_v4f64() #0 {460; S390X-LABEL: constrained_vector_frem_v4f64:461; S390X:       # %bb.0:462; S390X-NEXT:    stmg %r14, %r15, 112(%r15)463; S390X-NEXT:    .cfi_offset %r14, -48464; S390X-NEXT:    .cfi_offset %r15, -40465; S390X-NEXT:    aghi %r15, -192466; S390X-NEXT:    .cfi_def_cfa_offset 352467; S390X-NEXT:    std %f8, 184(%r15) # 8-byte Spill468; S390X-NEXT:    std %f9, 176(%r15) # 8-byte Spill469; S390X-NEXT:    std %f10, 168(%r15) # 8-byte Spill470; S390X-NEXT:    std %f11, 160(%r15) # 8-byte Spill471; S390X-NEXT:    .cfi_offset %f8, -168472; S390X-NEXT:    .cfi_offset %f9, -176473; S390X-NEXT:    .cfi_offset %f10, -184474; S390X-NEXT:    .cfi_offset %f11, -192475; S390X-NEXT:    larl %r1, .LCPI9_0476; S390X-NEXT:    ld %f0, 0(%r1)477; S390X-NEXT:    larl %r1, .LCPI9_1478; S390X-NEXT:    ld %f8, 0(%r1)479; S390X-NEXT:    ldr %f2, %f8480; S390X-NEXT:    brasl %r14, fmod@PLT481; S390X-NEXT:    larl %r1, .LCPI9_2482; S390X-NEXT:    ld %f1, 0(%r1)483; S390X-NEXT:    ldr %f9, %f0484; S390X-NEXT:    ldr %f0, %f1485; S390X-NEXT:    ldr %f2, %f8486; S390X-NEXT:    brasl %r14, fmod@PLT487; S390X-NEXT:    larl %r1, .LCPI9_3488; S390X-NEXT:    ld %f1, 0(%r1)489; S390X-NEXT:    ldr %f10, %f0490; S390X-NEXT:    ldr %f0, %f1491; S390X-NEXT:    ldr %f2, %f8492; S390X-NEXT:    brasl %r14, fmod@PLT493; S390X-NEXT:    larl %r1, .LCPI9_4494; S390X-NEXT:    ld %f1, 0(%r1)495; S390X-NEXT:    ldr %f11, %f0496; S390X-NEXT:    ldr %f0, %f1497; S390X-NEXT:    ldr %f2, %f8498; S390X-NEXT:    brasl %r14, fmod@PLT499; S390X-NEXT:    ldr %f2, %f11500; S390X-NEXT:    ldr %f4, %f10501; S390X-NEXT:    ldr %f6, %f9502; S390X-NEXT:    ld %f8, 184(%r15) # 8-byte Reload503; S390X-NEXT:    ld %f9, 176(%r15) # 8-byte Reload504; S390X-NEXT:    ld %f10, 168(%r15) # 8-byte Reload505; S390X-NEXT:    ld %f11, 160(%r15) # 8-byte Reload506; S390X-NEXT:    lmg %r14, %r15, 304(%r15)507; S390X-NEXT:    br %r14508;509; SZ13-LABEL: constrained_vector_frem_v4f64:510; SZ13:       # %bb.0:511; SZ13-NEXT:    stmg %r14, %r15, 112(%r15)512; SZ13-NEXT:    .cfi_offset %r14, -48513; SZ13-NEXT:    .cfi_offset %r15, -40514; SZ13-NEXT:    aghi %r15, -200515; SZ13-NEXT:    .cfi_def_cfa_offset 360516; SZ13-NEXT:    std %f8, 192(%r15) # 8-byte Spill517; SZ13-NEXT:    .cfi_offset %f8, -168518; SZ13-NEXT:    larl %r1, .LCPI9_0519; SZ13-NEXT:    ld %f8, 0(%r1)520; SZ13-NEXT:    vgmg %v0, 1, 1521; SZ13-NEXT:    ldr %f2, %f8522; SZ13-NEXT:    brasl %r14, fmod@PLT523; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v0524; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill525; SZ13-NEXT:    vgmg %v0, 2, 11526; SZ13-NEXT:    ldr %f2, %f8527; SZ13-NEXT:    brasl %r14, fmod@PLT528; SZ13-NEXT:    vl %v1, 160(%r15), 3 # 16-byte Reload529; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v0530; SZ13-NEXT:    vmrhg %v0, %v0, %v1531; SZ13-NEXT:    larl %r1, .LCPI9_1532; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill533; SZ13-NEXT:    ld %f0, 0(%r1)534; SZ13-NEXT:    ldr %f2, %f8535; SZ13-NEXT:    brasl %r14, fmod@PLT536; SZ13-NEXT:    larl %r1, .LCPI9_2537; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v0538; SZ13-NEXT:    vst %v0, 176(%r15), 3 # 16-byte Spill539; SZ13-NEXT:    ld %f0, 0(%r1)540; SZ13-NEXT:    ldr %f2, %f8541; SZ13-NEXT:    brasl %r14, fmod@PLT542; SZ13-NEXT:    vl %v1, 176(%r15), 3 # 16-byte Reload543; SZ13-NEXT:    vl %v24, 160(%r15), 3 # 16-byte Reload544; SZ13-NEXT:    ld %f8, 192(%r15) # 8-byte Reload545; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v0546; SZ13-NEXT:    vmrhg %v26, %v0, %v1547; SZ13-NEXT:    lmg %r14, %r15, 312(%r15)548; SZ13-NEXT:    br %r14549  %rem = call <4 x double> @llvm.experimental.constrained.frem.v4f64(550           <4 x double> <double 1.000000e+00, double 2.000000e+00,551                         double 3.000000e+00, double 4.000000e+00>,552           <4 x double> <double 1.000000e+01, double 1.000000e+01,553                         double 1.000000e+01, double 1.000000e+01>,554           metadata !"round.dynamic",555           metadata !"fpexcept.strict") #0556  ret <4 x double> %rem557}558 559define <1 x float> @constrained_vector_fmul_v1f32() #0 {560; S390X-LABEL: constrained_vector_fmul_v1f32:561; S390X:       # %bb.0: # %entry562; S390X-NEXT:    larl %r1, .LCPI10_0563; S390X-NEXT:    le %f0, 0(%r1)564; S390X-NEXT:    larl %r1, .LCPI10_1565; S390X-NEXT:    meeb %f0, 0(%r1)566; S390X-NEXT:    br %r14567;568; SZ13-LABEL: constrained_vector_fmul_v1f32:569; SZ13:       # %bb.0: # %entry570; SZ13-NEXT:    vgmf %v0, 1, 1571; SZ13-NEXT:    vgmf %v1, 1, 8572; SZ13-NEXT:    meebr %f1, %f0573; SZ13-NEXT:    vlr %v24, %v1574; SZ13-NEXT:    br %r14575entry:576  %mul = call <1 x float> @llvm.experimental.constrained.fmul.v1f32(577           <1 x float> <float 0x7FF0000000000000>,578           <1 x float> <float 2.000000e+00>,579           metadata !"round.dynamic",580           metadata !"fpexcept.strict") #0581  ret <1 x float> %mul582}583 584define <2 x double> @constrained_vector_fmul_v2f64() #0 {585; S390X-LABEL: constrained_vector_fmul_v2f64:586; S390X:       # %bb.0: # %entry587; S390X-NEXT:    larl %r1, .LCPI11_0588; S390X-NEXT:    ld %f0, 0(%r1)589; S390X-NEXT:    larl %r1, .LCPI11_1590; S390X-NEXT:    ldr %f2, %f0591; S390X-NEXT:    mdb %f2, 0(%r1)592; S390X-NEXT:    larl %r1, .LCPI11_2593; S390X-NEXT:    mdb %f0, 0(%r1)594; S390X-NEXT:    br %r14595;596; SZ13-LABEL: constrained_vector_fmul_v2f64:597; SZ13:       # %bb.0: # %entry598; SZ13-NEXT:    larl %r1, .LCPI11_0599; SZ13-NEXT:    vl %v0, 0(%r1), 3600; SZ13-NEXT:    larl %r1, .LCPI11_1601; SZ13-NEXT:    vl %v1, 0(%r1), 3602; SZ13-NEXT:    vfmdb %v24, %v1, %v0603; SZ13-NEXT:    br %r14604entry:605  %mul = call <2 x double> @llvm.experimental.constrained.fmul.v2f64(606           <2 x double> <double 0x7FEFFFFFFFFFFFFF, double 0x7FEFFFFFFFFFFFFF>,607           <2 x double> <double 2.000000e+00, double 3.000000e+00>,608           metadata !"round.dynamic",609           metadata !"fpexcept.strict") #0610  ret <2 x double> %mul611}612 613define <3 x float> @constrained_vector_fmul_v3f32() #0 {614; S390X-LABEL: constrained_vector_fmul_v3f32:615; S390X:       # %bb.0: # %entry616; S390X-NEXT:    larl %r1, .LCPI12_0617; S390X-NEXT:    le %f0, 0(%r1)618; S390X-NEXT:    larl %r1, .LCPI12_1619; S390X-NEXT:    ler %f4, %f0620; S390X-NEXT:    meeb %f4, 0(%r1)621; S390X-NEXT:    larl %r1, .LCPI12_2622; S390X-NEXT:    ler %f2, %f0623; S390X-NEXT:    meeb %f2, 0(%r1)624; S390X-NEXT:    larl %r1, .LCPI12_3625; S390X-NEXT:    meeb %f0, 0(%r1)626; S390X-NEXT:    br %r14627;628; SZ13-LABEL: constrained_vector_fmul_v3f32:629; SZ13:       # %bb.0: # %entry630; SZ13-NEXT:    vgmf %v0, 1, 8631; SZ13-NEXT:    larl %r1, .LCPI12_0632; SZ13-NEXT:    vgmf %v2, 2, 8633; SZ13-NEXT:    vgmf %v1, 1, 8634; SZ13-NEXT:    meeb %f1, 0(%r1)635; SZ13-NEXT:    larl %r1, .LCPI12_1636; SZ13-NEXT:    meebr %f2, %f0637; SZ13-NEXT:    meeb %f0, 0(%r1)638; SZ13-NEXT:    vmrhf %v0, %v2, %v0639; SZ13-NEXT:    vrepf %v1, %v1, 0640; SZ13-NEXT:    vmrhg %v24, %v0, %v1641; SZ13-NEXT:    br %r14642entry:643  %mul = call <3 x float> @llvm.experimental.constrained.fmul.v3f32(644           <3 x float> <float 0x7FF0000000000000, float 0x7FF0000000000000,645                        float 0x7FF0000000000000>,646           <3 x float> <float 1.000000e+00, float 1.000000e+01, float 1.000000e+02>,647           metadata !"round.dynamic",648           metadata !"fpexcept.strict") #0649  ret <3 x float> %mul650}651 652define void @constrained_vector_fmul_v3f64(ptr %a) #0 {653; S390X-LABEL: constrained_vector_fmul_v3f64:654; S390X:       # %bb.0: # %entry655; S390X-NEXT:    larl %r1, .LCPI13_0656; S390X-NEXT:    ld %f0, 0(%r1)657; S390X-NEXT:    ldr %f1, %f0658; S390X-NEXT:    ldr %f2, %f0659; S390X-NEXT:    mdb %f0, 0(%r2)660; S390X-NEXT:    mdb %f2, 8(%r2)661; S390X-NEXT:    mdb %f1, 16(%r2)662; S390X-NEXT:    std %f0, 0(%r2)663; S390X-NEXT:    std %f2, 8(%r2)664; S390X-NEXT:    std %f1, 16(%r2)665; S390X-NEXT:    br %r14666;667; SZ13-LABEL: constrained_vector_fmul_v3f64:668; SZ13:       # %bb.0: # %entry669; SZ13-NEXT:    larl %r1, .LCPI13_0670; SZ13-NEXT:    ld %f1, 0(%r1)671; SZ13-NEXT:    larl %r1, .LCPI13_1672; SZ13-NEXT:    vl %v0, 0(%r2), 4673; SZ13-NEXT:    vl %v2, 0(%r1), 3674; SZ13-NEXT:    mdb %f1, 16(%r2)675; SZ13-NEXT:    vfmdb %v0, %v2, %v0676; SZ13-NEXT:    vst %v0, 0(%r2), 4677; SZ13-NEXT:    std %f1, 16(%r2)678; SZ13-NEXT:    br %r14679entry:680  %b = load <3 x double>, ptr %a681  %mul = call <3 x double> @llvm.experimental.constrained.fmul.v3f64(682           <3 x double> <double 0x7FEFFFFFFFFFFFFF, double 0x7FEFFFFFFFFFFFFF,683                        double 0x7FEFFFFFFFFFFFFF>,684           <3 x double> %b,685           metadata !"round.dynamic",686           metadata !"fpexcept.strict") #0687  store <3 x double> %mul, ptr %a688  ret void689}690 691define <4 x double> @constrained_vector_fmul_v4f64() #0 {692; S390X-LABEL: constrained_vector_fmul_v4f64:693; S390X:       # %bb.0: # %entry694; S390X-NEXT:    larl %r1, .LCPI14_0695; S390X-NEXT:    ld %f0, 0(%r1)696; S390X-NEXT:    larl %r1, .LCPI14_1697; S390X-NEXT:    ldr %f6, %f0698; S390X-NEXT:    mdb %f6, 0(%r1)699; S390X-NEXT:    larl %r1, .LCPI14_2700; S390X-NEXT:    ldr %f4, %f0701; S390X-NEXT:    mdb %f4, 0(%r1)702; S390X-NEXT:    larl %r1, .LCPI14_3703; S390X-NEXT:    ldr %f2, %f0704; S390X-NEXT:    mdb %f2, 0(%r1)705; S390X-NEXT:    larl %r1, .LCPI14_4706; S390X-NEXT:    mdb %f0, 0(%r1)707; S390X-NEXT:    br %r14708;709; SZ13-LABEL: constrained_vector_fmul_v4f64:710; SZ13:       # %bb.0: # %entry711; SZ13-NEXT:    larl %r1, .LCPI14_0712; SZ13-NEXT:    vl %v0, 0(%r1), 3713; SZ13-NEXT:    larl %r1, .LCPI14_1714; SZ13-NEXT:    vl %v1, 0(%r1), 3715; SZ13-NEXT:    larl %r1, .LCPI14_2716; SZ13-NEXT:    vfmdb %v26, %v1, %v0717; SZ13-NEXT:    vl %v0, 0(%r1), 3718; SZ13-NEXT:    vfmdb %v24, %v1, %v0719; SZ13-NEXT:    br %r14720entry:721  %mul = call <4 x double> @llvm.experimental.constrained.fmul.v4f64(722           <4 x double> <double 0x7FEFFFFFFFFFFFFF, double 0x7FEFFFFFFFFFFFFF,723                         double 0x7FEFFFFFFFFFFFFF, double 0x7FEFFFFFFFFFFFFF>,724           <4 x double> <double 2.000000e+00, double 3.000000e+00,725                         double 4.000000e+00, double 5.000000e+00>,726           metadata !"round.dynamic",727           metadata !"fpexcept.strict") #0728  ret <4 x double> %mul729}730 731define <1 x float> @constrained_vector_fadd_v1f32() #0 {732; S390X-LABEL: constrained_vector_fadd_v1f32:733; S390X:       # %bb.0: # %entry734; S390X-NEXT:    larl %r1, .LCPI15_0735; S390X-NEXT:    le %f0, 0(%r1)736; S390X-NEXT:    larl %r1, .LCPI15_1737; S390X-NEXT:    aeb %f0, 0(%r1)738; S390X-NEXT:    br %r14739;740; SZ13-LABEL: constrained_vector_fadd_v1f32:741; SZ13:       # %bb.0: # %entry742; SZ13-NEXT:    vgmf %v0, 2, 8743; SZ13-NEXT:    vgmf %v1, 1, 8744; SZ13-NEXT:    aebr %f1, %f0745; SZ13-NEXT:    vlr %v24, %v1746; SZ13-NEXT:    br %r14747entry:748  %add = call <1 x float> @llvm.experimental.constrained.fadd.v1f32(749           <1 x float> <float 0x7FF0000000000000>,750           <1 x float> <float 1.0>,751           metadata !"round.dynamic",752           metadata !"fpexcept.strict") #0753  ret <1 x float> %add754}755 756define <2 x double> @constrained_vector_fadd_v2f64() #0 {757; S390X-LABEL: constrained_vector_fadd_v2f64:758; S390X:       # %bb.0: # %entry759; S390X-NEXT:    larl %r1, .LCPI16_0760; S390X-NEXT:    ld %f0, 0(%r1)761; S390X-NEXT:    larl %r1, .LCPI16_1762; S390X-NEXT:    ldr %f2, %f0763; S390X-NEXT:    adb %f2, 0(%r1)764; S390X-NEXT:    larl %r1, .LCPI16_2765; S390X-NEXT:    adb %f0, 0(%r1)766; S390X-NEXT:    br %r14767;768; SZ13-LABEL: constrained_vector_fadd_v2f64:769; SZ13:       # %bb.0: # %entry770; SZ13-NEXT:    larl %r1, .LCPI16_0771; SZ13-NEXT:    vl %v0, 0(%r1), 3772; SZ13-NEXT:    larl %r1, .LCPI16_1773; SZ13-NEXT:    vl %v1, 0(%r1), 3774; SZ13-NEXT:    vfadb %v24, %v1, %v0775; SZ13-NEXT:    br %r14776entry:777  %add = call <2 x double> @llvm.experimental.constrained.fadd.v2f64(778           <2 x double> <double 0x7FEFFFFFFFFFFFFF, double 0x7FEFFFFFFFFFFFFF>,779           <2 x double> <double 1.000000e+00, double 1.000000e-01>,780           metadata !"round.dynamic",781           metadata !"fpexcept.strict") #0782  ret <2 x double> %add783}784 785define <3 x float> @constrained_vector_fadd_v3f32() #0 {786; S390X-LABEL: constrained_vector_fadd_v3f32:787; S390X:       # %bb.0: # %entry788; S390X-NEXT:    larl %r1, .LCPI17_0789; S390X-NEXT:    le %f0, 0(%r1)790; S390X-NEXT:    lzer %f4791; S390X-NEXT:    aebr %f4, %f0792; S390X-NEXT:    larl %r1, .LCPI17_1793; S390X-NEXT:    ler %f2, %f0794; S390X-NEXT:    aeb %f2, 0(%r1)795; S390X-NEXT:    larl %r1, .LCPI17_2796; S390X-NEXT:    aeb %f0, 0(%r1)797; S390X-NEXT:    br %r14798;799; SZ13-LABEL: constrained_vector_fadd_v3f32:800; SZ13:       # %bb.0: # %entry801; SZ13-NEXT:    vgbm %v0, 61440802; SZ13-NEXT:    vgmf %v2, 1, 1803; SZ13-NEXT:    vgmf %v3, 2, 8804; SZ13-NEXT:    lzer %f1805; SZ13-NEXT:    aebr %f1, %f0806; SZ13-NEXT:    aebr %f2, %f0807; SZ13-NEXT:    aebr %f3, %f0808; SZ13-NEXT:    vmrhf %v0, %v2, %v3809; SZ13-NEXT:    vrepf %v1, %v1, 0810; SZ13-NEXT:    vmrhg %v24, %v0, %v1811; SZ13-NEXT:    br %r14812entry:813  %add = call <3 x float> @llvm.experimental.constrained.fadd.v3f32(814           <3 x float> <float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000,815                        float 0xFFFFFFFFE0000000>,816           <3 x float> <float 2.0, float 1.0, float 0.0>,817           metadata !"round.dynamic",818           metadata !"fpexcept.strict") #0819  ret <3 x float> %add820}821 822define void @constrained_vector_fadd_v3f64(ptr %a) #0 {823; S390X-LABEL: constrained_vector_fadd_v3f64:824; S390X:       # %bb.0: # %entry825; S390X-NEXT:    larl %r1, .LCPI18_0826; S390X-NEXT:    ld %f0, 0(%r1)827; S390X-NEXT:    ldr %f1, %f0828; S390X-NEXT:    ldr %f2, %f0829; S390X-NEXT:    adb %f0, 0(%r2)830; S390X-NEXT:    adb %f2, 8(%r2)831; S390X-NEXT:    adb %f1, 16(%r2)832; S390X-NEXT:    std %f0, 0(%r2)833; S390X-NEXT:    std %f2, 8(%r2)834; S390X-NEXT:    std %f1, 16(%r2)835; S390X-NEXT:    br %r14836;837; SZ13-LABEL: constrained_vector_fadd_v3f64:838; SZ13:       # %bb.0: # %entry839; SZ13-NEXT:    larl %r1, .LCPI18_0840; SZ13-NEXT:    ld %f1, 0(%r1)841; SZ13-NEXT:    larl %r1, .LCPI18_1842; SZ13-NEXT:    vl %v0, 0(%r2), 4843; SZ13-NEXT:    vl %v2, 0(%r1), 3844; SZ13-NEXT:    adb %f1, 16(%r2)845; SZ13-NEXT:    vfadb %v0, %v2, %v0846; SZ13-NEXT:    vst %v0, 0(%r2), 4847; SZ13-NEXT:    std %f1, 16(%r2)848; SZ13-NEXT:    br %r14849entry:850  %b = load <3 x double>, ptr %a851  %add = call <3 x double> @llvm.experimental.constrained.fadd.v3f64(852           <3 x double> <double 0x7FEFFFFFFFFFFFFF, double 0x7FEFFFFFFFFFFFFF,853                         double 0x7FEFFFFFFFFFFFFF>,854           <3 x double> %b,855           metadata !"round.dynamic",856           metadata !"fpexcept.strict") #0857  store <3 x double> %add, ptr %a858  ret void859}860 861define <4 x double> @constrained_vector_fadd_v4f64() #0 {862; S390X-LABEL: constrained_vector_fadd_v4f64:863; S390X:       # %bb.0: # %entry864; S390X-NEXT:    larl %r1, .LCPI19_0865; S390X-NEXT:    ld %f0, 0(%r1)866; S390X-NEXT:    larl %r1, .LCPI19_1867; S390X-NEXT:    ldr %f6, %f0868; S390X-NEXT:    adb %f6, 0(%r1)869; S390X-NEXT:    larl %r1, .LCPI19_2870; S390X-NEXT:    ldr %f4, %f0871; S390X-NEXT:    adb %f4, 0(%r1)872; S390X-NEXT:    larl %r1, .LCPI19_3873; S390X-NEXT:    ldr %f2, %f0874; S390X-NEXT:    adb %f2, 0(%r1)875; S390X-NEXT:    larl %r1, .LCPI19_4876; S390X-NEXT:    adb %f0, 0(%r1)877; S390X-NEXT:    br %r14878;879; SZ13-LABEL: constrained_vector_fadd_v4f64:880; SZ13:       # %bb.0: # %entry881; SZ13-NEXT:    larl %r1, .LCPI19_0882; SZ13-NEXT:    vl %v0, 0(%r1), 3883; SZ13-NEXT:    larl %r1, .LCPI19_1884; SZ13-NEXT:    vl %v1, 0(%r1), 3885; SZ13-NEXT:    larl %r1, .LCPI19_2886; SZ13-NEXT:    vfadb %v26, %v1, %v0887; SZ13-NEXT:    vl %v0, 0(%r1), 3888; SZ13-NEXT:    vfadb %v24, %v1, %v0889; SZ13-NEXT:    br %r14890entry:891  %add = call <4 x double> @llvm.experimental.constrained.fadd.v4f64(892           <4 x double> <double 0x7FEFFFFFFFFFFFFF, double 0x7FEFFFFFFFFFFFFF,893                         double 0x7FEFFFFFFFFFFFFF, double 0x7FEFFFFFFFFFFFFF>,894           <4 x double> <double 1.000000e+00, double 1.000000e-01,895                         double 2.000000e+00, double 2.000000e-01>,896           metadata !"round.dynamic",897           metadata !"fpexcept.strict") #0898  ret <4 x double> %add899}900 901define <1 x float> @constrained_vector_fsub_v1f32() #0 {902; S390X-LABEL: constrained_vector_fsub_v1f32:903; S390X:       # %bb.0: # %entry904; S390X-NEXT:    larl %r1, .LCPI20_0905; S390X-NEXT:    le %f0, 0(%r1)906; S390X-NEXT:    larl %r1, .LCPI20_1907; S390X-NEXT:    seb %f0, 0(%r1)908; S390X-NEXT:    br %r14909;910; SZ13-LABEL: constrained_vector_fsub_v1f32:911; SZ13:       # %bb.0: # %entry912; SZ13-NEXT:    vgmf %v0, 2, 8913; SZ13-NEXT:    vgmf %v1, 1, 8914; SZ13-NEXT:    sebr %f1, %f0915; SZ13-NEXT:    vlr %v24, %v1916; SZ13-NEXT:    br %r14917entry:918  %sub = call <1 x float> @llvm.experimental.constrained.fsub.v1f32(919           <1 x float> <float 0x7FF0000000000000>,920           <1 x float> <float 1.000000e+00>,921           metadata !"round.dynamic",922           metadata !"fpexcept.strict") #0923  ret <1 x float> %sub924}925 926define <2 x double> @constrained_vector_fsub_v2f64() #0 {927; S390X-LABEL: constrained_vector_fsub_v2f64:928; S390X:       # %bb.0: # %entry929; S390X-NEXT:    larl %r1, .LCPI21_0930; S390X-NEXT:    ld %f0, 0(%r1)931; S390X-NEXT:    larl %r1, .LCPI21_1932; S390X-NEXT:    ldr %f2, %f0933; S390X-NEXT:    sdb %f2, 0(%r1)934; S390X-NEXT:    larl %r1, .LCPI21_2935; S390X-NEXT:    sdb %f0, 0(%r1)936; S390X-NEXT:    br %r14937;938; SZ13-LABEL: constrained_vector_fsub_v2f64:939; SZ13:       # %bb.0: # %entry940; SZ13-NEXT:    larl %r1, .LCPI21_0941; SZ13-NEXT:    vl %v0, 0(%r1), 3942; SZ13-NEXT:    vgmg %v1, 12, 10943; SZ13-NEXT:    vfsdb %v24, %v1, %v0944; SZ13-NEXT:    br %r14945entry:946  %sub = call <2 x double> @llvm.experimental.constrained.fsub.v2f64(947           <2 x double> <double 0xFFEFFFFFFFFFFFFF, double 0xFFEFFFFFFFFFFFFF>,948           <2 x double> <double 1.000000e+00, double 1.000000e-01>,949           metadata !"round.dynamic",950           metadata !"fpexcept.strict") #0951  ret <2 x double> %sub952}953 954define <3 x float> @constrained_vector_fsub_v3f32() #0 {955; S390X-LABEL: constrained_vector_fsub_v3f32:956; S390X:       # %bb.0: # %entry957; S390X-NEXT:    larl %r1, .LCPI22_0958; S390X-NEXT:    le %f0, 0(%r1)959; S390X-NEXT:    ler %f4, %f0960; S390X-NEXT:    larl %r1, .LCPI22_1961; S390X-NEXT:    ler %f2, %f0962; S390X-NEXT:    seb %f2, 0(%r1)963; S390X-NEXT:    larl %r1, .LCPI22_2964; S390X-NEXT:    seb %f0, 0(%r1)965; S390X-NEXT:    lzer %f1966; S390X-NEXT:    sebr %f4, %f1967; S390X-NEXT:    br %r14968;969; SZ13-LABEL: constrained_vector_fsub_v3f32:970; SZ13:       # %bb.0: # %entry971; SZ13-NEXT:    vgbm %v2, 61440972; SZ13-NEXT:    lzer %f1973; SZ13-NEXT:    sebr %f2, %f1974; SZ13-NEXT:    vgmf %v1, 1, 1975; SZ13-NEXT:    vgbm %v3, 61440976; SZ13-NEXT:    vgbm %v0, 61440977; SZ13-NEXT:    sebr %f3, %f1978; SZ13-NEXT:    vgmf %v1, 2, 8979; SZ13-NEXT:    sebr %f0, %f1980; SZ13-NEXT:    vmrhf %v0, %v3, %v0981; SZ13-NEXT:    vrepf %v1, %v2, 0982; SZ13-NEXT:    vmrhg %v24, %v0, %v1983; SZ13-NEXT:    br %r14984entry:985  %sub = call <3 x float> @llvm.experimental.constrained.fsub.v3f32(986           <3 x float> <float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000,987                        float 0xFFFFFFFFE0000000>,988           <3 x float> <float 2.0, float 1.0, float 0.0>,989           metadata !"round.dynamic",990           metadata !"fpexcept.strict") #0991  ret <3 x float> %sub992}993 994define void @constrained_vector_fsub_v3f64(ptr %a) #0 {995; S390X-LABEL: constrained_vector_fsub_v3f64:996; S390X:       # %bb.0: # %entry997; S390X-NEXT:    larl %r1, .LCPI23_0998; S390X-NEXT:    ld %f0, 0(%r1)999; S390X-NEXT:    ldr %f1, %f01000; S390X-NEXT:    ldr %f2, %f01001; S390X-NEXT:    sdb %f0, 0(%r2)1002; S390X-NEXT:    sdb %f2, 8(%r2)1003; S390X-NEXT:    sdb %f1, 16(%r2)1004; S390X-NEXT:    std %f0, 0(%r2)1005; S390X-NEXT:    std %f2, 8(%r2)1006; S390X-NEXT:    std %f1, 16(%r2)1007; S390X-NEXT:    br %r141008;1009; SZ13-LABEL: constrained_vector_fsub_v3f64:1010; SZ13:       # %bb.0: # %entry1011; SZ13-NEXT:    vl %v0, 0(%r2), 41012; SZ13-NEXT:    vgmg %v2, 12, 101013; SZ13-NEXT:    sdb %f2, 16(%r2)1014; SZ13-NEXT:    vgmg %v1, 12, 101015; SZ13-NEXT:    vfsdb %v0, %v1, %v01016; SZ13-NEXT:    vst %v0, 0(%r2), 41017; SZ13-NEXT:    std %f2, 16(%r2)1018; SZ13-NEXT:    br %r141019entry:1020  %b = load <3 x double>, ptr %a1021  %sub = call <3 x double> @llvm.experimental.constrained.fsub.v3f64(1022           <3 x double> <double 0xFFEFFFFFFFFFFFFF, double 0xFFEFFFFFFFFFFFFF,1023                         double 0xFFEFFFFFFFFFFFFF>,1024           <3 x double> %b,1025           metadata !"round.dynamic",1026           metadata !"fpexcept.strict") #01027  store <3 x double> %sub, ptr %a1028  ret void1029}1030 1031define <4 x double> @constrained_vector_fsub_v4f64() #0 {1032; S390X-LABEL: constrained_vector_fsub_v4f64:1033; S390X:       # %bb.0: # %entry1034; S390X-NEXT:    larl %r1, .LCPI24_01035; S390X-NEXT:    ld %f0, 0(%r1)1036; S390X-NEXT:    larl %r1, .LCPI24_11037; S390X-NEXT:    ldr %f6, %f01038; S390X-NEXT:    sdb %f6, 0(%r1)1039; S390X-NEXT:    larl %r1, .LCPI24_21040; S390X-NEXT:    ldr %f4, %f01041; S390X-NEXT:    sdb %f4, 0(%r1)1042; S390X-NEXT:    larl %r1, .LCPI24_31043; S390X-NEXT:    ldr %f2, %f01044; S390X-NEXT:    sdb %f2, 0(%r1)1045; S390X-NEXT:    larl %r1, .LCPI24_41046; S390X-NEXT:    sdb %f0, 0(%r1)1047; S390X-NEXT:    br %r141048;1049; SZ13-LABEL: constrained_vector_fsub_v4f64:1050; SZ13:       # %bb.0: # %entry1051; SZ13-NEXT:    larl %r1, .LCPI24_01052; SZ13-NEXT:    vl %v0, 0(%r1), 31053; SZ13-NEXT:    vgmg %v1, 12, 101054; SZ13-NEXT:    larl %r1, .LCPI24_11055; SZ13-NEXT:    vfsdb %v26, %v1, %v01056; SZ13-NEXT:    vl %v0, 0(%r1), 31057; SZ13-NEXT:    vfsdb %v24, %v1, %v01058; SZ13-NEXT:    br %r141059entry:1060  %sub = call <4 x double> @llvm.experimental.constrained.fsub.v4f64(1061           <4 x double> <double 0xFFEFFFFFFFFFFFFF, double 0xFFEFFFFFFFFFFFFF,1062                         double 0xFFEFFFFFFFFFFFFF, double 0xFFEFFFFFFFFFFFFF>,1063           <4 x double> <double 1.000000e+00, double 1.000000e-01,1064                         double 2.000000e+00, double 2.000000e-01>,1065           metadata !"round.dynamic",1066           metadata !"fpexcept.strict") #01067  ret <4 x double> %sub1068}1069 1070define <1 x float> @constrained_vector_sqrt_v1f32() #0 {1071; S390X-LABEL: constrained_vector_sqrt_v1f32:1072; S390X:       # %bb.0: # %entry1073; S390X-NEXT:    larl %r1, .LCPI25_01074; S390X-NEXT:    sqeb %f0, 0(%r1)1075; S390X-NEXT:    br %r141076;1077; SZ13-LABEL: constrained_vector_sqrt_v1f32:1078; SZ13:       # %bb.0: # %entry1079; SZ13-NEXT:    larl %r1, .LCPI25_01080; SZ13-NEXT:    sqeb %f0, 0(%r1)1081; SZ13-NEXT:    vlr %v24, %v01082; SZ13-NEXT:    br %r141083entry:1084  %sqrt = call <1 x float> @llvm.experimental.constrained.sqrt.v1f32(1085                              <1 x float> <float 42.0>,1086                              metadata !"round.dynamic",1087                              metadata !"fpexcept.strict") #01088  ret <1 x float> %sqrt1089}1090 1091define <2 x double> @constrained_vector_sqrt_v2f64() #0 {1092; S390X-LABEL: constrained_vector_sqrt_v2f64:1093; S390X:       # %bb.0: # %entry1094; S390X-NEXT:    larl %r1, .LCPI26_01095; S390X-NEXT:    sqdb %f2, 0(%r1)1096; S390X-NEXT:    larl %r1, .LCPI26_11097; S390X-NEXT:    sqdb %f0, 0(%r1)1098; S390X-NEXT:    br %r141099;1100; SZ13-LABEL: constrained_vector_sqrt_v2f64:1101; SZ13:       # %bb.0: # %entry1102; SZ13-NEXT:    larl %r1, .LCPI26_01103; SZ13-NEXT:    vl %v0, 0(%r1), 31104; SZ13-NEXT:    vfsqdb %v24, %v01105; SZ13-NEXT:    br %r141106entry:1107  %sqrt = call <2 x double> @llvm.experimental.constrained.sqrt.v2f64(1108                              <2 x double> <double 42.0, double 42.1>,1109                              metadata !"round.dynamic",1110                              metadata !"fpexcept.strict") #01111  ret <2 x double> %sqrt1112}1113 1114define <3 x float> @constrained_vector_sqrt_v3f32() #0 {1115; S390X-LABEL: constrained_vector_sqrt_v3f32:1116; S390X:       # %bb.0: # %entry1117; S390X-NEXT:    larl %r1, .LCPI27_01118; S390X-NEXT:    sqeb %f4, 0(%r1)1119; S390X-NEXT:    larl %r1, .LCPI27_11120; S390X-NEXT:    sqeb %f2, 0(%r1)1121; S390X-NEXT:    larl %r1, .LCPI27_21122; S390X-NEXT:    sqeb %f0, 0(%r1)1123; S390X-NEXT:    br %r141124;1125; SZ13-LABEL: constrained_vector_sqrt_v3f32:1126; SZ13:       # %bb.0: # %entry1127; SZ13-NEXT:    larl %r1, .LCPI27_01128; SZ13-NEXT:    sqeb %f0, 0(%r1)1129; SZ13-NEXT:    larl %r1, .LCPI27_11130; SZ13-NEXT:    vrepf %v0, %v0, 01131; SZ13-NEXT:    sqeb %f1, 0(%r1)1132; SZ13-NEXT:    larl %r1, .LCPI27_21133; SZ13-NEXT:    sqeb %f2, 0(%r1)1134; SZ13-NEXT:    vmrhf %v1, %v1, %v21135; SZ13-NEXT:    vmrhg %v24, %v1, %v01136; SZ13-NEXT:    br %r141137entry:1138  %sqrt = call <3 x float> @llvm.experimental.constrained.sqrt.v3f32(1139                              <3 x float> <float 42.0, float 43.0, float 44.0>,1140                              metadata !"round.dynamic",1141                              metadata !"fpexcept.strict") #01142  ret <3 x float> %sqrt1143}1144 1145define void @constrained_vector_sqrt_v3f64(ptr %a) #0 {1146; S390X-LABEL: constrained_vector_sqrt_v3f64:1147; S390X:       # %bb.0: # %entry1148; S390X-NEXT:    sqdb %f0, 0(%r2)1149; S390X-NEXT:    sqdb %f1, 8(%r2)1150; S390X-NEXT:    sqdb %f2, 16(%r2)1151; S390X-NEXT:    std %f0, 0(%r2)1152; S390X-NEXT:    std %f1, 8(%r2)1153; S390X-NEXT:    std %f2, 16(%r2)1154; S390X-NEXT:    br %r141155;1156; SZ13-LABEL: constrained_vector_sqrt_v3f64:1157; SZ13:       # %bb.0: # %entry1158; SZ13-NEXT:    sqdb %f1, 16(%r2)1159; SZ13-NEXT:    vl %v0, 0(%r2), 41160; SZ13-NEXT:    std %f1, 16(%r2)1161; SZ13-NEXT:    vfsqdb %v0, %v01162; SZ13-NEXT:    vst %v0, 0(%r2), 41163; SZ13-NEXT:    br %r141164entry:1165  %b = load <3 x double>, ptr %a1166  %sqrt = call <3 x double> @llvm.experimental.constrained.sqrt.v3f64(1167                          <3 x double> %b,1168                          metadata !"round.dynamic",1169                          metadata !"fpexcept.strict") #01170  store <3 x double> %sqrt, ptr %a1171  ret void1172}1173 1174define <4 x double> @constrained_vector_sqrt_v4f64() #0 {1175; S390X-LABEL: constrained_vector_sqrt_v4f64:1176; S390X:       # %bb.0: # %entry1177; S390X-NEXT:    larl %r1, .LCPI29_01178; S390X-NEXT:    sqdb %f6, 0(%r1)1179; S390X-NEXT:    larl %r1, .LCPI29_11180; S390X-NEXT:    sqdb %f4, 0(%r1)1181; S390X-NEXT:    larl %r1, .LCPI29_21182; S390X-NEXT:    sqdb %f2, 0(%r1)1183; S390X-NEXT:    larl %r1, .LCPI29_31184; S390X-NEXT:    sqdb %f0, 0(%r1)1185; S390X-NEXT:    br %r141186;1187; SZ13-LABEL: constrained_vector_sqrt_v4f64:1188; SZ13:       # %bb.0: # %entry1189; SZ13-NEXT:    larl %r1, .LCPI29_01190; SZ13-NEXT:    vl %v0, 0(%r1), 31191; SZ13-NEXT:    vfsqdb %v26, %v01192; SZ13-NEXT:    larl %r1, .LCPI29_11193; SZ13-NEXT:    vl %v0, 0(%r1), 31194; SZ13-NEXT:    vfsqdb %v24, %v01195; SZ13-NEXT:    br %r141196 entry:1197  %sqrt = call <4 x double> @llvm.experimental.constrained.sqrt.v4f64(1198                              <4 x double> <double 42.0, double 42.1,1199                                            double 42.2, double 42.3>,1200                              metadata !"round.dynamic",1201                              metadata !"fpexcept.strict") #01202  ret <4 x double> %sqrt1203}1204 1205define <1 x float> @constrained_vector_pow_v1f32() #0 {1206; S390X-LABEL: constrained_vector_pow_v1f32:1207; S390X:       # %bb.0: # %entry1208; S390X-NEXT:    stmg %r14, %r15, 112(%r15)1209; S390X-NEXT:    .cfi_offset %r14, -481210; S390X-NEXT:    .cfi_offset %r15, -401211; S390X-NEXT:    aghi %r15, -1601212; S390X-NEXT:    .cfi_def_cfa_offset 3201213; S390X-NEXT:    larl %r1, .LCPI30_01214; S390X-NEXT:    le %f0, 0(%r1)1215; S390X-NEXT:    larl %r1, .LCPI30_11216; S390X-NEXT:    le %f2, 0(%r1)1217; S390X-NEXT:    brasl %r14, powf@PLT1218; S390X-NEXT:    lmg %r14, %r15, 272(%r15)1219; S390X-NEXT:    br %r141220;1221; SZ13-LABEL: constrained_vector_pow_v1f32:1222; SZ13:       # %bb.0: # %entry1223; SZ13-NEXT:    stmg %r14, %r15, 112(%r15)1224; SZ13-NEXT:    .cfi_offset %r14, -481225; SZ13-NEXT:    .cfi_offset %r15, -401226; SZ13-NEXT:    aghi %r15, -1601227; SZ13-NEXT:    .cfi_def_cfa_offset 3201228; SZ13-NEXT:    larl %r1, .LCPI30_01229; SZ13-NEXT:    lde %f0, 0(%r1)1230; SZ13-NEXT:    larl %r1, .LCPI30_11231; SZ13-NEXT:    lde %f2, 0(%r1)1232; SZ13-NEXT:    brasl %r14, powf@PLT1233; SZ13-NEXT:    # kill: def $f0s killed $f0s def $v01234; SZ13-NEXT:    vlr %v24, %v01235; SZ13-NEXT:    lmg %r14, %r15, 272(%r15)1236; SZ13-NEXT:    br %r141237entry:1238  %pow = call <1 x float> @llvm.experimental.constrained.pow.v1f32(1239                             <1 x float> <float 42.0>,1240                             <1 x float> <float 3.0>,1241                             metadata !"round.dynamic",1242                             metadata !"fpexcept.strict") #01243  ret <1 x float> %pow1244}1245 1246define <2 x double> @constrained_vector_pow_v2f64() #0 {1247; S390X-LABEL: constrained_vector_pow_v2f64:1248; S390X:       # %bb.0: # %entry1249; S390X-NEXT:    stmg %r14, %r15, 112(%r15)1250; S390X-NEXT:    .cfi_offset %r14, -481251; S390X-NEXT:    .cfi_offset %r15, -401252; S390X-NEXT:    aghi %r15, -1761253; S390X-NEXT:    .cfi_def_cfa_offset 3361254; S390X-NEXT:    std %f8, 168(%r15) # 8-byte Spill1255; S390X-NEXT:    std %f9, 160(%r15) # 8-byte Spill1256; S390X-NEXT:    .cfi_offset %f8, -1681257; S390X-NEXT:    .cfi_offset %f9, -1761258; S390X-NEXT:    larl %r1, .LCPI31_01259; S390X-NEXT:    ld %f0, 0(%r1)1260; S390X-NEXT:    larl %r1, .LCPI31_11261; S390X-NEXT:    ld %f8, 0(%r1)1262; S390X-NEXT:    ldr %f2, %f81263; S390X-NEXT:    brasl %r14, pow@PLT1264; S390X-NEXT:    larl %r1, .LCPI31_21265; S390X-NEXT:    ld %f1, 0(%r1)1266; S390X-NEXT:    ldr %f9, %f01267; S390X-NEXT:    ldr %f0, %f11268; S390X-NEXT:    ldr %f2, %f81269; S390X-NEXT:    brasl %r14, pow@PLT1270; S390X-NEXT:    ldr %f2, %f91271; S390X-NEXT:    ld %f8, 168(%r15) # 8-byte Reload1272; S390X-NEXT:    ld %f9, 160(%r15) # 8-byte Reload1273; S390X-NEXT:    lmg %r14, %r15, 288(%r15)1274; S390X-NEXT:    br %r141275;1276; SZ13-LABEL: constrained_vector_pow_v2f64:1277; SZ13:       # %bb.0: # %entry1278; SZ13-NEXT:    stmg %r14, %r15, 112(%r15)1279; SZ13-NEXT:    .cfi_offset %r14, -481280; SZ13-NEXT:    .cfi_offset %r15, -401281; SZ13-NEXT:    aghi %r15, -1841282; SZ13-NEXT:    .cfi_def_cfa_offset 3441283; SZ13-NEXT:    std %f8, 176(%r15) # 8-byte Spill1284; SZ13-NEXT:    .cfi_offset %f8, -1681285; SZ13-NEXT:    larl %r1, .LCPI31_01286; SZ13-NEXT:    ld %f0, 0(%r1)1287; SZ13-NEXT:    larl %r1, .LCPI31_11288; SZ13-NEXT:    ld %f8, 0(%r1)1289; SZ13-NEXT:    ldr %f2, %f81290; SZ13-NEXT:    brasl %r14, pow@PLT1291; SZ13-NEXT:    larl %r1, .LCPI31_21292; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v01293; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill1294; SZ13-NEXT:    ld %f0, 0(%r1)1295; SZ13-NEXT:    ldr %f2, %f81296; SZ13-NEXT:    brasl %r14, pow@PLT1297; SZ13-NEXT:    vl %v1, 160(%r15), 3 # 16-byte Reload1298; SZ13-NEXT:    ld %f8, 176(%r15) # 8-byte Reload1299; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v01300; SZ13-NEXT:    vmrhg %v24, %v0, %v11301; SZ13-NEXT:    lmg %r14, %r15, 296(%r15)1302; SZ13-NEXT:    br %r141303entry:1304  %pow = call <2 x double> @llvm.experimental.constrained.pow.v2f64(1305                             <2 x double> <double 42.1, double 42.2>,1306                             <2 x double> <double 3.0, double 3.0>,1307                             metadata !"round.dynamic",1308                             metadata !"fpexcept.strict") #01309  ret <2 x double> %pow1310}1311 1312define <3 x float> @constrained_vector_pow_v3f32() #0 {1313; S390X-LABEL: constrained_vector_pow_v3f32:1314; S390X:       # %bb.0: # %entry1315; S390X-NEXT:    stmg %r14, %r15, 112(%r15)1316; S390X-NEXT:    .cfi_offset %r14, -481317; S390X-NEXT:    .cfi_offset %r15, -401318; S390X-NEXT:    aghi %r15, -1841319; S390X-NEXT:    .cfi_def_cfa_offset 3441320; S390X-NEXT:    std %f8, 176(%r15) # 8-byte Spill1321; S390X-NEXT:    std %f9, 168(%r15) # 8-byte Spill1322; S390X-NEXT:    std %f10, 160(%r15) # 8-byte Spill1323; S390X-NEXT:    .cfi_offset %f8, -1681324; S390X-NEXT:    .cfi_offset %f9, -1761325; S390X-NEXT:    .cfi_offset %f10, -1841326; S390X-NEXT:    larl %r1, .LCPI32_01327; S390X-NEXT:    le %f0, 0(%r1)1328; S390X-NEXT:    larl %r1, .LCPI32_11329; S390X-NEXT:    le %f8, 0(%r1)1330; S390X-NEXT:    ler %f2, %f81331; S390X-NEXT:    brasl %r14, powf@PLT1332; S390X-NEXT:    larl %r1, .LCPI32_21333; S390X-NEXT:    le %f1, 0(%r1)1334; S390X-NEXT:    ler %f9, %f01335; S390X-NEXT:    ler %f0, %f11336; S390X-NEXT:    ler %f2, %f81337; S390X-NEXT:    brasl %r14, powf@PLT1338; S390X-NEXT:    larl %r1, .LCPI32_31339; S390X-NEXT:    le %f1, 0(%r1)1340; S390X-NEXT:    ler %f10, %f01341; S390X-NEXT:    ler %f0, %f11342; S390X-NEXT:    ler %f2, %f81343; S390X-NEXT:    brasl %r14, powf@PLT1344; S390X-NEXT:    ler %f2, %f101345; S390X-NEXT:    ler %f4, %f91346; S390X-NEXT:    ld %f8, 176(%r15) # 8-byte Reload1347; S390X-NEXT:    ld %f9, 168(%r15) # 8-byte Reload1348; S390X-NEXT:    ld %f10, 160(%r15) # 8-byte Reload1349; S390X-NEXT:    lmg %r14, %r15, 296(%r15)1350; S390X-NEXT:    br %r141351;1352; SZ13-LABEL: constrained_vector_pow_v3f32:1353; SZ13:       # %bb.0: # %entry1354; SZ13-NEXT:    stmg %r14, %r15, 112(%r15)1355; SZ13-NEXT:    .cfi_offset %r14, -481356; SZ13-NEXT:    .cfi_offset %r15, -401357; SZ13-NEXT:    aghi %r15, -2001358; SZ13-NEXT:    .cfi_def_cfa_offset 3601359; SZ13-NEXT:    std %f8, 192(%r15) # 8-byte Spill1360; SZ13-NEXT:    .cfi_offset %f8, -1681361; SZ13-NEXT:    larl %r1, .LCPI32_01362; SZ13-NEXT:    lde %f0, 0(%r1)1363; SZ13-NEXT:    larl %r1, .LCPI32_11364; SZ13-NEXT:    lde %f8, 0(%r1)1365; SZ13-NEXT:    ldr %f2, %f81366; SZ13-NEXT:    brasl %r14, powf@PLT1367; SZ13-NEXT:    larl %r1, .LCPI32_21368; SZ13-NEXT:    # kill: def $f0s killed $f0s def $v01369; SZ13-NEXT:    vst %v0, 176(%r15), 3 # 16-byte Spill1370; SZ13-NEXT:    lde %f0, 0(%r1)1371; SZ13-NEXT:    ldr %f2, %f81372; SZ13-NEXT:    brasl %r14, powf@PLT1373; SZ13-NEXT:    larl %r1, .LCPI32_31374; SZ13-NEXT:    # kill: def $f0s killed $f0s def $v01375; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill1376; SZ13-NEXT:    lde %f0, 0(%r1)1377; SZ13-NEXT:    ldr %f2, %f81378; SZ13-NEXT:    brasl %r14, powf@PLT1379; SZ13-NEXT:    vl %v1, 160(%r15), 3 # 16-byte Reload1380; SZ13-NEXT:    # kill: def $f0s killed $f0s def $v01381; SZ13-NEXT:    vmrhf %v0, %v1, %v01382; SZ13-NEXT:    vl %v1, 176(%r15), 3 # 16-byte Reload1383; SZ13-NEXT:    ld %f8, 192(%r15) # 8-byte Reload1384; SZ13-NEXT:    vrepf %v1, %v1, 01385; SZ13-NEXT:    vmrhg %v24, %v0, %v11386; SZ13-NEXT:    lmg %r14, %r15, 312(%r15)1387; SZ13-NEXT:    br %r141388entry:1389  %pow = call <3 x float> @llvm.experimental.constrained.pow.v3f32(1390                             <3 x float> <float 42.0, float 43.0, float 44.0>,1391                             <3 x float> <float 3.0, float 3.0, float 3.0>,1392                             metadata !"round.dynamic",1393                             metadata !"fpexcept.strict") #01394  ret <3 x float> %pow1395}1396 1397define void @constrained_vector_pow_v3f64(ptr %a) #0 {1398; S390X-LABEL: constrained_vector_pow_v3f64:1399; S390X:       # %bb.0: # %entry1400; S390X-NEXT:    stmg %r13, %r15, 104(%r15)1401; S390X-NEXT:    .cfi_offset %r13, -561402; S390X-NEXT:    .cfi_offset %r14, -481403; S390X-NEXT:    .cfi_offset %r15, -401404; S390X-NEXT:    aghi %r15, -1921405; S390X-NEXT:    .cfi_def_cfa_offset 3521406; S390X-NEXT:    std %f8, 184(%r15) # 8-byte Spill1407; S390X-NEXT:    std %f9, 176(%r15) # 8-byte Spill1408; S390X-NEXT:    std %f10, 168(%r15) # 8-byte Spill1409; S390X-NEXT:    std %f11, 160(%r15) # 8-byte Spill1410; S390X-NEXT:    .cfi_offset %f8, -1681411; S390X-NEXT:    .cfi_offset %f9, -1761412; S390X-NEXT:    .cfi_offset %f10, -1841413; S390X-NEXT:    .cfi_offset %f11, -1921414; S390X-NEXT:    lgr %r13, %r21415; S390X-NEXT:    ld %f8, 0(%r2)1416; S390X-NEXT:    ld %f0, 16(%r2)1417; S390X-NEXT:    larl %r1, .LCPI33_01418; S390X-NEXT:    ld %f9, 0(%r1)1419; S390X-NEXT:    ld %f10, 8(%r2)1420; S390X-NEXT:    ldr %f2, %f91421; S390X-NEXT:    brasl %r14, pow@PLT1422; S390X-NEXT:    ldr %f11, %f01423; S390X-NEXT:    ldr %f0, %f101424; S390X-NEXT:    ldr %f2, %f91425; S390X-NEXT:    brasl %r14, pow@PLT1426; S390X-NEXT:    ldr %f10, %f01427; S390X-NEXT:    ldr %f0, %f81428; S390X-NEXT:    ldr %f2, %f91429; S390X-NEXT:    brasl %r14, pow@PLT1430; S390X-NEXT:    std %f0, 0(%r13)1431; S390X-NEXT:    std %f10, 8(%r13)1432; S390X-NEXT:    std %f11, 16(%r13)1433; S390X-NEXT:    ld %f8, 184(%r15) # 8-byte Reload1434; S390X-NEXT:    ld %f9, 176(%r15) # 8-byte Reload1435; S390X-NEXT:    ld %f10, 168(%r15) # 8-byte Reload1436; S390X-NEXT:    ld %f11, 160(%r15) # 8-byte Reload1437; S390X-NEXT:    lmg %r13, %r15, 296(%r15)1438; S390X-NEXT:    br %r141439;1440; SZ13-LABEL: constrained_vector_pow_v3f64:1441; SZ13:       # %bb.0: # %entry1442; SZ13-NEXT:    stmg %r13, %r15, 104(%r15)1443; SZ13-NEXT:    .cfi_offset %r13, -561444; SZ13-NEXT:    .cfi_offset %r14, -481445; SZ13-NEXT:    .cfi_offset %r15, -401446; SZ13-NEXT:    aghi %r15, -2081447; SZ13-NEXT:    .cfi_def_cfa_offset 3681448; SZ13-NEXT:    std %f8, 200(%r15) # 8-byte Spill1449; SZ13-NEXT:    std %f9, 192(%r15) # 8-byte Spill1450; SZ13-NEXT:    .cfi_offset %f8, -1681451; SZ13-NEXT:    .cfi_offset %f9, -1761452; SZ13-NEXT:    larl %r1, .LCPI33_01453; SZ13-NEXT:    ld %f9, 0(%r1)1454; SZ13-NEXT:    vl %v0, 0(%r2), 41455; SZ13-NEXT:    ld %f8, 16(%r2)1456; SZ13-NEXT:    ldr %f2, %f91457; SZ13-NEXT:    lgr %r13, %r21458; SZ13-NEXT:    vst %v0, 176(%r15), 3 # 16-byte Spill1459; SZ13-NEXT:    # kill: def $f0d killed $f0d killed $v01460; SZ13-NEXT:    brasl %r14, pow@PLT1461; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v01462; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill1463; SZ13-NEXT:    vl %v0, 176(%r15), 3 # 16-byte Reload1464; SZ13-NEXT:    ldr %f2, %f91465; SZ13-NEXT:    vrepg %v0, %v0, 11466; SZ13-NEXT:    # kill: def $f0d killed $f0d killed $v01467; SZ13-NEXT:    brasl %r14, pow@PLT1468; SZ13-NEXT:    vl %v1, 160(%r15), 3 # 16-byte Reload1469; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v01470; SZ13-NEXT:    vmrhg %v0, %v1, %v01471; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill1472; SZ13-NEXT:    ldr %f0, %f81473; SZ13-NEXT:    ldr %f2, %f91474; SZ13-NEXT:    brasl %r14, pow@PLT1475; SZ13-NEXT:    mvc 0(16,%r13), 160(%r15) # 16-byte Folded Reload1476; SZ13-NEXT:    ld %f8, 200(%r15) # 8-byte Reload1477; SZ13-NEXT:    ld %f9, 192(%r15) # 8-byte Reload1478; SZ13-NEXT:    std %f0, 16(%r13)1479; SZ13-NEXT:    lmg %r13, %r15, 312(%r15)1480; SZ13-NEXT:    br %r141481entry:1482  %b = load <3 x double>, ptr %a1483  %pow = call <3 x double> @llvm.experimental.constrained.pow.v3f64(1484                          <3 x double> %b,1485                          <3 x double> <double 3.0, double 3.0, double 3.0>,1486                          metadata !"round.dynamic",1487                          metadata !"fpexcept.strict") #01488  store <3 x double> %pow, ptr %a1489  ret void1490}1491 1492define <4 x double> @constrained_vector_pow_v4f64() #0 {1493; S390X-LABEL: constrained_vector_pow_v4f64:1494; S390X:       # %bb.0: # %entry1495; S390X-NEXT:    stmg %r14, %r15, 112(%r15)1496; S390X-NEXT:    .cfi_offset %r14, -481497; S390X-NEXT:    .cfi_offset %r15, -401498; S390X-NEXT:    aghi %r15, -1921499; S390X-NEXT:    .cfi_def_cfa_offset 3521500; S390X-NEXT:    std %f8, 184(%r15) # 8-byte Spill1501; S390X-NEXT:    std %f9, 176(%r15) # 8-byte Spill1502; S390X-NEXT:    std %f10, 168(%r15) # 8-byte Spill1503; S390X-NEXT:    std %f11, 160(%r15) # 8-byte Spill1504; S390X-NEXT:    .cfi_offset %f8, -1681505; S390X-NEXT:    .cfi_offset %f9, -1761506; S390X-NEXT:    .cfi_offset %f10, -1841507; S390X-NEXT:    .cfi_offset %f11, -1921508; S390X-NEXT:    larl %r1, .LCPI34_01509; S390X-NEXT:    ld %f0, 0(%r1)1510; S390X-NEXT:    larl %r1, .LCPI34_11511; S390X-NEXT:    ld %f8, 0(%r1)1512; S390X-NEXT:    ldr %f2, %f81513; S390X-NEXT:    brasl %r14, pow@PLT1514; S390X-NEXT:    larl %r1, .LCPI34_21515; S390X-NEXT:    ld %f1, 0(%r1)1516; S390X-NEXT:    ldr %f9, %f01517; S390X-NEXT:    ldr %f0, %f11518; S390X-NEXT:    ldr %f2, %f81519; S390X-NEXT:    brasl %r14, pow@PLT1520; S390X-NEXT:    larl %r1, .LCPI34_31521; S390X-NEXT:    ld %f1, 0(%r1)1522; S390X-NEXT:    ldr %f10, %f01523; S390X-NEXT:    ldr %f0, %f11524; S390X-NEXT:    ldr %f2, %f81525; S390X-NEXT:    brasl %r14, pow@PLT1526; S390X-NEXT:    larl %r1, .LCPI34_41527; S390X-NEXT:    ld %f1, 0(%r1)1528; S390X-NEXT:    ldr %f11, %f01529; S390X-NEXT:    ldr %f0, %f11530; S390X-NEXT:    ldr %f2, %f81531; S390X-NEXT:    brasl %r14, pow@PLT1532; S390X-NEXT:    ldr %f2, %f111533; S390X-NEXT:    ldr %f4, %f101534; S390X-NEXT:    ldr %f6, %f91535; S390X-NEXT:    ld %f8, 184(%r15) # 8-byte Reload1536; S390X-NEXT:    ld %f9, 176(%r15) # 8-byte Reload1537; S390X-NEXT:    ld %f10, 168(%r15) # 8-byte Reload1538; S390X-NEXT:    ld %f11, 160(%r15) # 8-byte Reload1539; S390X-NEXT:    lmg %r14, %r15, 304(%r15)1540; S390X-NEXT:    br %r141541;1542; SZ13-LABEL: constrained_vector_pow_v4f64:1543; SZ13:       # %bb.0: # %entry1544; SZ13-NEXT:    stmg %r14, %r15, 112(%r15)1545; SZ13-NEXT:    .cfi_offset %r14, -481546; SZ13-NEXT:    .cfi_offset %r15, -401547; SZ13-NEXT:    aghi %r15, -2001548; SZ13-NEXT:    .cfi_def_cfa_offset 3601549; SZ13-NEXT:    std %f8, 192(%r15) # 8-byte Spill1550; SZ13-NEXT:    .cfi_offset %f8, -1681551; SZ13-NEXT:    larl %r1, .LCPI34_01552; SZ13-NEXT:    ld %f0, 0(%r1)1553; SZ13-NEXT:    larl %r1, .LCPI34_11554; SZ13-NEXT:    ld %f8, 0(%r1)1555; SZ13-NEXT:    ldr %f2, %f81556; SZ13-NEXT:    brasl %r14, pow@PLT1557; SZ13-NEXT:    larl %r1, .LCPI34_21558; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v01559; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill1560; SZ13-NEXT:    ld %f0, 0(%r1)1561; SZ13-NEXT:    ldr %f2, %f81562; SZ13-NEXT:    brasl %r14, pow@PLT1563; SZ13-NEXT:    vl %v1, 160(%r15), 3 # 16-byte Reload1564; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v01565; SZ13-NEXT:    vmrhg %v0, %v0, %v11566; SZ13-NEXT:    larl %r1, .LCPI34_31567; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill1568; SZ13-NEXT:    ld %f0, 0(%r1)1569; SZ13-NEXT:    ldr %f2, %f81570; SZ13-NEXT:    brasl %r14, pow@PLT1571; SZ13-NEXT:    larl %r1, .LCPI34_41572; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v01573; SZ13-NEXT:    vst %v0, 176(%r15), 3 # 16-byte Spill1574; SZ13-NEXT:    ld %f0, 0(%r1)1575; SZ13-NEXT:    ldr %f2, %f81576; SZ13-NEXT:    brasl %r14, pow@PLT1577; SZ13-NEXT:    vl %v1, 176(%r15), 3 # 16-byte Reload1578; SZ13-NEXT:    vl %v24, 160(%r15), 3 # 16-byte Reload1579; SZ13-NEXT:    ld %f8, 192(%r15) # 8-byte Reload1580; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v01581; SZ13-NEXT:    vmrhg %v26, %v0, %v11582; SZ13-NEXT:    lmg %r14, %r15, 312(%r15)1583; SZ13-NEXT:    br %r141584entry:1585  %pow = call <4 x double> @llvm.experimental.constrained.pow.v4f64(1586                             <4 x double> <double 42.1, double 42.2,1587                                           double 42.3, double 42.4>,1588                             <4 x double> <double 3.0, double 3.0,1589                                           double 3.0, double 3.0>,1590                             metadata !"round.dynamic",1591                             metadata !"fpexcept.strict") #01592  ret <4 x double> %pow1593}1594 1595define <1 x float> @constrained_vector_powi_v1f32() #0 {1596; S390X-LABEL: constrained_vector_powi_v1f32:1597; S390X:       # %bb.0: # %entry1598; S390X-NEXT:    stmg %r14, %r15, 112(%r15)1599; S390X-NEXT:    .cfi_offset %r14, -481600; S390X-NEXT:    .cfi_offset %r15, -401601; S390X-NEXT:    aghi %r15, -1601602; S390X-NEXT:    .cfi_def_cfa_offset 3201603; S390X-NEXT:    larl %r1, .LCPI35_01604; S390X-NEXT:    le %f0, 0(%r1)1605; S390X-NEXT:    lghi %r2, 31606; S390X-NEXT:    brasl %r14, __powisf2@PLT1607; S390X-NEXT:    lmg %r14, %r15, 272(%r15)1608; S390X-NEXT:    br %r141609;1610; SZ13-LABEL: constrained_vector_powi_v1f32:1611; SZ13:       # %bb.0: # %entry1612; SZ13-NEXT:    stmg %r14, %r15, 112(%r15)1613; SZ13-NEXT:    .cfi_offset %r14, -481614; SZ13-NEXT:    .cfi_offset %r15, -401615; SZ13-NEXT:    aghi %r15, -1601616; SZ13-NEXT:    .cfi_def_cfa_offset 3201617; SZ13-NEXT:    larl %r1, .LCPI35_01618; SZ13-NEXT:    lde %f0, 0(%r1)1619; SZ13-NEXT:    lghi %r2, 31620; SZ13-NEXT:    brasl %r14, __powisf2@PLT1621; SZ13-NEXT:    # kill: def $f0s killed $f0s def $v01622; SZ13-NEXT:    vlr %v24, %v01623; SZ13-NEXT:    lmg %r14, %r15, 272(%r15)1624; SZ13-NEXT:    br %r141625entry:1626  %powi = call <1 x float> @llvm.experimental.constrained.powi.v1f32(1627                              <1 x float> <float 42.0>,1628                              i32 3,1629                              metadata !"round.dynamic",1630                              metadata !"fpexcept.strict") #01631  ret <1 x float> %powi1632}1633 1634define <2 x double> @constrained_vector_powi_v2f64() #0 {1635; S390X-LABEL: constrained_vector_powi_v2f64:1636; S390X:       # %bb.0: # %entry1637; S390X-NEXT:    stmg %r14, %r15, 112(%r15)1638; S390X-NEXT:    .cfi_offset %r14, -481639; S390X-NEXT:    .cfi_offset %r15, -401640; S390X-NEXT:    aghi %r15, -1681641; S390X-NEXT:    .cfi_def_cfa_offset 3281642; S390X-NEXT:    std %f8, 160(%r15) # 8-byte Spill1643; S390X-NEXT:    .cfi_offset %f8, -1681644; S390X-NEXT:    larl %r1, .LCPI36_01645; S390X-NEXT:    ld %f0, 0(%r1)1646; S390X-NEXT:    lghi %r2, 31647; S390X-NEXT:    brasl %r14, __powidf2@PLT1648; S390X-NEXT:    larl %r1, .LCPI36_11649; S390X-NEXT:    ld %f1, 0(%r1)1650; S390X-NEXT:    lghi %r2, 31651; S390X-NEXT:    ldr %f8, %f01652; S390X-NEXT:    ldr %f0, %f11653; S390X-NEXT:    brasl %r14, __powidf2@PLT1654; S390X-NEXT:    ldr %f2, %f81655; S390X-NEXT:    ld %f8, 160(%r15) # 8-byte Reload1656; S390X-NEXT:    lmg %r14, %r15, 280(%r15)1657; S390X-NEXT:    br %r141658;1659; SZ13-LABEL: constrained_vector_powi_v2f64:1660; SZ13:       # %bb.0: # %entry1661; SZ13-NEXT:    stmg %r14, %r15, 112(%r15)1662; SZ13-NEXT:    .cfi_offset %r14, -481663; SZ13-NEXT:    .cfi_offset %r15, -401664; SZ13-NEXT:    aghi %r15, -1761665; SZ13-NEXT:    .cfi_def_cfa_offset 3361666; SZ13-NEXT:    larl %r1, .LCPI36_01667; SZ13-NEXT:    ld %f0, 0(%r1)1668; SZ13-NEXT:    lghi %r2, 31669; SZ13-NEXT:    brasl %r14, __powidf2@PLT1670; SZ13-NEXT:    larl %r1, .LCPI36_11671; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v01672; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill1673; SZ13-NEXT:    ld %f0, 0(%r1)1674; SZ13-NEXT:    lghi %r2, 31675; SZ13-NEXT:    brasl %r14, __powidf2@PLT1676; SZ13-NEXT:    vl %v1, 160(%r15), 3 # 16-byte Reload1677; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v01678; SZ13-NEXT:    vmrhg %v24, %v0, %v11679; SZ13-NEXT:    lmg %r14, %r15, 288(%r15)1680; SZ13-NEXT:    br %r141681entry:1682  %powi = call <2 x double> @llvm.experimental.constrained.powi.v2f64(1683                              <2 x double> <double 42.1, double 42.2>,1684                              i32 3,1685                              metadata !"round.dynamic",1686                              metadata !"fpexcept.strict") #01687  ret <2 x double> %powi1688}1689 1690define <3 x float> @constrained_vector_powi_v3f32() #0 {1691; S390X-LABEL: constrained_vector_powi_v3f32:1692; S390X:       # %bb.0: # %entry1693; S390X-NEXT:    stmg %r14, %r15, 112(%r15)1694; S390X-NEXT:    .cfi_offset %r14, -481695; S390X-NEXT:    .cfi_offset %r15, -401696; S390X-NEXT:    aghi %r15, -1761697; S390X-NEXT:    .cfi_def_cfa_offset 3361698; S390X-NEXT:    std %f8, 168(%r15) # 8-byte Spill1699; S390X-NEXT:    std %f9, 160(%r15) # 8-byte Spill1700; S390X-NEXT:    .cfi_offset %f8, -1681701; S390X-NEXT:    .cfi_offset %f9, -1761702; S390X-NEXT:    larl %r1, .LCPI37_01703; S390X-NEXT:    le %f0, 0(%r1)1704; S390X-NEXT:    lghi %r2, 31705; S390X-NEXT:    brasl %r14, __powisf2@PLT1706; S390X-NEXT:    larl %r1, .LCPI37_11707; S390X-NEXT:    le %f1, 0(%r1)1708; S390X-NEXT:    lghi %r2, 31709; S390X-NEXT:    ler %f8, %f01710; S390X-NEXT:    ler %f0, %f11711; S390X-NEXT:    brasl %r14, __powisf2@PLT1712; S390X-NEXT:    larl %r1, .LCPI37_21713; S390X-NEXT:    le %f1, 0(%r1)1714; S390X-NEXT:    lghi %r2, 31715; S390X-NEXT:    ler %f9, %f01716; S390X-NEXT:    ler %f0, %f11717; S390X-NEXT:    brasl %r14, __powisf2@PLT1718; S390X-NEXT:    ler %f2, %f91719; S390X-NEXT:    ler %f4, %f81720; S390X-NEXT:    ld %f8, 168(%r15) # 8-byte Reload1721; S390X-NEXT:    ld %f9, 160(%r15) # 8-byte Reload1722; S390X-NEXT:    lmg %r14, %r15, 288(%r15)1723; S390X-NEXT:    br %r141724;1725; SZ13-LABEL: constrained_vector_powi_v3f32:1726; SZ13:       # %bb.0: # %entry1727; SZ13-NEXT:    stmg %r14, %r15, 112(%r15)1728; SZ13-NEXT:    .cfi_offset %r14, -481729; SZ13-NEXT:    .cfi_offset %r15, -401730; SZ13-NEXT:    aghi %r15, -1921731; SZ13-NEXT:    .cfi_def_cfa_offset 3521732; SZ13-NEXT:    larl %r1, .LCPI37_01733; SZ13-NEXT:    lde %f0, 0(%r1)1734; SZ13-NEXT:    lghi %r2, 31735; SZ13-NEXT:    brasl %r14, __powisf2@PLT1736; SZ13-NEXT:    larl %r1, .LCPI37_11737; SZ13-NEXT:    # kill: def $f0s killed $f0s def $v01738; SZ13-NEXT:    vst %v0, 176(%r15), 3 # 16-byte Spill1739; SZ13-NEXT:    lde %f0, 0(%r1)1740; SZ13-NEXT:    lghi %r2, 31741; SZ13-NEXT:    brasl %r14, __powisf2@PLT1742; SZ13-NEXT:    larl %r1, .LCPI37_21743; SZ13-NEXT:    # kill: def $f0s killed $f0s def $v01744; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill1745; SZ13-NEXT:    lde %f0, 0(%r1)1746; SZ13-NEXT:    lghi %r2, 31747; SZ13-NEXT:    brasl %r14, __powisf2@PLT1748; SZ13-NEXT:    vl %v1, 160(%r15), 3 # 16-byte Reload1749; SZ13-NEXT:    # kill: def $f0s killed $f0s def $v01750; SZ13-NEXT:    vmrhf %v0, %v1, %v01751; SZ13-NEXT:    vl %v1, 176(%r15), 3 # 16-byte Reload1752; SZ13-NEXT:    vrepf %v1, %v1, 01753; SZ13-NEXT:    vmrhg %v24, %v0, %v11754; SZ13-NEXT:    lmg %r14, %r15, 304(%r15)1755; SZ13-NEXT:    br %r141756entry:1757  %powi = call <3 x float> @llvm.experimental.constrained.powi.v3f32(1758                              <3 x float> <float 42.0, float 43.0, float 44.0>,1759                              i32 3,1760                              metadata !"round.dynamic",1761                              metadata !"fpexcept.strict") #01762  ret <3 x float> %powi1763}1764 1765define void @constrained_vector_powi_v3f64(ptr %a) #0 {1766; S390X-LABEL: constrained_vector_powi_v3f64:1767; S390X:       # %bb.0: # %entry1768; S390X-NEXT:    stmg %r13, %r15, 104(%r15)1769; S390X-NEXT:    .cfi_offset %r13, -561770; S390X-NEXT:    .cfi_offset %r14, -481771; S390X-NEXT:    .cfi_offset %r15, -401772; S390X-NEXT:    aghi %r15, -1761773; S390X-NEXT:    .cfi_def_cfa_offset 3361774; S390X-NEXT:    std %f8, 168(%r15) # 8-byte Spill1775; S390X-NEXT:    std %f9, 160(%r15) # 8-byte Spill1776; S390X-NEXT:    .cfi_offset %f8, -1681777; S390X-NEXT:    .cfi_offset %f9, -1761778; S390X-NEXT:    larl %r1, .LCPI38_01779; S390X-NEXT:    ld %f0, 0(%r1)1780; S390X-NEXT:    lgr %r13, %r21781; S390X-NEXT:    lghi %r2, 31782; S390X-NEXT:    brasl %r14, __powidf2@PLT1783; S390X-NEXT:    larl %r1, .LCPI38_11784; S390X-NEXT:    ld %f1, 0(%r1)1785; S390X-NEXT:    lghi %r2, 31786; S390X-NEXT:    ldr %f8, %f01787; S390X-NEXT:    ldr %f0, %f11788; S390X-NEXT:    brasl %r14, __powidf2@PLT1789; S390X-NEXT:    larl %r1, .LCPI38_21790; S390X-NEXT:    ld %f1, 0(%r1)1791; S390X-NEXT:    lghi %r2, 31792; S390X-NEXT:    ldr %f9, %f01793; S390X-NEXT:    ldr %f0, %f11794; S390X-NEXT:    brasl %r14, __powidf2@PLT1795; S390X-NEXT:    std %f0, 16(%r13)1796; S390X-NEXT:    std %f9, 8(%r13)1797; S390X-NEXT:    std %f8, 0(%r13)1798; S390X-NEXT:    ld %f8, 168(%r15) # 8-byte Reload1799; S390X-NEXT:    ld %f9, 160(%r15) # 8-byte Reload1800; S390X-NEXT:    lmg %r13, %r15, 280(%r15)1801; S390X-NEXT:    br %r141802;1803; SZ13-LABEL: constrained_vector_powi_v3f64:1804; SZ13:       # %bb.0: # %entry1805; SZ13-NEXT:    stmg %r13, %r15, 104(%r15)1806; SZ13-NEXT:    .cfi_offset %r13, -561807; SZ13-NEXT:    .cfi_offset %r14, -481808; SZ13-NEXT:    .cfi_offset %r15, -401809; SZ13-NEXT:    aghi %r15, -1761810; SZ13-NEXT:    .cfi_def_cfa_offset 3361811; SZ13-NEXT:    larl %r1, .LCPI38_01812; SZ13-NEXT:    ld %f0, 0(%r1)1813; SZ13-NEXT:    lgr %r13, %r21814; SZ13-NEXT:    lghi %r2, 31815; SZ13-NEXT:    brasl %r14, __powidf2@PLT1816; SZ13-NEXT:    larl %r1, .LCPI38_11817; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v01818; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill1819; SZ13-NEXT:    ld %f0, 0(%r1)1820; SZ13-NEXT:    lghi %r2, 31821; SZ13-NEXT:    brasl %r14, __powidf2@PLT1822; SZ13-NEXT:    vl %v1, 160(%r15), 3 # 16-byte Reload1823; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v01824; SZ13-NEXT:    vmrhg %v0, %v0, %v11825; SZ13-NEXT:    larl %r1, .LCPI38_21826; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill1827; SZ13-NEXT:    ld %f0, 0(%r1)1828; SZ13-NEXT:    lghi %r2, 31829; SZ13-NEXT:    brasl %r14, __powidf2@PLT1830; SZ13-NEXT:    mvc 0(16,%r13), 160(%r15) # 16-byte Folded Reload1831; SZ13-NEXT:    std %f0, 16(%r13)1832; SZ13-NEXT:    lmg %r13, %r15, 280(%r15)1833; SZ13-NEXT:    br %r141834entry:1835  %b = load <3 x double>, ptr %a1836  %powi = call <3 x double> @llvm.experimental.constrained.powi.v3f64(1837                          <3 x double> <double 42.0, double 42.1, double 42.2>,1838                          i32 3,1839                          metadata !"round.dynamic",1840                          metadata !"fpexcept.strict") #01841  store <3 x double> %powi, ptr %a1842  ret void1843}1844 1845define <4 x double> @constrained_vector_powi_v4f64() #0 {1846; S390X-LABEL: constrained_vector_powi_v4f64:1847; S390X:       # %bb.0: # %entry1848; S390X-NEXT:    stmg %r14, %r15, 112(%r15)1849; S390X-NEXT:    .cfi_offset %r14, -481850; S390X-NEXT:    .cfi_offset %r15, -401851; S390X-NEXT:    aghi %r15, -1841852; S390X-NEXT:    .cfi_def_cfa_offset 3441853; S390X-NEXT:    std %f8, 176(%r15) # 8-byte Spill1854; S390X-NEXT:    std %f9, 168(%r15) # 8-byte Spill1855; S390X-NEXT:    std %f10, 160(%r15) # 8-byte Spill1856; S390X-NEXT:    .cfi_offset %f8, -1681857; S390X-NEXT:    .cfi_offset %f9, -1761858; S390X-NEXT:    .cfi_offset %f10, -1841859; S390X-NEXT:    larl %r1, .LCPI39_01860; S390X-NEXT:    ld %f0, 0(%r1)1861; S390X-NEXT:    lghi %r2, 31862; S390X-NEXT:    brasl %r14, __powidf2@PLT1863; S390X-NEXT:    larl %r1, .LCPI39_11864; S390X-NEXT:    ld %f1, 0(%r1)1865; S390X-NEXT:    lghi %r2, 31866; S390X-NEXT:    ldr %f8, %f01867; S390X-NEXT:    ldr %f0, %f11868; S390X-NEXT:    brasl %r14, __powidf2@PLT1869; S390X-NEXT:    larl %r1, .LCPI39_21870; S390X-NEXT:    ld %f1, 0(%r1)1871; S390X-NEXT:    lghi %r2, 31872; S390X-NEXT:    ldr %f9, %f01873; S390X-NEXT:    ldr %f0, %f11874; S390X-NEXT:    brasl %r14, __powidf2@PLT1875; S390X-NEXT:    larl %r1, .LCPI39_31876; S390X-NEXT:    ld %f1, 0(%r1)1877; S390X-NEXT:    lghi %r2, 31878; S390X-NEXT:    ldr %f10, %f01879; S390X-NEXT:    ldr %f0, %f11880; S390X-NEXT:    brasl %r14, __powidf2@PLT1881; S390X-NEXT:    ldr %f2, %f101882; S390X-NEXT:    ldr %f4, %f91883; S390X-NEXT:    ldr %f6, %f81884; S390X-NEXT:    ld %f8, 176(%r15) # 8-byte Reload1885; S390X-NEXT:    ld %f9, 168(%r15) # 8-byte Reload1886; S390X-NEXT:    ld %f10, 160(%r15) # 8-byte Reload1887; S390X-NEXT:    lmg %r14, %r15, 296(%r15)1888; S390X-NEXT:    br %r141889;1890; SZ13-LABEL: constrained_vector_powi_v4f64:1891; SZ13:       # %bb.0: # %entry1892; SZ13-NEXT:    stmg %r14, %r15, 112(%r15)1893; SZ13-NEXT:    .cfi_offset %r14, -481894; SZ13-NEXT:    .cfi_offset %r15, -401895; SZ13-NEXT:    aghi %r15, -1921896; SZ13-NEXT:    .cfi_def_cfa_offset 3521897; SZ13-NEXT:    larl %r1, .LCPI39_01898; SZ13-NEXT:    ld %f0, 0(%r1)1899; SZ13-NEXT:    lghi %r2, 31900; SZ13-NEXT:    brasl %r14, __powidf2@PLT1901; SZ13-NEXT:    larl %r1, .LCPI39_11902; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v01903; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill1904; SZ13-NEXT:    ld %f0, 0(%r1)1905; SZ13-NEXT:    lghi %r2, 31906; SZ13-NEXT:    brasl %r14, __powidf2@PLT1907; SZ13-NEXT:    vl %v1, 160(%r15), 3 # 16-byte Reload1908; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v01909; SZ13-NEXT:    vmrhg %v0, %v0, %v11910; SZ13-NEXT:    larl %r1, .LCPI39_21911; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill1912; SZ13-NEXT:    ld %f0, 0(%r1)1913; SZ13-NEXT:    lghi %r2, 31914; SZ13-NEXT:    brasl %r14, __powidf2@PLT1915; SZ13-NEXT:    larl %r1, .LCPI39_31916; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v01917; SZ13-NEXT:    vst %v0, 176(%r15), 3 # 16-byte Spill1918; SZ13-NEXT:    ld %f0, 0(%r1)1919; SZ13-NEXT:    lghi %r2, 31920; SZ13-NEXT:    brasl %r14, __powidf2@PLT1921; SZ13-NEXT:    vl %v1, 176(%r15), 3 # 16-byte Reload1922; SZ13-NEXT:    vl %v24, 160(%r15), 3 # 16-byte Reload1923; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v01924; SZ13-NEXT:    vmrhg %v26, %v0, %v11925; SZ13-NEXT:    lmg %r14, %r15, 304(%r15)1926; SZ13-NEXT:    br %r141927entry:1928  %powi = call <4 x double> @llvm.experimental.constrained.powi.v4f64(1929                              <4 x double> <double 42.1, double 42.2,1930                                            double 42.3, double 42.4>,1931                              i32 3,1932                              metadata !"round.dynamic",1933                              metadata !"fpexcept.strict") #01934  ret <4 x double> %powi1935}1936 1937define <1 x float> @constrained_vector_sin_v1f32() #0 {1938; S390X-LABEL: constrained_vector_sin_v1f32:1939; S390X:       # %bb.0: # %entry1940; S390X-NEXT:    stmg %r14, %r15, 112(%r15)1941; S390X-NEXT:    .cfi_offset %r14, -481942; S390X-NEXT:    .cfi_offset %r15, -401943; S390X-NEXT:    aghi %r15, -1601944; S390X-NEXT:    .cfi_def_cfa_offset 3201945; S390X-NEXT:    larl %r1, .LCPI40_01946; S390X-NEXT:    le %f0, 0(%r1)1947; S390X-NEXT:    brasl %r14, sinf@PLT1948; S390X-NEXT:    lmg %r14, %r15, 272(%r15)1949; S390X-NEXT:    br %r141950;1951; SZ13-LABEL: constrained_vector_sin_v1f32:1952; SZ13:       # %bb.0: # %entry1953; SZ13-NEXT:    stmg %r14, %r15, 112(%r15)1954; SZ13-NEXT:    .cfi_offset %r14, -481955; SZ13-NEXT:    .cfi_offset %r15, -401956; SZ13-NEXT:    aghi %r15, -1601957; SZ13-NEXT:    .cfi_def_cfa_offset 3201958; SZ13-NEXT:    larl %r1, .LCPI40_01959; SZ13-NEXT:    lde %f0, 0(%r1)1960; SZ13-NEXT:    brasl %r14, sinf@PLT1961; SZ13-NEXT:    # kill: def $f0s killed $f0s def $v01962; SZ13-NEXT:    vlr %v24, %v01963; SZ13-NEXT:    lmg %r14, %r15, 272(%r15)1964; SZ13-NEXT:    br %r141965entry:1966  %sin = call <1 x float> @llvm.experimental.constrained.sin.v1f32(1967                             <1 x float> <float 42.0>,1968                             metadata !"round.dynamic",1969                             metadata !"fpexcept.strict") #01970  ret <1 x float> %sin1971}1972 1973define <2 x double> @constrained_vector_sin_v2f64() #0 {1974; S390X-LABEL: constrained_vector_sin_v2f64:1975; S390X:       # %bb.0: # %entry1976; S390X-NEXT:    stmg %r14, %r15, 112(%r15)1977; S390X-NEXT:    .cfi_offset %r14, -481978; S390X-NEXT:    .cfi_offset %r15, -401979; S390X-NEXT:    aghi %r15, -1681980; S390X-NEXT:    .cfi_def_cfa_offset 3281981; S390X-NEXT:    std %f8, 160(%r15) # 8-byte Spill1982; S390X-NEXT:    .cfi_offset %f8, -1681983; S390X-NEXT:    larl %r1, .LCPI41_01984; S390X-NEXT:    ld %f0, 0(%r1)1985; S390X-NEXT:    brasl %r14, sin@PLT1986; S390X-NEXT:    larl %r1, .LCPI41_11987; S390X-NEXT:    ld %f1, 0(%r1)1988; S390X-NEXT:    ldr %f8, %f01989; S390X-NEXT:    ldr %f0, %f11990; S390X-NEXT:    brasl %r14, sin@PLT1991; S390X-NEXT:    ldr %f2, %f81992; S390X-NEXT:    ld %f8, 160(%r15) # 8-byte Reload1993; S390X-NEXT:    lmg %r14, %r15, 280(%r15)1994; S390X-NEXT:    br %r141995;1996; SZ13-LABEL: constrained_vector_sin_v2f64:1997; SZ13:       # %bb.0: # %entry1998; SZ13-NEXT:    stmg %r14, %r15, 112(%r15)1999; SZ13-NEXT:    .cfi_offset %r14, -482000; SZ13-NEXT:    .cfi_offset %r15, -402001; SZ13-NEXT:    aghi %r15, -1762002; SZ13-NEXT:    .cfi_def_cfa_offset 3362003; SZ13-NEXT:    larl %r1, .LCPI41_02004; SZ13-NEXT:    ld %f0, 0(%r1)2005; SZ13-NEXT:    brasl %r14, sin@PLT2006; SZ13-NEXT:    larl %r1, .LCPI41_12007; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v02008; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill2009; SZ13-NEXT:    ld %f0, 0(%r1)2010; SZ13-NEXT:    brasl %r14, sin@PLT2011; SZ13-NEXT:    vl %v1, 160(%r15), 3 # 16-byte Reload2012; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v02013; SZ13-NEXT:    vmrhg %v24, %v0, %v12014; SZ13-NEXT:    lmg %r14, %r15, 288(%r15)2015; SZ13-NEXT:    br %r142016entry:2017  %sin = call <2 x double> @llvm.experimental.constrained.sin.v2f64(2018                             <2 x double> <double 42.0, double 42.1>,2019                             metadata !"round.dynamic",2020                             metadata !"fpexcept.strict") #02021  ret <2 x double> %sin2022}2023 2024define <3 x float> @constrained_vector_sin_v3f32() #0 {2025; S390X-LABEL: constrained_vector_sin_v3f32:2026; S390X:       # %bb.0: # %entry2027; S390X-NEXT:    stmg %r14, %r15, 112(%r15)2028; S390X-NEXT:    .cfi_offset %r14, -482029; S390X-NEXT:    .cfi_offset %r15, -402030; S390X-NEXT:    aghi %r15, -1762031; S390X-NEXT:    .cfi_def_cfa_offset 3362032; S390X-NEXT:    std %f8, 168(%r15) # 8-byte Spill2033; S390X-NEXT:    std %f9, 160(%r15) # 8-byte Spill2034; S390X-NEXT:    .cfi_offset %f8, -1682035; S390X-NEXT:    .cfi_offset %f9, -1762036; S390X-NEXT:    larl %r1, .LCPI42_02037; S390X-NEXT:    le %f0, 0(%r1)2038; S390X-NEXT:    brasl %r14, sinf@PLT2039; S390X-NEXT:    larl %r1, .LCPI42_12040; S390X-NEXT:    le %f1, 0(%r1)2041; S390X-NEXT:    ler %f8, %f02042; S390X-NEXT:    ler %f0, %f12043; S390X-NEXT:    brasl %r14, sinf@PLT2044; S390X-NEXT:    larl %r1, .LCPI42_22045; S390X-NEXT:    le %f1, 0(%r1)2046; S390X-NEXT:    ler %f9, %f02047; S390X-NEXT:    ler %f0, %f12048; S390X-NEXT:    brasl %r14, sinf@PLT2049; S390X-NEXT:    ler %f2, %f92050; S390X-NEXT:    ler %f4, %f82051; S390X-NEXT:    ld %f8, 168(%r15) # 8-byte Reload2052; S390X-NEXT:    ld %f9, 160(%r15) # 8-byte Reload2053; S390X-NEXT:    lmg %r14, %r15, 288(%r15)2054; S390X-NEXT:    br %r142055;2056; SZ13-LABEL: constrained_vector_sin_v3f32:2057; SZ13:       # %bb.0: # %entry2058; SZ13-NEXT:    stmg %r14, %r15, 112(%r15)2059; SZ13-NEXT:    .cfi_offset %r14, -482060; SZ13-NEXT:    .cfi_offset %r15, -402061; SZ13-NEXT:    aghi %r15, -1922062; SZ13-NEXT:    .cfi_def_cfa_offset 3522063; SZ13-NEXT:    larl %r1, .LCPI42_02064; SZ13-NEXT:    lde %f0, 0(%r1)2065; SZ13-NEXT:    brasl %r14, sinf@PLT2066; SZ13-NEXT:    larl %r1, .LCPI42_12067; SZ13-NEXT:    # kill: def $f0s killed $f0s def $v02068; SZ13-NEXT:    vst %v0, 176(%r15), 3 # 16-byte Spill2069; SZ13-NEXT:    lde %f0, 0(%r1)2070; SZ13-NEXT:    brasl %r14, sinf@PLT2071; SZ13-NEXT:    larl %r1, .LCPI42_22072; SZ13-NEXT:    # kill: def $f0s killed $f0s def $v02073; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill2074; SZ13-NEXT:    lde %f0, 0(%r1)2075; SZ13-NEXT:    brasl %r14, sinf@PLT2076; SZ13-NEXT:    vl %v1, 160(%r15), 3 # 16-byte Reload2077; SZ13-NEXT:    # kill: def $f0s killed $f0s def $v02078; SZ13-NEXT:    vmrhf %v0, %v1, %v02079; SZ13-NEXT:    vl %v1, 176(%r15), 3 # 16-byte Reload2080; SZ13-NEXT:    vrepf %v1, %v1, 02081; SZ13-NEXT:    vmrhg %v24, %v0, %v12082; SZ13-NEXT:    lmg %r14, %r15, 304(%r15)2083; SZ13-NEXT:    br %r142084entry:2085  %sin = call <3 x float> @llvm.experimental.constrained.sin.v3f32(2086                              <3 x float> <float 42.0, float 43.0, float 44.0>,2087                              metadata !"round.dynamic",2088                              metadata !"fpexcept.strict") #02089  ret <3 x float> %sin2090}2091 2092define void @constrained_vector_sin_v3f64(ptr %a) #0 {2093; S390X-LABEL: constrained_vector_sin_v3f64:2094; S390X:       # %bb.0: # %entry2095; S390X-NEXT:    stmg %r13, %r15, 104(%r15)2096; S390X-NEXT:    .cfi_offset %r13, -562097; S390X-NEXT:    .cfi_offset %r14, -482098; S390X-NEXT:    .cfi_offset %r15, -402099; S390X-NEXT:    aghi %r15, -1842100; S390X-NEXT:    .cfi_def_cfa_offset 3442101; S390X-NEXT:    std %f8, 176(%r15) # 8-byte Spill2102; S390X-NEXT:    std %f9, 168(%r15) # 8-byte Spill2103; S390X-NEXT:    std %f10, 160(%r15) # 8-byte Spill2104; S390X-NEXT:    .cfi_offset %f8, -1682105; S390X-NEXT:    .cfi_offset %f9, -1762106; S390X-NEXT:    .cfi_offset %f10, -1842107; S390X-NEXT:    lgr %r13, %r22108; S390X-NEXT:    ld %f8, 0(%r2)2109; S390X-NEXT:    ld %f0, 16(%r2)2110; S390X-NEXT:    ld %f9, 8(%r2)2111; S390X-NEXT:    brasl %r14, sin@PLT2112; S390X-NEXT:    ldr %f10, %f02113; S390X-NEXT:    ldr %f0, %f92114; S390X-NEXT:    brasl %r14, sin@PLT2115; S390X-NEXT:    ldr %f9, %f02116; S390X-NEXT:    ldr %f0, %f82117; S390X-NEXT:    brasl %r14, sin@PLT2118; S390X-NEXT:    std %f0, 0(%r13)2119; S390X-NEXT:    std %f9, 8(%r13)2120; S390X-NEXT:    std %f10, 16(%r13)2121; S390X-NEXT:    ld %f8, 176(%r15) # 8-byte Reload2122; S390X-NEXT:    ld %f9, 168(%r15) # 8-byte Reload2123; S390X-NEXT:    ld %f10, 160(%r15) # 8-byte Reload2124; S390X-NEXT:    lmg %r13, %r15, 288(%r15)2125; S390X-NEXT:    br %r142126;2127; SZ13-LABEL: constrained_vector_sin_v3f64:2128; SZ13:       # %bb.0: # %entry2129; SZ13-NEXT:    stmg %r13, %r15, 104(%r15)2130; SZ13-NEXT:    .cfi_offset %r13, -562131; SZ13-NEXT:    .cfi_offset %r14, -482132; SZ13-NEXT:    .cfi_offset %r15, -402133; SZ13-NEXT:    aghi %r15, -2002134; SZ13-NEXT:    .cfi_def_cfa_offset 3602135; SZ13-NEXT:    std %f8, 192(%r15) # 8-byte Spill2136; SZ13-NEXT:    .cfi_offset %f8, -1682137; SZ13-NEXT:    vl %v0, 0(%r2), 42138; SZ13-NEXT:    ld %f8, 16(%r2)2139; SZ13-NEXT:    lgr %r13, %r22140; SZ13-NEXT:    vst %v0, 176(%r15), 3 # 16-byte Spill2141; SZ13-NEXT:    # kill: def $f0d killed $f0d killed $v02142; SZ13-NEXT:    brasl %r14, sin@PLT2143; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v02144; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill2145; SZ13-NEXT:    vl %v0, 176(%r15), 3 # 16-byte Reload2146; SZ13-NEXT:    vrepg %v0, %v0, 12147; SZ13-NEXT:    # kill: def $f0d killed $f0d killed $v02148; SZ13-NEXT:    brasl %r14, sin@PLT2149; SZ13-NEXT:    vl %v1, 160(%r15), 3 # 16-byte Reload2150; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v02151; SZ13-NEXT:    vmrhg %v0, %v1, %v02152; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill2153; SZ13-NEXT:    ldr %f0, %f82154; SZ13-NEXT:    brasl %r14, sin@PLT2155; SZ13-NEXT:    mvc 0(16,%r13), 160(%r15) # 16-byte Folded Reload2156; SZ13-NEXT:    ld %f8, 192(%r15) # 8-byte Reload2157; SZ13-NEXT:    std %f0, 16(%r13)2158; SZ13-NEXT:    lmg %r13, %r15, 304(%r15)2159; SZ13-NEXT:    br %r142160entry:2161  %b = load <3 x double>, ptr %a2162  %sin = call <3 x double> @llvm.experimental.constrained.sin.v3f64(2163                          <3 x double> %b,2164                          metadata !"round.dynamic",2165                          metadata !"fpexcept.strict") #02166  store <3 x double> %sin, ptr %a2167  ret void2168}2169 2170define <4 x double> @constrained_vector_sin_v4f64() #0 {2171; S390X-LABEL: constrained_vector_sin_v4f64:2172; S390X:       # %bb.0: # %entry2173; S390X-NEXT:    stmg %r14, %r15, 112(%r15)2174; S390X-NEXT:    .cfi_offset %r14, -482175; S390X-NEXT:    .cfi_offset %r15, -402176; S390X-NEXT:    aghi %r15, -1842177; S390X-NEXT:    .cfi_def_cfa_offset 3442178; S390X-NEXT:    std %f8, 176(%r15) # 8-byte Spill2179; S390X-NEXT:    std %f9, 168(%r15) # 8-byte Spill2180; S390X-NEXT:    std %f10, 160(%r15) # 8-byte Spill2181; S390X-NEXT:    .cfi_offset %f8, -1682182; S390X-NEXT:    .cfi_offset %f9, -1762183; S390X-NEXT:    .cfi_offset %f10, -1842184; S390X-NEXT:    larl %r1, .LCPI44_02185; S390X-NEXT:    ld %f0, 0(%r1)2186; S390X-NEXT:    brasl %r14, sin@PLT2187; S390X-NEXT:    larl %r1, .LCPI44_12188; S390X-NEXT:    ld %f1, 0(%r1)2189; S390X-NEXT:    ldr %f8, %f02190; S390X-NEXT:    ldr %f0, %f12191; S390X-NEXT:    brasl %r14, sin@PLT2192; S390X-NEXT:    larl %r1, .LCPI44_22193; S390X-NEXT:    ld %f1, 0(%r1)2194; S390X-NEXT:    ldr %f9, %f02195; S390X-NEXT:    ldr %f0, %f12196; S390X-NEXT:    brasl %r14, sin@PLT2197; S390X-NEXT:    larl %r1, .LCPI44_32198; S390X-NEXT:    ld %f1, 0(%r1)2199; S390X-NEXT:    ldr %f10, %f02200; S390X-NEXT:    ldr %f0, %f12201; S390X-NEXT:    brasl %r14, sin@PLT2202; S390X-NEXT:    ldr %f2, %f102203; S390X-NEXT:    ldr %f4, %f92204; S390X-NEXT:    ldr %f6, %f82205; S390X-NEXT:    ld %f8, 176(%r15) # 8-byte Reload2206; S390X-NEXT:    ld %f9, 168(%r15) # 8-byte Reload2207; S390X-NEXT:    ld %f10, 160(%r15) # 8-byte Reload2208; S390X-NEXT:    lmg %r14, %r15, 296(%r15)2209; S390X-NEXT:    br %r142210;2211; SZ13-LABEL: constrained_vector_sin_v4f64:2212; SZ13:       # %bb.0: # %entry2213; SZ13-NEXT:    stmg %r14, %r15, 112(%r15)2214; SZ13-NEXT:    .cfi_offset %r14, -482215; SZ13-NEXT:    .cfi_offset %r15, -402216; SZ13-NEXT:    aghi %r15, -1922217; SZ13-NEXT:    .cfi_def_cfa_offset 3522218; SZ13-NEXT:    larl %r1, .LCPI44_02219; SZ13-NEXT:    ld %f0, 0(%r1)2220; SZ13-NEXT:    brasl %r14, sin@PLT2221; SZ13-NEXT:    larl %r1, .LCPI44_12222; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v02223; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill2224; SZ13-NEXT:    ld %f0, 0(%r1)2225; SZ13-NEXT:    brasl %r14, sin@PLT2226; SZ13-NEXT:    vl %v1, 160(%r15), 3 # 16-byte Reload2227; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v02228; SZ13-NEXT:    vmrhg %v0, %v0, %v12229; SZ13-NEXT:    larl %r1, .LCPI44_22230; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill2231; SZ13-NEXT:    ld %f0, 0(%r1)2232; SZ13-NEXT:    brasl %r14, sin@PLT2233; SZ13-NEXT:    larl %r1, .LCPI44_32234; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v02235; SZ13-NEXT:    vst %v0, 176(%r15), 3 # 16-byte Spill2236; SZ13-NEXT:    ld %f0, 0(%r1)2237; SZ13-NEXT:    brasl %r14, sin@PLT2238; SZ13-NEXT:    vl %v1, 176(%r15), 3 # 16-byte Reload2239; SZ13-NEXT:    vl %v24, 160(%r15), 3 # 16-byte Reload2240; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v02241; SZ13-NEXT:    vmrhg %v26, %v0, %v12242; SZ13-NEXT:    lmg %r14, %r15, 304(%r15)2243; SZ13-NEXT:    br %r142244entry:2245  %sin = call <4 x double> @llvm.experimental.constrained.sin.v4f64(2246                             <4 x double> <double 42.0, double 42.1,2247                                           double 42.2, double 42.3>,2248                             metadata !"round.dynamic",2249                             metadata !"fpexcept.strict") #02250  ret <4 x double> %sin2251}2252 2253define <1 x float> @constrained_vector_cos_v1f32() #0 {2254; S390X-LABEL: constrained_vector_cos_v1f32:2255; S390X:       # %bb.0: # %entry2256; S390X-NEXT:    stmg %r14, %r15, 112(%r15)2257; S390X-NEXT:    .cfi_offset %r14, -482258; S390X-NEXT:    .cfi_offset %r15, -402259; S390X-NEXT:    aghi %r15, -1602260; S390X-NEXT:    .cfi_def_cfa_offset 3202261; S390X-NEXT:    larl %r1, .LCPI45_02262; S390X-NEXT:    le %f0, 0(%r1)2263; S390X-NEXT:    brasl %r14, cosf@PLT2264; S390X-NEXT:    lmg %r14, %r15, 272(%r15)2265; S390X-NEXT:    br %r142266;2267; SZ13-LABEL: constrained_vector_cos_v1f32:2268; SZ13:       # %bb.0: # %entry2269; SZ13-NEXT:    stmg %r14, %r15, 112(%r15)2270; SZ13-NEXT:    .cfi_offset %r14, -482271; SZ13-NEXT:    .cfi_offset %r15, -402272; SZ13-NEXT:    aghi %r15, -1602273; SZ13-NEXT:    .cfi_def_cfa_offset 3202274; SZ13-NEXT:    larl %r1, .LCPI45_02275; SZ13-NEXT:    lde %f0, 0(%r1)2276; SZ13-NEXT:    brasl %r14, cosf@PLT2277; SZ13-NEXT:    # kill: def $f0s killed $f0s def $v02278; SZ13-NEXT:    vlr %v24, %v02279; SZ13-NEXT:    lmg %r14, %r15, 272(%r15)2280; SZ13-NEXT:    br %r142281entry:2282  %cos = call <1 x float> @llvm.experimental.constrained.cos.v1f32(2283                             <1 x float> <float 42.0>,2284                             metadata !"round.dynamic",2285                             metadata !"fpexcept.strict") #02286  ret <1 x float> %cos2287}2288 2289define <2 x double> @constrained_vector_cos_v2f64() #0 {2290; S390X-LABEL: constrained_vector_cos_v2f64:2291; S390X:       # %bb.0: # %entry2292; S390X-NEXT:    stmg %r14, %r15, 112(%r15)2293; S390X-NEXT:    .cfi_offset %r14, -482294; S390X-NEXT:    .cfi_offset %r15, -402295; S390X-NEXT:    aghi %r15, -1682296; S390X-NEXT:    .cfi_def_cfa_offset 3282297; S390X-NEXT:    std %f8, 160(%r15) # 8-byte Spill2298; S390X-NEXT:    .cfi_offset %f8, -1682299; S390X-NEXT:    larl %r1, .LCPI46_02300; S390X-NEXT:    ld %f0, 0(%r1)2301; S390X-NEXT:    brasl %r14, cos@PLT2302; S390X-NEXT:    larl %r1, .LCPI46_12303; S390X-NEXT:    ld %f1, 0(%r1)2304; S390X-NEXT:    ldr %f8, %f02305; S390X-NEXT:    ldr %f0, %f12306; S390X-NEXT:    brasl %r14, cos@PLT2307; S390X-NEXT:    ldr %f2, %f82308; S390X-NEXT:    ld %f8, 160(%r15) # 8-byte Reload2309; S390X-NEXT:    lmg %r14, %r15, 280(%r15)2310; S390X-NEXT:    br %r142311;2312; SZ13-LABEL: constrained_vector_cos_v2f64:2313; SZ13:       # %bb.0: # %entry2314; SZ13-NEXT:    stmg %r14, %r15, 112(%r15)2315; SZ13-NEXT:    .cfi_offset %r14, -482316; SZ13-NEXT:    .cfi_offset %r15, -402317; SZ13-NEXT:    aghi %r15, -1762318; SZ13-NEXT:    .cfi_def_cfa_offset 3362319; SZ13-NEXT:    larl %r1, .LCPI46_02320; SZ13-NEXT:    ld %f0, 0(%r1)2321; SZ13-NEXT:    brasl %r14, cos@PLT2322; SZ13-NEXT:    larl %r1, .LCPI46_12323; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v02324; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill2325; SZ13-NEXT:    ld %f0, 0(%r1)2326; SZ13-NEXT:    brasl %r14, cos@PLT2327; SZ13-NEXT:    vl %v1, 160(%r15), 3 # 16-byte Reload2328; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v02329; SZ13-NEXT:    vmrhg %v24, %v0, %v12330; SZ13-NEXT:    lmg %r14, %r15, 288(%r15)2331; SZ13-NEXT:    br %r142332entry:2333  %cos = call <2 x double> @llvm.experimental.constrained.cos.v2f64(2334                             <2 x double> <double 42.0, double 42.1>,2335                             metadata !"round.dynamic",2336                             metadata !"fpexcept.strict") #02337  ret <2 x double> %cos2338}2339 2340define <3 x float> @constrained_vector_cos_v3f32() #0 {2341; S390X-LABEL: constrained_vector_cos_v3f32:2342; S390X:       # %bb.0: # %entry2343; S390X-NEXT:    stmg %r14, %r15, 112(%r15)2344; S390X-NEXT:    .cfi_offset %r14, -482345; S390X-NEXT:    .cfi_offset %r15, -402346; S390X-NEXT:    aghi %r15, -1762347; S390X-NEXT:    .cfi_def_cfa_offset 3362348; S390X-NEXT:    std %f8, 168(%r15) # 8-byte Spill2349; S390X-NEXT:    std %f9, 160(%r15) # 8-byte Spill2350; S390X-NEXT:    .cfi_offset %f8, -1682351; S390X-NEXT:    .cfi_offset %f9, -1762352; S390X-NEXT:    larl %r1, .LCPI47_02353; S390X-NEXT:    le %f0, 0(%r1)2354; S390X-NEXT:    brasl %r14, cosf@PLT2355; S390X-NEXT:    larl %r1, .LCPI47_12356; S390X-NEXT:    le %f1, 0(%r1)2357; S390X-NEXT:    ler %f8, %f02358; S390X-NEXT:    ler %f0, %f12359; S390X-NEXT:    brasl %r14, cosf@PLT2360; S390X-NEXT:    larl %r1, .LCPI47_22361; S390X-NEXT:    le %f1, 0(%r1)2362; S390X-NEXT:    ler %f9, %f02363; S390X-NEXT:    ler %f0, %f12364; S390X-NEXT:    brasl %r14, cosf@PLT2365; S390X-NEXT:    ler %f2, %f92366; S390X-NEXT:    ler %f4, %f82367; S390X-NEXT:    ld %f8, 168(%r15) # 8-byte Reload2368; S390X-NEXT:    ld %f9, 160(%r15) # 8-byte Reload2369; S390X-NEXT:    lmg %r14, %r15, 288(%r15)2370; S390X-NEXT:    br %r142371;2372; SZ13-LABEL: constrained_vector_cos_v3f32:2373; SZ13:       # %bb.0: # %entry2374; SZ13-NEXT:    stmg %r14, %r15, 112(%r15)2375; SZ13-NEXT:    .cfi_offset %r14, -482376; SZ13-NEXT:    .cfi_offset %r15, -402377; SZ13-NEXT:    aghi %r15, -1922378; SZ13-NEXT:    .cfi_def_cfa_offset 3522379; SZ13-NEXT:    larl %r1, .LCPI47_02380; SZ13-NEXT:    lde %f0, 0(%r1)2381; SZ13-NEXT:    brasl %r14, cosf@PLT2382; SZ13-NEXT:    larl %r1, .LCPI47_12383; SZ13-NEXT:    # kill: def $f0s killed $f0s def $v02384; SZ13-NEXT:    vst %v0, 176(%r15), 3 # 16-byte Spill2385; SZ13-NEXT:    lde %f0, 0(%r1)2386; SZ13-NEXT:    brasl %r14, cosf@PLT2387; SZ13-NEXT:    larl %r1, .LCPI47_22388; SZ13-NEXT:    # kill: def $f0s killed $f0s def $v02389; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill2390; SZ13-NEXT:    lde %f0, 0(%r1)2391; SZ13-NEXT:    brasl %r14, cosf@PLT2392; SZ13-NEXT:    vl %v1, 160(%r15), 3 # 16-byte Reload2393; SZ13-NEXT:    # kill: def $f0s killed $f0s def $v02394; SZ13-NEXT:    vmrhf %v0, %v1, %v02395; SZ13-NEXT:    vl %v1, 176(%r15), 3 # 16-byte Reload2396; SZ13-NEXT:    vrepf %v1, %v1, 02397; SZ13-NEXT:    vmrhg %v24, %v0, %v12398; SZ13-NEXT:    lmg %r14, %r15, 304(%r15)2399; SZ13-NEXT:    br %r142400entry:2401  %cos = call <3 x float> @llvm.experimental.constrained.cos.v3f32(2402                              <3 x float> <float 42.0, float 43.0, float 44.0>,2403                              metadata !"round.dynamic",2404                              metadata !"fpexcept.strict") #02405  ret <3 x float> %cos2406}2407 2408define void @constrained_vector_cos_v3f64(ptr %a) #0 {2409; S390X-LABEL: constrained_vector_cos_v3f64:2410; S390X:       # %bb.0: # %entry2411; S390X-NEXT:    stmg %r13, %r15, 104(%r15)2412; S390X-NEXT:    .cfi_offset %r13, -562413; S390X-NEXT:    .cfi_offset %r14, -482414; S390X-NEXT:    .cfi_offset %r15, -402415; S390X-NEXT:    aghi %r15, -1842416; S390X-NEXT:    .cfi_def_cfa_offset 3442417; S390X-NEXT:    std %f8, 176(%r15) # 8-byte Spill2418; S390X-NEXT:    std %f9, 168(%r15) # 8-byte Spill2419; S390X-NEXT:    std %f10, 160(%r15) # 8-byte Spill2420; S390X-NEXT:    .cfi_offset %f8, -1682421; S390X-NEXT:    .cfi_offset %f9, -1762422; S390X-NEXT:    .cfi_offset %f10, -1842423; S390X-NEXT:    lgr %r13, %r22424; S390X-NEXT:    ld %f8, 0(%r2)2425; S390X-NEXT:    ld %f0, 16(%r2)2426; S390X-NEXT:    ld %f9, 8(%r2)2427; S390X-NEXT:    brasl %r14, cos@PLT2428; S390X-NEXT:    ldr %f10, %f02429; S390X-NEXT:    ldr %f0, %f92430; S390X-NEXT:    brasl %r14, cos@PLT2431; S390X-NEXT:    ldr %f9, %f02432; S390X-NEXT:    ldr %f0, %f82433; S390X-NEXT:    brasl %r14, cos@PLT2434; S390X-NEXT:    std %f0, 0(%r13)2435; S390X-NEXT:    std %f9, 8(%r13)2436; S390X-NEXT:    std %f10, 16(%r13)2437; S390X-NEXT:    ld %f8, 176(%r15) # 8-byte Reload2438; S390X-NEXT:    ld %f9, 168(%r15) # 8-byte Reload2439; S390X-NEXT:    ld %f10, 160(%r15) # 8-byte Reload2440; S390X-NEXT:    lmg %r13, %r15, 288(%r15)2441; S390X-NEXT:    br %r142442;2443; SZ13-LABEL: constrained_vector_cos_v3f64:2444; SZ13:       # %bb.0: # %entry2445; SZ13-NEXT:    stmg %r13, %r15, 104(%r15)2446; SZ13-NEXT:    .cfi_offset %r13, -562447; SZ13-NEXT:    .cfi_offset %r14, -482448; SZ13-NEXT:    .cfi_offset %r15, -402449; SZ13-NEXT:    aghi %r15, -2002450; SZ13-NEXT:    .cfi_def_cfa_offset 3602451; SZ13-NEXT:    std %f8, 192(%r15) # 8-byte Spill2452; SZ13-NEXT:    .cfi_offset %f8, -1682453; SZ13-NEXT:    vl %v0, 0(%r2), 42454; SZ13-NEXT:    ld %f8, 16(%r2)2455; SZ13-NEXT:    lgr %r13, %r22456; SZ13-NEXT:    vst %v0, 176(%r15), 3 # 16-byte Spill2457; SZ13-NEXT:    # kill: def $f0d killed $f0d killed $v02458; SZ13-NEXT:    brasl %r14, cos@PLT2459; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v02460; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill2461; SZ13-NEXT:    vl %v0, 176(%r15), 3 # 16-byte Reload2462; SZ13-NEXT:    vrepg %v0, %v0, 12463; SZ13-NEXT:    # kill: def $f0d killed $f0d killed $v02464; SZ13-NEXT:    brasl %r14, cos@PLT2465; SZ13-NEXT:    vl %v1, 160(%r15), 3 # 16-byte Reload2466; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v02467; SZ13-NEXT:    vmrhg %v0, %v1, %v02468; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill2469; SZ13-NEXT:    ldr %f0, %f82470; SZ13-NEXT:    brasl %r14, cos@PLT2471; SZ13-NEXT:    mvc 0(16,%r13), 160(%r15) # 16-byte Folded Reload2472; SZ13-NEXT:    ld %f8, 192(%r15) # 8-byte Reload2473; SZ13-NEXT:    std %f0, 16(%r13)2474; SZ13-NEXT:    lmg %r13, %r15, 304(%r15)2475; SZ13-NEXT:    br %r142476entry:2477  %b = load <3 x double>, ptr %a2478  %cos = call <3 x double> @llvm.experimental.constrained.cos.v3f64(2479                          <3 x double> %b,2480                          metadata !"round.dynamic",2481                          metadata !"fpexcept.strict") #02482  store <3 x double> %cos, ptr %a2483  ret void2484}2485 2486define <4 x double> @constrained_vector_cos_v4f64() #0 {2487; S390X-LABEL: constrained_vector_cos_v4f64:2488; S390X:       # %bb.0: # %entry2489; S390X-NEXT:    stmg %r14, %r15, 112(%r15)2490; S390X-NEXT:    .cfi_offset %r14, -482491; S390X-NEXT:    .cfi_offset %r15, -402492; S390X-NEXT:    aghi %r15, -1842493; S390X-NEXT:    .cfi_def_cfa_offset 3442494; S390X-NEXT:    std %f8, 176(%r15) # 8-byte Spill2495; S390X-NEXT:    std %f9, 168(%r15) # 8-byte Spill2496; S390X-NEXT:    std %f10, 160(%r15) # 8-byte Spill2497; S390X-NEXT:    .cfi_offset %f8, -1682498; S390X-NEXT:    .cfi_offset %f9, -1762499; S390X-NEXT:    .cfi_offset %f10, -1842500; S390X-NEXT:    larl %r1, .LCPI49_02501; S390X-NEXT:    ld %f0, 0(%r1)2502; S390X-NEXT:    brasl %r14, cos@PLT2503; S390X-NEXT:    larl %r1, .LCPI49_12504; S390X-NEXT:    ld %f1, 0(%r1)2505; S390X-NEXT:    ldr %f8, %f02506; S390X-NEXT:    ldr %f0, %f12507; S390X-NEXT:    brasl %r14, cos@PLT2508; S390X-NEXT:    larl %r1, .LCPI49_22509; S390X-NEXT:    ld %f1, 0(%r1)2510; S390X-NEXT:    ldr %f9, %f02511; S390X-NEXT:    ldr %f0, %f12512; S390X-NEXT:    brasl %r14, cos@PLT2513; S390X-NEXT:    larl %r1, .LCPI49_32514; S390X-NEXT:    ld %f1, 0(%r1)2515; S390X-NEXT:    ldr %f10, %f02516; S390X-NEXT:    ldr %f0, %f12517; S390X-NEXT:    brasl %r14, cos@PLT2518; S390X-NEXT:    ldr %f2, %f102519; S390X-NEXT:    ldr %f4, %f92520; S390X-NEXT:    ldr %f6, %f82521; S390X-NEXT:    ld %f8, 176(%r15) # 8-byte Reload2522; S390X-NEXT:    ld %f9, 168(%r15) # 8-byte Reload2523; S390X-NEXT:    ld %f10, 160(%r15) # 8-byte Reload2524; S390X-NEXT:    lmg %r14, %r15, 296(%r15)2525; S390X-NEXT:    br %r142526;2527; SZ13-LABEL: constrained_vector_cos_v4f64:2528; SZ13:       # %bb.0: # %entry2529; SZ13-NEXT:    stmg %r14, %r15, 112(%r15)2530; SZ13-NEXT:    .cfi_offset %r14, -482531; SZ13-NEXT:    .cfi_offset %r15, -402532; SZ13-NEXT:    aghi %r15, -1922533; SZ13-NEXT:    .cfi_def_cfa_offset 3522534; SZ13-NEXT:    larl %r1, .LCPI49_02535; SZ13-NEXT:    ld %f0, 0(%r1)2536; SZ13-NEXT:    brasl %r14, cos@PLT2537; SZ13-NEXT:    larl %r1, .LCPI49_12538; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v02539; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill2540; SZ13-NEXT:    ld %f0, 0(%r1)2541; SZ13-NEXT:    brasl %r14, cos@PLT2542; SZ13-NEXT:    vl %v1, 160(%r15), 3 # 16-byte Reload2543; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v02544; SZ13-NEXT:    vmrhg %v0, %v0, %v12545; SZ13-NEXT:    larl %r1, .LCPI49_22546; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill2547; SZ13-NEXT:    ld %f0, 0(%r1)2548; SZ13-NEXT:    brasl %r14, cos@PLT2549; SZ13-NEXT:    larl %r1, .LCPI49_32550; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v02551; SZ13-NEXT:    vst %v0, 176(%r15), 3 # 16-byte Spill2552; SZ13-NEXT:    ld %f0, 0(%r1)2553; SZ13-NEXT:    brasl %r14, cos@PLT2554; SZ13-NEXT:    vl %v1, 176(%r15), 3 # 16-byte Reload2555; SZ13-NEXT:    vl %v24, 160(%r15), 3 # 16-byte Reload2556; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v02557; SZ13-NEXT:    vmrhg %v26, %v0, %v12558; SZ13-NEXT:    lmg %r14, %r15, 304(%r15)2559; SZ13-NEXT:    br %r142560entry:2561  %cos = call <4 x double> @llvm.experimental.constrained.cos.v4f64(2562                             <4 x double> <double 42.0, double 42.1,2563                                           double 42.2, double 42.3>,2564                             metadata !"round.dynamic",2565                             metadata !"fpexcept.strict") #02566  ret <4 x double> %cos2567}2568 2569define <1 x float> @constrained_vector_exp_v1f32() #0 {2570; S390X-LABEL: constrained_vector_exp_v1f32:2571; S390X:       # %bb.0: # %entry2572; S390X-NEXT:    stmg %r14, %r15, 112(%r15)2573; S390X-NEXT:    .cfi_offset %r14, -482574; S390X-NEXT:    .cfi_offset %r15, -402575; S390X-NEXT:    aghi %r15, -1602576; S390X-NEXT:    .cfi_def_cfa_offset 3202577; S390X-NEXT:    larl %r1, .LCPI50_02578; S390X-NEXT:    le %f0, 0(%r1)2579; S390X-NEXT:    brasl %r14, expf@PLT2580; S390X-NEXT:    lmg %r14, %r15, 272(%r15)2581; S390X-NEXT:    br %r142582;2583; SZ13-LABEL: constrained_vector_exp_v1f32:2584; SZ13:       # %bb.0: # %entry2585; SZ13-NEXT:    stmg %r14, %r15, 112(%r15)2586; SZ13-NEXT:    .cfi_offset %r14, -482587; SZ13-NEXT:    .cfi_offset %r15, -402588; SZ13-NEXT:    aghi %r15, -1602589; SZ13-NEXT:    .cfi_def_cfa_offset 3202590; SZ13-NEXT:    larl %r1, .LCPI50_02591; SZ13-NEXT:    lde %f0, 0(%r1)2592; SZ13-NEXT:    brasl %r14, expf@PLT2593; SZ13-NEXT:    # kill: def $f0s killed $f0s def $v02594; SZ13-NEXT:    vlr %v24, %v02595; SZ13-NEXT:    lmg %r14, %r15, 272(%r15)2596; SZ13-NEXT:    br %r142597entry:2598  %exp = call <1 x float> @llvm.experimental.constrained.exp.v1f32(2599                             <1 x float> <float 42.0>,2600                             metadata !"round.dynamic",2601                             metadata !"fpexcept.strict") #02602  ret <1 x float> %exp2603}2604 2605define <2 x double> @constrained_vector_exp_v2f64() #0 {2606; S390X-LABEL: constrained_vector_exp_v2f64:2607; S390X:       # %bb.0: # %entry2608; S390X-NEXT:    stmg %r14, %r15, 112(%r15)2609; S390X-NEXT:    .cfi_offset %r14, -482610; S390X-NEXT:    .cfi_offset %r15, -402611; S390X-NEXT:    aghi %r15, -1682612; S390X-NEXT:    .cfi_def_cfa_offset 3282613; S390X-NEXT:    std %f8, 160(%r15) # 8-byte Spill2614; S390X-NEXT:    .cfi_offset %f8, -1682615; S390X-NEXT:    larl %r1, .LCPI51_02616; S390X-NEXT:    ld %f0, 0(%r1)2617; S390X-NEXT:    brasl %r14, exp@PLT2618; S390X-NEXT:    larl %r1, .LCPI51_12619; S390X-NEXT:    ld %f1, 0(%r1)2620; S390X-NEXT:    ldr %f8, %f02621; S390X-NEXT:    ldr %f0, %f12622; S390X-NEXT:    brasl %r14, exp@PLT2623; S390X-NEXT:    ldr %f2, %f82624; S390X-NEXT:    ld %f8, 160(%r15) # 8-byte Reload2625; S390X-NEXT:    lmg %r14, %r15, 280(%r15)2626; S390X-NEXT:    br %r142627;2628; SZ13-LABEL: constrained_vector_exp_v2f64:2629; SZ13:       # %bb.0: # %entry2630; SZ13-NEXT:    stmg %r14, %r15, 112(%r15)2631; SZ13-NEXT:    .cfi_offset %r14, -482632; SZ13-NEXT:    .cfi_offset %r15, -402633; SZ13-NEXT:    aghi %r15, -1762634; SZ13-NEXT:    .cfi_def_cfa_offset 3362635; SZ13-NEXT:    larl %r1, .LCPI51_02636; SZ13-NEXT:    ld %f0, 0(%r1)2637; SZ13-NEXT:    brasl %r14, exp@PLT2638; SZ13-NEXT:    larl %r1, .LCPI51_12639; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v02640; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill2641; SZ13-NEXT:    ld %f0, 0(%r1)2642; SZ13-NEXT:    brasl %r14, exp@PLT2643; SZ13-NEXT:    vl %v1, 160(%r15), 3 # 16-byte Reload2644; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v02645; SZ13-NEXT:    vmrhg %v24, %v0, %v12646; SZ13-NEXT:    lmg %r14, %r15, 288(%r15)2647; SZ13-NEXT:    br %r142648entry:2649  %exp = call <2 x double> @llvm.experimental.constrained.exp.v2f64(2650                             <2 x double> <double 42.0, double 42.1>,2651                             metadata !"round.dynamic",2652                             metadata !"fpexcept.strict") #02653  ret <2 x double> %exp2654}2655 2656define <3 x float> @constrained_vector_exp_v3f32() #0 {2657; S390X-LABEL: constrained_vector_exp_v3f32:2658; S390X:       # %bb.0: # %entry2659; S390X-NEXT:    stmg %r14, %r15, 112(%r15)2660; S390X-NEXT:    .cfi_offset %r14, -482661; S390X-NEXT:    .cfi_offset %r15, -402662; S390X-NEXT:    aghi %r15, -1762663; S390X-NEXT:    .cfi_def_cfa_offset 3362664; S390X-NEXT:    std %f8, 168(%r15) # 8-byte Spill2665; S390X-NEXT:    std %f9, 160(%r15) # 8-byte Spill2666; S390X-NEXT:    .cfi_offset %f8, -1682667; S390X-NEXT:    .cfi_offset %f9, -1762668; S390X-NEXT:    larl %r1, .LCPI52_02669; S390X-NEXT:    le %f0, 0(%r1)2670; S390X-NEXT:    brasl %r14, expf@PLT2671; S390X-NEXT:    larl %r1, .LCPI52_12672; S390X-NEXT:    le %f1, 0(%r1)2673; S390X-NEXT:    ler %f8, %f02674; S390X-NEXT:    ler %f0, %f12675; S390X-NEXT:    brasl %r14, expf@PLT2676; S390X-NEXT:    larl %r1, .LCPI52_22677; S390X-NEXT:    le %f1, 0(%r1)2678; S390X-NEXT:    ler %f9, %f02679; S390X-NEXT:    ler %f0, %f12680; S390X-NEXT:    brasl %r14, expf@PLT2681; S390X-NEXT:    ler %f2, %f92682; S390X-NEXT:    ler %f4, %f82683; S390X-NEXT:    ld %f8, 168(%r15) # 8-byte Reload2684; S390X-NEXT:    ld %f9, 160(%r15) # 8-byte Reload2685; S390X-NEXT:    lmg %r14, %r15, 288(%r15)2686; S390X-NEXT:    br %r142687;2688; SZ13-LABEL: constrained_vector_exp_v3f32:2689; SZ13:       # %bb.0: # %entry2690; SZ13-NEXT:    stmg %r14, %r15, 112(%r15)2691; SZ13-NEXT:    .cfi_offset %r14, -482692; SZ13-NEXT:    .cfi_offset %r15, -402693; SZ13-NEXT:    aghi %r15, -1922694; SZ13-NEXT:    .cfi_def_cfa_offset 3522695; SZ13-NEXT:    larl %r1, .LCPI52_02696; SZ13-NEXT:    lde %f0, 0(%r1)2697; SZ13-NEXT:    brasl %r14, expf@PLT2698; SZ13-NEXT:    larl %r1, .LCPI52_12699; SZ13-NEXT:    # kill: def $f0s killed $f0s def $v02700; SZ13-NEXT:    vst %v0, 176(%r15), 3 # 16-byte Spill2701; SZ13-NEXT:    lde %f0, 0(%r1)2702; SZ13-NEXT:    brasl %r14, expf@PLT2703; SZ13-NEXT:    larl %r1, .LCPI52_22704; SZ13-NEXT:    # kill: def $f0s killed $f0s def $v02705; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill2706; SZ13-NEXT:    lde %f0, 0(%r1)2707; SZ13-NEXT:    brasl %r14, expf@PLT2708; SZ13-NEXT:    vl %v1, 160(%r15), 3 # 16-byte Reload2709; SZ13-NEXT:    # kill: def $f0s killed $f0s def $v02710; SZ13-NEXT:    vmrhf %v0, %v1, %v02711; SZ13-NEXT:    vl %v1, 176(%r15), 3 # 16-byte Reload2712; SZ13-NEXT:    vrepf %v1, %v1, 02713; SZ13-NEXT:    vmrhg %v24, %v0, %v12714; SZ13-NEXT:    lmg %r14, %r15, 304(%r15)2715; SZ13-NEXT:    br %r142716entry:2717  %exp = call <3 x float> @llvm.experimental.constrained.exp.v3f32(2718                              <3 x float> <float 42.0, float 43.0, float 44.0>,2719                              metadata !"round.dynamic",2720                              metadata !"fpexcept.strict") #02721  ret <3 x float> %exp2722}2723 2724define void @constrained_vector_exp_v3f64(ptr %a) #0 {2725; S390X-LABEL: constrained_vector_exp_v3f64:2726; S390X:       # %bb.0: # %entry2727; S390X-NEXT:    stmg %r13, %r15, 104(%r15)2728; S390X-NEXT:    .cfi_offset %r13, -562729; S390X-NEXT:    .cfi_offset %r14, -482730; S390X-NEXT:    .cfi_offset %r15, -402731; S390X-NEXT:    aghi %r15, -1842732; S390X-NEXT:    .cfi_def_cfa_offset 3442733; S390X-NEXT:    std %f8, 176(%r15) # 8-byte Spill2734; S390X-NEXT:    std %f9, 168(%r15) # 8-byte Spill2735; S390X-NEXT:    std %f10, 160(%r15) # 8-byte Spill2736; S390X-NEXT:    .cfi_offset %f8, -1682737; S390X-NEXT:    .cfi_offset %f9, -1762738; S390X-NEXT:    .cfi_offset %f10, -1842739; S390X-NEXT:    lgr %r13, %r22740; S390X-NEXT:    ld %f8, 0(%r2)2741; S390X-NEXT:    ld %f0, 16(%r2)2742; S390X-NEXT:    ld %f9, 8(%r2)2743; S390X-NEXT:    brasl %r14, exp@PLT2744; S390X-NEXT:    ldr %f10, %f02745; S390X-NEXT:    ldr %f0, %f92746; S390X-NEXT:    brasl %r14, exp@PLT2747; S390X-NEXT:    ldr %f9, %f02748; S390X-NEXT:    ldr %f0, %f82749; S390X-NEXT:    brasl %r14, exp@PLT2750; S390X-NEXT:    std %f0, 0(%r13)2751; S390X-NEXT:    std %f9, 8(%r13)2752; S390X-NEXT:    std %f10, 16(%r13)2753; S390X-NEXT:    ld %f8, 176(%r15) # 8-byte Reload2754; S390X-NEXT:    ld %f9, 168(%r15) # 8-byte Reload2755; S390X-NEXT:    ld %f10, 160(%r15) # 8-byte Reload2756; S390X-NEXT:    lmg %r13, %r15, 288(%r15)2757; S390X-NEXT:    br %r142758;2759; SZ13-LABEL: constrained_vector_exp_v3f64:2760; SZ13:       # %bb.0: # %entry2761; SZ13-NEXT:    stmg %r13, %r15, 104(%r15)2762; SZ13-NEXT:    .cfi_offset %r13, -562763; SZ13-NEXT:    .cfi_offset %r14, -482764; SZ13-NEXT:    .cfi_offset %r15, -402765; SZ13-NEXT:    aghi %r15, -2002766; SZ13-NEXT:    .cfi_def_cfa_offset 3602767; SZ13-NEXT:    std %f8, 192(%r15) # 8-byte Spill2768; SZ13-NEXT:    .cfi_offset %f8, -1682769; SZ13-NEXT:    vl %v0, 0(%r2), 42770; SZ13-NEXT:    ld %f8, 16(%r2)2771; SZ13-NEXT:    lgr %r13, %r22772; SZ13-NEXT:    vst %v0, 176(%r15), 3 # 16-byte Spill2773; SZ13-NEXT:    # kill: def $f0d killed $f0d killed $v02774; SZ13-NEXT:    brasl %r14, exp@PLT2775; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v02776; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill2777; SZ13-NEXT:    vl %v0, 176(%r15), 3 # 16-byte Reload2778; SZ13-NEXT:    vrepg %v0, %v0, 12779; SZ13-NEXT:    # kill: def $f0d killed $f0d killed $v02780; SZ13-NEXT:    brasl %r14, exp@PLT2781; SZ13-NEXT:    vl %v1, 160(%r15), 3 # 16-byte Reload2782; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v02783; SZ13-NEXT:    vmrhg %v0, %v1, %v02784; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill2785; SZ13-NEXT:    ldr %f0, %f82786; SZ13-NEXT:    brasl %r14, exp@PLT2787; SZ13-NEXT:    mvc 0(16,%r13), 160(%r15) # 16-byte Folded Reload2788; SZ13-NEXT:    ld %f8, 192(%r15) # 8-byte Reload2789; SZ13-NEXT:    std %f0, 16(%r13)2790; SZ13-NEXT:    lmg %r13, %r15, 304(%r15)2791; SZ13-NEXT:    br %r142792entry:2793  %b = load <3 x double>, ptr %a2794  %exp = call <3 x double> @llvm.experimental.constrained.exp.v3f64(2795                          <3 x double> %b,2796                          metadata !"round.dynamic",2797                          metadata !"fpexcept.strict") #02798  store <3 x double> %exp, ptr %a2799  ret void2800}2801 2802define <4 x double> @constrained_vector_exp_v4f64() #0 {2803; S390X-LABEL: constrained_vector_exp_v4f64:2804; S390X:       # %bb.0: # %entry2805; S390X-NEXT:    stmg %r14, %r15, 112(%r15)2806; S390X-NEXT:    .cfi_offset %r14, -482807; S390X-NEXT:    .cfi_offset %r15, -402808; S390X-NEXT:    aghi %r15, -1842809; S390X-NEXT:    .cfi_def_cfa_offset 3442810; S390X-NEXT:    std %f8, 176(%r15) # 8-byte Spill2811; S390X-NEXT:    std %f9, 168(%r15) # 8-byte Spill2812; S390X-NEXT:    std %f10, 160(%r15) # 8-byte Spill2813; S390X-NEXT:    .cfi_offset %f8, -1682814; S390X-NEXT:    .cfi_offset %f9, -1762815; S390X-NEXT:    .cfi_offset %f10, -1842816; S390X-NEXT:    larl %r1, .LCPI54_02817; S390X-NEXT:    ld %f0, 0(%r1)2818; S390X-NEXT:    brasl %r14, exp@PLT2819; S390X-NEXT:    larl %r1, .LCPI54_12820; S390X-NEXT:    ld %f1, 0(%r1)2821; S390X-NEXT:    ldr %f8, %f02822; S390X-NEXT:    ldr %f0, %f12823; S390X-NEXT:    brasl %r14, exp@PLT2824; S390X-NEXT:    larl %r1, .LCPI54_22825; S390X-NEXT:    ld %f1, 0(%r1)2826; S390X-NEXT:    ldr %f9, %f02827; S390X-NEXT:    ldr %f0, %f12828; S390X-NEXT:    brasl %r14, exp@PLT2829; S390X-NEXT:    larl %r1, .LCPI54_32830; S390X-NEXT:    ld %f1, 0(%r1)2831; S390X-NEXT:    ldr %f10, %f02832; S390X-NEXT:    ldr %f0, %f12833; S390X-NEXT:    brasl %r14, exp@PLT2834; S390X-NEXT:    ldr %f2, %f102835; S390X-NEXT:    ldr %f4, %f92836; S390X-NEXT:    ldr %f6, %f82837; S390X-NEXT:    ld %f8, 176(%r15) # 8-byte Reload2838; S390X-NEXT:    ld %f9, 168(%r15) # 8-byte Reload2839; S390X-NEXT:    ld %f10, 160(%r15) # 8-byte Reload2840; S390X-NEXT:    lmg %r14, %r15, 296(%r15)2841; S390X-NEXT:    br %r142842;2843; SZ13-LABEL: constrained_vector_exp_v4f64:2844; SZ13:       # %bb.0: # %entry2845; SZ13-NEXT:    stmg %r14, %r15, 112(%r15)2846; SZ13-NEXT:    .cfi_offset %r14, -482847; SZ13-NEXT:    .cfi_offset %r15, -402848; SZ13-NEXT:    aghi %r15, -1922849; SZ13-NEXT:    .cfi_def_cfa_offset 3522850; SZ13-NEXT:    larl %r1, .LCPI54_02851; SZ13-NEXT:    ld %f0, 0(%r1)2852; SZ13-NEXT:    brasl %r14, exp@PLT2853; SZ13-NEXT:    larl %r1, .LCPI54_12854; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v02855; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill2856; SZ13-NEXT:    ld %f0, 0(%r1)2857; SZ13-NEXT:    brasl %r14, exp@PLT2858; SZ13-NEXT:    vl %v1, 160(%r15), 3 # 16-byte Reload2859; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v02860; SZ13-NEXT:    vmrhg %v0, %v0, %v12861; SZ13-NEXT:    larl %r1, .LCPI54_22862; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill2863; SZ13-NEXT:    ld %f0, 0(%r1)2864; SZ13-NEXT:    brasl %r14, exp@PLT2865; SZ13-NEXT:    larl %r1, .LCPI54_32866; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v02867; SZ13-NEXT:    vst %v0, 176(%r15), 3 # 16-byte Spill2868; SZ13-NEXT:    ld %f0, 0(%r1)2869; SZ13-NEXT:    brasl %r14, exp@PLT2870; SZ13-NEXT:    vl %v1, 176(%r15), 3 # 16-byte Reload2871; SZ13-NEXT:    vl %v24, 160(%r15), 3 # 16-byte Reload2872; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v02873; SZ13-NEXT:    vmrhg %v26, %v0, %v12874; SZ13-NEXT:    lmg %r14, %r15, 304(%r15)2875; SZ13-NEXT:    br %r142876entry:2877  %exp = call <4 x double> @llvm.experimental.constrained.exp.v4f64(2878                             <4 x double> <double 42.0, double 42.1,2879                                           double 42.2, double 42.3>,2880                             metadata !"round.dynamic",2881                             metadata !"fpexcept.strict") #02882  ret <4 x double> %exp2883}2884 2885define <1 x float> @constrained_vector_exp2_v1f32() #0 {2886; S390X-LABEL: constrained_vector_exp2_v1f32:2887; S390X:       # %bb.0: # %entry2888; S390X-NEXT:    stmg %r14, %r15, 112(%r15)2889; S390X-NEXT:    .cfi_offset %r14, -482890; S390X-NEXT:    .cfi_offset %r15, -402891; S390X-NEXT:    aghi %r15, -1602892; S390X-NEXT:    .cfi_def_cfa_offset 3202893; S390X-NEXT:    larl %r1, .LCPI55_02894; S390X-NEXT:    le %f0, 0(%r1)2895; S390X-NEXT:    brasl %r14, exp2f@PLT2896; S390X-NEXT:    lmg %r14, %r15, 272(%r15)2897; S390X-NEXT:    br %r142898;2899; SZ13-LABEL: constrained_vector_exp2_v1f32:2900; SZ13:       # %bb.0: # %entry2901; SZ13-NEXT:    stmg %r14, %r15, 112(%r15)2902; SZ13-NEXT:    .cfi_offset %r14, -482903; SZ13-NEXT:    .cfi_offset %r15, -402904; SZ13-NEXT:    aghi %r15, -1602905; SZ13-NEXT:    .cfi_def_cfa_offset 3202906; SZ13-NEXT:    larl %r1, .LCPI55_02907; SZ13-NEXT:    lde %f0, 0(%r1)2908; SZ13-NEXT:    brasl %r14, exp2f@PLT2909; SZ13-NEXT:    # kill: def $f0s killed $f0s def $v02910; SZ13-NEXT:    vlr %v24, %v02911; SZ13-NEXT:    lmg %r14, %r15, 272(%r15)2912; SZ13-NEXT:    br %r142913entry:2914  %exp2 = call <1 x float> @llvm.experimental.constrained.exp2.v1f32(2915                             <1 x float> <float 42.0>,2916                             metadata !"round.dynamic",2917                             metadata !"fpexcept.strict") #02918  ret <1 x float> %exp22919}2920 2921define <2 x double> @constrained_vector_exp2_v2f64() #0 {2922; S390X-LABEL: constrained_vector_exp2_v2f64:2923; S390X:       # %bb.0: # %entry2924; S390X-NEXT:    stmg %r14, %r15, 112(%r15)2925; S390X-NEXT:    .cfi_offset %r14, -482926; S390X-NEXT:    .cfi_offset %r15, -402927; S390X-NEXT:    aghi %r15, -1682928; S390X-NEXT:    .cfi_def_cfa_offset 3282929; S390X-NEXT:    std %f8, 160(%r15) # 8-byte Spill2930; S390X-NEXT:    .cfi_offset %f8, -1682931; S390X-NEXT:    larl %r1, .LCPI56_02932; S390X-NEXT:    ld %f0, 0(%r1)2933; S390X-NEXT:    brasl %r14, exp2@PLT2934; S390X-NEXT:    larl %r1, .LCPI56_12935; S390X-NEXT:    ld %f1, 0(%r1)2936; S390X-NEXT:    ldr %f8, %f02937; S390X-NEXT:    ldr %f0, %f12938; S390X-NEXT:    brasl %r14, exp2@PLT2939; S390X-NEXT:    ldr %f2, %f82940; S390X-NEXT:    ld %f8, 160(%r15) # 8-byte Reload2941; S390X-NEXT:    lmg %r14, %r15, 280(%r15)2942; S390X-NEXT:    br %r142943;2944; SZ13-LABEL: constrained_vector_exp2_v2f64:2945; SZ13:       # %bb.0: # %entry2946; SZ13-NEXT:    stmg %r14, %r15, 112(%r15)2947; SZ13-NEXT:    .cfi_offset %r14, -482948; SZ13-NEXT:    .cfi_offset %r15, -402949; SZ13-NEXT:    aghi %r15, -1762950; SZ13-NEXT:    .cfi_def_cfa_offset 3362951; SZ13-NEXT:    larl %r1, .LCPI56_02952; SZ13-NEXT:    ld %f0, 0(%r1)2953; SZ13-NEXT:    brasl %r14, exp2@PLT2954; SZ13-NEXT:    larl %r1, .LCPI56_12955; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v02956; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill2957; SZ13-NEXT:    ld %f0, 0(%r1)2958; SZ13-NEXT:    brasl %r14, exp2@PLT2959; SZ13-NEXT:    vl %v1, 160(%r15), 3 # 16-byte Reload2960; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v02961; SZ13-NEXT:    vmrhg %v24, %v0, %v12962; SZ13-NEXT:    lmg %r14, %r15, 288(%r15)2963; SZ13-NEXT:    br %r142964entry:2965  %exp2 = call <2 x double> @llvm.experimental.constrained.exp2.v2f64(2966                              <2 x double> <double 42.1, double 42.0>,2967                              metadata !"round.dynamic",2968                              metadata !"fpexcept.strict") #02969  ret <2 x double> %exp22970}2971 2972define <3 x float> @constrained_vector_exp2_v3f32() #0 {2973; S390X-LABEL: constrained_vector_exp2_v3f32:2974; S390X:       # %bb.0: # %entry2975; S390X-NEXT:    stmg %r14, %r15, 112(%r15)2976; S390X-NEXT:    .cfi_offset %r14, -482977; S390X-NEXT:    .cfi_offset %r15, -402978; S390X-NEXT:    aghi %r15, -1762979; S390X-NEXT:    .cfi_def_cfa_offset 3362980; S390X-NEXT:    std %f8, 168(%r15) # 8-byte Spill2981; S390X-NEXT:    std %f9, 160(%r15) # 8-byte Spill2982; S390X-NEXT:    .cfi_offset %f8, -1682983; S390X-NEXT:    .cfi_offset %f9, -1762984; S390X-NEXT:    larl %r1, .LCPI57_02985; S390X-NEXT:    le %f0, 0(%r1)2986; S390X-NEXT:    brasl %r14, exp2f@PLT2987; S390X-NEXT:    larl %r1, .LCPI57_12988; S390X-NEXT:    le %f1, 0(%r1)2989; S390X-NEXT:    ler %f8, %f02990; S390X-NEXT:    ler %f0, %f12991; S390X-NEXT:    brasl %r14, exp2f@PLT2992; S390X-NEXT:    larl %r1, .LCPI57_22993; S390X-NEXT:    le %f1, 0(%r1)2994; S390X-NEXT:    ler %f9, %f02995; S390X-NEXT:    ler %f0, %f12996; S390X-NEXT:    brasl %r14, exp2f@PLT2997; S390X-NEXT:    ler %f2, %f92998; S390X-NEXT:    ler %f4, %f82999; S390X-NEXT:    ld %f8, 168(%r15) # 8-byte Reload3000; S390X-NEXT:    ld %f9, 160(%r15) # 8-byte Reload3001; S390X-NEXT:    lmg %r14, %r15, 288(%r15)3002; S390X-NEXT:    br %r143003;3004; SZ13-LABEL: constrained_vector_exp2_v3f32:3005; SZ13:       # %bb.0: # %entry3006; SZ13-NEXT:    stmg %r14, %r15, 112(%r15)3007; SZ13-NEXT:    .cfi_offset %r14, -483008; SZ13-NEXT:    .cfi_offset %r15, -403009; SZ13-NEXT:    aghi %r15, -1923010; SZ13-NEXT:    .cfi_def_cfa_offset 3523011; SZ13-NEXT:    larl %r1, .LCPI57_03012; SZ13-NEXT:    lde %f0, 0(%r1)3013; SZ13-NEXT:    brasl %r14, exp2f@PLT3014; SZ13-NEXT:    larl %r1, .LCPI57_13015; SZ13-NEXT:    # kill: def $f0s killed $f0s def $v03016; SZ13-NEXT:    vst %v0, 176(%r15), 3 # 16-byte Spill3017; SZ13-NEXT:    lde %f0, 0(%r1)3018; SZ13-NEXT:    brasl %r14, exp2f@PLT3019; SZ13-NEXT:    larl %r1, .LCPI57_23020; SZ13-NEXT:    # kill: def $f0s killed $f0s def $v03021; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill3022; SZ13-NEXT:    lde %f0, 0(%r1)3023; SZ13-NEXT:    brasl %r14, exp2f@PLT3024; SZ13-NEXT:    vl %v1, 160(%r15), 3 # 16-byte Reload3025; SZ13-NEXT:    # kill: def $f0s killed $f0s def $v03026; SZ13-NEXT:    vmrhf %v0, %v1, %v03027; SZ13-NEXT:    vl %v1, 176(%r15), 3 # 16-byte Reload3028; SZ13-NEXT:    vrepf %v1, %v1, 03029; SZ13-NEXT:    vmrhg %v24, %v0, %v13030; SZ13-NEXT:    lmg %r14, %r15, 304(%r15)3031; SZ13-NEXT:    br %r143032entry:3033  %exp2 = call <3 x float> @llvm.experimental.constrained.exp2.v3f32(3034                              <3 x float> <float 42.0, float 43.0, float 44.0>,3035                              metadata !"round.dynamic",3036                              metadata !"fpexcept.strict") #03037  ret <3 x float> %exp23038}3039 3040define void @constrained_vector_exp2_v3f64(ptr %a) #0 {3041; S390X-LABEL: constrained_vector_exp2_v3f64:3042; S390X:       # %bb.0: # %entry3043; S390X-NEXT:    stmg %r13, %r15, 104(%r15)3044; S390X-NEXT:    .cfi_offset %r13, -563045; S390X-NEXT:    .cfi_offset %r14, -483046; S390X-NEXT:    .cfi_offset %r15, -403047; S390X-NEXT:    aghi %r15, -1843048; S390X-NEXT:    .cfi_def_cfa_offset 3443049; S390X-NEXT:    std %f8, 176(%r15) # 8-byte Spill3050; S390X-NEXT:    std %f9, 168(%r15) # 8-byte Spill3051; S390X-NEXT:    std %f10, 160(%r15) # 8-byte Spill3052; S390X-NEXT:    .cfi_offset %f8, -1683053; S390X-NEXT:    .cfi_offset %f9, -1763054; S390X-NEXT:    .cfi_offset %f10, -1843055; S390X-NEXT:    lgr %r13, %r23056; S390X-NEXT:    ld %f8, 0(%r2)3057; S390X-NEXT:    ld %f0, 16(%r2)3058; S390X-NEXT:    ld %f9, 8(%r2)3059; S390X-NEXT:    brasl %r14, exp2@PLT3060; S390X-NEXT:    ldr %f10, %f03061; S390X-NEXT:    ldr %f0, %f93062; S390X-NEXT:    brasl %r14, exp2@PLT3063; S390X-NEXT:    ldr %f9, %f03064; S390X-NEXT:    ldr %f0, %f83065; S390X-NEXT:    brasl %r14, exp2@PLT3066; S390X-NEXT:    std %f0, 0(%r13)3067; S390X-NEXT:    std %f9, 8(%r13)3068; S390X-NEXT:    std %f10, 16(%r13)3069; S390X-NEXT:    ld %f8, 176(%r15) # 8-byte Reload3070; S390X-NEXT:    ld %f9, 168(%r15) # 8-byte Reload3071; S390X-NEXT:    ld %f10, 160(%r15) # 8-byte Reload3072; S390X-NEXT:    lmg %r13, %r15, 288(%r15)3073; S390X-NEXT:    br %r143074;3075; SZ13-LABEL: constrained_vector_exp2_v3f64:3076; SZ13:       # %bb.0: # %entry3077; SZ13-NEXT:    stmg %r13, %r15, 104(%r15)3078; SZ13-NEXT:    .cfi_offset %r13, -563079; SZ13-NEXT:    .cfi_offset %r14, -483080; SZ13-NEXT:    .cfi_offset %r15, -403081; SZ13-NEXT:    aghi %r15, -2003082; SZ13-NEXT:    .cfi_def_cfa_offset 3603083; SZ13-NEXT:    std %f8, 192(%r15) # 8-byte Spill3084; SZ13-NEXT:    .cfi_offset %f8, -1683085; SZ13-NEXT:    vl %v0, 0(%r2), 43086; SZ13-NEXT:    ld %f8, 16(%r2)3087; SZ13-NEXT:    lgr %r13, %r23088; SZ13-NEXT:    vst %v0, 176(%r15), 3 # 16-byte Spill3089; SZ13-NEXT:    # kill: def $f0d killed $f0d killed $v03090; SZ13-NEXT:    brasl %r14, exp2@PLT3091; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v03092; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill3093; SZ13-NEXT:    vl %v0, 176(%r15), 3 # 16-byte Reload3094; SZ13-NEXT:    vrepg %v0, %v0, 13095; SZ13-NEXT:    # kill: def $f0d killed $f0d killed $v03096; SZ13-NEXT:    brasl %r14, exp2@PLT3097; SZ13-NEXT:    vl %v1, 160(%r15), 3 # 16-byte Reload3098; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v03099; SZ13-NEXT:    vmrhg %v0, %v1, %v03100; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill3101; SZ13-NEXT:    ldr %f0, %f83102; SZ13-NEXT:    brasl %r14, exp2@PLT3103; SZ13-NEXT:    mvc 0(16,%r13), 160(%r15) # 16-byte Folded Reload3104; SZ13-NEXT:    ld %f8, 192(%r15) # 8-byte Reload3105; SZ13-NEXT:    std %f0, 16(%r13)3106; SZ13-NEXT:    lmg %r13, %r15, 304(%r15)3107; SZ13-NEXT:    br %r143108entry:3109  %b = load <3 x double>, ptr %a3110  %exp2 = call <3 x double> @llvm.experimental.constrained.exp2.v3f64(3111                          <3 x double> %b,3112                          metadata !"round.dynamic",3113                          metadata !"fpexcept.strict") #03114  store <3 x double> %exp2, ptr %a3115  ret void3116}3117 3118define <4 x double> @constrained_vector_exp2_v4f64() #0 {3119; S390X-LABEL: constrained_vector_exp2_v4f64:3120; S390X:       # %bb.0: # %entry3121; S390X-NEXT:    stmg %r14, %r15, 112(%r15)3122; S390X-NEXT:    .cfi_offset %r14, -483123; S390X-NEXT:    .cfi_offset %r15, -403124; S390X-NEXT:    aghi %r15, -1843125; S390X-NEXT:    .cfi_def_cfa_offset 3443126; S390X-NEXT:    std %f8, 176(%r15) # 8-byte Spill3127; S390X-NEXT:    std %f9, 168(%r15) # 8-byte Spill3128; S390X-NEXT:    std %f10, 160(%r15) # 8-byte Spill3129; S390X-NEXT:    .cfi_offset %f8, -1683130; S390X-NEXT:    .cfi_offset %f9, -1763131; S390X-NEXT:    .cfi_offset %f10, -1843132; S390X-NEXT:    larl %r1, .LCPI59_03133; S390X-NEXT:    ld %f0, 0(%r1)3134; S390X-NEXT:    brasl %r14, exp2@PLT3135; S390X-NEXT:    larl %r1, .LCPI59_13136; S390X-NEXT:    ld %f1, 0(%r1)3137; S390X-NEXT:    ldr %f8, %f03138; S390X-NEXT:    ldr %f0, %f13139; S390X-NEXT:    brasl %r14, exp2@PLT3140; S390X-NEXT:    larl %r1, .LCPI59_23141; S390X-NEXT:    ld %f1, 0(%r1)3142; S390X-NEXT:    ldr %f9, %f03143; S390X-NEXT:    ldr %f0, %f13144; S390X-NEXT:    brasl %r14, exp2@PLT3145; S390X-NEXT:    larl %r1, .LCPI59_33146; S390X-NEXT:    ld %f1, 0(%r1)3147; S390X-NEXT:    ldr %f10, %f03148; S390X-NEXT:    ldr %f0, %f13149; S390X-NEXT:    brasl %r14, exp2@PLT3150; S390X-NEXT:    ldr %f2, %f103151; S390X-NEXT:    ldr %f4, %f93152; S390X-NEXT:    ldr %f6, %f83153; S390X-NEXT:    ld %f8, 176(%r15) # 8-byte Reload3154; S390X-NEXT:    ld %f9, 168(%r15) # 8-byte Reload3155; S390X-NEXT:    ld %f10, 160(%r15) # 8-byte Reload3156; S390X-NEXT:    lmg %r14, %r15, 296(%r15)3157; S390X-NEXT:    br %r143158;3159; SZ13-LABEL: constrained_vector_exp2_v4f64:3160; SZ13:       # %bb.0: # %entry3161; SZ13-NEXT:    stmg %r14, %r15, 112(%r15)3162; SZ13-NEXT:    .cfi_offset %r14, -483163; SZ13-NEXT:    .cfi_offset %r15, -403164; SZ13-NEXT:    aghi %r15, -1923165; SZ13-NEXT:    .cfi_def_cfa_offset 3523166; SZ13-NEXT:    larl %r1, .LCPI59_03167; SZ13-NEXT:    ld %f0, 0(%r1)3168; SZ13-NEXT:    brasl %r14, exp2@PLT3169; SZ13-NEXT:    larl %r1, .LCPI59_13170; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v03171; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill3172; SZ13-NEXT:    ld %f0, 0(%r1)3173; SZ13-NEXT:    brasl %r14, exp2@PLT3174; SZ13-NEXT:    vl %v1, 160(%r15), 3 # 16-byte Reload3175; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v03176; SZ13-NEXT:    vmrhg %v0, %v0, %v13177; SZ13-NEXT:    larl %r1, .LCPI59_23178; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill3179; SZ13-NEXT:    ld %f0, 0(%r1)3180; SZ13-NEXT:    brasl %r14, exp2@PLT3181; SZ13-NEXT:    larl %r1, .LCPI59_33182; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v03183; SZ13-NEXT:    vst %v0, 176(%r15), 3 # 16-byte Spill3184; SZ13-NEXT:    ld %f0, 0(%r1)3185; SZ13-NEXT:    brasl %r14, exp2@PLT3186; SZ13-NEXT:    vl %v1, 176(%r15), 3 # 16-byte Reload3187; SZ13-NEXT:    vl %v24, 160(%r15), 3 # 16-byte Reload3188; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v03189; SZ13-NEXT:    vmrhg %v26, %v0, %v13190; SZ13-NEXT:    lmg %r14, %r15, 304(%r15)3191; SZ13-NEXT:    br %r143192entry:3193  %exp2 = call <4 x double> @llvm.experimental.constrained.exp2.v4f64(3194                              <4 x double> <double 42.1, double 42.2,3195                                            double 42.3, double 42.4>,3196                              metadata !"round.dynamic",3197                              metadata !"fpexcept.strict") #03198  ret <4 x double> %exp23199}3200 3201define <1 x float> @constrained_vector_log_v1f32() #0 {3202; S390X-LABEL: constrained_vector_log_v1f32:3203; S390X:       # %bb.0: # %entry3204; S390X-NEXT:    stmg %r14, %r15, 112(%r15)3205; S390X-NEXT:    .cfi_offset %r14, -483206; S390X-NEXT:    .cfi_offset %r15, -403207; S390X-NEXT:    aghi %r15, -1603208; S390X-NEXT:    .cfi_def_cfa_offset 3203209; S390X-NEXT:    larl %r1, .LCPI60_03210; S390X-NEXT:    le %f0, 0(%r1)3211; S390X-NEXT:    brasl %r14, logf@PLT3212; S390X-NEXT:    lmg %r14, %r15, 272(%r15)3213; S390X-NEXT:    br %r143214;3215; SZ13-LABEL: constrained_vector_log_v1f32:3216; SZ13:       # %bb.0: # %entry3217; SZ13-NEXT:    stmg %r14, %r15, 112(%r15)3218; SZ13-NEXT:    .cfi_offset %r14, -483219; SZ13-NEXT:    .cfi_offset %r15, -403220; SZ13-NEXT:    aghi %r15, -1603221; SZ13-NEXT:    .cfi_def_cfa_offset 3203222; SZ13-NEXT:    larl %r1, .LCPI60_03223; SZ13-NEXT:    lde %f0, 0(%r1)3224; SZ13-NEXT:    brasl %r14, logf@PLT3225; SZ13-NEXT:    # kill: def $f0s killed $f0s def $v03226; SZ13-NEXT:    vlr %v24, %v03227; SZ13-NEXT:    lmg %r14, %r15, 272(%r15)3228; SZ13-NEXT:    br %r143229entry:3230  %log = call <1 x float> @llvm.experimental.constrained.log.v1f32(3231                             <1 x float> <float 42.0>,3232                             metadata !"round.dynamic",3233                             metadata !"fpexcept.strict") #03234  ret <1 x float> %log3235}3236 3237define <2 x double> @constrained_vector_log_v2f64() #0 {3238; S390X-LABEL: constrained_vector_log_v2f64:3239; S390X:       # %bb.0: # %entry3240; S390X-NEXT:    stmg %r14, %r15, 112(%r15)3241; S390X-NEXT:    .cfi_offset %r14, -483242; S390X-NEXT:    .cfi_offset %r15, -403243; S390X-NEXT:    aghi %r15, -1683244; S390X-NEXT:    .cfi_def_cfa_offset 3283245; S390X-NEXT:    std %f8, 160(%r15) # 8-byte Spill3246; S390X-NEXT:    .cfi_offset %f8, -1683247; S390X-NEXT:    larl %r1, .LCPI61_03248; S390X-NEXT:    ld %f0, 0(%r1)3249; S390X-NEXT:    brasl %r14, log@PLT3250; S390X-NEXT:    larl %r1, .LCPI61_13251; S390X-NEXT:    ld %f1, 0(%r1)3252; S390X-NEXT:    ldr %f8, %f03253; S390X-NEXT:    ldr %f0, %f13254; S390X-NEXT:    brasl %r14, log@PLT3255; S390X-NEXT:    ldr %f2, %f83256; S390X-NEXT:    ld %f8, 160(%r15) # 8-byte Reload3257; S390X-NEXT:    lmg %r14, %r15, 280(%r15)3258; S390X-NEXT:    br %r143259;3260; SZ13-LABEL: constrained_vector_log_v2f64:3261; SZ13:       # %bb.0: # %entry3262; SZ13-NEXT:    stmg %r14, %r15, 112(%r15)3263; SZ13-NEXT:    .cfi_offset %r14, -483264; SZ13-NEXT:    .cfi_offset %r15, -403265; SZ13-NEXT:    aghi %r15, -1763266; SZ13-NEXT:    .cfi_def_cfa_offset 3363267; SZ13-NEXT:    larl %r1, .LCPI61_03268; SZ13-NEXT:    ld %f0, 0(%r1)3269; SZ13-NEXT:    brasl %r14, log@PLT3270; SZ13-NEXT:    larl %r1, .LCPI61_13271; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v03272; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill3273; SZ13-NEXT:    ld %f0, 0(%r1)3274; SZ13-NEXT:    brasl %r14, log@PLT3275; SZ13-NEXT:    vl %v1, 160(%r15), 3 # 16-byte Reload3276; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v03277; SZ13-NEXT:    vmrhg %v24, %v0, %v13278; SZ13-NEXT:    lmg %r14, %r15, 288(%r15)3279; SZ13-NEXT:    br %r143280entry:3281  %log = call <2 x double> @llvm.experimental.constrained.log.v2f64(3282                             <2 x double> <double 42.0, double 42.1>,3283                             metadata !"round.dynamic",3284                             metadata !"fpexcept.strict") #03285  ret <2 x double> %log3286}3287 3288define <3 x float> @constrained_vector_log_v3f32() #0 {3289; S390X-LABEL: constrained_vector_log_v3f32:3290; S390X:       # %bb.0: # %entry3291; S390X-NEXT:    stmg %r14, %r15, 112(%r15)3292; S390X-NEXT:    .cfi_offset %r14, -483293; S390X-NEXT:    .cfi_offset %r15, -403294; S390X-NEXT:    aghi %r15, -1763295; S390X-NEXT:    .cfi_def_cfa_offset 3363296; S390X-NEXT:    std %f8, 168(%r15) # 8-byte Spill3297; S390X-NEXT:    std %f9, 160(%r15) # 8-byte Spill3298; S390X-NEXT:    .cfi_offset %f8, -1683299; S390X-NEXT:    .cfi_offset %f9, -1763300; S390X-NEXT:    larl %r1, .LCPI62_03301; S390X-NEXT:    le %f0, 0(%r1)3302; S390X-NEXT:    brasl %r14, logf@PLT3303; S390X-NEXT:    larl %r1, .LCPI62_13304; S390X-NEXT:    le %f1, 0(%r1)3305; S390X-NEXT:    ler %f8, %f03306; S390X-NEXT:    ler %f0, %f13307; S390X-NEXT:    brasl %r14, logf@PLT3308; S390X-NEXT:    larl %r1, .LCPI62_23309; S390X-NEXT:    le %f1, 0(%r1)3310; S390X-NEXT:    ler %f9, %f03311; S390X-NEXT:    ler %f0, %f13312; S390X-NEXT:    brasl %r14, logf@PLT3313; S390X-NEXT:    ler %f2, %f93314; S390X-NEXT:    ler %f4, %f83315; S390X-NEXT:    ld %f8, 168(%r15) # 8-byte Reload3316; S390X-NEXT:    ld %f9, 160(%r15) # 8-byte Reload3317; S390X-NEXT:    lmg %r14, %r15, 288(%r15)3318; S390X-NEXT:    br %r143319;3320; SZ13-LABEL: constrained_vector_log_v3f32:3321; SZ13:       # %bb.0: # %entry3322; SZ13-NEXT:    stmg %r14, %r15, 112(%r15)3323; SZ13-NEXT:    .cfi_offset %r14, -483324; SZ13-NEXT:    .cfi_offset %r15, -403325; SZ13-NEXT:    aghi %r15, -1923326; SZ13-NEXT:    .cfi_def_cfa_offset 3523327; SZ13-NEXT:    larl %r1, .LCPI62_03328; SZ13-NEXT:    lde %f0, 0(%r1)3329; SZ13-NEXT:    brasl %r14, logf@PLT3330; SZ13-NEXT:    larl %r1, .LCPI62_13331; SZ13-NEXT:    # kill: def $f0s killed $f0s def $v03332; SZ13-NEXT:    vst %v0, 176(%r15), 3 # 16-byte Spill3333; SZ13-NEXT:    lde %f0, 0(%r1)3334; SZ13-NEXT:    brasl %r14, logf@PLT3335; SZ13-NEXT:    larl %r1, .LCPI62_23336; SZ13-NEXT:    # kill: def $f0s killed $f0s def $v03337; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill3338; SZ13-NEXT:    lde %f0, 0(%r1)3339; SZ13-NEXT:    brasl %r14, logf@PLT3340; SZ13-NEXT:    vl %v1, 160(%r15), 3 # 16-byte Reload3341; SZ13-NEXT:    # kill: def $f0s killed $f0s def $v03342; SZ13-NEXT:    vmrhf %v0, %v1, %v03343; SZ13-NEXT:    vl %v1, 176(%r15), 3 # 16-byte Reload3344; SZ13-NEXT:    vrepf %v1, %v1, 03345; SZ13-NEXT:    vmrhg %v24, %v0, %v13346; SZ13-NEXT:    lmg %r14, %r15, 304(%r15)3347; SZ13-NEXT:    br %r143348entry:3349  %log = call <3 x float> @llvm.experimental.constrained.log.v3f32(3350                              <3 x float> <float 42.0, float 43.0, float 44.0>,3351                              metadata !"round.dynamic",3352                              metadata !"fpexcept.strict") #03353  ret <3 x float> %log3354}3355 3356define void @constrained_vector_log_v3f64(ptr %a) #0 {3357; S390X-LABEL: constrained_vector_log_v3f64:3358; S390X:       # %bb.0: # %entry3359; S390X-NEXT:    stmg %r13, %r15, 104(%r15)3360; S390X-NEXT:    .cfi_offset %r13, -563361; S390X-NEXT:    .cfi_offset %r14, -483362; S390X-NEXT:    .cfi_offset %r15, -403363; S390X-NEXT:    aghi %r15, -1843364; S390X-NEXT:    .cfi_def_cfa_offset 3443365; S390X-NEXT:    std %f8, 176(%r15) # 8-byte Spill3366; S390X-NEXT:    std %f9, 168(%r15) # 8-byte Spill3367; S390X-NEXT:    std %f10, 160(%r15) # 8-byte Spill3368; S390X-NEXT:    .cfi_offset %f8, -1683369; S390X-NEXT:    .cfi_offset %f9, -1763370; S390X-NEXT:    .cfi_offset %f10, -1843371; S390X-NEXT:    lgr %r13, %r23372; S390X-NEXT:    ld %f8, 0(%r2)3373; S390X-NEXT:    ld %f0, 16(%r2)3374; S390X-NEXT:    ld %f9, 8(%r2)3375; S390X-NEXT:    brasl %r14, log@PLT3376; S390X-NEXT:    ldr %f10, %f03377; S390X-NEXT:    ldr %f0, %f93378; S390X-NEXT:    brasl %r14, log@PLT3379; S390X-NEXT:    ldr %f9, %f03380; S390X-NEXT:    ldr %f0, %f83381; S390X-NEXT:    brasl %r14, log@PLT3382; S390X-NEXT:    std %f0, 0(%r13)3383; S390X-NEXT:    std %f9, 8(%r13)3384; S390X-NEXT:    std %f10, 16(%r13)3385; S390X-NEXT:    ld %f8, 176(%r15) # 8-byte Reload3386; S390X-NEXT:    ld %f9, 168(%r15) # 8-byte Reload3387; S390X-NEXT:    ld %f10, 160(%r15) # 8-byte Reload3388; S390X-NEXT:    lmg %r13, %r15, 288(%r15)3389; S390X-NEXT:    br %r143390;3391; SZ13-LABEL: constrained_vector_log_v3f64:3392; SZ13:       # %bb.0: # %entry3393; SZ13-NEXT:    stmg %r13, %r15, 104(%r15)3394; SZ13-NEXT:    .cfi_offset %r13, -563395; SZ13-NEXT:    .cfi_offset %r14, -483396; SZ13-NEXT:    .cfi_offset %r15, -403397; SZ13-NEXT:    aghi %r15, -2003398; SZ13-NEXT:    .cfi_def_cfa_offset 3603399; SZ13-NEXT:    std %f8, 192(%r15) # 8-byte Spill3400; SZ13-NEXT:    .cfi_offset %f8, -1683401; SZ13-NEXT:    vl %v0, 0(%r2), 43402; SZ13-NEXT:    ld %f8, 16(%r2)3403; SZ13-NEXT:    lgr %r13, %r23404; SZ13-NEXT:    vst %v0, 176(%r15), 3 # 16-byte Spill3405; SZ13-NEXT:    # kill: def $f0d killed $f0d killed $v03406; SZ13-NEXT:    brasl %r14, log@PLT3407; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v03408; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill3409; SZ13-NEXT:    vl %v0, 176(%r15), 3 # 16-byte Reload3410; SZ13-NEXT:    vrepg %v0, %v0, 13411; SZ13-NEXT:    # kill: def $f0d killed $f0d killed $v03412; SZ13-NEXT:    brasl %r14, log@PLT3413; SZ13-NEXT:    vl %v1, 160(%r15), 3 # 16-byte Reload3414; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v03415; SZ13-NEXT:    vmrhg %v0, %v1, %v03416; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill3417; SZ13-NEXT:    ldr %f0, %f83418; SZ13-NEXT:    brasl %r14, log@PLT3419; SZ13-NEXT:    mvc 0(16,%r13), 160(%r15) # 16-byte Folded Reload3420; SZ13-NEXT:    ld %f8, 192(%r15) # 8-byte Reload3421; SZ13-NEXT:    std %f0, 16(%r13)3422; SZ13-NEXT:    lmg %r13, %r15, 304(%r15)3423; SZ13-NEXT:    br %r143424entry:3425  %b = load <3 x double>, ptr %a3426  %log = call <3 x double> @llvm.experimental.constrained.log.v3f64(3427                          <3 x double> %b,3428                          metadata !"round.dynamic",3429                          metadata !"fpexcept.strict") #03430  store <3 x double> %log, ptr %a3431  ret void3432}3433 3434define <4 x double> @constrained_vector_log_v4f64() #0 {3435; S390X-LABEL: constrained_vector_log_v4f64:3436; S390X:       # %bb.0: # %entry3437; S390X-NEXT:    stmg %r14, %r15, 112(%r15)3438; S390X-NEXT:    .cfi_offset %r14, -483439; S390X-NEXT:    .cfi_offset %r15, -403440; S390X-NEXT:    aghi %r15, -1843441; S390X-NEXT:    .cfi_def_cfa_offset 3443442; S390X-NEXT:    std %f8, 176(%r15) # 8-byte Spill3443; S390X-NEXT:    std %f9, 168(%r15) # 8-byte Spill3444; S390X-NEXT:    std %f10, 160(%r15) # 8-byte Spill3445; S390X-NEXT:    .cfi_offset %f8, -1683446; S390X-NEXT:    .cfi_offset %f9, -1763447; S390X-NEXT:    .cfi_offset %f10, -1843448; S390X-NEXT:    larl %r1, .LCPI64_03449; S390X-NEXT:    ld %f0, 0(%r1)3450; S390X-NEXT:    brasl %r14, log@PLT3451; S390X-NEXT:    larl %r1, .LCPI64_13452; S390X-NEXT:    ld %f1, 0(%r1)3453; S390X-NEXT:    ldr %f8, %f03454; S390X-NEXT:    ldr %f0, %f13455; S390X-NEXT:    brasl %r14, log@PLT3456; S390X-NEXT:    larl %r1, .LCPI64_23457; S390X-NEXT:    ld %f1, 0(%r1)3458; S390X-NEXT:    ldr %f9, %f03459; S390X-NEXT:    ldr %f0, %f13460; S390X-NEXT:    brasl %r14, log@PLT3461; S390X-NEXT:    larl %r1, .LCPI64_33462; S390X-NEXT:    ld %f1, 0(%r1)3463; S390X-NEXT:    ldr %f10, %f03464; S390X-NEXT:    ldr %f0, %f13465; S390X-NEXT:    brasl %r14, log@PLT3466; S390X-NEXT:    ldr %f2, %f103467; S390X-NEXT:    ldr %f4, %f93468; S390X-NEXT:    ldr %f6, %f83469; S390X-NEXT:    ld %f8, 176(%r15) # 8-byte Reload3470; S390X-NEXT:    ld %f9, 168(%r15) # 8-byte Reload3471; S390X-NEXT:    ld %f10, 160(%r15) # 8-byte Reload3472; S390X-NEXT:    lmg %r14, %r15, 296(%r15)3473; S390X-NEXT:    br %r143474;3475; SZ13-LABEL: constrained_vector_log_v4f64:3476; SZ13:       # %bb.0: # %entry3477; SZ13-NEXT:    stmg %r14, %r15, 112(%r15)3478; SZ13-NEXT:    .cfi_offset %r14, -483479; SZ13-NEXT:    .cfi_offset %r15, -403480; SZ13-NEXT:    aghi %r15, -1923481; SZ13-NEXT:    .cfi_def_cfa_offset 3523482; SZ13-NEXT:    larl %r1, .LCPI64_03483; SZ13-NEXT:    ld %f0, 0(%r1)3484; SZ13-NEXT:    brasl %r14, log@PLT3485; SZ13-NEXT:    larl %r1, .LCPI64_13486; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v03487; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill3488; SZ13-NEXT:    ld %f0, 0(%r1)3489; SZ13-NEXT:    brasl %r14, log@PLT3490; SZ13-NEXT:    vl %v1, 160(%r15), 3 # 16-byte Reload3491; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v03492; SZ13-NEXT:    vmrhg %v0, %v0, %v13493; SZ13-NEXT:    larl %r1, .LCPI64_23494; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill3495; SZ13-NEXT:    ld %f0, 0(%r1)3496; SZ13-NEXT:    brasl %r14, log@PLT3497; SZ13-NEXT:    larl %r1, .LCPI64_33498; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v03499; SZ13-NEXT:    vst %v0, 176(%r15), 3 # 16-byte Spill3500; SZ13-NEXT:    ld %f0, 0(%r1)3501; SZ13-NEXT:    brasl %r14, log@PLT3502; SZ13-NEXT:    vl %v1, 176(%r15), 3 # 16-byte Reload3503; SZ13-NEXT:    vl %v24, 160(%r15), 3 # 16-byte Reload3504; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v03505; SZ13-NEXT:    vmrhg %v26, %v0, %v13506; SZ13-NEXT:    lmg %r14, %r15, 304(%r15)3507; SZ13-NEXT:    br %r143508entry:3509  %log = call <4 x double> @llvm.experimental.constrained.log.v4f64(3510                             <4 x double> <double 42.0, double 42.1,3511                                           double 42.2, double 42.3>,3512                             metadata !"round.dynamic",3513                             metadata !"fpexcept.strict") #03514  ret <4 x double> %log3515}3516 3517define <1 x float> @constrained_vector_log10_v1f32() #0 {3518; S390X-LABEL: constrained_vector_log10_v1f32:3519; S390X:       # %bb.0: # %entry3520; S390X-NEXT:    stmg %r14, %r15, 112(%r15)3521; S390X-NEXT:    .cfi_offset %r14, -483522; S390X-NEXT:    .cfi_offset %r15, -403523; S390X-NEXT:    aghi %r15, -1603524; S390X-NEXT:    .cfi_def_cfa_offset 3203525; S390X-NEXT:    larl %r1, .LCPI65_03526; S390X-NEXT:    le %f0, 0(%r1)3527; S390X-NEXT:    brasl %r14, log10f@PLT3528; S390X-NEXT:    lmg %r14, %r15, 272(%r15)3529; S390X-NEXT:    br %r143530;3531; SZ13-LABEL: constrained_vector_log10_v1f32:3532; SZ13:       # %bb.0: # %entry3533; SZ13-NEXT:    stmg %r14, %r15, 112(%r15)3534; SZ13-NEXT:    .cfi_offset %r14, -483535; SZ13-NEXT:    .cfi_offset %r15, -403536; SZ13-NEXT:    aghi %r15, -1603537; SZ13-NEXT:    .cfi_def_cfa_offset 3203538; SZ13-NEXT:    larl %r1, .LCPI65_03539; SZ13-NEXT:    lde %f0, 0(%r1)3540; SZ13-NEXT:    brasl %r14, log10f@PLT3541; SZ13-NEXT:    # kill: def $f0s killed $f0s def $v03542; SZ13-NEXT:    vlr %v24, %v03543; SZ13-NEXT:    lmg %r14, %r15, 272(%r15)3544; SZ13-NEXT:    br %r143545entry:3546  %log10 = call <1 x float> @llvm.experimental.constrained.log10.v1f32(3547                             <1 x float> <float 42.0>,3548                             metadata !"round.dynamic",3549                             metadata !"fpexcept.strict") #03550  ret <1 x float> %log103551}3552 3553define <2 x double> @constrained_vector_log10_v2f64() #0 {3554; S390X-LABEL: constrained_vector_log10_v2f64:3555; S390X:       # %bb.0: # %entry3556; S390X-NEXT:    stmg %r14, %r15, 112(%r15)3557; S390X-NEXT:    .cfi_offset %r14, -483558; S390X-NEXT:    .cfi_offset %r15, -403559; S390X-NEXT:    aghi %r15, -1683560; S390X-NEXT:    .cfi_def_cfa_offset 3283561; S390X-NEXT:    std %f8, 160(%r15) # 8-byte Spill3562; S390X-NEXT:    .cfi_offset %f8, -1683563; S390X-NEXT:    larl %r1, .LCPI66_03564; S390X-NEXT:    ld %f0, 0(%r1)3565; S390X-NEXT:    brasl %r14, log10@PLT3566; S390X-NEXT:    larl %r1, .LCPI66_13567; S390X-NEXT:    ld %f1, 0(%r1)3568; S390X-NEXT:    ldr %f8, %f03569; S390X-NEXT:    ldr %f0, %f13570; S390X-NEXT:    brasl %r14, log10@PLT3571; S390X-NEXT:    ldr %f2, %f83572; S390X-NEXT:    ld %f8, 160(%r15) # 8-byte Reload3573; S390X-NEXT:    lmg %r14, %r15, 280(%r15)3574; S390X-NEXT:    br %r143575;3576; SZ13-LABEL: constrained_vector_log10_v2f64:3577; SZ13:       # %bb.0: # %entry3578; SZ13-NEXT:    stmg %r14, %r15, 112(%r15)3579; SZ13-NEXT:    .cfi_offset %r14, -483580; SZ13-NEXT:    .cfi_offset %r15, -403581; SZ13-NEXT:    aghi %r15, -1763582; SZ13-NEXT:    .cfi_def_cfa_offset 3363583; SZ13-NEXT:    larl %r1, .LCPI66_03584; SZ13-NEXT:    ld %f0, 0(%r1)3585; SZ13-NEXT:    brasl %r14, log10@PLT3586; SZ13-NEXT:    larl %r1, .LCPI66_13587; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v03588; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill3589; SZ13-NEXT:    ld %f0, 0(%r1)3590; SZ13-NEXT:    brasl %r14, log10@PLT3591; SZ13-NEXT:    vl %v1, 160(%r15), 3 # 16-byte Reload3592; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v03593; SZ13-NEXT:    vmrhg %v24, %v0, %v13594; SZ13-NEXT:    lmg %r14, %r15, 288(%r15)3595; SZ13-NEXT:    br %r143596entry:3597  %log10 = call <2 x double> @llvm.experimental.constrained.log10.v2f64(3598                               <2 x double> <double 42.0, double 42.1>,3599                               metadata !"round.dynamic",3600                               metadata !"fpexcept.strict") #03601  ret <2 x double> %log103602}3603 3604define <3 x float> @constrained_vector_log10_v3f32() #0 {3605; S390X-LABEL: constrained_vector_log10_v3f32:3606; S390X:       # %bb.0: # %entry3607; S390X-NEXT:    stmg %r14, %r15, 112(%r15)3608; S390X-NEXT:    .cfi_offset %r14, -483609; S390X-NEXT:    .cfi_offset %r15, -403610; S390X-NEXT:    aghi %r15, -1763611; S390X-NEXT:    .cfi_def_cfa_offset 3363612; S390X-NEXT:    std %f8, 168(%r15) # 8-byte Spill3613; S390X-NEXT:    std %f9, 160(%r15) # 8-byte Spill3614; S390X-NEXT:    .cfi_offset %f8, -1683615; S390X-NEXT:    .cfi_offset %f9, -1763616; S390X-NEXT:    larl %r1, .LCPI67_03617; S390X-NEXT:    le %f0, 0(%r1)3618; S390X-NEXT:    brasl %r14, log10f@PLT3619; S390X-NEXT:    larl %r1, .LCPI67_13620; S390X-NEXT:    le %f1, 0(%r1)3621; S390X-NEXT:    ler %f8, %f03622; S390X-NEXT:    ler %f0, %f13623; S390X-NEXT:    brasl %r14, log10f@PLT3624; S390X-NEXT:    larl %r1, .LCPI67_23625; S390X-NEXT:    le %f1, 0(%r1)3626; S390X-NEXT:    ler %f9, %f03627; S390X-NEXT:    ler %f0, %f13628; S390X-NEXT:    brasl %r14, log10f@PLT3629; S390X-NEXT:    ler %f2, %f93630; S390X-NEXT:    ler %f4, %f83631; S390X-NEXT:    ld %f8, 168(%r15) # 8-byte Reload3632; S390X-NEXT:    ld %f9, 160(%r15) # 8-byte Reload3633; S390X-NEXT:    lmg %r14, %r15, 288(%r15)3634; S390X-NEXT:    br %r143635;3636; SZ13-LABEL: constrained_vector_log10_v3f32:3637; SZ13:       # %bb.0: # %entry3638; SZ13-NEXT:    stmg %r14, %r15, 112(%r15)3639; SZ13-NEXT:    .cfi_offset %r14, -483640; SZ13-NEXT:    .cfi_offset %r15, -403641; SZ13-NEXT:    aghi %r15, -1923642; SZ13-NEXT:    .cfi_def_cfa_offset 3523643; SZ13-NEXT:    larl %r1, .LCPI67_03644; SZ13-NEXT:    lde %f0, 0(%r1)3645; SZ13-NEXT:    brasl %r14, log10f@PLT3646; SZ13-NEXT:    larl %r1, .LCPI67_13647; SZ13-NEXT:    # kill: def $f0s killed $f0s def $v03648; SZ13-NEXT:    vst %v0, 176(%r15), 3 # 16-byte Spill3649; SZ13-NEXT:    lde %f0, 0(%r1)3650; SZ13-NEXT:    brasl %r14, log10f@PLT3651; SZ13-NEXT:    larl %r1, .LCPI67_23652; SZ13-NEXT:    # kill: def $f0s killed $f0s def $v03653; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill3654; SZ13-NEXT:    lde %f0, 0(%r1)3655; SZ13-NEXT:    brasl %r14, log10f@PLT3656; SZ13-NEXT:    vl %v1, 160(%r15), 3 # 16-byte Reload3657; SZ13-NEXT:    # kill: def $f0s killed $f0s def $v03658; SZ13-NEXT:    vmrhf %v0, %v1, %v03659; SZ13-NEXT:    vl %v1, 176(%r15), 3 # 16-byte Reload3660; SZ13-NEXT:    vrepf %v1, %v1, 03661; SZ13-NEXT:    vmrhg %v24, %v0, %v13662; SZ13-NEXT:    lmg %r14, %r15, 304(%r15)3663; SZ13-NEXT:    br %r143664entry:3665  %log10 = call <3 x float> @llvm.experimental.constrained.log10.v3f32(3666                              <3 x float> <float 42.0, float 43.0, float 44.0>,3667                              metadata !"round.dynamic",3668                              metadata !"fpexcept.strict") #03669  ret <3 x float> %log103670}3671 3672define void @constrained_vector_log10_v3f64(ptr %a) #0 {3673; S390X-LABEL: constrained_vector_log10_v3f64:3674; S390X:       # %bb.0: # %entry3675; S390X-NEXT:    stmg %r13, %r15, 104(%r15)3676; S390X-NEXT:    .cfi_offset %r13, -563677; S390X-NEXT:    .cfi_offset %r14, -483678; S390X-NEXT:    .cfi_offset %r15, -403679; S390X-NEXT:    aghi %r15, -1843680; S390X-NEXT:    .cfi_def_cfa_offset 3443681; S390X-NEXT:    std %f8, 176(%r15) # 8-byte Spill3682; S390X-NEXT:    std %f9, 168(%r15) # 8-byte Spill3683; S390X-NEXT:    std %f10, 160(%r15) # 8-byte Spill3684; S390X-NEXT:    .cfi_offset %f8, -1683685; S390X-NEXT:    .cfi_offset %f9, -1763686; S390X-NEXT:    .cfi_offset %f10, -1843687; S390X-NEXT:    lgr %r13, %r23688; S390X-NEXT:    ld %f8, 0(%r2)3689; S390X-NEXT:    ld %f0, 16(%r2)3690; S390X-NEXT:    ld %f9, 8(%r2)3691; S390X-NEXT:    brasl %r14, log10@PLT3692; S390X-NEXT:    ldr %f10, %f03693; S390X-NEXT:    ldr %f0, %f93694; S390X-NEXT:    brasl %r14, log10@PLT3695; S390X-NEXT:    ldr %f9, %f03696; S390X-NEXT:    ldr %f0, %f83697; S390X-NEXT:    brasl %r14, log10@PLT3698; S390X-NEXT:    std %f0, 0(%r13)3699; S390X-NEXT:    std %f9, 8(%r13)3700; S390X-NEXT:    std %f10, 16(%r13)3701; S390X-NEXT:    ld %f8, 176(%r15) # 8-byte Reload3702; S390X-NEXT:    ld %f9, 168(%r15) # 8-byte Reload3703; S390X-NEXT:    ld %f10, 160(%r15) # 8-byte Reload3704; S390X-NEXT:    lmg %r13, %r15, 288(%r15)3705; S390X-NEXT:    br %r143706;3707; SZ13-LABEL: constrained_vector_log10_v3f64:3708; SZ13:       # %bb.0: # %entry3709; SZ13-NEXT:    stmg %r13, %r15, 104(%r15)3710; SZ13-NEXT:    .cfi_offset %r13, -563711; SZ13-NEXT:    .cfi_offset %r14, -483712; SZ13-NEXT:    .cfi_offset %r15, -403713; SZ13-NEXT:    aghi %r15, -2003714; SZ13-NEXT:    .cfi_def_cfa_offset 3603715; SZ13-NEXT:    std %f8, 192(%r15) # 8-byte Spill3716; SZ13-NEXT:    .cfi_offset %f8, -1683717; SZ13-NEXT:    vl %v0, 0(%r2), 43718; SZ13-NEXT:    ld %f8, 16(%r2)3719; SZ13-NEXT:    lgr %r13, %r23720; SZ13-NEXT:    vst %v0, 176(%r15), 3 # 16-byte Spill3721; SZ13-NEXT:    # kill: def $f0d killed $f0d killed $v03722; SZ13-NEXT:    brasl %r14, log10@PLT3723; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v03724; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill3725; SZ13-NEXT:    vl %v0, 176(%r15), 3 # 16-byte Reload3726; SZ13-NEXT:    vrepg %v0, %v0, 13727; SZ13-NEXT:    # kill: def $f0d killed $f0d killed $v03728; SZ13-NEXT:    brasl %r14, log10@PLT3729; SZ13-NEXT:    vl %v1, 160(%r15), 3 # 16-byte Reload3730; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v03731; SZ13-NEXT:    vmrhg %v0, %v1, %v03732; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill3733; SZ13-NEXT:    ldr %f0, %f83734; SZ13-NEXT:    brasl %r14, log10@PLT3735; SZ13-NEXT:    mvc 0(16,%r13), 160(%r15) # 16-byte Folded Reload3736; SZ13-NEXT:    ld %f8, 192(%r15) # 8-byte Reload3737; SZ13-NEXT:    std %f0, 16(%r13)3738; SZ13-NEXT:    lmg %r13, %r15, 304(%r15)3739; SZ13-NEXT:    br %r143740entry:3741  %b = load <3 x double>, ptr %a3742  %log10 = call <3 x double> @llvm.experimental.constrained.log10.v3f64(3743                          <3 x double> %b,3744                          metadata !"round.dynamic",3745                          metadata !"fpexcept.strict") #03746  store <3 x double> %log10, ptr %a3747  ret void3748}3749 3750define <4 x double> @constrained_vector_log10_v4f64() #0 {3751; S390X-LABEL: constrained_vector_log10_v4f64:3752; S390X:       # %bb.0: # %entry3753; S390X-NEXT:    stmg %r14, %r15, 112(%r15)3754; S390X-NEXT:    .cfi_offset %r14, -483755; S390X-NEXT:    .cfi_offset %r15, -403756; S390X-NEXT:    aghi %r15, -1843757; S390X-NEXT:    .cfi_def_cfa_offset 3443758; S390X-NEXT:    std %f8, 176(%r15) # 8-byte Spill3759; S390X-NEXT:    std %f9, 168(%r15) # 8-byte Spill3760; S390X-NEXT:    std %f10, 160(%r15) # 8-byte Spill3761; S390X-NEXT:    .cfi_offset %f8, -1683762; S390X-NEXT:    .cfi_offset %f9, -1763763; S390X-NEXT:    .cfi_offset %f10, -1843764; S390X-NEXT:    larl %r1, .LCPI69_03765; S390X-NEXT:    ld %f0, 0(%r1)3766; S390X-NEXT:    brasl %r14, log10@PLT3767; S390X-NEXT:    larl %r1, .LCPI69_13768; S390X-NEXT:    ld %f1, 0(%r1)3769; S390X-NEXT:    ldr %f8, %f03770; S390X-NEXT:    ldr %f0, %f13771; S390X-NEXT:    brasl %r14, log10@PLT3772; S390X-NEXT:    larl %r1, .LCPI69_23773; S390X-NEXT:    ld %f1, 0(%r1)3774; S390X-NEXT:    ldr %f9, %f03775; S390X-NEXT:    ldr %f0, %f13776; S390X-NEXT:    brasl %r14, log10@PLT3777; S390X-NEXT:    larl %r1, .LCPI69_33778; S390X-NEXT:    ld %f1, 0(%r1)3779; S390X-NEXT:    ldr %f10, %f03780; S390X-NEXT:    ldr %f0, %f13781; S390X-NEXT:    brasl %r14, log10@PLT3782; S390X-NEXT:    ldr %f2, %f103783; S390X-NEXT:    ldr %f4, %f93784; S390X-NEXT:    ldr %f6, %f83785; S390X-NEXT:    ld %f8, 176(%r15) # 8-byte Reload3786; S390X-NEXT:    ld %f9, 168(%r15) # 8-byte Reload3787; S390X-NEXT:    ld %f10, 160(%r15) # 8-byte Reload3788; S390X-NEXT:    lmg %r14, %r15, 296(%r15)3789; S390X-NEXT:    br %r143790;3791; SZ13-LABEL: constrained_vector_log10_v4f64:3792; SZ13:       # %bb.0: # %entry3793; SZ13-NEXT:    stmg %r14, %r15, 112(%r15)3794; SZ13-NEXT:    .cfi_offset %r14, -483795; SZ13-NEXT:    .cfi_offset %r15, -403796; SZ13-NEXT:    aghi %r15, -1923797; SZ13-NEXT:    .cfi_def_cfa_offset 3523798; SZ13-NEXT:    larl %r1, .LCPI69_03799; SZ13-NEXT:    ld %f0, 0(%r1)3800; SZ13-NEXT:    brasl %r14, log10@PLT3801; SZ13-NEXT:    larl %r1, .LCPI69_13802; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v03803; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill3804; SZ13-NEXT:    ld %f0, 0(%r1)3805; SZ13-NEXT:    brasl %r14, log10@PLT3806; SZ13-NEXT:    vl %v1, 160(%r15), 3 # 16-byte Reload3807; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v03808; SZ13-NEXT:    vmrhg %v0, %v0, %v13809; SZ13-NEXT:    larl %r1, .LCPI69_23810; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill3811; SZ13-NEXT:    ld %f0, 0(%r1)3812; SZ13-NEXT:    brasl %r14, log10@PLT3813; SZ13-NEXT:    larl %r1, .LCPI69_33814; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v03815; SZ13-NEXT:    vst %v0, 176(%r15), 3 # 16-byte Spill3816; SZ13-NEXT:    ld %f0, 0(%r1)3817; SZ13-NEXT:    brasl %r14, log10@PLT3818; SZ13-NEXT:    vl %v1, 176(%r15), 3 # 16-byte Reload3819; SZ13-NEXT:    vl %v24, 160(%r15), 3 # 16-byte Reload3820; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v03821; SZ13-NEXT:    vmrhg %v26, %v0, %v13822; SZ13-NEXT:    lmg %r14, %r15, 304(%r15)3823; SZ13-NEXT:    br %r143824entry:3825  %log10 = call <4 x double> @llvm.experimental.constrained.log10.v4f64(3826                               <4 x double> <double 42.0, double 42.1,3827                                             double 42.2, double 42.3>,3828                               metadata !"round.dynamic",3829                               metadata !"fpexcept.strict") #03830  ret <4 x double> %log103831}3832 3833define <1 x float> @constrained_vector_log2_v1f32() #0 {3834; S390X-LABEL: constrained_vector_log2_v1f32:3835; S390X:       # %bb.0: # %entry3836; S390X-NEXT:    stmg %r14, %r15, 112(%r15)3837; S390X-NEXT:    .cfi_offset %r14, -483838; S390X-NEXT:    .cfi_offset %r15, -403839; S390X-NEXT:    aghi %r15, -1603840; S390X-NEXT:    .cfi_def_cfa_offset 3203841; S390X-NEXT:    larl %r1, .LCPI70_03842; S390X-NEXT:    le %f0, 0(%r1)3843; S390X-NEXT:    brasl %r14, log2f@PLT3844; S390X-NEXT:    lmg %r14, %r15, 272(%r15)3845; S390X-NEXT:    br %r143846;3847; SZ13-LABEL: constrained_vector_log2_v1f32:3848; SZ13:       # %bb.0: # %entry3849; SZ13-NEXT:    stmg %r14, %r15, 112(%r15)3850; SZ13-NEXT:    .cfi_offset %r14, -483851; SZ13-NEXT:    .cfi_offset %r15, -403852; SZ13-NEXT:    aghi %r15, -1603853; SZ13-NEXT:    .cfi_def_cfa_offset 3203854; SZ13-NEXT:    larl %r1, .LCPI70_03855; SZ13-NEXT:    lde %f0, 0(%r1)3856; SZ13-NEXT:    brasl %r14, log2f@PLT3857; SZ13-NEXT:    # kill: def $f0s killed $f0s def $v03858; SZ13-NEXT:    vlr %v24, %v03859; SZ13-NEXT:    lmg %r14, %r15, 272(%r15)3860; SZ13-NEXT:    br %r143861entry:3862  %log2 = call <1 x float> @llvm.experimental.constrained.log2.v1f32(3863                             <1 x float> <float 42.0>,3864                             metadata !"round.dynamic",3865                             metadata !"fpexcept.strict") #03866  ret <1 x float> %log23867}3868 3869define <2 x double> @constrained_vector_log2_v2f64() #0 {3870; S390X-LABEL: constrained_vector_log2_v2f64:3871; S390X:       # %bb.0: # %entry3872; S390X-NEXT:    stmg %r14, %r15, 112(%r15)3873; S390X-NEXT:    .cfi_offset %r14, -483874; S390X-NEXT:    .cfi_offset %r15, -403875; S390X-NEXT:    aghi %r15, -1683876; S390X-NEXT:    .cfi_def_cfa_offset 3283877; S390X-NEXT:    std %f8, 160(%r15) # 8-byte Spill3878; S390X-NEXT:    .cfi_offset %f8, -1683879; S390X-NEXT:    larl %r1, .LCPI71_03880; S390X-NEXT:    ld %f0, 0(%r1)3881; S390X-NEXT:    brasl %r14, log2@PLT3882; S390X-NEXT:    larl %r1, .LCPI71_13883; S390X-NEXT:    ld %f1, 0(%r1)3884; S390X-NEXT:    ldr %f8, %f03885; S390X-NEXT:    ldr %f0, %f13886; S390X-NEXT:    brasl %r14, log2@PLT3887; S390X-NEXT:    ldr %f2, %f83888; S390X-NEXT:    ld %f8, 160(%r15) # 8-byte Reload3889; S390X-NEXT:    lmg %r14, %r15, 280(%r15)3890; S390X-NEXT:    br %r143891;3892; SZ13-LABEL: constrained_vector_log2_v2f64:3893; SZ13:       # %bb.0: # %entry3894; SZ13-NEXT:    stmg %r14, %r15, 112(%r15)3895; SZ13-NEXT:    .cfi_offset %r14, -483896; SZ13-NEXT:    .cfi_offset %r15, -403897; SZ13-NEXT:    aghi %r15, -1763898; SZ13-NEXT:    .cfi_def_cfa_offset 3363899; SZ13-NEXT:    larl %r1, .LCPI71_03900; SZ13-NEXT:    ld %f0, 0(%r1)3901; SZ13-NEXT:    brasl %r14, log2@PLT3902; SZ13-NEXT:    larl %r1, .LCPI71_13903; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v03904; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill3905; SZ13-NEXT:    ld %f0, 0(%r1)3906; SZ13-NEXT:    brasl %r14, log2@PLT3907; SZ13-NEXT:    vl %v1, 160(%r15), 3 # 16-byte Reload3908; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v03909; SZ13-NEXT:    vmrhg %v24, %v0, %v13910; SZ13-NEXT:    lmg %r14, %r15, 288(%r15)3911; SZ13-NEXT:    br %r143912entry:3913  %log2 = call <2 x double> @llvm.experimental.constrained.log2.v2f64(3914                              <2 x double> <double 42.0, double 42.1>,3915                              metadata !"round.dynamic",3916                              metadata !"fpexcept.strict") #03917  ret <2 x double> %log23918}3919 3920define <3 x float> @constrained_vector_log2_v3f32() #0 {3921; S390X-LABEL: constrained_vector_log2_v3f32:3922; S390X:       # %bb.0: # %entry3923; S390X-NEXT:    stmg %r14, %r15, 112(%r15)3924; S390X-NEXT:    .cfi_offset %r14, -483925; S390X-NEXT:    .cfi_offset %r15, -403926; S390X-NEXT:    aghi %r15, -1763927; S390X-NEXT:    .cfi_def_cfa_offset 3363928; S390X-NEXT:    std %f8, 168(%r15) # 8-byte Spill3929; S390X-NEXT:    std %f9, 160(%r15) # 8-byte Spill3930; S390X-NEXT:    .cfi_offset %f8, -1683931; S390X-NEXT:    .cfi_offset %f9, -1763932; S390X-NEXT:    larl %r1, .LCPI72_03933; S390X-NEXT:    le %f0, 0(%r1)3934; S390X-NEXT:    brasl %r14, log2f@PLT3935; S390X-NEXT:    larl %r1, .LCPI72_13936; S390X-NEXT:    le %f1, 0(%r1)3937; S390X-NEXT:    ler %f8, %f03938; S390X-NEXT:    ler %f0, %f13939; S390X-NEXT:    brasl %r14, log2f@PLT3940; S390X-NEXT:    larl %r1, .LCPI72_23941; S390X-NEXT:    le %f1, 0(%r1)3942; S390X-NEXT:    ler %f9, %f03943; S390X-NEXT:    ler %f0, %f13944; S390X-NEXT:    brasl %r14, log2f@PLT3945; S390X-NEXT:    ler %f2, %f93946; S390X-NEXT:    ler %f4, %f83947; S390X-NEXT:    ld %f8, 168(%r15) # 8-byte Reload3948; S390X-NEXT:    ld %f9, 160(%r15) # 8-byte Reload3949; S390X-NEXT:    lmg %r14, %r15, 288(%r15)3950; S390X-NEXT:    br %r143951;3952; SZ13-LABEL: constrained_vector_log2_v3f32:3953; SZ13:       # %bb.0: # %entry3954; SZ13-NEXT:    stmg %r14, %r15, 112(%r15)3955; SZ13-NEXT:    .cfi_offset %r14, -483956; SZ13-NEXT:    .cfi_offset %r15, -403957; SZ13-NEXT:    aghi %r15, -1923958; SZ13-NEXT:    .cfi_def_cfa_offset 3523959; SZ13-NEXT:    larl %r1, .LCPI72_03960; SZ13-NEXT:    lde %f0, 0(%r1)3961; SZ13-NEXT:    brasl %r14, log2f@PLT3962; SZ13-NEXT:    larl %r1, .LCPI72_13963; SZ13-NEXT:    # kill: def $f0s killed $f0s def $v03964; SZ13-NEXT:    vst %v0, 176(%r15), 3 # 16-byte Spill3965; SZ13-NEXT:    lde %f0, 0(%r1)3966; SZ13-NEXT:    brasl %r14, log2f@PLT3967; SZ13-NEXT:    larl %r1, .LCPI72_23968; SZ13-NEXT:    # kill: def $f0s killed $f0s def $v03969; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill3970; SZ13-NEXT:    lde %f0, 0(%r1)3971; SZ13-NEXT:    brasl %r14, log2f@PLT3972; SZ13-NEXT:    vl %v1, 160(%r15), 3 # 16-byte Reload3973; SZ13-NEXT:    # kill: def $f0s killed $f0s def $v03974; SZ13-NEXT:    vmrhf %v0, %v1, %v03975; SZ13-NEXT:    vl %v1, 176(%r15), 3 # 16-byte Reload3976; SZ13-NEXT:    vrepf %v1, %v1, 03977; SZ13-NEXT:    vmrhg %v24, %v0, %v13978; SZ13-NEXT:    lmg %r14, %r15, 304(%r15)3979; SZ13-NEXT:    br %r143980entry:3981  %log2 = call <3 x float> @llvm.experimental.constrained.log2.v3f32(3982                              <3 x float> <float 42.0, float 43.0, float 44.0>,3983                              metadata !"round.dynamic",3984                              metadata !"fpexcept.strict") #03985  ret <3 x float> %log23986}3987 3988define void @constrained_vector_log2_v3f64(ptr %a) #0 {3989; S390X-LABEL: constrained_vector_log2_v3f64:3990; S390X:       # %bb.0: # %entry3991; S390X-NEXT:    stmg %r13, %r15, 104(%r15)3992; S390X-NEXT:    .cfi_offset %r13, -563993; S390X-NEXT:    .cfi_offset %r14, -483994; S390X-NEXT:    .cfi_offset %r15, -403995; S390X-NEXT:    aghi %r15, -1843996; S390X-NEXT:    .cfi_def_cfa_offset 3443997; S390X-NEXT:    std %f8, 176(%r15) # 8-byte Spill3998; S390X-NEXT:    std %f9, 168(%r15) # 8-byte Spill3999; S390X-NEXT:    std %f10, 160(%r15) # 8-byte Spill4000; S390X-NEXT:    .cfi_offset %f8, -1684001; S390X-NEXT:    .cfi_offset %f9, -1764002; S390X-NEXT:    .cfi_offset %f10, -1844003; S390X-NEXT:    lgr %r13, %r24004; S390X-NEXT:    ld %f8, 0(%r2)4005; S390X-NEXT:    ld %f0, 16(%r2)4006; S390X-NEXT:    ld %f9, 8(%r2)4007; S390X-NEXT:    brasl %r14, log2@PLT4008; S390X-NEXT:    ldr %f10, %f04009; S390X-NEXT:    ldr %f0, %f94010; S390X-NEXT:    brasl %r14, log2@PLT4011; S390X-NEXT:    ldr %f9, %f04012; S390X-NEXT:    ldr %f0, %f84013; S390X-NEXT:    brasl %r14, log2@PLT4014; S390X-NEXT:    std %f0, 0(%r13)4015; S390X-NEXT:    std %f9, 8(%r13)4016; S390X-NEXT:    std %f10, 16(%r13)4017; S390X-NEXT:    ld %f8, 176(%r15) # 8-byte Reload4018; S390X-NEXT:    ld %f9, 168(%r15) # 8-byte Reload4019; S390X-NEXT:    ld %f10, 160(%r15) # 8-byte Reload4020; S390X-NEXT:    lmg %r13, %r15, 288(%r15)4021; S390X-NEXT:    br %r144022;4023; SZ13-LABEL: constrained_vector_log2_v3f64:4024; SZ13:       # %bb.0: # %entry4025; SZ13-NEXT:    stmg %r13, %r15, 104(%r15)4026; SZ13-NEXT:    .cfi_offset %r13, -564027; SZ13-NEXT:    .cfi_offset %r14, -484028; SZ13-NEXT:    .cfi_offset %r15, -404029; SZ13-NEXT:    aghi %r15, -2004030; SZ13-NEXT:    .cfi_def_cfa_offset 3604031; SZ13-NEXT:    std %f8, 192(%r15) # 8-byte Spill4032; SZ13-NEXT:    .cfi_offset %f8, -1684033; SZ13-NEXT:    vl %v0, 0(%r2), 44034; SZ13-NEXT:    ld %f8, 16(%r2)4035; SZ13-NEXT:    lgr %r13, %r24036; SZ13-NEXT:    vst %v0, 176(%r15), 3 # 16-byte Spill4037; SZ13-NEXT:    # kill: def $f0d killed $f0d killed $v04038; SZ13-NEXT:    brasl %r14, log2@PLT4039; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v04040; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill4041; SZ13-NEXT:    vl %v0, 176(%r15), 3 # 16-byte Reload4042; SZ13-NEXT:    vrepg %v0, %v0, 14043; SZ13-NEXT:    # kill: def $f0d killed $f0d killed $v04044; SZ13-NEXT:    brasl %r14, log2@PLT4045; SZ13-NEXT:    vl %v1, 160(%r15), 3 # 16-byte Reload4046; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v04047; SZ13-NEXT:    vmrhg %v0, %v1, %v04048; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill4049; SZ13-NEXT:    ldr %f0, %f84050; SZ13-NEXT:    brasl %r14, log2@PLT4051; SZ13-NEXT:    mvc 0(16,%r13), 160(%r15) # 16-byte Folded Reload4052; SZ13-NEXT:    ld %f8, 192(%r15) # 8-byte Reload4053; SZ13-NEXT:    std %f0, 16(%r13)4054; SZ13-NEXT:    lmg %r13, %r15, 304(%r15)4055; SZ13-NEXT:    br %r144056entry:4057  %b = load <3 x double>, ptr %a4058  %log2 = call <3 x double> @llvm.experimental.constrained.log2.v3f64(4059                          <3 x double> %b,4060                          metadata !"round.dynamic",4061                          metadata !"fpexcept.strict") #04062  store <3 x double> %log2, ptr %a4063  ret void4064}4065 4066define <4 x double> @constrained_vector_log2_v4f64() #0 {4067; S390X-LABEL: constrained_vector_log2_v4f64:4068; S390X:       # %bb.0: # %entry4069; S390X-NEXT:    stmg %r14, %r15, 112(%r15)4070; S390X-NEXT:    .cfi_offset %r14, -484071; S390X-NEXT:    .cfi_offset %r15, -404072; S390X-NEXT:    aghi %r15, -1844073; S390X-NEXT:    .cfi_def_cfa_offset 3444074; S390X-NEXT:    std %f8, 176(%r15) # 8-byte Spill4075; S390X-NEXT:    std %f9, 168(%r15) # 8-byte Spill4076; S390X-NEXT:    std %f10, 160(%r15) # 8-byte Spill4077; S390X-NEXT:    .cfi_offset %f8, -1684078; S390X-NEXT:    .cfi_offset %f9, -1764079; S390X-NEXT:    .cfi_offset %f10, -1844080; S390X-NEXT:    larl %r1, .LCPI74_04081; S390X-NEXT:    ld %f0, 0(%r1)4082; S390X-NEXT:    brasl %r14, log2@PLT4083; S390X-NEXT:    larl %r1, .LCPI74_14084; S390X-NEXT:    ld %f1, 0(%r1)4085; S390X-NEXT:    ldr %f8, %f04086; S390X-NEXT:    ldr %f0, %f14087; S390X-NEXT:    brasl %r14, log2@PLT4088; S390X-NEXT:    larl %r1, .LCPI74_24089; S390X-NEXT:    ld %f1, 0(%r1)4090; S390X-NEXT:    ldr %f9, %f04091; S390X-NEXT:    ldr %f0, %f14092; S390X-NEXT:    brasl %r14, log2@PLT4093; S390X-NEXT:    larl %r1, .LCPI74_34094; S390X-NEXT:    ld %f1, 0(%r1)4095; S390X-NEXT:    ldr %f10, %f04096; S390X-NEXT:    ldr %f0, %f14097; S390X-NEXT:    brasl %r14, log2@PLT4098; S390X-NEXT:    ldr %f2, %f104099; S390X-NEXT:    ldr %f4, %f94100; S390X-NEXT:    ldr %f6, %f84101; S390X-NEXT:    ld %f8, 176(%r15) # 8-byte Reload4102; S390X-NEXT:    ld %f9, 168(%r15) # 8-byte Reload4103; S390X-NEXT:    ld %f10, 160(%r15) # 8-byte Reload4104; S390X-NEXT:    lmg %r14, %r15, 296(%r15)4105; S390X-NEXT:    br %r144106;4107; SZ13-LABEL: constrained_vector_log2_v4f64:4108; SZ13:       # %bb.0: # %entry4109; SZ13-NEXT:    stmg %r14, %r15, 112(%r15)4110; SZ13-NEXT:    .cfi_offset %r14, -484111; SZ13-NEXT:    .cfi_offset %r15, -404112; SZ13-NEXT:    aghi %r15, -1924113; SZ13-NEXT:    .cfi_def_cfa_offset 3524114; SZ13-NEXT:    larl %r1, .LCPI74_04115; SZ13-NEXT:    ld %f0, 0(%r1)4116; SZ13-NEXT:    brasl %r14, log2@PLT4117; SZ13-NEXT:    larl %r1, .LCPI74_14118; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v04119; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill4120; SZ13-NEXT:    ld %f0, 0(%r1)4121; SZ13-NEXT:    brasl %r14, log2@PLT4122; SZ13-NEXT:    vl %v1, 160(%r15), 3 # 16-byte Reload4123; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v04124; SZ13-NEXT:    vmrhg %v0, %v0, %v14125; SZ13-NEXT:    larl %r1, .LCPI74_24126; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill4127; SZ13-NEXT:    ld %f0, 0(%r1)4128; SZ13-NEXT:    brasl %r14, log2@PLT4129; SZ13-NEXT:    larl %r1, .LCPI74_34130; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v04131; SZ13-NEXT:    vst %v0, 176(%r15), 3 # 16-byte Spill4132; SZ13-NEXT:    ld %f0, 0(%r1)4133; SZ13-NEXT:    brasl %r14, log2@PLT4134; SZ13-NEXT:    vl %v1, 176(%r15), 3 # 16-byte Reload4135; SZ13-NEXT:    vl %v24, 160(%r15), 3 # 16-byte Reload4136; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v04137; SZ13-NEXT:    vmrhg %v26, %v0, %v14138; SZ13-NEXT:    lmg %r14, %r15, 304(%r15)4139; SZ13-NEXT:    br %r144140entry:4141  %log2 = call <4 x double> @llvm.experimental.constrained.log2.v4f64(4142                              <4 x double> <double 42.0, double 42.1,4143                                            double 42.2, double 42.3>,4144                              metadata !"round.dynamic",4145                              metadata !"fpexcept.strict") #04146  ret <4 x double> %log24147}4148 4149define <1 x float> @constrained_vector_rint_v1f32(ptr %a) #0 {4150; S390X-LABEL: constrained_vector_rint_v1f32:4151; S390X:       # %bb.0: # %entry4152; S390X-NEXT:    le %f0, 0(%r2)4153; S390X-NEXT:    fiebr %f0, 0, %f04154; S390X-NEXT:    br %r144155;4156; SZ13-LABEL: constrained_vector_rint_v1f32:4157; SZ13:       # %bb.0: # %entry4158; SZ13-NEXT:    lde %f0, 0(%r2)4159; SZ13-NEXT:    fiebr %f0, 0, %f04160; SZ13-NEXT:    vlr %v24, %v04161; SZ13-NEXT:    br %r144162entry:4163  %b = load <1 x float>, ptr %a4164  %rint = call <1 x float> @llvm.experimental.constrained.rint.v1f32(4165                             <1 x float> %b,4166                             metadata !"round.dynamic",4167                             metadata !"fpexcept.strict") #04168  ret <1 x float> %rint4169}4170 4171define <2 x double> @constrained_vector_rint_v2f64(ptr %a) #0 {4172; S390X-LABEL: constrained_vector_rint_v2f64:4173; S390X:       # %bb.0: # %entry4174; S390X-NEXT:    ld %f0, 8(%r2)4175; S390X-NEXT:    ld %f1, 0(%r2)4176; S390X-NEXT:    fidbr %f2, 0, %f04177; S390X-NEXT:    fidbr %f0, 0, %f14178; S390X-NEXT:    br %r144179;4180; SZ13-LABEL: constrained_vector_rint_v2f64:4181; SZ13:       # %bb.0: # %entry4182; SZ13-NEXT:    vl %v0, 0(%r2), 34183; SZ13-NEXT:    vfidb %v24, %v0, 0, 04184; SZ13-NEXT:    br %r144185entry:4186  %b = load <2 x double>, ptr %a4187  %rint = call <2 x double> @llvm.experimental.constrained.rint.v2f64(4188                        <2 x double> %b,4189                        metadata !"round.dynamic",4190                        metadata !"fpexcept.strict") #04191  ret <2 x double> %rint4192}4193 4194define <3 x float> @constrained_vector_rint_v3f32(ptr %a) #0 {4195; S390X-LABEL: constrained_vector_rint_v3f32:4196; S390X:       # %bb.0: # %entry4197; S390X-NEXT:    lg %r0, 0(%r2)4198; S390X-NEXT:    risbg %r1, %r0, 0, 159, 04199; S390X-NEXT:    le %f0, 8(%r2)4200; S390X-NEXT:    ldgr %f1, %r14201; S390X-NEXT:    sllg %r0, %r0, 324202; S390X-NEXT:    ldgr %f2, %r04203; S390X-NEXT:    fiebr %f4, 0, %f04204; S390X-NEXT:    fiebr %f2, 0, %f24205; S390X-NEXT:    fiebr %f0, 0, %f14206; S390X-NEXT:    br %r144207;4208; SZ13-LABEL: constrained_vector_rint_v3f32:4209; SZ13:       # %bb.0: # %entry4210; SZ13-NEXT:    vl %v0, 0(%r2), 44211; SZ13-NEXT:    vrepf %v1, %v0, 24212; SZ13-NEXT:    vrepf %v2, %v0, 14213; SZ13-NEXT:    fiebr %f1, 0, %f14214; SZ13-NEXT:    fiebr %f2, 0, %f24215; SZ13-NEXT:    fiebr %f0, 0, %f04216; SZ13-NEXT:    vmrhf %v0, %v0, %v24217; SZ13-NEXT:    vrepf %v1, %v1, 04218; SZ13-NEXT:    vmrhg %v24, %v0, %v14219; SZ13-NEXT:    br %r144220 entry:4221  %b = load <3 x float>, ptr %a4222  %rint = call <3 x float> @llvm.experimental.constrained.rint.v3f32(4223                              <3 x float> %b,4224                              metadata !"round.dynamic",4225                              metadata !"fpexcept.strict") #04226  ret <3 x float> %rint4227}4228 4229define void @constrained_vector_rint_v3f64(ptr %a) #0 {4230; S390X-LABEL: constrained_vector_rint_v3f64:4231; S390X:       # %bb.0: # %entry4232; S390X-NEXT:    ld %f0, 16(%r2)4233; S390X-NEXT:    ld %f1, 8(%r2)4234; S390X-NEXT:    ld %f2, 0(%r2)4235; S390X-NEXT:    fidbr %f0, 0, %f04236; S390X-NEXT:    fidbr %f1, 0, %f14237; S390X-NEXT:    fidbr %f2, 0, %f24238; S390X-NEXT:    std %f2, 0(%r2)4239; S390X-NEXT:    std %f1, 8(%r2)4240; S390X-NEXT:    std %f0, 16(%r2)4241; S390X-NEXT:    br %r144242;4243; SZ13-LABEL: constrained_vector_rint_v3f64:4244; SZ13:       # %bb.0: # %entry4245; SZ13-NEXT:    vl %v0, 0(%r2), 44246; SZ13-NEXT:    ld %f1, 16(%r2)4247; SZ13-NEXT:    vfidb %v0, %v0, 0, 04248; SZ13-NEXT:    fidbra %f1, 0, %f1, 04249; SZ13-NEXT:    vst %v0, 0(%r2), 44250; SZ13-NEXT:    std %f1, 16(%r2)4251; SZ13-NEXT:    br %r144252entry:4253  %b = load <3 x double>, ptr %a4254  %rint = call <3 x double> @llvm.experimental.constrained.rint.v3f64(4255                          <3 x double> %b,4256                          metadata !"round.dynamic",4257                          metadata !"fpexcept.strict") #04258  store <3 x double> %rint, ptr %a4259  ret void4260}4261 4262define <4 x double> @constrained_vector_rint_v4f64(ptr %a) #0 {4263; S390X-LABEL: constrained_vector_rint_v4f64:4264; S390X:       # %bb.0: # %entry4265; S390X-NEXT:    ld %f0, 24(%r2)4266; S390X-NEXT:    ld %f1, 16(%r2)4267; S390X-NEXT:    ld %f2, 8(%r2)4268; S390X-NEXT:    ld %f3, 0(%r2)4269; S390X-NEXT:    fidbr %f6, 0, %f04270; S390X-NEXT:    fidbr %f4, 0, %f14271; S390X-NEXT:    fidbr %f2, 0, %f24272; S390X-NEXT:    fidbr %f0, 0, %f34273; S390X-NEXT:    br %r144274;4275; SZ13-LABEL: constrained_vector_rint_v4f64:4276; SZ13:       # %bb.0: # %entry4277; SZ13-NEXT:    vl %v0, 16(%r2), 44278; SZ13-NEXT:    vl %v1, 0(%r2), 44279; SZ13-NEXT:    vfidb %v24, %v1, 0, 04280; SZ13-NEXT:    vfidb %v26, %v0, 0, 04281; SZ13-NEXT:    br %r144282entry:4283  %b = load <4 x double>, ptr %a4284  %rint = call <4 x double> @llvm.experimental.constrained.rint.v4f64(4285                        <4 x double> %b,4286                        metadata !"round.dynamic",4287                        metadata !"fpexcept.strict") #04288  ret <4 x double> %rint4289}4290 4291define <1 x float> @constrained_vector_nearbyint_v1f32(ptr %a) #0 {4292; S390X-LABEL: constrained_vector_nearbyint_v1f32:4293; S390X:       # %bb.0: # %entry4294; S390X-NEXT:    stmg %r14, %r15, 112(%r15)4295; S390X-NEXT:    .cfi_offset %r14, -484296; S390X-NEXT:    .cfi_offset %r15, -404297; S390X-NEXT:    aghi %r15, -1604298; S390X-NEXT:    .cfi_def_cfa_offset 3204299; S390X-NEXT:    le %f0, 0(%r2)4300; S390X-NEXT:    brasl %r14, nearbyintf@PLT4301; S390X-NEXT:    lmg %r14, %r15, 272(%r15)4302; S390X-NEXT:    br %r144303;4304; SZ13-LABEL: constrained_vector_nearbyint_v1f32:4305; SZ13:       # %bb.0: # %entry4306; SZ13-NEXT:    lde %f0, 0(%r2)4307; SZ13-NEXT:    fiebra %f0, 0, %f0, 44308; SZ13-NEXT:    vlr %v24, %v04309; SZ13-NEXT:    br %r144310entry:4311  %b = load <1 x float>, ptr %a4312  %nearby = call <1 x float> @llvm.experimental.constrained.nearbyint.v1f32(4313                               <1 x float> %b,4314                               metadata !"round.dynamic",4315                               metadata !"fpexcept.strict") #04316  ret <1 x float> %nearby4317}4318 4319define <2 x double> @constrained_vector_nearbyint_v2f64(ptr %a) #0 {4320; S390X-LABEL: constrained_vector_nearbyint_v2f64:4321; S390X:       # %bb.0: # %entry4322; S390X-NEXT:    stmg %r14, %r15, 112(%r15)4323; S390X-NEXT:    .cfi_offset %r14, -484324; S390X-NEXT:    .cfi_offset %r15, -404325; S390X-NEXT:    aghi %r15, -1764326; S390X-NEXT:    .cfi_def_cfa_offset 3364327; S390X-NEXT:    std %f8, 168(%r15) # 8-byte Spill4328; S390X-NEXT:    std %f9, 160(%r15) # 8-byte Spill4329; S390X-NEXT:    .cfi_offset %f8, -1684330; S390X-NEXT:    .cfi_offset %f9, -1764331; S390X-NEXT:    ld %f0, 8(%r2)4332; S390X-NEXT:    ld %f8, 0(%r2)4333; S390X-NEXT:    brasl %r14, nearbyint@PLT4334; S390X-NEXT:    ldr %f9, %f04335; S390X-NEXT:    ldr %f0, %f84336; S390X-NEXT:    brasl %r14, nearbyint@PLT4337; S390X-NEXT:    ldr %f2, %f94338; S390X-NEXT:    ld %f8, 168(%r15) # 8-byte Reload4339; S390X-NEXT:    ld %f9, 160(%r15) # 8-byte Reload4340; S390X-NEXT:    lmg %r14, %r15, 288(%r15)4341; S390X-NEXT:    br %r144342;4343; SZ13-LABEL: constrained_vector_nearbyint_v2f64:4344; SZ13:       # %bb.0: # %entry4345; SZ13-NEXT:    vl %v0, 0(%r2), 34346; SZ13-NEXT:    vfidb %v24, %v0, 4, 04347; SZ13-NEXT:    br %r144348entry:4349  %b = load <2 x double>, ptr %a4350  %nearby = call <2 x double> @llvm.experimental.constrained.nearbyint.v2f64(4351                                <2 x double> %b,4352                                metadata !"round.dynamic",4353                                metadata !"fpexcept.strict") #04354  ret <2 x double> %nearby4355}4356 4357define <3 x float> @constrained_vector_nearbyint_v3f32(ptr %a) #0 {4358; S390X-LABEL: constrained_vector_nearbyint_v3f32:4359; S390X:       # %bb.0: # %entry4360; S390X-NEXT:    stmg %r14, %r15, 112(%r15)4361; S390X-NEXT:    .cfi_offset %r14, -484362; S390X-NEXT:    .cfi_offset %r15, -404363; S390X-NEXT:    aghi %r15, -1844364; S390X-NEXT:    .cfi_def_cfa_offset 3444365; S390X-NEXT:    std %f8, 176(%r15) # 8-byte Spill4366; S390X-NEXT:    std %f9, 168(%r15) # 8-byte Spill4367; S390X-NEXT:    std %f10, 160(%r15) # 8-byte Spill4368; S390X-NEXT:    .cfi_offset %f8, -1684369; S390X-NEXT:    .cfi_offset %f9, -1764370; S390X-NEXT:    .cfi_offset %f10, -1844371; S390X-NEXT:    lg %r0, 0(%r2)4372; S390X-NEXT:    le %f0, 8(%r2)4373; S390X-NEXT:    risbg %r1, %r0, 0, 159, 04374; S390X-NEXT:    ldgr %f8, %r14375; S390X-NEXT:    sllg %r0, %r0, 324376; S390X-NEXT:    ldgr %f9, %r04377; S390X-NEXT:    brasl %r14, nearbyintf@PLT4378; S390X-NEXT:    ler %f10, %f04379; S390X-NEXT:    ler %f0, %f94380; S390X-NEXT:    brasl %r14, nearbyintf@PLT4381; S390X-NEXT:    ler %f9, %f04382; S390X-NEXT:    ler %f0, %f84383; S390X-NEXT:    brasl %r14, nearbyintf@PLT4384; S390X-NEXT:    ler %f2, %f94385; S390X-NEXT:    ler %f4, %f104386; S390X-NEXT:    ld %f8, 176(%r15) # 8-byte Reload4387; S390X-NEXT:    ld %f9, 168(%r15) # 8-byte Reload4388; S390X-NEXT:    ld %f10, 160(%r15) # 8-byte Reload4389; S390X-NEXT:    lmg %r14, %r15, 296(%r15)4390; S390X-NEXT:    br %r144391;4392; SZ13-LABEL: constrained_vector_nearbyint_v3f32:4393; SZ13:       # %bb.0: # %entry4394; SZ13-NEXT:    vl %v0, 0(%r2), 44395; SZ13-NEXT:    vrepf %v1, %v0, 24396; SZ13-NEXT:    vrepf %v2, %v0, 14397; SZ13-NEXT:    fiebra %f1, 0, %f1, 44398; SZ13-NEXT:    fiebra %f2, 0, %f2, 44399; SZ13-NEXT:    fiebra %f0, 0, %f0, 44400; SZ13-NEXT:    vmrhf %v0, %v0, %v24401; SZ13-NEXT:    vrepf %v1, %v1, 04402; SZ13-NEXT:    vmrhg %v24, %v0, %v14403; SZ13-NEXT:    br %r144404entry:4405  %b = load <3 x float>, ptr %a4406  %nearby = call <3 x float> @llvm.experimental.constrained.nearbyint.v3f32(4407                              <3 x float> %b,4408                              metadata !"round.dynamic",4409                              metadata !"fpexcept.strict") #04410  ret <3 x float> %nearby4411}4412 4413define void @constrained_vector_nearbyint_v3f64(ptr %a) #0 {4414; S390X-LABEL: constrained_vector_nearbyint_v3f64:4415; S390X:       # %bb.0: # %entry4416; S390X-NEXT:    stmg %r13, %r15, 104(%r15)4417; S390X-NEXT:    .cfi_offset %r13, -564418; S390X-NEXT:    .cfi_offset %r14, -484419; S390X-NEXT:    .cfi_offset %r15, -404420; S390X-NEXT:    aghi %r15, -1844421; S390X-NEXT:    .cfi_def_cfa_offset 3444422; S390X-NEXT:    std %f8, 176(%r15) # 8-byte Spill4423; S390X-NEXT:    std %f9, 168(%r15) # 8-byte Spill4424; S390X-NEXT:    std %f10, 160(%r15) # 8-byte Spill4425; S390X-NEXT:    .cfi_offset %f8, -1684426; S390X-NEXT:    .cfi_offset %f9, -1764427; S390X-NEXT:    .cfi_offset %f10, -1844428; S390X-NEXT:    lgr %r13, %r24429; S390X-NEXT:    ld %f8, 0(%r2)4430; S390X-NEXT:    ld %f0, 16(%r2)4431; S390X-NEXT:    ld %f9, 8(%r2)4432; S390X-NEXT:    brasl %r14, nearbyint@PLT4433; S390X-NEXT:    ldr %f10, %f04434; S390X-NEXT:    ldr %f0, %f94435; S390X-NEXT:    brasl %r14, nearbyint@PLT4436; S390X-NEXT:    ldr %f9, %f04437; S390X-NEXT:    ldr %f0, %f84438; S390X-NEXT:    brasl %r14, nearbyint@PLT4439; S390X-NEXT:    std %f0, 0(%r13)4440; S390X-NEXT:    std %f9, 8(%r13)4441; S390X-NEXT:    std %f10, 16(%r13)4442; S390X-NEXT:    ld %f8, 176(%r15) # 8-byte Reload4443; S390X-NEXT:    ld %f9, 168(%r15) # 8-byte Reload4444; S390X-NEXT:    ld %f10, 160(%r15) # 8-byte Reload4445; S390X-NEXT:    lmg %r13, %r15, 288(%r15)4446; S390X-NEXT:    br %r144447;4448; SZ13-LABEL: constrained_vector_nearbyint_v3f64:4449; SZ13:       # %bb.0: # %entry4450; SZ13-NEXT:    vl %v0, 0(%r2), 44451; SZ13-NEXT:    ld %f1, 16(%r2)4452; SZ13-NEXT:    vfidb %v0, %v0, 4, 04453; SZ13-NEXT:    fidbra %f1, 0, %f1, 44454; SZ13-NEXT:    vst %v0, 0(%r2), 44455; SZ13-NEXT:    std %f1, 16(%r2)4456; SZ13-NEXT:    br %r144457entry:4458  %b = load <3 x double>, ptr %a4459  %nearby = call <3 x double> @llvm.experimental.constrained.nearbyint.v3f64(4460                          <3 x double> %b,4461                          metadata !"round.dynamic",4462                          metadata !"fpexcept.strict") #04463  store <3 x double> %nearby, ptr %a4464  ret void4465}4466 4467define <4 x double> @constrained_vector_nearbyint_v4f64(ptr %a) #0 {4468; S390X-LABEL: constrained_vector_nearbyint_v4f64:4469; S390X:       # %bb.0: # %entry4470; S390X-NEXT:    stmg %r14, %r15, 112(%r15)4471; S390X-NEXT:    .cfi_offset %r14, -484472; S390X-NEXT:    .cfi_offset %r15, -404473; S390X-NEXT:    aghi %r15, -1924474; S390X-NEXT:    .cfi_def_cfa_offset 3524475; S390X-NEXT:    std %f8, 184(%r15) # 8-byte Spill4476; S390X-NEXT:    std %f9, 176(%r15) # 8-byte Spill4477; S390X-NEXT:    std %f10, 168(%r15) # 8-byte Spill4478; S390X-NEXT:    std %f11, 160(%r15) # 8-byte Spill4479; S390X-NEXT:    .cfi_offset %f8, -1684480; S390X-NEXT:    .cfi_offset %f9, -1764481; S390X-NEXT:    .cfi_offset %f10, -1844482; S390X-NEXT:    .cfi_offset %f11, -1924483; S390X-NEXT:    ld %f8, 0(%r2)4484; S390X-NEXT:    ld %f9, 8(%r2)4485; S390X-NEXT:    ld %f0, 24(%r2)4486; S390X-NEXT:    ld %f10, 16(%r2)4487; S390X-NEXT:    brasl %r14, nearbyint@PLT4488; S390X-NEXT:    ldr %f11, %f04489; S390X-NEXT:    ldr %f0, %f104490; S390X-NEXT:    brasl %r14, nearbyint@PLT4491; S390X-NEXT:    ldr %f10, %f04492; S390X-NEXT:    ldr %f0, %f94493; S390X-NEXT:    brasl %r14, nearbyint@PLT4494; S390X-NEXT:    ldr %f9, %f04495; S390X-NEXT:    ldr %f0, %f84496; S390X-NEXT:    brasl %r14, nearbyint@PLT4497; S390X-NEXT:    ldr %f2, %f94498; S390X-NEXT:    ldr %f4, %f104499; S390X-NEXT:    ldr %f6, %f114500; S390X-NEXT:    ld %f8, 184(%r15) # 8-byte Reload4501; S390X-NEXT:    ld %f9, 176(%r15) # 8-byte Reload4502; S390X-NEXT:    ld %f10, 168(%r15) # 8-byte Reload4503; S390X-NEXT:    ld %f11, 160(%r15) # 8-byte Reload4504; S390X-NEXT:    lmg %r14, %r15, 304(%r15)4505; S390X-NEXT:    br %r144506;4507; SZ13-LABEL: constrained_vector_nearbyint_v4f64:4508; SZ13:       # %bb.0: # %entry4509; SZ13-NEXT:    vl %v0, 16(%r2), 44510; SZ13-NEXT:    vl %v1, 0(%r2), 44511; SZ13-NEXT:    vfidb %v24, %v1, 4, 04512; SZ13-NEXT:    vfidb %v26, %v0, 4, 04513; SZ13-NEXT:    br %r144514entry:4515  %b = load <4 x double>, ptr %a4516  %nearby = call <4 x double> @llvm.experimental.constrained.nearbyint.v4f64(4517                                <4 x double> %b,4518                                metadata !"round.dynamic",4519                                metadata !"fpexcept.strict") #04520  ret <4 x double> %nearby4521}4522 4523define <1 x float> @constrained_vector_maxnum_v1f32() #0 {4524; S390X-LABEL: constrained_vector_maxnum_v1f32:4525; S390X:       # %bb.0: # %entry4526; S390X-NEXT:    stmg %r14, %r15, 112(%r15)4527; S390X-NEXT:    .cfi_offset %r14, -484528; S390X-NEXT:    .cfi_offset %r15, -404529; S390X-NEXT:    aghi %r15, -1604530; S390X-NEXT:    .cfi_def_cfa_offset 3204531; S390X-NEXT:    larl %r1, .LCPI85_04532; S390X-NEXT:    le %f0, 0(%r1)4533; S390X-NEXT:    larl %r1, .LCPI85_14534; S390X-NEXT:    le %f2, 0(%r1)4535; S390X-NEXT:    brasl %r14, fmaxf@PLT4536; S390X-NEXT:    lmg %r14, %r15, 272(%r15)4537; S390X-NEXT:    br %r144538;4539; SZ13-LABEL: constrained_vector_maxnum_v1f32:4540; SZ13:       # %bb.0: # %entry4541; SZ13-NEXT:    stmg %r14, %r15, 112(%r15)4542; SZ13-NEXT:    .cfi_offset %r14, -484543; SZ13-NEXT:    .cfi_offset %r15, -404544; SZ13-NEXT:    aghi %r15, -1604545; SZ13-NEXT:    .cfi_def_cfa_offset 3204546; SZ13-NEXT:    larl %r1, .LCPI85_04547; SZ13-NEXT:    lde %f0, 0(%r1)4548; SZ13-NEXT:    larl %r1, .LCPI85_14549; SZ13-NEXT:    lde %f2, 0(%r1)4550; SZ13-NEXT:    brasl %r14, fmaxf@PLT4551; SZ13-NEXT:    # kill: def $f0s killed $f0s def $v04552; SZ13-NEXT:    vlr %v24, %v04553; SZ13-NEXT:    lmg %r14, %r15, 272(%r15)4554; SZ13-NEXT:    br %r144555entry:4556  %max = call <1 x float> @llvm.experimental.constrained.maxnum.v1f32(4557                               <1 x float> <float 42.0>, <1 x float> <float 41.0>,4558                               metadata !"fpexcept.strict") #04559  ret <1 x float> %max4560}4561 4562define <2 x double> @constrained_vector_maxnum_v2f64() #0 {4563; S390X-LABEL: constrained_vector_maxnum_v2f64:4564; S390X:       # %bb.0: # %entry4565; S390X-NEXT:    stmg %r14, %r15, 112(%r15)4566; S390X-NEXT:    .cfi_offset %r14, -484567; S390X-NEXT:    .cfi_offset %r15, -404568; S390X-NEXT:    aghi %r15, -1684569; S390X-NEXT:    .cfi_def_cfa_offset 3284570; S390X-NEXT:    std %f8, 160(%r15) # 8-byte Spill4571; S390X-NEXT:    .cfi_offset %f8, -1684572; S390X-NEXT:    larl %r1, .LCPI86_04573; S390X-NEXT:    ld %f0, 0(%r1)4574; S390X-NEXT:    larl %r1, .LCPI86_14575; S390X-NEXT:    ld %f2, 0(%r1)4576; S390X-NEXT:    brasl %r14, fmax@PLT4577; S390X-NEXT:    larl %r1, .LCPI86_24578; S390X-NEXT:    ld %f1, 0(%r1)4579; S390X-NEXT:    larl %r1, .LCPI86_34580; S390X-NEXT:    ld %f2, 0(%r1)4581; S390X-NEXT:    ldr %f8, %f04582; S390X-NEXT:    ldr %f0, %f14583; S390X-NEXT:    brasl %r14, fmax@PLT4584; S390X-NEXT:    ldr %f2, %f84585; S390X-NEXT:    ld %f8, 160(%r15) # 8-byte Reload4586; S390X-NEXT:    lmg %r14, %r15, 280(%r15)4587; S390X-NEXT:    br %r144588;4589; SZ13-LABEL: constrained_vector_maxnum_v2f64:4590; SZ13:       # %bb.0: # %entry4591; SZ13-NEXT:    stmg %r14, %r15, 112(%r15)4592; SZ13-NEXT:    .cfi_offset %r14, -484593; SZ13-NEXT:    .cfi_offset %r15, -404594; SZ13-NEXT:    aghi %r15, -1764595; SZ13-NEXT:    .cfi_def_cfa_offset 3364596; SZ13-NEXT:    larl %r1, .LCPI86_04597; SZ13-NEXT:    ld %f0, 0(%r1)4598; SZ13-NEXT:    larl %r1, .LCPI86_14599; SZ13-NEXT:    ld %f2, 0(%r1)4600; SZ13-NEXT:    brasl %r14, fmax@PLT4601; SZ13-NEXT:    larl %r1, .LCPI86_24602; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v04603; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill4604; SZ13-NEXT:    ld %f0, 0(%r1)4605; SZ13-NEXT:    larl %r1, .LCPI86_34606; SZ13-NEXT:    ld %f2, 0(%r1)4607; SZ13-NEXT:    brasl %r14, fmax@PLT4608; SZ13-NEXT:    vl %v1, 160(%r15), 3 # 16-byte Reload4609; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v04610; SZ13-NEXT:    vmrhg %v24, %v0, %v14611; SZ13-NEXT:    lmg %r14, %r15, 288(%r15)4612; SZ13-NEXT:    br %r144613entry:4614  %max = call <2 x double> @llvm.experimental.constrained.maxnum.v2f64(4615                                <2 x double> <double 43.0, double 42.0>,4616                                <2 x double> <double 41.0, double 40.0>,4617                                metadata !"fpexcept.strict") #04618  ret <2 x double> %max4619}4620 4621define <3 x float> @constrained_vector_maxnum_v3f32() #0 {4622; S390X-LABEL: constrained_vector_maxnum_v3f32:4623; S390X:       # %bb.0: # %entry4624; S390X-NEXT:    stmg %r14, %r15, 112(%r15)4625; S390X-NEXT:    .cfi_offset %r14, -484626; S390X-NEXT:    .cfi_offset %r15, -404627; S390X-NEXT:    aghi %r15, -1844628; S390X-NEXT:    .cfi_def_cfa_offset 3444629; S390X-NEXT:    std %f8, 176(%r15) # 8-byte Spill4630; S390X-NEXT:    std %f9, 168(%r15) # 8-byte Spill4631; S390X-NEXT:    std %f10, 160(%r15) # 8-byte Spill4632; S390X-NEXT:    .cfi_offset %f8, -1684633; S390X-NEXT:    .cfi_offset %f9, -1764634; S390X-NEXT:    .cfi_offset %f10, -1844635; S390X-NEXT:    larl %r1, .LCPI87_04636; S390X-NEXT:    le %f0, 0(%r1)4637; S390X-NEXT:    larl %r1, .LCPI87_14638; S390X-NEXT:    le %f8, 0(%r1)4639; S390X-NEXT:    ler %f2, %f84640; S390X-NEXT:    brasl %r14, fmaxf@PLT4641; S390X-NEXT:    larl %r1, .LCPI87_24642; S390X-NEXT:    le %f1, 0(%r1)4643; S390X-NEXT:    larl %r1, .LCPI87_34644; S390X-NEXT:    le %f2, 0(%r1)4645; S390X-NEXT:    ler %f9, %f04646; S390X-NEXT:    ler %f0, %f14647; S390X-NEXT:    brasl %r14, fmaxf@PLT4648; S390X-NEXT:    larl %r1, .LCPI87_44649; S390X-NEXT:    le %f2, 0(%r1)4650; S390X-NEXT:    ler %f10, %f04651; S390X-NEXT:    ler %f0, %f84652; S390X-NEXT:    brasl %r14, fmaxf@PLT4653; S390X-NEXT:    ler %f2, %f104654; S390X-NEXT:    ler %f4, %f94655; S390X-NEXT:    ld %f8, 176(%r15) # 8-byte Reload4656; S390X-NEXT:    ld %f9, 168(%r15) # 8-byte Reload4657; S390X-NEXT:    ld %f10, 160(%r15) # 8-byte Reload4658; S390X-NEXT:    lmg %r14, %r15, 296(%r15)4659; S390X-NEXT:    br %r144660;4661; SZ13-LABEL: constrained_vector_maxnum_v3f32:4662; SZ13:       # %bb.0: # %entry4663; SZ13-NEXT:    stmg %r14, %r15, 112(%r15)4664; SZ13-NEXT:    .cfi_offset %r14, -484665; SZ13-NEXT:    .cfi_offset %r15, -404666; SZ13-NEXT:    aghi %r15, -2004667; SZ13-NEXT:    .cfi_def_cfa_offset 3604668; SZ13-NEXT:    std %f8, 192(%r15) # 8-byte Spill4669; SZ13-NEXT:    .cfi_offset %f8, -1684670; SZ13-NEXT:    larl %r1, .LCPI87_04671; SZ13-NEXT:    lde %f0, 0(%r1)4672; SZ13-NEXT:    larl %r1, .LCPI87_14673; SZ13-NEXT:    lde %f8, 0(%r1)4674; SZ13-NEXT:    ldr %f2, %f84675; SZ13-NEXT:    brasl %r14, fmaxf@PLT4676; SZ13-NEXT:    larl %r1, .LCPI87_24677; SZ13-NEXT:    lde %f2, 0(%r1)4678; SZ13-NEXT:    # kill: def $f0s killed $f0s def $v04679; SZ13-NEXT:    vst %v0, 176(%r15), 3 # 16-byte Spill4680; SZ13-NEXT:    ldr %f0, %f84681; SZ13-NEXT:    brasl %r14, fmaxf@PLT4682; SZ13-NEXT:    larl %r1, .LCPI87_34683; SZ13-NEXT:    # kill: def $f0s killed $f0s def $v04684; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill4685; SZ13-NEXT:    lde %f0, 0(%r1)4686; SZ13-NEXT:    larl %r1, .LCPI87_44687; SZ13-NEXT:    lde %f2, 0(%r1)4688; SZ13-NEXT:    brasl %r14, fmaxf@PLT4689; SZ13-NEXT:    vl %v1, 160(%r15), 3 # 16-byte Reload4690; SZ13-NEXT:    # kill: def $f0s killed $f0s def $v04691; SZ13-NEXT:    vmrhf %v0, %v1, %v04692; SZ13-NEXT:    vl %v1, 176(%r15), 3 # 16-byte Reload4693; SZ13-NEXT:    ld %f8, 192(%r15) # 8-byte Reload4694; SZ13-NEXT:    vrepf %v1, %v1, 04695; SZ13-NEXT:    vmrhg %v24, %v0, %v14696; SZ13-NEXT:    lmg %r14, %r15, 312(%r15)4697; SZ13-NEXT:    br %r144698entry:4699  %max = call <3 x float> @llvm.experimental.constrained.maxnum.v3f32(4700                              <3 x float> <float 43.0, float 44.0, float 45.0>,4701                              <3 x float> <float 41.0, float 42.0, float 43.0>,4702                              metadata !"fpexcept.strict") #04703  ret <3 x float> %max4704}4705 4706define void @constrained_vector_log10_maxnum_v3f64(ptr %a) #0 {4707; S390X-LABEL: constrained_vector_log10_maxnum_v3f64:4708; S390X:       # %bb.0: # %entry4709; S390X-NEXT:    stmg %r13, %r15, 104(%r15)4710; S390X-NEXT:    .cfi_offset %r13, -564711; S390X-NEXT:    .cfi_offset %r14, -484712; S390X-NEXT:    .cfi_offset %r15, -404713; S390X-NEXT:    aghi %r15, -1844714; S390X-NEXT:    .cfi_def_cfa_offset 3444715; S390X-NEXT:    std %f8, 176(%r15) # 8-byte Spill4716; S390X-NEXT:    std %f9, 168(%r15) # 8-byte Spill4717; S390X-NEXT:    std %f10, 160(%r15) # 8-byte Spill4718; S390X-NEXT:    .cfi_offset %f8, -1684719; S390X-NEXT:    .cfi_offset %f9, -1764720; S390X-NEXT:    .cfi_offset %f10, -1844721; S390X-NEXT:    lgr %r13, %r24722; S390X-NEXT:    ld %f8, 0(%r2)4723; S390X-NEXT:    ld %f0, 16(%r2)4724; S390X-NEXT:    larl %r1, .LCPI88_04725; S390X-NEXT:    ld %f2, 0(%r1)4726; S390X-NEXT:    ld %f9, 8(%r2)4727; S390X-NEXT:    brasl %r14, fmax@PLT4728; S390X-NEXT:    larl %r1, .LCPI88_14729; S390X-NEXT:    ld %f2, 0(%r1)4730; S390X-NEXT:    ldr %f10, %f04731; S390X-NEXT:    ldr %f0, %f94732; S390X-NEXT:    brasl %r14, fmax@PLT4733; S390X-NEXT:    larl %r1, .LCPI88_24734; S390X-NEXT:    ld %f2, 0(%r1)4735; S390X-NEXT:    ldr %f9, %f04736; S390X-NEXT:    ldr %f0, %f84737; S390X-NEXT:    brasl %r14, fmax@PLT4738; S390X-NEXT:    std %f0, 0(%r13)4739; S390X-NEXT:    std %f9, 8(%r13)4740; S390X-NEXT:    std %f10, 16(%r13)4741; S390X-NEXT:    ld %f8, 176(%r15) # 8-byte Reload4742; S390X-NEXT:    ld %f9, 168(%r15) # 8-byte Reload4743; S390X-NEXT:    ld %f10, 160(%r15) # 8-byte Reload4744; S390X-NEXT:    lmg %r13, %r15, 288(%r15)4745; S390X-NEXT:    br %r144746;4747; SZ13-LABEL: constrained_vector_log10_maxnum_v3f64:4748; SZ13:       # %bb.0: # %entry4749; SZ13-NEXT:    stmg %r13, %r15, 104(%r15)4750; SZ13-NEXT:    .cfi_offset %r13, -564751; SZ13-NEXT:    .cfi_offset %r14, -484752; SZ13-NEXT:    .cfi_offset %r15, -404753; SZ13-NEXT:    aghi %r15, -2004754; SZ13-NEXT:    .cfi_def_cfa_offset 3604755; SZ13-NEXT:    std %f8, 192(%r15) # 8-byte Spill4756; SZ13-NEXT:    .cfi_offset %f8, -1684757; SZ13-NEXT:    larl %r1, .LCPI88_04758; SZ13-NEXT:    vl %v0, 0(%r2), 44759; SZ13-NEXT:    ld %f2, 0(%r1)4760; SZ13-NEXT:    ld %f8, 16(%r2)4761; SZ13-NEXT:    lgr %r13, %r24762; SZ13-NEXT:    vst %v0, 176(%r15), 3 # 16-byte Spill4763; SZ13-NEXT:    # kill: def $f0d killed $f0d killed $v04764; SZ13-NEXT:    brasl %r14, fmax@PLT4765; SZ13-NEXT:    larl %r1, .LCPI88_14766; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v04767; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill4768; SZ13-NEXT:    vl %v0, 176(%r15), 3 # 16-byte Reload4769; SZ13-NEXT:    ld %f2, 0(%r1)4770; SZ13-NEXT:    vrepg %v0, %v0, 14771; SZ13-NEXT:    # kill: def $f0d killed $f0d killed $v04772; SZ13-NEXT:    brasl %r14, fmax@PLT4773; SZ13-NEXT:    vl %v1, 160(%r15), 3 # 16-byte Reload4774; SZ13-NEXT:    larl %r1, .LCPI88_24775; SZ13-NEXT:    ld %f2, 0(%r1)4776; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v04777; SZ13-NEXT:    vmrhg %v0, %v1, %v04778; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill4779; SZ13-NEXT:    ldr %f0, %f84780; SZ13-NEXT:    brasl %r14, fmax@PLT4781; SZ13-NEXT:    mvc 0(16,%r13), 160(%r15) # 16-byte Folded Reload4782; SZ13-NEXT:    ld %f8, 192(%r15) # 8-byte Reload4783; SZ13-NEXT:    std %f0, 16(%r13)4784; SZ13-NEXT:    lmg %r13, %r15, 304(%r15)4785; SZ13-NEXT:    br %r144786entry:4787  %b = load <3 x double>, ptr %a4788  %max = call <3 x double> @llvm.experimental.constrained.maxnum.v3f64(4789                          <3 x double> %b,4790                          <3 x double> <double 40.0, double 41.0, double 42.0>,4791                          metadata !"fpexcept.strict") #04792  store <3 x double> %max, ptr %a4793  ret void4794}4795 4796define <4 x double> @constrained_vector_maxnum_v4f64() #0 {4797; S390X-LABEL: constrained_vector_maxnum_v4f64:4798; S390X:       # %bb.0: # %entry4799; S390X-NEXT:    stmg %r14, %r15, 112(%r15)4800; S390X-NEXT:    .cfi_offset %r14, -484801; S390X-NEXT:    .cfi_offset %r15, -404802; S390X-NEXT:    aghi %r15, -1844803; S390X-NEXT:    .cfi_def_cfa_offset 3444804; S390X-NEXT:    std %f8, 176(%r15) # 8-byte Spill4805; S390X-NEXT:    std %f9, 168(%r15) # 8-byte Spill4806; S390X-NEXT:    std %f10, 160(%r15) # 8-byte Spill4807; S390X-NEXT:    .cfi_offset %f8, -1684808; S390X-NEXT:    .cfi_offset %f9, -1764809; S390X-NEXT:    .cfi_offset %f10, -1844810; S390X-NEXT:    larl %r1, .LCPI89_04811; S390X-NEXT:    ld %f0, 0(%r1)4812; S390X-NEXT:    larl %r1, .LCPI89_14813; S390X-NEXT:    ld %f2, 0(%r1)4814; S390X-NEXT:    brasl %r14, fmax@PLT4815; S390X-NEXT:    larl %r1, .LCPI89_24816; S390X-NEXT:    ld %f1, 0(%r1)4817; S390X-NEXT:    larl %r1, .LCPI89_34818; S390X-NEXT:    ld %f2, 0(%r1)4819; S390X-NEXT:    ldr %f8, %f04820; S390X-NEXT:    ldr %f0, %f14821; S390X-NEXT:    brasl %r14, fmax@PLT4822; S390X-NEXT:    larl %r1, .LCPI89_44823; S390X-NEXT:    ld %f1, 0(%r1)4824; S390X-NEXT:    larl %r1, .LCPI89_54825; S390X-NEXT:    ld %f2, 0(%r1)4826; S390X-NEXT:    ldr %f9, %f04827; S390X-NEXT:    ldr %f0, %f14828; S390X-NEXT:    brasl %r14, fmax@PLT4829; S390X-NEXT:    larl %r1, .LCPI89_64830; S390X-NEXT:    ld %f1, 0(%r1)4831; S390X-NEXT:    larl %r1, .LCPI89_74832; S390X-NEXT:    ld %f2, 0(%r1)4833; S390X-NEXT:    ldr %f10, %f04834; S390X-NEXT:    ldr %f0, %f14835; S390X-NEXT:    brasl %r14, fmax@PLT4836; S390X-NEXT:    ldr %f2, %f104837; S390X-NEXT:    ldr %f4, %f94838; S390X-NEXT:    ldr %f6, %f84839; S390X-NEXT:    ld %f8, 176(%r15) # 8-byte Reload4840; S390X-NEXT:    ld %f9, 168(%r15) # 8-byte Reload4841; S390X-NEXT:    ld %f10, 160(%r15) # 8-byte Reload4842; S390X-NEXT:    lmg %r14, %r15, 296(%r15)4843; S390X-NEXT:    br %r144844;4845; SZ13-LABEL: constrained_vector_maxnum_v4f64:4846; SZ13:       # %bb.0: # %entry4847; SZ13-NEXT:    stmg %r14, %r15, 112(%r15)4848; SZ13-NEXT:    .cfi_offset %r14, -484849; SZ13-NEXT:    .cfi_offset %r15, -404850; SZ13-NEXT:    aghi %r15, -1924851; SZ13-NEXT:    .cfi_def_cfa_offset 3524852; SZ13-NEXT:    larl %r1, .LCPI89_04853; SZ13-NEXT:    ld %f0, 0(%r1)4854; SZ13-NEXT:    larl %r1, .LCPI89_14855; SZ13-NEXT:    ld %f2, 0(%r1)4856; SZ13-NEXT:    brasl %r14, fmax@PLT4857; SZ13-NEXT:    larl %r1, .LCPI89_24858; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v04859; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill4860; SZ13-NEXT:    ld %f0, 0(%r1)4861; SZ13-NEXT:    larl %r1, .LCPI89_34862; SZ13-NEXT:    ld %f2, 0(%r1)4863; SZ13-NEXT:    brasl %r14, fmax@PLT4864; SZ13-NEXT:    vl %v1, 160(%r15), 3 # 16-byte Reload4865; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v04866; SZ13-NEXT:    vmrhg %v0, %v0, %v14867; SZ13-NEXT:    larl %r1, .LCPI89_44868; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill4869; SZ13-NEXT:    ld %f0, 0(%r1)4870; SZ13-NEXT:    larl %r1, .LCPI89_54871; SZ13-NEXT:    ld %f2, 0(%r1)4872; SZ13-NEXT:    brasl %r14, fmax@PLT4873; SZ13-NEXT:    larl %r1, .LCPI89_64874; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v04875; SZ13-NEXT:    vst %v0, 176(%r15), 3 # 16-byte Spill4876; SZ13-NEXT:    ld %f0, 0(%r1)4877; SZ13-NEXT:    larl %r1, .LCPI89_74878; SZ13-NEXT:    ld %f2, 0(%r1)4879; SZ13-NEXT:    brasl %r14, fmax@PLT4880; SZ13-NEXT:    vl %v1, 176(%r15), 3 # 16-byte Reload4881; SZ13-NEXT:    vl %v24, 160(%r15), 3 # 16-byte Reload4882; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v04883; SZ13-NEXT:    vmrhg %v26, %v0, %v14884; SZ13-NEXT:    lmg %r14, %r15, 304(%r15)4885; SZ13-NEXT:    br %r144886entry:4887  %max = call <4 x double> @llvm.experimental.constrained.maxnum.v4f64(4888                                <4 x double> <double 44.0, double 45.0,4889                                              double 46.0, double 47.0>,4890                                <4 x double> <double 40.0, double 41.0,4891                                              double 42.0, double 43.0>,4892                                metadata !"fpexcept.strict") #04893  ret <4 x double> %max4894}4895 4896define <1 x float> @constrained_vector_minnum_v1f32() #0 {4897; S390X-LABEL: constrained_vector_minnum_v1f32:4898; S390X:       # %bb.0: # %entry4899; S390X-NEXT:    stmg %r14, %r15, 112(%r15)4900; S390X-NEXT:    .cfi_offset %r14, -484901; S390X-NEXT:    .cfi_offset %r15, -404902; S390X-NEXT:    aghi %r15, -1604903; S390X-NEXT:    .cfi_def_cfa_offset 3204904; S390X-NEXT:    larl %r1, .LCPI90_04905; S390X-NEXT:    le %f0, 0(%r1)4906; S390X-NEXT:    larl %r1, .LCPI90_14907; S390X-NEXT:    le %f2, 0(%r1)4908; S390X-NEXT:    brasl %r14, fminf@PLT4909; S390X-NEXT:    lmg %r14, %r15, 272(%r15)4910; S390X-NEXT:    br %r144911;4912; SZ13-LABEL: constrained_vector_minnum_v1f32:4913; SZ13:       # %bb.0: # %entry4914; SZ13-NEXT:    stmg %r14, %r15, 112(%r15)4915; SZ13-NEXT:    .cfi_offset %r14, -484916; SZ13-NEXT:    .cfi_offset %r15, -404917; SZ13-NEXT:    aghi %r15, -1604918; SZ13-NEXT:    .cfi_def_cfa_offset 3204919; SZ13-NEXT:    larl %r1, .LCPI90_04920; SZ13-NEXT:    lde %f0, 0(%r1)4921; SZ13-NEXT:    larl %r1, .LCPI90_14922; SZ13-NEXT:    lde %f2, 0(%r1)4923; SZ13-NEXT:    brasl %r14, fminf@PLT4924; SZ13-NEXT:    # kill: def $f0s killed $f0s def $v04925; SZ13-NEXT:    vlr %v24, %v04926; SZ13-NEXT:    lmg %r14, %r15, 272(%r15)4927; SZ13-NEXT:    br %r144928 entry:4929  %min = call <1 x float> @llvm.experimental.constrained.minnum.v1f32(4930                               <1 x float> <float 42.0>, <1 x float> <float 41.0>,4931                               metadata !"fpexcept.strict") #04932  ret <1 x float> %min4933}4934 4935define <2 x double> @constrained_vector_minnum_v2f64() #0 {4936; S390X-LABEL: constrained_vector_minnum_v2f64:4937; S390X:       # %bb.0: # %entry4938; S390X-NEXT:    stmg %r14, %r15, 112(%r15)4939; S390X-NEXT:    .cfi_offset %r14, -484940; S390X-NEXT:    .cfi_offset %r15, -404941; S390X-NEXT:    aghi %r15, -1684942; S390X-NEXT:    .cfi_def_cfa_offset 3284943; S390X-NEXT:    std %f8, 160(%r15) # 8-byte Spill4944; S390X-NEXT:    .cfi_offset %f8, -1684945; S390X-NEXT:    larl %r1, .LCPI91_04946; S390X-NEXT:    ld %f0, 0(%r1)4947; S390X-NEXT:    larl %r1, .LCPI91_14948; S390X-NEXT:    ld %f2, 0(%r1)4949; S390X-NEXT:    brasl %r14, fmin@PLT4950; S390X-NEXT:    larl %r1, .LCPI91_24951; S390X-NEXT:    ld %f1, 0(%r1)4952; S390X-NEXT:    larl %r1, .LCPI91_34953; S390X-NEXT:    ld %f2, 0(%r1)4954; S390X-NEXT:    ldr %f8, %f04955; S390X-NEXT:    ldr %f0, %f14956; S390X-NEXT:    brasl %r14, fmin@PLT4957; S390X-NEXT:    ldr %f2, %f84958; S390X-NEXT:    ld %f8, 160(%r15) # 8-byte Reload4959; S390X-NEXT:    lmg %r14, %r15, 280(%r15)4960; S390X-NEXT:    br %r144961;4962; SZ13-LABEL: constrained_vector_minnum_v2f64:4963; SZ13:       # %bb.0: # %entry4964; SZ13-NEXT:    stmg %r14, %r15, 112(%r15)4965; SZ13-NEXT:    .cfi_offset %r14, -484966; SZ13-NEXT:    .cfi_offset %r15, -404967; SZ13-NEXT:    aghi %r15, -1764968; SZ13-NEXT:    .cfi_def_cfa_offset 3364969; SZ13-NEXT:    larl %r1, .LCPI91_04970; SZ13-NEXT:    ld %f0, 0(%r1)4971; SZ13-NEXT:    larl %r1, .LCPI91_14972; SZ13-NEXT:    ld %f2, 0(%r1)4973; SZ13-NEXT:    brasl %r14, fmin@PLT4974; SZ13-NEXT:    larl %r1, .LCPI91_24975; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v04976; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill4977; SZ13-NEXT:    ld %f0, 0(%r1)4978; SZ13-NEXT:    larl %r1, .LCPI91_34979; SZ13-NEXT:    ld %f2, 0(%r1)4980; SZ13-NEXT:    brasl %r14, fmin@PLT4981; SZ13-NEXT:    vl %v1, 160(%r15), 3 # 16-byte Reload4982; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v04983; SZ13-NEXT:    vmrhg %v24, %v0, %v14984; SZ13-NEXT:    lmg %r14, %r15, 288(%r15)4985; SZ13-NEXT:    br %r144986entry:4987  %min = call <2 x double> @llvm.experimental.constrained.minnum.v2f64(4988                                <2 x double> <double 43.0, double 42.0>,4989                                <2 x double> <double 41.0, double 40.0>,4990                                metadata !"fpexcept.strict") #04991  ret <2 x double> %min4992}4993 4994define <3 x float> @constrained_vector_minnum_v3f32() #0 {4995; S390X-LABEL: constrained_vector_minnum_v3f32:4996; S390X:       # %bb.0: # %entry4997; S390X-NEXT:    stmg %r14, %r15, 112(%r15)4998; S390X-NEXT:    .cfi_offset %r14, -484999; S390X-NEXT:    .cfi_offset %r15, -405000; S390X-NEXT:    aghi %r15, -1845001; S390X-NEXT:    .cfi_def_cfa_offset 3445002; S390X-NEXT:    std %f8, 176(%r15) # 8-byte Spill5003; S390X-NEXT:    std %f9, 168(%r15) # 8-byte Spill5004; S390X-NEXT:    std %f10, 160(%r15) # 8-byte Spill5005; S390X-NEXT:    .cfi_offset %f8, -1685006; S390X-NEXT:    .cfi_offset %f9, -1765007; S390X-NEXT:    .cfi_offset %f10, -1845008; S390X-NEXT:    larl %r1, .LCPI92_05009; S390X-NEXT:    le %f0, 0(%r1)5010; S390X-NEXT:    larl %r1, .LCPI92_15011; S390X-NEXT:    le %f8, 0(%r1)5012; S390X-NEXT:    ler %f2, %f85013; S390X-NEXT:    brasl %r14, fminf@PLT5014; S390X-NEXT:    larl %r1, .LCPI92_25015; S390X-NEXT:    le %f1, 0(%r1)5016; S390X-NEXT:    larl %r1, .LCPI92_35017; S390X-NEXT:    le %f2, 0(%r1)5018; S390X-NEXT:    ler %f9, %f05019; S390X-NEXT:    ler %f0, %f15020; S390X-NEXT:    brasl %r14, fminf@PLT5021; S390X-NEXT:    larl %r1, .LCPI92_45022; S390X-NEXT:    le %f2, 0(%r1)5023; S390X-NEXT:    ler %f10, %f05024; S390X-NEXT:    ler %f0, %f85025; S390X-NEXT:    brasl %r14, fminf@PLT5026; S390X-NEXT:    ler %f2, %f105027; S390X-NEXT:    ler %f4, %f95028; S390X-NEXT:    ld %f8, 176(%r15) # 8-byte Reload5029; S390X-NEXT:    ld %f9, 168(%r15) # 8-byte Reload5030; S390X-NEXT:    ld %f10, 160(%r15) # 8-byte Reload5031; S390X-NEXT:    lmg %r14, %r15, 296(%r15)5032; S390X-NEXT:    br %r145033;5034; SZ13-LABEL: constrained_vector_minnum_v3f32:5035; SZ13:       # %bb.0: # %entry5036; SZ13-NEXT:    stmg %r14, %r15, 112(%r15)5037; SZ13-NEXT:    .cfi_offset %r14, -485038; SZ13-NEXT:    .cfi_offset %r15, -405039; SZ13-NEXT:    aghi %r15, -2005040; SZ13-NEXT:    .cfi_def_cfa_offset 3605041; SZ13-NEXT:    std %f8, 192(%r15) # 8-byte Spill5042; SZ13-NEXT:    .cfi_offset %f8, -1685043; SZ13-NEXT:    larl %r1, .LCPI92_05044; SZ13-NEXT:    lde %f0, 0(%r1)5045; SZ13-NEXT:    larl %r1, .LCPI92_15046; SZ13-NEXT:    lde %f8, 0(%r1)5047; SZ13-NEXT:    ldr %f2, %f85048; SZ13-NEXT:    brasl %r14, fminf@PLT5049; SZ13-NEXT:    larl %r1, .LCPI92_25050; SZ13-NEXT:    lde %f2, 0(%r1)5051; SZ13-NEXT:    # kill: def $f0s killed $f0s def $v05052; SZ13-NEXT:    vst %v0, 176(%r15), 3 # 16-byte Spill5053; SZ13-NEXT:    ldr %f0, %f85054; SZ13-NEXT:    brasl %r14, fminf@PLT5055; SZ13-NEXT:    larl %r1, .LCPI92_35056; SZ13-NEXT:    # kill: def $f0s killed $f0s def $v05057; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill5058; SZ13-NEXT:    lde %f0, 0(%r1)5059; SZ13-NEXT:    larl %r1, .LCPI92_45060; SZ13-NEXT:    lde %f2, 0(%r1)5061; SZ13-NEXT:    brasl %r14, fminf@PLT5062; SZ13-NEXT:    vl %v1, 160(%r15), 3 # 16-byte Reload5063; SZ13-NEXT:    # kill: def $f0s killed $f0s def $v05064; SZ13-NEXT:    vmrhf %v0, %v1, %v05065; SZ13-NEXT:    vl %v1, 176(%r15), 3 # 16-byte Reload5066; SZ13-NEXT:    ld %f8, 192(%r15) # 8-byte Reload5067; SZ13-NEXT:    vrepf %v1, %v1, 05068; SZ13-NEXT:    vmrhg %v24, %v0, %v15069; SZ13-NEXT:    lmg %r14, %r15, 312(%r15)5070; SZ13-NEXT:    br %r145071entry:5072  %min = call <3 x float> @llvm.experimental.constrained.minnum.v3f32(5073                              <3 x float> <float 43.0, float 44.0, float 45.0>,5074                              <3 x float> <float 41.0, float 42.0, float 43.0>,5075                              metadata !"fpexcept.strict") #05076  ret <3 x float> %min5077}5078 5079define void @constrained_vector_minnum_v3f64(ptr %a) #0 {5080; S390X-LABEL: constrained_vector_minnum_v3f64:5081; S390X:       # %bb.0: # %entry5082; S390X-NEXT:    stmg %r13, %r15, 104(%r15)5083; S390X-NEXT:    .cfi_offset %r13, -565084; S390X-NEXT:    .cfi_offset %r14, -485085; S390X-NEXT:    .cfi_offset %r15, -405086; S390X-NEXT:    aghi %r15, -1925087; S390X-NEXT:    .cfi_def_cfa_offset 3525088; S390X-NEXT:    std %f8, 184(%r15) # 8-byte Spill5089; S390X-NEXT:    std %f9, 176(%r15) # 8-byte Spill5090; S390X-NEXT:    std %f10, 168(%r15) # 8-byte Spill5091; S390X-NEXT:    std %f11, 160(%r15) # 8-byte Spill5092; S390X-NEXT:    .cfi_offset %f8, -1685093; S390X-NEXT:    .cfi_offset %f9, -1765094; S390X-NEXT:    .cfi_offset %f10, -1845095; S390X-NEXT:    .cfi_offset %f11, -1925096; S390X-NEXT:    lgr %r13, %r25097; S390X-NEXT:    ld %f8, 0(%r2)5098; S390X-NEXT:    ld %f0, 16(%r2)5099; S390X-NEXT:    larl %r1, .LCPI93_05100; S390X-NEXT:    ld %f9, 0(%r1)5101; S390X-NEXT:    ld %f10, 8(%r2)5102; S390X-NEXT:    ldr %f2, %f95103; S390X-NEXT:    brasl %r14, fmin@PLT5104; S390X-NEXT:    ldr %f11, %f05105; S390X-NEXT:    ldr %f0, %f105106; S390X-NEXT:    ldr %f2, %f95107; S390X-NEXT:    brasl %r14, fmin@PLT5108; S390X-NEXT:    ldr %f10, %f05109; S390X-NEXT:    ldr %f0, %f85110; S390X-NEXT:    ldr %f2, %f95111; S390X-NEXT:    brasl %r14, fmin@PLT5112; S390X-NEXT:    std %f0, 0(%r13)5113; S390X-NEXT:    std %f10, 8(%r13)5114; S390X-NEXT:    std %f11, 16(%r13)5115; S390X-NEXT:    ld %f8, 184(%r15) # 8-byte Reload5116; S390X-NEXT:    ld %f9, 176(%r15) # 8-byte Reload5117; S390X-NEXT:    ld %f10, 168(%r15) # 8-byte Reload5118; S390X-NEXT:    ld %f11, 160(%r15) # 8-byte Reload5119; S390X-NEXT:    lmg %r13, %r15, 296(%r15)5120; S390X-NEXT:    br %r145121;5122; SZ13-LABEL: constrained_vector_minnum_v3f64:5123; SZ13:       # %bb.0: # %entry5124; SZ13-NEXT:    stmg %r13, %r15, 104(%r15)5125; SZ13-NEXT:    .cfi_offset %r13, -565126; SZ13-NEXT:    .cfi_offset %r14, -485127; SZ13-NEXT:    .cfi_offset %r15, -405128; SZ13-NEXT:    aghi %r15, -2085129; SZ13-NEXT:    .cfi_def_cfa_offset 3685130; SZ13-NEXT:    std %f8, 200(%r15) # 8-byte Spill5131; SZ13-NEXT:    std %f9, 192(%r15) # 8-byte Spill5132; SZ13-NEXT:    .cfi_offset %f8, -1685133; SZ13-NEXT:    .cfi_offset %f9, -1765134; SZ13-NEXT:    larl %r1, .LCPI93_05135; SZ13-NEXT:    ld %f9, 0(%r1)5136; SZ13-NEXT:    vl %v0, 0(%r2), 45137; SZ13-NEXT:    ld %f8, 16(%r2)5138; SZ13-NEXT:    ldr %f2, %f95139; SZ13-NEXT:    lgr %r13, %r25140; SZ13-NEXT:    vst %v0, 176(%r15), 3 # 16-byte Spill5141; SZ13-NEXT:    # kill: def $f0d killed $f0d killed $v05142; SZ13-NEXT:    brasl %r14, fmin@PLT5143; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v05144; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill5145; SZ13-NEXT:    vl %v0, 176(%r15), 3 # 16-byte Reload5146; SZ13-NEXT:    ldr %f2, %f95147; SZ13-NEXT:    vrepg %v0, %v0, 15148; SZ13-NEXT:    # kill: def $f0d killed $f0d killed $v05149; SZ13-NEXT:    brasl %r14, fmin@PLT5150; SZ13-NEXT:    vl %v1, 160(%r15), 3 # 16-byte Reload5151; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v05152; SZ13-NEXT:    vmrhg %v0, %v1, %v05153; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill5154; SZ13-NEXT:    ldr %f0, %f85155; SZ13-NEXT:    ldr %f2, %f95156; SZ13-NEXT:    brasl %r14, fmin@PLT5157; SZ13-NEXT:    mvc 0(16,%r13), 160(%r15) # 16-byte Folded Reload5158; SZ13-NEXT:    ld %f8, 200(%r15) # 8-byte Reload5159; SZ13-NEXT:    ld %f9, 192(%r15) # 8-byte Reload5160; SZ13-NEXT:    std %f0, 16(%r13)5161; SZ13-NEXT:    lmg %r13, %r15, 312(%r15)5162; SZ13-NEXT:    br %r145163entry:5164 %b = load <3 x double>, ptr %a5165 %min = call <3 x double> @llvm.experimental.constrained.minnum.v3f64(5166                          <3 x double> %b,5167                          <3 x double> <double 3.0, double 3.0, double 3.0>,5168                          metadata !"fpexcept.strict") #05169  store <3 x double> %min, ptr %a5170  ret void5171}5172 5173define <4 x double> @constrained_vector_minnum_v4f64() #0 {5174; S390X-LABEL: constrained_vector_minnum_v4f64:5175; S390X:       # %bb.0: # %entry5176; S390X-NEXT:    stmg %r14, %r15, 112(%r15)5177; S390X-NEXT:    .cfi_offset %r14, -485178; S390X-NEXT:    .cfi_offset %r15, -405179; S390X-NEXT:    aghi %r15, -1845180; S390X-NEXT:    .cfi_def_cfa_offset 3445181; S390X-NEXT:    std %f8, 176(%r15) # 8-byte Spill5182; S390X-NEXT:    std %f9, 168(%r15) # 8-byte Spill5183; S390X-NEXT:    std %f10, 160(%r15) # 8-byte Spill5184; S390X-NEXT:    .cfi_offset %f8, -1685185; S390X-NEXT:    .cfi_offset %f9, -1765186; S390X-NEXT:    .cfi_offset %f10, -1845187; S390X-NEXT:    larl %r1, .LCPI94_05188; S390X-NEXT:    ld %f0, 0(%r1)5189; S390X-NEXT:    larl %r1, .LCPI94_15190; S390X-NEXT:    ld %f2, 0(%r1)5191; S390X-NEXT:    brasl %r14, fmin@PLT5192; S390X-NEXT:    larl %r1, .LCPI94_25193; S390X-NEXT:    ld %f1, 0(%r1)5194; S390X-NEXT:    larl %r1, .LCPI94_35195; S390X-NEXT:    ld %f2, 0(%r1)5196; S390X-NEXT:    ldr %f8, %f05197; S390X-NEXT:    ldr %f0, %f15198; S390X-NEXT:    brasl %r14, fmin@PLT5199; S390X-NEXT:    larl %r1, .LCPI94_45200; S390X-NEXT:    ld %f1, 0(%r1)5201; S390X-NEXT:    larl %r1, .LCPI94_55202; S390X-NEXT:    ld %f2, 0(%r1)5203; S390X-NEXT:    ldr %f9, %f05204; S390X-NEXT:    ldr %f0, %f15205; S390X-NEXT:    brasl %r14, fmin@PLT5206; S390X-NEXT:    larl %r1, .LCPI94_65207; S390X-NEXT:    ld %f1, 0(%r1)5208; S390X-NEXT:    larl %r1, .LCPI94_75209; S390X-NEXT:    ld %f2, 0(%r1)5210; S390X-NEXT:    ldr %f10, %f05211; S390X-NEXT:    ldr %f0, %f15212; S390X-NEXT:    brasl %r14, fmin@PLT5213; S390X-NEXT:    ldr %f2, %f105214; S390X-NEXT:    ldr %f4, %f95215; S390X-NEXT:    ldr %f6, %f85216; S390X-NEXT:    ld %f8, 176(%r15) # 8-byte Reload5217; S390X-NEXT:    ld %f9, 168(%r15) # 8-byte Reload5218; S390X-NEXT:    ld %f10, 160(%r15) # 8-byte Reload5219; S390X-NEXT:    lmg %r14, %r15, 296(%r15)5220; S390X-NEXT:    br %r145221;5222; SZ13-LABEL: constrained_vector_minnum_v4f64:5223; SZ13:       # %bb.0: # %entry5224; SZ13-NEXT:    stmg %r14, %r15, 112(%r15)5225; SZ13-NEXT:    .cfi_offset %r14, -485226; SZ13-NEXT:    .cfi_offset %r15, -405227; SZ13-NEXT:    aghi %r15, -1925228; SZ13-NEXT:    .cfi_def_cfa_offset 3525229; SZ13-NEXT:    larl %r1, .LCPI94_05230; SZ13-NEXT:    ld %f0, 0(%r1)5231; SZ13-NEXT:    larl %r1, .LCPI94_15232; SZ13-NEXT:    ld %f2, 0(%r1)5233; SZ13-NEXT:    brasl %r14, fmin@PLT5234; SZ13-NEXT:    larl %r1, .LCPI94_25235; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v05236; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill5237; SZ13-NEXT:    ld %f0, 0(%r1)5238; SZ13-NEXT:    larl %r1, .LCPI94_35239; SZ13-NEXT:    ld %f2, 0(%r1)5240; SZ13-NEXT:    brasl %r14, fmin@PLT5241; SZ13-NEXT:    vl %v1, 160(%r15), 3 # 16-byte Reload5242; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v05243; SZ13-NEXT:    vmrhg %v0, %v0, %v15244; SZ13-NEXT:    larl %r1, .LCPI94_45245; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill5246; SZ13-NEXT:    ld %f0, 0(%r1)5247; SZ13-NEXT:    larl %r1, .LCPI94_55248; SZ13-NEXT:    ld %f2, 0(%r1)5249; SZ13-NEXT:    brasl %r14, fmin@PLT5250; SZ13-NEXT:    larl %r1, .LCPI94_65251; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v05252; SZ13-NEXT:    vst %v0, 176(%r15), 3 # 16-byte Spill5253; SZ13-NEXT:    ld %f0, 0(%r1)5254; SZ13-NEXT:    larl %r1, .LCPI94_75255; SZ13-NEXT:    ld %f2, 0(%r1)5256; SZ13-NEXT:    brasl %r14, fmin@PLT5257; SZ13-NEXT:    vl %v1, 176(%r15), 3 # 16-byte Reload5258; SZ13-NEXT:    vl %v24, 160(%r15), 3 # 16-byte Reload5259; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v05260; SZ13-NEXT:    vmrhg %v26, %v0, %v15261; SZ13-NEXT:    lmg %r14, %r15, 304(%r15)5262; SZ13-NEXT:    br %r145263entry:5264  %min = call <4 x double> @llvm.experimental.constrained.minnum.v4f64(5265                                <4 x double> <double 44.0, double 45.0,5266                                              double 46.0, double 47.0>,5267                                <4 x double> <double 40.0, double 41.0,5268                                              double 42.0, double 43.0>,5269                                metadata !"fpexcept.strict") #05270  ret <4 x double> %min5271}5272 5273define <1 x float> @constrained_vector_fptrunc_v1f64() #0 {5274; S390X-LABEL: constrained_vector_fptrunc_v1f64:5275; S390X:       # %bb.0: # %entry5276; S390X-NEXT:    larl %r1, .LCPI95_05277; S390X-NEXT:    ld %f0, 0(%r1)5278; S390X-NEXT:    ledbr %f0, %f05279; S390X-NEXT:    br %r145280;5281; SZ13-LABEL: constrained_vector_fptrunc_v1f64:5282; SZ13:       # %bb.0: # %entry5283; SZ13-NEXT:    larl %r1, .LCPI95_05284; SZ13-NEXT:    ld %f0, 0(%r1)5285; SZ13-NEXT:    wledb %v24, %f0, 0, 05286; SZ13-NEXT:    br %r145287entry:5288  %result = call <1 x float> @llvm.experimental.constrained.fptrunc.v1f32.v1f64(5289                                <1 x double><double 42.1>,5290                                metadata !"round.dynamic",5291                                metadata !"fpexcept.strict") #05292  ret <1 x float> %result5293}5294 5295define <2 x float> @constrained_vector_fptrunc_v2f64() #0 {5296; S390X-LABEL: constrained_vector_fptrunc_v2f64:5297; S390X:       # %bb.0: # %entry5298; S390X-NEXT:    larl %r1, .LCPI96_05299; S390X-NEXT:    ld %f0, 0(%r1)5300; S390X-NEXT:    larl %r1, .LCPI96_15301; S390X-NEXT:    ld %f1, 0(%r1)5302; S390X-NEXT:    ledbr %f2, %f05303; S390X-NEXT:    ledbr %f0, %f15304; S390X-NEXT:    br %r145305;5306; SZ13-LABEL: constrained_vector_fptrunc_v2f64:5307; SZ13:       # %bb.0: # %entry5308; SZ13-NEXT:    larl %r1, .LCPI96_05309; SZ13-NEXT:    ld %f0, 0(%r1)5310; SZ13-NEXT:    larl %r1, .LCPI96_15311; SZ13-NEXT:    ld %f1, 0(%r1)5312; SZ13-NEXT:    ledbra %f0, 0, %f0, 05313; SZ13-NEXT:    ledbra %f1, 0, %f1, 05314; SZ13-NEXT:    vmrhf %v0, %v1, %v05315; SZ13-NEXT:    vmrhg %v24, %v0, %v05316; SZ13-NEXT:    br %r145317entry:5318  %result = call <2 x float> @llvm.experimental.constrained.fptrunc.v2f32.v2f64(5319                                <2 x double><double 42.1, double 42.2>,5320                                metadata !"round.dynamic",5321                                metadata !"fpexcept.strict") #05322  ret <2 x float> %result5323}5324 5325define void @constrained_vector_fptrunc_v3f64(ptr %src, ptr %dest) #0 {5326; S390X-LABEL: constrained_vector_fptrunc_v3f64:5327; S390X:       # %bb.0: # %entry5328; S390X-NEXT:    ld %f0, 0(%r2)5329; S390X-NEXT:    ld %f1, 16(%r2)5330; S390X-NEXT:    ld %f2, 8(%r2)5331; S390X-NEXT:    ledbr %f0, %f05332; S390X-NEXT:    lgdr %r0, %f05333; S390X-NEXT:    nilf %r0, 05334; S390X-NEXT:    ledbr %f0, %f25335; S390X-NEXT:    lgdr %r1, %f05336; S390X-NEXT:    srlg %r1, %r1, 325337; S390X-NEXT:    lr %r0, %r15338; S390X-NEXT:    ledbr %f0, %f15339; S390X-NEXT:    ste %f0, 8(%r3)5340; S390X-NEXT:    stg %r0, 0(%r3)5341; S390X-NEXT:    br %r145342;5343; SZ13-LABEL: constrained_vector_fptrunc_v3f64:5344; SZ13:       # %bb.0: # %entry5345; SZ13-NEXT:    vl %v1, 0(%r2), 45346; SZ13-NEXT:    ld %f0, 16(%r2)5347; SZ13-NEXT:    vledb %v1, %v1, 0, 05348; SZ13-NEXT:    larl %r1, .LCPI97_05349; SZ13-NEXT:    ledbra %f0, 0, %f0, 05350; SZ13-NEXT:    vl %v2, 0(%r1), 35351; SZ13-NEXT:    vperm %v1, %v1, %v1, %v25352; SZ13-NEXT:    ste %f0, 8(%r3)5353; SZ13-NEXT:    vsteg %v1, 0(%r3), 05354; SZ13-NEXT:    br %r145355entry:5356  %b = load <3 x double>, ptr %src5357  %result = call <3 x float> @llvm.experimental.constrained.fptrunc.v3f32.v3f64(5358                                <3 x double> %b,5359                                metadata !"round.dynamic",5360                                metadata !"fpexcept.strict") #05361  store <3 x float> %result, ptr %dest5362  ret void5363}5364 5365define <4 x float> @constrained_vector_fptrunc_v4f64() #0 {5366; S390X-LABEL: constrained_vector_fptrunc_v4f64:5367; S390X:       # %bb.0: # %entry5368; S390X-NEXT:    larl %r1, .LCPI98_05369; S390X-NEXT:    ld %f0, 0(%r1)5370; S390X-NEXT:    larl %r1, .LCPI98_15371; S390X-NEXT:    ld %f1, 0(%r1)5372; S390X-NEXT:    larl %r1, .LCPI98_25373; S390X-NEXT:    ld %f2, 0(%r1)5374; S390X-NEXT:    larl %r1, .LCPI98_35375; S390X-NEXT:    ld %f3, 0(%r1)5376; S390X-NEXT:    ledbr %f6, %f05377; S390X-NEXT:    ledbr %f4, %f15378; S390X-NEXT:    ledbr %f2, %f25379; S390X-NEXT:    ledbr %f0, %f35380; S390X-NEXT:    br %r145381;5382; SZ13-LABEL: constrained_vector_fptrunc_v4f64:5383; SZ13:       # %bb.0: # %entry5384; SZ13-NEXT:    larl %r1, .LCPI98_05385; SZ13-NEXT:    ld %f0, 0(%r1)5386; SZ13-NEXT:    larl %r1, .LCPI98_15387; SZ13-NEXT:    ld %f1, 0(%r1)5388; SZ13-NEXT:    ledbra %f0, 0, %f0, 05389; SZ13-NEXT:    ledbra %f1, 0, %f1, 05390; SZ13-NEXT:    larl %r1, .LCPI98_25391; SZ13-NEXT:    vmrhf %v0, %v1, %v05392; SZ13-NEXT:    ld %f1, 0(%r1)5393; SZ13-NEXT:    larl %r1, .LCPI98_35394; SZ13-NEXT:    ld %f2, 0(%r1)5395; SZ13-NEXT:    ledbra %f1, 0, %f1, 05396; SZ13-NEXT:    ledbra %f2, 0, %f2, 05397; SZ13-NEXT:    vmrhf %v1, %v2, %v15398; SZ13-NEXT:    vmrhg %v24, %v1, %v05399; SZ13-NEXT:    br %r145400entry:5401  %result = call <4 x float> @llvm.experimental.constrained.fptrunc.v4f32.v4f64(5402                                <4 x double><double 42.1, double 42.2,5403                                             double 42.3, double 42.4>,5404                                metadata !"round.dynamic",5405                                metadata !"fpexcept.strict") #05406  ret <4 x float> %result5407}5408 5409define <1 x double> @constrained_vector_fpext_v1f32() #0 {5410; S390X-LABEL: constrained_vector_fpext_v1f32:5411; S390X:       # %bb.0: # %entry5412; S390X-NEXT:    larl %r1, .LCPI99_05413; S390X-NEXT:    ldeb %f0, 0(%r1)5414; S390X-NEXT:    br %r145415;5416; SZ13-LABEL: constrained_vector_fpext_v1f32:5417; SZ13:       # %bb.0: # %entry5418; SZ13-NEXT:    larl %r1, .LCPI99_05419; SZ13-NEXT:    ldeb %f0, 0(%r1)5420; SZ13-NEXT:    vlr %v24, %v05421; SZ13-NEXT:    br %r145422entry:5423  %result = call <1 x double> @llvm.experimental.constrained.fpext.v1f64.v1f32(5424                                <1 x float><float 42.0>,5425                                metadata !"fpexcept.strict") #05426  ret <1 x double> %result5427}5428 5429define <2 x double> @constrained_vector_fpext_v2f32() #0 {5430; S390X-LABEL: constrained_vector_fpext_v2f32:5431; S390X:       # %bb.0: # %entry5432; S390X-NEXT:    larl %r1, .LCPI100_05433; S390X-NEXT:    ldeb %f2, 0(%r1)5434; S390X-NEXT:    larl %r1, .LCPI100_15435; S390X-NEXT:    ldeb %f0, 0(%r1)5436; S390X-NEXT:    br %r145437;5438; SZ13-LABEL: constrained_vector_fpext_v2f32:5439; SZ13:       # %bb.0: # %entry5440; SZ13-NEXT:    larl %r1, .LCPI100_05441; SZ13-NEXT:    ldeb %f0, 0(%r1)5442; SZ13-NEXT:    larl %r1, .LCPI100_15443; SZ13-NEXT:    ldeb %f1, 0(%r1)5444; SZ13-NEXT:    vmrhg %v24, %v1, %v05445; SZ13-NEXT:    br %r145446entry:5447  %result = call <2 x double> @llvm.experimental.constrained.fpext.v2f64.v2f32(5448                                <2 x float><float 42.0, float 43.0>,5449                                metadata !"fpexcept.strict") #05450  ret <2 x double> %result5451}5452 5453define void @constrained_vector_fpext_v3f64(ptr %src, ptr %dest) #0 {5454; S390X-LABEL: constrained_vector_fpext_v3f64:5455; S390X:       # %bb.0: # %entry5456; S390X-NEXT:    lg %r0, 0(%r2)5457; S390X-NEXT:    sllg %r1, %r0, 325458; S390X-NEXT:    ldgr %f0, %r15459; S390X-NEXT:    nilf %r0, 05460; S390X-NEXT:    ldeb %f1, 8(%r2)5461; S390X-NEXT:    ldgr %f2, %r05462; S390X-NEXT:    ldebr %f2, %f25463; S390X-NEXT:    ldebr %f0, %f05464; S390X-NEXT:    std %f1, 16(%r3)5465; S390X-NEXT:    std %f0, 8(%r3)5466; S390X-NEXT:    std %f2, 0(%r3)5467; S390X-NEXT:    br %r145468;5469; SZ13-LABEL: constrained_vector_fpext_v3f64:5470; SZ13:       # %bb.0: # %entry5471; SZ13-NEXT:    vl %v0, 0(%r2), 45472; SZ13-NEXT:    vrepf %v1, %v0, 15473; SZ13-NEXT:    vldeb %v0, %v05474; SZ13-NEXT:    ldebr %f1, %f15475; SZ13-NEXT:    vmrhg %v1, %v0, %v15476; SZ13-NEXT:    vsteg %v0, 16(%r3), 15477; SZ13-NEXT:    vst %v1, 0(%r3), 45478; SZ13-NEXT:    br %r145479entry:5480  %b = load <3 x float>, ptr %src5481  %result = call <3 x double> @llvm.experimental.constrained.fpext.v3f64.v3f32(5482                              <3 x float> %b,5483                              metadata !"fpexcept.strict") #05484  store <3 x double> %result, ptr %dest5485  ret void5486}5487 5488define <4 x double> @constrained_vector_fpext_v4f32() #0 {5489; S390X-LABEL: constrained_vector_fpext_v4f32:5490; S390X:       # %bb.0: # %entry5491; S390X-NEXT:    larl %r1, .LCPI102_05492; S390X-NEXT:    ldeb %f6, 0(%r1)5493; S390X-NEXT:    larl %r1, .LCPI102_15494; S390X-NEXT:    ldeb %f4, 0(%r1)5495; S390X-NEXT:    larl %r1, .LCPI102_25496; S390X-NEXT:    ldeb %f2, 0(%r1)5497; S390X-NEXT:    larl %r1, .LCPI102_35498; S390X-NEXT:    ldeb %f0, 0(%r1)5499; S390X-NEXT:    br %r145500;5501; SZ13-LABEL: constrained_vector_fpext_v4f32:5502; SZ13:       # %bb.0: # %entry5503; SZ13-NEXT:    larl %r1, .LCPI102_05504; SZ13-NEXT:    ldeb %f0, 0(%r1)5505; SZ13-NEXT:    larl %r1, .LCPI102_15506; SZ13-NEXT:    ldeb %f1, 0(%r1)5507; SZ13-NEXT:    larl %r1, .LCPI102_25508; SZ13-NEXT:    vmrhg %v24, %v1, %v05509; SZ13-NEXT:    ldeb %f0, 0(%r1)5510; SZ13-NEXT:    larl %r1, .LCPI102_35511; SZ13-NEXT:    ldeb %f1, 0(%r1)5512; SZ13-NEXT:    vmrhg %v26, %v1, %v05513; SZ13-NEXT:    br %r145514entry:5515  %result = call <4 x double> @llvm.experimental.constrained.fpext.v4f64.v4f32(5516                                <4 x float><float 42.0, float 43.0,5517                                            float 44.0, float 45.0>,5518                                metadata !"fpexcept.strict") #05519  ret <4 x double> %result5520}5521 5522define <1 x float> @constrained_vector_ceil_v1f32(ptr %a) #0 {5523; S390X-LABEL: constrained_vector_ceil_v1f32:5524; S390X:       # %bb.0: # %entry5525; S390X-NEXT:    stmg %r14, %r15, 112(%r15)5526; S390X-NEXT:    .cfi_offset %r14, -485527; S390X-NEXT:    .cfi_offset %r15, -405528; S390X-NEXT:    aghi %r15, -1605529; S390X-NEXT:    .cfi_def_cfa_offset 3205530; S390X-NEXT:    larl %r1, .LCPI103_05531; S390X-NEXT:    le %f0, 0(%r1)5532; S390X-NEXT:    brasl %r14, ceilf@PLT5533; S390X-NEXT:    lmg %r14, %r15, 272(%r15)5534; S390X-NEXT:    br %r145535;5536; SZ13-LABEL: constrained_vector_ceil_v1f32:5537; SZ13:       # %bb.0: # %entry5538; SZ13-NEXT:    vgmf %v0, 2, 95539; SZ13-NEXT:    fiebra %f0, 6, %f0, 45540; SZ13-NEXT:    vlr %v24, %v05541; SZ13-NEXT:    br %r145542entry:5543  %b = load <1 x float>, ptr %a5544  %ceil = call <1 x float> @llvm.experimental.constrained.ceil.v1f32(5545                               <1 x float> <float 1.5>,5546                               metadata !"fpexcept.strict") #05547  ret <1 x float> %ceil5548}5549 5550define <2 x double> @constrained_vector_ceil_v2f64(ptr %a) #0 {5551; S390X-LABEL: constrained_vector_ceil_v2f64:5552; S390X:       # %bb.0: # %entry5553; S390X-NEXT:    stmg %r14, %r15, 112(%r15)5554; S390X-NEXT:    .cfi_offset %r14, -485555; S390X-NEXT:    .cfi_offset %r15, -405556; S390X-NEXT:    aghi %r15, -1765557; S390X-NEXT:    .cfi_def_cfa_offset 3365558; S390X-NEXT:    std %f8, 168(%r15) # 8-byte Spill5559; S390X-NEXT:    std %f9, 160(%r15) # 8-byte Spill5560; S390X-NEXT:    .cfi_offset %f8, -1685561; S390X-NEXT:    .cfi_offset %f9, -1765562; S390X-NEXT:    ld %f0, 8(%r2)5563; S390X-NEXT:    ld %f8, 0(%r2)5564; S390X-NEXT:    brasl %r14, ceil@PLT5565; S390X-NEXT:    ldr %f9, %f05566; S390X-NEXT:    ldr %f0, %f85567; S390X-NEXT:    brasl %r14, ceil@PLT5568; S390X-NEXT:    ldr %f2, %f95569; S390X-NEXT:    ld %f8, 168(%r15) # 8-byte Reload5570; S390X-NEXT:    ld %f9, 160(%r15) # 8-byte Reload5571; S390X-NEXT:    lmg %r14, %r15, 288(%r15)5572; S390X-NEXT:    br %r145573;5574; SZ13-LABEL: constrained_vector_ceil_v2f64:5575; SZ13:       # %bb.0: # %entry5576; SZ13-NEXT:    vl %v0, 0(%r2), 35577; SZ13-NEXT:    vfidb %v24, %v0, 4, 65578; SZ13-NEXT:    br %r145579entry:5580  %b = load <2 x double>, ptr %a5581  %ceil = call <2 x double> @llvm.experimental.constrained.ceil.v2f64(5582                                <2 x double> %b,5583                                metadata !"fpexcept.strict") #05584  ret <2 x double> %ceil5585}5586 5587define <3 x float> @constrained_vector_ceil_v3f32(ptr %a) #0 {5588; S390X-LABEL: constrained_vector_ceil_v3f32:5589; S390X:       # %bb.0: # %entry5590; S390X-NEXT:    stmg %r14, %r15, 112(%r15)5591; S390X-NEXT:    .cfi_offset %r14, -485592; S390X-NEXT:    .cfi_offset %r15, -405593; S390X-NEXT:    aghi %r15, -1845594; S390X-NEXT:    .cfi_def_cfa_offset 3445595; S390X-NEXT:    std %f8, 176(%r15) # 8-byte Spill5596; S390X-NEXT:    std %f9, 168(%r15) # 8-byte Spill5597; S390X-NEXT:    std %f10, 160(%r15) # 8-byte Spill5598; S390X-NEXT:    .cfi_offset %f8, -1685599; S390X-NEXT:    .cfi_offset %f9, -1765600; S390X-NEXT:    .cfi_offset %f10, -1845601; S390X-NEXT:    lg %r0, 0(%r2)5602; S390X-NEXT:    le %f0, 8(%r2)5603; S390X-NEXT:    risbg %r1, %r0, 0, 159, 05604; S390X-NEXT:    ldgr %f8, %r15605; S390X-NEXT:    sllg %r0, %r0, 325606; S390X-NEXT:    ldgr %f9, %r05607; S390X-NEXT:    brasl %r14, ceilf@PLT5608; S390X-NEXT:    ler %f10, %f05609; S390X-NEXT:    ler %f0, %f95610; S390X-NEXT:    brasl %r14, ceilf@PLT5611; S390X-NEXT:    ler %f9, %f05612; S390X-NEXT:    ler %f0, %f85613; S390X-NEXT:    brasl %r14, ceilf@PLT5614; S390X-NEXT:    ler %f2, %f95615; S390X-NEXT:    ler %f4, %f105616; S390X-NEXT:    ld %f8, 176(%r15) # 8-byte Reload5617; S390X-NEXT:    ld %f9, 168(%r15) # 8-byte Reload5618; S390X-NEXT:    ld %f10, 160(%r15) # 8-byte Reload5619; S390X-NEXT:    lmg %r14, %r15, 296(%r15)5620; S390X-NEXT:    br %r145621;5622; SZ13-LABEL: constrained_vector_ceil_v3f32:5623; SZ13:       # %bb.0: # %entry5624; SZ13-NEXT:    vl %v0, 0(%r2), 45625; SZ13-NEXT:    vrepf %v1, %v0, 25626; SZ13-NEXT:    vrepf %v2, %v0, 15627; SZ13-NEXT:    fiebra %f1, 6, %f1, 45628; SZ13-NEXT:    fiebra %f2, 6, %f2, 45629; SZ13-NEXT:    fiebra %f0, 6, %f0, 45630; SZ13-NEXT:    vmrhf %v0, %v0, %v25631; SZ13-NEXT:    vrepf %v1, %v1, 05632; SZ13-NEXT:    vmrhg %v24, %v0, %v15633; SZ13-NEXT:    br %r145634entry:5635  %b = load <3 x float>, ptr %a5636  %ceil = call <3 x float> @llvm.experimental.constrained.ceil.v3f32(5637                              <3 x float> %b,5638                              metadata !"fpexcept.strict") #05639  ret <3 x float> %ceil5640}5641 5642define void @constrained_vector_ceil_v3f64(ptr %a) #0 {5643; S390X-LABEL: constrained_vector_ceil_v3f64:5644; S390X:       # %bb.0: # %entry5645; S390X-NEXT:    stmg %r13, %r15, 104(%r15)5646; S390X-NEXT:    .cfi_offset %r13, -565647; S390X-NEXT:    .cfi_offset %r14, -485648; S390X-NEXT:    .cfi_offset %r15, -405649; S390X-NEXT:    aghi %r15, -1845650; S390X-NEXT:    .cfi_def_cfa_offset 3445651; S390X-NEXT:    std %f8, 176(%r15) # 8-byte Spill5652; S390X-NEXT:    std %f9, 168(%r15) # 8-byte Spill5653; S390X-NEXT:    std %f10, 160(%r15) # 8-byte Spill5654; S390X-NEXT:    .cfi_offset %f8, -1685655; S390X-NEXT:    .cfi_offset %f9, -1765656; S390X-NEXT:    .cfi_offset %f10, -1845657; S390X-NEXT:    lgr %r13, %r25658; S390X-NEXT:    ld %f8, 0(%r2)5659; S390X-NEXT:    ld %f0, 16(%r2)5660; S390X-NEXT:    ld %f9, 8(%r2)5661; S390X-NEXT:    brasl %r14, ceil@PLT5662; S390X-NEXT:    ldr %f10, %f05663; S390X-NEXT:    ldr %f0, %f95664; S390X-NEXT:    brasl %r14, ceil@PLT5665; S390X-NEXT:    ldr %f9, %f05666; S390X-NEXT:    ldr %f0, %f85667; S390X-NEXT:    brasl %r14, ceil@PLT5668; S390X-NEXT:    std %f0, 0(%r13)5669; S390X-NEXT:    std %f9, 8(%r13)5670; S390X-NEXT:    std %f10, 16(%r13)5671; S390X-NEXT:    ld %f8, 176(%r15) # 8-byte Reload5672; S390X-NEXT:    ld %f9, 168(%r15) # 8-byte Reload5673; S390X-NEXT:    ld %f10, 160(%r15) # 8-byte Reload5674; S390X-NEXT:    lmg %r13, %r15, 288(%r15)5675; S390X-NEXT:    br %r145676;5677; SZ13-LABEL: constrained_vector_ceil_v3f64:5678; SZ13:       # %bb.0: # %entry5679; SZ13-NEXT:    vl %v0, 0(%r2), 45680; SZ13-NEXT:    ld %f1, 16(%r2)5681; SZ13-NEXT:    vfidb %v0, %v0, 4, 65682; SZ13-NEXT:    fidbra %f1, 6, %f1, 45683; SZ13-NEXT:    vst %v0, 0(%r2), 45684; SZ13-NEXT:    std %f1, 16(%r2)5685; SZ13-NEXT:    br %r145686entry:5687  %b = load <3 x double>, ptr %a5688  %ceil = call <3 x double> @llvm.experimental.constrained.ceil.v3f64(5689                          <3 x double> %b,5690                          metadata !"fpexcept.strict") #05691  store <3 x double> %ceil, ptr %a5692  ret void5693}5694 5695define <1 x float> @constrained_vector_floor_v1f32(ptr %a) #0 {5696; S390X-LABEL: constrained_vector_floor_v1f32:5697; S390X:       # %bb.0: # %entry5698; S390X-NEXT:    stmg %r14, %r15, 112(%r15)5699; S390X-NEXT:    .cfi_offset %r14, -485700; S390X-NEXT:    .cfi_offset %r15, -405701; S390X-NEXT:    aghi %r15, -1605702; S390X-NEXT:    .cfi_def_cfa_offset 3205703; S390X-NEXT:    le %f0, 0(%r2)5704; S390X-NEXT:    brasl %r14, floorf@PLT5705; S390X-NEXT:    lmg %r14, %r15, 272(%r15)5706; S390X-NEXT:    br %r145707;5708; SZ13-LABEL: constrained_vector_floor_v1f32:5709; SZ13:       # %bb.0: # %entry5710; SZ13-NEXT:    lde %f0, 0(%r2)5711; SZ13-NEXT:    fiebra %f0, 7, %f0, 45712; SZ13-NEXT:    vlr %v24, %v05713; SZ13-NEXT:    br %r145714entry:5715  %b = load <1 x float>, ptr %a5716  %floor = call <1 x float> @llvm.experimental.constrained.floor.v1f32(5717                               <1 x float> %b,5718                               metadata !"fpexcept.strict") #05719  ret <1 x float> %floor5720}5721 5722 5723define <2 x double> @constrained_vector_floor_v2f64(ptr %a) #0 {5724; S390X-LABEL: constrained_vector_floor_v2f64:5725; S390X:       # %bb.0: # %entry5726; S390X-NEXT:    stmg %r14, %r15, 112(%r15)5727; S390X-NEXT:    .cfi_offset %r14, -485728; S390X-NEXT:    .cfi_offset %r15, -405729; S390X-NEXT:    aghi %r15, -1765730; S390X-NEXT:    .cfi_def_cfa_offset 3365731; S390X-NEXT:    std %f8, 168(%r15) # 8-byte Spill5732; S390X-NEXT:    std %f9, 160(%r15) # 8-byte Spill5733; S390X-NEXT:    .cfi_offset %f8, -1685734; S390X-NEXT:    .cfi_offset %f9, -1765735; S390X-NEXT:    ld %f0, 8(%r2)5736; S390X-NEXT:    ld %f8, 0(%r2)5737; S390X-NEXT:    brasl %r14, floor@PLT5738; S390X-NEXT:    ldr %f9, %f05739; S390X-NEXT:    ldr %f0, %f85740; S390X-NEXT:    brasl %r14, floor@PLT5741; S390X-NEXT:    ldr %f2, %f95742; S390X-NEXT:    ld %f8, 168(%r15) # 8-byte Reload5743; S390X-NEXT:    ld %f9, 160(%r15) # 8-byte Reload5744; S390X-NEXT:    lmg %r14, %r15, 288(%r15)5745; S390X-NEXT:    br %r145746;5747; SZ13-LABEL: constrained_vector_floor_v2f64:5748; SZ13:       # %bb.0: # %entry5749; SZ13-NEXT:    vl %v0, 0(%r2), 35750; SZ13-NEXT:    vfidb %v24, %v0, 4, 75751; SZ13-NEXT:    br %r145752entry:5753  %b = load <2 x double>, ptr %a5754  %floor = call <2 x double> @llvm.experimental.constrained.floor.v2f64(5755                                <2 x double> %b,5756                                metadata !"fpexcept.strict") #05757  ret <2 x double> %floor5758}5759 5760define <3 x float> @constrained_vector_floor_v3f32(ptr %a) #0 {5761; S390X-LABEL: constrained_vector_floor_v3f32:5762; S390X:       # %bb.0: # %entry5763; S390X-NEXT:    stmg %r14, %r15, 112(%r15)5764; S390X-NEXT:    .cfi_offset %r14, -485765; S390X-NEXT:    .cfi_offset %r15, -405766; S390X-NEXT:    aghi %r15, -1845767; S390X-NEXT:    .cfi_def_cfa_offset 3445768; S390X-NEXT:    std %f8, 176(%r15) # 8-byte Spill5769; S390X-NEXT:    std %f9, 168(%r15) # 8-byte Spill5770; S390X-NEXT:    std %f10, 160(%r15) # 8-byte Spill5771; S390X-NEXT:    .cfi_offset %f8, -1685772; S390X-NEXT:    .cfi_offset %f9, -1765773; S390X-NEXT:    .cfi_offset %f10, -1845774; S390X-NEXT:    lg %r0, 0(%r2)5775; S390X-NEXT:    le %f0, 8(%r2)5776; S390X-NEXT:    risbg %r1, %r0, 0, 159, 05777; S390X-NEXT:    ldgr %f8, %r15778; S390X-NEXT:    sllg %r0, %r0, 325779; S390X-NEXT:    ldgr %f9, %r05780; S390X-NEXT:    brasl %r14, floorf@PLT5781; S390X-NEXT:    ler %f10, %f05782; S390X-NEXT:    ler %f0, %f95783; S390X-NEXT:    brasl %r14, floorf@PLT5784; S390X-NEXT:    ler %f9, %f05785; S390X-NEXT:    ler %f0, %f85786; S390X-NEXT:    brasl %r14, floorf@PLT5787; S390X-NEXT:    ler %f2, %f95788; S390X-NEXT:    ler %f4, %f105789; S390X-NEXT:    ld %f8, 176(%r15) # 8-byte Reload5790; S390X-NEXT:    ld %f9, 168(%r15) # 8-byte Reload5791; S390X-NEXT:    ld %f10, 160(%r15) # 8-byte Reload5792; S390X-NEXT:    lmg %r14, %r15, 296(%r15)5793; S390X-NEXT:    br %r145794;5795; SZ13-LABEL: constrained_vector_floor_v3f32:5796; SZ13:       # %bb.0: # %entry5797; SZ13-NEXT:    vl %v0, 0(%r2), 45798; SZ13-NEXT:    vrepf %v1, %v0, 25799; SZ13-NEXT:    vrepf %v2, %v0, 15800; SZ13-NEXT:    fiebra %f1, 7, %f1, 45801; SZ13-NEXT:    fiebra %f2, 7, %f2, 45802; SZ13-NEXT:    fiebra %f0, 7, %f0, 45803; SZ13-NEXT:    vmrhf %v0, %v0, %v25804; SZ13-NEXT:    vrepf %v1, %v1, 05805; SZ13-NEXT:    vmrhg %v24, %v0, %v15806; SZ13-NEXT:    br %r145807entry:5808  %b = load <3 x float>, ptr %a5809  %floor = call <3 x float> @llvm.experimental.constrained.floor.v3f32(5810                              <3 x float> %b,5811                              metadata !"fpexcept.strict") #05812  ret <3 x float> %floor5813}5814 5815define void @constrained_vector_floor_v3f64(ptr %a) #0 {5816; S390X-LABEL: constrained_vector_floor_v3f64:5817; S390X:       # %bb.0: # %entry5818; S390X-NEXT:    stmg %r13, %r15, 104(%r15)5819; S390X-NEXT:    .cfi_offset %r13, -565820; S390X-NEXT:    .cfi_offset %r14, -485821; S390X-NEXT:    .cfi_offset %r15, -405822; S390X-NEXT:    aghi %r15, -1845823; S390X-NEXT:    .cfi_def_cfa_offset 3445824; S390X-NEXT:    std %f8, 176(%r15) # 8-byte Spill5825; S390X-NEXT:    std %f9, 168(%r15) # 8-byte Spill5826; S390X-NEXT:    std %f10, 160(%r15) # 8-byte Spill5827; S390X-NEXT:    .cfi_offset %f8, -1685828; S390X-NEXT:    .cfi_offset %f9, -1765829; S390X-NEXT:    .cfi_offset %f10, -1845830; S390X-NEXT:    lgr %r13, %r25831; S390X-NEXT:    ld %f8, 0(%r2)5832; S390X-NEXT:    ld %f0, 16(%r2)5833; S390X-NEXT:    ld %f9, 8(%r2)5834; S390X-NEXT:    brasl %r14, floor@PLT5835; S390X-NEXT:    ldr %f10, %f05836; S390X-NEXT:    ldr %f0, %f95837; S390X-NEXT:    brasl %r14, floor@PLT5838; S390X-NEXT:    ldr %f9, %f05839; S390X-NEXT:    ldr %f0, %f85840; S390X-NEXT:    brasl %r14, floor@PLT5841; S390X-NEXT:    std %f0, 0(%r13)5842; S390X-NEXT:    std %f9, 8(%r13)5843; S390X-NEXT:    std %f10, 16(%r13)5844; S390X-NEXT:    ld %f8, 176(%r15) # 8-byte Reload5845; S390X-NEXT:    ld %f9, 168(%r15) # 8-byte Reload5846; S390X-NEXT:    ld %f10, 160(%r15) # 8-byte Reload5847; S390X-NEXT:    lmg %r13, %r15, 288(%r15)5848; S390X-NEXT:    br %r145849;5850; SZ13-LABEL: constrained_vector_floor_v3f64:5851; SZ13:       # %bb.0: # %entry5852; SZ13-NEXT:    vl %v0, 0(%r2), 45853; SZ13-NEXT:    ld %f1, 16(%r2)5854; SZ13-NEXT:    vfidb %v0, %v0, 4, 75855; SZ13-NEXT:    fidbra %f1, 7, %f1, 45856; SZ13-NEXT:    vst %v0, 0(%r2), 45857; SZ13-NEXT:    std %f1, 16(%r2)5858; SZ13-NEXT:    br %r145859entry:5860  %b = load <3 x double>, ptr %a5861  %floor = call <3 x double> @llvm.experimental.constrained.floor.v3f64(5862                          <3 x double> %b,5863                          metadata !"fpexcept.strict") #05864  store <3 x double> %floor, ptr %a5865  ret void5866}5867 5868define <1 x float> @constrained_vector_round_v1f32(ptr %a) #0 {5869; S390X-LABEL: constrained_vector_round_v1f32:5870; S390X:       # %bb.0: # %entry5871; S390X-NEXT:    stmg %r14, %r15, 112(%r15)5872; S390X-NEXT:    .cfi_offset %r14, -485873; S390X-NEXT:    .cfi_offset %r15, -405874; S390X-NEXT:    aghi %r15, -1605875; S390X-NEXT:    .cfi_def_cfa_offset 3205876; S390X-NEXT:    le %f0, 0(%r2)5877; S390X-NEXT:    brasl %r14, roundf@PLT5878; S390X-NEXT:    lmg %r14, %r15, 272(%r15)5879; S390X-NEXT:    br %r145880;5881; SZ13-LABEL: constrained_vector_round_v1f32:5882; SZ13:       # %bb.0: # %entry5883; SZ13-NEXT:    lde %f0, 0(%r2)5884; SZ13-NEXT:    fiebra %f0, 1, %f0, 45885; SZ13-NEXT:    vlr %v24, %v05886; SZ13-NEXT:    br %r145887entry:5888  %b = load <1 x float>, ptr %a5889  %round = call <1 x float> @llvm.experimental.constrained.round.v1f32(5890                               <1 x float> %b,5891                               metadata !"fpexcept.strict") #05892  ret <1 x float> %round5893}5894 5895define <2 x double> @constrained_vector_round_v2f64(ptr %a) #0 {5896; S390X-LABEL: constrained_vector_round_v2f64:5897; S390X:       # %bb.0: # %entry5898; S390X-NEXT:    stmg %r14, %r15, 112(%r15)5899; S390X-NEXT:    .cfi_offset %r14, -485900; S390X-NEXT:    .cfi_offset %r15, -405901; S390X-NEXT:    aghi %r15, -1765902; S390X-NEXT:    .cfi_def_cfa_offset 3365903; S390X-NEXT:    std %f8, 168(%r15) # 8-byte Spill5904; S390X-NEXT:    std %f9, 160(%r15) # 8-byte Spill5905; S390X-NEXT:    .cfi_offset %f8, -1685906; S390X-NEXT:    .cfi_offset %f9, -1765907; S390X-NEXT:    ld %f0, 8(%r2)5908; S390X-NEXT:    ld %f8, 0(%r2)5909; S390X-NEXT:    brasl %r14, round@PLT5910; S390X-NEXT:    ldr %f9, %f05911; S390X-NEXT:    ldr %f0, %f85912; S390X-NEXT:    brasl %r14, round@PLT5913; S390X-NEXT:    ldr %f2, %f95914; S390X-NEXT:    ld %f8, 168(%r15) # 8-byte Reload5915; S390X-NEXT:    ld %f9, 160(%r15) # 8-byte Reload5916; S390X-NEXT:    lmg %r14, %r15, 288(%r15)5917; S390X-NEXT:    br %r145918;5919; SZ13-LABEL: constrained_vector_round_v2f64:5920; SZ13:       # %bb.0: # %entry5921; SZ13-NEXT:    vl %v0, 0(%r2), 35922; SZ13-NEXT:    vfidb %v24, %v0, 4, 15923; SZ13-NEXT:    br %r145924entry:5925  %b = load <2 x double>, ptr %a5926  %round = call <2 x double> @llvm.experimental.constrained.round.v2f64(5927                                <2 x double> %b,5928                                metadata !"fpexcept.strict") #05929  ret <2 x double> %round5930}5931 5932define <3 x float> @constrained_vector_round_v3f32(ptr %a) #0 {5933; S390X-LABEL: constrained_vector_round_v3f32:5934; S390X:       # %bb.0: # %entry5935; S390X-NEXT:    stmg %r14, %r15, 112(%r15)5936; S390X-NEXT:    .cfi_offset %r14, -485937; S390X-NEXT:    .cfi_offset %r15, -405938; S390X-NEXT:    aghi %r15, -1845939; S390X-NEXT:    .cfi_def_cfa_offset 3445940; S390X-NEXT:    std %f8, 176(%r15) # 8-byte Spill5941; S390X-NEXT:    std %f9, 168(%r15) # 8-byte Spill5942; S390X-NEXT:    std %f10, 160(%r15) # 8-byte Spill5943; S390X-NEXT:    .cfi_offset %f8, -1685944; S390X-NEXT:    .cfi_offset %f9, -1765945; S390X-NEXT:    .cfi_offset %f10, -1845946; S390X-NEXT:    lg %r0, 0(%r2)5947; S390X-NEXT:    le %f0, 8(%r2)5948; S390X-NEXT:    risbg %r1, %r0, 0, 159, 05949; S390X-NEXT:    ldgr %f8, %r15950; S390X-NEXT:    sllg %r0, %r0, 325951; S390X-NEXT:    ldgr %f9, %r05952; S390X-NEXT:    brasl %r14, roundf@PLT5953; S390X-NEXT:    ler %f10, %f05954; S390X-NEXT:    ler %f0, %f95955; S390X-NEXT:    brasl %r14, roundf@PLT5956; S390X-NEXT:    ler %f9, %f05957; S390X-NEXT:    ler %f0, %f85958; S390X-NEXT:    brasl %r14, roundf@PLT5959; S390X-NEXT:    ler %f2, %f95960; S390X-NEXT:    ler %f4, %f105961; S390X-NEXT:    ld %f8, 176(%r15) # 8-byte Reload5962; S390X-NEXT:    ld %f9, 168(%r15) # 8-byte Reload5963; S390X-NEXT:    ld %f10, 160(%r15) # 8-byte Reload5964; S390X-NEXT:    lmg %r14, %r15, 296(%r15)5965; S390X-NEXT:    br %r145966;5967; SZ13-LABEL: constrained_vector_round_v3f32:5968; SZ13:       # %bb.0: # %entry5969; SZ13-NEXT:    vl %v0, 0(%r2), 45970; SZ13-NEXT:    vrepf %v1, %v0, 25971; SZ13-NEXT:    vrepf %v2, %v0, 15972; SZ13-NEXT:    fiebra %f1, 1, %f1, 45973; SZ13-NEXT:    fiebra %f2, 1, %f2, 45974; SZ13-NEXT:    fiebra %f0, 1, %f0, 45975; SZ13-NEXT:    vmrhf %v0, %v0, %v25976; SZ13-NEXT:    vrepf %v1, %v1, 05977; SZ13-NEXT:    vmrhg %v24, %v0, %v15978; SZ13-NEXT:    br %r145979entry:5980  %b = load <3 x float>, ptr %a5981  %round = call <3 x float> @llvm.experimental.constrained.round.v3f32(5982                              <3 x float> %b,5983                              metadata !"fpexcept.strict") #05984  ret <3 x float> %round5985}5986 5987 5988define void @constrained_vector_round_v3f64(ptr %a) #0 {5989; S390X-LABEL: constrained_vector_round_v3f64:5990; S390X:       # %bb.0: # %entry5991; S390X-NEXT:    stmg %r13, %r15, 104(%r15)5992; S390X-NEXT:    .cfi_offset %r13, -565993; S390X-NEXT:    .cfi_offset %r14, -485994; S390X-NEXT:    .cfi_offset %r15, -405995; S390X-NEXT:    aghi %r15, -1845996; S390X-NEXT:    .cfi_def_cfa_offset 3445997; S390X-NEXT:    std %f8, 176(%r15) # 8-byte Spill5998; S390X-NEXT:    std %f9, 168(%r15) # 8-byte Spill5999; S390X-NEXT:    std %f10, 160(%r15) # 8-byte Spill6000; S390X-NEXT:    .cfi_offset %f8, -1686001; S390X-NEXT:    .cfi_offset %f9, -1766002; S390X-NEXT:    .cfi_offset %f10, -1846003; S390X-NEXT:    lgr %r13, %r26004; S390X-NEXT:    ld %f8, 0(%r2)6005; S390X-NEXT:    ld %f0, 16(%r2)6006; S390X-NEXT:    ld %f9, 8(%r2)6007; S390X-NEXT:    brasl %r14, round@PLT6008; S390X-NEXT:    ldr %f10, %f06009; S390X-NEXT:    ldr %f0, %f96010; S390X-NEXT:    brasl %r14, round@PLT6011; S390X-NEXT:    ldr %f9, %f06012; S390X-NEXT:    ldr %f0, %f86013; S390X-NEXT:    brasl %r14, round@PLT6014; S390X-NEXT:    std %f0, 0(%r13)6015; S390X-NEXT:    std %f9, 8(%r13)6016; S390X-NEXT:    std %f10, 16(%r13)6017; S390X-NEXT:    ld %f8, 176(%r15) # 8-byte Reload6018; S390X-NEXT:    ld %f9, 168(%r15) # 8-byte Reload6019; S390X-NEXT:    ld %f10, 160(%r15) # 8-byte Reload6020; S390X-NEXT:    lmg %r13, %r15, 288(%r15)6021; S390X-NEXT:    br %r146022;6023; SZ13-LABEL: constrained_vector_round_v3f64:6024; SZ13:       # %bb.0: # %entry6025; SZ13-NEXT:    vl %v0, 0(%r2), 46026; SZ13-NEXT:    ld %f1, 16(%r2)6027; SZ13-NEXT:    vfidb %v0, %v0, 4, 16028; SZ13-NEXT:    fidbra %f1, 1, %f1, 46029; SZ13-NEXT:    vst %v0, 0(%r2), 46030; SZ13-NEXT:    std %f1, 16(%r2)6031; SZ13-NEXT:    br %r146032entry:6033  %b = load <3 x double>, ptr %a6034  %round = call <3 x double> @llvm.experimental.constrained.round.v3f64(6035                          <3 x double> %b,6036                          metadata !"fpexcept.strict") #06037  store <3 x double> %round, ptr %a6038  ret void6039}6040 6041define <1 x float> @constrained_vector_roundeven_v1f32(ptr %a) #0 {6042; S390X-LABEL: constrained_vector_roundeven_v1f32:6043; S390X:       # %bb.0: # %entry6044; S390X-NEXT:    stmg %r14, %r15, 112(%r15)6045; S390X-NEXT:    .cfi_offset %r14, -486046; S390X-NEXT:    .cfi_offset %r15, -406047; S390X-NEXT:    aghi %r15, -1606048; S390X-NEXT:    .cfi_def_cfa_offset 3206049; S390X-NEXT:    le %f0, 0(%r2)6050; S390X-NEXT:    brasl %r14, roundevenf@PLT6051; S390X-NEXT:    lmg %r14, %r15, 272(%r15)6052; S390X-NEXT:    br %r146053;6054; SZ13-LABEL: constrained_vector_roundeven_v1f32:6055; SZ13:       # %bb.0: # %entry6056; SZ13-NEXT:    lde %f0, 0(%r2)6057; SZ13-NEXT:    fiebra %f0, 4, %f0, 46058; SZ13-NEXT:    vlr %v24, %v06059; SZ13-NEXT:    br %r146060entry:6061  %b = load <1 x float>, ptr %a6062  %round = call <1 x float> @llvm.experimental.constrained.roundeven.v1f32(6063                               <1 x float> %b,6064                               metadata !"fpexcept.strict") #06065  ret <1 x float> %round6066}6067 6068define <2 x double> @constrained_vector_roundeven_v2f64(ptr %a) #0 {6069; S390X-LABEL: constrained_vector_roundeven_v2f64:6070; S390X:       # %bb.0: # %entry6071; S390X-NEXT:    stmg %r14, %r15, 112(%r15)6072; S390X-NEXT:    .cfi_offset %r14, -486073; S390X-NEXT:    .cfi_offset %r15, -406074; S390X-NEXT:    aghi %r15, -1766075; S390X-NEXT:    .cfi_def_cfa_offset 3366076; S390X-NEXT:    std %f8, 168(%r15) # 8-byte Spill6077; S390X-NEXT:    std %f9, 160(%r15) # 8-byte Spill6078; S390X-NEXT:    .cfi_offset %f8, -1686079; S390X-NEXT:    .cfi_offset %f9, -1766080; S390X-NEXT:    ld %f0, 8(%r2)6081; S390X-NEXT:    ld %f8, 0(%r2)6082; S390X-NEXT:    brasl %r14, roundeven@PLT6083; S390X-NEXT:    ldr %f9, %f06084; S390X-NEXT:    ldr %f0, %f86085; S390X-NEXT:    brasl %r14, roundeven@PLT6086; S390X-NEXT:    ldr %f2, %f96087; S390X-NEXT:    ld %f8, 168(%r15) # 8-byte Reload6088; S390X-NEXT:    ld %f9, 160(%r15) # 8-byte Reload6089; S390X-NEXT:    lmg %r14, %r15, 288(%r15)6090; S390X-NEXT:    br %r146091;6092; SZ13-LABEL: constrained_vector_roundeven_v2f64:6093; SZ13:       # %bb.0: # %entry6094; SZ13-NEXT:    vl %v0, 0(%r2), 36095; SZ13-NEXT:    vfidb %v24, %v0, 4, 46096; SZ13-NEXT:    br %r146097entry:6098  %b = load <2 x double>, ptr %a6099  %round = call <2 x double> @llvm.experimental.constrained.roundeven.v2f64(6100                                <2 x double> %b,6101                                metadata !"fpexcept.strict") #06102  ret <2 x double> %round6103}6104 6105define <3 x float> @constrained_vector_roundeven_v3f32(ptr %a) #0 {6106; S390X-LABEL: constrained_vector_roundeven_v3f32:6107; S390X:       # %bb.0: # %entry6108; S390X-NEXT:    stmg %r14, %r15, 112(%r15)6109; S390X-NEXT:    .cfi_offset %r14, -486110; S390X-NEXT:    .cfi_offset %r15, -406111; S390X-NEXT:    aghi %r15, -1846112; S390X-NEXT:    .cfi_def_cfa_offset 3446113; S390X-NEXT:    std %f8, 176(%r15) # 8-byte Spill6114; S390X-NEXT:    std %f9, 168(%r15) # 8-byte Spill6115; S390X-NEXT:    std %f10, 160(%r15) # 8-byte Spill6116; S390X-NEXT:    .cfi_offset %f8, -1686117; S390X-NEXT:    .cfi_offset %f9, -1766118; S390X-NEXT:    .cfi_offset %f10, -1846119; S390X-NEXT:    lg %r0, 0(%r2)6120; S390X-NEXT:    le %f0, 8(%r2)6121; S390X-NEXT:    risbg %r1, %r0, 0, 159, 06122; S390X-NEXT:    ldgr %f8, %r16123; S390X-NEXT:    sllg %r0, %r0, 326124; S390X-NEXT:    ldgr %f9, %r06125; S390X-NEXT:    brasl %r14, roundevenf@PLT6126; S390X-NEXT:    ler %f10, %f06127; S390X-NEXT:    ler %f0, %f96128; S390X-NEXT:    brasl %r14, roundevenf@PLT6129; S390X-NEXT:    ler %f9, %f06130; S390X-NEXT:    ler %f0, %f86131; S390X-NEXT:    brasl %r14, roundevenf@PLT6132; S390X-NEXT:    ler %f2, %f96133; S390X-NEXT:    ler %f4, %f106134; S390X-NEXT:    ld %f8, 176(%r15) # 8-byte Reload6135; S390X-NEXT:    ld %f9, 168(%r15) # 8-byte Reload6136; S390X-NEXT:    ld %f10, 160(%r15) # 8-byte Reload6137; S390X-NEXT:    lmg %r14, %r15, 296(%r15)6138; S390X-NEXT:    br %r146139;6140; SZ13-LABEL: constrained_vector_roundeven_v3f32:6141; SZ13:       # %bb.0: # %entry6142; SZ13-NEXT:    vl %v0, 0(%r2), 46143; SZ13-NEXT:    vrepf %v1, %v0, 26144; SZ13-NEXT:    vrepf %v2, %v0, 16145; SZ13-NEXT:    fiebra %f1, 4, %f1, 46146; SZ13-NEXT:    fiebra %f2, 4, %f2, 46147; SZ13-NEXT:    fiebra %f0, 4, %f0, 46148; SZ13-NEXT:    vmrhf %v0, %v0, %v26149; SZ13-NEXT:    vrepf %v1, %v1, 06150; SZ13-NEXT:    vmrhg %v24, %v0, %v16151; SZ13-NEXT:    br %r146152entry:6153  %b = load <3 x float>, ptr %a6154  %round = call <3 x float> @llvm.experimental.constrained.roundeven.v3f32(6155                              <3 x float> %b,6156                              metadata !"fpexcept.strict") #06157  ret <3 x float> %round6158}6159 6160define void @constrained_vector_roundeven_v3f64(ptr %a) #0 {6161; S390X-LABEL: constrained_vector_roundeven_v3f64:6162; S390X:       # %bb.0: # %entry6163; S390X-NEXT:    stmg %r13, %r15, 104(%r15)6164; S390X-NEXT:    .cfi_offset %r13, -566165; S390X-NEXT:    .cfi_offset %r14, -486166; S390X-NEXT:    .cfi_offset %r15, -406167; S390X-NEXT:    aghi %r15, -1846168; S390X-NEXT:    .cfi_def_cfa_offset 3446169; S390X-NEXT:    std %f8, 176(%r15) # 8-byte Spill6170; S390X-NEXT:    std %f9, 168(%r15) # 8-byte Spill6171; S390X-NEXT:    std %f10, 160(%r15) # 8-byte Spill6172; S390X-NEXT:    .cfi_offset %f8, -1686173; S390X-NEXT:    .cfi_offset %f9, -1766174; S390X-NEXT:    .cfi_offset %f10, -1846175; S390X-NEXT:    lgr %r13, %r26176; S390X-NEXT:    ld %f8, 0(%r2)6177; S390X-NEXT:    ld %f0, 16(%r2)6178; S390X-NEXT:    ld %f9, 8(%r2)6179; S390X-NEXT:    brasl %r14, roundeven@PLT6180; S390X-NEXT:    ldr %f10, %f06181; S390X-NEXT:    ldr %f0, %f96182; S390X-NEXT:    brasl %r14, roundeven@PLT6183; S390X-NEXT:    ldr %f9, %f06184; S390X-NEXT:    ldr %f0, %f86185; S390X-NEXT:    brasl %r14, roundeven@PLT6186; S390X-NEXT:    std %f0, 0(%r13)6187; S390X-NEXT:    std %f9, 8(%r13)6188; S390X-NEXT:    std %f10, 16(%r13)6189; S390X-NEXT:    ld %f8, 176(%r15) # 8-byte Reload6190; S390X-NEXT:    ld %f9, 168(%r15) # 8-byte Reload6191; S390X-NEXT:    ld %f10, 160(%r15) # 8-byte Reload6192; S390X-NEXT:    lmg %r13, %r15, 288(%r15)6193; S390X-NEXT:    br %r146194;6195; SZ13-LABEL: constrained_vector_roundeven_v3f64:6196; SZ13:       # %bb.0: # %entry6197; SZ13-NEXT:    vl %v0, 0(%r2), 46198; SZ13-NEXT:    ld %f1, 16(%r2)6199; SZ13-NEXT:    vfidb %v0, %v0, 4, 46200; SZ13-NEXT:    fidbra %f1, 4, %f1, 46201; SZ13-NEXT:    vst %v0, 0(%r2), 46202; SZ13-NEXT:    std %f1, 16(%r2)6203; SZ13-NEXT:    br %r146204entry:6205  %b = load <3 x double>, ptr %a6206  %round = call <3 x double> @llvm.experimental.constrained.roundeven.v3f64(6207                          <3 x double> %b,6208                          metadata !"fpexcept.strict") #06209  store <3 x double> %round, ptr %a6210  ret void6211}6212 6213define <1 x float> @constrained_vector_trunc_v1f32(ptr %a) #0 {6214; S390X-LABEL: constrained_vector_trunc_v1f32:6215; S390X:       # %bb.0: # %entry6216; S390X-NEXT:    stmg %r14, %r15, 112(%r15)6217; S390X-NEXT:    .cfi_offset %r14, -486218; S390X-NEXT:    .cfi_offset %r15, -406219; S390X-NEXT:    aghi %r15, -1606220; S390X-NEXT:    .cfi_def_cfa_offset 3206221; S390X-NEXT:    le %f0, 0(%r2)6222; S390X-NEXT:    brasl %r14, truncf@PLT6223; S390X-NEXT:    lmg %r14, %r15, 272(%r15)6224; S390X-NEXT:    br %r146225;6226; SZ13-LABEL: constrained_vector_trunc_v1f32:6227; SZ13:       # %bb.0: # %entry6228; SZ13-NEXT:    lde %f0, 0(%r2)6229; SZ13-NEXT:    fiebra %f0, 5, %f0, 46230; SZ13-NEXT:    vlr %v24, %v06231; SZ13-NEXT:    br %r146232entry:6233  %b = load <1 x float>, ptr %a6234  %trunc = call <1 x float> @llvm.experimental.constrained.trunc.v1f32(6235                               <1 x float> %b,6236                               metadata !"fpexcept.strict") #06237  ret <1 x float> %trunc6238}6239 6240define <2 x double> @constrained_vector_trunc_v2f64(ptr %a) #0 {6241; S390X-LABEL: constrained_vector_trunc_v2f64:6242; S390X:       # %bb.0: # %entry6243; S390X-NEXT:    stmg %r14, %r15, 112(%r15)6244; S390X-NEXT:    .cfi_offset %r14, -486245; S390X-NEXT:    .cfi_offset %r15, -406246; S390X-NEXT:    aghi %r15, -1766247; S390X-NEXT:    .cfi_def_cfa_offset 3366248; S390X-NEXT:    std %f8, 168(%r15) # 8-byte Spill6249; S390X-NEXT:    std %f9, 160(%r15) # 8-byte Spill6250; S390X-NEXT:    .cfi_offset %f8, -1686251; S390X-NEXT:    .cfi_offset %f9, -1766252; S390X-NEXT:    ld %f0, 8(%r2)6253; S390X-NEXT:    ld %f8, 0(%r2)6254; S390X-NEXT:    brasl %r14, trunc@PLT6255; S390X-NEXT:    ldr %f9, %f06256; S390X-NEXT:    ldr %f0, %f86257; S390X-NEXT:    brasl %r14, trunc@PLT6258; S390X-NEXT:    ldr %f2, %f96259; S390X-NEXT:    ld %f8, 168(%r15) # 8-byte Reload6260; S390X-NEXT:    ld %f9, 160(%r15) # 8-byte Reload6261; S390X-NEXT:    lmg %r14, %r15, 288(%r15)6262; S390X-NEXT:    br %r146263;6264; SZ13-LABEL: constrained_vector_trunc_v2f64:6265; SZ13:       # %bb.0: # %entry6266; SZ13-NEXT:    vl %v0, 0(%r2), 36267; SZ13-NEXT:    vfidb %v24, %v0, 4, 56268; SZ13-NEXT:    br %r146269entry:6270  %b = load <2 x double>, ptr %a6271  %trunc = call <2 x double> @llvm.experimental.constrained.trunc.v2f64(6272                                <2 x double> %b,6273                                metadata !"fpexcept.strict") #06274  ret <2 x double> %trunc6275}6276 6277define <3 x float> @constrained_vector_trunc_v3f32(ptr %a) #0 {6278; S390X-LABEL: constrained_vector_trunc_v3f32:6279; S390X:       # %bb.0: # %entry6280; S390X-NEXT:    stmg %r14, %r15, 112(%r15)6281; S390X-NEXT:    .cfi_offset %r14, -486282; S390X-NEXT:    .cfi_offset %r15, -406283; S390X-NEXT:    aghi %r15, -1846284; S390X-NEXT:    .cfi_def_cfa_offset 3446285; S390X-NEXT:    std %f8, 176(%r15) # 8-byte Spill6286; S390X-NEXT:    std %f9, 168(%r15) # 8-byte Spill6287; S390X-NEXT:    std %f10, 160(%r15) # 8-byte Spill6288; S390X-NEXT:    .cfi_offset %f8, -1686289; S390X-NEXT:    .cfi_offset %f9, -1766290; S390X-NEXT:    .cfi_offset %f10, -1846291; S390X-NEXT:    lg %r0, 0(%r2)6292; S390X-NEXT:    le %f0, 8(%r2)6293; S390X-NEXT:    risbg %r1, %r0, 0, 159, 06294; S390X-NEXT:    ldgr %f8, %r16295; S390X-NEXT:    sllg %r0, %r0, 326296; S390X-NEXT:    ldgr %f9, %r06297; S390X-NEXT:    brasl %r14, truncf@PLT6298; S390X-NEXT:    ler %f10, %f06299; S390X-NEXT:    ler %f0, %f96300; S390X-NEXT:    brasl %r14, truncf@PLT6301; S390X-NEXT:    ler %f9, %f06302; S390X-NEXT:    ler %f0, %f86303; S390X-NEXT:    brasl %r14, truncf@PLT6304; S390X-NEXT:    ler %f2, %f96305; S390X-NEXT:    ler %f4, %f106306; S390X-NEXT:    ld %f8, 176(%r15) # 8-byte Reload6307; S390X-NEXT:    ld %f9, 168(%r15) # 8-byte Reload6308; S390X-NEXT:    ld %f10, 160(%r15) # 8-byte Reload6309; S390X-NEXT:    lmg %r14, %r15, 296(%r15)6310; S390X-NEXT:    br %r146311;6312; SZ13-LABEL: constrained_vector_trunc_v3f32:6313; SZ13:       # %bb.0: # %entry6314; SZ13-NEXT:    vl %v0, 0(%r2), 46315; SZ13-NEXT:    vrepf %v1, %v0, 26316; SZ13-NEXT:    vrepf %v2, %v0, 16317; SZ13-NEXT:    fiebra %f1, 5, %f1, 46318; SZ13-NEXT:    fiebra %f2, 5, %f2, 46319; SZ13-NEXT:    fiebra %f0, 5, %f0, 46320; SZ13-NEXT:    vmrhf %v0, %v0, %v26321; SZ13-NEXT:    vrepf %v1, %v1, 06322; SZ13-NEXT:    vmrhg %v24, %v0, %v16323; SZ13-NEXT:    br %r146324entry:6325  %b = load <3 x float>, ptr %a6326  %trunc = call <3 x float> @llvm.experimental.constrained.trunc.v3f32(6327                              <3 x float> %b,6328                              metadata !"fpexcept.strict") #06329  ret <3 x float> %trunc6330}6331 6332define void @constrained_vector_trunc_v3f64(ptr %a) #0 {6333; S390X-LABEL: constrained_vector_trunc_v3f64:6334; S390X:       # %bb.0: # %entry6335; S390X-NEXT:    stmg %r13, %r15, 104(%r15)6336; S390X-NEXT:    .cfi_offset %r13, -566337; S390X-NEXT:    .cfi_offset %r14, -486338; S390X-NEXT:    .cfi_offset %r15, -406339; S390X-NEXT:    aghi %r15, -1846340; S390X-NEXT:    .cfi_def_cfa_offset 3446341; S390X-NEXT:    std %f8, 176(%r15) # 8-byte Spill6342; S390X-NEXT:    std %f9, 168(%r15) # 8-byte Spill6343; S390X-NEXT:    std %f10, 160(%r15) # 8-byte Spill6344; S390X-NEXT:    .cfi_offset %f8, -1686345; S390X-NEXT:    .cfi_offset %f9, -1766346; S390X-NEXT:    .cfi_offset %f10, -1846347; S390X-NEXT:    lgr %r13, %r26348; S390X-NEXT:    ld %f8, 0(%r2)6349; S390X-NEXT:    ld %f0, 16(%r2)6350; S390X-NEXT:    ld %f9, 8(%r2)6351; S390X-NEXT:    brasl %r14, trunc@PLT6352; S390X-NEXT:    ldr %f10, %f06353; S390X-NEXT:    ldr %f0, %f96354; S390X-NEXT:    brasl %r14, trunc@PLT6355; S390X-NEXT:    ldr %f9, %f06356; S390X-NEXT:    ldr %f0, %f86357; S390X-NEXT:    brasl %r14, trunc@PLT6358; S390X-NEXT:    std %f0, 0(%r13)6359; S390X-NEXT:    std %f9, 8(%r13)6360; S390X-NEXT:    std %f10, 16(%r13)6361; S390X-NEXT:    ld %f8, 176(%r15) # 8-byte Reload6362; S390X-NEXT:    ld %f9, 168(%r15) # 8-byte Reload6363; S390X-NEXT:    ld %f10, 160(%r15) # 8-byte Reload6364; S390X-NEXT:    lmg %r13, %r15, 288(%r15)6365; S390X-NEXT:    br %r146366;6367; SZ13-LABEL: constrained_vector_trunc_v3f64:6368; SZ13:       # %bb.0: # %entry6369; SZ13-NEXT:    vl %v0, 0(%r2), 46370; SZ13-NEXT:    ld %f1, 16(%r2)6371; SZ13-NEXT:    vfidb %v0, %v0, 4, 56372; SZ13-NEXT:    fidbra %f1, 5, %f1, 46373; SZ13-NEXT:    vst %v0, 0(%r2), 46374; SZ13-NEXT:    std %f1, 16(%r2)6375; SZ13-NEXT:    br %r146376entry:6377  %b = load <3 x double>, ptr %a6378  %trunc = call <3 x double> @llvm.experimental.constrained.trunc.v3f64(6379                          <3 x double> %b,6380                          metadata !"fpexcept.strict") #06381  store <3 x double> %trunc, ptr %a6382  ret void6383}6384 6385define <1 x float> @constrained_vector_tan_v1f32() #0 {6386; S390X-LABEL: constrained_vector_tan_v1f32:6387; S390X:       # %bb.0: # %entry6388; S390X-NEXT:    stmg %r14, %r15, 112(%r15)6389; S390X-NEXT:    .cfi_offset %r14, -486390; S390X-NEXT:    .cfi_offset %r15, -406391; S390X-NEXT:    aghi %r15, -1606392; S390X-NEXT:    .cfi_def_cfa_offset 3206393; S390X-NEXT:    larl %r1, .LCPI123_06394; S390X-NEXT:    le %f0, 0(%r1)6395; S390X-NEXT:    brasl %r14, tanf@PLT6396; S390X-NEXT:    lmg %r14, %r15, 272(%r15)6397; S390X-NEXT:    br %r146398;6399; SZ13-LABEL: constrained_vector_tan_v1f32:6400; SZ13:       # %bb.0: # %entry6401; SZ13-NEXT:    stmg %r14, %r15, 112(%r15)6402; SZ13-NEXT:    .cfi_offset %r14, -486403; SZ13-NEXT:    .cfi_offset %r15, -406404; SZ13-NEXT:    aghi %r15, -1606405; SZ13-NEXT:    .cfi_def_cfa_offset 3206406; SZ13-NEXT:    larl %r1, .LCPI123_06407; SZ13-NEXT:    lde %f0, 0(%r1)6408; SZ13-NEXT:    brasl %r14, tanf@PLT6409; SZ13-NEXT:    # kill: def $f0s killed $f0s def $v06410; SZ13-NEXT:    vlr %v24, %v06411; SZ13-NEXT:    lmg %r14, %r15, 272(%r15)6412; SZ13-NEXT:    br %r146413entry:6414  %tan = call <1 x float> @llvm.experimental.constrained.tan.v1f32(6415                             <1 x float> <float 42.0>,6416                             metadata !"round.dynamic",6417                             metadata !"fpexcept.strict") #06418  ret <1 x float> %tan6419}6420 6421define <2 x double> @constrained_vector_tan_v2f64() #0 {6422; S390X-LABEL: constrained_vector_tan_v2f64:6423; S390X:       # %bb.0: # %entry6424; S390X-NEXT:    stmg %r14, %r15, 112(%r15)6425; S390X-NEXT:    .cfi_offset %r14, -486426; S390X-NEXT:    .cfi_offset %r15, -406427; S390X-NEXT:    aghi %r15, -1686428; S390X-NEXT:    .cfi_def_cfa_offset 3286429; S390X-NEXT:    std %f8, 160(%r15) # 8-byte Spill6430; S390X-NEXT:    .cfi_offset %f8, -1686431; S390X-NEXT:    larl %r1, .LCPI124_06432; S390X-NEXT:    ld %f0, 0(%r1)6433; S390X-NEXT:    brasl %r14, tan@PLT6434; S390X-NEXT:    larl %r1, .LCPI124_16435; S390X-NEXT:    ld %f1, 0(%r1)6436; S390X-NEXT:    ldr %f8, %f06437; S390X-NEXT:    ldr %f0, %f16438; S390X-NEXT:    brasl %r14, tan@PLT6439; S390X-NEXT:    ldr %f2, %f86440; S390X-NEXT:    ld %f8, 160(%r15) # 8-byte Reload6441; S390X-NEXT:    lmg %r14, %r15, 280(%r15)6442; S390X-NEXT:    br %r146443;6444; SZ13-LABEL: constrained_vector_tan_v2f64:6445; SZ13:       # %bb.0: # %entry6446; SZ13-NEXT:    stmg %r14, %r15, 112(%r15)6447; SZ13-NEXT:    .cfi_offset %r14, -486448; SZ13-NEXT:    .cfi_offset %r15, -406449; SZ13-NEXT:    aghi %r15, -1766450; SZ13-NEXT:    .cfi_def_cfa_offset 3366451; SZ13-NEXT:    larl %r1, .LCPI124_06452; SZ13-NEXT:    ld %f0, 0(%r1)6453; SZ13-NEXT:    brasl %r14, tan@PLT6454; SZ13-NEXT:    larl %r1, .LCPI124_16455; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v06456; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill6457; SZ13-NEXT:    ld %f0, 0(%r1)6458; SZ13-NEXT:    brasl %r14, tan@PLT6459; SZ13-NEXT:    vl %v1, 160(%r15), 3 # 16-byte Reload6460; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v06461; SZ13-NEXT:    vmrhg %v24, %v0, %v16462; SZ13-NEXT:    lmg %r14, %r15, 288(%r15)6463; SZ13-NEXT:    br %r146464entry:6465  %tan = call <2 x double> @llvm.experimental.constrained.tan.v2f64(6466                             <2 x double> <double 42.0, double 42.1>,6467                             metadata !"round.dynamic",6468                             metadata !"fpexcept.strict") #06469  ret <2 x double> %tan6470}6471 6472define <3 x float> @constrained_vector_tan_v3f32() #0 {6473; S390X-LABEL: constrained_vector_tan_v3f32:6474; S390X:       # %bb.0: # %entry6475; S390X-NEXT:    stmg %r14, %r15, 112(%r15)6476; S390X-NEXT:    .cfi_offset %r14, -486477; S390X-NEXT:    .cfi_offset %r15, -406478; S390X-NEXT:    aghi %r15, -1766479; S390X-NEXT:    .cfi_def_cfa_offset 3366480; S390X-NEXT:    std %f8, 168(%r15) # 8-byte Spill6481; S390X-NEXT:    std %f9, 160(%r15) # 8-byte Spill6482; S390X-NEXT:    .cfi_offset %f8, -1686483; S390X-NEXT:    .cfi_offset %f9, -1766484; S390X-NEXT:    larl %r1, .LCPI125_06485; S390X-NEXT:    le %f0, 0(%r1)6486; S390X-NEXT:    brasl %r14, tanf@PLT6487; S390X-NEXT:    larl %r1, .LCPI125_16488; S390X-NEXT:    le %f1, 0(%r1)6489; S390X-NEXT:    ler %f8, %f06490; S390X-NEXT:    ler %f0, %f16491; S390X-NEXT:    brasl %r14, tanf@PLT6492; S390X-NEXT:    larl %r1, .LCPI125_26493; S390X-NEXT:    le %f1, 0(%r1)6494; S390X-NEXT:    ler %f9, %f06495; S390X-NEXT:    ler %f0, %f16496; S390X-NEXT:    brasl %r14, tanf@PLT6497; S390X-NEXT:    ler %f2, %f96498; S390X-NEXT:    ler %f4, %f86499; S390X-NEXT:    ld %f8, 168(%r15) # 8-byte Reload6500; S390X-NEXT:    ld %f9, 160(%r15) # 8-byte Reload6501; S390X-NEXT:    lmg %r14, %r15, 288(%r15)6502; S390X-NEXT:    br %r146503;6504; SZ13-LABEL: constrained_vector_tan_v3f32:6505; SZ13:       # %bb.0: # %entry6506; SZ13-NEXT:    stmg %r14, %r15, 112(%r15)6507; SZ13-NEXT:    .cfi_offset %r14, -486508; SZ13-NEXT:    .cfi_offset %r15, -406509; SZ13-NEXT:    aghi %r15, -1926510; SZ13-NEXT:    .cfi_def_cfa_offset 3526511; SZ13-NEXT:    larl %r1, .LCPI125_06512; SZ13-NEXT:    lde %f0, 0(%r1)6513; SZ13-NEXT:    brasl %r14, tanf@PLT6514; SZ13-NEXT:    larl %r1, .LCPI125_16515; SZ13-NEXT:    # kill: def $f0s killed $f0s def $v06516; SZ13-NEXT:    vst %v0, 176(%r15), 3 # 16-byte Spill6517; SZ13-NEXT:    lde %f0, 0(%r1)6518; SZ13-NEXT:    brasl %r14, tanf@PLT6519; SZ13-NEXT:    larl %r1, .LCPI125_26520; SZ13-NEXT:    # kill: def $f0s killed $f0s def $v06521; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill6522; SZ13-NEXT:    lde %f0, 0(%r1)6523; SZ13-NEXT:    brasl %r14, tanf@PLT6524; SZ13-NEXT:    vl %v1, 160(%r15), 3 # 16-byte Reload6525; SZ13-NEXT:    # kill: def $f0s killed $f0s def $v06526; SZ13-NEXT:    vmrhf %v0, %v1, %v06527; SZ13-NEXT:    vl %v1, 176(%r15), 3 # 16-byte Reload6528; SZ13-NEXT:    vrepf %v1, %v1, 06529; SZ13-NEXT:    vmrhg %v24, %v0, %v16530; SZ13-NEXT:    lmg %r14, %r15, 304(%r15)6531; SZ13-NEXT:    br %r146532entry:6533  %tan = call <3 x float> @llvm.experimental.constrained.tan.v3f32(6534                              <3 x float> <float 42.0, float 43.0, float 44.0>,6535                              metadata !"round.dynamic",6536                              metadata !"fpexcept.strict") #06537  ret <3 x float> %tan6538}6539 6540define void @constrained_vector_tan_v3f64(ptr %a) #0 {6541; S390X-LABEL: constrained_vector_tan_v3f64:6542; S390X:       # %bb.0: # %entry6543; S390X-NEXT:    stmg %r13, %r15, 104(%r15)6544; S390X-NEXT:    .cfi_offset %r13, -566545; S390X-NEXT:    .cfi_offset %r14, -486546; S390X-NEXT:    .cfi_offset %r15, -406547; S390X-NEXT:    aghi %r15, -1846548; S390X-NEXT:    .cfi_def_cfa_offset 3446549; S390X-NEXT:    std %f8, 176(%r15) # 8-byte Spill6550; S390X-NEXT:    std %f9, 168(%r15) # 8-byte Spill6551; S390X-NEXT:    std %f10, 160(%r15) # 8-byte Spill6552; S390X-NEXT:    .cfi_offset %f8, -1686553; S390X-NEXT:    .cfi_offset %f9, -1766554; S390X-NEXT:    .cfi_offset %f10, -1846555; S390X-NEXT:    lgr %r13, %r26556; S390X-NEXT:    ld %f8, 0(%r2)6557; S390X-NEXT:    ld %f0, 16(%r2)6558; S390X-NEXT:    ld %f9, 8(%r2)6559; S390X-NEXT:    brasl %r14, tan@PLT6560; S390X-NEXT:    ldr %f10, %f06561; S390X-NEXT:    ldr %f0, %f96562; S390X-NEXT:    brasl %r14, tan@PLT6563; S390X-NEXT:    ldr %f9, %f06564; S390X-NEXT:    ldr %f0, %f86565; S390X-NEXT:    brasl %r14, tan@PLT6566; S390X-NEXT:    std %f0, 0(%r13)6567; S390X-NEXT:    std %f9, 8(%r13)6568; S390X-NEXT:    std %f10, 16(%r13)6569; S390X-NEXT:    ld %f8, 176(%r15) # 8-byte Reload6570; S390X-NEXT:    ld %f9, 168(%r15) # 8-byte Reload6571; S390X-NEXT:    ld %f10, 160(%r15) # 8-byte Reload6572; S390X-NEXT:    lmg %r13, %r15, 288(%r15)6573; S390X-NEXT:    br %r146574;6575; SZ13-LABEL: constrained_vector_tan_v3f64:6576; SZ13:       # %bb.0: # %entry6577; SZ13-NEXT:    stmg %r13, %r15, 104(%r15)6578; SZ13-NEXT:    .cfi_offset %r13, -566579; SZ13-NEXT:    .cfi_offset %r14, -486580; SZ13-NEXT:    .cfi_offset %r15, -406581; SZ13-NEXT:    aghi %r15, -2006582; SZ13-NEXT:    .cfi_def_cfa_offset 3606583; SZ13-NEXT:    std %f8, 192(%r15) # 8-byte Spill6584; SZ13-NEXT:    .cfi_offset %f8, -1686585; SZ13-NEXT:    vl %v0, 0(%r2), 46586; SZ13-NEXT:    ld %f8, 16(%r2)6587; SZ13-NEXT:    lgr %r13, %r26588; SZ13-NEXT:    vst %v0, 176(%r15), 3 # 16-byte Spill6589; SZ13-NEXT:    # kill: def $f0d killed $f0d killed $v06590; SZ13-NEXT:    brasl %r14, tan@PLT6591; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v06592; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill6593; SZ13-NEXT:    vl %v0, 176(%r15), 3 # 16-byte Reload6594; SZ13-NEXT:    vrepg %v0, %v0, 16595; SZ13-NEXT:    # kill: def $f0d killed $f0d killed $v06596; SZ13-NEXT:    brasl %r14, tan@PLT6597; SZ13-NEXT:    vl %v1, 160(%r15), 3 # 16-byte Reload6598; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v06599; SZ13-NEXT:    vmrhg %v0, %v1, %v06600; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill6601; SZ13-NEXT:    ldr %f0, %f86602; SZ13-NEXT:    brasl %r14, tan@PLT6603; SZ13-NEXT:    mvc 0(16,%r13), 160(%r15) # 16-byte Folded Reload6604; SZ13-NEXT:    ld %f8, 192(%r15) # 8-byte Reload6605; SZ13-NEXT:    std %f0, 16(%r13)6606; SZ13-NEXT:    lmg %r13, %r15, 304(%r15)6607; SZ13-NEXT:    br %r146608entry:6609  %b = load <3 x double>, ptr %a6610  %tan = call <3 x double> @llvm.experimental.constrained.tan.v3f64(6611                          <3 x double> %b,6612                          metadata !"round.dynamic",6613                          metadata !"fpexcept.strict") #06614  store <3 x double> %tan, ptr %a6615  ret void6616}6617 6618define <4 x double> @constrained_vector_tan_v4f64() #0 {6619; S390X-LABEL: constrained_vector_tan_v4f64:6620; S390X:       # %bb.0: # %entry6621; S390X-NEXT:    stmg %r14, %r15, 112(%r15)6622; S390X-NEXT:    .cfi_offset %r14, -486623; S390X-NEXT:    .cfi_offset %r15, -406624; S390X-NEXT:    aghi %r15, -1846625; S390X-NEXT:    .cfi_def_cfa_offset 3446626; S390X-NEXT:    std %f8, 176(%r15) # 8-byte Spill6627; S390X-NEXT:    std %f9, 168(%r15) # 8-byte Spill6628; S390X-NEXT:    std %f10, 160(%r15) # 8-byte Spill6629; S390X-NEXT:    .cfi_offset %f8, -1686630; S390X-NEXT:    .cfi_offset %f9, -1766631; S390X-NEXT:    .cfi_offset %f10, -1846632; S390X-NEXT:    larl %r1, .LCPI127_06633; S390X-NEXT:    ld %f0, 0(%r1)6634; S390X-NEXT:    brasl %r14, tan@PLT6635; S390X-NEXT:    larl %r1, .LCPI127_16636; S390X-NEXT:    ld %f1, 0(%r1)6637; S390X-NEXT:    ldr %f8, %f06638; S390X-NEXT:    ldr %f0, %f16639; S390X-NEXT:    brasl %r14, tan@PLT6640; S390X-NEXT:    larl %r1, .LCPI127_26641; S390X-NEXT:    ld %f1, 0(%r1)6642; S390X-NEXT:    ldr %f9, %f06643; S390X-NEXT:    ldr %f0, %f16644; S390X-NEXT:    brasl %r14, tan@PLT6645; S390X-NEXT:    larl %r1, .LCPI127_36646; S390X-NEXT:    ld %f1, 0(%r1)6647; S390X-NEXT:    ldr %f10, %f06648; S390X-NEXT:    ldr %f0, %f16649; S390X-NEXT:    brasl %r14, tan@PLT6650; S390X-NEXT:    ldr %f2, %f106651; S390X-NEXT:    ldr %f4, %f96652; S390X-NEXT:    ldr %f6, %f86653; S390X-NEXT:    ld %f8, 176(%r15) # 8-byte Reload6654; S390X-NEXT:    ld %f9, 168(%r15) # 8-byte Reload6655; S390X-NEXT:    ld %f10, 160(%r15) # 8-byte Reload6656; S390X-NEXT:    lmg %r14, %r15, 296(%r15)6657; S390X-NEXT:    br %r146658;6659; SZ13-LABEL: constrained_vector_tan_v4f64:6660; SZ13:       # %bb.0: # %entry6661; SZ13-NEXT:    stmg %r14, %r15, 112(%r15)6662; SZ13-NEXT:    .cfi_offset %r14, -486663; SZ13-NEXT:    .cfi_offset %r15, -406664; SZ13-NEXT:    aghi %r15, -1926665; SZ13-NEXT:    .cfi_def_cfa_offset 3526666; SZ13-NEXT:    larl %r1, .LCPI127_06667; SZ13-NEXT:    ld %f0, 0(%r1)6668; SZ13-NEXT:    brasl %r14, tan@PLT6669; SZ13-NEXT:    larl %r1, .LCPI127_16670; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v06671; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill6672; SZ13-NEXT:    ld %f0, 0(%r1)6673; SZ13-NEXT:    brasl %r14, tan@PLT6674; SZ13-NEXT:    vl %v1, 160(%r15), 3 # 16-byte Reload6675; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v06676; SZ13-NEXT:    vmrhg %v0, %v0, %v16677; SZ13-NEXT:    larl %r1, .LCPI127_26678; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill6679; SZ13-NEXT:    ld %f0, 0(%r1)6680; SZ13-NEXT:    brasl %r14, tan@PLT6681; SZ13-NEXT:    larl %r1, .LCPI127_36682; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v06683; SZ13-NEXT:    vst %v0, 176(%r15), 3 # 16-byte Spill6684; SZ13-NEXT:    ld %f0, 0(%r1)6685; SZ13-NEXT:    brasl %r14, tan@PLT6686; SZ13-NEXT:    vl %v1, 176(%r15), 3 # 16-byte Reload6687; SZ13-NEXT:    vl %v24, 160(%r15), 3 # 16-byte Reload6688; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v06689; SZ13-NEXT:    vmrhg %v26, %v0, %v16690; SZ13-NEXT:    lmg %r14, %r15, 304(%r15)6691; SZ13-NEXT:    br %r146692entry:6693  %tan = call <4 x double> @llvm.experimental.constrained.tan.v4f64(6694                             <4 x double> <double 42.0, double 42.1,6695                                           double 42.2, double 42.3>,6696                             metadata !"round.dynamic",6697                             metadata !"fpexcept.strict") #06698  ret <4 x double> %tan6699}6700 6701define <1 x float> @constrained_vector_atan2_v1f32() #0 {6702; S390X-LABEL: constrained_vector_atan2_v1f32:6703; S390X:       # %bb.0: # %entry6704; S390X-NEXT:    stmg %r14, %r15, 112(%r15)6705; S390X-NEXT:    .cfi_offset %r14, -486706; S390X-NEXT:    .cfi_offset %r15, -406707; S390X-NEXT:    aghi %r15, -1606708; S390X-NEXT:    .cfi_def_cfa_offset 3206709; S390X-NEXT:    larl %r1, .LCPI128_06710; S390X-NEXT:    le %f0, 0(%r1)6711; S390X-NEXT:    larl %r1, .LCPI128_16712; S390X-NEXT:    le %f2, 0(%r1)6713; S390X-NEXT:    brasl %r14, atan2f@PLT6714; S390X-NEXT:    lmg %r14, %r15, 272(%r15)6715; S390X-NEXT:    br %r146716;6717; SZ13-LABEL: constrained_vector_atan2_v1f32:6718; SZ13:       # %bb.0: # %entry6719; SZ13-NEXT:    stmg %r14, %r15, 112(%r15)6720; SZ13-NEXT:    .cfi_offset %r14, -486721; SZ13-NEXT:    .cfi_offset %r15, -406722; SZ13-NEXT:    aghi %r15, -1606723; SZ13-NEXT:    .cfi_def_cfa_offset 3206724; SZ13-NEXT:    larl %r1, .LCPI128_06725; SZ13-NEXT:    lde %f0, 0(%r1)6726; SZ13-NEXT:    larl %r1, .LCPI128_16727; SZ13-NEXT:    lde %f2, 0(%r1)6728; SZ13-NEXT:    brasl %r14, atan2f@PLT6729; SZ13-NEXT:    # kill: def $f0s killed $f0s def $v06730; SZ13-NEXT:    vlr %v24, %v06731; SZ13-NEXT:    lmg %r14, %r15, 272(%r15)6732; SZ13-NEXT:    br %r146733entry:6734  %atan2 = call <1 x float> @llvm.experimental.constrained.atan2.v1f32(6735                             <1 x float> <float 42.0>,6736                             <1 x float> <float 43.0>,6737                             metadata !"round.dynamic",6738                             metadata !"fpexcept.strict") #06739  ret <1 x float> %atan26740}6741 6742define <2 x double> @constrained_vector_atan2_v2f64() #0 {6743; S390X-LABEL: constrained_vector_atan2_v2f64:6744; S390X:       # %bb.0: # %entry6745; S390X-NEXT:    stmg %r14, %r15, 112(%r15)6746; S390X-NEXT:    .cfi_offset %r14, -486747; S390X-NEXT:    .cfi_offset %r15, -406748; S390X-NEXT:    aghi %r15, -1686749; S390X-NEXT:    .cfi_def_cfa_offset 3286750; S390X-NEXT:    std %f8, 160(%r15) # 8-byte Spill6751; S390X-NEXT:    .cfi_offset %f8, -1686752; S390X-NEXT:    larl %r1, .LCPI129_06753; S390X-NEXT:    ld %f0, 0(%r1)6754; S390X-NEXT:    larl %r1, .LCPI129_16755; S390X-NEXT:    ld %f2, 0(%r1)6756; S390X-NEXT:    brasl %r14, atan2@PLT6757; S390X-NEXT:    larl %r1, .LCPI129_26758; S390X-NEXT:    ld %f1, 0(%r1)6759; S390X-NEXT:    larl %r1, .LCPI129_36760; S390X-NEXT:    ld %f2, 0(%r1)6761; S390X-NEXT:    ldr %f8, %f06762; S390X-NEXT:    ldr %f0, %f16763; S390X-NEXT:    brasl %r14, atan2@PLT6764; S390X-NEXT:    ldr %f2, %f86765; S390X-NEXT:    ld %f8, 160(%r15) # 8-byte Reload6766; S390X-NEXT:    lmg %r14, %r15, 280(%r15)6767; S390X-NEXT:    br %r146768;6769; SZ13-LABEL: constrained_vector_atan2_v2f64:6770; SZ13:       # %bb.0: # %entry6771; SZ13-NEXT:    stmg %r14, %r15, 112(%r15)6772; SZ13-NEXT:    .cfi_offset %r14, -486773; SZ13-NEXT:    .cfi_offset %r15, -406774; SZ13-NEXT:    aghi %r15, -1766775; SZ13-NEXT:    .cfi_def_cfa_offset 3366776; SZ13-NEXT:    larl %r1, .LCPI129_06777; SZ13-NEXT:    ld %f0, 0(%r1)6778; SZ13-NEXT:    larl %r1, .LCPI129_16779; SZ13-NEXT:    ld %f2, 0(%r1)6780; SZ13-NEXT:    brasl %r14, atan2@PLT6781; SZ13-NEXT:    larl %r1, .LCPI129_26782; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v06783; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill6784; SZ13-NEXT:    ld %f0, 0(%r1)6785; SZ13-NEXT:    larl %r1, .LCPI129_36786; SZ13-NEXT:    ld %f2, 0(%r1)6787; SZ13-NEXT:    brasl %r14, atan2@PLT6788; SZ13-NEXT:    vl %v1, 160(%r15), 3 # 16-byte Reload6789; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v06790; SZ13-NEXT:    vmrhg %v24, %v0, %v16791; SZ13-NEXT:    lmg %r14, %r15, 288(%r15)6792; SZ13-NEXT:    br %r146793entry:6794  %atan2 = call <2 x double> @llvm.experimental.constrained.atan2.v2f64(6795                             <2 x double> <double 42.0, double 42.1>,6796                             <2 x double> <double 43.0, double 43.1>,6797                             metadata !"round.dynamic",6798                             metadata !"fpexcept.strict") #06799  ret <2 x double> %atan26800}6801 6802define <3 x float> @constrained_vector_atan2_v3f32() #0 {6803; S390X-LABEL: constrained_vector_atan2_v3f32:6804; S390X:       # %bb.0: # %entry6805; S390X-NEXT:    stmg %r14, %r15, 112(%r15)6806; S390X-NEXT:    .cfi_offset %r14, -486807; S390X-NEXT:    .cfi_offset %r15, -406808; S390X-NEXT:    aghi %r15, -1766809; S390X-NEXT:    .cfi_def_cfa_offset 3366810; S390X-NEXT:    std %f8, 168(%r15) # 8-byte Spill6811; S390X-NEXT:    std %f9, 160(%r15) # 8-byte Spill6812; S390X-NEXT:    .cfi_offset %f8, -1686813; S390X-NEXT:    .cfi_offset %f9, -1766814; S390X-NEXT:    larl %r1, .LCPI130_06815; S390X-NEXT:    le %f0, 0(%r1)6816; S390X-NEXT:    larl %r1, .LCPI130_16817; S390X-NEXT:    le %f2, 0(%r1)6818; S390X-NEXT:    brasl %r14, atan2f@PLT6819; S390X-NEXT:    larl %r1, .LCPI130_26820; S390X-NEXT:    le %f1, 0(%r1)6821; S390X-NEXT:    larl %r1, .LCPI130_36822; S390X-NEXT:    le %f2, 0(%r1)6823; S390X-NEXT:    ler %f8, %f06824; S390X-NEXT:    ler %f0, %f16825; S390X-NEXT:    brasl %r14, atan2f@PLT6826; S390X-NEXT:    larl %r1, .LCPI130_46827; S390X-NEXT:    le %f1, 0(%r1)6828; S390X-NEXT:    larl %r1, .LCPI130_56829; S390X-NEXT:    le %f2, 0(%r1)6830; S390X-NEXT:    ler %f9, %f06831; S390X-NEXT:    ler %f0, %f16832; S390X-NEXT:    brasl %r14, atan2f@PLT6833; S390X-NEXT:    ler %f2, %f96834; S390X-NEXT:    ler %f4, %f86835; S390X-NEXT:    ld %f8, 168(%r15) # 8-byte Reload6836; S390X-NEXT:    ld %f9, 160(%r15) # 8-byte Reload6837; S390X-NEXT:    lmg %r14, %r15, 288(%r15)6838; S390X-NEXT:    br %r146839;6840; SZ13-LABEL: constrained_vector_atan2_v3f32:6841; SZ13:       # %bb.0: # %entry6842; SZ13-NEXT:    stmg %r14, %r15, 112(%r15)6843; SZ13-NEXT:    .cfi_offset %r14, -486844; SZ13-NEXT:    .cfi_offset %r15, -406845; SZ13-NEXT:    aghi %r15, -1926846; SZ13-NEXT:    .cfi_def_cfa_offset 3526847; SZ13-NEXT:    larl %r1, .LCPI130_06848; SZ13-NEXT:    lde %f0, 0(%r1)6849; SZ13-NEXT:    larl %r1, .LCPI130_16850; SZ13-NEXT:    lde %f2, 0(%r1)6851; SZ13-NEXT:    brasl %r14, atan2f@PLT6852; SZ13-NEXT:    larl %r1, .LCPI130_26853; SZ13-NEXT:    # kill: def $f0s killed $f0s def $v06854; SZ13-NEXT:    vst %v0, 176(%r15), 3 # 16-byte Spill6855; SZ13-NEXT:    lde %f0, 0(%r1)6856; SZ13-NEXT:    larl %r1, .LCPI130_36857; SZ13-NEXT:    lde %f2, 0(%r1)6858; SZ13-NEXT:    brasl %r14, atan2f@PLT6859; SZ13-NEXT:    larl %r1, .LCPI130_46860; SZ13-NEXT:    # kill: def $f0s killed $f0s def $v06861; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill6862; SZ13-NEXT:    lde %f0, 0(%r1)6863; SZ13-NEXT:    larl %r1, .LCPI130_56864; SZ13-NEXT:    lde %f2, 0(%r1)6865; SZ13-NEXT:    brasl %r14, atan2f@PLT6866; SZ13-NEXT:    vl %v1, 160(%r15), 3 # 16-byte Reload6867; SZ13-NEXT:    # kill: def $f0s killed $f0s def $v06868; SZ13-NEXT:    vmrhf %v0, %v1, %v06869; SZ13-NEXT:    vl %v1, 176(%r15), 3 # 16-byte Reload6870; SZ13-NEXT:    vrepf %v1, %v1, 06871; SZ13-NEXT:    vmrhg %v24, %v0, %v16872; SZ13-NEXT:    lmg %r14, %r15, 304(%r15)6873; SZ13-NEXT:    br %r146874entry:6875  %atan2 = call <3 x float> @llvm.experimental.constrained.atan2.v3f32(6876                              <3 x float> <float 42.0, float 43.0, float 44.0>,6877                              <3 x float> <float 42.125, float 43.25, float 44.375>,6878                              metadata !"round.dynamic",6879                              metadata !"fpexcept.strict") #06880  ret <3 x float> %atan26881}6882 6883define void @constrained_vector_atan2_v3f64(ptr %a, ptr %b) #0 {6884; S390X-LABEL: constrained_vector_atan2_v3f64:6885; S390X:       # %bb.0: # %entry6886; S390X-NEXT:    stmg %r13, %r15, 104(%r15)6887; S390X-NEXT:    .cfi_offset %r13, -566888; S390X-NEXT:    .cfi_offset %r14, -486889; S390X-NEXT:    .cfi_offset %r15, -406890; S390X-NEXT:    aghi %r15, -2006891; S390X-NEXT:    .cfi_def_cfa_offset 3606892; S390X-NEXT:    std %f8, 192(%r15) # 8-byte Spill6893; S390X-NEXT:    std %f9, 184(%r15) # 8-byte Spill6894; S390X-NEXT:    std %f10, 176(%r15) # 8-byte Spill6895; S390X-NEXT:    std %f11, 168(%r15) # 8-byte Spill6896; S390X-NEXT:    std %f12, 160(%r15) # 8-byte Spill6897; S390X-NEXT:    .cfi_offset %f8, -1686898; S390X-NEXT:    .cfi_offset %f9, -1766899; S390X-NEXT:    .cfi_offset %f10, -1846900; S390X-NEXT:    .cfi_offset %f11, -1926901; S390X-NEXT:    .cfi_offset %f12, -2006902; S390X-NEXT:    lgr %r13, %r26903; S390X-NEXT:    ld %f8, 0(%r2)6904; S390X-NEXT:    ld %f9, 8(%r2)6905; S390X-NEXT:    ld %f0, 16(%r2)6906; S390X-NEXT:    ld %f10, 0(%r3)6907; S390X-NEXT:    ld %f2, 16(%r3)6908; S390X-NEXT:    ld %f11, 8(%r3)6909; S390X-NEXT:    brasl %r14, atan2@PLT6910; S390X-NEXT:    ldr %f12, %f06911; S390X-NEXT:    ldr %f0, %f96912; S390X-NEXT:    ldr %f2, %f116913; S390X-NEXT:    brasl %r14, atan2@PLT6914; S390X-NEXT:    ldr %f9, %f06915; S390X-NEXT:    ldr %f0, %f86916; S390X-NEXT:    ldr %f2, %f106917; S390X-NEXT:    brasl %r14, atan2@PLT6918; S390X-NEXT:    std %f0, 0(%r13)6919; S390X-NEXT:    std %f9, 8(%r13)6920; S390X-NEXT:    std %f12, 16(%r13)6921; S390X-NEXT:    ld %f8, 192(%r15) # 8-byte Reload6922; S390X-NEXT:    ld %f9, 184(%r15) # 8-byte Reload6923; S390X-NEXT:    ld %f10, 176(%r15) # 8-byte Reload6924; S390X-NEXT:    ld %f11, 168(%r15) # 8-byte Reload6925; S390X-NEXT:    ld %f12, 160(%r15) # 8-byte Reload6926; S390X-NEXT:    lmg %r13, %r15, 304(%r15)6927; S390X-NEXT:    br %r146928;6929; SZ13-LABEL: constrained_vector_atan2_v3f64:6930; SZ13:       # %bb.0: # %entry6931; SZ13-NEXT:    stmg %r13, %r15, 104(%r15)6932; SZ13-NEXT:    .cfi_offset %r13, -566933; SZ13-NEXT:    .cfi_offset %r14, -486934; SZ13-NEXT:    .cfi_offset %r15, -406935; SZ13-NEXT:    aghi %r15, -2246936; SZ13-NEXT:    .cfi_def_cfa_offset 3846937; SZ13-NEXT:    std %f8, 216(%r15) # 8-byte Spill6938; SZ13-NEXT:    std %f9, 208(%r15) # 8-byte Spill6939; SZ13-NEXT:    .cfi_offset %f8, -1686940; SZ13-NEXT:    .cfi_offset %f9, -1766941; SZ13-NEXT:    vl %v0, 0(%r2), 46942; SZ13-NEXT:    vl %v2, 0(%r3), 46943; SZ13-NEXT:    ld %f8, 16(%r2)6944; SZ13-NEXT:    ld %f9, 16(%r3)6945; SZ13-NEXT:    lgr %r13, %r26946; SZ13-NEXT:    vst %v0, 176(%r15), 3 # 16-byte Spill6947; SZ13-NEXT:    vst %v2, 192(%r15), 3 # 16-byte Spill6948; SZ13-NEXT:    # kill: def $f0d killed $f0d killed $v06949; SZ13-NEXT:    # kill: def $f2d killed $f2d killed $v26950; SZ13-NEXT:    brasl %r14, atan2@PLT6951; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v06952; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill6953; SZ13-NEXT:    vl %v0, 176(%r15), 3 # 16-byte Reload6954; SZ13-NEXT:    vl %v1, 192(%r15), 3 # 16-byte Reload6955; SZ13-NEXT:    vrepg %v0, %v0, 16956; SZ13-NEXT:    vrepg %v2, %v1, 16957; SZ13-NEXT:    # kill: def $f0d killed $f0d killed $v06958; SZ13-NEXT:    # kill: def $f2d killed $f2d killed $v26959; SZ13-NEXT:    brasl %r14, atan2@PLT6960; SZ13-NEXT:    vl %v1, 160(%r15), 3 # 16-byte Reload6961; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v06962; SZ13-NEXT:    vmrhg %v0, %v1, %v06963; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill6964; SZ13-NEXT:    ldr %f0, %f86965; SZ13-NEXT:    ldr %f2, %f96966; SZ13-NEXT:    brasl %r14, atan2@PLT6967; SZ13-NEXT:    mvc 0(16,%r13), 160(%r15) # 16-byte Folded Reload6968; SZ13-NEXT:    ld %f8, 216(%r15) # 8-byte Reload6969; SZ13-NEXT:    ld %f9, 208(%r15) # 8-byte Reload6970; SZ13-NEXT:    std %f0, 16(%r13)6971; SZ13-NEXT:    lmg %r13, %r15, 328(%r15)6972; SZ13-NEXT:    br %r146973entry:6974  %c = load <3 x double>, ptr %a6975  %d = load <3 x double>, ptr %b6976  %atan2 = call <3 x double> @llvm.experimental.constrained.atan2.v3f64(6977                          <3 x double> %c,6978                          <3 x double> %d,6979                          metadata !"round.dynamic",6980                          metadata !"fpexcept.strict") #06981  store <3 x double> %atan2, ptr %a6982  ret void6983}6984 6985define <4 x double> @constrained_vector_atan2_v4f64() #0 {6986; S390X-LABEL: constrained_vector_atan2_v4f64:6987; S390X:       # %bb.0: # %entry6988; S390X-NEXT:    stmg %r14, %r15, 112(%r15)6989; S390X-NEXT:    .cfi_offset %r14, -486990; S390X-NEXT:    .cfi_offset %r15, -406991; S390X-NEXT:    aghi %r15, -1846992; S390X-NEXT:    .cfi_def_cfa_offset 3446993; S390X-NEXT:    std %f8, 176(%r15) # 8-byte Spill6994; S390X-NEXT:    std %f9, 168(%r15) # 8-byte Spill6995; S390X-NEXT:    std %f10, 160(%r15) # 8-byte Spill6996; S390X-NEXT:    .cfi_offset %f8, -1686997; S390X-NEXT:    .cfi_offset %f9, -1766998; S390X-NEXT:    .cfi_offset %f10, -1846999; S390X-NEXT:    larl %r1, .LCPI132_07000; S390X-NEXT:    ld %f0, 0(%r1)7001; S390X-NEXT:    larl %r1, .LCPI132_17002; S390X-NEXT:    ld %f2, 0(%r1)7003; S390X-NEXT:    brasl %r14, atan2@PLT7004; S390X-NEXT:    larl %r1, .LCPI132_27005; S390X-NEXT:    ld %f1, 0(%r1)7006; S390X-NEXT:    larl %r1, .LCPI132_37007; S390X-NEXT:    ld %f2, 0(%r1)7008; S390X-NEXT:    ldr %f8, %f07009; S390X-NEXT:    ldr %f0, %f17010; S390X-NEXT:    brasl %r14, atan2@PLT7011; S390X-NEXT:    larl %r1, .LCPI132_47012; S390X-NEXT:    ld %f1, 0(%r1)7013; S390X-NEXT:    larl %r1, .LCPI132_57014; S390X-NEXT:    ld %f2, 0(%r1)7015; S390X-NEXT:    ldr %f9, %f07016; S390X-NEXT:    ldr %f0, %f17017; S390X-NEXT:    brasl %r14, atan2@PLT7018; S390X-NEXT:    larl %r1, .LCPI132_67019; S390X-NEXT:    ld %f1, 0(%r1)7020; S390X-NEXT:    larl %r1, .LCPI132_77021; S390X-NEXT:    ld %f2, 0(%r1)7022; S390X-NEXT:    ldr %f10, %f07023; S390X-NEXT:    ldr %f0, %f17024; S390X-NEXT:    brasl %r14, atan2@PLT7025; S390X-NEXT:    ldr %f2, %f107026; S390X-NEXT:    ldr %f4, %f97027; S390X-NEXT:    ldr %f6, %f87028; S390X-NEXT:    ld %f8, 176(%r15) # 8-byte Reload7029; S390X-NEXT:    ld %f9, 168(%r15) # 8-byte Reload7030; S390X-NEXT:    ld %f10, 160(%r15) # 8-byte Reload7031; S390X-NEXT:    lmg %r14, %r15, 296(%r15)7032; S390X-NEXT:    br %r147033;7034; SZ13-LABEL: constrained_vector_atan2_v4f64:7035; SZ13:       # %bb.0: # %entry7036; SZ13-NEXT:    stmg %r14, %r15, 112(%r15)7037; SZ13-NEXT:    .cfi_offset %r14, -487038; SZ13-NEXT:    .cfi_offset %r15, -407039; SZ13-NEXT:    aghi %r15, -1927040; SZ13-NEXT:    .cfi_def_cfa_offset 3527041; SZ13-NEXT:    larl %r1, .LCPI132_07042; SZ13-NEXT:    ld %f0, 0(%r1)7043; SZ13-NEXT:    larl %r1, .LCPI132_17044; SZ13-NEXT:    ld %f2, 0(%r1)7045; SZ13-NEXT:    brasl %r14, atan2@PLT7046; SZ13-NEXT:    larl %r1, .LCPI132_27047; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v07048; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill7049; SZ13-NEXT:    ld %f0, 0(%r1)7050; SZ13-NEXT:    larl %r1, .LCPI132_37051; SZ13-NEXT:    ld %f2, 0(%r1)7052; SZ13-NEXT:    brasl %r14, atan2@PLT7053; SZ13-NEXT:    vl %v1, 160(%r15), 3 # 16-byte Reload7054; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v07055; SZ13-NEXT:    vmrhg %v0, %v0, %v17056; SZ13-NEXT:    larl %r1, .LCPI132_47057; SZ13-NEXT:    vst %v0, 160(%r15), 3 # 16-byte Spill7058; SZ13-NEXT:    ld %f0, 0(%r1)7059; SZ13-NEXT:    larl %r1, .LCPI132_57060; SZ13-NEXT:    ld %f2, 0(%r1)7061; SZ13-NEXT:    brasl %r14, atan2@PLT7062; SZ13-NEXT:    larl %r1, .LCPI132_67063; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v07064; SZ13-NEXT:    vst %v0, 176(%r15), 3 # 16-byte Spill7065; SZ13-NEXT:    ld %f0, 0(%r1)7066; SZ13-NEXT:    larl %r1, .LCPI132_77067; SZ13-NEXT:    ld %f2, 0(%r1)7068; SZ13-NEXT:    brasl %r14, atan2@PLT7069; SZ13-NEXT:    vl %v1, 176(%r15), 3 # 16-byte Reload7070; SZ13-NEXT:    vl %v24, 160(%r15), 3 # 16-byte Reload7071; SZ13-NEXT:    # kill: def $f0d killed $f0d def $v07072; SZ13-NEXT:    vmrhg %v26, %v0, %v17073; SZ13-NEXT:    lmg %r14, %r15, 304(%r15)7074; SZ13-NEXT:    br %r147075entry:7076  %atan2 = call <4 x double> @llvm.experimental.constrained.atan2.v4f64(7077                             <4 x double> <double 42.0, double 42.1,7078                                           double 42.2, double 42.3>,7079                             <4 x double> <double 43.0, double 43.1,7080                                           double 43.2, double 43.3>,7081                             metadata !"round.dynamic",7082                             metadata !"fpexcept.strict") #07083  ret <4 x double> %atan27084}7085 7086attributes #0 = { strictfp }7087 7088declare <2 x double> @llvm.experimental.constrained.fadd.v2f64(<2 x double>, <2 x double>, metadata, metadata)7089declare <2 x double> @llvm.experimental.constrained.fsub.v2f64(<2 x double>, <2 x double>, metadata, metadata)7090declare <2 x double> @llvm.experimental.constrained.fmul.v2f64(<2 x double>, <2 x double>, metadata, metadata)7091declare <2 x double> @llvm.experimental.constrained.fdiv.v2f64(<2 x double>, <2 x double>, metadata, metadata)7092declare <2 x double> @llvm.experimental.constrained.frem.v2f64(<2 x double>, <2 x double>, metadata, metadata)7093declare <2 x double> @llvm.experimental.constrained.sqrt.v2f64(<2 x double>, metadata, metadata)7094declare <2 x double> @llvm.experimental.constrained.pow.v2f64(<2 x double>, <2 x double>, metadata, metadata)7095declare <2 x double> @llvm.experimental.constrained.powi.v2f64(<2 x double>, i32, metadata, metadata)7096declare <2 x double> @llvm.experimental.constrained.sin.v2f64(<2 x double>, metadata, metadata)7097declare <2 x double> @llvm.experimental.constrained.cos.v2f64(<2 x double>, metadata, metadata)7098declare <2 x double> @llvm.experimental.constrained.tan.v2f64(<2 x double>, metadata, metadata)7099declare <2 x double> @llvm.experimental.constrained.atan2.v2f64(<2 x double>, <2 x double>, metadata, metadata)7100declare <2 x double> @llvm.experimental.constrained.exp.v2f64(<2 x double>, metadata, metadata)7101declare <2 x double> @llvm.experimental.constrained.exp2.v2f64(<2 x double>, metadata, metadata)7102declare <2 x double> @llvm.experimental.constrained.log.v2f64(<2 x double>, metadata, metadata)7103declare <2 x double> @llvm.experimental.constrained.log10.v2f64(<2 x double>, metadata, metadata)7104declare <2 x double> @llvm.experimental.constrained.log2.v2f64(<2 x double>, metadata, metadata)7105declare <2 x double> @llvm.experimental.constrained.rint.v2f64(<2 x double>, metadata, metadata)7106declare <2 x double> @llvm.experimental.constrained.nearbyint.v2f64(<2 x double>, metadata, metadata)7107declare <2 x double> @llvm.experimental.constrained.maxnum.v2f64(<2 x double>, <2 x double>, metadata)7108declare <2 x double> @llvm.experimental.constrained.minnum.v2f64(<2 x double>, <2 x double>, metadata)7109declare <2 x float> @llvm.experimental.constrained.fptrunc.v2f32.v2f64(<2 x double>, metadata, metadata)7110declare <2 x double> @llvm.experimental.constrained.fpext.v2f64.v2f32(<2 x float>, metadata)7111declare <2 x double> @llvm.experimental.constrained.ceil.v2f64(<2 x double>, metadata)7112declare <2 x double> @llvm.experimental.constrained.floor.v2f64(<2 x double>, metadata)7113declare <2 x double> @llvm.experimental.constrained.round.v2f64(<2 x double>, metadata)7114declare <2 x double> @llvm.experimental.constrained.roundeven.v2f64(<2 x double>, metadata)7115declare <2 x double> @llvm.experimental.constrained.trunc.v2f64(<2 x double>, metadata)7116 7117declare <1 x float> @llvm.experimental.constrained.fadd.v1f32(<1 x float>, <1 x float>, metadata, metadata)7118declare <1 x float> @llvm.experimental.constrained.fsub.v1f32(<1 x float>, <1 x float>, metadata, metadata)7119declare <1 x float> @llvm.experimental.constrained.fmul.v1f32(<1 x float>, <1 x float>, metadata, metadata)7120declare <1 x float> @llvm.experimental.constrained.fdiv.v1f32(<1 x float>, <1 x float>, metadata, metadata)7121declare <1 x float> @llvm.experimental.constrained.frem.v1f32(<1 x float>, <1 x float>, metadata, metadata)7122declare <1 x float> @llvm.experimental.constrained.sqrt.v1f32(<1 x float>, metadata, metadata)7123declare <1 x float> @llvm.experimental.constrained.pow.v1f32(<1 x float>, <1 x float>, metadata, metadata)7124declare <1 x float> @llvm.experimental.constrained.powi.v1f32(<1 x float>, i32, metadata, metadata)7125declare <1 x float> @llvm.experimental.constrained.sin.v1f32(<1 x float>, metadata, metadata)7126declare <1 x float> @llvm.experimental.constrained.cos.v1f32(<1 x float>, metadata, metadata)7127declare <1 x float> @llvm.experimental.constrained.tan.v1f32(<1 x float>, metadata, metadata)7128declare <1 x float> @llvm.experimental.constrained.atan2.v1f32(<1 x float>, <1 x float>, metadata, metadata)7129declare <1 x float> @llvm.experimental.constrained.exp.v1f32(<1 x float>, metadata, metadata)7130declare <1 x float> @llvm.experimental.constrained.exp2.v1f32(<1 x float>, metadata, metadata)7131declare <1 x float> @llvm.experimental.constrained.log.v1f32(<1 x float>, metadata, metadata)7132declare <1 x float> @llvm.experimental.constrained.log10.v1f32(<1 x float>, metadata, metadata)7133declare <1 x float> @llvm.experimental.constrained.log2.v1f32(<1 x float>, metadata, metadata)7134declare <1 x float> @llvm.experimental.constrained.rint.v1f32(<1 x float>, metadata, metadata)7135declare <1 x float> @llvm.experimental.constrained.nearbyint.v1f32(<1 x float>, metadata, metadata)7136declare <1 x float> @llvm.experimental.constrained.maxnum.v1f32(<1 x float>, <1 x float>, metadata)7137declare <1 x float> @llvm.experimental.constrained.minnum.v1f32(<1 x float>, <1 x float>, metadata)7138declare <1 x float> @llvm.experimental.constrained.fptrunc.v1f32.v1f64(<1 x double>, metadata, metadata)7139declare <1 x double> @llvm.experimental.constrained.fpext.v1f64.v1f32(<1 x float>, metadata)7140declare <1 x float> @llvm.experimental.constrained.ceil.v1f32(<1 x float>, metadata)7141declare <1 x float> @llvm.experimental.constrained.floor.v1f32(<1 x float>, metadata)7142declare <1 x float> @llvm.experimental.constrained.round.v1f32(<1 x float>, metadata)7143declare <1 x float> @llvm.experimental.constrained.roundeven.v1f32(<1 x float>, metadata)7144declare <1 x float> @llvm.experimental.constrained.trunc.v1f32(<1 x float>, metadata)7145 7146declare <3 x float> @llvm.experimental.constrained.fadd.v3f32(<3 x float>, <3 x float>, metadata, metadata)7147declare <3 x double> @llvm.experimental.constrained.fadd.v3f64(<3 x double>, <3 x double>, metadata, metadata)7148declare <3 x float> @llvm.experimental.constrained.fsub.v3f32(<3 x float>, <3 x float>, metadata, metadata)7149declare <3 x double> @llvm.experimental.constrained.fsub.v3f64(<3 x double>, <3 x double>, metadata, metadata)7150declare <3 x float> @llvm.experimental.constrained.fmul.v3f32(<3 x float>, <3 x float>, metadata, metadata)7151declare <3 x double> @llvm.experimental.constrained.fmul.v3f64(<3 x double>, <3 x double>, metadata, metadata)7152declare <3 x float> @llvm.experimental.constrained.fdiv.v3f32(<3 x float>, <3 x float>, metadata, metadata)7153declare <3 x double> @llvm.experimental.constrained.fdiv.v3f64(<3 x double>, <3 x double>, metadata, metadata)7154declare <3 x float> @llvm.experimental.constrained.frem.v3f32(<3 x float>, <3 x float>, metadata, metadata)7155declare <3 x double> @llvm.experimental.constrained.frem.v3f64(<3 x double>, <3 x double>, metadata, metadata)7156declare <3 x float> @llvm.experimental.constrained.sqrt.v3f32(<3 x float>, metadata, metadata)7157declare <3 x double> @llvm.experimental.constrained.sqrt.v3f64(<3 x double>, metadata, metadata)7158declare <3 x float> @llvm.experimental.constrained.pow.v3f32(<3 x float>, <3 x float>, metadata, metadata)7159declare <3 x double> @llvm.experimental.constrained.pow.v3f64(<3 x double>, <3 x double>, metadata, metadata)7160declare <3 x float> @llvm.experimental.constrained.powi.v3f32(<3 x float>, i32, metadata, metadata)7161declare <3 x double> @llvm.experimental.constrained.powi.v3f64(<3 x double>, i32, metadata, metadata)7162declare <3 x float> @llvm.experimental.constrained.sin.v3f32(<3 x float>, metadata, metadata)7163declare <3 x double> @llvm.experimental.constrained.sin.v3f64(<3 x double>, metadata, metadata)7164declare <3 x float> @llvm.experimental.constrained.cos.v3f32(<3 x float>, metadata, metadata)7165declare <3 x double> @llvm.experimental.constrained.cos.v3f64(<3 x double>, metadata, metadata)7166declare <3 x float> @llvm.experimental.constrained.tan.v3f32(<3 x float>, metadata, metadata)7167declare <3 x double> @llvm.experimental.constrained.tan.v3f64(<3 x double>, metadata, metadata)7168declare <3 x float> @llvm.experimental.constrained.atan2.v3f32(<3 x float>, <3 x float>, metadata, metadata)7169declare <3 x double> @llvm.experimental.constrained.atan2.v3f64(<3 x double>, <3 x double>, metadata, metadata)7170declare <3 x float> @llvm.experimental.constrained.exp.v3f32(<3 x float>, metadata, metadata)7171declare <3 x double> @llvm.experimental.constrained.exp.v3f64(<3 x double>, metadata, metadata)7172declare <3 x float> @llvm.experimental.constrained.exp2.v3f32(<3 x float>, metadata, metadata)7173declare <3 x double> @llvm.experimental.constrained.exp2.v3f64(<3 x double>, metadata, metadata)7174declare <3 x float> @llvm.experimental.constrained.log.v3f32(<3 x float>, metadata, metadata)7175declare <3 x double> @llvm.experimental.constrained.log.v3f64(<3 x double>, metadata, metadata)7176declare <3 x float> @llvm.experimental.constrained.log10.v3f32(<3 x float>, metadata, metadata)7177declare <3 x double> @llvm.experimental.constrained.log10.v3f64(<3 x double>, metadata, metadata)7178declare <3 x float> @llvm.experimental.constrained.log2.v3f32(<3 x float>, metadata, metadata)7179declare <3 x double> @llvm.experimental.constrained.log2.v3f64(<3 x double>, metadata, metadata)7180declare <3 x float> @llvm.experimental.constrained.rint.v3f32(<3 x float>, metadata, metadata)7181declare <3 x double> @llvm.experimental.constrained.rint.v3f64(<3 x double>, metadata, metadata)7182declare <3 x float> @llvm.experimental.constrained.nearbyint.v3f32(<3 x float>, metadata, metadata)7183declare <3 x double> @llvm.experimental.constrained.nearbyint.v3f64(<3 x double>, metadata, metadata)7184declare <3 x float> @llvm.experimental.constrained.maxnum.v3f32(<3 x float>, <3 x float>, metadata)7185declare <3 x double> @llvm.experimental.constrained.maxnum.v3f64(<3 x double>, <3 x double>, metadata)7186declare <3 x float> @llvm.experimental.constrained.minnum.v3f32(<3 x float>, <3 x float>, metadata)7187declare <3 x double> @llvm.experimental.constrained.minnum.v3f64(<3 x double>, <3 x double>, metadata)7188declare <3 x float> @llvm.experimental.constrained.fptrunc.v3f32.v3f64(<3 x double>, metadata, metadata)7189declare <3 x double> @llvm.experimental.constrained.fpext.v3f64.v3f32(<3 x float>, metadata)7190declare <3 x float> @llvm.experimental.constrained.ceil.v3f32(<3 x float>, metadata)7191declare <3 x double> @llvm.experimental.constrained.ceil.v3f64(<3 x double>, metadata)7192declare <3 x float> @llvm.experimental.constrained.floor.v3f32(<3 x float>, metadata)7193declare <3 x double> @llvm.experimental.constrained.floor.v3f64(<3 x double>, metadata)7194declare <3 x float> @llvm.experimental.constrained.round.v3f32(<3 x float>, metadata)7195declare <3 x double> @llvm.experimental.constrained.round.v3f64(<3 x double>, metadata)7196declare <3 x float> @llvm.experimental.constrained.roundeven.v3f32(<3 x float>, metadata)7197declare <3 x double> @llvm.experimental.constrained.roundeven.v3f64(<3 x double>, metadata)7198declare <3 x float> @llvm.experimental.constrained.trunc.v3f32(<3 x float>, metadata)7199declare <3 x double> @llvm.experimental.constrained.trunc.v3f64(<3 x double>, metadata)7200 7201declare <4 x double> @llvm.experimental.constrained.fadd.v4f64(<4 x double>, <4 x double>, metadata, metadata)7202declare <4 x double> @llvm.experimental.constrained.fsub.v4f64(<4 x double>, <4 x double>, metadata, metadata)7203declare <4 x double> @llvm.experimental.constrained.fmul.v4f64(<4 x double>, <4 x double>, metadata, metadata)7204declare <4 x double> @llvm.experimental.constrained.fdiv.v4f64(<4 x double>, <4 x double>, metadata, metadata)7205declare <4 x double> @llvm.experimental.constrained.frem.v4f64(<4 x double>, <4 x double>, metadata, metadata)7206declare <4 x double> @llvm.experimental.constrained.sqrt.v4f64(<4 x double>, metadata, metadata)7207declare <4 x double> @llvm.experimental.constrained.pow.v4f64(<4 x double>, <4 x double>, metadata, metadata)7208declare <4 x double> @llvm.experimental.constrained.powi.v4f64(<4 x double>, i32, metadata, metadata)7209declare <4 x double> @llvm.experimental.constrained.sin.v4f64(<4 x double>, metadata, metadata)7210declare <4 x double> @llvm.experimental.constrained.cos.v4f64(<4 x double>, metadata, metadata)7211declare <4 x double> @llvm.experimental.constrained.tan.v4f64(<4 x double>, metadata, metadata)7212declare <4 x double> @llvm.experimental.constrained.atan2.v4f64(<4 x double>, <4 x double>, metadata, metadata)7213declare <4 x double> @llvm.experimental.constrained.exp.v4f64(<4 x double>, metadata, metadata)7214declare <4 x double> @llvm.experimental.constrained.exp2.v4f64(<4 x double>, metadata, metadata)7215declare <4 x double> @llvm.experimental.constrained.log.v4f64(<4 x double>, metadata, metadata)7216declare <4 x double> @llvm.experimental.constrained.log10.v4f64(<4 x double>, metadata, metadata)7217declare <4 x double> @llvm.experimental.constrained.log2.v4f64(<4 x double>, metadata, metadata)7218declare <4 x double> @llvm.experimental.constrained.rint.v4f64(<4 x double>, metadata, metadata)7219declare <4 x double> @llvm.experimental.constrained.nearbyint.v4f64(<4 x double>, metadata, metadata)7220declare <4 x double> @llvm.experimental.constrained.maxnum.v4f64(<4 x double>, <4 x double>, metadata)7221declare <4 x double> @llvm.experimental.constrained.minnum.v4f64(<4 x double>, <4 x double>, metadata)7222declare <4 x float> @llvm.experimental.constrained.fptrunc.v4f32.v4f64(<4 x double>, metadata, metadata)7223declare <4 x double> @llvm.experimental.constrained.fpext.v4f64.v4f32(<4 x float>, metadata)7224declare <4 x double> @llvm.experimental.constrained.ceil.v4f64(<4 x double>, metadata)7225declare <4 x double> @llvm.experimental.constrained.floor.v4f64(<4 x double>, metadata)7226declare <4 x double> @llvm.experimental.constrained.round.v4f64(<4 x double>, metadata)7227declare <4 x double> @llvm.experimental.constrained.roundeven.v4f64(<4 x double>, metadata)7228declare <4 x double> @llvm.experimental.constrained.trunc.v4f64(<4 x double>, metadata)7229