[docs] Add LICENSE.txt to the root of the mono-repo
[llvm-project.git] / llvm / test / CodeGen / X86 / avx512fp16-rndscale.ll
blobc958b7e86d9f183668c4708fcfc82786412e4473
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc < %s -disable-peephole -mtriple=x86_64-apple-darwin -mattr=+avx512fp16 | FileCheck %s
4 declare <8 x half> @llvm.ceil.v8f16(<8 x half>)
5 declare <16 x half> @llvm.ceil.v16f16(<16 x half>)
6 declare <32 x half> @llvm.ceil.v32f16(<32 x half>)
8 define <8 x half> @ceil_v8f16(<8 x half> %p) {
9 ; CHECK-LABEL: ceil_v8f16:
10 ; CHECK:       ## %bb.0:
11 ; CHECK-NEXT:    vrndscaleph $10, %xmm0, %xmm0
12 ; CHECK-NEXT:    retq
13   %t = call <8 x half> @llvm.ceil.v8f16(<8 x half> %p)
14   ret <8 x half> %t
17 define <16 x half> @ceil_v16f16(<16 x half> %p) {
18 ; CHECK-LABEL: ceil_v16f16:
19 ; CHECK:       ## %bb.0:
20 ; CHECK-NEXT:    vrndscaleph $10, %ymm0, %ymm0
21 ; CHECK-NEXT:    retq
22   %t = call <16 x half> @llvm.ceil.v16f16(<16 x half> %p)
23   ret <16 x half> %t
26 define <32 x half> @ceil_v32f16(<32 x half> %p) {
27 ; CHECK-LABEL: ceil_v32f16:
28 ; CHECK:       ## %bb.0:
29 ; CHECK-NEXT:    vrndscaleph $10, %zmm0, %zmm0
30 ; CHECK-NEXT:    retq
31   %t = call <32 x half> @llvm.ceil.v32f16(<32 x half> %p)
32   ret <32 x half> %t
35 declare <8 x half> @llvm.floor.v8f16(<8 x half>)
36 declare <16 x half> @llvm.floor.v16f16(<16 x half>)
37 declare <32 x half> @llvm.floor.v32f16(<32 x half>)
39 define <8 x half> @floor_v8f16(<8 x half> %p) {
40 ; CHECK-LABEL: floor_v8f16:
41 ; CHECK:       ## %bb.0:
42 ; CHECK-NEXT:    vrndscaleph $9, %xmm0, %xmm0
43 ; CHECK-NEXT:    retq
44   %t = call <8 x half> @llvm.floor.v8f16(<8 x half> %p)
45   ret <8 x half> %t
48 define <16 x half> @floor_v16f16(<16 x half> %p) {
49 ; CHECK-LABEL: floor_v16f16:
50 ; CHECK:       ## %bb.0:
51 ; CHECK-NEXT:    vrndscaleph $9, %ymm0, %ymm0
52 ; CHECK-NEXT:    retq
53   %t = call <16 x half> @llvm.floor.v16f16(<16 x half> %p)
54   ret <16 x half> %t
57 define <32 x half> @floor_v32f16(<32 x half> %p) {
58 ; CHECK-LABEL: floor_v32f16:
59 ; CHECK:       ## %bb.0:
60 ; CHECK-NEXT:    vrndscaleph $9, %zmm0, %zmm0
61 ; CHECK-NEXT:    retq
62   %t = call <32 x half> @llvm.floor.v32f16(<32 x half> %p)
63   ret <32 x half> %t
66 declare <8 x half> @llvm.trunc.v8f16(<8 x half>)
67 declare <16 x half> @llvm.trunc.v16f16(<16 x half>)
68 declare <32 x half> @llvm.trunc.v32f16(<32 x half>)
70 define <8 x half> @trunc_v8f16(<8 x half> %p) {
71 ; CHECK-LABEL: trunc_v8f16:
72 ; CHECK:       ## %bb.0:
73 ; CHECK-NEXT:    vrndscaleph $11, %xmm0, %xmm0
74 ; CHECK-NEXT:    retq
75   %t = call <8 x half> @llvm.trunc.v8f16(<8 x half> %p)
76   ret <8 x half> %t
79 define <16 x half> @trunc_v16f16(<16 x half> %p) {
80 ; CHECK-LABEL: trunc_v16f16:
81 ; CHECK:       ## %bb.0:
82 ; CHECK-NEXT:    vrndscaleph $11, %ymm0, %ymm0
83 ; CHECK-NEXT:    retq
84   %t = call <16 x half> @llvm.trunc.v16f16(<16 x half> %p)
85   ret <16 x half> %t
88 define <32 x half> @trunc_v32f16(<32 x half> %p) {
89 ; CHECK-LABEL: trunc_v32f16:
90 ; CHECK:       ## %bb.0:
91 ; CHECK-NEXT:    vrndscaleph $11, %zmm0, %zmm0
92 ; CHECK-NEXT:    retq
93   %t = call <32 x half> @llvm.trunc.v32f16(<32 x half> %p)
94   ret <32 x half> %t
97 declare <8 x half> @llvm.nearbyint.v8f16(<8 x half>)
98 declare <16 x half> @llvm.nearbyint.v16f16(<16 x half>)
99 declare <32 x half> @llvm.nearbyint.v32f16(<32 x half>)
101 define <8 x half> @nearbyint_v8f16(<8 x half> %p) {
102 ; CHECK-LABEL: nearbyint_v8f16:
103 ; CHECK:       ## %bb.0:
104 ; CHECK-NEXT:    vrndscaleph $12, %xmm0, %xmm0
105 ; CHECK-NEXT:    retq
106   %t = call <8 x half> @llvm.nearbyint.v8f16(<8 x half> %p)
107   ret <8 x half> %t
110 define <16 x half> @nearbyint_v16f16(<16 x half> %p) {
111 ; CHECK-LABEL: nearbyint_v16f16:
112 ; CHECK:       ## %bb.0:
113 ; CHECK-NEXT:    vrndscaleph $12, %ymm0, %ymm0
114 ; CHECK-NEXT:    retq
115   %t = call <16 x half> @llvm.nearbyint.v16f16(<16 x half> %p)
116   ret <16 x half> %t
119 define <32 x half> @nearbyint_v32f16(<32 x half> %p) {
120 ; CHECK-LABEL: nearbyint_v32f16:
121 ; CHECK:       ## %bb.0:
122 ; CHECK-NEXT:    vrndscaleph $12, %zmm0, %zmm0
123 ; CHECK-NEXT:    retq
124   %t = call <32 x half> @llvm.nearbyint.v32f16(<32 x half> %p)
125   ret <32 x half> %t
128 declare <8 x half> @llvm.rint.v8f16(<8 x half>)
129 declare <16 x half> @llvm.rint.v16f16(<16 x half>)
130 declare <32 x half> @llvm.rint.v32f16(<32 x half>)
132 define <8 x half> @rint_v8f16(<8 x half> %p) {
133 ; CHECK-LABEL: rint_v8f16:
134 ; CHECK:       ## %bb.0:
135 ; CHECK-NEXT:    vrndscaleph $4, %xmm0, %xmm0
136 ; CHECK-NEXT:    retq
137   %t = call <8 x half> @llvm.rint.v8f16(<8 x half> %p)
138   ret <8 x half> %t
141 define <16 x half> @rint_v16f16(<16 x half> %p) {
142 ; CHECK-LABEL: rint_v16f16:
143 ; CHECK:       ## %bb.0:
144 ; CHECK-NEXT:    vrndscaleph $4, %ymm0, %ymm0
145 ; CHECK-NEXT:    retq
146   %t = call <16 x half> @llvm.rint.v16f16(<16 x half> %p)
147   ret <16 x half> %t
150 define <32 x half> @rint_v32f16(<32 x half> %p) {
151 ; CHECK-LABEL: rint_v32f16:
152 ; CHECK:       ## %bb.0:
153 ; CHECK-NEXT:    vrndscaleph $4, %zmm0, %zmm0
154 ; CHECK-NEXT:    retq
155   %t = call <32 x half> @llvm.rint.v32f16(<32 x half> %p)
156   ret <32 x half> %t