brintos

brintos / llvm-project-archived public Read only

0
0
Text · 128.4 KiB · 3740664 Raw
3394 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -disable-peephole -mtriple=x86_64-apple-darwin -mattr=+avx512vl | FileCheck %s3 4declare <2 x double> @llvm.floor.v2f64(<2 x double> %p)5declare <4 x float> @llvm.floor.v4f32(<4 x float> %p)6declare <4 x double> @llvm.floor.v4f64(<4 x double> %p)7declare <8 x float> @llvm.floor.v8f32(<8 x float> %p)8declare <8 x double> @llvm.floor.v8f64(<8 x double> %p)9declare <16 x float> @llvm.floor.v16f32(<16 x float> %p)10declare <2 x double> @llvm.ceil.v2f64(<2 x double> %p)11declare <4 x float> @llvm.ceil.v4f32(<4 x float> %p)12declare <4 x double> @llvm.ceil.v4f64(<4 x double> %p)13declare <8 x float> @llvm.ceil.v8f32(<8 x float> %p)14declare <8 x double> @llvm.ceil.v8f64(<8 x double> %p)15declare <16 x float> @llvm.ceil.v16f32(<16 x float> %p)16declare <2 x double> @llvm.trunc.v2f64(<2 x double> %p)17declare <4 x float> @llvm.trunc.v4f32(<4 x float> %p)18declare <4 x double> @llvm.trunc.v4f64(<4 x double> %p)19declare <8 x float> @llvm.trunc.v8f32(<8 x float> %p)20declare <8 x double> @llvm.trunc.v8f64(<8 x double> %p)21declare <16 x float> @llvm.trunc.v16f32(<16 x float> %p)22declare <2 x double> @llvm.rint.v2f64(<2 x double> %p)23declare <4 x float> @llvm.rint.v4f32(<4 x float> %p)24declare <4 x double> @llvm.rint.v4f64(<4 x double> %p)25declare <8 x float> @llvm.rint.v8f32(<8 x float> %p)26declare <8 x double> @llvm.rint.v8f64(<8 x double> %p)27declare <16 x float> @llvm.rint.v16f32(<16 x float> %p)28declare <2 x double> @llvm.nearbyint.v2f64(<2 x double> %p)29declare <4 x float> @llvm.nearbyint.v4f32(<4 x float> %p)30declare <4 x double> @llvm.nearbyint.v4f64(<4 x double> %p)31declare <8 x float> @llvm.nearbyint.v8f32(<8 x float> %p)32declare <8 x double> @llvm.nearbyint.v8f64(<8 x double> %p)33declare <16 x float> @llvm.nearbyint.v16f32(<16 x float> %p)34 35define <2 x double> @floor_v2f64(<2 x double> %p) {36; CHECK-LABEL: floor_v2f64:37; CHECK:       ## %bb.0:38; CHECK-NEXT:    vroundpd $9, %xmm0, %xmm039; CHECK-NEXT:    retq40  %t = call <2 x double> @llvm.floor.v2f64(<2 x double> %p)41  ret <2 x double> %t42}43 44define <4 x float> @floor_v4f32(<4 x float> %p) {45; CHECK-LABEL: floor_v4f32:46; CHECK:       ## %bb.0:47; CHECK-NEXT:    vroundps $9, %xmm0, %xmm048; CHECK-NEXT:    retq49  %t = call <4 x float> @llvm.floor.v4f32(<4 x float> %p)50  ret <4 x float> %t51}52 53define <4 x double> @floor_v4f64(<4 x double> %p){54; CHECK-LABEL: floor_v4f64:55; CHECK:       ## %bb.0:56; CHECK-NEXT:    vroundpd $9, %ymm0, %ymm057; CHECK-NEXT:    retq58  %t = call <4 x double> @llvm.floor.v4f64(<4 x double> %p)59  ret <4 x double> %t60}61 62define <8 x float> @floor_v8f32(<8 x float> %p) {63; CHECK-LABEL: floor_v8f32:64; CHECK:       ## %bb.0:65; CHECK-NEXT:    vroundps $9, %ymm0, %ymm066; CHECK-NEXT:    retq67  %t = call <8 x float> @llvm.floor.v8f32(<8 x float> %p)68  ret <8 x float> %t69}70 71define <8 x double> @floor_v8f64(<8 x double> %p){72; CHECK-LABEL: floor_v8f64:73; CHECK:       ## %bb.0:74; CHECK-NEXT:    vrndscalepd $9, %zmm0, %zmm075; CHECK-NEXT:    retq76  %t = call <8 x double> @llvm.floor.v8f64(<8 x double> %p)77  ret <8 x double> %t78}79 80define <16 x float> @floor_v16f32(<16 x float> %p) {81; CHECK-LABEL: floor_v16f32:82; CHECK:       ## %bb.0:83; CHECK-NEXT:    vrndscaleps $9, %zmm0, %zmm084; CHECK-NEXT:    retq85  %t = call <16 x float> @llvm.floor.v16f32(<16 x float> %p)86  ret <16 x float> %t87}88 89define <2 x double> @floor_v2f64_load(ptr %ptr) {90; CHECK-LABEL: floor_v2f64_load:91; CHECK:       ## %bb.0:92; CHECK-NEXT:    vroundpd $9, (%rdi), %xmm093; CHECK-NEXT:    retq94  %p = load <2 x double>, ptr %ptr95  %t = call <2 x double> @llvm.floor.v2f64(<2 x double> %p)96  ret <2 x double> %t97}98 99define <4 x float> @floor_v4f32_load(ptr %ptr) {100; CHECK-LABEL: floor_v4f32_load:101; CHECK:       ## %bb.0:102; CHECK-NEXT:    vroundps $9, (%rdi), %xmm0103; CHECK-NEXT:    retq104  %p = load <4 x float>, ptr %ptr105  %t = call <4 x float> @llvm.floor.v4f32(<4 x float> %p)106  ret <4 x float> %t107}108 109define <4 x double> @floor_v4f64_load(ptr %ptr){110; CHECK-LABEL: floor_v4f64_load:111; CHECK:       ## %bb.0:112; CHECK-NEXT:    vroundpd $9, (%rdi), %ymm0113; CHECK-NEXT:    retq114  %p = load <4 x double>, ptr %ptr115  %t = call <4 x double> @llvm.floor.v4f64(<4 x double> %p)116  ret <4 x double> %t117}118 119define <8 x float> @floor_v8f32_load(ptr %ptr) {120; CHECK-LABEL: floor_v8f32_load:121; CHECK:       ## %bb.0:122; CHECK-NEXT:    vroundps $9, (%rdi), %ymm0123; CHECK-NEXT:    retq124  %p = load <8 x float>, ptr %ptr125  %t = call <8 x float> @llvm.floor.v8f32(<8 x float> %p)126  ret <8 x float> %t127}128 129define <8 x double> @floor_v8f64_load(ptr %ptr){130; CHECK-LABEL: floor_v8f64_load:131; CHECK:       ## %bb.0:132; CHECK-NEXT:    vrndscalepd $9, (%rdi), %zmm0133; CHECK-NEXT:    retq134  %p = load <8 x double>, ptr %ptr135  %t = call <8 x double> @llvm.floor.v8f64(<8 x double> %p)136  ret <8 x double> %t137}138 139define <16 x float> @floor_v16f32_load(ptr %ptr) {140; CHECK-LABEL: floor_v16f32_load:141; CHECK:       ## %bb.0:142; CHECK-NEXT:    vrndscaleps $9, (%rdi), %zmm0143; CHECK-NEXT:    retq144  %p = load <16 x float>, ptr %ptr145  %t = call <16 x float> @llvm.floor.v16f32(<16 x float> %p)146  ret <16 x float> %t147}148 149define <2 x double> @floor_v2f64_mask(<2 x double> %p, <2 x double> %passthru, <2 x i64> %cmp) {150; CHECK-LABEL: floor_v2f64_mask:151; CHECK:       ## %bb.0:152; CHECK-NEXT:    vptestnmq %xmm2, %xmm2, %k1153; CHECK-NEXT:    vrndscalepd $9, %xmm0, %xmm1 {%k1}154; CHECK-NEXT:    vmovapd %xmm1, %xmm0155; CHECK-NEXT:    retq156  %c = icmp eq <2 x i64> %cmp, zeroinitializer157  %t = call <2 x double> @llvm.floor.v2f64(<2 x double> %p)158  %s = select <2 x i1> %c, <2 x double> %t, <2 x double> %passthru159  ret <2 x double> %s160}161 162define <4 x float> @floor_v4f32_mask(<4 x float> %p, <4 x float> %passthru, <4 x i32> %cmp) {163; CHECK-LABEL: floor_v4f32_mask:164; CHECK:       ## %bb.0:165; CHECK-NEXT:    vptestnmd %xmm2, %xmm2, %k1166; CHECK-NEXT:    vrndscaleps $9, %xmm0, %xmm1 {%k1}167; CHECK-NEXT:    vmovaps %xmm1, %xmm0168; CHECK-NEXT:    retq169  %c = icmp eq <4 x i32> %cmp, zeroinitializer170  %t = call <4 x float> @llvm.floor.v4f32(<4 x float> %p)171  %s = select <4 x i1> %c, <4 x float> %t, <4 x float> %passthru172  ret <4 x float> %s173}174 175define <4 x double> @floor_v4f64_mask(<4 x double> %p, <4 x double> %passthru, <4 x i64> %cmp) {176; CHECK-LABEL: floor_v4f64_mask:177; CHECK:       ## %bb.0:178; CHECK-NEXT:    vptestnmq %ymm2, %ymm2, %k1179; CHECK-NEXT:    vrndscalepd $9, %ymm0, %ymm1 {%k1}180; CHECK-NEXT:    vmovapd %ymm1, %ymm0181; CHECK-NEXT:    retq182  %c = icmp eq <4 x i64> %cmp, zeroinitializer183  %t = call <4 x double> @llvm.floor.v4f64(<4 x double> %p)184  %s = select <4 x i1> %c, <4 x double> %t, <4 x double> %passthru185  ret <4 x double> %s186}187 188define <8 x float> @floor_v8f32_mask(<8 x float> %p, <8 x float> %passthru, <8 x i32> %cmp) {189; CHECK-LABEL: floor_v8f32_mask:190; CHECK:       ## %bb.0:191; CHECK-NEXT:    vptestnmd %ymm2, %ymm2, %k1192; CHECK-NEXT:    vrndscaleps $9, %ymm0, %ymm1 {%k1}193; CHECK-NEXT:    vmovaps %ymm1, %ymm0194; CHECK-NEXT:    retq195  %c = icmp eq <8 x i32> %cmp, zeroinitializer196  %t = call <8 x float> @llvm.floor.v8f32(<8 x float> %p)197  %s = select <8 x i1> %c, <8 x float> %t, <8 x float> %passthru198  ret <8 x float> %s199}200 201define <8 x double> @floor_v8f64_mask(<8 x double> %p, <8 x double> %passthru, <8 x i64> %cmp) {202; CHECK-LABEL: floor_v8f64_mask:203; CHECK:       ## %bb.0:204; CHECK-NEXT:    vptestnmq %zmm2, %zmm2, %k1205; CHECK-NEXT:    vrndscalepd $9, %zmm0, %zmm1 {%k1}206; CHECK-NEXT:    vmovapd %zmm1, %zmm0207; CHECK-NEXT:    retq208  %c = icmp eq <8 x i64> %cmp, zeroinitializer209  %t = call <8 x double> @llvm.floor.v8f64(<8 x double> %p)210  %s = select <8 x i1> %c, <8 x double> %t, <8 x double> %passthru211  ret <8 x double> %s212}213 214define <16 x float> @floor_v16f32_mask(<16 x float> %p, <16 x float> %passthru, <16 x i32> %cmp) {215; CHECK-LABEL: floor_v16f32_mask:216; CHECK:       ## %bb.0:217; CHECK-NEXT:    vptestnmd %zmm2, %zmm2, %k1218; CHECK-NEXT:    vrndscaleps $9, %zmm0, %zmm1 {%k1}219; CHECK-NEXT:    vmovaps %zmm1, %zmm0220; CHECK-NEXT:    retq221  %c = icmp eq <16 x i32> %cmp, zeroinitializer222  %t = call <16 x float> @llvm.floor.v16f32(<16 x float> %p)223  %s = select <16 x i1> %c, <16 x float> %t, <16 x float> %passthru224  ret <16 x float> %s225}226 227define <2 x double> @floor_v2f64_maskz(<2 x double> %p, <2 x i64> %cmp) {228; CHECK-LABEL: floor_v2f64_maskz:229; CHECK:       ## %bb.0:230; CHECK-NEXT:    vptestnmq %xmm1, %xmm1, %k1231; CHECK-NEXT:    vrndscalepd $9, %xmm0, %xmm0 {%k1} {z}232; CHECK-NEXT:    retq233  %c = icmp eq <2 x i64> %cmp, zeroinitializer234  %t = call <2 x double> @llvm.floor.v2f64(<2 x double> %p)235  %s = select <2 x i1> %c, <2 x double> %t, <2 x double> zeroinitializer236  ret <2 x double> %s237}238 239define <4 x float> @floor_v4f32_maskz(<4 x float> %p, <4 x i32> %cmp) {240; CHECK-LABEL: floor_v4f32_maskz:241; CHECK:       ## %bb.0:242; CHECK-NEXT:    vptestnmd %xmm1, %xmm1, %k1243; CHECK-NEXT:    vrndscaleps $9, %xmm0, %xmm0 {%k1} {z}244; CHECK-NEXT:    retq245  %c = icmp eq <4 x i32> %cmp, zeroinitializer246  %t = call <4 x float> @llvm.floor.v4f32(<4 x float> %p)247  %s = select <4 x i1> %c, <4 x float> %t, <4 x float> zeroinitializer248  ret <4 x float> %s249}250 251define <4 x double> @floor_v4f64_maskz(<4 x double> %p, <4 x i64> %cmp) {252; CHECK-LABEL: floor_v4f64_maskz:253; CHECK:       ## %bb.0:254; CHECK-NEXT:    vptestnmq %ymm1, %ymm1, %k1255; CHECK-NEXT:    vrndscalepd $9, %ymm0, %ymm0 {%k1} {z}256; CHECK-NEXT:    retq257  %c = icmp eq <4 x i64> %cmp, zeroinitializer258  %t = call <4 x double> @llvm.floor.v4f64(<4 x double> %p)259  %s = select <4 x i1> %c, <4 x double> %t, <4 x double> zeroinitializer260  ret <4 x double> %s261}262 263define <8 x float> @floor_v8f32_maskz(<8 x float> %p, <8 x i32> %cmp) {264; CHECK-LABEL: floor_v8f32_maskz:265; CHECK:       ## %bb.0:266; CHECK-NEXT:    vptestnmd %ymm1, %ymm1, %k1267; CHECK-NEXT:    vrndscaleps $9, %ymm0, %ymm0 {%k1} {z}268; CHECK-NEXT:    retq269  %c = icmp eq <8 x i32> %cmp, zeroinitializer270  %t = call <8 x float> @llvm.floor.v8f32(<8 x float> %p)271  %s = select <8 x i1> %c, <8 x float> %t, <8 x float> zeroinitializer272  ret <8 x float> %s273}274 275define <8 x double> @floor_v8f64_maskz(<8 x double> %p, <8 x i64> %cmp) {276; CHECK-LABEL: floor_v8f64_maskz:277; CHECK:       ## %bb.0:278; CHECK-NEXT:    vptestnmq %zmm1, %zmm1, %k1279; CHECK-NEXT:    vrndscalepd $9, %zmm0, %zmm0 {%k1} {z}280; CHECK-NEXT:    retq281  %c = icmp eq <8 x i64> %cmp, zeroinitializer282  %t = call <8 x double> @llvm.floor.v8f64(<8 x double> %p)283  %s = select <8 x i1> %c, <8 x double> %t, <8 x double> zeroinitializer284  ret <8 x double> %s285}286 287define <16 x float> @floor_v16f32_maskz(<16 x float> %p, <16 x i32> %cmp) {288; CHECK-LABEL: floor_v16f32_maskz:289; CHECK:       ## %bb.0:290; CHECK-NEXT:    vptestnmd %zmm1, %zmm1, %k1291; CHECK-NEXT:    vrndscaleps $9, %zmm0, %zmm0 {%k1} {z}292; CHECK-NEXT:    retq293  %c = icmp eq <16 x i32> %cmp, zeroinitializer294  %t = call <16 x float> @llvm.floor.v16f32(<16 x float> %p)295  %s = select <16 x i1> %c, <16 x float> %t, <16 x float> zeroinitializer296  ret <16 x float> %s297}298 299define <2 x double> @floor_v2f64_mask_load(ptr %ptr, <2 x double> %passthru, <2 x i64> %cmp) {300; CHECK-LABEL: floor_v2f64_mask_load:301; CHECK:       ## %bb.0:302; CHECK-NEXT:    vptestnmq %xmm1, %xmm1, %k1303; CHECK-NEXT:    vrndscalepd $9, (%rdi), %xmm0 {%k1}304; CHECK-NEXT:    retq305  %c = icmp eq <2 x i64> %cmp, zeroinitializer306  %p = load <2 x double>, ptr %ptr307  %t = call <2 x double> @llvm.floor.v2f64(<2 x double> %p)308  %s = select <2 x i1> %c, <2 x double> %t, <2 x double> %passthru309  ret <2 x double> %s310}311 312define <4 x float> @floor_v4f32_mask_load(ptr %ptr, <4 x float> %passthru, <4 x i32> %cmp) {313; CHECK-LABEL: floor_v4f32_mask_load:314; CHECK:       ## %bb.0:315; CHECK-NEXT:    vptestnmd %xmm1, %xmm1, %k1316; CHECK-NEXT:    vrndscaleps $9, (%rdi), %xmm0 {%k1}317; CHECK-NEXT:    retq318  %c = icmp eq <4 x i32> %cmp, zeroinitializer319  %p = load <4 x float>, ptr %ptr320  %t = call <4 x float> @llvm.floor.v4f32(<4 x float> %p)321  %s = select <4 x i1> %c, <4 x float> %t, <4 x float> %passthru322  ret <4 x float> %s323}324 325define <4 x double> @floor_v4f64_mask_load(ptr %ptr, <4 x double> %passthru, <4 x i64> %cmp) {326; CHECK-LABEL: floor_v4f64_mask_load:327; CHECK:       ## %bb.0:328; CHECK-NEXT:    vptestnmq %ymm1, %ymm1, %k1329; CHECK-NEXT:    vrndscalepd $9, (%rdi), %ymm0 {%k1}330; CHECK-NEXT:    retq331  %c = icmp eq <4 x i64> %cmp, zeroinitializer332  %p = load <4 x double>, ptr %ptr333  %t = call <4 x double> @llvm.floor.v4f64(<4 x double> %p)334  %s = select <4 x i1> %c, <4 x double> %t, <4 x double> %passthru335  ret <4 x double> %s336}337 338define <8 x float> @floor_v8f32_mask_load(ptr %ptr, <8 x float> %passthru, <8 x i32> %cmp) {339; CHECK-LABEL: floor_v8f32_mask_load:340; CHECK:       ## %bb.0:341; CHECK-NEXT:    vptestnmd %ymm1, %ymm1, %k1342; CHECK-NEXT:    vrndscaleps $9, (%rdi), %ymm0 {%k1}343; CHECK-NEXT:    retq344  %c = icmp eq <8 x i32> %cmp, zeroinitializer345  %p = load <8 x float>, ptr %ptr346  %t = call <8 x float> @llvm.floor.v8f32(<8 x float> %p)347  %s = select <8 x i1> %c, <8 x float> %t, <8 x float> %passthru348  ret <8 x float> %s349}350 351define <8 x double> @floor_v8f64_mask_load(ptr %ptr, <8 x double> %passthru, <8 x i64> %cmp) {352; CHECK-LABEL: floor_v8f64_mask_load:353; CHECK:       ## %bb.0:354; CHECK-NEXT:    vptestnmq %zmm1, %zmm1, %k1355; CHECK-NEXT:    vrndscalepd $9, (%rdi), %zmm0 {%k1}356; CHECK-NEXT:    retq357  %c = icmp eq <8 x i64> %cmp, zeroinitializer358  %p = load <8 x double>, ptr %ptr359  %t = call <8 x double> @llvm.floor.v8f64(<8 x double> %p)360  %s = select <8 x i1> %c, <8 x double> %t, <8 x double> %passthru361  ret <8 x double> %s362}363 364define <16 x float> @floor_v16f32_mask_load(ptr %ptr, <16 x float> %passthru, <16 x i32> %cmp) {365; CHECK-LABEL: floor_v16f32_mask_load:366; CHECK:       ## %bb.0:367; CHECK-NEXT:    vptestnmd %zmm1, %zmm1, %k1368; CHECK-NEXT:    vrndscaleps $9, (%rdi), %zmm0 {%k1}369; CHECK-NEXT:    retq370  %c = icmp eq <16 x i32> %cmp, zeroinitializer371  %p = load <16 x float>, ptr %ptr372  %t = call <16 x float> @llvm.floor.v16f32(<16 x float> %p)373  %s = select <16 x i1> %c, <16 x float> %t, <16 x float> %passthru374  ret <16 x float> %s375}376 377define <2 x double> @floor_v2f64_maskz_load(ptr %ptr, <2 x i64> %cmp) {378; CHECK-LABEL: floor_v2f64_maskz_load:379; CHECK:       ## %bb.0:380; CHECK-NEXT:    vptestnmq %xmm0, %xmm0, %k1381; CHECK-NEXT:    vrndscalepd $9, (%rdi), %xmm0 {%k1} {z}382; CHECK-NEXT:    retq383  %c = icmp eq <2 x i64> %cmp, zeroinitializer384  %p = load <2 x double>, ptr %ptr385  %t = call <2 x double> @llvm.floor.v2f64(<2 x double> %p)386  %s = select <2 x i1> %c, <2 x double> %t, <2 x double> zeroinitializer387  ret <2 x double> %s388}389 390define <4 x float> @floor_v4f32_maskz_load(ptr %ptr, <4 x i32> %cmp) {391; CHECK-LABEL: floor_v4f32_maskz_load:392; CHECK:       ## %bb.0:393; CHECK-NEXT:    vptestnmd %xmm0, %xmm0, %k1394; CHECK-NEXT:    vrndscaleps $9, (%rdi), %xmm0 {%k1} {z}395; CHECK-NEXT:    retq396  %c = icmp eq <4 x i32> %cmp, zeroinitializer397  %p = load <4 x float>, ptr %ptr398  %t = call <4 x float> @llvm.floor.v4f32(<4 x float> %p)399  %s = select <4 x i1> %c, <4 x float> %t, <4 x float> zeroinitializer400  ret <4 x float> %s401}402 403define <4 x double> @floor_v4f64_maskz_load(ptr %ptr, <4 x i64> %cmp) {404; CHECK-LABEL: floor_v4f64_maskz_load:405; CHECK:       ## %bb.0:406; CHECK-NEXT:    vptestnmq %ymm0, %ymm0, %k1407; CHECK-NEXT:    vrndscalepd $9, (%rdi), %ymm0 {%k1} {z}408; CHECK-NEXT:    retq409  %c = icmp eq <4 x i64> %cmp, zeroinitializer410  %p = load <4 x double>, ptr %ptr411  %t = call <4 x double> @llvm.floor.v4f64(<4 x double> %p)412  %s = select <4 x i1> %c, <4 x double> %t, <4 x double> zeroinitializer413  ret <4 x double> %s414}415 416define <8 x float> @floor_v8f32_maskz_load(ptr %ptr, <8 x i32> %cmp) {417; CHECK-LABEL: floor_v8f32_maskz_load:418; CHECK:       ## %bb.0:419; CHECK-NEXT:    vptestnmd %ymm0, %ymm0, %k1420; CHECK-NEXT:    vrndscaleps $9, (%rdi), %ymm0 {%k1} {z}421; CHECK-NEXT:    retq422  %c = icmp eq <8 x i32> %cmp, zeroinitializer423  %p = load <8 x float>, ptr %ptr424  %t = call <8 x float> @llvm.floor.v8f32(<8 x float> %p)425  %s = select <8 x i1> %c, <8 x float> %t, <8 x float> zeroinitializer426  ret <8 x float> %s427}428 429define <8 x double> @floor_v8f64_maskz_load(ptr %ptr, <8 x i64> %cmp) {430; CHECK-LABEL: floor_v8f64_maskz_load:431; CHECK:       ## %bb.0:432; CHECK-NEXT:    vptestnmq %zmm0, %zmm0, %k1433; CHECK-NEXT:    vrndscalepd $9, (%rdi), %zmm0 {%k1} {z}434; CHECK-NEXT:    retq435  %c = icmp eq <8 x i64> %cmp, zeroinitializer436  %p = load <8 x double>, ptr %ptr437  %t = call <8 x double> @llvm.floor.v8f64(<8 x double> %p)438  %s = select <8 x i1> %c, <8 x double> %t, <8 x double> zeroinitializer439  ret <8 x double> %s440}441 442define <16 x float> @floor_v16f32_maskz_load(ptr %ptr, <16 x i32> %cmp) {443; CHECK-LABEL: floor_v16f32_maskz_load:444; CHECK:       ## %bb.0:445; CHECK-NEXT:    vptestnmd %zmm0, %zmm0, %k1446; CHECK-NEXT:    vrndscaleps $9, (%rdi), %zmm0 {%k1} {z}447; CHECK-NEXT:    retq448  %c = icmp eq <16 x i32> %cmp, zeroinitializer449  %p = load <16 x float>, ptr %ptr450  %t = call <16 x float> @llvm.floor.v16f32(<16 x float> %p)451  %s = select <16 x i1> %c, <16 x float> %t, <16 x float> zeroinitializer452  ret <16 x float> %s453}454 455define <2 x double> @floor_v2f64_broadcast(ptr %ptr) {456; CHECK-LABEL: floor_v2f64_broadcast:457; CHECK:       ## %bb.0:458; CHECK-NEXT:    vrndscalepd $9, (%rdi){1to2}, %xmm0459; CHECK-NEXT:    retq460  %ps = load double, ptr %ptr461  %pins = insertelement <2 x double> undef, double %ps, i32 0462  %p = shufflevector <2 x double> %pins, <2 x double> undef, <2 x i32> zeroinitializer463  %t = call <2 x double> @llvm.floor.v2f64(<2 x double> %p)464  ret <2 x double> %t465}466 467define <4 x float> @floor_v4f32_broadcast(ptr %ptr) {468; CHECK-LABEL: floor_v4f32_broadcast:469; CHECK:       ## %bb.0:470; CHECK-NEXT:    vrndscaleps $9, (%rdi){1to4}, %xmm0471; CHECK-NEXT:    retq472  %ps = load float, ptr %ptr473  %pins = insertelement <4 x float> undef, float %ps, i32 0474  %p = shufflevector <4 x float> %pins, <4 x float> undef, <4 x i32> zeroinitializer475  %t = call <4 x float> @llvm.floor.v4f32(<4 x float> %p)476  ret <4 x float> %t477}478 479define <4 x double> @floor_v4f64_broadcast(ptr %ptr){480; CHECK-LABEL: floor_v4f64_broadcast:481; CHECK:       ## %bb.0:482; CHECK-NEXT:    vrndscalepd $9, (%rdi){1to4}, %ymm0483; CHECK-NEXT:    retq484  %ps = load double, ptr %ptr485  %pins = insertelement <4 x double> undef, double %ps, i32 0486  %p = shufflevector <4 x double> %pins, <4 x double> undef, <4 x i32> zeroinitializer487  %t = call <4 x double> @llvm.floor.v4f64(<4 x double> %p)488  ret <4 x double> %t489}490 491define <8 x float> @floor_v8f32_broadcast(ptr %ptr) {492; CHECK-LABEL: floor_v8f32_broadcast:493; CHECK:       ## %bb.0:494; CHECK-NEXT:    vrndscaleps $9, (%rdi){1to8}, %ymm0495; CHECK-NEXT:    retq496  %ps = load float, ptr %ptr497  %pins = insertelement <8 x float> undef, float %ps, i32 0498  %p = shufflevector <8 x float> %pins, <8 x float> undef, <8 x i32> zeroinitializer499  %t = call <8 x float> @llvm.floor.v8f32(<8 x float> %p)500  ret <8 x float> %t501}502 503define <8 x double> @floor_v8f64_broadcast(ptr %ptr){504; CHECK-LABEL: floor_v8f64_broadcast:505; CHECK:       ## %bb.0:506; CHECK-NEXT:    vrndscalepd $9, (%rdi){1to8}, %zmm0507; CHECK-NEXT:    retq508  %ps = load double, ptr %ptr509  %pins = insertelement <8 x double> undef, double %ps, i32 0510  %p = shufflevector <8 x double> %pins, <8 x double> undef, <8 x i32> zeroinitializer511  %t = call <8 x double> @llvm.floor.v8f64(<8 x double> %p)512  ret <8 x double> %t513}514 515define <16 x float> @floor_v16f32_broadcast(ptr %ptr) {516; CHECK-LABEL: floor_v16f32_broadcast:517; CHECK:       ## %bb.0:518; CHECK-NEXT:    vrndscaleps $9, (%rdi){1to16}, %zmm0519; CHECK-NEXT:    retq520  %ps = load float, ptr %ptr521  %pins = insertelement <16 x float> undef, float %ps, i32 0522  %p = shufflevector <16 x float> %pins, <16 x float> undef, <16 x i32> zeroinitializer523  %t = call <16 x float> @llvm.floor.v16f32(<16 x float> %p)524  ret <16 x float> %t525}526 527define <2 x double> @floor_v2f64_mask_broadcast(ptr %ptr, <2 x double> %passthru, <2 x i64> %cmp) {528; CHECK-LABEL: floor_v2f64_mask_broadcast:529; CHECK:       ## %bb.0:530; CHECK-NEXT:    vptestnmq %xmm1, %xmm1, %k1531; CHECK-NEXT:    vrndscalepd $9, (%rdi){1to2}, %xmm0 {%k1}532; CHECK-NEXT:    retq533  %c = icmp eq <2 x i64> %cmp, zeroinitializer534  %ps = load double, ptr %ptr535  %pins = insertelement <2 x double> undef, double %ps, i32 0536  %p = shufflevector <2 x double> %pins, <2 x double> undef, <2 x i32> zeroinitializer537  %t = call <2 x double> @llvm.floor.v2f64(<2 x double> %p)538  %s = select <2 x i1> %c, <2 x double> %t, <2 x double> %passthru539  ret <2 x double> %s540}541 542define <4 x float> @floor_v4f32_mask_broadcast(ptr %ptr, <4 x float> %passthru, <4 x i32> %cmp) {543; CHECK-LABEL: floor_v4f32_mask_broadcast:544; CHECK:       ## %bb.0:545; CHECK-NEXT:    vptestnmd %xmm1, %xmm1, %k1546; CHECK-NEXT:    vrndscaleps $9, (%rdi){1to4}, %xmm0 {%k1}547; CHECK-NEXT:    retq548  %c = icmp eq <4 x i32> %cmp, zeroinitializer549  %ps = load float, ptr %ptr550  %pins = insertelement <4 x float> undef, float %ps, i32 0551  %p = shufflevector <4 x float> %pins, <4 x float> undef, <4 x i32> zeroinitializer552  %t = call <4 x float> @llvm.floor.v4f32(<4 x float> %p)553  %s = select <4 x i1> %c, <4 x float> %t, <4 x float> %passthru554  ret <4 x float> %s555}556 557define <4 x double> @floor_v4f64_mask_broadcast(ptr %ptr, <4 x double> %passthru, <4 x i64> %cmp) {558; CHECK-LABEL: floor_v4f64_mask_broadcast:559; CHECK:       ## %bb.0:560; CHECK-NEXT:    vptestnmq %ymm1, %ymm1, %k1561; CHECK-NEXT:    vrndscalepd $9, (%rdi){1to4}, %ymm0 {%k1}562; CHECK-NEXT:    retq563  %c = icmp eq <4 x i64> %cmp, zeroinitializer564  %ps = load double, ptr %ptr565  %pins = insertelement <4 x double> undef, double %ps, i32 0566  %p = shufflevector <4 x double> %pins, <4 x double> undef, <4 x i32> zeroinitializer567  %t = call <4 x double> @llvm.floor.v4f64(<4 x double> %p)568  %s = select <4 x i1> %c, <4 x double> %t, <4 x double> %passthru569  ret <4 x double> %s570}571 572define <8 x float> @floor_v8f32_mask_broadcast(ptr %ptr, <8 x float> %passthru, <8 x i32> %cmp) {573; CHECK-LABEL: floor_v8f32_mask_broadcast:574; CHECK:       ## %bb.0:575; CHECK-NEXT:    vptestnmd %ymm1, %ymm1, %k1576; CHECK-NEXT:    vrndscaleps $9, (%rdi){1to8}, %ymm0 {%k1}577; CHECK-NEXT:    retq578  %c = icmp eq <8 x i32> %cmp, zeroinitializer579  %ps = load float, ptr %ptr580  %pins = insertelement <8 x float> undef, float %ps, i32 0581  %p = shufflevector <8 x float> %pins, <8 x float> undef, <8 x i32> zeroinitializer582  %t = call <8 x float> @llvm.floor.v8f32(<8 x float> %p)583  %s = select <8 x i1> %c, <8 x float> %t, <8 x float> %passthru584  ret <8 x float> %s585}586 587define <8 x double> @floor_v8f64_mask_broadcast(ptr %ptr, <8 x double> %passthru, <8 x i64> %cmp) {588; CHECK-LABEL: floor_v8f64_mask_broadcast:589; CHECK:       ## %bb.0:590; CHECK-NEXT:    vptestnmq %zmm1, %zmm1, %k1591; CHECK-NEXT:    vrndscalepd $9, (%rdi){1to8}, %zmm0 {%k1}592; CHECK-NEXT:    retq593  %c = icmp eq <8 x i64> %cmp, zeroinitializer594  %ps = load double, ptr %ptr595  %pins = insertelement <8 x double> undef, double %ps, i32 0596  %p = shufflevector <8 x double> %pins, <8 x double> undef, <8 x i32> zeroinitializer597  %t = call <8 x double> @llvm.floor.v8f64(<8 x double> %p)598  %s = select <8 x i1> %c, <8 x double> %t, <8 x double> %passthru599  ret <8 x double> %s600}601 602define <16 x float> @floor_v16f32_mask_broadcast(ptr %ptr, <16 x float> %passthru, <16 x i32> %cmp) {603; CHECK-LABEL: floor_v16f32_mask_broadcast:604; CHECK:       ## %bb.0:605; CHECK-NEXT:    vptestnmd %zmm1, %zmm1, %k1606; CHECK-NEXT:    vrndscaleps $9, (%rdi){1to16}, %zmm0 {%k1}607; CHECK-NEXT:    retq608  %c = icmp eq <16 x i32> %cmp, zeroinitializer609  %ps = load float, ptr %ptr610  %pins = insertelement <16 x float> undef, float %ps, i32 0611  %p = shufflevector <16 x float> %pins, <16 x float> undef, <16 x i32> zeroinitializer612  %t = call <16 x float> @llvm.floor.v16f32(<16 x float> %p)613  %s = select <16 x i1> %c, <16 x float> %t, <16 x float> %passthru614  ret <16 x float> %s615}616 617define <2 x double> @floor_v2f64_maskz_broadcast(ptr %ptr, <2 x i64> %cmp) {618; CHECK-LABEL: floor_v2f64_maskz_broadcast:619; CHECK:       ## %bb.0:620; CHECK-NEXT:    vptestnmq %xmm0, %xmm0, %k1621; CHECK-NEXT:    vrndscalepd $9, (%rdi){1to2}, %xmm0 {%k1} {z}622; CHECK-NEXT:    retq623  %c = icmp eq <2 x i64> %cmp, zeroinitializer624  %ps = load double, ptr %ptr625  %pins = insertelement <2 x double> undef, double %ps, i32 0626  %p = shufflevector <2 x double> %pins, <2 x double> undef, <2 x i32> zeroinitializer627  %t = call <2 x double> @llvm.floor.v2f64(<2 x double> %p)628  %s = select <2 x i1> %c, <2 x double> %t, <2 x double> zeroinitializer629  ret <2 x double> %s630}631 632define <4 x float> @floor_v4f32_maskz_broadcast(ptr %ptr, <4 x i32> %cmp) {633; CHECK-LABEL: floor_v4f32_maskz_broadcast:634; CHECK:       ## %bb.0:635; CHECK-NEXT:    vptestnmd %xmm0, %xmm0, %k1636; CHECK-NEXT:    vrndscaleps $9, (%rdi){1to4}, %xmm0 {%k1} {z}637; CHECK-NEXT:    retq638  %c = icmp eq <4 x i32> %cmp, zeroinitializer639  %ps = load float, ptr %ptr640  %pins = insertelement <4 x float> undef, float %ps, i32 0641  %p = shufflevector <4 x float> %pins, <4 x float> undef, <4 x i32> zeroinitializer642  %t = call <4 x float> @llvm.floor.v4f32(<4 x float> %p)643  %s = select <4 x i1> %c, <4 x float> %t, <4 x float> zeroinitializer644  ret <4 x float> %s645}646 647define <4 x double> @floor_v4f64_maskz_broadcast(ptr %ptr, <4 x i64> %cmp) {648; CHECK-LABEL: floor_v4f64_maskz_broadcast:649; CHECK:       ## %bb.0:650; CHECK-NEXT:    vptestnmq %ymm0, %ymm0, %k1651; CHECK-NEXT:    vrndscalepd $9, (%rdi){1to4}, %ymm0 {%k1} {z}652; CHECK-NEXT:    retq653  %c = icmp eq <4 x i64> %cmp, zeroinitializer654  %ps = load double, ptr %ptr655  %pins = insertelement <4 x double> undef, double %ps, i32 0656  %p = shufflevector <4 x double> %pins, <4 x double> undef, <4 x i32> zeroinitializer657  %t = call <4 x double> @llvm.floor.v4f64(<4 x double> %p)658  %s = select <4 x i1> %c, <4 x double> %t, <4 x double> zeroinitializer659  ret <4 x double> %s660}661 662define <8 x float> @floor_v8f32_maskz_broadcast(ptr %ptr, <8 x i32> %cmp) {663; CHECK-LABEL: floor_v8f32_maskz_broadcast:664; CHECK:       ## %bb.0:665; CHECK-NEXT:    vptestnmd %ymm0, %ymm0, %k1666; CHECK-NEXT:    vrndscaleps $9, (%rdi){1to8}, %ymm0 {%k1} {z}667; CHECK-NEXT:    retq668  %c = icmp eq <8 x i32> %cmp, zeroinitializer669  %ps = load float, ptr %ptr670  %pins = insertelement <8 x float> undef, float %ps, i32 0671  %p = shufflevector <8 x float> %pins, <8 x float> undef, <8 x i32> zeroinitializer672  %t = call <8 x float> @llvm.floor.v8f32(<8 x float> %p)673  %s = select <8 x i1> %c, <8 x float> %t, <8 x float> zeroinitializer674  ret <8 x float> %s675}676 677define <8 x double> @floor_v8f64_maskz_broadcast(ptr %ptr, <8 x i64> %cmp) {678; CHECK-LABEL: floor_v8f64_maskz_broadcast:679; CHECK:       ## %bb.0:680; CHECK-NEXT:    vptestnmq %zmm0, %zmm0, %k1681; CHECK-NEXT:    vrndscalepd $9, (%rdi){1to8}, %zmm0 {%k1} {z}682; CHECK-NEXT:    retq683  %c = icmp eq <8 x i64> %cmp, zeroinitializer684  %ps = load double, ptr %ptr685  %pins = insertelement <8 x double> undef, double %ps, i32 0686  %p = shufflevector <8 x double> %pins, <8 x double> undef, <8 x i32> zeroinitializer687  %t = call <8 x double> @llvm.floor.v8f64(<8 x double> %p)688  %s = select <8 x i1> %c, <8 x double> %t, <8 x double> zeroinitializer689  ret <8 x double> %s690}691 692define <16 x float> @floor_v16f32_maskz_broadcast(ptr %ptr, <16 x i32> %cmp) {693; CHECK-LABEL: floor_v16f32_maskz_broadcast:694; CHECK:       ## %bb.0:695; CHECK-NEXT:    vptestnmd %zmm0, %zmm0, %k1696; CHECK-NEXT:    vrndscaleps $9, (%rdi){1to16}, %zmm0 {%k1} {z}697; CHECK-NEXT:    retq698  %c = icmp eq <16 x i32> %cmp, zeroinitializer699  %ps = load float, ptr %ptr700  %pins = insertelement <16 x float> undef, float %ps, i32 0701  %p = shufflevector <16 x float> %pins, <16 x float> undef, <16 x i32> zeroinitializer702  %t = call <16 x float> @llvm.floor.v16f32(<16 x float> %p)703  %s = select <16 x i1> %c, <16 x float> %t, <16 x float> zeroinitializer704  ret <16 x float> %s705}706 707define <2 x double> @ceil_v2f64(<2 x double> %p) {708; CHECK-LABEL: ceil_v2f64:709; CHECK:       ## %bb.0:710; CHECK-NEXT:    vroundpd $10, %xmm0, %xmm0711; CHECK-NEXT:    retq712  %t = call <2 x double> @llvm.ceil.v2f64(<2 x double> %p)713  ret <2 x double> %t714}715 716define <4 x float> @ceil_v4f32(<4 x float> %p) {717; CHECK-LABEL: ceil_v4f32:718; CHECK:       ## %bb.0:719; CHECK-NEXT:    vroundps $10, %xmm0, %xmm0720; CHECK-NEXT:    retq721  %t = call <4 x float> @llvm.ceil.v4f32(<4 x float> %p)722  ret <4 x float> %t723}724 725define <4 x double> @ceil_v4f64(<4 x double> %p){726; CHECK-LABEL: ceil_v4f64:727; CHECK:       ## %bb.0:728; CHECK-NEXT:    vroundpd $10, %ymm0, %ymm0729; CHECK-NEXT:    retq730  %t = call <4 x double> @llvm.ceil.v4f64(<4 x double> %p)731  ret <4 x double> %t732}733 734define <8 x float> @ceil_v8f32(<8 x float> %p) {735; CHECK-LABEL: ceil_v8f32:736; CHECK:       ## %bb.0:737; CHECK-NEXT:    vroundps $10, %ymm0, %ymm0738; CHECK-NEXT:    retq739  %t = call <8 x float> @llvm.ceil.v8f32(<8 x float> %p)740  ret <8 x float> %t741}742 743define <8 x double> @ceil_v8f64(<8 x double> %p){744; CHECK-LABEL: ceil_v8f64:745; CHECK:       ## %bb.0:746; CHECK-NEXT:    vrndscalepd $10, %zmm0, %zmm0747; CHECK-NEXT:    retq748  %t = call <8 x double> @llvm.ceil.v8f64(<8 x double> %p)749  ret <8 x double> %t750}751 752define <16 x float> @ceil_v16f32(<16 x float> %p) {753; CHECK-LABEL: ceil_v16f32:754; CHECK:       ## %bb.0:755; CHECK-NEXT:    vrndscaleps $10, %zmm0, %zmm0756; CHECK-NEXT:    retq757  %t = call <16 x float> @llvm.ceil.v16f32(<16 x float> %p)758  ret <16 x float> %t759}760 761define <2 x double> @ceil_v2f64_load(ptr %ptr) {762; CHECK-LABEL: ceil_v2f64_load:763; CHECK:       ## %bb.0:764; CHECK-NEXT:    vroundpd $10, (%rdi), %xmm0765; CHECK-NEXT:    retq766  %p = load <2 x double>, ptr %ptr767  %t = call <2 x double> @llvm.ceil.v2f64(<2 x double> %p)768  ret <2 x double> %t769}770 771define <4 x float> @ceil_v4f32_load(ptr %ptr) {772; CHECK-LABEL: ceil_v4f32_load:773; CHECK:       ## %bb.0:774; CHECK-NEXT:    vroundps $10, (%rdi), %xmm0775; CHECK-NEXT:    retq776  %p = load <4 x float>, ptr %ptr777  %t = call <4 x float> @llvm.ceil.v4f32(<4 x float> %p)778  ret <4 x float> %t779}780 781define <4 x double> @ceil_v4f64_load(ptr %ptr){782; CHECK-LABEL: ceil_v4f64_load:783; CHECK:       ## %bb.0:784; CHECK-NEXT:    vroundpd $10, (%rdi), %ymm0785; CHECK-NEXT:    retq786  %p = load <4 x double>, ptr %ptr787  %t = call <4 x double> @llvm.ceil.v4f64(<4 x double> %p)788  ret <4 x double> %t789}790 791define <8 x float> @ceil_v8f32_load(ptr %ptr) {792; CHECK-LABEL: ceil_v8f32_load:793; CHECK:       ## %bb.0:794; CHECK-NEXT:    vroundps $10, (%rdi), %ymm0795; CHECK-NEXT:    retq796  %p = load <8 x float>, ptr %ptr797  %t = call <8 x float> @llvm.ceil.v8f32(<8 x float> %p)798  ret <8 x float> %t799}800 801define <8 x double> @ceil_v8f64_load(ptr %ptr){802; CHECK-LABEL: ceil_v8f64_load:803; CHECK:       ## %bb.0:804; CHECK-NEXT:    vrndscalepd $10, (%rdi), %zmm0805; CHECK-NEXT:    retq806  %p = load <8 x double>, ptr %ptr807  %t = call <8 x double> @llvm.ceil.v8f64(<8 x double> %p)808  ret <8 x double> %t809}810 811define <16 x float> @ceil_v16f32_load(ptr %ptr) {812; CHECK-LABEL: ceil_v16f32_load:813; CHECK:       ## %bb.0:814; CHECK-NEXT:    vrndscaleps $10, (%rdi), %zmm0815; CHECK-NEXT:    retq816  %p = load <16 x float>, ptr %ptr817  %t = call <16 x float> @llvm.ceil.v16f32(<16 x float> %p)818  ret <16 x float> %t819}820 821define <2 x double> @ceil_v2f64_mask(<2 x double> %p, <2 x double> %passthru, <2 x i64> %cmp) {822; CHECK-LABEL: ceil_v2f64_mask:823; CHECK:       ## %bb.0:824; CHECK-NEXT:    vptestnmq %xmm2, %xmm2, %k1825; CHECK-NEXT:    vrndscalepd $10, %xmm0, %xmm1 {%k1}826; CHECK-NEXT:    vmovapd %xmm1, %xmm0827; CHECK-NEXT:    retq828  %c = icmp eq <2 x i64> %cmp, zeroinitializer829  %t = call <2 x double> @llvm.ceil.v2f64(<2 x double> %p)830  %s = select <2 x i1> %c, <2 x double> %t, <2 x double> %passthru831  ret <2 x double> %s832}833 834define <4 x float> @ceil_v4f32_mask(<4 x float> %p, <4 x float> %passthru, <4 x i32> %cmp) {835; CHECK-LABEL: ceil_v4f32_mask:836; CHECK:       ## %bb.0:837; CHECK-NEXT:    vptestnmd %xmm2, %xmm2, %k1838; CHECK-NEXT:    vrndscaleps $10, %xmm0, %xmm1 {%k1}839; CHECK-NEXT:    vmovaps %xmm1, %xmm0840; CHECK-NEXT:    retq841  %c = icmp eq <4 x i32> %cmp, zeroinitializer842  %t = call <4 x float> @llvm.ceil.v4f32(<4 x float> %p)843  %s = select <4 x i1> %c, <4 x float> %t, <4 x float> %passthru844  ret <4 x float> %s845}846 847define <4 x double> @ceil_v4f64_mask(<4 x double> %p, <4 x double> %passthru, <4 x i64> %cmp) {848; CHECK-LABEL: ceil_v4f64_mask:849; CHECK:       ## %bb.0:850; CHECK-NEXT:    vptestnmq %ymm2, %ymm2, %k1851; CHECK-NEXT:    vrndscalepd $10, %ymm0, %ymm1 {%k1}852; CHECK-NEXT:    vmovapd %ymm1, %ymm0853; CHECK-NEXT:    retq854  %c = icmp eq <4 x i64> %cmp, zeroinitializer855  %t = call <4 x double> @llvm.ceil.v4f64(<4 x double> %p)856  %s = select <4 x i1> %c, <4 x double> %t, <4 x double> %passthru857  ret <4 x double> %s858}859 860define <8 x float> @ceil_v8f32_mask(<8 x float> %p, <8 x float> %passthru, <8 x i32> %cmp) {861; CHECK-LABEL: ceil_v8f32_mask:862; CHECK:       ## %bb.0:863; CHECK-NEXT:    vptestnmd %ymm2, %ymm2, %k1864; CHECK-NEXT:    vrndscaleps $10, %ymm0, %ymm1 {%k1}865; CHECK-NEXT:    vmovaps %ymm1, %ymm0866; CHECK-NEXT:    retq867  %c = icmp eq <8 x i32> %cmp, zeroinitializer868  %t = call <8 x float> @llvm.ceil.v8f32(<8 x float> %p)869  %s = select <8 x i1> %c, <8 x float> %t, <8 x float> %passthru870  ret <8 x float> %s871}872 873define <8 x double> @ceil_v8f64_mask(<8 x double> %p, <8 x double> %passthru, <8 x i64> %cmp) {874; CHECK-LABEL: ceil_v8f64_mask:875; CHECK:       ## %bb.0:876; CHECK-NEXT:    vptestnmq %zmm2, %zmm2, %k1877; CHECK-NEXT:    vrndscalepd $10, %zmm0, %zmm1 {%k1}878; CHECK-NEXT:    vmovapd %zmm1, %zmm0879; CHECK-NEXT:    retq880  %c = icmp eq <8 x i64> %cmp, zeroinitializer881  %t = call <8 x double> @llvm.ceil.v8f64(<8 x double> %p)882  %s = select <8 x i1> %c, <8 x double> %t, <8 x double> %passthru883  ret <8 x double> %s884}885 886define <16 x float> @ceil_v16f32_mask(<16 x float> %p, <16 x float> %passthru, <16 x i32> %cmp) {887; CHECK-LABEL: ceil_v16f32_mask:888; CHECK:       ## %bb.0:889; CHECK-NEXT:    vptestnmd %zmm2, %zmm2, %k1890; CHECK-NEXT:    vrndscaleps $10, %zmm0, %zmm1 {%k1}891; CHECK-NEXT:    vmovaps %zmm1, %zmm0892; CHECK-NEXT:    retq893  %c = icmp eq <16 x i32> %cmp, zeroinitializer894  %t = call <16 x float> @llvm.ceil.v16f32(<16 x float> %p)895  %s = select <16 x i1> %c, <16 x float> %t, <16 x float> %passthru896  ret <16 x float> %s897}898 899define <2 x double> @ceil_v2f64_maskz(<2 x double> %p, <2 x i64> %cmp) {900; CHECK-LABEL: ceil_v2f64_maskz:901; CHECK:       ## %bb.0:902; CHECK-NEXT:    vptestnmq %xmm1, %xmm1, %k1903; CHECK-NEXT:    vrndscalepd $10, %xmm0, %xmm0 {%k1} {z}904; CHECK-NEXT:    retq905  %c = icmp eq <2 x i64> %cmp, zeroinitializer906  %t = call <2 x double> @llvm.ceil.v2f64(<2 x double> %p)907  %s = select <2 x i1> %c, <2 x double> %t, <2 x double> zeroinitializer908  ret <2 x double> %s909}910 911define <4 x float> @ceil_v4f32_maskz(<4 x float> %p, <4 x i32> %cmp) {912; CHECK-LABEL: ceil_v4f32_maskz:913; CHECK:       ## %bb.0:914; CHECK-NEXT:    vptestnmd %xmm1, %xmm1, %k1915; CHECK-NEXT:    vrndscaleps $10, %xmm0, %xmm0 {%k1} {z}916; CHECK-NEXT:    retq917  %c = icmp eq <4 x i32> %cmp, zeroinitializer918  %t = call <4 x float> @llvm.ceil.v4f32(<4 x float> %p)919  %s = select <4 x i1> %c, <4 x float> %t, <4 x float> zeroinitializer920  ret <4 x float> %s921}922 923define <4 x double> @ceil_v4f64_maskz(<4 x double> %p, <4 x i64> %cmp) {924; CHECK-LABEL: ceil_v4f64_maskz:925; CHECK:       ## %bb.0:926; CHECK-NEXT:    vptestnmq %ymm1, %ymm1, %k1927; CHECK-NEXT:    vrndscalepd $10, %ymm0, %ymm0 {%k1} {z}928; CHECK-NEXT:    retq929  %c = icmp eq <4 x i64> %cmp, zeroinitializer930  %t = call <4 x double> @llvm.ceil.v4f64(<4 x double> %p)931  %s = select <4 x i1> %c, <4 x double> %t, <4 x double> zeroinitializer932  ret <4 x double> %s933}934 935define <8 x float> @ceil_v8f32_maskz(<8 x float> %p, <8 x i32> %cmp) {936; CHECK-LABEL: ceil_v8f32_maskz:937; CHECK:       ## %bb.0:938; CHECK-NEXT:    vptestnmd %ymm1, %ymm1, %k1939; CHECK-NEXT:    vrndscaleps $10, %ymm0, %ymm0 {%k1} {z}940; CHECK-NEXT:    retq941  %c = icmp eq <8 x i32> %cmp, zeroinitializer942  %t = call <8 x float> @llvm.ceil.v8f32(<8 x float> %p)943  %s = select <8 x i1> %c, <8 x float> %t, <8 x float> zeroinitializer944  ret <8 x float> %s945}946 947define <8 x double> @ceil_v8f64_maskz(<8 x double> %p, <8 x i64> %cmp) {948; CHECK-LABEL: ceil_v8f64_maskz:949; CHECK:       ## %bb.0:950; CHECK-NEXT:    vptestnmq %zmm1, %zmm1, %k1951; CHECK-NEXT:    vrndscalepd $10, %zmm0, %zmm0 {%k1} {z}952; CHECK-NEXT:    retq953  %c = icmp eq <8 x i64> %cmp, zeroinitializer954  %t = call <8 x double> @llvm.ceil.v8f64(<8 x double> %p)955  %s = select <8 x i1> %c, <8 x double> %t, <8 x double> zeroinitializer956  ret <8 x double> %s957}958 959define <16 x float> @ceil_v16f32_maskz(<16 x float> %p, <16 x i32> %cmp) {960; CHECK-LABEL: ceil_v16f32_maskz:961; CHECK:       ## %bb.0:962; CHECK-NEXT:    vptestnmd %zmm1, %zmm1, %k1963; CHECK-NEXT:    vrndscaleps $10, %zmm0, %zmm0 {%k1} {z}964; CHECK-NEXT:    retq965  %c = icmp eq <16 x i32> %cmp, zeroinitializer966  %t = call <16 x float> @llvm.ceil.v16f32(<16 x float> %p)967  %s = select <16 x i1> %c, <16 x float> %t, <16 x float> zeroinitializer968  ret <16 x float> %s969}970 971define <2 x double> @ceil_v2f64_mask_load(ptr %ptr, <2 x double> %passthru, <2 x i64> %cmp) {972; CHECK-LABEL: ceil_v2f64_mask_load:973; CHECK:       ## %bb.0:974; CHECK-NEXT:    vptestnmq %xmm1, %xmm1, %k1975; CHECK-NEXT:    vrndscalepd $10, (%rdi), %xmm0 {%k1}976; CHECK-NEXT:    retq977  %c = icmp eq <2 x i64> %cmp, zeroinitializer978  %p = load <2 x double>, ptr %ptr979  %t = call <2 x double> @llvm.ceil.v2f64(<2 x double> %p)980  %s = select <2 x i1> %c, <2 x double> %t, <2 x double> %passthru981  ret <2 x double> %s982}983 984define <4 x float> @ceil_v4f32_mask_load(ptr %ptr, <4 x float> %passthru, <4 x i32> %cmp) {985; CHECK-LABEL: ceil_v4f32_mask_load:986; CHECK:       ## %bb.0:987; CHECK-NEXT:    vptestnmd %xmm1, %xmm1, %k1988; CHECK-NEXT:    vrndscaleps $10, (%rdi), %xmm0 {%k1}989; CHECK-NEXT:    retq990  %c = icmp eq <4 x i32> %cmp, zeroinitializer991  %p = load <4 x float>, ptr %ptr992  %t = call <4 x float> @llvm.ceil.v4f32(<4 x float> %p)993  %s = select <4 x i1> %c, <4 x float> %t, <4 x float> %passthru994  ret <4 x float> %s995}996 997define <4 x double> @ceil_v4f64_mask_load(ptr %ptr, <4 x double> %passthru, <4 x i64> %cmp) {998; CHECK-LABEL: ceil_v4f64_mask_load:999; CHECK:       ## %bb.0:1000; CHECK-NEXT:    vptestnmq %ymm1, %ymm1, %k11001; CHECK-NEXT:    vrndscalepd $10, (%rdi), %ymm0 {%k1}1002; CHECK-NEXT:    retq1003  %c = icmp eq <4 x i64> %cmp, zeroinitializer1004  %p = load <4 x double>, ptr %ptr1005  %t = call <4 x double> @llvm.ceil.v4f64(<4 x double> %p)1006  %s = select <4 x i1> %c, <4 x double> %t, <4 x double> %passthru1007  ret <4 x double> %s1008}1009 1010define <8 x float> @ceil_v8f32_mask_load(ptr %ptr, <8 x float> %passthru, <8 x i32> %cmp) {1011; CHECK-LABEL: ceil_v8f32_mask_load:1012; CHECK:       ## %bb.0:1013; CHECK-NEXT:    vptestnmd %ymm1, %ymm1, %k11014; CHECK-NEXT:    vrndscaleps $10, (%rdi), %ymm0 {%k1}1015; CHECK-NEXT:    retq1016  %c = icmp eq <8 x i32> %cmp, zeroinitializer1017  %p = load <8 x float>, ptr %ptr1018  %t = call <8 x float> @llvm.ceil.v8f32(<8 x float> %p)1019  %s = select <8 x i1> %c, <8 x float> %t, <8 x float> %passthru1020  ret <8 x float> %s1021}1022 1023define <8 x double> @ceil_v8f64_mask_load(ptr %ptr, <8 x double> %passthru, <8 x i64> %cmp) {1024; CHECK-LABEL: ceil_v8f64_mask_load:1025; CHECK:       ## %bb.0:1026; CHECK-NEXT:    vptestnmq %zmm1, %zmm1, %k11027; CHECK-NEXT:    vrndscalepd $10, (%rdi), %zmm0 {%k1}1028; CHECK-NEXT:    retq1029  %c = icmp eq <8 x i64> %cmp, zeroinitializer1030  %p = load <8 x double>, ptr %ptr1031  %t = call <8 x double> @llvm.ceil.v8f64(<8 x double> %p)1032  %s = select <8 x i1> %c, <8 x double> %t, <8 x double> %passthru1033  ret <8 x double> %s1034}1035 1036define <16 x float> @ceil_v16f32_mask_load(ptr %ptr, <16 x float> %passthru, <16 x i32> %cmp) {1037; CHECK-LABEL: ceil_v16f32_mask_load:1038; CHECK:       ## %bb.0:1039; CHECK-NEXT:    vptestnmd %zmm1, %zmm1, %k11040; CHECK-NEXT:    vrndscaleps $10, (%rdi), %zmm0 {%k1}1041; CHECK-NEXT:    retq1042  %c = icmp eq <16 x i32> %cmp, zeroinitializer1043  %p = load <16 x float>, ptr %ptr1044  %t = call <16 x float> @llvm.ceil.v16f32(<16 x float> %p)1045  %s = select <16 x i1> %c, <16 x float> %t, <16 x float> %passthru1046  ret <16 x float> %s1047}1048 1049define <2 x double> @ceil_v2f64_maskz_load(ptr %ptr, <2 x i64> %cmp) {1050; CHECK-LABEL: ceil_v2f64_maskz_load:1051; CHECK:       ## %bb.0:1052; CHECK-NEXT:    vptestnmq %xmm0, %xmm0, %k11053; CHECK-NEXT:    vrndscalepd $10, (%rdi), %xmm0 {%k1} {z}1054; CHECK-NEXT:    retq1055  %c = icmp eq <2 x i64> %cmp, zeroinitializer1056  %p = load <2 x double>, ptr %ptr1057  %t = call <2 x double> @llvm.ceil.v2f64(<2 x double> %p)1058  %s = select <2 x i1> %c, <2 x double> %t, <2 x double> zeroinitializer1059  ret <2 x double> %s1060}1061 1062define <4 x float> @ceil_v4f32_maskz_load(ptr %ptr, <4 x i32> %cmp) {1063; CHECK-LABEL: ceil_v4f32_maskz_load:1064; CHECK:       ## %bb.0:1065; CHECK-NEXT:    vptestnmd %xmm0, %xmm0, %k11066; CHECK-NEXT:    vrndscaleps $10, (%rdi), %xmm0 {%k1} {z}1067; CHECK-NEXT:    retq1068  %c = icmp eq <4 x i32> %cmp, zeroinitializer1069  %p = load <4 x float>, ptr %ptr1070  %t = call <4 x float> @llvm.ceil.v4f32(<4 x float> %p)1071  %s = select <4 x i1> %c, <4 x float> %t, <4 x float> zeroinitializer1072  ret <4 x float> %s1073}1074 1075define <4 x double> @ceil_v4f64_maskz_load(ptr %ptr, <4 x i64> %cmp) {1076; CHECK-LABEL: ceil_v4f64_maskz_load:1077; CHECK:       ## %bb.0:1078; CHECK-NEXT:    vptestnmq %ymm0, %ymm0, %k11079; CHECK-NEXT:    vrndscalepd $10, (%rdi), %ymm0 {%k1} {z}1080; CHECK-NEXT:    retq1081  %c = icmp eq <4 x i64> %cmp, zeroinitializer1082  %p = load <4 x double>, ptr %ptr1083  %t = call <4 x double> @llvm.ceil.v4f64(<4 x double> %p)1084  %s = select <4 x i1> %c, <4 x double> %t, <4 x double> zeroinitializer1085  ret <4 x double> %s1086}1087 1088define <8 x float> @ceil_v8f32_maskz_load(ptr %ptr, <8 x i32> %cmp) {1089; CHECK-LABEL: ceil_v8f32_maskz_load:1090; CHECK:       ## %bb.0:1091; CHECK-NEXT:    vptestnmd %ymm0, %ymm0, %k11092; CHECK-NEXT:    vrndscaleps $10, (%rdi), %ymm0 {%k1} {z}1093; CHECK-NEXT:    retq1094  %c = icmp eq <8 x i32> %cmp, zeroinitializer1095  %p = load <8 x float>, ptr %ptr1096  %t = call <8 x float> @llvm.ceil.v8f32(<8 x float> %p)1097  %s = select <8 x i1> %c, <8 x float> %t, <8 x float> zeroinitializer1098  ret <8 x float> %s1099}1100 1101define <8 x double> @ceil_v8f64_maskz_load(ptr %ptr, <8 x i64> %cmp) {1102; CHECK-LABEL: ceil_v8f64_maskz_load:1103; CHECK:       ## %bb.0:1104; CHECK-NEXT:    vptestnmq %zmm0, %zmm0, %k11105; CHECK-NEXT:    vrndscalepd $10, (%rdi), %zmm0 {%k1} {z}1106; CHECK-NEXT:    retq1107  %c = icmp eq <8 x i64> %cmp, zeroinitializer1108  %p = load <8 x double>, ptr %ptr1109  %t = call <8 x double> @llvm.ceil.v8f64(<8 x double> %p)1110  %s = select <8 x i1> %c, <8 x double> %t, <8 x double> zeroinitializer1111  ret <8 x double> %s1112}1113 1114define <16 x float> @ceil_v16f32_maskz_load(ptr %ptr, <16 x i32> %cmp) {1115; CHECK-LABEL: ceil_v16f32_maskz_load:1116; CHECK:       ## %bb.0:1117; CHECK-NEXT:    vptestnmd %zmm0, %zmm0, %k11118; CHECK-NEXT:    vrndscaleps $10, (%rdi), %zmm0 {%k1} {z}1119; CHECK-NEXT:    retq1120  %c = icmp eq <16 x i32> %cmp, zeroinitializer1121  %p = load <16 x float>, ptr %ptr1122  %t = call <16 x float> @llvm.ceil.v16f32(<16 x float> %p)1123  %s = select <16 x i1> %c, <16 x float> %t, <16 x float> zeroinitializer1124  ret <16 x float> %s1125}1126 1127define <2 x double> @ceil_v2f64_broadcast(ptr %ptr) {1128; CHECK-LABEL: ceil_v2f64_broadcast:1129; CHECK:       ## %bb.0:1130; CHECK-NEXT:    vrndscalepd $10, (%rdi){1to2}, %xmm01131; CHECK-NEXT:    retq1132  %ps = load double, ptr %ptr1133  %pins = insertelement <2 x double> undef, double %ps, i32 01134  %p = shufflevector <2 x double> %pins, <2 x double> undef, <2 x i32> zeroinitializer1135  %t = call <2 x double> @llvm.ceil.v2f64(<2 x double> %p)1136  ret <2 x double> %t1137}1138 1139define <4 x float> @ceil_v4f32_broadcast(ptr %ptr) {1140; CHECK-LABEL: ceil_v4f32_broadcast:1141; CHECK:       ## %bb.0:1142; CHECK-NEXT:    vrndscaleps $10, (%rdi){1to4}, %xmm01143; CHECK-NEXT:    retq1144  %ps = load float, ptr %ptr1145  %pins = insertelement <4 x float> undef, float %ps, i32 01146  %p = shufflevector <4 x float> %pins, <4 x float> undef, <4 x i32> zeroinitializer1147  %t = call <4 x float> @llvm.ceil.v4f32(<4 x float> %p)1148  ret <4 x float> %t1149}1150 1151define <4 x double> @ceil_v4f64_broadcast(ptr %ptr){1152; CHECK-LABEL: ceil_v4f64_broadcast:1153; CHECK:       ## %bb.0:1154; CHECK-NEXT:    vrndscalepd $10, (%rdi){1to4}, %ymm01155; CHECK-NEXT:    retq1156  %ps = load double, ptr %ptr1157  %pins = insertelement <4 x double> undef, double %ps, i32 01158  %p = shufflevector <4 x double> %pins, <4 x double> undef, <4 x i32> zeroinitializer1159  %t = call <4 x double> @llvm.ceil.v4f64(<4 x double> %p)1160  ret <4 x double> %t1161}1162 1163define <8 x float> @ceil_v8f32_broadcast(ptr %ptr) {1164; CHECK-LABEL: ceil_v8f32_broadcast:1165; CHECK:       ## %bb.0:1166; CHECK-NEXT:    vrndscaleps $10, (%rdi){1to8}, %ymm01167; CHECK-NEXT:    retq1168  %ps = load float, ptr %ptr1169  %pins = insertelement <8 x float> undef, float %ps, i32 01170  %p = shufflevector <8 x float> %pins, <8 x float> undef, <8 x i32> zeroinitializer1171  %t = call <8 x float> @llvm.ceil.v8f32(<8 x float> %p)1172  ret <8 x float> %t1173}1174 1175define <8 x double> @ceil_v8f64_broadcast(ptr %ptr){1176; CHECK-LABEL: ceil_v8f64_broadcast:1177; CHECK:       ## %bb.0:1178; CHECK-NEXT:    vrndscalepd $10, (%rdi){1to8}, %zmm01179; CHECK-NEXT:    retq1180  %ps = load double, ptr %ptr1181  %pins = insertelement <8 x double> undef, double %ps, i32 01182  %p = shufflevector <8 x double> %pins, <8 x double> undef, <8 x i32> zeroinitializer1183  %t = call <8 x double> @llvm.ceil.v8f64(<8 x double> %p)1184  ret <8 x double> %t1185}1186 1187define <16 x float> @ceil_v16f32_broadcast(ptr %ptr) {1188; CHECK-LABEL: ceil_v16f32_broadcast:1189; CHECK:       ## %bb.0:1190; CHECK-NEXT:    vrndscaleps $10, (%rdi){1to16}, %zmm01191; CHECK-NEXT:    retq1192  %ps = load float, ptr %ptr1193  %pins = insertelement <16 x float> undef, float %ps, i32 01194  %p = shufflevector <16 x float> %pins, <16 x float> undef, <16 x i32> zeroinitializer1195  %t = call <16 x float> @llvm.ceil.v16f32(<16 x float> %p)1196  ret <16 x float> %t1197}1198 1199define <2 x double> @ceil_v2f64_mask_broadcast(ptr %ptr, <2 x double> %passthru, <2 x i64> %cmp) {1200; CHECK-LABEL: ceil_v2f64_mask_broadcast:1201; CHECK:       ## %bb.0:1202; CHECK-NEXT:    vptestnmq %xmm1, %xmm1, %k11203; CHECK-NEXT:    vrndscalepd $10, (%rdi){1to2}, %xmm0 {%k1}1204; CHECK-NEXT:    retq1205  %c = icmp eq <2 x i64> %cmp, zeroinitializer1206  %ps = load double, ptr %ptr1207  %pins = insertelement <2 x double> undef, double %ps, i32 01208  %p = shufflevector <2 x double> %pins, <2 x double> undef, <2 x i32> zeroinitializer1209  %t = call <2 x double> @llvm.ceil.v2f64(<2 x double> %p)1210  %s = select <2 x i1> %c, <2 x double> %t, <2 x double> %passthru1211  ret <2 x double> %s1212}1213 1214define <4 x float> @ceil_v4f32_mask_broadcast(ptr %ptr, <4 x float> %passthru, <4 x i32> %cmp) {1215; CHECK-LABEL: ceil_v4f32_mask_broadcast:1216; CHECK:       ## %bb.0:1217; CHECK-NEXT:    vptestnmd %xmm1, %xmm1, %k11218; CHECK-NEXT:    vrndscaleps $10, (%rdi){1to4}, %xmm0 {%k1}1219; CHECK-NEXT:    retq1220  %c = icmp eq <4 x i32> %cmp, zeroinitializer1221  %ps = load float, ptr %ptr1222  %pins = insertelement <4 x float> undef, float %ps, i32 01223  %p = shufflevector <4 x float> %pins, <4 x float> undef, <4 x i32> zeroinitializer1224  %t = call <4 x float> @llvm.ceil.v4f32(<4 x float> %p)1225  %s = select <4 x i1> %c, <4 x float> %t, <4 x float> %passthru1226  ret <4 x float> %s1227}1228 1229define <4 x double> @ceil_v4f64_mask_broadcast(ptr %ptr, <4 x double> %passthru, <4 x i64> %cmp) {1230; CHECK-LABEL: ceil_v4f64_mask_broadcast:1231; CHECK:       ## %bb.0:1232; CHECK-NEXT:    vptestnmq %ymm1, %ymm1, %k11233; CHECK-NEXT:    vrndscalepd $10, (%rdi){1to4}, %ymm0 {%k1}1234; CHECK-NEXT:    retq1235  %c = icmp eq <4 x i64> %cmp, zeroinitializer1236  %ps = load double, ptr %ptr1237  %pins = insertelement <4 x double> undef, double %ps, i32 01238  %p = shufflevector <4 x double> %pins, <4 x double> undef, <4 x i32> zeroinitializer1239  %t = call <4 x double> @llvm.ceil.v4f64(<4 x double> %p)1240  %s = select <4 x i1> %c, <4 x double> %t, <4 x double> %passthru1241  ret <4 x double> %s1242}1243 1244define <8 x float> @ceil_v8f32_mask_broadcast(ptr %ptr, <8 x float> %passthru, <8 x i32> %cmp) {1245; CHECK-LABEL: ceil_v8f32_mask_broadcast:1246; CHECK:       ## %bb.0:1247; CHECK-NEXT:    vptestnmd %ymm1, %ymm1, %k11248; CHECK-NEXT:    vrndscaleps $10, (%rdi){1to8}, %ymm0 {%k1}1249; CHECK-NEXT:    retq1250  %c = icmp eq <8 x i32> %cmp, zeroinitializer1251  %ps = load float, ptr %ptr1252  %pins = insertelement <8 x float> undef, float %ps, i32 01253  %p = shufflevector <8 x float> %pins, <8 x float> undef, <8 x i32> zeroinitializer1254  %t = call <8 x float> @llvm.ceil.v8f32(<8 x float> %p)1255  %s = select <8 x i1> %c, <8 x float> %t, <8 x float> %passthru1256  ret <8 x float> %s1257}1258 1259define <8 x double> @ceil_v8f64_mask_broadcast(ptr %ptr, <8 x double> %passthru, <8 x i64> %cmp) {1260; CHECK-LABEL: ceil_v8f64_mask_broadcast:1261; CHECK:       ## %bb.0:1262; CHECK-NEXT:    vptestnmq %zmm1, %zmm1, %k11263; CHECK-NEXT:    vrndscalepd $10, (%rdi){1to8}, %zmm0 {%k1}1264; CHECK-NEXT:    retq1265  %c = icmp eq <8 x i64> %cmp, zeroinitializer1266  %ps = load double, ptr %ptr1267  %pins = insertelement <8 x double> undef, double %ps, i32 01268  %p = shufflevector <8 x double> %pins, <8 x double> undef, <8 x i32> zeroinitializer1269  %t = call <8 x double> @llvm.ceil.v8f64(<8 x double> %p)1270  %s = select <8 x i1> %c, <8 x double> %t, <8 x double> %passthru1271  ret <8 x double> %s1272}1273 1274define <16 x float> @ceil_v16f32_mask_broadcast(ptr %ptr, <16 x float> %passthru, <16 x i32> %cmp) {1275; CHECK-LABEL: ceil_v16f32_mask_broadcast:1276; CHECK:       ## %bb.0:1277; CHECK-NEXT:    vptestnmd %zmm1, %zmm1, %k11278; CHECK-NEXT:    vrndscaleps $10, (%rdi){1to16}, %zmm0 {%k1}1279; CHECK-NEXT:    retq1280  %c = icmp eq <16 x i32> %cmp, zeroinitializer1281  %ps = load float, ptr %ptr1282  %pins = insertelement <16 x float> undef, float %ps, i32 01283  %p = shufflevector <16 x float> %pins, <16 x float> undef, <16 x i32> zeroinitializer1284  %t = call <16 x float> @llvm.ceil.v16f32(<16 x float> %p)1285  %s = select <16 x i1> %c, <16 x float> %t, <16 x float> %passthru1286  ret <16 x float> %s1287}1288 1289define <2 x double> @ceil_v2f64_maskz_broadcast(ptr %ptr, <2 x i64> %cmp) {1290; CHECK-LABEL: ceil_v2f64_maskz_broadcast:1291; CHECK:       ## %bb.0:1292; CHECK-NEXT:    vptestnmq %xmm0, %xmm0, %k11293; CHECK-NEXT:    vrndscalepd $10, (%rdi){1to2}, %xmm0 {%k1} {z}1294; CHECK-NEXT:    retq1295  %c = icmp eq <2 x i64> %cmp, zeroinitializer1296  %ps = load double, ptr %ptr1297  %pins = insertelement <2 x double> undef, double %ps, i32 01298  %p = shufflevector <2 x double> %pins, <2 x double> undef, <2 x i32> zeroinitializer1299  %t = call <2 x double> @llvm.ceil.v2f64(<2 x double> %p)1300  %s = select <2 x i1> %c, <2 x double> %t, <2 x double> zeroinitializer1301  ret <2 x double> %s1302}1303 1304define <4 x float> @ceil_v4f32_maskz_broadcast(ptr %ptr, <4 x i32> %cmp) {1305; CHECK-LABEL: ceil_v4f32_maskz_broadcast:1306; CHECK:       ## %bb.0:1307; CHECK-NEXT:    vptestnmd %xmm0, %xmm0, %k11308; CHECK-NEXT:    vrndscaleps $10, (%rdi){1to4}, %xmm0 {%k1} {z}1309; CHECK-NEXT:    retq1310  %c = icmp eq <4 x i32> %cmp, zeroinitializer1311  %ps = load float, ptr %ptr1312  %pins = insertelement <4 x float> undef, float %ps, i32 01313  %p = shufflevector <4 x float> %pins, <4 x float> undef, <4 x i32> zeroinitializer1314  %t = call <4 x float> @llvm.ceil.v4f32(<4 x float> %p)1315  %s = select <4 x i1> %c, <4 x float> %t, <4 x float> zeroinitializer1316  ret <4 x float> %s1317}1318 1319define <4 x double> @ceil_v4f64_maskz_broadcast(ptr %ptr, <4 x i64> %cmp) {1320; CHECK-LABEL: ceil_v4f64_maskz_broadcast:1321; CHECK:       ## %bb.0:1322; CHECK-NEXT:    vptestnmq %ymm0, %ymm0, %k11323; CHECK-NEXT:    vrndscalepd $10, (%rdi){1to4}, %ymm0 {%k1} {z}1324; CHECK-NEXT:    retq1325  %c = icmp eq <4 x i64> %cmp, zeroinitializer1326  %ps = load double, ptr %ptr1327  %pins = insertelement <4 x double> undef, double %ps, i32 01328  %p = shufflevector <4 x double> %pins, <4 x double> undef, <4 x i32> zeroinitializer1329  %t = call <4 x double> @llvm.ceil.v4f64(<4 x double> %p)1330  %s = select <4 x i1> %c, <4 x double> %t, <4 x double> zeroinitializer1331  ret <4 x double> %s1332}1333 1334define <8 x float> @ceil_v8f32_maskz_broadcast(ptr %ptr, <8 x i32> %cmp) {1335; CHECK-LABEL: ceil_v8f32_maskz_broadcast:1336; CHECK:       ## %bb.0:1337; CHECK-NEXT:    vptestnmd %ymm0, %ymm0, %k11338; CHECK-NEXT:    vrndscaleps $10, (%rdi){1to8}, %ymm0 {%k1} {z}1339; CHECK-NEXT:    retq1340  %c = icmp eq <8 x i32> %cmp, zeroinitializer1341  %ps = load float, ptr %ptr1342  %pins = insertelement <8 x float> undef, float %ps, i32 01343  %p = shufflevector <8 x float> %pins, <8 x float> undef, <8 x i32> zeroinitializer1344  %t = call <8 x float> @llvm.ceil.v8f32(<8 x float> %p)1345  %s = select <8 x i1> %c, <8 x float> %t, <8 x float> zeroinitializer1346  ret <8 x float> %s1347}1348 1349define <8 x double> @ceil_v8f64_maskz_broadcast(ptr %ptr, <8 x i64> %cmp) {1350; CHECK-LABEL: ceil_v8f64_maskz_broadcast:1351; CHECK:       ## %bb.0:1352; CHECK-NEXT:    vptestnmq %zmm0, %zmm0, %k11353; CHECK-NEXT:    vrndscalepd $10, (%rdi){1to8}, %zmm0 {%k1} {z}1354; CHECK-NEXT:    retq1355  %c = icmp eq <8 x i64> %cmp, zeroinitializer1356  %ps = load double, ptr %ptr1357  %pins = insertelement <8 x double> undef, double %ps, i32 01358  %p = shufflevector <8 x double> %pins, <8 x double> undef, <8 x i32> zeroinitializer1359  %t = call <8 x double> @llvm.ceil.v8f64(<8 x double> %p)1360  %s = select <8 x i1> %c, <8 x double> %t, <8 x double> zeroinitializer1361  ret <8 x double> %s1362}1363 1364define <16 x float> @ceil_v16f32_maskz_broadcast(ptr %ptr, <16 x i32> %cmp) {1365; CHECK-LABEL: ceil_v16f32_maskz_broadcast:1366; CHECK:       ## %bb.0:1367; CHECK-NEXT:    vptestnmd %zmm0, %zmm0, %k11368; CHECK-NEXT:    vrndscaleps $10, (%rdi){1to16}, %zmm0 {%k1} {z}1369; CHECK-NEXT:    retq1370  %c = icmp eq <16 x i32> %cmp, zeroinitializer1371  %ps = load float, ptr %ptr1372  %pins = insertelement <16 x float> undef, float %ps, i32 01373  %p = shufflevector <16 x float> %pins, <16 x float> undef, <16 x i32> zeroinitializer1374  %t = call <16 x float> @llvm.ceil.v16f32(<16 x float> %p)1375  %s = select <16 x i1> %c, <16 x float> %t, <16 x float> zeroinitializer1376  ret <16 x float> %s1377}1378 1379define <2 x double> @trunc_v2f64(<2 x double> %p) {1380; CHECK-LABEL: trunc_v2f64:1381; CHECK:       ## %bb.0:1382; CHECK-NEXT:    vroundpd $11, %xmm0, %xmm01383; CHECK-NEXT:    retq1384  %t = call <2 x double> @llvm.trunc.v2f64(<2 x double> %p)1385  ret <2 x double> %t1386}1387 1388define <4 x float> @trunc_v4f32(<4 x float> %p) {1389; CHECK-LABEL: trunc_v4f32:1390; CHECK:       ## %bb.0:1391; CHECK-NEXT:    vroundps $11, %xmm0, %xmm01392; CHECK-NEXT:    retq1393  %t = call <4 x float> @llvm.trunc.v4f32(<4 x float> %p)1394  ret <4 x float> %t1395}1396 1397define <4 x double> @trunc_v4f64(<4 x double> %p){1398; CHECK-LABEL: trunc_v4f64:1399; CHECK:       ## %bb.0:1400; CHECK-NEXT:    vroundpd $11, %ymm0, %ymm01401; CHECK-NEXT:    retq1402  %t = call <4 x double> @llvm.trunc.v4f64(<4 x double> %p)1403  ret <4 x double> %t1404}1405 1406define <8 x float> @trunc_v8f32(<8 x float> %p) {1407; CHECK-LABEL: trunc_v8f32:1408; CHECK:       ## %bb.0:1409; CHECK-NEXT:    vroundps $11, %ymm0, %ymm01410; CHECK-NEXT:    retq1411  %t = call <8 x float> @llvm.trunc.v8f32(<8 x float> %p)1412  ret <8 x float> %t1413}1414 1415define <8 x double> @trunc_v8f64(<8 x double> %p){1416; CHECK-LABEL: trunc_v8f64:1417; CHECK:       ## %bb.0:1418; CHECK-NEXT:    vrndscalepd $11, %zmm0, %zmm01419; CHECK-NEXT:    retq1420  %t = call <8 x double> @llvm.trunc.v8f64(<8 x double> %p)1421  ret <8 x double> %t1422}1423 1424define <16 x float> @trunc_v16f32(<16 x float> %p) {1425; CHECK-LABEL: trunc_v16f32:1426; CHECK:       ## %bb.0:1427; CHECK-NEXT:    vrndscaleps $11, %zmm0, %zmm01428; CHECK-NEXT:    retq1429  %t = call <16 x float> @llvm.trunc.v16f32(<16 x float> %p)1430  ret <16 x float> %t1431}1432 1433define <2 x double> @trunc_v2f64_load(ptr %ptr) {1434; CHECK-LABEL: trunc_v2f64_load:1435; CHECK:       ## %bb.0:1436; CHECK-NEXT:    vroundpd $11, (%rdi), %xmm01437; CHECK-NEXT:    retq1438  %p = load <2 x double>, ptr %ptr1439  %t = call <2 x double> @llvm.trunc.v2f64(<2 x double> %p)1440  ret <2 x double> %t1441}1442 1443define <4 x float> @trunc_v4f32_load(ptr %ptr) {1444; CHECK-LABEL: trunc_v4f32_load:1445; CHECK:       ## %bb.0:1446; CHECK-NEXT:    vroundps $11, (%rdi), %xmm01447; CHECK-NEXT:    retq1448  %p = load <4 x float>, ptr %ptr1449  %t = call <4 x float> @llvm.trunc.v4f32(<4 x float> %p)1450  ret <4 x float> %t1451}1452 1453define <4 x double> @trunc_v4f64_load(ptr %ptr){1454; CHECK-LABEL: trunc_v4f64_load:1455; CHECK:       ## %bb.0:1456; CHECK-NEXT:    vroundpd $11, (%rdi), %ymm01457; CHECK-NEXT:    retq1458  %p = load <4 x double>, ptr %ptr1459  %t = call <4 x double> @llvm.trunc.v4f64(<4 x double> %p)1460  ret <4 x double> %t1461}1462 1463define <8 x float> @trunc_v8f32_load(ptr %ptr) {1464; CHECK-LABEL: trunc_v8f32_load:1465; CHECK:       ## %bb.0:1466; CHECK-NEXT:    vroundps $11, (%rdi), %ymm01467; CHECK-NEXT:    retq1468  %p = load <8 x float>, ptr %ptr1469  %t = call <8 x float> @llvm.trunc.v8f32(<8 x float> %p)1470  ret <8 x float> %t1471}1472 1473define <8 x double> @trunc_v8f64_load(ptr %ptr){1474; CHECK-LABEL: trunc_v8f64_load:1475; CHECK:       ## %bb.0:1476; CHECK-NEXT:    vrndscalepd $11, (%rdi), %zmm01477; CHECK-NEXT:    retq1478  %p = load <8 x double>, ptr %ptr1479  %t = call <8 x double> @llvm.trunc.v8f64(<8 x double> %p)1480  ret <8 x double> %t1481}1482 1483define <16 x float> @trunc_v16f32_load(ptr %ptr) {1484; CHECK-LABEL: trunc_v16f32_load:1485; CHECK:       ## %bb.0:1486; CHECK-NEXT:    vrndscaleps $11, (%rdi), %zmm01487; CHECK-NEXT:    retq1488  %p = load <16 x float>, ptr %ptr1489  %t = call <16 x float> @llvm.trunc.v16f32(<16 x float> %p)1490  ret <16 x float> %t1491}1492 1493define <2 x double> @trunc_v2f64_mask(<2 x double> %p, <2 x double> %passthru, <2 x i64> %cmp) {1494; CHECK-LABEL: trunc_v2f64_mask:1495; CHECK:       ## %bb.0:1496; CHECK-NEXT:    vptestnmq %xmm2, %xmm2, %k11497; CHECK-NEXT:    vrndscalepd $11, %xmm0, %xmm1 {%k1}1498; CHECK-NEXT:    vmovapd %xmm1, %xmm01499; CHECK-NEXT:    retq1500  %c = icmp eq <2 x i64> %cmp, zeroinitializer1501  %t = call <2 x double> @llvm.trunc.v2f64(<2 x double> %p)1502  %s = select <2 x i1> %c, <2 x double> %t, <2 x double> %passthru1503  ret <2 x double> %s1504}1505 1506define <4 x float> @trunc_v4f32_mask(<4 x float> %p, <4 x float> %passthru, <4 x i32> %cmp) {1507; CHECK-LABEL: trunc_v4f32_mask:1508; CHECK:       ## %bb.0:1509; CHECK-NEXT:    vptestnmd %xmm2, %xmm2, %k11510; CHECK-NEXT:    vrndscaleps $11, %xmm0, %xmm1 {%k1}1511; CHECK-NEXT:    vmovaps %xmm1, %xmm01512; CHECK-NEXT:    retq1513  %c = icmp eq <4 x i32> %cmp, zeroinitializer1514  %t = call <4 x float> @llvm.trunc.v4f32(<4 x float> %p)1515  %s = select <4 x i1> %c, <4 x float> %t, <4 x float> %passthru1516  ret <4 x float> %s1517}1518 1519define <4 x double> @trunc_v4f64_mask(<4 x double> %p, <4 x double> %passthru, <4 x i64> %cmp) {1520; CHECK-LABEL: trunc_v4f64_mask:1521; CHECK:       ## %bb.0:1522; CHECK-NEXT:    vptestnmq %ymm2, %ymm2, %k11523; CHECK-NEXT:    vrndscalepd $11, %ymm0, %ymm1 {%k1}1524; CHECK-NEXT:    vmovapd %ymm1, %ymm01525; CHECK-NEXT:    retq1526  %c = icmp eq <4 x i64> %cmp, zeroinitializer1527  %t = call <4 x double> @llvm.trunc.v4f64(<4 x double> %p)1528  %s = select <4 x i1> %c, <4 x double> %t, <4 x double> %passthru1529  ret <4 x double> %s1530}1531 1532define <8 x float> @trunc_v8f32_mask(<8 x float> %p, <8 x float> %passthru, <8 x i32> %cmp) {1533; CHECK-LABEL: trunc_v8f32_mask:1534; CHECK:       ## %bb.0:1535; CHECK-NEXT:    vptestnmd %ymm2, %ymm2, %k11536; CHECK-NEXT:    vrndscaleps $11, %ymm0, %ymm1 {%k1}1537; CHECK-NEXT:    vmovaps %ymm1, %ymm01538; CHECK-NEXT:    retq1539  %c = icmp eq <8 x i32> %cmp, zeroinitializer1540  %t = call <8 x float> @llvm.trunc.v8f32(<8 x float> %p)1541  %s = select <8 x i1> %c, <8 x float> %t, <8 x float> %passthru1542  ret <8 x float> %s1543}1544 1545define <8 x double> @trunc_v8f64_mask(<8 x double> %p, <8 x double> %passthru, <8 x i64> %cmp) {1546; CHECK-LABEL: trunc_v8f64_mask:1547; CHECK:       ## %bb.0:1548; CHECK-NEXT:    vptestnmq %zmm2, %zmm2, %k11549; CHECK-NEXT:    vrndscalepd $11, %zmm0, %zmm1 {%k1}1550; CHECK-NEXT:    vmovapd %zmm1, %zmm01551; CHECK-NEXT:    retq1552  %c = icmp eq <8 x i64> %cmp, zeroinitializer1553  %t = call <8 x double> @llvm.trunc.v8f64(<8 x double> %p)1554  %s = select <8 x i1> %c, <8 x double> %t, <8 x double> %passthru1555  ret <8 x double> %s1556}1557 1558define <16 x float> @trunc_v16f32_mask(<16 x float> %p, <16 x float> %passthru, <16 x i32> %cmp) {1559; CHECK-LABEL: trunc_v16f32_mask:1560; CHECK:       ## %bb.0:1561; CHECK-NEXT:    vptestnmd %zmm2, %zmm2, %k11562; CHECK-NEXT:    vrndscaleps $11, %zmm0, %zmm1 {%k1}1563; CHECK-NEXT:    vmovaps %zmm1, %zmm01564; CHECK-NEXT:    retq1565  %c = icmp eq <16 x i32> %cmp, zeroinitializer1566  %t = call <16 x float> @llvm.trunc.v16f32(<16 x float> %p)1567  %s = select <16 x i1> %c, <16 x float> %t, <16 x float> %passthru1568  ret <16 x float> %s1569}1570 1571define <2 x double> @trunc_v2f64_maskz(<2 x double> %p, <2 x i64> %cmp) {1572; CHECK-LABEL: trunc_v2f64_maskz:1573; CHECK:       ## %bb.0:1574; CHECK-NEXT:    vptestnmq %xmm1, %xmm1, %k11575; CHECK-NEXT:    vrndscalepd $11, %xmm0, %xmm0 {%k1} {z}1576; CHECK-NEXT:    retq1577  %c = icmp eq <2 x i64> %cmp, zeroinitializer1578  %t = call <2 x double> @llvm.trunc.v2f64(<2 x double> %p)1579  %s = select <2 x i1> %c, <2 x double> %t, <2 x double> zeroinitializer1580  ret <2 x double> %s1581}1582 1583define <4 x float> @trunc_v4f32_maskz(<4 x float> %p, <4 x i32> %cmp) {1584; CHECK-LABEL: trunc_v4f32_maskz:1585; CHECK:       ## %bb.0:1586; CHECK-NEXT:    vptestnmd %xmm1, %xmm1, %k11587; CHECK-NEXT:    vrndscaleps $11, %xmm0, %xmm0 {%k1} {z}1588; CHECK-NEXT:    retq1589  %c = icmp eq <4 x i32> %cmp, zeroinitializer1590  %t = call <4 x float> @llvm.trunc.v4f32(<4 x float> %p)1591  %s = select <4 x i1> %c, <4 x float> %t, <4 x float> zeroinitializer1592  ret <4 x float> %s1593}1594 1595define <4 x double> @trunc_v4f64_maskz(<4 x double> %p, <4 x i64> %cmp) {1596; CHECK-LABEL: trunc_v4f64_maskz:1597; CHECK:       ## %bb.0:1598; CHECK-NEXT:    vptestnmq %ymm1, %ymm1, %k11599; CHECK-NEXT:    vrndscalepd $11, %ymm0, %ymm0 {%k1} {z}1600; CHECK-NEXT:    retq1601  %c = icmp eq <4 x i64> %cmp, zeroinitializer1602  %t = call <4 x double> @llvm.trunc.v4f64(<4 x double> %p)1603  %s = select <4 x i1> %c, <4 x double> %t, <4 x double> zeroinitializer1604  ret <4 x double> %s1605}1606 1607define <8 x float> @trunc_v8f32_maskz(<8 x float> %p, <8 x i32> %cmp) {1608; CHECK-LABEL: trunc_v8f32_maskz:1609; CHECK:       ## %bb.0:1610; CHECK-NEXT:    vptestnmd %ymm1, %ymm1, %k11611; CHECK-NEXT:    vrndscaleps $11, %ymm0, %ymm0 {%k1} {z}1612; CHECK-NEXT:    retq1613  %c = icmp eq <8 x i32> %cmp, zeroinitializer1614  %t = call <8 x float> @llvm.trunc.v8f32(<8 x float> %p)1615  %s = select <8 x i1> %c, <8 x float> %t, <8 x float> zeroinitializer1616  ret <8 x float> %s1617}1618 1619define <8 x double> @trunc_v8f64_maskz(<8 x double> %p, <8 x i64> %cmp) {1620; CHECK-LABEL: trunc_v8f64_maskz:1621; CHECK:       ## %bb.0:1622; CHECK-NEXT:    vptestnmq %zmm1, %zmm1, %k11623; CHECK-NEXT:    vrndscalepd $11, %zmm0, %zmm0 {%k1} {z}1624; CHECK-NEXT:    retq1625  %c = icmp eq <8 x i64> %cmp, zeroinitializer1626  %t = call <8 x double> @llvm.trunc.v8f64(<8 x double> %p)1627  %s = select <8 x i1> %c, <8 x double> %t, <8 x double> zeroinitializer1628  ret <8 x double> %s1629}1630 1631define <16 x float> @trunc_v16f32_maskz(<16 x float> %p, <16 x i32> %cmp) {1632; CHECK-LABEL: trunc_v16f32_maskz:1633; CHECK:       ## %bb.0:1634; CHECK-NEXT:    vptestnmd %zmm1, %zmm1, %k11635; CHECK-NEXT:    vrndscaleps $11, %zmm0, %zmm0 {%k1} {z}1636; CHECK-NEXT:    retq1637  %c = icmp eq <16 x i32> %cmp, zeroinitializer1638  %t = call <16 x float> @llvm.trunc.v16f32(<16 x float> %p)1639  %s = select <16 x i1> %c, <16 x float> %t, <16 x float> zeroinitializer1640  ret <16 x float> %s1641}1642 1643define <2 x double> @trunc_v2f64_mask_load(ptr %ptr, <2 x double> %passthru, <2 x i64> %cmp) {1644; CHECK-LABEL: trunc_v2f64_mask_load:1645; CHECK:       ## %bb.0:1646; CHECK-NEXT:    vptestnmq %xmm1, %xmm1, %k11647; CHECK-NEXT:    vrndscalepd $11, (%rdi), %xmm0 {%k1}1648; CHECK-NEXT:    retq1649  %c = icmp eq <2 x i64> %cmp, zeroinitializer1650  %p = load <2 x double>, ptr %ptr1651  %t = call <2 x double> @llvm.trunc.v2f64(<2 x double> %p)1652  %s = select <2 x i1> %c, <2 x double> %t, <2 x double> %passthru1653  ret <2 x double> %s1654}1655 1656define <4 x float> @trunc_v4f32_mask_load(ptr %ptr, <4 x float> %passthru, <4 x i32> %cmp) {1657; CHECK-LABEL: trunc_v4f32_mask_load:1658; CHECK:       ## %bb.0:1659; CHECK-NEXT:    vptestnmd %xmm1, %xmm1, %k11660; CHECK-NEXT:    vrndscaleps $11, (%rdi), %xmm0 {%k1}1661; CHECK-NEXT:    retq1662  %c = icmp eq <4 x i32> %cmp, zeroinitializer1663  %p = load <4 x float>, ptr %ptr1664  %t = call <4 x float> @llvm.trunc.v4f32(<4 x float> %p)1665  %s = select <4 x i1> %c, <4 x float> %t, <4 x float> %passthru1666  ret <4 x float> %s1667}1668 1669define <4 x double> @trunc_v4f64_mask_load(ptr %ptr, <4 x double> %passthru, <4 x i64> %cmp) {1670; CHECK-LABEL: trunc_v4f64_mask_load:1671; CHECK:       ## %bb.0:1672; CHECK-NEXT:    vptestnmq %ymm1, %ymm1, %k11673; CHECK-NEXT:    vrndscalepd $11, (%rdi), %ymm0 {%k1}1674; CHECK-NEXT:    retq1675  %c = icmp eq <4 x i64> %cmp, zeroinitializer1676  %p = load <4 x double>, ptr %ptr1677  %t = call <4 x double> @llvm.trunc.v4f64(<4 x double> %p)1678  %s = select <4 x i1> %c, <4 x double> %t, <4 x double> %passthru1679  ret <4 x double> %s1680}1681 1682define <8 x float> @trunc_v8f32_mask_load(ptr %ptr, <8 x float> %passthru, <8 x i32> %cmp) {1683; CHECK-LABEL: trunc_v8f32_mask_load:1684; CHECK:       ## %bb.0:1685; CHECK-NEXT:    vptestnmd %ymm1, %ymm1, %k11686; CHECK-NEXT:    vrndscaleps $11, (%rdi), %ymm0 {%k1}1687; CHECK-NEXT:    retq1688  %c = icmp eq <8 x i32> %cmp, zeroinitializer1689  %p = load <8 x float>, ptr %ptr1690  %t = call <8 x float> @llvm.trunc.v8f32(<8 x float> %p)1691  %s = select <8 x i1> %c, <8 x float> %t, <8 x float> %passthru1692  ret <8 x float> %s1693}1694 1695define <8 x double> @trunc_v8f64_mask_load(ptr %ptr, <8 x double> %passthru, <8 x i64> %cmp) {1696; CHECK-LABEL: trunc_v8f64_mask_load:1697; CHECK:       ## %bb.0:1698; CHECK-NEXT:    vptestnmq %zmm1, %zmm1, %k11699; CHECK-NEXT:    vrndscalepd $11, (%rdi), %zmm0 {%k1}1700; CHECK-NEXT:    retq1701  %c = icmp eq <8 x i64> %cmp, zeroinitializer1702  %p = load <8 x double>, ptr %ptr1703  %t = call <8 x double> @llvm.trunc.v8f64(<8 x double> %p)1704  %s = select <8 x i1> %c, <8 x double> %t, <8 x double> %passthru1705  ret <8 x double> %s1706}1707 1708define <16 x float> @trunc_v16f32_mask_load(ptr %ptr, <16 x float> %passthru, <16 x i32> %cmp) {1709; CHECK-LABEL: trunc_v16f32_mask_load:1710; CHECK:       ## %bb.0:1711; CHECK-NEXT:    vptestnmd %zmm1, %zmm1, %k11712; CHECK-NEXT:    vrndscaleps $11, (%rdi), %zmm0 {%k1}1713; CHECK-NEXT:    retq1714  %c = icmp eq <16 x i32> %cmp, zeroinitializer1715  %p = load <16 x float>, ptr %ptr1716  %t = call <16 x float> @llvm.trunc.v16f32(<16 x float> %p)1717  %s = select <16 x i1> %c, <16 x float> %t, <16 x float> %passthru1718  ret <16 x float> %s1719}1720 1721define <2 x double> @trunc_v2f64_maskz_load(ptr %ptr, <2 x i64> %cmp) {1722; CHECK-LABEL: trunc_v2f64_maskz_load:1723; CHECK:       ## %bb.0:1724; CHECK-NEXT:    vptestnmq %xmm0, %xmm0, %k11725; CHECK-NEXT:    vrndscalepd $11, (%rdi), %xmm0 {%k1} {z}1726; CHECK-NEXT:    retq1727  %c = icmp eq <2 x i64> %cmp, zeroinitializer1728  %p = load <2 x double>, ptr %ptr1729  %t = call <2 x double> @llvm.trunc.v2f64(<2 x double> %p)1730  %s = select <2 x i1> %c, <2 x double> %t, <2 x double> zeroinitializer1731  ret <2 x double> %s1732}1733 1734define <4 x float> @trunc_v4f32_maskz_load(ptr %ptr, <4 x i32> %cmp) {1735; CHECK-LABEL: trunc_v4f32_maskz_load:1736; CHECK:       ## %bb.0:1737; CHECK-NEXT:    vptestnmd %xmm0, %xmm0, %k11738; CHECK-NEXT:    vrndscaleps $11, (%rdi), %xmm0 {%k1} {z}1739; CHECK-NEXT:    retq1740  %c = icmp eq <4 x i32> %cmp, zeroinitializer1741  %p = load <4 x float>, ptr %ptr1742  %t = call <4 x float> @llvm.trunc.v4f32(<4 x float> %p)1743  %s = select <4 x i1> %c, <4 x float> %t, <4 x float> zeroinitializer1744  ret <4 x float> %s1745}1746 1747define <4 x double> @trunc_v4f64_maskz_load(ptr %ptr, <4 x i64> %cmp) {1748; CHECK-LABEL: trunc_v4f64_maskz_load:1749; CHECK:       ## %bb.0:1750; CHECK-NEXT:    vptestnmq %ymm0, %ymm0, %k11751; CHECK-NEXT:    vrndscalepd $11, (%rdi), %ymm0 {%k1} {z}1752; CHECK-NEXT:    retq1753  %c = icmp eq <4 x i64> %cmp, zeroinitializer1754  %p = load <4 x double>, ptr %ptr1755  %t = call <4 x double> @llvm.trunc.v4f64(<4 x double> %p)1756  %s = select <4 x i1> %c, <4 x double> %t, <4 x double> zeroinitializer1757  ret <4 x double> %s1758}1759 1760define <8 x float> @trunc_v8f32_maskz_load(ptr %ptr, <8 x i32> %cmp) {1761; CHECK-LABEL: trunc_v8f32_maskz_load:1762; CHECK:       ## %bb.0:1763; CHECK-NEXT:    vptestnmd %ymm0, %ymm0, %k11764; CHECK-NEXT:    vrndscaleps $11, (%rdi), %ymm0 {%k1} {z}1765; CHECK-NEXT:    retq1766  %c = icmp eq <8 x i32> %cmp, zeroinitializer1767  %p = load <8 x float>, ptr %ptr1768  %t = call <8 x float> @llvm.trunc.v8f32(<8 x float> %p)1769  %s = select <8 x i1> %c, <8 x float> %t, <8 x float> zeroinitializer1770  ret <8 x float> %s1771}1772 1773define <8 x double> @trunc_v8f64_maskz_load(ptr %ptr, <8 x i64> %cmp) {1774; CHECK-LABEL: trunc_v8f64_maskz_load:1775; CHECK:       ## %bb.0:1776; CHECK-NEXT:    vptestnmq %zmm0, %zmm0, %k11777; CHECK-NEXT:    vrndscalepd $11, (%rdi), %zmm0 {%k1} {z}1778; CHECK-NEXT:    retq1779  %c = icmp eq <8 x i64> %cmp, zeroinitializer1780  %p = load <8 x double>, ptr %ptr1781  %t = call <8 x double> @llvm.trunc.v8f64(<8 x double> %p)1782  %s = select <8 x i1> %c, <8 x double> %t, <8 x double> zeroinitializer1783  ret <8 x double> %s1784}1785 1786define <16 x float> @trunc_v16f32_maskz_load(ptr %ptr, <16 x i32> %cmp) {1787; CHECK-LABEL: trunc_v16f32_maskz_load:1788; CHECK:       ## %bb.0:1789; CHECK-NEXT:    vptestnmd %zmm0, %zmm0, %k11790; CHECK-NEXT:    vrndscaleps $11, (%rdi), %zmm0 {%k1} {z}1791; CHECK-NEXT:    retq1792  %c = icmp eq <16 x i32> %cmp, zeroinitializer1793  %p = load <16 x float>, ptr %ptr1794  %t = call <16 x float> @llvm.trunc.v16f32(<16 x float> %p)1795  %s = select <16 x i1> %c, <16 x float> %t, <16 x float> zeroinitializer1796  ret <16 x float> %s1797}1798 1799define <2 x double> @trunc_v2f64_broadcast(ptr %ptr) {1800; CHECK-LABEL: trunc_v2f64_broadcast:1801; CHECK:       ## %bb.0:1802; CHECK-NEXT:    vrndscalepd $11, (%rdi){1to2}, %xmm01803; CHECK-NEXT:    retq1804  %ps = load double, ptr %ptr1805  %pins = insertelement <2 x double> undef, double %ps, i32 01806  %p = shufflevector <2 x double> %pins, <2 x double> undef, <2 x i32> zeroinitializer1807  %t = call <2 x double> @llvm.trunc.v2f64(<2 x double> %p)1808  ret <2 x double> %t1809}1810 1811define <4 x float> @trunc_v4f32_broadcast(ptr %ptr) {1812; CHECK-LABEL: trunc_v4f32_broadcast:1813; CHECK:       ## %bb.0:1814; CHECK-NEXT:    vrndscaleps $11, (%rdi){1to4}, %xmm01815; CHECK-NEXT:    retq1816  %ps = load float, ptr %ptr1817  %pins = insertelement <4 x float> undef, float %ps, i32 01818  %p = shufflevector <4 x float> %pins, <4 x float> undef, <4 x i32> zeroinitializer1819  %t = call <4 x float> @llvm.trunc.v4f32(<4 x float> %p)1820  ret <4 x float> %t1821}1822 1823define <4 x double> @trunc_v4f64_broadcast(ptr %ptr){1824; CHECK-LABEL: trunc_v4f64_broadcast:1825; CHECK:       ## %bb.0:1826; CHECK-NEXT:    vrndscalepd $11, (%rdi){1to4}, %ymm01827; CHECK-NEXT:    retq1828  %ps = load double, ptr %ptr1829  %pins = insertelement <4 x double> undef, double %ps, i32 01830  %p = shufflevector <4 x double> %pins, <4 x double> undef, <4 x i32> zeroinitializer1831  %t = call <4 x double> @llvm.trunc.v4f64(<4 x double> %p)1832  ret <4 x double> %t1833}1834 1835define <8 x float> @trunc_v8f32_broadcast(ptr %ptr) {1836; CHECK-LABEL: trunc_v8f32_broadcast:1837; CHECK:       ## %bb.0:1838; CHECK-NEXT:    vrndscaleps $11, (%rdi){1to8}, %ymm01839; CHECK-NEXT:    retq1840  %ps = load float, ptr %ptr1841  %pins = insertelement <8 x float> undef, float %ps, i32 01842  %p = shufflevector <8 x float> %pins, <8 x float> undef, <8 x i32> zeroinitializer1843  %t = call <8 x float> @llvm.trunc.v8f32(<8 x float> %p)1844  ret <8 x float> %t1845}1846 1847define <8 x double> @trunc_v8f64_broadcast(ptr %ptr){1848; CHECK-LABEL: trunc_v8f64_broadcast:1849; CHECK:       ## %bb.0:1850; CHECK-NEXT:    vrndscalepd $11, (%rdi){1to8}, %zmm01851; CHECK-NEXT:    retq1852  %ps = load double, ptr %ptr1853  %pins = insertelement <8 x double> undef, double %ps, i32 01854  %p = shufflevector <8 x double> %pins, <8 x double> undef, <8 x i32> zeroinitializer1855  %t = call <8 x double> @llvm.trunc.v8f64(<8 x double> %p)1856  ret <8 x double> %t1857}1858 1859define <16 x float> @trunc_v16f32_broadcast(ptr %ptr) {1860; CHECK-LABEL: trunc_v16f32_broadcast:1861; CHECK:       ## %bb.0:1862; CHECK-NEXT:    vrndscaleps $11, (%rdi){1to16}, %zmm01863; CHECK-NEXT:    retq1864  %ps = load float, ptr %ptr1865  %pins = insertelement <16 x float> undef, float %ps, i32 01866  %p = shufflevector <16 x float> %pins, <16 x float> undef, <16 x i32> zeroinitializer1867  %t = call <16 x float> @llvm.trunc.v16f32(<16 x float> %p)1868  ret <16 x float> %t1869}1870 1871define <2 x double> @trunc_v2f64_mask_broadcast(ptr %ptr, <2 x double> %passthru, <2 x i64> %cmp) {1872; CHECK-LABEL: trunc_v2f64_mask_broadcast:1873; CHECK:       ## %bb.0:1874; CHECK-NEXT:    vptestnmq %xmm1, %xmm1, %k11875; CHECK-NEXT:    vrndscalepd $11, (%rdi){1to2}, %xmm0 {%k1}1876; CHECK-NEXT:    retq1877  %c = icmp eq <2 x i64> %cmp, zeroinitializer1878  %ps = load double, ptr %ptr1879  %pins = insertelement <2 x double> undef, double %ps, i32 01880  %p = shufflevector <2 x double> %pins, <2 x double> undef, <2 x i32> zeroinitializer1881  %t = call <2 x double> @llvm.trunc.v2f64(<2 x double> %p)1882  %s = select <2 x i1> %c, <2 x double> %t, <2 x double> %passthru1883  ret <2 x double> %s1884}1885 1886define <4 x float> @trunc_v4f32_mask_broadcast(ptr %ptr, <4 x float> %passthru, <4 x i32> %cmp) {1887; CHECK-LABEL: trunc_v4f32_mask_broadcast:1888; CHECK:       ## %bb.0:1889; CHECK-NEXT:    vptestnmd %xmm1, %xmm1, %k11890; CHECK-NEXT:    vrndscaleps $11, (%rdi){1to4}, %xmm0 {%k1}1891; CHECK-NEXT:    retq1892  %c = icmp eq <4 x i32> %cmp, zeroinitializer1893  %ps = load float, ptr %ptr1894  %pins = insertelement <4 x float> undef, float %ps, i32 01895  %p = shufflevector <4 x float> %pins, <4 x float> undef, <4 x i32> zeroinitializer1896  %t = call <4 x float> @llvm.trunc.v4f32(<4 x float> %p)1897  %s = select <4 x i1> %c, <4 x float> %t, <4 x float> %passthru1898  ret <4 x float> %s1899}1900 1901define <4 x double> @trunc_v4f64_mask_broadcast(ptr %ptr, <4 x double> %passthru, <4 x i64> %cmp) {1902; CHECK-LABEL: trunc_v4f64_mask_broadcast:1903; CHECK:       ## %bb.0:1904; CHECK-NEXT:    vptestnmq %ymm1, %ymm1, %k11905; CHECK-NEXT:    vrndscalepd $11, (%rdi){1to4}, %ymm0 {%k1}1906; CHECK-NEXT:    retq1907  %c = icmp eq <4 x i64> %cmp, zeroinitializer1908  %ps = load double, ptr %ptr1909  %pins = insertelement <4 x double> undef, double %ps, i32 01910  %p = shufflevector <4 x double> %pins, <4 x double> undef, <4 x i32> zeroinitializer1911  %t = call <4 x double> @llvm.trunc.v4f64(<4 x double> %p)1912  %s = select <4 x i1> %c, <4 x double> %t, <4 x double> %passthru1913  ret <4 x double> %s1914}1915 1916define <8 x float> @trunc_v8f32_mask_broadcast(ptr %ptr, <8 x float> %passthru, <8 x i32> %cmp) {1917; CHECK-LABEL: trunc_v8f32_mask_broadcast:1918; CHECK:       ## %bb.0:1919; CHECK-NEXT:    vptestnmd %ymm1, %ymm1, %k11920; CHECK-NEXT:    vrndscaleps $11, (%rdi){1to8}, %ymm0 {%k1}1921; CHECK-NEXT:    retq1922  %c = icmp eq <8 x i32> %cmp, zeroinitializer1923  %ps = load float, ptr %ptr1924  %pins = insertelement <8 x float> undef, float %ps, i32 01925  %p = shufflevector <8 x float> %pins, <8 x float> undef, <8 x i32> zeroinitializer1926  %t = call <8 x float> @llvm.trunc.v8f32(<8 x float> %p)1927  %s = select <8 x i1> %c, <8 x float> %t, <8 x float> %passthru1928  ret <8 x float> %s1929}1930 1931define <8 x double> @trunc_v8f64_mask_broadcast(ptr %ptr, <8 x double> %passthru, <8 x i64> %cmp) {1932; CHECK-LABEL: trunc_v8f64_mask_broadcast:1933; CHECK:       ## %bb.0:1934; CHECK-NEXT:    vptestnmq %zmm1, %zmm1, %k11935; CHECK-NEXT:    vrndscalepd $11, (%rdi){1to8}, %zmm0 {%k1}1936; CHECK-NEXT:    retq1937  %c = icmp eq <8 x i64> %cmp, zeroinitializer1938  %ps = load double, ptr %ptr1939  %pins = insertelement <8 x double> undef, double %ps, i32 01940  %p = shufflevector <8 x double> %pins, <8 x double> undef, <8 x i32> zeroinitializer1941  %t = call <8 x double> @llvm.trunc.v8f64(<8 x double> %p)1942  %s = select <8 x i1> %c, <8 x double> %t, <8 x double> %passthru1943  ret <8 x double> %s1944}1945 1946define <16 x float> @trunc_v16f32_mask_broadcast(ptr %ptr, <16 x float> %passthru, <16 x i32> %cmp) {1947; CHECK-LABEL: trunc_v16f32_mask_broadcast:1948; CHECK:       ## %bb.0:1949; CHECK-NEXT:    vptestnmd %zmm1, %zmm1, %k11950; CHECK-NEXT:    vrndscaleps $11, (%rdi){1to16}, %zmm0 {%k1}1951; CHECK-NEXT:    retq1952  %c = icmp eq <16 x i32> %cmp, zeroinitializer1953  %ps = load float, ptr %ptr1954  %pins = insertelement <16 x float> undef, float %ps, i32 01955  %p = shufflevector <16 x float> %pins, <16 x float> undef, <16 x i32> zeroinitializer1956  %t = call <16 x float> @llvm.trunc.v16f32(<16 x float> %p)1957  %s = select <16 x i1> %c, <16 x float> %t, <16 x float> %passthru1958  ret <16 x float> %s1959}1960 1961define <2 x double> @trunc_v2f64_maskz_broadcast(ptr %ptr, <2 x i64> %cmp) {1962; CHECK-LABEL: trunc_v2f64_maskz_broadcast:1963; CHECK:       ## %bb.0:1964; CHECK-NEXT:    vptestnmq %xmm0, %xmm0, %k11965; CHECK-NEXT:    vrndscalepd $11, (%rdi){1to2}, %xmm0 {%k1} {z}1966; CHECK-NEXT:    retq1967  %c = icmp eq <2 x i64> %cmp, zeroinitializer1968  %ps = load double, ptr %ptr1969  %pins = insertelement <2 x double> undef, double %ps, i32 01970  %p = shufflevector <2 x double> %pins, <2 x double> undef, <2 x i32> zeroinitializer1971  %t = call <2 x double> @llvm.trunc.v2f64(<2 x double> %p)1972  %s = select <2 x i1> %c, <2 x double> %t, <2 x double> zeroinitializer1973  ret <2 x double> %s1974}1975 1976define <4 x float> @trunc_v4f32_maskz_broadcast(ptr %ptr, <4 x i32> %cmp) {1977; CHECK-LABEL: trunc_v4f32_maskz_broadcast:1978; CHECK:       ## %bb.0:1979; CHECK-NEXT:    vptestnmd %xmm0, %xmm0, %k11980; CHECK-NEXT:    vrndscaleps $11, (%rdi){1to4}, %xmm0 {%k1} {z}1981; CHECK-NEXT:    retq1982  %c = icmp eq <4 x i32> %cmp, zeroinitializer1983  %ps = load float, ptr %ptr1984  %pins = insertelement <4 x float> undef, float %ps, i32 01985  %p = shufflevector <4 x float> %pins, <4 x float> undef, <4 x i32> zeroinitializer1986  %t = call <4 x float> @llvm.trunc.v4f32(<4 x float> %p)1987  %s = select <4 x i1> %c, <4 x float> %t, <4 x float> zeroinitializer1988  ret <4 x float> %s1989}1990 1991define <4 x double> @trunc_v4f64_maskz_broadcast(ptr %ptr, <4 x i64> %cmp) {1992; CHECK-LABEL: trunc_v4f64_maskz_broadcast:1993; CHECK:       ## %bb.0:1994; CHECK-NEXT:    vptestnmq %ymm0, %ymm0, %k11995; CHECK-NEXT:    vrndscalepd $11, (%rdi){1to4}, %ymm0 {%k1} {z}1996; CHECK-NEXT:    retq1997  %c = icmp eq <4 x i64> %cmp, zeroinitializer1998  %ps = load double, ptr %ptr1999  %pins = insertelement <4 x double> undef, double %ps, i32 02000  %p = shufflevector <4 x double> %pins, <4 x double> undef, <4 x i32> zeroinitializer2001  %t = call <4 x double> @llvm.trunc.v4f64(<4 x double> %p)2002  %s = select <4 x i1> %c, <4 x double> %t, <4 x double> zeroinitializer2003  ret <4 x double> %s2004}2005 2006define <8 x float> @trunc_v8f32_maskz_broadcast(ptr %ptr, <8 x i32> %cmp) {2007; CHECK-LABEL: trunc_v8f32_maskz_broadcast:2008; CHECK:       ## %bb.0:2009; CHECK-NEXT:    vptestnmd %ymm0, %ymm0, %k12010; CHECK-NEXT:    vrndscaleps $11, (%rdi){1to8}, %ymm0 {%k1} {z}2011; CHECK-NEXT:    retq2012  %c = icmp eq <8 x i32> %cmp, zeroinitializer2013  %ps = load float, ptr %ptr2014  %pins = insertelement <8 x float> undef, float %ps, i32 02015  %p = shufflevector <8 x float> %pins, <8 x float> undef, <8 x i32> zeroinitializer2016  %t = call <8 x float> @llvm.trunc.v8f32(<8 x float> %p)2017  %s = select <8 x i1> %c, <8 x float> %t, <8 x float> zeroinitializer2018  ret <8 x float> %s2019}2020 2021define <8 x double> @trunc_v8f64_maskz_broadcast(ptr %ptr, <8 x i64> %cmp) {2022; CHECK-LABEL: trunc_v8f64_maskz_broadcast:2023; CHECK:       ## %bb.0:2024; CHECK-NEXT:    vptestnmq %zmm0, %zmm0, %k12025; CHECK-NEXT:    vrndscalepd $11, (%rdi){1to8}, %zmm0 {%k1} {z}2026; CHECK-NEXT:    retq2027  %c = icmp eq <8 x i64> %cmp, zeroinitializer2028  %ps = load double, ptr %ptr2029  %pins = insertelement <8 x double> undef, double %ps, i32 02030  %p = shufflevector <8 x double> %pins, <8 x double> undef, <8 x i32> zeroinitializer2031  %t = call <8 x double> @llvm.trunc.v8f64(<8 x double> %p)2032  %s = select <8 x i1> %c, <8 x double> %t, <8 x double> zeroinitializer2033  ret <8 x double> %s2034}2035 2036define <16 x float> @trunc_v16f32_maskz_broadcast(ptr %ptr, <16 x i32> %cmp) {2037; CHECK-LABEL: trunc_v16f32_maskz_broadcast:2038; CHECK:       ## %bb.0:2039; CHECK-NEXT:    vptestnmd %zmm0, %zmm0, %k12040; CHECK-NEXT:    vrndscaleps $11, (%rdi){1to16}, %zmm0 {%k1} {z}2041; CHECK-NEXT:    retq2042  %c = icmp eq <16 x i32> %cmp, zeroinitializer2043  %ps = load float, ptr %ptr2044  %pins = insertelement <16 x float> undef, float %ps, i32 02045  %p = shufflevector <16 x float> %pins, <16 x float> undef, <16 x i32> zeroinitializer2046  %t = call <16 x float> @llvm.trunc.v16f32(<16 x float> %p)2047  %s = select <16 x i1> %c, <16 x float> %t, <16 x float> zeroinitializer2048  ret <16 x float> %s2049}2050 2051define <2 x double> @rint_v2f64(<2 x double> %p) {2052; CHECK-LABEL: rint_v2f64:2053; CHECK:       ## %bb.0:2054; CHECK-NEXT:    vroundpd $4, %xmm0, %xmm02055; CHECK-NEXT:    retq2056  %t = call <2 x double> @llvm.rint.v2f64(<2 x double> %p)2057  ret <2 x double> %t2058}2059 2060define <4 x float> @rint_v4f32(<4 x float> %p) {2061; CHECK-LABEL: rint_v4f32:2062; CHECK:       ## %bb.0:2063; CHECK-NEXT:    vroundps $4, %xmm0, %xmm02064; CHECK-NEXT:    retq2065  %t = call <4 x float> @llvm.rint.v4f32(<4 x float> %p)2066  ret <4 x float> %t2067}2068 2069define <4 x double> @rint_v4f64(<4 x double> %p){2070; CHECK-LABEL: rint_v4f64:2071; CHECK:       ## %bb.0:2072; CHECK-NEXT:    vroundpd $4, %ymm0, %ymm02073; CHECK-NEXT:    retq2074  %t = call <4 x double> @llvm.rint.v4f64(<4 x double> %p)2075  ret <4 x double> %t2076}2077 2078define <8 x float> @rint_v8f32(<8 x float> %p) {2079; CHECK-LABEL: rint_v8f32:2080; CHECK:       ## %bb.0:2081; CHECK-NEXT:    vroundps $4, %ymm0, %ymm02082; CHECK-NEXT:    retq2083  %t = call <8 x float> @llvm.rint.v8f32(<8 x float> %p)2084  ret <8 x float> %t2085}2086 2087define <8 x double> @rint_v8f64(<8 x double> %p){2088; CHECK-LABEL: rint_v8f64:2089; CHECK:       ## %bb.0:2090; CHECK-NEXT:    vrndscalepd $4, %zmm0, %zmm02091; CHECK-NEXT:    retq2092  %t = call <8 x double> @llvm.rint.v8f64(<8 x double> %p)2093  ret <8 x double> %t2094}2095 2096define <16 x float> @rint_v16f32(<16 x float> %p) {2097; CHECK-LABEL: rint_v16f32:2098; CHECK:       ## %bb.0:2099; CHECK-NEXT:    vrndscaleps $4, %zmm0, %zmm02100; CHECK-NEXT:    retq2101  %t = call <16 x float> @llvm.rint.v16f32(<16 x float> %p)2102  ret <16 x float> %t2103}2104 2105define <2 x double> @rint_v2f64_load(ptr %ptr) {2106; CHECK-LABEL: rint_v2f64_load:2107; CHECK:       ## %bb.0:2108; CHECK-NEXT:    vroundpd $4, (%rdi), %xmm02109; CHECK-NEXT:    retq2110  %p = load <2 x double>, ptr %ptr2111  %t = call <2 x double> @llvm.rint.v2f64(<2 x double> %p)2112  ret <2 x double> %t2113}2114 2115define <4 x float> @rint_v4f32_load(ptr %ptr) {2116; CHECK-LABEL: rint_v4f32_load:2117; CHECK:       ## %bb.0:2118; CHECK-NEXT:    vroundps $4, (%rdi), %xmm02119; CHECK-NEXT:    retq2120  %p = load <4 x float>, ptr %ptr2121  %t = call <4 x float> @llvm.rint.v4f32(<4 x float> %p)2122  ret <4 x float> %t2123}2124 2125define <4 x double> @rint_v4f64_load(ptr %ptr){2126; CHECK-LABEL: rint_v4f64_load:2127; CHECK:       ## %bb.0:2128; CHECK-NEXT:    vroundpd $4, (%rdi), %ymm02129; CHECK-NEXT:    retq2130  %p = load <4 x double>, ptr %ptr2131  %t = call <4 x double> @llvm.rint.v4f64(<4 x double> %p)2132  ret <4 x double> %t2133}2134 2135define <8 x float> @rint_v8f32_load(ptr %ptr) {2136; CHECK-LABEL: rint_v8f32_load:2137; CHECK:       ## %bb.0:2138; CHECK-NEXT:    vroundps $4, (%rdi), %ymm02139; CHECK-NEXT:    retq2140  %p = load <8 x float>, ptr %ptr2141  %t = call <8 x float> @llvm.rint.v8f32(<8 x float> %p)2142  ret <8 x float> %t2143}2144 2145define <8 x double> @rint_v8f64_load(ptr %ptr){2146; CHECK-LABEL: rint_v8f64_load:2147; CHECK:       ## %bb.0:2148; CHECK-NEXT:    vrndscalepd $4, (%rdi), %zmm02149; CHECK-NEXT:    retq2150  %p = load <8 x double>, ptr %ptr2151  %t = call <8 x double> @llvm.rint.v8f64(<8 x double> %p)2152  ret <8 x double> %t2153}2154 2155define <16 x float> @rint_v16f32_load(ptr %ptr) {2156; CHECK-LABEL: rint_v16f32_load:2157; CHECK:       ## %bb.0:2158; CHECK-NEXT:    vrndscaleps $4, (%rdi), %zmm02159; CHECK-NEXT:    retq2160  %p = load <16 x float>, ptr %ptr2161  %t = call <16 x float> @llvm.rint.v16f32(<16 x float> %p)2162  ret <16 x float> %t2163}2164 2165define <2 x double> @rint_v2f64_mask(<2 x double> %p, <2 x double> %passthru, <2 x i64> %cmp) {2166; CHECK-LABEL: rint_v2f64_mask:2167; CHECK:       ## %bb.0:2168; CHECK-NEXT:    vptestnmq %xmm2, %xmm2, %k12169; CHECK-NEXT:    vrndscalepd $4, %xmm0, %xmm1 {%k1}2170; CHECK-NEXT:    vmovapd %xmm1, %xmm02171; CHECK-NEXT:    retq2172  %c = icmp eq <2 x i64> %cmp, zeroinitializer2173  %t = call <2 x double> @llvm.rint.v2f64(<2 x double> %p)2174  %s = select <2 x i1> %c, <2 x double> %t, <2 x double> %passthru2175  ret <2 x double> %s2176}2177 2178define <4 x float> @rint_v4f32_mask(<4 x float> %p, <4 x float> %passthru, <4 x i32> %cmp) {2179; CHECK-LABEL: rint_v4f32_mask:2180; CHECK:       ## %bb.0:2181; CHECK-NEXT:    vptestnmd %xmm2, %xmm2, %k12182; CHECK-NEXT:    vrndscaleps $4, %xmm0, %xmm1 {%k1}2183; CHECK-NEXT:    vmovaps %xmm1, %xmm02184; CHECK-NEXT:    retq2185  %c = icmp eq <4 x i32> %cmp, zeroinitializer2186  %t = call <4 x float> @llvm.rint.v4f32(<4 x float> %p)2187  %s = select <4 x i1> %c, <4 x float> %t, <4 x float> %passthru2188  ret <4 x float> %s2189}2190 2191define <4 x double> @rint_v4f64_mask(<4 x double> %p, <4 x double> %passthru, <4 x i64> %cmp) {2192; CHECK-LABEL: rint_v4f64_mask:2193; CHECK:       ## %bb.0:2194; CHECK-NEXT:    vptestnmq %ymm2, %ymm2, %k12195; CHECK-NEXT:    vrndscalepd $4, %ymm0, %ymm1 {%k1}2196; CHECK-NEXT:    vmovapd %ymm1, %ymm02197; CHECK-NEXT:    retq2198  %c = icmp eq <4 x i64> %cmp, zeroinitializer2199  %t = call <4 x double> @llvm.rint.v4f64(<4 x double> %p)2200  %s = select <4 x i1> %c, <4 x double> %t, <4 x double> %passthru2201  ret <4 x double> %s2202}2203 2204define <8 x float> @rint_v8f32_mask(<8 x float> %p, <8 x float> %passthru, <8 x i32> %cmp) {2205; CHECK-LABEL: rint_v8f32_mask:2206; CHECK:       ## %bb.0:2207; CHECK-NEXT:    vptestnmd %ymm2, %ymm2, %k12208; CHECK-NEXT:    vrndscaleps $4, %ymm0, %ymm1 {%k1}2209; CHECK-NEXT:    vmovaps %ymm1, %ymm02210; CHECK-NEXT:    retq2211  %c = icmp eq <8 x i32> %cmp, zeroinitializer2212  %t = call <8 x float> @llvm.rint.v8f32(<8 x float> %p)2213  %s = select <8 x i1> %c, <8 x float> %t, <8 x float> %passthru2214  ret <8 x float> %s2215}2216 2217define <8 x double> @rint_v8f64_mask(<8 x double> %p, <8 x double> %passthru, <8 x i64> %cmp) {2218; CHECK-LABEL: rint_v8f64_mask:2219; CHECK:       ## %bb.0:2220; CHECK-NEXT:    vptestnmq %zmm2, %zmm2, %k12221; CHECK-NEXT:    vrndscalepd $4, %zmm0, %zmm1 {%k1}2222; CHECK-NEXT:    vmovapd %zmm1, %zmm02223; CHECK-NEXT:    retq2224  %c = icmp eq <8 x i64> %cmp, zeroinitializer2225  %t = call <8 x double> @llvm.rint.v8f64(<8 x double> %p)2226  %s = select <8 x i1> %c, <8 x double> %t, <8 x double> %passthru2227  ret <8 x double> %s2228}2229 2230define <16 x float> @rint_v16f32_mask(<16 x float> %p, <16 x float> %passthru, <16 x i32> %cmp) {2231; CHECK-LABEL: rint_v16f32_mask:2232; CHECK:       ## %bb.0:2233; CHECK-NEXT:    vptestnmd %zmm2, %zmm2, %k12234; CHECK-NEXT:    vrndscaleps $4, %zmm0, %zmm1 {%k1}2235; CHECK-NEXT:    vmovaps %zmm1, %zmm02236; CHECK-NEXT:    retq2237  %c = icmp eq <16 x i32> %cmp, zeroinitializer2238  %t = call <16 x float> @llvm.rint.v16f32(<16 x float> %p)2239  %s = select <16 x i1> %c, <16 x float> %t, <16 x float> %passthru2240  ret <16 x float> %s2241}2242 2243define <2 x double> @rint_v2f64_maskz(<2 x double> %p, <2 x i64> %cmp) {2244; CHECK-LABEL: rint_v2f64_maskz:2245; CHECK:       ## %bb.0:2246; CHECK-NEXT:    vptestnmq %xmm1, %xmm1, %k12247; CHECK-NEXT:    vrndscalepd $4, %xmm0, %xmm0 {%k1} {z}2248; CHECK-NEXT:    retq2249  %c = icmp eq <2 x i64> %cmp, zeroinitializer2250  %t = call <2 x double> @llvm.rint.v2f64(<2 x double> %p)2251  %s = select <2 x i1> %c, <2 x double> %t, <2 x double> zeroinitializer2252  ret <2 x double> %s2253}2254 2255define <4 x float> @rint_v4f32_maskz(<4 x float> %p, <4 x i32> %cmp) {2256; CHECK-LABEL: rint_v4f32_maskz:2257; CHECK:       ## %bb.0:2258; CHECK-NEXT:    vptestnmd %xmm1, %xmm1, %k12259; CHECK-NEXT:    vrndscaleps $4, %xmm0, %xmm0 {%k1} {z}2260; CHECK-NEXT:    retq2261  %c = icmp eq <4 x i32> %cmp, zeroinitializer2262  %t = call <4 x float> @llvm.rint.v4f32(<4 x float> %p)2263  %s = select <4 x i1> %c, <4 x float> %t, <4 x float> zeroinitializer2264  ret <4 x float> %s2265}2266 2267define <4 x double> @rint_v4f64_maskz(<4 x double> %p, <4 x i64> %cmp) {2268; CHECK-LABEL: rint_v4f64_maskz:2269; CHECK:       ## %bb.0:2270; CHECK-NEXT:    vptestnmq %ymm1, %ymm1, %k12271; CHECK-NEXT:    vrndscalepd $4, %ymm0, %ymm0 {%k1} {z}2272; CHECK-NEXT:    retq2273  %c = icmp eq <4 x i64> %cmp, zeroinitializer2274  %t = call <4 x double> @llvm.rint.v4f64(<4 x double> %p)2275  %s = select <4 x i1> %c, <4 x double> %t, <4 x double> zeroinitializer2276  ret <4 x double> %s2277}2278 2279define <8 x float> @rint_v8f32_maskz(<8 x float> %p, <8 x i32> %cmp) {2280; CHECK-LABEL: rint_v8f32_maskz:2281; CHECK:       ## %bb.0:2282; CHECK-NEXT:    vptestnmd %ymm1, %ymm1, %k12283; CHECK-NEXT:    vrndscaleps $4, %ymm0, %ymm0 {%k1} {z}2284; CHECK-NEXT:    retq2285  %c = icmp eq <8 x i32> %cmp, zeroinitializer2286  %t = call <8 x float> @llvm.rint.v8f32(<8 x float> %p)2287  %s = select <8 x i1> %c, <8 x float> %t, <8 x float> zeroinitializer2288  ret <8 x float> %s2289}2290 2291define <8 x double> @rint_v8f64_maskz(<8 x double> %p, <8 x i64> %cmp) {2292; CHECK-LABEL: rint_v8f64_maskz:2293; CHECK:       ## %bb.0:2294; CHECK-NEXT:    vptestnmq %zmm1, %zmm1, %k12295; CHECK-NEXT:    vrndscalepd $4, %zmm0, %zmm0 {%k1} {z}2296; CHECK-NEXT:    retq2297  %c = icmp eq <8 x i64> %cmp, zeroinitializer2298  %t = call <8 x double> @llvm.rint.v8f64(<8 x double> %p)2299  %s = select <8 x i1> %c, <8 x double> %t, <8 x double> zeroinitializer2300  ret <8 x double> %s2301}2302 2303define <16 x float> @rint_v16f32_maskz(<16 x float> %p, <16 x i32> %cmp) {2304; CHECK-LABEL: rint_v16f32_maskz:2305; CHECK:       ## %bb.0:2306; CHECK-NEXT:    vptestnmd %zmm1, %zmm1, %k12307; CHECK-NEXT:    vrndscaleps $4, %zmm0, %zmm0 {%k1} {z}2308; CHECK-NEXT:    retq2309  %c = icmp eq <16 x i32> %cmp, zeroinitializer2310  %t = call <16 x float> @llvm.rint.v16f32(<16 x float> %p)2311  %s = select <16 x i1> %c, <16 x float> %t, <16 x float> zeroinitializer2312  ret <16 x float> %s2313}2314 2315define <2 x double> @rint_v2f64_mask_load(ptr %ptr, <2 x double> %passthru, <2 x i64> %cmp) {2316; CHECK-LABEL: rint_v2f64_mask_load:2317; CHECK:       ## %bb.0:2318; CHECK-NEXT:    vptestnmq %xmm1, %xmm1, %k12319; CHECK-NEXT:    vrndscalepd $4, (%rdi), %xmm0 {%k1}2320; CHECK-NEXT:    retq2321  %c = icmp eq <2 x i64> %cmp, zeroinitializer2322  %p = load <2 x double>, ptr %ptr2323  %t = call <2 x double> @llvm.rint.v2f64(<2 x double> %p)2324  %s = select <2 x i1> %c, <2 x double> %t, <2 x double> %passthru2325  ret <2 x double> %s2326}2327 2328define <4 x float> @rint_v4f32_mask_load(ptr %ptr, <4 x float> %passthru, <4 x i32> %cmp) {2329; CHECK-LABEL: rint_v4f32_mask_load:2330; CHECK:       ## %bb.0:2331; CHECK-NEXT:    vptestnmd %xmm1, %xmm1, %k12332; CHECK-NEXT:    vrndscaleps $4, (%rdi), %xmm0 {%k1}2333; CHECK-NEXT:    retq2334  %c = icmp eq <4 x i32> %cmp, zeroinitializer2335  %p = load <4 x float>, ptr %ptr2336  %t = call <4 x float> @llvm.rint.v4f32(<4 x float> %p)2337  %s = select <4 x i1> %c, <4 x float> %t, <4 x float> %passthru2338  ret <4 x float> %s2339}2340 2341define <4 x double> @rint_v4f64_mask_load(ptr %ptr, <4 x double> %passthru, <4 x i64> %cmp) {2342; CHECK-LABEL: rint_v4f64_mask_load:2343; CHECK:       ## %bb.0:2344; CHECK-NEXT:    vptestnmq %ymm1, %ymm1, %k12345; CHECK-NEXT:    vrndscalepd $4, (%rdi), %ymm0 {%k1}2346; CHECK-NEXT:    retq2347  %c = icmp eq <4 x i64> %cmp, zeroinitializer2348  %p = load <4 x double>, ptr %ptr2349  %t = call <4 x double> @llvm.rint.v4f64(<4 x double> %p)2350  %s = select <4 x i1> %c, <4 x double> %t, <4 x double> %passthru2351  ret <4 x double> %s2352}2353 2354define <8 x float> @rint_v8f32_mask_load(ptr %ptr, <8 x float> %passthru, <8 x i32> %cmp) {2355; CHECK-LABEL: rint_v8f32_mask_load:2356; CHECK:       ## %bb.0:2357; CHECK-NEXT:    vptestnmd %ymm1, %ymm1, %k12358; CHECK-NEXT:    vrndscaleps $4, (%rdi), %ymm0 {%k1}2359; CHECK-NEXT:    retq2360  %c = icmp eq <8 x i32> %cmp, zeroinitializer2361  %p = load <8 x float>, ptr %ptr2362  %t = call <8 x float> @llvm.rint.v8f32(<8 x float> %p)2363  %s = select <8 x i1> %c, <8 x float> %t, <8 x float> %passthru2364  ret <8 x float> %s2365}2366 2367define <8 x double> @rint_v8f64_mask_load(ptr %ptr, <8 x double> %passthru, <8 x i64> %cmp) {2368; CHECK-LABEL: rint_v8f64_mask_load:2369; CHECK:       ## %bb.0:2370; CHECK-NEXT:    vptestnmq %zmm1, %zmm1, %k12371; CHECK-NEXT:    vrndscalepd $4, (%rdi), %zmm0 {%k1}2372; CHECK-NEXT:    retq2373  %c = icmp eq <8 x i64> %cmp, zeroinitializer2374  %p = load <8 x double>, ptr %ptr2375  %t = call <8 x double> @llvm.rint.v8f64(<8 x double> %p)2376  %s = select <8 x i1> %c, <8 x double> %t, <8 x double> %passthru2377  ret <8 x double> %s2378}2379 2380define <16 x float> @rint_v16f32_mask_load(ptr %ptr, <16 x float> %passthru, <16 x i32> %cmp) {2381; CHECK-LABEL: rint_v16f32_mask_load:2382; CHECK:       ## %bb.0:2383; CHECK-NEXT:    vptestnmd %zmm1, %zmm1, %k12384; CHECK-NEXT:    vrndscaleps $4, (%rdi), %zmm0 {%k1}2385; CHECK-NEXT:    retq2386  %c = icmp eq <16 x i32> %cmp, zeroinitializer2387  %p = load <16 x float>, ptr %ptr2388  %t = call <16 x float> @llvm.rint.v16f32(<16 x float> %p)2389  %s = select <16 x i1> %c, <16 x float> %t, <16 x float> %passthru2390  ret <16 x float> %s2391}2392 2393define <2 x double> @rint_v2f64_maskz_load(ptr %ptr, <2 x i64> %cmp) {2394; CHECK-LABEL: rint_v2f64_maskz_load:2395; CHECK:       ## %bb.0:2396; CHECK-NEXT:    vptestnmq %xmm0, %xmm0, %k12397; CHECK-NEXT:    vrndscalepd $4, (%rdi), %xmm0 {%k1} {z}2398; CHECK-NEXT:    retq2399  %c = icmp eq <2 x i64> %cmp, zeroinitializer2400  %p = load <2 x double>, ptr %ptr2401  %t = call <2 x double> @llvm.rint.v2f64(<2 x double> %p)2402  %s = select <2 x i1> %c, <2 x double> %t, <2 x double> zeroinitializer2403  ret <2 x double> %s2404}2405 2406define <4 x float> @rint_v4f32_maskz_load(ptr %ptr, <4 x i32> %cmp) {2407; CHECK-LABEL: rint_v4f32_maskz_load:2408; CHECK:       ## %bb.0:2409; CHECK-NEXT:    vptestnmd %xmm0, %xmm0, %k12410; CHECK-NEXT:    vrndscaleps $4, (%rdi), %xmm0 {%k1} {z}2411; CHECK-NEXT:    retq2412  %c = icmp eq <4 x i32> %cmp, zeroinitializer2413  %p = load <4 x float>, ptr %ptr2414  %t = call <4 x float> @llvm.rint.v4f32(<4 x float> %p)2415  %s = select <4 x i1> %c, <4 x float> %t, <4 x float> zeroinitializer2416  ret <4 x float> %s2417}2418 2419define <4 x double> @rint_v4f64_maskz_load(ptr %ptr, <4 x i64> %cmp) {2420; CHECK-LABEL: rint_v4f64_maskz_load:2421; CHECK:       ## %bb.0:2422; CHECK-NEXT:    vptestnmq %ymm0, %ymm0, %k12423; CHECK-NEXT:    vrndscalepd $4, (%rdi), %ymm0 {%k1} {z}2424; CHECK-NEXT:    retq2425  %c = icmp eq <4 x i64> %cmp, zeroinitializer2426  %p = load <4 x double>, ptr %ptr2427  %t = call <4 x double> @llvm.rint.v4f64(<4 x double> %p)2428  %s = select <4 x i1> %c, <4 x double> %t, <4 x double> zeroinitializer2429  ret <4 x double> %s2430}2431 2432define <8 x float> @rint_v8f32_maskz_load(ptr %ptr, <8 x i32> %cmp) {2433; CHECK-LABEL: rint_v8f32_maskz_load:2434; CHECK:       ## %bb.0:2435; CHECK-NEXT:    vptestnmd %ymm0, %ymm0, %k12436; CHECK-NEXT:    vrndscaleps $4, (%rdi), %ymm0 {%k1} {z}2437; CHECK-NEXT:    retq2438  %c = icmp eq <8 x i32> %cmp, zeroinitializer2439  %p = load <8 x float>, ptr %ptr2440  %t = call <8 x float> @llvm.rint.v8f32(<8 x float> %p)2441  %s = select <8 x i1> %c, <8 x float> %t, <8 x float> zeroinitializer2442  ret <8 x float> %s2443}2444 2445define <8 x double> @rint_v8f64_maskz_load(ptr %ptr, <8 x i64> %cmp) {2446; CHECK-LABEL: rint_v8f64_maskz_load:2447; CHECK:       ## %bb.0:2448; CHECK-NEXT:    vptestnmq %zmm0, %zmm0, %k12449; CHECK-NEXT:    vrndscalepd $4, (%rdi), %zmm0 {%k1} {z}2450; CHECK-NEXT:    retq2451  %c = icmp eq <8 x i64> %cmp, zeroinitializer2452  %p = load <8 x double>, ptr %ptr2453  %t = call <8 x double> @llvm.rint.v8f64(<8 x double> %p)2454  %s = select <8 x i1> %c, <8 x double> %t, <8 x double> zeroinitializer2455  ret <8 x double> %s2456}2457 2458define <16 x float> @rint_v16f32_maskz_load(ptr %ptr, <16 x i32> %cmp) {2459; CHECK-LABEL: rint_v16f32_maskz_load:2460; CHECK:       ## %bb.0:2461; CHECK-NEXT:    vptestnmd %zmm0, %zmm0, %k12462; CHECK-NEXT:    vrndscaleps $4, (%rdi), %zmm0 {%k1} {z}2463; CHECK-NEXT:    retq2464  %c = icmp eq <16 x i32> %cmp, zeroinitializer2465  %p = load <16 x float>, ptr %ptr2466  %t = call <16 x float> @llvm.rint.v16f32(<16 x float> %p)2467  %s = select <16 x i1> %c, <16 x float> %t, <16 x float> zeroinitializer2468  ret <16 x float> %s2469}2470 2471define <2 x double> @rint_v2f64_broadcast(ptr %ptr) {2472; CHECK-LABEL: rint_v2f64_broadcast:2473; CHECK:       ## %bb.0:2474; CHECK-NEXT:    vrndscalepd $4, (%rdi){1to2}, %xmm02475; CHECK-NEXT:    retq2476  %ps = load double, ptr %ptr2477  %pins = insertelement <2 x double> undef, double %ps, i32 02478  %p = shufflevector <2 x double> %pins, <2 x double> undef, <2 x i32> zeroinitializer2479  %t = call <2 x double> @llvm.rint.v2f64(<2 x double> %p)2480  ret <2 x double> %t2481}2482 2483define <4 x float> @rint_v4f32_broadcast(ptr %ptr) {2484; CHECK-LABEL: rint_v4f32_broadcast:2485; CHECK:       ## %bb.0:2486; CHECK-NEXT:    vrndscaleps $4, (%rdi){1to4}, %xmm02487; CHECK-NEXT:    retq2488  %ps = load float, ptr %ptr2489  %pins = insertelement <4 x float> undef, float %ps, i32 02490  %p = shufflevector <4 x float> %pins, <4 x float> undef, <4 x i32> zeroinitializer2491  %t = call <4 x float> @llvm.rint.v4f32(<4 x float> %p)2492  ret <4 x float> %t2493}2494 2495define <4 x double> @rint_v4f64_broadcast(ptr %ptr){2496; CHECK-LABEL: rint_v4f64_broadcast:2497; CHECK:       ## %bb.0:2498; CHECK-NEXT:    vrndscalepd $4, (%rdi){1to4}, %ymm02499; CHECK-NEXT:    retq2500  %ps = load double, ptr %ptr2501  %pins = insertelement <4 x double> undef, double %ps, i32 02502  %p = shufflevector <4 x double> %pins, <4 x double> undef, <4 x i32> zeroinitializer2503  %t = call <4 x double> @llvm.rint.v4f64(<4 x double> %p)2504  ret <4 x double> %t2505}2506 2507define <8 x float> @rint_v8f32_broadcast(ptr %ptr) {2508; CHECK-LABEL: rint_v8f32_broadcast:2509; CHECK:       ## %bb.0:2510; CHECK-NEXT:    vrndscaleps $4, (%rdi){1to8}, %ymm02511; CHECK-NEXT:    retq2512  %ps = load float, ptr %ptr2513  %pins = insertelement <8 x float> undef, float %ps, i32 02514  %p = shufflevector <8 x float> %pins, <8 x float> undef, <8 x i32> zeroinitializer2515  %t = call <8 x float> @llvm.rint.v8f32(<8 x float> %p)2516  ret <8 x float> %t2517}2518 2519define <8 x double> @rint_v8f64_broadcast(ptr %ptr){2520; CHECK-LABEL: rint_v8f64_broadcast:2521; CHECK:       ## %bb.0:2522; CHECK-NEXT:    vrndscalepd $4, (%rdi){1to8}, %zmm02523; CHECK-NEXT:    retq2524  %ps = load double, ptr %ptr2525  %pins = insertelement <8 x double> undef, double %ps, i32 02526  %p = shufflevector <8 x double> %pins, <8 x double> undef, <8 x i32> zeroinitializer2527  %t = call <8 x double> @llvm.rint.v8f64(<8 x double> %p)2528  ret <8 x double> %t2529}2530 2531define <16 x float> @rint_v16f32_broadcast(ptr %ptr) {2532; CHECK-LABEL: rint_v16f32_broadcast:2533; CHECK:       ## %bb.0:2534; CHECK-NEXT:    vrndscaleps $4, (%rdi){1to16}, %zmm02535; CHECK-NEXT:    retq2536  %ps = load float, ptr %ptr2537  %pins = insertelement <16 x float> undef, float %ps, i32 02538  %p = shufflevector <16 x float> %pins, <16 x float> undef, <16 x i32> zeroinitializer2539  %t = call <16 x float> @llvm.rint.v16f32(<16 x float> %p)2540  ret <16 x float> %t2541}2542 2543define <2 x double> @rint_v2f64_mask_broadcast(ptr %ptr, <2 x double> %passthru, <2 x i64> %cmp) {2544; CHECK-LABEL: rint_v2f64_mask_broadcast:2545; CHECK:       ## %bb.0:2546; CHECK-NEXT:    vptestnmq %xmm1, %xmm1, %k12547; CHECK-NEXT:    vrndscalepd $4, (%rdi){1to2}, %xmm0 {%k1}2548; CHECK-NEXT:    retq2549  %c = icmp eq <2 x i64> %cmp, zeroinitializer2550  %ps = load double, ptr %ptr2551  %pins = insertelement <2 x double> undef, double %ps, i32 02552  %p = shufflevector <2 x double> %pins, <2 x double> undef, <2 x i32> zeroinitializer2553  %t = call <2 x double> @llvm.rint.v2f64(<2 x double> %p)2554  %s = select <2 x i1> %c, <2 x double> %t, <2 x double> %passthru2555  ret <2 x double> %s2556}2557 2558define <4 x float> @rint_v4f32_mask_broadcast(ptr %ptr, <4 x float> %passthru, <4 x i32> %cmp) {2559; CHECK-LABEL: rint_v4f32_mask_broadcast:2560; CHECK:       ## %bb.0:2561; CHECK-NEXT:    vptestnmd %xmm1, %xmm1, %k12562; CHECK-NEXT:    vrndscaleps $4, (%rdi){1to4}, %xmm0 {%k1}2563; CHECK-NEXT:    retq2564  %c = icmp eq <4 x i32> %cmp, zeroinitializer2565  %ps = load float, ptr %ptr2566  %pins = insertelement <4 x float> undef, float %ps, i32 02567  %p = shufflevector <4 x float> %pins, <4 x float> undef, <4 x i32> zeroinitializer2568  %t = call <4 x float> @llvm.rint.v4f32(<4 x float> %p)2569  %s = select <4 x i1> %c, <4 x float> %t, <4 x float> %passthru2570  ret <4 x float> %s2571}2572 2573define <4 x double> @rint_v4f64_mask_broadcast(ptr %ptr, <4 x double> %passthru, <4 x i64> %cmp) {2574; CHECK-LABEL: rint_v4f64_mask_broadcast:2575; CHECK:       ## %bb.0:2576; CHECK-NEXT:    vptestnmq %ymm1, %ymm1, %k12577; CHECK-NEXT:    vrndscalepd $4, (%rdi){1to4}, %ymm0 {%k1}2578; CHECK-NEXT:    retq2579  %c = icmp eq <4 x i64> %cmp, zeroinitializer2580  %ps = load double, ptr %ptr2581  %pins = insertelement <4 x double> undef, double %ps, i32 02582  %p = shufflevector <4 x double> %pins, <4 x double> undef, <4 x i32> zeroinitializer2583  %t = call <4 x double> @llvm.rint.v4f64(<4 x double> %p)2584  %s = select <4 x i1> %c, <4 x double> %t, <4 x double> %passthru2585  ret <4 x double> %s2586}2587 2588define <8 x float> @rint_v8f32_mask_broadcast(ptr %ptr, <8 x float> %passthru, <8 x i32> %cmp) {2589; CHECK-LABEL: rint_v8f32_mask_broadcast:2590; CHECK:       ## %bb.0:2591; CHECK-NEXT:    vptestnmd %ymm1, %ymm1, %k12592; CHECK-NEXT:    vrndscaleps $4, (%rdi){1to8}, %ymm0 {%k1}2593; CHECK-NEXT:    retq2594  %c = icmp eq <8 x i32> %cmp, zeroinitializer2595  %ps = load float, ptr %ptr2596  %pins = insertelement <8 x float> undef, float %ps, i32 02597  %p = shufflevector <8 x float> %pins, <8 x float> undef, <8 x i32> zeroinitializer2598  %t = call <8 x float> @llvm.rint.v8f32(<8 x float> %p)2599  %s = select <8 x i1> %c, <8 x float> %t, <8 x float> %passthru2600  ret <8 x float> %s2601}2602 2603define <8 x double> @rint_v8f64_mask_broadcast(ptr %ptr, <8 x double> %passthru, <8 x i64> %cmp) {2604; CHECK-LABEL: rint_v8f64_mask_broadcast:2605; CHECK:       ## %bb.0:2606; CHECK-NEXT:    vptestnmq %zmm1, %zmm1, %k12607; CHECK-NEXT:    vrndscalepd $4, (%rdi){1to8}, %zmm0 {%k1}2608; CHECK-NEXT:    retq2609  %c = icmp eq <8 x i64> %cmp, zeroinitializer2610  %ps = load double, ptr %ptr2611  %pins = insertelement <8 x double> undef, double %ps, i32 02612  %p = shufflevector <8 x double> %pins, <8 x double> undef, <8 x i32> zeroinitializer2613  %t = call <8 x double> @llvm.rint.v8f64(<8 x double> %p)2614  %s = select <8 x i1> %c, <8 x double> %t, <8 x double> %passthru2615  ret <8 x double> %s2616}2617 2618define <16 x float> @rint_v16f32_mask_broadcast(ptr %ptr, <16 x float> %passthru, <16 x i32> %cmp) {2619; CHECK-LABEL: rint_v16f32_mask_broadcast:2620; CHECK:       ## %bb.0:2621; CHECK-NEXT:    vptestnmd %zmm1, %zmm1, %k12622; CHECK-NEXT:    vrndscaleps $4, (%rdi){1to16}, %zmm0 {%k1}2623; CHECK-NEXT:    retq2624  %c = icmp eq <16 x i32> %cmp, zeroinitializer2625  %ps = load float, ptr %ptr2626  %pins = insertelement <16 x float> undef, float %ps, i32 02627  %p = shufflevector <16 x float> %pins, <16 x float> undef, <16 x i32> zeroinitializer2628  %t = call <16 x float> @llvm.rint.v16f32(<16 x float> %p)2629  %s = select <16 x i1> %c, <16 x float> %t, <16 x float> %passthru2630  ret <16 x float> %s2631}2632 2633define <2 x double> @rint_v2f64_maskz_broadcast(ptr %ptr, <2 x i64> %cmp) {2634; CHECK-LABEL: rint_v2f64_maskz_broadcast:2635; CHECK:       ## %bb.0:2636; CHECK-NEXT:    vptestnmq %xmm0, %xmm0, %k12637; CHECK-NEXT:    vrndscalepd $4, (%rdi){1to2}, %xmm0 {%k1} {z}2638; CHECK-NEXT:    retq2639  %c = icmp eq <2 x i64> %cmp, zeroinitializer2640  %ps = load double, ptr %ptr2641  %pins = insertelement <2 x double> undef, double %ps, i32 02642  %p = shufflevector <2 x double> %pins, <2 x double> undef, <2 x i32> zeroinitializer2643  %t = call <2 x double> @llvm.rint.v2f64(<2 x double> %p)2644  %s = select <2 x i1> %c, <2 x double> %t, <2 x double> zeroinitializer2645  ret <2 x double> %s2646}2647 2648define <4 x float> @rint_v4f32_maskz_broadcast(ptr %ptr, <4 x i32> %cmp) {2649; CHECK-LABEL: rint_v4f32_maskz_broadcast:2650; CHECK:       ## %bb.0:2651; CHECK-NEXT:    vptestnmd %xmm0, %xmm0, %k12652; CHECK-NEXT:    vrndscaleps $4, (%rdi){1to4}, %xmm0 {%k1} {z}2653; CHECK-NEXT:    retq2654  %c = icmp eq <4 x i32> %cmp, zeroinitializer2655  %ps = load float, ptr %ptr2656  %pins = insertelement <4 x float> undef, float %ps, i32 02657  %p = shufflevector <4 x float> %pins, <4 x float> undef, <4 x i32> zeroinitializer2658  %t = call <4 x float> @llvm.rint.v4f32(<4 x float> %p)2659  %s = select <4 x i1> %c, <4 x float> %t, <4 x float> zeroinitializer2660  ret <4 x float> %s2661}2662 2663define <4 x double> @rint_v4f64_maskz_broadcast(ptr %ptr, <4 x i64> %cmp) {2664; CHECK-LABEL: rint_v4f64_maskz_broadcast:2665; CHECK:       ## %bb.0:2666; CHECK-NEXT:    vptestnmq %ymm0, %ymm0, %k12667; CHECK-NEXT:    vrndscalepd $4, (%rdi){1to4}, %ymm0 {%k1} {z}2668; CHECK-NEXT:    retq2669  %c = icmp eq <4 x i64> %cmp, zeroinitializer2670  %ps = load double, ptr %ptr2671  %pins = insertelement <4 x double> undef, double %ps, i32 02672  %p = shufflevector <4 x double> %pins, <4 x double> undef, <4 x i32> zeroinitializer2673  %t = call <4 x double> @llvm.rint.v4f64(<4 x double> %p)2674  %s = select <4 x i1> %c, <4 x double> %t, <4 x double> zeroinitializer2675  ret <4 x double> %s2676}2677 2678define <8 x float> @rint_v8f32_maskz_broadcast(ptr %ptr, <8 x i32> %cmp) {2679; CHECK-LABEL: rint_v8f32_maskz_broadcast:2680; CHECK:       ## %bb.0:2681; CHECK-NEXT:    vptestnmd %ymm0, %ymm0, %k12682; CHECK-NEXT:    vrndscaleps $4, (%rdi){1to8}, %ymm0 {%k1} {z}2683; CHECK-NEXT:    retq2684  %c = icmp eq <8 x i32> %cmp, zeroinitializer2685  %ps = load float, ptr %ptr2686  %pins = insertelement <8 x float> undef, float %ps, i32 02687  %p = shufflevector <8 x float> %pins, <8 x float> undef, <8 x i32> zeroinitializer2688  %t = call <8 x float> @llvm.rint.v8f32(<8 x float> %p)2689  %s = select <8 x i1> %c, <8 x float> %t, <8 x float> zeroinitializer2690  ret <8 x float> %s2691}2692 2693define <8 x double> @rint_v8f64_maskz_broadcast(ptr %ptr, <8 x i64> %cmp) {2694; CHECK-LABEL: rint_v8f64_maskz_broadcast:2695; CHECK:       ## %bb.0:2696; CHECK-NEXT:    vptestnmq %zmm0, %zmm0, %k12697; CHECK-NEXT:    vrndscalepd $4, (%rdi){1to8}, %zmm0 {%k1} {z}2698; CHECK-NEXT:    retq2699  %c = icmp eq <8 x i64> %cmp, zeroinitializer2700  %ps = load double, ptr %ptr2701  %pins = insertelement <8 x double> undef, double %ps, i32 02702  %p = shufflevector <8 x double> %pins, <8 x double> undef, <8 x i32> zeroinitializer2703  %t = call <8 x double> @llvm.rint.v8f64(<8 x double> %p)2704  %s = select <8 x i1> %c, <8 x double> %t, <8 x double> zeroinitializer2705  ret <8 x double> %s2706}2707 2708define <16 x float> @rint_v16f32_maskz_broadcast(ptr %ptr, <16 x i32> %cmp) {2709; CHECK-LABEL: rint_v16f32_maskz_broadcast:2710; CHECK:       ## %bb.0:2711; CHECK-NEXT:    vptestnmd %zmm0, %zmm0, %k12712; CHECK-NEXT:    vrndscaleps $4, (%rdi){1to16}, %zmm0 {%k1} {z}2713; CHECK-NEXT:    retq2714  %c = icmp eq <16 x i32> %cmp, zeroinitializer2715  %ps = load float, ptr %ptr2716  %pins = insertelement <16 x float> undef, float %ps, i32 02717  %p = shufflevector <16 x float> %pins, <16 x float> undef, <16 x i32> zeroinitializer2718  %t = call <16 x float> @llvm.rint.v16f32(<16 x float> %p)2719  %s = select <16 x i1> %c, <16 x float> %t, <16 x float> zeroinitializer2720  ret <16 x float> %s2721}2722 2723define <2 x double> @nearbyint_v2f64(<2 x double> %p) {2724; CHECK-LABEL: nearbyint_v2f64:2725; CHECK:       ## %bb.0:2726; CHECK-NEXT:    vroundpd $12, %xmm0, %xmm02727; CHECK-NEXT:    retq2728  %t = call <2 x double> @llvm.nearbyint.v2f64(<2 x double> %p)2729  ret <2 x double> %t2730}2731 2732define <4 x float> @nearbyint_v4f32(<4 x float> %p) {2733; CHECK-LABEL: nearbyint_v4f32:2734; CHECK:       ## %bb.0:2735; CHECK-NEXT:    vroundps $12, %xmm0, %xmm02736; CHECK-NEXT:    retq2737  %t = call <4 x float> @llvm.nearbyint.v4f32(<4 x float> %p)2738  ret <4 x float> %t2739}2740 2741define <4 x double> @nearbyint_v4f64(<4 x double> %p){2742; CHECK-LABEL: nearbyint_v4f64:2743; CHECK:       ## %bb.0:2744; CHECK-NEXT:    vroundpd $12, %ymm0, %ymm02745; CHECK-NEXT:    retq2746  %t = call <4 x double> @llvm.nearbyint.v4f64(<4 x double> %p)2747  ret <4 x double> %t2748}2749 2750define <8 x float> @nearbyint_v8f32(<8 x float> %p) {2751; CHECK-LABEL: nearbyint_v8f32:2752; CHECK:       ## %bb.0:2753; CHECK-NEXT:    vroundps $12, %ymm0, %ymm02754; CHECK-NEXT:    retq2755  %t = call <8 x float> @llvm.nearbyint.v8f32(<8 x float> %p)2756  ret <8 x float> %t2757}2758 2759define <8 x double> @nearbyint_v8f64(<8 x double> %p){2760; CHECK-LABEL: nearbyint_v8f64:2761; CHECK:       ## %bb.0:2762; CHECK-NEXT:    vrndscalepd $12, %zmm0, %zmm02763; CHECK-NEXT:    retq2764  %t = call <8 x double> @llvm.nearbyint.v8f64(<8 x double> %p)2765  ret <8 x double> %t2766}2767 2768define <16 x float> @nearbyint_v16f32(<16 x float> %p) {2769; CHECK-LABEL: nearbyint_v16f32:2770; CHECK:       ## %bb.0:2771; CHECK-NEXT:    vrndscaleps $12, %zmm0, %zmm02772; CHECK-NEXT:    retq2773  %t = call <16 x float> @llvm.nearbyint.v16f32(<16 x float> %p)2774  ret <16 x float> %t2775}2776 2777define <2 x double> @nearbyint_v2f64_load(ptr %ptr) {2778; CHECK-LABEL: nearbyint_v2f64_load:2779; CHECK:       ## %bb.0:2780; CHECK-NEXT:    vroundpd $12, (%rdi), %xmm02781; CHECK-NEXT:    retq2782  %p = load <2 x double>, ptr %ptr2783  %t = call <2 x double> @llvm.nearbyint.v2f64(<2 x double> %p)2784  ret <2 x double> %t2785}2786 2787define <4 x float> @nearbyint_v4f32_load(ptr %ptr) {2788; CHECK-LABEL: nearbyint_v4f32_load:2789; CHECK:       ## %bb.0:2790; CHECK-NEXT:    vroundps $12, (%rdi), %xmm02791; CHECK-NEXT:    retq2792  %p = load <4 x float>, ptr %ptr2793  %t = call <4 x float> @llvm.nearbyint.v4f32(<4 x float> %p)2794  ret <4 x float> %t2795}2796 2797define <4 x double> @nearbyint_v4f64_load(ptr %ptr){2798; CHECK-LABEL: nearbyint_v4f64_load:2799; CHECK:       ## %bb.0:2800; CHECK-NEXT:    vroundpd $12, (%rdi), %ymm02801; CHECK-NEXT:    retq2802  %p = load <4 x double>, ptr %ptr2803  %t = call <4 x double> @llvm.nearbyint.v4f64(<4 x double> %p)2804  ret <4 x double> %t2805}2806 2807define <8 x float> @nearbyint_v8f32_load(ptr %ptr) {2808; CHECK-LABEL: nearbyint_v8f32_load:2809; CHECK:       ## %bb.0:2810; CHECK-NEXT:    vroundps $12, (%rdi), %ymm02811; CHECK-NEXT:    retq2812  %p = load <8 x float>, ptr %ptr2813  %t = call <8 x float> @llvm.nearbyint.v8f32(<8 x float> %p)2814  ret <8 x float> %t2815}2816 2817define <8 x double> @nearbyint_v8f64_load(ptr %ptr){2818; CHECK-LABEL: nearbyint_v8f64_load:2819; CHECK:       ## %bb.0:2820; CHECK-NEXT:    vrndscalepd $12, (%rdi), %zmm02821; CHECK-NEXT:    retq2822  %p = load <8 x double>, ptr %ptr2823  %t = call <8 x double> @llvm.nearbyint.v8f64(<8 x double> %p)2824  ret <8 x double> %t2825}2826 2827define <16 x float> @nearbyint_v16f32_load(ptr %ptr) {2828; CHECK-LABEL: nearbyint_v16f32_load:2829; CHECK:       ## %bb.0:2830; CHECK-NEXT:    vrndscaleps $12, (%rdi), %zmm02831; CHECK-NEXT:    retq2832  %p = load <16 x float>, ptr %ptr2833  %t = call <16 x float> @llvm.nearbyint.v16f32(<16 x float> %p)2834  ret <16 x float> %t2835}2836 2837define <2 x double> @nearbyint_v2f64_mask(<2 x double> %p, <2 x double> %passthru, <2 x i64> %cmp) {2838; CHECK-LABEL: nearbyint_v2f64_mask:2839; CHECK:       ## %bb.0:2840; CHECK-NEXT:    vptestnmq %xmm2, %xmm2, %k12841; CHECK-NEXT:    vrndscalepd $12, %xmm0, %xmm1 {%k1}2842; CHECK-NEXT:    vmovapd %xmm1, %xmm02843; CHECK-NEXT:    retq2844  %c = icmp eq <2 x i64> %cmp, zeroinitializer2845  %t = call <2 x double> @llvm.nearbyint.v2f64(<2 x double> %p)2846  %s = select <2 x i1> %c, <2 x double> %t, <2 x double> %passthru2847  ret <2 x double> %s2848}2849 2850define <4 x float> @nearbyint_v4f32_mask(<4 x float> %p, <4 x float> %passthru, <4 x i32> %cmp) {2851; CHECK-LABEL: nearbyint_v4f32_mask:2852; CHECK:       ## %bb.0:2853; CHECK-NEXT:    vptestnmd %xmm2, %xmm2, %k12854; CHECK-NEXT:    vrndscaleps $12, %xmm0, %xmm1 {%k1}2855; CHECK-NEXT:    vmovaps %xmm1, %xmm02856; CHECK-NEXT:    retq2857  %c = icmp eq <4 x i32> %cmp, zeroinitializer2858  %t = call <4 x float> @llvm.nearbyint.v4f32(<4 x float> %p)2859  %s = select <4 x i1> %c, <4 x float> %t, <4 x float> %passthru2860  ret <4 x float> %s2861}2862 2863define <4 x double> @nearbyint_v4f64_mask(<4 x double> %p, <4 x double> %passthru, <4 x i64> %cmp) {2864; CHECK-LABEL: nearbyint_v4f64_mask:2865; CHECK:       ## %bb.0:2866; CHECK-NEXT:    vptestnmq %ymm2, %ymm2, %k12867; CHECK-NEXT:    vrndscalepd $12, %ymm0, %ymm1 {%k1}2868; CHECK-NEXT:    vmovapd %ymm1, %ymm02869; CHECK-NEXT:    retq2870  %c = icmp eq <4 x i64> %cmp, zeroinitializer2871  %t = call <4 x double> @llvm.nearbyint.v4f64(<4 x double> %p)2872  %s = select <4 x i1> %c, <4 x double> %t, <4 x double> %passthru2873  ret <4 x double> %s2874}2875 2876define <8 x float> @nearbyint_v8f32_mask(<8 x float> %p, <8 x float> %passthru, <8 x i32> %cmp) {2877; CHECK-LABEL: nearbyint_v8f32_mask:2878; CHECK:       ## %bb.0:2879; CHECK-NEXT:    vptestnmd %ymm2, %ymm2, %k12880; CHECK-NEXT:    vrndscaleps $12, %ymm0, %ymm1 {%k1}2881; CHECK-NEXT:    vmovaps %ymm1, %ymm02882; CHECK-NEXT:    retq2883  %c = icmp eq <8 x i32> %cmp, zeroinitializer2884  %t = call <8 x float> @llvm.nearbyint.v8f32(<8 x float> %p)2885  %s = select <8 x i1> %c, <8 x float> %t, <8 x float> %passthru2886  ret <8 x float> %s2887}2888 2889define <8 x double> @nearbyint_v8f64_mask(<8 x double> %p, <8 x double> %passthru, <8 x i64> %cmp) {2890; CHECK-LABEL: nearbyint_v8f64_mask:2891; CHECK:       ## %bb.0:2892; CHECK-NEXT:    vptestnmq %zmm2, %zmm2, %k12893; CHECK-NEXT:    vrndscalepd $12, %zmm0, %zmm1 {%k1}2894; CHECK-NEXT:    vmovapd %zmm1, %zmm02895; CHECK-NEXT:    retq2896  %c = icmp eq <8 x i64> %cmp, zeroinitializer2897  %t = call <8 x double> @llvm.nearbyint.v8f64(<8 x double> %p)2898  %s = select <8 x i1> %c, <8 x double> %t, <8 x double> %passthru2899  ret <8 x double> %s2900}2901 2902define <16 x float> @nearbyint_v16f32_mask(<16 x float> %p, <16 x float> %passthru, <16 x i32> %cmp) {2903; CHECK-LABEL: nearbyint_v16f32_mask:2904; CHECK:       ## %bb.0:2905; CHECK-NEXT:    vptestnmd %zmm2, %zmm2, %k12906; CHECK-NEXT:    vrndscaleps $12, %zmm0, %zmm1 {%k1}2907; CHECK-NEXT:    vmovaps %zmm1, %zmm02908; CHECK-NEXT:    retq2909  %c = icmp eq <16 x i32> %cmp, zeroinitializer2910  %t = call <16 x float> @llvm.nearbyint.v16f32(<16 x float> %p)2911  %s = select <16 x i1> %c, <16 x float> %t, <16 x float> %passthru2912  ret <16 x float> %s2913}2914 2915define <2 x double> @nearbyint_v2f64_maskz(<2 x double> %p, <2 x i64> %cmp) {2916; CHECK-LABEL: nearbyint_v2f64_maskz:2917; CHECK:       ## %bb.0:2918; CHECK-NEXT:    vptestnmq %xmm1, %xmm1, %k12919; CHECK-NEXT:    vrndscalepd $12, %xmm0, %xmm0 {%k1} {z}2920; CHECK-NEXT:    retq2921  %c = icmp eq <2 x i64> %cmp, zeroinitializer2922  %t = call <2 x double> @llvm.nearbyint.v2f64(<2 x double> %p)2923  %s = select <2 x i1> %c, <2 x double> %t, <2 x double> zeroinitializer2924  ret <2 x double> %s2925}2926 2927define <4 x float> @nearbyint_v4f32_maskz(<4 x float> %p, <4 x i32> %cmp) {2928; CHECK-LABEL: nearbyint_v4f32_maskz:2929; CHECK:       ## %bb.0:2930; CHECK-NEXT:    vptestnmd %xmm1, %xmm1, %k12931; CHECK-NEXT:    vrndscaleps $12, %xmm0, %xmm0 {%k1} {z}2932; CHECK-NEXT:    retq2933  %c = icmp eq <4 x i32> %cmp, zeroinitializer2934  %t = call <4 x float> @llvm.nearbyint.v4f32(<4 x float> %p)2935  %s = select <4 x i1> %c, <4 x float> %t, <4 x float> zeroinitializer2936  ret <4 x float> %s2937}2938 2939define <4 x double> @nearbyint_v4f64_maskz(<4 x double> %p, <4 x i64> %cmp) {2940; CHECK-LABEL: nearbyint_v4f64_maskz:2941; CHECK:       ## %bb.0:2942; CHECK-NEXT:    vptestnmq %ymm1, %ymm1, %k12943; CHECK-NEXT:    vrndscalepd $12, %ymm0, %ymm0 {%k1} {z}2944; CHECK-NEXT:    retq2945  %c = icmp eq <4 x i64> %cmp, zeroinitializer2946  %t = call <4 x double> @llvm.nearbyint.v4f64(<4 x double> %p)2947  %s = select <4 x i1> %c, <4 x double> %t, <4 x double> zeroinitializer2948  ret <4 x double> %s2949}2950 2951define <8 x float> @nearbyint_v8f32_maskz(<8 x float> %p, <8 x i32> %cmp) {2952; CHECK-LABEL: nearbyint_v8f32_maskz:2953; CHECK:       ## %bb.0:2954; CHECK-NEXT:    vptestnmd %ymm1, %ymm1, %k12955; CHECK-NEXT:    vrndscaleps $12, %ymm0, %ymm0 {%k1} {z}2956; CHECK-NEXT:    retq2957  %c = icmp eq <8 x i32> %cmp, zeroinitializer2958  %t = call <8 x float> @llvm.nearbyint.v8f32(<8 x float> %p)2959  %s = select <8 x i1> %c, <8 x float> %t, <8 x float> zeroinitializer2960  ret <8 x float> %s2961}2962 2963define <8 x double> @nearbyint_v8f64_maskz(<8 x double> %p, <8 x i64> %cmp) {2964; CHECK-LABEL: nearbyint_v8f64_maskz:2965; CHECK:       ## %bb.0:2966; CHECK-NEXT:    vptestnmq %zmm1, %zmm1, %k12967; CHECK-NEXT:    vrndscalepd $12, %zmm0, %zmm0 {%k1} {z}2968; CHECK-NEXT:    retq2969  %c = icmp eq <8 x i64> %cmp, zeroinitializer2970  %t = call <8 x double> @llvm.nearbyint.v8f64(<8 x double> %p)2971  %s = select <8 x i1> %c, <8 x double> %t, <8 x double> zeroinitializer2972  ret <8 x double> %s2973}2974 2975define <16 x float> @nearbyint_v16f32_maskz(<16 x float> %p, <16 x i32> %cmp) {2976; CHECK-LABEL: nearbyint_v16f32_maskz:2977; CHECK:       ## %bb.0:2978; CHECK-NEXT:    vptestnmd %zmm1, %zmm1, %k12979; CHECK-NEXT:    vrndscaleps $12, %zmm0, %zmm0 {%k1} {z}2980; CHECK-NEXT:    retq2981  %c = icmp eq <16 x i32> %cmp, zeroinitializer2982  %t = call <16 x float> @llvm.nearbyint.v16f32(<16 x float> %p)2983  %s = select <16 x i1> %c, <16 x float> %t, <16 x float> zeroinitializer2984  ret <16 x float> %s2985}2986 2987define <2 x double> @nearbyint_v2f64_mask_load(ptr %ptr, <2 x double> %passthru, <2 x i64> %cmp) {2988; CHECK-LABEL: nearbyint_v2f64_mask_load:2989; CHECK:       ## %bb.0:2990; CHECK-NEXT:    vptestnmq %xmm1, %xmm1, %k12991; CHECK-NEXT:    vrndscalepd $12, (%rdi), %xmm0 {%k1}2992; CHECK-NEXT:    retq2993  %c = icmp eq <2 x i64> %cmp, zeroinitializer2994  %p = load <2 x double>, ptr %ptr2995  %t = call <2 x double> @llvm.nearbyint.v2f64(<2 x double> %p)2996  %s = select <2 x i1> %c, <2 x double> %t, <2 x double> %passthru2997  ret <2 x double> %s2998}2999 3000define <4 x float> @nearbyint_v4f32_mask_load(ptr %ptr, <4 x float> %passthru, <4 x i32> %cmp) {3001; CHECK-LABEL: nearbyint_v4f32_mask_load:3002; CHECK:       ## %bb.0:3003; CHECK-NEXT:    vptestnmd %xmm1, %xmm1, %k13004; CHECK-NEXT:    vrndscaleps $12, (%rdi), %xmm0 {%k1}3005; CHECK-NEXT:    retq3006  %c = icmp eq <4 x i32> %cmp, zeroinitializer3007  %p = load <4 x float>, ptr %ptr3008  %t = call <4 x float> @llvm.nearbyint.v4f32(<4 x float> %p)3009  %s = select <4 x i1> %c, <4 x float> %t, <4 x float> %passthru3010  ret <4 x float> %s3011}3012 3013define <4 x double> @nearbyint_v4f64_mask_load(ptr %ptr, <4 x double> %passthru, <4 x i64> %cmp) {3014; CHECK-LABEL: nearbyint_v4f64_mask_load:3015; CHECK:       ## %bb.0:3016; CHECK-NEXT:    vptestnmq %ymm1, %ymm1, %k13017; CHECK-NEXT:    vrndscalepd $12, (%rdi), %ymm0 {%k1}3018; CHECK-NEXT:    retq3019  %c = icmp eq <4 x i64> %cmp, zeroinitializer3020  %p = load <4 x double>, ptr %ptr3021  %t = call <4 x double> @llvm.nearbyint.v4f64(<4 x double> %p)3022  %s = select <4 x i1> %c, <4 x double> %t, <4 x double> %passthru3023  ret <4 x double> %s3024}3025 3026define <8 x float> @nearbyint_v8f32_mask_load(ptr %ptr, <8 x float> %passthru, <8 x i32> %cmp) {3027; CHECK-LABEL: nearbyint_v8f32_mask_load:3028; CHECK:       ## %bb.0:3029; CHECK-NEXT:    vptestnmd %ymm1, %ymm1, %k13030; CHECK-NEXT:    vrndscaleps $12, (%rdi), %ymm0 {%k1}3031; CHECK-NEXT:    retq3032  %c = icmp eq <8 x i32> %cmp, zeroinitializer3033  %p = load <8 x float>, ptr %ptr3034  %t = call <8 x float> @llvm.nearbyint.v8f32(<8 x float> %p)3035  %s = select <8 x i1> %c, <8 x float> %t, <8 x float> %passthru3036  ret <8 x float> %s3037}3038 3039define <8 x double> @nearbyint_v8f64_mask_load(ptr %ptr, <8 x double> %passthru, <8 x i64> %cmp) {3040; CHECK-LABEL: nearbyint_v8f64_mask_load:3041; CHECK:       ## %bb.0:3042; CHECK-NEXT:    vptestnmq %zmm1, %zmm1, %k13043; CHECK-NEXT:    vrndscalepd $12, (%rdi), %zmm0 {%k1}3044; CHECK-NEXT:    retq3045  %c = icmp eq <8 x i64> %cmp, zeroinitializer3046  %p = load <8 x double>, ptr %ptr3047  %t = call <8 x double> @llvm.nearbyint.v8f64(<8 x double> %p)3048  %s = select <8 x i1> %c, <8 x double> %t, <8 x double> %passthru3049  ret <8 x double> %s3050}3051 3052define <16 x float> @nearbyint_v16f32_mask_load(ptr %ptr, <16 x float> %passthru, <16 x i32> %cmp) {3053; CHECK-LABEL: nearbyint_v16f32_mask_load:3054; CHECK:       ## %bb.0:3055; CHECK-NEXT:    vptestnmd %zmm1, %zmm1, %k13056; CHECK-NEXT:    vrndscaleps $12, (%rdi), %zmm0 {%k1}3057; CHECK-NEXT:    retq3058  %c = icmp eq <16 x i32> %cmp, zeroinitializer3059  %p = load <16 x float>, ptr %ptr3060  %t = call <16 x float> @llvm.nearbyint.v16f32(<16 x float> %p)3061  %s = select <16 x i1> %c, <16 x float> %t, <16 x float> %passthru3062  ret <16 x float> %s3063}3064 3065define <2 x double> @nearbyint_v2f64_maskz_load(ptr %ptr, <2 x i64> %cmp) {3066; CHECK-LABEL: nearbyint_v2f64_maskz_load:3067; CHECK:       ## %bb.0:3068; CHECK-NEXT:    vptestnmq %xmm0, %xmm0, %k13069; CHECK-NEXT:    vrndscalepd $12, (%rdi), %xmm0 {%k1} {z}3070; CHECK-NEXT:    retq3071  %c = icmp eq <2 x i64> %cmp, zeroinitializer3072  %p = load <2 x double>, ptr %ptr3073  %t = call <2 x double> @llvm.nearbyint.v2f64(<2 x double> %p)3074  %s = select <2 x i1> %c, <2 x double> %t, <2 x double> zeroinitializer3075  ret <2 x double> %s3076}3077 3078define <4 x float> @nearbyint_v4f32_maskz_load(ptr %ptr, <4 x i32> %cmp) {3079; CHECK-LABEL: nearbyint_v4f32_maskz_load:3080; CHECK:       ## %bb.0:3081; CHECK-NEXT:    vptestnmd %xmm0, %xmm0, %k13082; CHECK-NEXT:    vrndscaleps $12, (%rdi), %xmm0 {%k1} {z}3083; CHECK-NEXT:    retq3084  %c = icmp eq <4 x i32> %cmp, zeroinitializer3085  %p = load <4 x float>, ptr %ptr3086  %t = call <4 x float> @llvm.nearbyint.v4f32(<4 x float> %p)3087  %s = select <4 x i1> %c, <4 x float> %t, <4 x float> zeroinitializer3088  ret <4 x float> %s3089}3090 3091define <4 x double> @nearbyint_v4f64_maskz_load(ptr %ptr, <4 x i64> %cmp) {3092; CHECK-LABEL: nearbyint_v4f64_maskz_load:3093; CHECK:       ## %bb.0:3094; CHECK-NEXT:    vptestnmq %ymm0, %ymm0, %k13095; CHECK-NEXT:    vrndscalepd $12, (%rdi), %ymm0 {%k1} {z}3096; CHECK-NEXT:    retq3097  %c = icmp eq <4 x i64> %cmp, zeroinitializer3098  %p = load <4 x double>, ptr %ptr3099  %t = call <4 x double> @llvm.nearbyint.v4f64(<4 x double> %p)3100  %s = select <4 x i1> %c, <4 x double> %t, <4 x double> zeroinitializer3101  ret <4 x double> %s3102}3103 3104define <8 x float> @nearbyint_v8f32_maskz_load(ptr %ptr, <8 x i32> %cmp) {3105; CHECK-LABEL: nearbyint_v8f32_maskz_load:3106; CHECK:       ## %bb.0:3107; CHECK-NEXT:    vptestnmd %ymm0, %ymm0, %k13108; CHECK-NEXT:    vrndscaleps $12, (%rdi), %ymm0 {%k1} {z}3109; CHECK-NEXT:    retq3110  %c = icmp eq <8 x i32> %cmp, zeroinitializer3111  %p = load <8 x float>, ptr %ptr3112  %t = call <8 x float> @llvm.nearbyint.v8f32(<8 x float> %p)3113  %s = select <8 x i1> %c, <8 x float> %t, <8 x float> zeroinitializer3114  ret <8 x float> %s3115}3116 3117define <8 x double> @nearbyint_v8f64_maskz_load(ptr %ptr, <8 x i64> %cmp) {3118; CHECK-LABEL: nearbyint_v8f64_maskz_load:3119; CHECK:       ## %bb.0:3120; CHECK-NEXT:    vptestnmq %zmm0, %zmm0, %k13121; CHECK-NEXT:    vrndscalepd $12, (%rdi), %zmm0 {%k1} {z}3122; CHECK-NEXT:    retq3123  %c = icmp eq <8 x i64> %cmp, zeroinitializer3124  %p = load <8 x double>, ptr %ptr3125  %t = call <8 x double> @llvm.nearbyint.v8f64(<8 x double> %p)3126  %s = select <8 x i1> %c, <8 x double> %t, <8 x double> zeroinitializer3127  ret <8 x double> %s3128}3129 3130define <16 x float> @nearbyint_v16f32_maskz_load(ptr %ptr, <16 x i32> %cmp) {3131; CHECK-LABEL: nearbyint_v16f32_maskz_load:3132; CHECK:       ## %bb.0:3133; CHECK-NEXT:    vptestnmd %zmm0, %zmm0, %k13134; CHECK-NEXT:    vrndscaleps $12, (%rdi), %zmm0 {%k1} {z}3135; CHECK-NEXT:    retq3136  %c = icmp eq <16 x i32> %cmp, zeroinitializer3137  %p = load <16 x float>, ptr %ptr3138  %t = call <16 x float> @llvm.nearbyint.v16f32(<16 x float> %p)3139  %s = select <16 x i1> %c, <16 x float> %t, <16 x float> zeroinitializer3140  ret <16 x float> %s3141}3142 3143define <2 x double> @nearbyint_v2f64_broadcast(ptr %ptr) {3144; CHECK-LABEL: nearbyint_v2f64_broadcast:3145; CHECK:       ## %bb.0:3146; CHECK-NEXT:    vrndscalepd $12, (%rdi){1to2}, %xmm03147; CHECK-NEXT:    retq3148  %ps = load double, ptr %ptr3149  %pins = insertelement <2 x double> undef, double %ps, i32 03150  %p = shufflevector <2 x double> %pins, <2 x double> undef, <2 x i32> zeroinitializer3151  %t = call <2 x double> @llvm.nearbyint.v2f64(<2 x double> %p)3152  ret <2 x double> %t3153}3154 3155define <4 x float> @nearbyint_v4f32_broadcast(ptr %ptr) {3156; CHECK-LABEL: nearbyint_v4f32_broadcast:3157; CHECK:       ## %bb.0:3158; CHECK-NEXT:    vrndscaleps $12, (%rdi){1to4}, %xmm03159; CHECK-NEXT:    retq3160  %ps = load float, ptr %ptr3161  %pins = insertelement <4 x float> undef, float %ps, i32 03162  %p = shufflevector <4 x float> %pins, <4 x float> undef, <4 x i32> zeroinitializer3163  %t = call <4 x float> @llvm.nearbyint.v4f32(<4 x float> %p)3164  ret <4 x float> %t3165}3166 3167define <4 x double> @nearbyint_v4f64_broadcast(ptr %ptr){3168; CHECK-LABEL: nearbyint_v4f64_broadcast:3169; CHECK:       ## %bb.0:3170; CHECK-NEXT:    vrndscalepd $12, (%rdi){1to4}, %ymm03171; CHECK-NEXT:    retq3172  %ps = load double, ptr %ptr3173  %pins = insertelement <4 x double> undef, double %ps, i32 03174  %p = shufflevector <4 x double> %pins, <4 x double> undef, <4 x i32> zeroinitializer3175  %t = call <4 x double> @llvm.nearbyint.v4f64(<4 x double> %p)3176  ret <4 x double> %t3177}3178 3179define <8 x float> @nearbyint_v8f32_broadcast(ptr %ptr) {3180; CHECK-LABEL: nearbyint_v8f32_broadcast:3181; CHECK:       ## %bb.0:3182; CHECK-NEXT:    vrndscaleps $12, (%rdi){1to8}, %ymm03183; CHECK-NEXT:    retq3184  %ps = load float, ptr %ptr3185  %pins = insertelement <8 x float> undef, float %ps, i32 03186  %p = shufflevector <8 x float> %pins, <8 x float> undef, <8 x i32> zeroinitializer3187  %t = call <8 x float> @llvm.nearbyint.v8f32(<8 x float> %p)3188  ret <8 x float> %t3189}3190 3191define <8 x double> @nearbyint_v8f64_broadcast(ptr %ptr){3192; CHECK-LABEL: nearbyint_v8f64_broadcast:3193; CHECK:       ## %bb.0:3194; CHECK-NEXT:    vrndscalepd $12, (%rdi){1to8}, %zmm03195; CHECK-NEXT:    retq3196  %ps = load double, ptr %ptr3197  %pins = insertelement <8 x double> undef, double %ps, i32 03198  %p = shufflevector <8 x double> %pins, <8 x double> undef, <8 x i32> zeroinitializer3199  %t = call <8 x double> @llvm.nearbyint.v8f64(<8 x double> %p)3200  ret <8 x double> %t3201}3202 3203define <16 x float> @nearbyint_v16f32_broadcast(ptr %ptr) {3204; CHECK-LABEL: nearbyint_v16f32_broadcast:3205; CHECK:       ## %bb.0:3206; CHECK-NEXT:    vrndscaleps $12, (%rdi){1to16}, %zmm03207; CHECK-NEXT:    retq3208  %ps = load float, ptr %ptr3209  %pins = insertelement <16 x float> undef, float %ps, i32 03210  %p = shufflevector <16 x float> %pins, <16 x float> undef, <16 x i32> zeroinitializer3211  %t = call <16 x float> @llvm.nearbyint.v16f32(<16 x float> %p)3212  ret <16 x float> %t3213}3214 3215define <2 x double> @nearbyint_v2f64_mask_broadcast(ptr %ptr, <2 x double> %passthru, <2 x i64> %cmp) {3216; CHECK-LABEL: nearbyint_v2f64_mask_broadcast:3217; CHECK:       ## %bb.0:3218; CHECK-NEXT:    vptestnmq %xmm1, %xmm1, %k13219; CHECK-NEXT:    vrndscalepd $12, (%rdi){1to2}, %xmm0 {%k1}3220; CHECK-NEXT:    retq3221  %c = icmp eq <2 x i64> %cmp, zeroinitializer3222  %ps = load double, ptr %ptr3223  %pins = insertelement <2 x double> undef, double %ps, i32 03224  %p = shufflevector <2 x double> %pins, <2 x double> undef, <2 x i32> zeroinitializer3225  %t = call <2 x double> @llvm.nearbyint.v2f64(<2 x double> %p)3226  %s = select <2 x i1> %c, <2 x double> %t, <2 x double> %passthru3227  ret <2 x double> %s3228}3229 3230define <4 x float> @nearbyint_v4f32_mask_broadcast(ptr %ptr, <4 x float> %passthru, <4 x i32> %cmp) {3231; CHECK-LABEL: nearbyint_v4f32_mask_broadcast:3232; CHECK:       ## %bb.0:3233; CHECK-NEXT:    vptestnmd %xmm1, %xmm1, %k13234; CHECK-NEXT:    vrndscaleps $12, (%rdi){1to4}, %xmm0 {%k1}3235; CHECK-NEXT:    retq3236  %c = icmp eq <4 x i32> %cmp, zeroinitializer3237  %ps = load float, ptr %ptr3238  %pins = insertelement <4 x float> undef, float %ps, i32 03239  %p = shufflevector <4 x float> %pins, <4 x float> undef, <4 x i32> zeroinitializer3240  %t = call <4 x float> @llvm.nearbyint.v4f32(<4 x float> %p)3241  %s = select <4 x i1> %c, <4 x float> %t, <4 x float> %passthru3242  ret <4 x float> %s3243}3244 3245define <4 x double> @nearbyint_v4f64_mask_broadcast(ptr %ptr, <4 x double> %passthru, <4 x i64> %cmp) {3246; CHECK-LABEL: nearbyint_v4f64_mask_broadcast:3247; CHECK:       ## %bb.0:3248; CHECK-NEXT:    vptestnmq %ymm1, %ymm1, %k13249; CHECK-NEXT:    vrndscalepd $12, (%rdi){1to4}, %ymm0 {%k1}3250; CHECK-NEXT:    retq3251  %c = icmp eq <4 x i64> %cmp, zeroinitializer3252  %ps = load double, ptr %ptr3253  %pins = insertelement <4 x double> undef, double %ps, i32 03254  %p = shufflevector <4 x double> %pins, <4 x double> undef, <4 x i32> zeroinitializer3255  %t = call <4 x double> @llvm.nearbyint.v4f64(<4 x double> %p)3256  %s = select <4 x i1> %c, <4 x double> %t, <4 x double> %passthru3257  ret <4 x double> %s3258}3259 3260define <8 x float> @nearbyint_v8f32_mask_broadcast(ptr %ptr, <8 x float> %passthru, <8 x i32> %cmp) {3261; CHECK-LABEL: nearbyint_v8f32_mask_broadcast:3262; CHECK:       ## %bb.0:3263; CHECK-NEXT:    vptestnmd %ymm1, %ymm1, %k13264; CHECK-NEXT:    vrndscaleps $12, (%rdi){1to8}, %ymm0 {%k1}3265; CHECK-NEXT:    retq3266  %c = icmp eq <8 x i32> %cmp, zeroinitializer3267  %ps = load float, ptr %ptr3268  %pins = insertelement <8 x float> undef, float %ps, i32 03269  %p = shufflevector <8 x float> %pins, <8 x float> undef, <8 x i32> zeroinitializer3270  %t = call <8 x float> @llvm.nearbyint.v8f32(<8 x float> %p)3271  %s = select <8 x i1> %c, <8 x float> %t, <8 x float> %passthru3272  ret <8 x float> %s3273}3274 3275define <8 x double> @nearbyint_v8f64_mask_broadcast(ptr %ptr, <8 x double> %passthru, <8 x i64> %cmp) {3276; CHECK-LABEL: nearbyint_v8f64_mask_broadcast:3277; CHECK:       ## %bb.0:3278; CHECK-NEXT:    vptestnmq %zmm1, %zmm1, %k13279; CHECK-NEXT:    vrndscalepd $12, (%rdi){1to8}, %zmm0 {%k1}3280; CHECK-NEXT:    retq3281  %c = icmp eq <8 x i64> %cmp, zeroinitializer3282  %ps = load double, ptr %ptr3283  %pins = insertelement <8 x double> undef, double %ps, i32 03284  %p = shufflevector <8 x double> %pins, <8 x double> undef, <8 x i32> zeroinitializer3285  %t = call <8 x double> @llvm.nearbyint.v8f64(<8 x double> %p)3286  %s = select <8 x i1> %c, <8 x double> %t, <8 x double> %passthru3287  ret <8 x double> %s3288}3289 3290define <16 x float> @nearbyint_v16f32_mask_broadcast(ptr %ptr, <16 x float> %passthru, <16 x i32> %cmp) {3291; CHECK-LABEL: nearbyint_v16f32_mask_broadcast:3292; CHECK:       ## %bb.0:3293; CHECK-NEXT:    vptestnmd %zmm1, %zmm1, %k13294; CHECK-NEXT:    vrndscaleps $12, (%rdi){1to16}, %zmm0 {%k1}3295; CHECK-NEXT:    retq3296  %c = icmp eq <16 x i32> %cmp, zeroinitializer3297  %ps = load float, ptr %ptr3298  %pins = insertelement <16 x float> undef, float %ps, i32 03299  %p = shufflevector <16 x float> %pins, <16 x float> undef, <16 x i32> zeroinitializer3300  %t = call <16 x float> @llvm.nearbyint.v16f32(<16 x float> %p)3301  %s = select <16 x i1> %c, <16 x float> %t, <16 x float> %passthru3302  ret <16 x float> %s3303}3304 3305define <2 x double> @nearbyint_v2f64_maskz_broadcast(ptr %ptr, <2 x i64> %cmp) {3306; CHECK-LABEL: nearbyint_v2f64_maskz_broadcast:3307; CHECK:       ## %bb.0:3308; CHECK-NEXT:    vptestnmq %xmm0, %xmm0, %k13309; CHECK-NEXT:    vrndscalepd $12, (%rdi){1to2}, %xmm0 {%k1} {z}3310; CHECK-NEXT:    retq3311  %c = icmp eq <2 x i64> %cmp, zeroinitializer3312  %ps = load double, ptr %ptr3313  %pins = insertelement <2 x double> undef, double %ps, i32 03314  %p = shufflevector <2 x double> %pins, <2 x double> undef, <2 x i32> zeroinitializer3315  %t = call <2 x double> @llvm.nearbyint.v2f64(<2 x double> %p)3316  %s = select <2 x i1> %c, <2 x double> %t, <2 x double> zeroinitializer3317  ret <2 x double> %s3318}3319 3320define <4 x float> @nearbyint_v4f32_maskz_broadcast(ptr %ptr, <4 x i32> %cmp) {3321; CHECK-LABEL: nearbyint_v4f32_maskz_broadcast:3322; CHECK:       ## %bb.0:3323; CHECK-NEXT:    vptestnmd %xmm0, %xmm0, %k13324; CHECK-NEXT:    vrndscaleps $12, (%rdi){1to4}, %xmm0 {%k1} {z}3325; CHECK-NEXT:    retq3326  %c = icmp eq <4 x i32> %cmp, zeroinitializer3327  %ps = load float, ptr %ptr3328  %pins = insertelement <4 x float> undef, float %ps, i32 03329  %p = shufflevector <4 x float> %pins, <4 x float> undef, <4 x i32> zeroinitializer3330  %t = call <4 x float> @llvm.nearbyint.v4f32(<4 x float> %p)3331  %s = select <4 x i1> %c, <4 x float> %t, <4 x float> zeroinitializer3332  ret <4 x float> %s3333}3334 3335define <4 x double> @nearbyint_v4f64_maskz_broadcast(ptr %ptr, <4 x i64> %cmp) {3336; CHECK-LABEL: nearbyint_v4f64_maskz_broadcast:3337; CHECK:       ## %bb.0:3338; CHECK-NEXT:    vptestnmq %ymm0, %ymm0, %k13339; CHECK-NEXT:    vrndscalepd $12, (%rdi){1to4}, %ymm0 {%k1} {z}3340; CHECK-NEXT:    retq3341  %c = icmp eq <4 x i64> %cmp, zeroinitializer3342  %ps = load double, ptr %ptr3343  %pins = insertelement <4 x double> undef, double %ps, i32 03344  %p = shufflevector <4 x double> %pins, <4 x double> undef, <4 x i32> zeroinitializer3345  %t = call <4 x double> @llvm.nearbyint.v4f64(<4 x double> %p)3346  %s = select <4 x i1> %c, <4 x double> %t, <4 x double> zeroinitializer3347  ret <4 x double> %s3348}3349 3350define <8 x float> @nearbyint_v8f32_maskz_broadcast(ptr %ptr, <8 x i32> %cmp) {3351; CHECK-LABEL: nearbyint_v8f32_maskz_broadcast:3352; CHECK:       ## %bb.0:3353; CHECK-NEXT:    vptestnmd %ymm0, %ymm0, %k13354; CHECK-NEXT:    vrndscaleps $12, (%rdi){1to8}, %ymm0 {%k1} {z}3355; CHECK-NEXT:    retq3356  %c = icmp eq <8 x i32> %cmp, zeroinitializer3357  %ps = load float, ptr %ptr3358  %pins = insertelement <8 x float> undef, float %ps, i32 03359  %p = shufflevector <8 x float> %pins, <8 x float> undef, <8 x i32> zeroinitializer3360  %t = call <8 x float> @llvm.nearbyint.v8f32(<8 x float> %p)3361  %s = select <8 x i1> %c, <8 x float> %t, <8 x float> zeroinitializer3362  ret <8 x float> %s3363}3364 3365define <8 x double> @nearbyint_v8f64_maskz_broadcast(ptr %ptr, <8 x i64> %cmp) {3366; CHECK-LABEL: nearbyint_v8f64_maskz_broadcast:3367; CHECK:       ## %bb.0:3368; CHECK-NEXT:    vptestnmq %zmm0, %zmm0, %k13369; CHECK-NEXT:    vrndscalepd $12, (%rdi){1to8}, %zmm0 {%k1} {z}3370; CHECK-NEXT:    retq3371  %c = icmp eq <8 x i64> %cmp, zeroinitializer3372  %ps = load double, ptr %ptr3373  %pins = insertelement <8 x double> undef, double %ps, i32 03374  %p = shufflevector <8 x double> %pins, <8 x double> undef, <8 x i32> zeroinitializer3375  %t = call <8 x double> @llvm.nearbyint.v8f64(<8 x double> %p)3376  %s = select <8 x i1> %c, <8 x double> %t, <8 x double> zeroinitializer3377  ret <8 x double> %s3378}3379 3380define <16 x float> @nearbyint_v16f32_maskz_broadcast(ptr %ptr, <16 x i32> %cmp) {3381; CHECK-LABEL: nearbyint_v16f32_maskz_broadcast:3382; CHECK:       ## %bb.0:3383; CHECK-NEXT:    vptestnmd %zmm0, %zmm0, %k13384; CHECK-NEXT:    vrndscaleps $12, (%rdi){1to16}, %zmm0 {%k1} {z}3385; CHECK-NEXT:    retq3386  %c = icmp eq <16 x i32> %cmp, zeroinitializer3387  %ps = load float, ptr %ptr3388  %pins = insertelement <16 x float> undef, float %ps, i32 03389  %p = shufflevector <16 x float> %pins, <16 x float> undef, <16 x i32> zeroinitializer3390  %t = call <16 x float> @llvm.nearbyint.v16f32(<16 x float> %p)3391  %s = select <16 x i1> %c, <16 x float> %t, <16 x float> zeroinitializer3392  ret <16 x float> %s3393}3394