158 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=+avx512fp16,+avx512vl | FileCheck %s3 4declare <8 x half> @llvm.ceil.v8f16(<8 x half>)5declare <16 x half> @llvm.ceil.v16f16(<16 x half>)6declare <32 x half> @llvm.ceil.v32f16(<32 x half>)7 8define <8 x half> @ceil_v8f16(<8 x half> %p) {9; CHECK-LABEL: ceil_v8f16:10; CHECK: ## %bb.0:11; CHECK-NEXT: vrndscaleph $10, %xmm0, %xmm012; CHECK-NEXT: retq13 %t = call <8 x half> @llvm.ceil.v8f16(<8 x half> %p)14 ret <8 x half> %t15}16 17define <16 x half> @ceil_v16f16(<16 x half> %p) {18; CHECK-LABEL: ceil_v16f16:19; CHECK: ## %bb.0:20; CHECK-NEXT: vrndscaleph $10, %ymm0, %ymm021; CHECK-NEXT: retq22 %t = call <16 x half> @llvm.ceil.v16f16(<16 x half> %p)23 ret <16 x half> %t24}25 26define <32 x half> @ceil_v32f16(<32 x half> %p) {27; CHECK-LABEL: ceil_v32f16:28; CHECK: ## %bb.0:29; CHECK-NEXT: vrndscaleph $10, %zmm0, %zmm030; CHECK-NEXT: retq31 %t = call <32 x half> @llvm.ceil.v32f16(<32 x half> %p)32 ret <32 x half> %t33}34 35declare <8 x half> @llvm.floor.v8f16(<8 x half>)36declare <16 x half> @llvm.floor.v16f16(<16 x half>)37declare <32 x half> @llvm.floor.v32f16(<32 x half>)38 39define <8 x half> @floor_v8f16(<8 x half> %p) {40; CHECK-LABEL: floor_v8f16:41; CHECK: ## %bb.0:42; CHECK-NEXT: vrndscaleph $9, %xmm0, %xmm043; CHECK-NEXT: retq44 %t = call <8 x half> @llvm.floor.v8f16(<8 x half> %p)45 ret <8 x half> %t46}47 48define <16 x half> @floor_v16f16(<16 x half> %p) {49; CHECK-LABEL: floor_v16f16:50; CHECK: ## %bb.0:51; CHECK-NEXT: vrndscaleph $9, %ymm0, %ymm052; CHECK-NEXT: retq53 %t = call <16 x half> @llvm.floor.v16f16(<16 x half> %p)54 ret <16 x half> %t55}56 57define <32 x half> @floor_v32f16(<32 x half> %p) {58; CHECK-LABEL: floor_v32f16:59; CHECK: ## %bb.0:60; CHECK-NEXT: vrndscaleph $9, %zmm0, %zmm061; CHECK-NEXT: retq62 %t = call <32 x half> @llvm.floor.v32f16(<32 x half> %p)63 ret <32 x half> %t64}65 66declare <8 x half> @llvm.trunc.v8f16(<8 x half>)67declare <16 x half> @llvm.trunc.v16f16(<16 x half>)68declare <32 x half> @llvm.trunc.v32f16(<32 x half>)69 70define <8 x half> @trunc_v8f16(<8 x half> %p) {71; CHECK-LABEL: trunc_v8f16:72; CHECK: ## %bb.0:73; CHECK-NEXT: vrndscaleph $11, %xmm0, %xmm074; CHECK-NEXT: retq75 %t = call <8 x half> @llvm.trunc.v8f16(<8 x half> %p)76 ret <8 x half> %t77}78 79define <16 x half> @trunc_v16f16(<16 x half> %p) {80; CHECK-LABEL: trunc_v16f16:81; CHECK: ## %bb.0:82; CHECK-NEXT: vrndscaleph $11, %ymm0, %ymm083; CHECK-NEXT: retq84 %t = call <16 x half> @llvm.trunc.v16f16(<16 x half> %p)85 ret <16 x half> %t86}87 88define <32 x half> @trunc_v32f16(<32 x half> %p) {89; CHECK-LABEL: trunc_v32f16:90; CHECK: ## %bb.0:91; CHECK-NEXT: vrndscaleph $11, %zmm0, %zmm092; CHECK-NEXT: retq93 %t = call <32 x half> @llvm.trunc.v32f16(<32 x half> %p)94 ret <32 x half> %t95}96 97declare <8 x half> @llvm.nearbyint.v8f16(<8 x half>)98declare <16 x half> @llvm.nearbyint.v16f16(<16 x half>)99declare <32 x half> @llvm.nearbyint.v32f16(<32 x half>)100 101define <8 x half> @nearbyint_v8f16(<8 x half> %p) {102; CHECK-LABEL: nearbyint_v8f16:103; CHECK: ## %bb.0:104; CHECK-NEXT: vrndscaleph $12, %xmm0, %xmm0105; CHECK-NEXT: retq106 %t = call <8 x half> @llvm.nearbyint.v8f16(<8 x half> %p)107 ret <8 x half> %t108}109 110define <16 x half> @nearbyint_v16f16(<16 x half> %p) {111; CHECK-LABEL: nearbyint_v16f16:112; CHECK: ## %bb.0:113; CHECK-NEXT: vrndscaleph $12, %ymm0, %ymm0114; CHECK-NEXT: retq115 %t = call <16 x half> @llvm.nearbyint.v16f16(<16 x half> %p)116 ret <16 x half> %t117}118 119define <32 x half> @nearbyint_v32f16(<32 x half> %p) {120; CHECK-LABEL: nearbyint_v32f16:121; CHECK: ## %bb.0:122; CHECK-NEXT: vrndscaleph $12, %zmm0, %zmm0123; CHECK-NEXT: retq124 %t = call <32 x half> @llvm.nearbyint.v32f16(<32 x half> %p)125 ret <32 x half> %t126}127 128declare <8 x half> @llvm.rint.v8f16(<8 x half>)129declare <16 x half> @llvm.rint.v16f16(<16 x half>)130declare <32 x half> @llvm.rint.v32f16(<32 x half>)131 132define <8 x half> @rint_v8f16(<8 x half> %p) {133; CHECK-LABEL: rint_v8f16:134; CHECK: ## %bb.0:135; CHECK-NEXT: vrndscaleph $4, %xmm0, %xmm0136; CHECK-NEXT: retq137 %t = call <8 x half> @llvm.rint.v8f16(<8 x half> %p)138 ret <8 x half> %t139}140 141define <16 x half> @rint_v16f16(<16 x half> %p) {142; CHECK-LABEL: rint_v16f16:143; CHECK: ## %bb.0:144; CHECK-NEXT: vrndscaleph $4, %ymm0, %ymm0145; CHECK-NEXT: retq146 %t = call <16 x half> @llvm.rint.v16f16(<16 x half> %p)147 ret <16 x half> %t148}149 150define <32 x half> @rint_v32f16(<32 x half> %p) {151; CHECK-LABEL: rint_v32f16:152; CHECK: ## %bb.0:153; CHECK-NEXT: vrndscaleph $4, %zmm0, %zmm0154; CHECK-NEXT: retq155 %t = call <32 x half> @llvm.rint.v32f16(<32 x half> %p)156 ret <32 x half> %t157}158