[RISCV] Add shrinkwrap test cases showing gaps in current impl
[llvm-project.git] / llvm / test / CodeGen / X86 / avx10_2convert-intrinsics.ll
blobfc74f0b490cd8527838db7367af2b6613457a3ed
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc < %s -verify-machineinstrs -mtriple=x86_64-unknown-unknown --show-mc-encoding -mattr=+avx10.2-256 | FileCheck %s --check-prefixes=CHECK,X64
3 ; RUN: llc < %s -verify-machineinstrs -mtriple=i686-unknown-unknown --show-mc-encoding -mattr=+avx10.2-256 | FileCheck %s --check-prefixes=CHECK,X86
5 define <8 x half> @test_int_x86_avx10_vcvt2ps2phx128(<4 x float> %A, <4 x float> %B) {
6 ; CHECK-LABEL: test_int_x86_avx10_vcvt2ps2phx128:
7 ; CHECK:       # %bb.0:
8 ; CHECK-NEXT:    vcvt2ps2phx %xmm1, %xmm0, %xmm0 # encoding: [0x62,0xf2,0x7d,0x08,0x67,0xc1]
9 ; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]
10   %ret = call <8 x half> @llvm.x86.avx10.mask.vcvt2ps2phx.128(<4 x float> %A, <4 x float> %B, <8 x half> zeroinitializer, i8 -1)
11   ret <8 x half> %ret
14 define <8 x half> @test_int_x86_avx10_vcvt2ps2phx128_mask(<8 x half> %W, i8 %U, <4 x float> %A, <4 x float> %B) {
15 ; X64-LABEL: test_int_x86_avx10_vcvt2ps2phx128_mask:
16 ; X64:       # %bb.0:
17 ; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
18 ; X64-NEXT:    vcvt2ps2phx %xmm2, %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf2,0x75,0x09,0x67,0xc2]
19 ; X64-NEXT:    retq # encoding: [0xc3]
21 ; X86-LABEL: test_int_x86_avx10_vcvt2ps2phx128_mask:
22 ; X86:       # %bb.0:
23 ; X86-NEXT:    kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
24 ; X86-NEXT:    vcvt2ps2phx %xmm2, %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf2,0x75,0x09,0x67,0xc2]
25 ; X86-NEXT:    retl # encoding: [0xc3]
26   %ret = call <8 x half> @llvm.x86.avx10.mask.vcvt2ps2phx.128(<4 x float> %A, <4 x float> %B, <8 x half> %W, i8 %U)
27   ret <8 x half> %ret
30 define <8 x half> @test_int_x86_avx10_vcvt2ps2phx128_maskz(i8 %U, <4 x float> %A, <4 x float> %B) {
31 ; X64-LABEL: test_int_x86_avx10_vcvt2ps2phx128_maskz:
32 ; X64:       # %bb.0:
33 ; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
34 ; X64-NEXT:    vcvt2ps2phx %xmm1, %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf2,0x7d,0x89,0x67,0xc1]
35 ; X64-NEXT:    retq # encoding: [0xc3]
37 ; X86-LABEL: test_int_x86_avx10_vcvt2ps2phx128_maskz:
38 ; X86:       # %bb.0:
39 ; X86-NEXT:    kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
40 ; X86-NEXT:    vcvt2ps2phx %xmm1, %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf2,0x7d,0x89,0x67,0xc1]
41 ; X86-NEXT:    retl # encoding: [0xc3]
42   %ret = call <8 x half> @llvm.x86.avx10.mask.vcvt2ps2phx.128(<4 x float> %A, <4 x float> %B, <8 x half> zeroinitializer, i8 %U)
43   ret <8 x half> %ret
46 declare <8 x half> @llvm.x86.avx10.mask.vcvt2ps2phx.128(<4 x float>, <4 x float>, <8 x half>, i8)
48 define <16 x half> @test_int_x86_avx10_vcvt2ps2phx256(<8 x float> %A, <8 x float> %B) {
49 ; CHECK-LABEL: test_int_x86_avx10_vcvt2ps2phx256:
50 ; CHECK:       # %bb.0:
51 ; CHECK-NEXT:    vcvt2ps2phx %ymm1, %ymm0, %ymm0 # encoding: [0x62,0xf2,0x7d,0x28,0x67,0xc1]
52 ; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]
53   %ret = call <16 x half> @llvm.x86.avx10.mask.vcvt2ps2phx.256(<8 x float> %A, <8 x float> %B, <16 x half> zeroinitializer, i16 -1, i32 4)
54   ret <16 x half> %ret
57 define <16 x half> @test_int_x86_avx10_vcvt2ps2phx256_mask(<16 x half> %W, i16 %U, <8 x float> %A, <8 x float> %B) {
58 ; X64-LABEL: test_int_x86_avx10_vcvt2ps2phx256_mask:
59 ; X64:       # %bb.0:
60 ; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
61 ; X64-NEXT:    vcvt2ps2phx %ymm2, %ymm1, %ymm0 {%k1} # encoding: [0x62,0xf2,0x75,0x29,0x67,0xc2]
62 ; X64-NEXT:    retq # encoding: [0xc3]
64 ; X86-LABEL: test_int_x86_avx10_vcvt2ps2phx256_mask:
65 ; X86:       # %bb.0:
66 ; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]
67 ; X86-NEXT:    vcvt2ps2phx %ymm2, %ymm1, %ymm0 {%k1} # encoding: [0x62,0xf2,0x75,0x29,0x67,0xc2]
68 ; X86-NEXT:    retl # encoding: [0xc3]
69   %ret = call <16 x half> @llvm.x86.avx10.mask.vcvt2ps2phx.256(<8 x float> %A, <8 x float> %B, <16 x half> %W, i16 %U, i32 4)
70   ret <16 x half> %ret
73 define <16 x half> @test_int_x86_avx10_vcvt2ps2phx256_maskz(<16 x half> %W, i16 %U, <8 x float> %A, <8 x float> %B) {
74 ; X64-LABEL: test_int_x86_avx10_vcvt2ps2phx256_maskz:
75 ; X64:       # %bb.0:
76 ; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
77 ; X64-NEXT:    vcvt2ps2phx %ymm2, %ymm1, %ymm0 {%k1} {z} # encoding: [0x62,0xf2,0x75,0xa9,0x67,0xc2]
78 ; X64-NEXT:    retq # encoding: [0xc3]
80 ; X86-LABEL: test_int_x86_avx10_vcvt2ps2phx256_maskz:
81 ; X86:       # %bb.0:
82 ; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]
83 ; X86-NEXT:    vcvt2ps2phx %ymm2, %ymm1, %ymm0 {%k1} {z} # encoding: [0x62,0xf2,0x75,0xa9,0x67,0xc2]
84 ; X86-NEXT:    retl # encoding: [0xc3]
85   %ret = call <16 x half> @llvm.x86.avx10.mask.vcvt2ps2phx.256(<8 x float> %A, <8 x float> %B, <16 x half> zeroinitializer, i16 %U, i32 4)
86   ret <16 x half> %ret
89 define <16 x half> @test_int_x86_avx10_vcvt2ps2phx256_round(<8 x float> %A, <8 x float> %B) {
90 ; CHECK-LABEL: test_int_x86_avx10_vcvt2ps2phx256_round:
91 ; CHECK:       # %bb.0:
92 ; CHECK-NEXT:    vcvt2ps2phx {rz-sae}, %ymm1, %ymm0, %ymm0 # encoding: [0x62,0xf2,0x79,0x78,0x67,0xc1]
93 ; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]
94   %ret = call <16 x half> @llvm.x86.avx10.mask.vcvt2ps2phx.256(<8 x float> %A, <8 x float> %B, <16 x half> zeroinitializer, i16 -1, i32 11)
95   ret <16 x half> %ret
98 define <16 x half> @test_int_x86_avx10_vcvt2ps2phx256_round_mask(<16 x half> %W, i16 %U, <8 x float> %A, <8 x float> %B) {
99 ; X64-LABEL: test_int_x86_avx10_vcvt2ps2phx256_round_mask:
100 ; X64:       # %bb.0:
101 ; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
102 ; X64-NEXT:    vcvt2ps2phx {rz-sae}, %ymm2, %ymm1, %ymm0 {%k1} # encoding: [0x62,0xf2,0x71,0x79,0x67,0xc2]
103 ; X64-NEXT:    retq # encoding: [0xc3]
105 ; X86-LABEL: test_int_x86_avx10_vcvt2ps2phx256_round_mask:
106 ; X86:       # %bb.0:
107 ; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]
108 ; X86-NEXT:    vcvt2ps2phx {rz-sae}, %ymm2, %ymm1, %ymm0 {%k1} # encoding: [0x62,0xf2,0x71,0x79,0x67,0xc2]
109 ; X86-NEXT:    retl # encoding: [0xc3]
110   %ret = call <16 x half> @llvm.x86.avx10.mask.vcvt2ps2phx.256(<8 x float> %A, <8 x float> %B, <16 x half> %W, i16 %U, i32 11)
111   ret <16 x half> %ret
114 define <16 x half> @test_int_x86_avx10_vcvt2ps2phx256_round_maskz(i16 %U, <8 x float> %A, <8 x float> %B) {
115 ; X64-LABEL: test_int_x86_avx10_vcvt2ps2phx256_round_maskz:
116 ; X64:       # %bb.0:
117 ; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
118 ; X64-NEXT:    vcvt2ps2phx {rz-sae}, %ymm1, %ymm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf2,0x79,0xf9,0x67,0xc1]
119 ; X64-NEXT:    retq # encoding: [0xc3]
121 ; X86-LABEL: test_int_x86_avx10_vcvt2ps2phx256_round_maskz:
122 ; X86:       # %bb.0:
123 ; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]
124 ; X86-NEXT:    vcvt2ps2phx {rz-sae}, %ymm1, %ymm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf2,0x79,0xf9,0x67,0xc1]
125 ; X86-NEXT:    retl # encoding: [0xc3]
126   %ret = call <16 x half> @llvm.x86.avx10.mask.vcvt2ps2phx.256(<8 x float> %A, <8 x float> %B, <16 x half> zeroinitializer, i16 %U, i32 11)
127   ret <16 x half> %ret
130 declare <16 x half> @llvm.x86.avx10.mask.vcvt2ps2phx.256(<8 x float>, <8 x float>, <16 x half>, i16, i32)
132 define <16 x i8> @test_int_x86_avx10_vcvtbiasph2bf8128(<16 x i8> %A, <8 x half> %B) nounwind {
133 ; CHECK-LABEL: test_int_x86_avx10_vcvtbiasph2bf8128:
134 ; CHECK:       # %bb.0:
135 ; CHECK-NEXT:    vcvtbiasph2bf8 %xmm1, %xmm0, %xmm0 # encoding: [0x62,0xf2,0x7c,0x08,0x74,0xc1]
136 ; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]
137   %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2bf8128(<16 x i8> %A, <8 x half> %B, <16 x i8> undef, i8 -1)
138   ret <16 x i8> %ret
141 define <16 x i8> @test_int_x86_avx10_mask_vcvtbiasph2bf8128(<16 x i8> %W, <16 x i8> %A, <8 x half> %B, i8 %U) nounwind {
142 ; X64-LABEL: test_int_x86_avx10_mask_vcvtbiasph2bf8128:
143 ; X64:       # %bb.0:
144 ; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
145 ; X64-NEXT:    vcvtbiasph2bf8 %xmm2, %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf2,0x74,0x09,0x74,0xc2]
146 ; X64-NEXT:    retq # encoding: [0xc3]
148 ; X86-LABEL: test_int_x86_avx10_mask_vcvtbiasph2bf8128:
149 ; X86:       # %bb.0:
150 ; X86-NEXT:    kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
151 ; X86-NEXT:    vcvtbiasph2bf8 %xmm2, %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf2,0x74,0x09,0x74,0xc2]
152 ; X86-NEXT:    retl # encoding: [0xc3]
153   %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2bf8128(<16 x i8> %A, <8 x half> %B, <16 x i8> %W, i8 %U)
154   ret <16 x i8> %ret
157 declare <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2bf8128(<16 x i8> %A, <8 x half> %B, <16 x i8> %W, i8 %U)
159 define <16 x i8> @test_int_x86_avx10_maskz_vcvtbiasph2bf8128(<16 x i8> %A, <8 x half> %B, i8 %U) nounwind {
160 ; X64-LABEL: test_int_x86_avx10_maskz_vcvtbiasph2bf8128:
161 ; X64:       # %bb.0:
162 ; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
163 ; X64-NEXT:    vcvtbiasph2bf8 %xmm1, %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf2,0x7c,0x89,0x74,0xc1]
164 ; X64-NEXT:    retq # encoding: [0xc3]
166 ; X86-LABEL: test_int_x86_avx10_maskz_vcvtbiasph2bf8128:
167 ; X86:       # %bb.0:
168 ; X86-NEXT:    kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
169 ; X86-NEXT:    vcvtbiasph2bf8 %xmm1, %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf2,0x7c,0x89,0x74,0xc1]
170 ; X86-NEXT:    retl # encoding: [0xc3]
171   %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2bf8128(<16 x i8> %A, <8 x half> %B, <16 x i8> zeroinitializer, i8 %U)
172   ret <16 x i8> %ret
175 define <16 x i8> @test_int_x86_avx10_vcvtbiasph2bf8256(<32 x i8> %A, <16 x half> %B) nounwind {
176 ; CHECK-LABEL: test_int_x86_avx10_vcvtbiasph2bf8256:
177 ; CHECK:       # %bb.0:
178 ; CHECK-NEXT:    vcvtbiasph2bf8 %ymm1, %ymm0, %xmm0 # encoding: [0x62,0xf2,0x7c,0x28,0x74,0xc1]
179 ; CHECK-NEXT:    vzeroupper # encoding: [0xc5,0xf8,0x77]
180 ; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]
181   %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2bf8256(<32 x i8> %A, <16 x half> %B, <16 x i8> undef, i16 -1)
182   ret <16 x i8> %ret
185 define <16 x i8> @test_int_x86_avx10_mask_vcvtbiasph2bf8256(<16 x i8> %W, <32 x i8> %A, <16 x half> %B, i16 %U) nounwind {
186 ; X64-LABEL: test_int_x86_avx10_mask_vcvtbiasph2bf8256:
187 ; X64:       # %bb.0:
188 ; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
189 ; X64-NEXT:    vcvtbiasph2bf8 %ymm2, %ymm1, %xmm0 {%k1} # encoding: [0x62,0xf2,0x74,0x29,0x74,0xc2]
190 ; X64-NEXT:    vzeroupper # encoding: [0xc5,0xf8,0x77]
191 ; X64-NEXT:    retq # encoding: [0xc3]
193 ; X86-LABEL: test_int_x86_avx10_mask_vcvtbiasph2bf8256:
194 ; X86:       # %bb.0:
195 ; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]
196 ; X86-NEXT:    vcvtbiasph2bf8 %ymm2, %ymm1, %xmm0 {%k1} # encoding: [0x62,0xf2,0x74,0x29,0x74,0xc2]
197 ; X86-NEXT:    vzeroupper # encoding: [0xc5,0xf8,0x77]
198 ; X86-NEXT:    retl # encoding: [0xc3]
199   %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2bf8256(<32 x i8> %A, <16 x half> %B, <16 x i8> %W, i16 %U)
200   ret <16 x i8> %ret
203 declare <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2bf8256(<32 x i8> %A, <16 x half> %B, <16 x i8> %W, i16 %U)
205 define <16 x i8> @test_int_x86_avx10_maskz_vcvtbiasph2bf8256(<32 x i8> %A, <16 x half> %B, i16 %U) nounwind {
206 ; X64-LABEL: test_int_x86_avx10_maskz_vcvtbiasph2bf8256:
207 ; X64:       # %bb.0:
208 ; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
209 ; X64-NEXT:    vcvtbiasph2bf8 %ymm1, %ymm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf2,0x7c,0xa9,0x74,0xc1]
210 ; X64-NEXT:    vzeroupper # encoding: [0xc5,0xf8,0x77]
211 ; X64-NEXT:    retq # encoding: [0xc3]
213 ; X86-LABEL: test_int_x86_avx10_maskz_vcvtbiasph2bf8256:
214 ; X86:       # %bb.0:
215 ; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]
216 ; X86-NEXT:    vcvtbiasph2bf8 %ymm1, %ymm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf2,0x7c,0xa9,0x74,0xc1]
217 ; X86-NEXT:    vzeroupper # encoding: [0xc5,0xf8,0x77]
218 ; X86-NEXT:    retl # encoding: [0xc3]
219   %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2bf8256(<32 x i8> %A, <16 x half> %B, <16 x i8> zeroinitializer, i16 %U)
220   ret <16 x i8> %ret
223 define <16 x i8> @test_int_x86_avx10_vcvtbiasph2bf8s128(<16 x i8> %A, <8 x half> %B) nounwind {
224 ; CHECK-LABEL: test_int_x86_avx10_vcvtbiasph2bf8s128:
225 ; CHECK:       # %bb.0:
226 ; CHECK-NEXT:    vcvtbiasph2bf8s %xmm1, %xmm0, %xmm0 # encoding: [0x62,0xf5,0x7c,0x08,0x74,0xc1]
227 ; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]
228   %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2bf8s128(<16 x i8> %A, <8 x half> %B, <16 x i8> undef, i8 -1)
229   ret <16 x i8> %ret
232 define <16 x i8> @test_int_x86_avx10_mask_vcvtbiasph2bf8s128(<16 x i8> %W, <16 x i8> %A, <8 x half> %B, i8 %U) nounwind {
233 ; X64-LABEL: test_int_x86_avx10_mask_vcvtbiasph2bf8s128:
234 ; X64:       # %bb.0:
235 ; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
236 ; X64-NEXT:    vcvtbiasph2bf8s %xmm2, %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x74,0x09,0x74,0xc2]
237 ; X64-NEXT:    retq # encoding: [0xc3]
239 ; X86-LABEL: test_int_x86_avx10_mask_vcvtbiasph2bf8s128:
240 ; X86:       # %bb.0:
241 ; X86-NEXT:    kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
242 ; X86-NEXT:    vcvtbiasph2bf8s %xmm2, %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x74,0x09,0x74,0xc2]
243 ; X86-NEXT:    retl # encoding: [0xc3]
244   %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2bf8s128(<16 x i8> %A, <8 x half> %B, <16 x i8> %W, i8 %U)
245   ret <16 x i8> %ret
248 declare <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2bf8s128(<16 x i8> %A, <8 x half> %B, <16 x i8> %W, i8 %U)
250 define <16 x i8> @test_int_x86_avx10_maskz_vcvtbiasph2bf8s128(<16 x i8> %A, <8 x half> %B, i8 %U) nounwind {
251 ; X64-LABEL: test_int_x86_avx10_maskz_vcvtbiasph2bf8s128:
252 ; X64:       # %bb.0:
253 ; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
254 ; X64-NEXT:    vcvtbiasph2bf8s %xmm1, %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0x89,0x74,0xc1]
255 ; X64-NEXT:    retq # encoding: [0xc3]
257 ; X86-LABEL: test_int_x86_avx10_maskz_vcvtbiasph2bf8s128:
258 ; X86:       # %bb.0:
259 ; X86-NEXT:    kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
260 ; X86-NEXT:    vcvtbiasph2bf8s %xmm1, %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0x89,0x74,0xc1]
261 ; X86-NEXT:    retl # encoding: [0xc3]
262   %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2bf8s128(<16 x i8> %A, <8 x half> %B, <16 x i8> zeroinitializer, i8 %U)
263   ret <16 x i8> %ret
266 define <16 x i8> @test_int_x86_avx10_vcvtbiasph2bf8s256(<32 x i8> %A, <16 x half> %B) nounwind {
267 ; CHECK-LABEL: test_int_x86_avx10_vcvtbiasph2bf8s256:
268 ; CHECK:       # %bb.0:
269 ; CHECK-NEXT:    vcvtbiasph2bf8s %ymm1, %ymm0, %xmm0 # encoding: [0x62,0xf5,0x7c,0x28,0x74,0xc1]
270 ; CHECK-NEXT:    vzeroupper # encoding: [0xc5,0xf8,0x77]
271 ; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]
272   %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2bf8s256(<32 x i8> %A, <16 x half> %B, <16 x i8> undef, i16 -1)
273   ret <16 x i8> %ret
276 define <16 x i8> @test_int_x86_avx10_mask_vcvtbiasph2bf8s256(<16 x i8> %W, <32 x i8> %A, <16 x half> %B, i16 %U) nounwind {
277 ; X64-LABEL: test_int_x86_avx10_mask_vcvtbiasph2bf8s256:
278 ; X64:       # %bb.0:
279 ; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
280 ; X64-NEXT:    vcvtbiasph2bf8s %ymm2, %ymm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x74,0x29,0x74,0xc2]
281 ; X64-NEXT:    vzeroupper # encoding: [0xc5,0xf8,0x77]
282 ; X64-NEXT:    retq # encoding: [0xc3]
284 ; X86-LABEL: test_int_x86_avx10_mask_vcvtbiasph2bf8s256:
285 ; X86:       # %bb.0:
286 ; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]
287 ; X86-NEXT:    vcvtbiasph2bf8s %ymm2, %ymm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x74,0x29,0x74,0xc2]
288 ; X86-NEXT:    vzeroupper # encoding: [0xc5,0xf8,0x77]
289 ; X86-NEXT:    retl # encoding: [0xc3]
290   %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2bf8s256(<32 x i8> %A, <16 x half> %B, <16 x i8> %W, i16 %U)
291   ret <16 x i8> %ret
294 declare <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2bf8s256(<32 x i8> %A, <16 x half> %B, <16 x i8> %W, i16 %U)
296 define <16 x i8> @test_int_x86_avx10_maskz_vcvtbiasph2bf8s256(<32 x i8> %A, <16 x half> %B, i16 %U) nounwind {
297 ; X64-LABEL: test_int_x86_avx10_maskz_vcvtbiasph2bf8s256:
298 ; X64:       # %bb.0:
299 ; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
300 ; X64-NEXT:    vcvtbiasph2bf8s %ymm1, %ymm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0xa9,0x74,0xc1]
301 ; X64-NEXT:    vzeroupper # encoding: [0xc5,0xf8,0x77]
302 ; X64-NEXT:    retq # encoding: [0xc3]
304 ; X86-LABEL: test_int_x86_avx10_maskz_vcvtbiasph2bf8s256:
305 ; X86:       # %bb.0:
306 ; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]
307 ; X86-NEXT:    vcvtbiasph2bf8s %ymm1, %ymm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0xa9,0x74,0xc1]
308 ; X86-NEXT:    vzeroupper # encoding: [0xc5,0xf8,0x77]
309 ; X86-NEXT:    retl # encoding: [0xc3]
310   %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2bf8s256(<32 x i8> %A, <16 x half> %B, <16 x i8> zeroinitializer, i16 %U)
311   ret <16 x i8> %ret
314 define <16 x i8> @test_int_x86_avx10_vcvtbiasph2hf8128(<16 x i8> %A, <8 x half> %B) nounwind {
315 ; CHECK-LABEL: test_int_x86_avx10_vcvtbiasph2hf8128:
316 ; CHECK:       # %bb.0:
317 ; CHECK-NEXT:    vcvtbiasph2hf8 %xmm1, %xmm0, %xmm0 # encoding: [0x62,0xf5,0x7c,0x08,0x18,0xc1]
318 ; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]
319   %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2hf8128(<16 x i8> %A, <8 x half> %B, <16 x i8> undef, i8 -1)
320   ret <16 x i8> %ret
323 define <16 x i8> @test_int_x86_avx10_mask_vcvtbiasph2hf8128(<16 x i8> %W, <16 x i8> %A, <8 x half> %B, i8 %U) nounwind {
324 ; X64-LABEL: test_int_x86_avx10_mask_vcvtbiasph2hf8128:
325 ; X64:       # %bb.0:
326 ; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
327 ; X64-NEXT:    vcvtbiasph2hf8 %xmm2, %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x74,0x09,0x18,0xc2]
328 ; X64-NEXT:    retq # encoding: [0xc3]
330 ; X86-LABEL: test_int_x86_avx10_mask_vcvtbiasph2hf8128:
331 ; X86:       # %bb.0:
332 ; X86-NEXT:    kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
333 ; X86-NEXT:    vcvtbiasph2hf8 %xmm2, %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x74,0x09,0x18,0xc2]
334 ; X86-NEXT:    retl # encoding: [0xc3]
335   %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2hf8128(<16 x i8> %A, <8 x half> %B, <16 x i8> %W, i8 %U)
336   ret <16 x i8> %ret
339 declare <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2hf8128(<16 x i8> %A, <8 x half> %B, <16 x i8> %W, i8 %U)
341 define <16 x i8> @test_int_x86_avx10_maskz_vcvtbiasph2hf8128(<16 x i8> %A, <8 x half> %B, i8 %U) nounwind {
342 ; X64-LABEL: test_int_x86_avx10_maskz_vcvtbiasph2hf8128:
343 ; X64:       # %bb.0:
344 ; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
345 ; X64-NEXT:    vcvtbiasph2hf8 %xmm1, %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0x89,0x18,0xc1]
346 ; X64-NEXT:    retq # encoding: [0xc3]
348 ; X86-LABEL: test_int_x86_avx10_maskz_vcvtbiasph2hf8128:
349 ; X86:       # %bb.0:
350 ; X86-NEXT:    kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
351 ; X86-NEXT:    vcvtbiasph2hf8 %xmm1, %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0x89,0x18,0xc1]
352 ; X86-NEXT:    retl # encoding: [0xc3]
353   %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2hf8128(<16 x i8> %A, <8 x half> %B, <16 x i8> zeroinitializer, i8 %U)
354   ret <16 x i8> %ret
357 define <16 x i8> @test_int_x86_avx10_vcvtbiasph2hf8256(<32 x i8> %A, <16 x half> %B) nounwind {
358 ; CHECK-LABEL: test_int_x86_avx10_vcvtbiasph2hf8256:
359 ; CHECK:       # %bb.0:
360 ; CHECK-NEXT:    vcvtbiasph2hf8 %ymm1, %ymm0, %xmm0 # encoding: [0x62,0xf5,0x7c,0x28,0x18,0xc1]
361 ; CHECK-NEXT:    vzeroupper # encoding: [0xc5,0xf8,0x77]
362 ; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]
363   %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2hf8256(<32 x i8> %A, <16 x half> %B, <16 x i8> undef, i16 -1)
364   ret <16 x i8> %ret
367 define <16 x i8> @test_int_x86_avx10_mask_vcvtbiasph2hf8256(<16 x i8> %W, <32 x i8> %A, <16 x half> %B, i16 %U) nounwind {
368 ; X64-LABEL: test_int_x86_avx10_mask_vcvtbiasph2hf8256:
369 ; X64:       # %bb.0:
370 ; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
371 ; X64-NEXT:    vcvtbiasph2hf8 %ymm2, %ymm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x74,0x29,0x18,0xc2]
372 ; X64-NEXT:    vzeroupper # encoding: [0xc5,0xf8,0x77]
373 ; X64-NEXT:    retq # encoding: [0xc3]
375 ; X86-LABEL: test_int_x86_avx10_mask_vcvtbiasph2hf8256:
376 ; X86:       # %bb.0:
377 ; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]
378 ; X86-NEXT:    vcvtbiasph2hf8 %ymm2, %ymm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x74,0x29,0x18,0xc2]
379 ; X86-NEXT:    vzeroupper # encoding: [0xc5,0xf8,0x77]
380 ; X86-NEXT:    retl # encoding: [0xc3]
381   %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2hf8256(<32 x i8> %A, <16 x half> %B, <16 x i8> %W, i16 %U)
382   ret <16 x i8> %ret
385 declare <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2hf8256(<32 x i8> %A, <16 x half> %B, <16 x i8> %W, i16 %U)
387 define <16 x i8> @test_int_x86_avx10_maskz_vcvtbiasph2hf8256(<32 x i8> %A, <16 x half> %B, i16 %U) nounwind {
388 ; X64-LABEL: test_int_x86_avx10_maskz_vcvtbiasph2hf8256:
389 ; X64:       # %bb.0:
390 ; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
391 ; X64-NEXT:    vcvtbiasph2hf8 %ymm1, %ymm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0xa9,0x18,0xc1]
392 ; X64-NEXT:    vzeroupper # encoding: [0xc5,0xf8,0x77]
393 ; X64-NEXT:    retq # encoding: [0xc3]
395 ; X86-LABEL: test_int_x86_avx10_maskz_vcvtbiasph2hf8256:
396 ; X86:       # %bb.0:
397 ; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]
398 ; X86-NEXT:    vcvtbiasph2hf8 %ymm1, %ymm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0xa9,0x18,0xc1]
399 ; X86-NEXT:    vzeroupper # encoding: [0xc5,0xf8,0x77]
400 ; X86-NEXT:    retl # encoding: [0xc3]
401   %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2hf8256(<32 x i8> %A, <16 x half> %B, <16 x i8> zeroinitializer, i16 %U)
402   ret <16 x i8> %ret
405 define <16 x i8> @test_int_x86_avx10_vcvtbiasph2hf8s128(<16 x i8> %A, <8 x half> %B) nounwind {
406 ; CHECK-LABEL: test_int_x86_avx10_vcvtbiasph2hf8s128:
407 ; CHECK:       # %bb.0:
408 ; CHECK-NEXT:    vcvtbiasph2hf8s %xmm1, %xmm0, %xmm0 # encoding: [0x62,0xf5,0x7c,0x08,0x1b,0xc1]
409 ; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]
410   %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2hf8s128(<16 x i8> %A, <8 x half> %B, <16 x i8> undef, i8 -1)
411   ret <16 x i8> %ret
414 define <16 x i8> @test_int_x86_avx10_mask_vcvtbiasph2hf8s128(<16 x i8> %W, <16 x i8> %A, <8 x half> %B, i8 %U) nounwind {
415 ; X64-LABEL: test_int_x86_avx10_mask_vcvtbiasph2hf8s128:
416 ; X64:       # %bb.0:
417 ; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
418 ; X64-NEXT:    vcvtbiasph2hf8s %xmm2, %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x74,0x09,0x1b,0xc2]
419 ; X64-NEXT:    retq # encoding: [0xc3]
421 ; X86-LABEL: test_int_x86_avx10_mask_vcvtbiasph2hf8s128:
422 ; X86:       # %bb.0:
423 ; X86-NEXT:    kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
424 ; X86-NEXT:    vcvtbiasph2hf8s %xmm2, %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x74,0x09,0x1b,0xc2]
425 ; X86-NEXT:    retl # encoding: [0xc3]
426   %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2hf8s128(<16 x i8> %A, <8 x half> %B, <16 x i8> %W, i8 %U)
427   ret <16 x i8> %ret
430 declare <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2hf8s128(<16 x i8> %A, <8 x half> %B, <16 x i8> %W, i8 %U)
432 define <16 x i8> @test_int_x86_avx10_maskz_vcvtbiasph2hf8s128(<16 x i8> %A, <8 x half> %B, i8 %U) nounwind {
433 ; X64-LABEL: test_int_x86_avx10_maskz_vcvtbiasph2hf8s128:
434 ; X64:       # %bb.0:
435 ; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
436 ; X64-NEXT:    vcvtbiasph2hf8s %xmm1, %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0x89,0x1b,0xc1]
437 ; X64-NEXT:    retq # encoding: [0xc3]
439 ; X86-LABEL: test_int_x86_avx10_maskz_vcvtbiasph2hf8s128:
440 ; X86:       # %bb.0:
441 ; X86-NEXT:    kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
442 ; X86-NEXT:    vcvtbiasph2hf8s %xmm1, %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0x89,0x1b,0xc1]
443 ; X86-NEXT:    retl # encoding: [0xc3]
444   %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2hf8s128(<16 x i8> %A, <8 x half> %B, <16 x i8> zeroinitializer, i8 %U)
445   ret <16 x i8> %ret
448 define <16 x i8> @test_int_x86_avx10_vcvtbiasph2hf8s256(<32 x i8> %A, <16 x half> %B) nounwind {
449 ; CHECK-LABEL: test_int_x86_avx10_vcvtbiasph2hf8s256:
450 ; CHECK:       # %bb.0:
451 ; CHECK-NEXT:    vcvtbiasph2hf8s %ymm1, %ymm0, %xmm0 # encoding: [0x62,0xf5,0x7c,0x28,0x1b,0xc1]
452 ; CHECK-NEXT:    vzeroupper # encoding: [0xc5,0xf8,0x77]
453 ; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]
454   %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2hf8s256(<32 x i8> %A, <16 x half> %B, <16 x i8> undef, i16 -1)
455   ret <16 x i8> %ret
458 define <16 x i8> @test_int_x86_avx10_mask_vcvtbiasph2hf8s256(<16 x i8> %W, <32 x i8> %A, <16 x half> %B, i16 %U) nounwind {
459 ; X64-LABEL: test_int_x86_avx10_mask_vcvtbiasph2hf8s256:
460 ; X64:       # %bb.0:
461 ; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
462 ; X64-NEXT:    vcvtbiasph2hf8s %ymm2, %ymm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x74,0x29,0x1b,0xc2]
463 ; X64-NEXT:    vzeroupper # encoding: [0xc5,0xf8,0x77]
464 ; X64-NEXT:    retq # encoding: [0xc3]
466 ; X86-LABEL: test_int_x86_avx10_mask_vcvtbiasph2hf8s256:
467 ; X86:       # %bb.0:
468 ; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]
469 ; X86-NEXT:    vcvtbiasph2hf8s %ymm2, %ymm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x74,0x29,0x1b,0xc2]
470 ; X86-NEXT:    vzeroupper # encoding: [0xc5,0xf8,0x77]
471 ; X86-NEXT:    retl # encoding: [0xc3]
472   %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2hf8s256(<32 x i8> %A, <16 x half> %B, <16 x i8> %W, i16 %U)
473   ret <16 x i8> %ret
476 declare <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2hf8s256(<32 x i8> %A, <16 x half> %B, <16 x i8> %W, i16 %U)
478 define <16 x i8> @test_int_x86_avx10_maskz_vcvtbiasph2hf8s256(<32 x i8> %A, <16 x half> %B, i16 %U) nounwind {
479 ; X64-LABEL: test_int_x86_avx10_maskz_vcvtbiasph2hf8s256:
480 ; X64:       # %bb.0:
481 ; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
482 ; X64-NEXT:    vcvtbiasph2hf8s %ymm1, %ymm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0xa9,0x1b,0xc1]
483 ; X64-NEXT:    vzeroupper # encoding: [0xc5,0xf8,0x77]
484 ; X64-NEXT:    retq # encoding: [0xc3]
486 ; X86-LABEL: test_int_x86_avx10_maskz_vcvtbiasph2hf8s256:
487 ; X86:       # %bb.0:
488 ; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]
489 ; X86-NEXT:    vcvtbiasph2hf8s %ymm1, %ymm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0xa9,0x1b,0xc1]
490 ; X86-NEXT:    vzeroupper # encoding: [0xc5,0xf8,0x77]
491 ; X86-NEXT:    retl # encoding: [0xc3]
492   %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2hf8s256(<32 x i8> %A, <16 x half> %B, <16 x i8> zeroinitializer, i16 %U)
493   ret <16 x i8> %ret
496 define <16 x i8> @test_int_x86_avx10_vcvtne2ph2bf8128(<8 x half> %A, <8 x half> %B) nounwind {
497 ; CHECK-LABEL: test_int_x86_avx10_vcvtne2ph2bf8128:
498 ; CHECK:       # %bb.0:
499 ; CHECK-NEXT:    vcvtne2ph2bf8 %xmm1, %xmm0, %xmm0 # encoding: [0x62,0xf2,0x7f,0x08,0x74,0xc1]
500 ; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]
501   %ret = call <16 x i8> @llvm.x86.avx10.vcvtne2ph2bf8128(<8 x half> %A, <8 x half> %B)
502   ret <16 x i8> %ret
505 define <16 x i8> @test_int_x86_avx10_vcvtne2ph2bf8128_mask(<16 x i8> %C, i16 %U, <8 x half> %A, <8 x half> %B) nounwind {
506 ; X64-LABEL: test_int_x86_avx10_vcvtne2ph2bf8128_mask:
507 ; X64:       # %bb.0:
508 ; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
509 ; X64-NEXT:    vcvtne2ph2bf8 %xmm2, %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf2,0x77,0x09,0x74,0xc2]
510 ; X64-NEXT:    retq # encoding: [0xc3]
512 ; X86-LABEL: test_int_x86_avx10_vcvtne2ph2bf8128_mask:
513 ; X86:       # %bb.0:
514 ; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]
515 ; X86-NEXT:    vcvtne2ph2bf8 %xmm2, %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf2,0x77,0x09,0x74,0xc2]
516 ; X86-NEXT:    retl # encoding: [0xc3]
517   %1 = call <16 x i8> @llvm.x86.avx10.vcvtne2ph2bf8128(<8 x half> %A, <8 x half> %B)
518   %2 = bitcast i16 %U to <16 x i1>
519   %3 = select <16 x i1> %2, <16 x i8> %1, <16 x i8> %C
520   ret <16 x i8> %3
523 define <16 x i8> @test_int_x86_avx10_vcvtne2ph2bf8128_maskz(<16 x i8> %C, i16 %U, <8 x half> %A, <8 x half> %B) nounwind {
524 ; X64-LABEL: test_int_x86_avx10_vcvtne2ph2bf8128_maskz:
525 ; X64:       # %bb.0:
526 ; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
527 ; X64-NEXT:    vcvtne2ph2bf8 %xmm2, %xmm1, %xmm0 {%k1} {z} # encoding: [0x62,0xf2,0x77,0x89,0x74,0xc2]
528 ; X64-NEXT:    retq # encoding: [0xc3]
530 ; X86-LABEL: test_int_x86_avx10_vcvtne2ph2bf8128_maskz:
531 ; X86:       # %bb.0:
532 ; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]
533 ; X86-NEXT:    vcvtne2ph2bf8 %xmm2, %xmm1, %xmm0 {%k1} {z} # encoding: [0x62,0xf2,0x77,0x89,0x74,0xc2]
534 ; X86-NEXT:    retl # encoding: [0xc3]
535   %1 = call <16 x i8> @llvm.x86.avx10.vcvtne2ph2bf8128(<8 x half> %A, <8 x half> %B)
536   %2 = bitcast i16 %U to <16 x i1>
537   %3 = select <16 x i1> %2, <16 x i8> %1, <16 x i8> zeroinitializer
538   ret <16 x i8> %3
541 declare <16 x i8> @llvm.x86.avx10.vcvtne2ph2bf8128(<8 x half> %A, <8 x half> %B)
543 define <32 x i8> @test_int_x86_avx10_vcvtne2ph2bf8256(<16 x half> %A, <16 x half> %B) nounwind {
544 ; CHECK-LABEL: test_int_x86_avx10_vcvtne2ph2bf8256:
545 ; CHECK:       # %bb.0:
546 ; CHECK-NEXT:    vcvtne2ph2bf8 %ymm1, %ymm0, %ymm0 # encoding: [0x62,0xf2,0x7f,0x28,0x74,0xc1]
547 ; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]
548   %ret = call <32 x i8> @llvm.x86.avx10.vcvtne2ph2bf8256(<16 x half> %A, <16 x half> %B)
549   ret <32 x i8> %ret
552 define <32 x i8> @test_int_x86_avx10_vcvtne2ph2bf8256_mask(<32 x i8> %C, i32 %U, <16 x half> %A, <16 x half> %B) nounwind {
553 ; X64-LABEL: test_int_x86_avx10_vcvtne2ph2bf8256_mask:
554 ; X64:       # %bb.0:
555 ; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
556 ; X64-NEXT:    vcvtne2ph2bf8 %ymm2, %ymm1, %ymm0 {%k1} # encoding: [0x62,0xf2,0x77,0x29,0x74,0xc2]
557 ; X64-NEXT:    retq # encoding: [0xc3]
559 ; X86-LABEL: test_int_x86_avx10_vcvtne2ph2bf8256_mask:
560 ; X86:       # %bb.0:
561 ; X86-NEXT:    kmovd {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf9,0x90,0x4c,0x24,0x04]
562 ; X86-NEXT:    vcvtne2ph2bf8 %ymm2, %ymm1, %ymm0 {%k1} # encoding: [0x62,0xf2,0x77,0x29,0x74,0xc2]
563 ; X86-NEXT:    retl # encoding: [0xc3]
564   %1 = call <32 x i8> @llvm.x86.avx10.vcvtne2ph2bf8256(<16 x half> %A, <16 x half> %B)
565   %2 = bitcast i32 %U to <32 x i1>
566   %3 = select <32 x i1> %2, <32 x i8> %1, <32 x i8> %C
567   ret <32 x i8> %3
570 define <32 x i8> @test_int_x86_avx10_vcvtne2ph2bf8256_maskz(<32 x i8> %C, i32 %U, <16 x half> %A, <16 x half> %B) nounwind {
571 ; X64-LABEL: test_int_x86_avx10_vcvtne2ph2bf8256_maskz:
572 ; X64:       # %bb.0:
573 ; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
574 ; X64-NEXT:    vcvtne2ph2bf8 %ymm2, %ymm1, %ymm0 {%k1} {z} # encoding: [0x62,0xf2,0x77,0xa9,0x74,0xc2]
575 ; X64-NEXT:    retq # encoding: [0xc3]
577 ; X86-LABEL: test_int_x86_avx10_vcvtne2ph2bf8256_maskz:
578 ; X86:       # %bb.0:
579 ; X86-NEXT:    kmovd {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf9,0x90,0x4c,0x24,0x04]
580 ; X86-NEXT:    vcvtne2ph2bf8 %ymm2, %ymm1, %ymm0 {%k1} {z} # encoding: [0x62,0xf2,0x77,0xa9,0x74,0xc2]
581 ; X86-NEXT:    retl # encoding: [0xc3]
582   %1 = call <32 x i8> @llvm.x86.avx10.vcvtne2ph2bf8256(<16 x half> %A, <16 x half> %B)
583   %2 = bitcast i32 %U to <32 x i1>
584   %3 = select <32 x i1> %2, <32 x i8> %1, <32 x i8> zeroinitializer
585   ret <32 x i8> %3
588 declare <32 x i8> @llvm.x86.avx10.vcvtne2ph2bf8256(<16 x half> %A, <16 x half> %B)
590 define <16 x i8> @test_int_x86_avx10_vcvtne2ph2bf8s128(<8 x half> %A, <8 x half> %B) nounwind {
591 ; CHECK-LABEL: test_int_x86_avx10_vcvtne2ph2bf8s128:
592 ; CHECK:       # %bb.0:
593 ; CHECK-NEXT:    vcvtne2ph2bf8s %xmm1, %xmm0, %xmm0 # encoding: [0x62,0xf5,0x7f,0x08,0x74,0xc1]
594 ; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]
595   %ret = call <16 x i8> @llvm.x86.avx10.vcvtne2ph2bf8s128(<8 x half> %A, <8 x half> %B)
596   ret <16 x i8> %ret
599 define <16 x i8> @test_int_x86_avx10_vcvtne2ph2bf8s128_mask(<16 x i8> %C, i16 %U, <8 x half> %A, <8 x half> %B) nounwind {
600 ; X64-LABEL: test_int_x86_avx10_vcvtne2ph2bf8s128_mask:
601 ; X64:       # %bb.0:
602 ; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
603 ; X64-NEXT:    vcvtne2ph2bf8s %xmm2, %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x77,0x09,0x74,0xc2]
604 ; X64-NEXT:    retq # encoding: [0xc3]
606 ; X86-LABEL: test_int_x86_avx10_vcvtne2ph2bf8s128_mask:
607 ; X86:       # %bb.0:
608 ; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]
609 ; X86-NEXT:    vcvtne2ph2bf8s %xmm2, %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x77,0x09,0x74,0xc2]
610 ; X86-NEXT:    retl # encoding: [0xc3]
611   %1 = call <16 x i8> @llvm.x86.avx10.vcvtne2ph2bf8s128(<8 x half> %A, <8 x half> %B)
612   %2 = bitcast i16 %U to <16 x i1>
613   %3 = select <16 x i1> %2, <16 x i8> %1, <16 x i8> %C
614   ret <16 x i8> %3
617 define <16 x i8> @test_int_x86_avx10_vcvtne2ph2bf8s128_maskz(i16 %U, <8 x half> %A, <8 x half> %B) nounwind {
618 ; X64-LABEL: test_int_x86_avx10_vcvtne2ph2bf8s128_maskz:
619 ; X64:       # %bb.0:
620 ; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
621 ; X64-NEXT:    vcvtne2ph2bf8s %xmm1, %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7f,0x89,0x74,0xc1]
622 ; X64-NEXT:    retq # encoding: [0xc3]
624 ; X86-LABEL: test_int_x86_avx10_vcvtne2ph2bf8s128_maskz:
625 ; X86:       # %bb.0:
626 ; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]
627 ; X86-NEXT:    vcvtne2ph2bf8s %xmm1, %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7f,0x89,0x74,0xc1]
628 ; X86-NEXT:    retl # encoding: [0xc3]
629   %1 = call <16 x i8> @llvm.x86.avx10.vcvtne2ph2bf8s128(<8 x half> %A, <8 x half> %B)
630   %2 = bitcast i16 %U to <16 x i1>
631   %3 = select <16 x i1> %2, <16 x i8> %1, <16 x i8> zeroinitializer
632   ret <16 x i8> %3
635 declare <16 x i8> @llvm.x86.avx10.vcvtne2ph2bf8s128(<8 x half> %A, <8 x half> %B)
637 define <32 x i8> @test_int_x86_avx10_vcvtne2ph2bf8s256(<16 x half> %A, <16 x half> %B) nounwind {
638 ; CHECK-LABEL: test_int_x86_avx10_vcvtne2ph2bf8s256:
639 ; CHECK:       # %bb.0:
640 ; CHECK-NEXT:    vcvtne2ph2bf8s %ymm1, %ymm0, %ymm0 # encoding: [0x62,0xf5,0x7f,0x28,0x74,0xc1]
641 ; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]
642   %ret = call <32 x i8> @llvm.x86.avx10.vcvtne2ph2bf8s256(<16 x half> %A, <16 x half> %B)
643   ret <32 x i8> %ret
646 define <32 x i8> @test_int_x86_avx10_vcvtne2ph2bf8s256_mask(<32 x i8> %C, i32 %U, <16 x half> %A, <16 x half> %B) nounwind {
647 ; X64-LABEL: test_int_x86_avx10_vcvtne2ph2bf8s256_mask:
648 ; X64:       # %bb.0:
649 ; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
650 ; X64-NEXT:    vcvtne2ph2bf8s %ymm2, %ymm1, %ymm0 {%k1} # encoding: [0x62,0xf5,0x77,0x29,0x74,0xc2]
651 ; X64-NEXT:    retq # encoding: [0xc3]
653 ; X86-LABEL: test_int_x86_avx10_vcvtne2ph2bf8s256_mask:
654 ; X86:       # %bb.0:
655 ; X86-NEXT:    kmovd {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf9,0x90,0x4c,0x24,0x04]
656 ; X86-NEXT:    vcvtne2ph2bf8s %ymm2, %ymm1, %ymm0 {%k1} # encoding: [0x62,0xf5,0x77,0x29,0x74,0xc2]
657 ; X86-NEXT:    retl # encoding: [0xc3]
658   %1 = call <32 x i8> @llvm.x86.avx10.vcvtne2ph2bf8s256(<16 x half> %A, <16 x half> %B)
659   %2 = bitcast i32 %U to <32 x i1>
660   %3 = select <32 x i1> %2, <32 x i8> %1, <32 x i8> %C
661   ret <32 x i8> %3
664 define <32 x i8> @test_int_x86_avx10_vcvtne2ph2bf8s256_maskz(i32 %U, <16 x half> %A, <16 x half> %B) nounwind {
665 ; X64-LABEL: test_int_x86_avx10_vcvtne2ph2bf8s256_maskz:
666 ; X64:       # %bb.0:
667 ; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
668 ; X64-NEXT:    vcvtne2ph2bf8s %ymm1, %ymm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x7f,0xa9,0x74,0xc1]
669 ; X64-NEXT:    retq # encoding: [0xc3]
671 ; X86-LABEL: test_int_x86_avx10_vcvtne2ph2bf8s256_maskz:
672 ; X86:       # %bb.0:
673 ; X86-NEXT:    kmovd {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf9,0x90,0x4c,0x24,0x04]
674 ; X86-NEXT:    vcvtne2ph2bf8s %ymm1, %ymm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x7f,0xa9,0x74,0xc1]
675 ; X86-NEXT:    retl # encoding: [0xc3]
676   %1 = call <32 x i8> @llvm.x86.avx10.vcvtne2ph2bf8s256(<16 x half> %A, <16 x half> %B)
677   %2 = bitcast i32 %U to <32 x i1>
678   %3 = select <32 x i1> %2, <32 x i8> %1, <32 x i8> zeroinitializer
679   ret <32 x i8> %3
682 declare <32 x i8> @llvm.x86.avx10.vcvtne2ph2bf8s256(<16 x half> %A, <16 x half> %B)
684 define <16 x i8> @test_int_x86_avx10_vcvtne2ph2hf8128(<8 x half> %A, <8 x half> %B) nounwind {
685 ; CHECK-LABEL: test_int_x86_avx10_vcvtne2ph2hf8128:
686 ; CHECK:       # %bb.0:
687 ; CHECK-NEXT:    vcvtne2ph2hf8 %xmm1, %xmm0, %xmm0 # encoding: [0x62,0xf5,0x7f,0x08,0x18,0xc1]
688 ; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]
689   %ret = call <16 x i8> @llvm.x86.avx10.vcvtne2ph2hf8128(<8 x half> %A, <8 x half> %B)
690   ret <16 x i8> %ret
693 define <16 x i8> @test_int_x86_avx10_vcvtne2ph2hf8128_mask(<16 x i8> %C, i16 %U, <8 x half> %A, <8 x half> %B) nounwind {
694 ; X64-LABEL: test_int_x86_avx10_vcvtne2ph2hf8128_mask:
695 ; X64:       # %bb.0:
696 ; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
697 ; X64-NEXT:    vcvtne2ph2hf8 %xmm2, %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x77,0x09,0x18,0xc2]
698 ; X64-NEXT:    retq # encoding: [0xc3]
700 ; X86-LABEL: test_int_x86_avx10_vcvtne2ph2hf8128_mask:
701 ; X86:       # %bb.0:
702 ; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]
703 ; X86-NEXT:    vcvtne2ph2hf8 %xmm2, %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x77,0x09,0x18,0xc2]
704 ; X86-NEXT:    retl # encoding: [0xc3]
705   %1 = call <16 x i8> @llvm.x86.avx10.vcvtne2ph2hf8128(<8 x half> %A, <8 x half> %B)
706   %2 = bitcast i16 %U to <16 x i1>
707   %3 = select <16 x i1> %2, <16 x i8> %1, <16 x i8> %C
708   ret <16 x i8> %3
711 define <16 x i8> @test_int_x86_avx10_vcvtne2ph2hf8128_maskz(i16 %U, <8 x half> %A, <8 x half> %B) nounwind {
712 ; X64-LABEL: test_int_x86_avx10_vcvtne2ph2hf8128_maskz:
713 ; X64:       # %bb.0:
714 ; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
715 ; X64-NEXT:    vcvtne2ph2hf8 %xmm1, %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7f,0x89,0x18,0xc1]
716 ; X64-NEXT:    retq # encoding: [0xc3]
718 ; X86-LABEL: test_int_x86_avx10_vcvtne2ph2hf8128_maskz:
719 ; X86:       # %bb.0:
720 ; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]
721 ; X86-NEXT:    vcvtne2ph2hf8 %xmm1, %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7f,0x89,0x18,0xc1]
722 ; X86-NEXT:    retl # encoding: [0xc3]
723   %1 = call <16 x i8> @llvm.x86.avx10.vcvtne2ph2hf8128(<8 x half> %A, <8 x half> %B)
724   %2 = bitcast i16 %U to <16 x i1>
725   %3 = select <16 x i1> %2, <16 x i8> %1, <16 x i8> zeroinitializer
726   ret <16 x i8> %3
729 declare <16 x i8> @llvm.x86.avx10.vcvtne2ph2hf8128(<8 x half> %A, <8 x half> %B)
731 define <32 x i8> @test_int_x86_avx10_vcvtne2ph2hf8256(<16 x half> %A, <16 x half> %B) nounwind {
732 ; CHECK-LABEL: test_int_x86_avx10_vcvtne2ph2hf8256:
733 ; CHECK:       # %bb.0:
734 ; CHECK-NEXT:    vcvtne2ph2hf8 %ymm1, %ymm0, %ymm0 # encoding: [0x62,0xf5,0x7f,0x28,0x18,0xc1]
735 ; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]
736   %ret = call <32 x i8> @llvm.x86.avx10.vcvtne2ph2hf8256(<16 x half> %A, <16 x half> %B)
737   ret <32 x i8> %ret
740 define <32 x i8> @test_int_x86_avx10_vcvtne2ph2hf8256_mask(<32 x i8> %C, i32 %U, <16 x half> %A, <16 x half> %B) nounwind {
741 ; X64-LABEL: test_int_x86_avx10_vcvtne2ph2hf8256_mask:
742 ; X64:       # %bb.0:
743 ; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
744 ; X64-NEXT:    vcvtne2ph2hf8 %ymm2, %ymm1, %ymm0 {%k1} # encoding: [0x62,0xf5,0x77,0x29,0x18,0xc2]
745 ; X64-NEXT:    retq # encoding: [0xc3]
747 ; X86-LABEL: test_int_x86_avx10_vcvtne2ph2hf8256_mask:
748 ; X86:       # %bb.0:
749 ; X86-NEXT:    kmovd {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf9,0x90,0x4c,0x24,0x04]
750 ; X86-NEXT:    vcvtne2ph2hf8 %ymm2, %ymm1, %ymm0 {%k1} # encoding: [0x62,0xf5,0x77,0x29,0x18,0xc2]
751 ; X86-NEXT:    retl # encoding: [0xc3]
752   %1 = call <32 x i8> @llvm.x86.avx10.vcvtne2ph2hf8256(<16 x half> %A, <16 x half> %B)
753   %2 = bitcast i32 %U to <32 x i1>
754   %3 = select <32 x i1> %2, <32 x i8> %1, <32 x i8> %C
755   ret <32 x i8> %3
758 define <32 x i8> @test_int_x86_avx10_vcvtne2ph2hf8256_maskz(i32 %U, <16 x half> %A, <16 x half> %B) nounwind {
759 ; X64-LABEL: test_int_x86_avx10_vcvtne2ph2hf8256_maskz:
760 ; X64:       # %bb.0:
761 ; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
762 ; X64-NEXT:    vcvtne2ph2hf8 %ymm1, %ymm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x7f,0xa9,0x18,0xc1]
763 ; X64-NEXT:    retq # encoding: [0xc3]
765 ; X86-LABEL: test_int_x86_avx10_vcvtne2ph2hf8256_maskz:
766 ; X86:       # %bb.0:
767 ; X86-NEXT:    kmovd {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf9,0x90,0x4c,0x24,0x04]
768 ; X86-NEXT:    vcvtne2ph2hf8 %ymm1, %ymm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x7f,0xa9,0x18,0xc1]
769 ; X86-NEXT:    retl # encoding: [0xc3]
770   %1 = call <32 x i8> @llvm.x86.avx10.vcvtne2ph2hf8256(<16 x half> %A, <16 x half> %B)
771   %2 = bitcast i32 %U to <32 x i1>
772   %3 = select <32 x i1> %2, <32 x i8> %1, <32 x i8> zeroinitializer
773   ret <32 x i8> %3
776 declare <32 x i8> @llvm.x86.avx10.vcvtne2ph2hf8256(<16 x half> %A, <16 x half> %B)
778 define <16 x i8> @test_int_x86_avx10_vcvtne2ph2hf8s128(<8 x half> %A, <8 x half> %B) nounwind {
779 ; CHECK-LABEL: test_int_x86_avx10_vcvtne2ph2hf8s128:
780 ; CHECK:       # %bb.0:
781 ; CHECK-NEXT:    vcvtne2ph2hf8s %xmm1, %xmm0, %xmm0 # encoding: [0x62,0xf5,0x7f,0x08,0x1b,0xc1]
782 ; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]
783   %ret = call <16 x i8> @llvm.x86.avx10.vcvtne2ph2hf8s128(<8 x half> %A, <8 x half> %B)
784   ret <16 x i8> %ret
787 define <16 x i8> @test_int_x86_avx10_vcvtne2ph2hf8s128_mask(<16 x i8> %C, i16 %U, <8 x half> %A, <8 x half> %B) nounwind {
788 ; X64-LABEL: test_int_x86_avx10_vcvtne2ph2hf8s128_mask:
789 ; X64:       # %bb.0:
790 ; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
791 ; X64-NEXT:    vcvtne2ph2hf8s %xmm2, %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x77,0x09,0x1b,0xc2]
792 ; X64-NEXT:    retq # encoding: [0xc3]
794 ; X86-LABEL: test_int_x86_avx10_vcvtne2ph2hf8s128_mask:
795 ; X86:       # %bb.0:
796 ; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]
797 ; X86-NEXT:    vcvtne2ph2hf8s %xmm2, %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x77,0x09,0x1b,0xc2]
798 ; X86-NEXT:    retl # encoding: [0xc3]
799   %1 = call <16 x i8> @llvm.x86.avx10.vcvtne2ph2hf8s128(<8 x half> %A, <8 x half> %B)
800   %2 = bitcast i16 %U to <16 x i1>
801   %3 = select <16 x i1> %2, <16 x i8> %1, <16 x i8> %C
802   ret <16 x i8> %3
805 define <16 x i8> @test_int_x86_avx10_vcvtne2ph2hf8s128_maskz(i16 %U, <8 x half> %A, <8 x half> %B) nounwind {
806 ; X64-LABEL: test_int_x86_avx10_vcvtne2ph2hf8s128_maskz:
807 ; X64:       # %bb.0:
808 ; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
809 ; X64-NEXT:    vcvtne2ph2hf8s %xmm1, %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7f,0x89,0x1b,0xc1]
810 ; X64-NEXT:    retq # encoding: [0xc3]
812 ; X86-LABEL: test_int_x86_avx10_vcvtne2ph2hf8s128_maskz:
813 ; X86:       # %bb.0:
814 ; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]
815 ; X86-NEXT:    vcvtne2ph2hf8s %xmm1, %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7f,0x89,0x1b,0xc1]
816 ; X86-NEXT:    retl # encoding: [0xc3]
817   %1 = call <16 x i8> @llvm.x86.avx10.vcvtne2ph2hf8s128(<8 x half> %A, <8 x half> %B)
818   %2 = bitcast i16 %U to <16 x i1>
819   %3 = select <16 x i1> %2, <16 x i8> %1, <16 x i8> zeroinitializer
820   ret <16 x i8> %3
823 declare <16 x i8> @llvm.x86.avx10.vcvtne2ph2hf8s128(<8 x half> %A, <8 x half> %B)
825 define <32 x i8> @test_int_x86_avx10_vcvtne2ph2hf8s256(<16 x half> %A, <16 x half> %B) nounwind {
826 ; CHECK-LABEL: test_int_x86_avx10_vcvtne2ph2hf8s256:
827 ; CHECK:       # %bb.0:
828 ; CHECK-NEXT:    vcvtne2ph2hf8s %ymm1, %ymm0, %ymm0 # encoding: [0x62,0xf5,0x7f,0x28,0x1b,0xc1]
829 ; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]
830   %ret = call <32 x i8> @llvm.x86.avx10.vcvtne2ph2hf8s256(<16 x half> %A, <16 x half> %B)
831   ret <32 x i8> %ret
834 define <32 x i8> @test_int_x86_avx10_vcvtne2ph2hf8s256_mask(<32 x i8> %C, i32 %U, <16 x half> %A, <16 x half> %B) nounwind {
835 ; X64-LABEL: test_int_x86_avx10_vcvtne2ph2hf8s256_mask:
836 ; X64:       # %bb.0:
837 ; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
838 ; X64-NEXT:    vcvtne2ph2hf8s %ymm2, %ymm1, %ymm0 {%k1} # encoding: [0x62,0xf5,0x77,0x29,0x1b,0xc2]
839 ; X64-NEXT:    retq # encoding: [0xc3]
841 ; X86-LABEL: test_int_x86_avx10_vcvtne2ph2hf8s256_mask:
842 ; X86:       # %bb.0:
843 ; X86-NEXT:    kmovd {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf9,0x90,0x4c,0x24,0x04]
844 ; X86-NEXT:    vcvtne2ph2hf8s %ymm2, %ymm1, %ymm0 {%k1} # encoding: [0x62,0xf5,0x77,0x29,0x1b,0xc2]
845 ; X86-NEXT:    retl # encoding: [0xc3]
846   %1 = call <32 x i8> @llvm.x86.avx10.vcvtne2ph2hf8s256(<16 x half> %A, <16 x half> %B)
847   %2 = bitcast i32 %U to <32 x i1>
848   %3 = select <32 x i1> %2, <32 x i8> %1, <32 x i8> %C
849   ret <32 x i8> %3
852 define <32 x i8> @test_int_x86_avx10_vcvtne2ph2hf8s256_maskz(i32 %U, <16 x half> %A, <16 x half> %B) nounwind {
853 ; X64-LABEL: test_int_x86_avx10_vcvtne2ph2hf8s256_maskz:
854 ; X64:       # %bb.0:
855 ; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
856 ; X64-NEXT:    vcvtne2ph2hf8s %ymm1, %ymm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x7f,0xa9,0x1b,0xc1]
857 ; X64-NEXT:    retq # encoding: [0xc3]
859 ; X86-LABEL: test_int_x86_avx10_vcvtne2ph2hf8s256_maskz:
860 ; X86:       # %bb.0:
861 ; X86-NEXT:    kmovd {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf9,0x90,0x4c,0x24,0x04]
862 ; X86-NEXT:    vcvtne2ph2hf8s %ymm1, %ymm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x7f,0xa9,0x1b,0xc1]
863 ; X86-NEXT:    retl # encoding: [0xc3]
864   %1 = call <32 x i8> @llvm.x86.avx10.vcvtne2ph2hf8s256(<16 x half> %A, <16 x half> %B)
865   %2 = bitcast i32 %U to <32 x i1>
866   %3 = select <32 x i1> %2, <32 x i8> %1, <32 x i8> zeroinitializer
867   ret <32 x i8> %3
870 declare <32 x i8> @llvm.x86.avx10.vcvtne2ph2hf8s256(<16 x half> %A, <16 x half> %B)
872 define <8 x half> @test_int_x86_avx10_vcvthf82ph128(<16 x i8> %A) nounwind {
873 ; CHECK-LABEL: test_int_x86_avx10_vcvthf82ph128:
874 ; CHECK:       # %bb.0:
875 ; CHECK-NEXT:    vcvthf82ph %xmm0, %xmm0 # encoding: [0x62,0xf5,0x7f,0x08,0x1e,0xc0]
876 ; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]
877   %ret = call <8 x half> @llvm.x86.avx10.mask.vcvthf82ph128(<16 x i8> %A, <8 x half> undef, i8 -1)
878   ret <8 x half> %ret
881 define <8 x half> @test_int_x86_avx10_mask_vcvthf82ph128(<16 x i8> %A, <8 x half> %B, i8 %C) nounwind {
882 ; X64-LABEL: test_int_x86_avx10_mask_vcvthf82ph128:
883 ; X64:       # %bb.0:
884 ; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
885 ; X64-NEXT:    vcvthf82ph %xmm0, %xmm1 {%k1} # encoding: [0x62,0xf5,0x7f,0x09,0x1e,0xc8]
886 ; X64-NEXT:    vmovdqa %xmm1, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x6f,0xc1]
887 ; X64-NEXT:    retq # encoding: [0xc3]
889 ; X86-LABEL: test_int_x86_avx10_mask_vcvthf82ph128:
890 ; X86:       # %bb.0:
891 ; X86-NEXT:    kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
892 ; X86-NEXT:    vcvthf82ph %xmm0, %xmm1 {%k1} # encoding: [0x62,0xf5,0x7f,0x09,0x1e,0xc8]
893 ; X86-NEXT:    vmovdqa %xmm1, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x6f,0xc1]
894 ; X86-NEXT:    retl # encoding: [0xc3]
895   %ret = call <8 x half> @llvm.x86.avx10.mask.vcvthf82ph128(<16 x i8> %A, <8 x half> %B, i8 %C)
896   ret <8 x half> %ret
899 declare <8 x half> @llvm.x86.avx10.mask.vcvthf82ph128(<16 x i8> %A, <8 x half> %B, i8 %C)
901 define <8 x half> @test_int_x86_avx10_maskz_vcvthf82ph128(<16 x i8> %A, i8 %B) nounwind {
902 ; X64-LABEL: test_int_x86_avx10_maskz_vcvthf82ph128:
903 ; X64:       # %bb.0:
904 ; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
905 ; X64-NEXT:    vcvthf82ph %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7f,0x89,0x1e,0xc0]
906 ; X64-NEXT:    retq # encoding: [0xc3]
908 ; X86-LABEL: test_int_x86_avx10_maskz_vcvthf82ph128:
909 ; X86:       # %bb.0:
910 ; X86-NEXT:    kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
911 ; X86-NEXT:    vcvthf82ph %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7f,0x89,0x1e,0xc0]
912 ; X86-NEXT:    retl # encoding: [0xc3]
913   %ret = call <8 x half> @llvm.x86.avx10.mask.vcvthf82ph128(<16 x i8> %A, <8 x half> zeroinitializer, i8 %B)
914   ret <8 x half> %ret
917 define <16 x half> @test_int_x86_avx10_vcvthf82ph256(<16 x i8> %A) nounwind {
918 ; CHECK-LABEL: test_int_x86_avx10_vcvthf82ph256:
919 ; CHECK:       # %bb.0:
920 ; CHECK-NEXT:    vcvthf82ph %xmm0, %ymm0 # encoding: [0x62,0xf5,0x7f,0x28,0x1e,0xc0]
921 ; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]
922   %ret = call <16 x half> @llvm.x86.avx10.mask.vcvthf82ph256(<16 x i8> %A, <16 x half> undef, i16 -1)
923   ret <16 x half> %ret
926 define <16 x half> @test_int_x86_avx10_mask_vcvthf82ph256(<16 x i8> %A, <16 x half> %B, i16 %C) nounwind {
927 ; X64-LABEL: test_int_x86_avx10_mask_vcvthf82ph256:
928 ; X64:       # %bb.0:
929 ; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
930 ; X64-NEXT:    vcvthf82ph %xmm0, %ymm1 {%k1} # encoding: [0x62,0xf5,0x7f,0x29,0x1e,0xc8]
931 ; X64-NEXT:    vmovdqa %ymm1, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfd,0x6f,0xc1]
932 ; X64-NEXT:    retq # encoding: [0xc3]
934 ; X86-LABEL: test_int_x86_avx10_mask_vcvthf82ph256:
935 ; X86:       # %bb.0:
936 ; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]
937 ; X86-NEXT:    vcvthf82ph %xmm0, %ymm1 {%k1} # encoding: [0x62,0xf5,0x7f,0x29,0x1e,0xc8]
938 ; X86-NEXT:    vmovdqa %ymm1, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfd,0x6f,0xc1]
939 ; X86-NEXT:    retl # encoding: [0xc3]
940   %ret = call <16 x half> @llvm.x86.avx10.mask.vcvthf82ph256(<16 x i8> %A, <16 x half> %B, i16 %C)
941   ret <16 x half> %ret
944 declare <16 x half> @llvm.x86.avx10.mask.vcvthf82ph256(<16 x i8> %A, <16 x half> %B, i16 %C)
946 define <16 x half> @test_int_x86_avx10_maskz_vcvthf82ph256(<16 x i8> %A, i16 %B) nounwind {
947 ; X64-LABEL: test_int_x86_avx10_maskz_vcvthf82ph256:
948 ; X64:       # %bb.0:
949 ; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
950 ; X64-NEXT:    vcvthf82ph %xmm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x7f,0xa9,0x1e,0xc0]
951 ; X64-NEXT:    retq # encoding: [0xc3]
953 ; X86-LABEL: test_int_x86_avx10_maskz_vcvthf82ph256:
954 ; X86:       # %bb.0:
955 ; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]
956 ; X86-NEXT:    vcvthf82ph %xmm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x7f,0xa9,0x1e,0xc0]
957 ; X86-NEXT:    retl # encoding: [0xc3]
958   %ret = call <16 x half> @llvm.x86.avx10.mask.vcvthf82ph256(<16 x i8> %A, <16 x half> zeroinitializer, i16 %B)
959   ret <16 x half> %ret
962 define <16 x i8> @test_int_x86_avx10_vcvtneph2bf8128(<8 x half> %A) nounwind {
963 ; CHECK-LABEL: test_int_x86_avx10_vcvtneph2bf8128:
964 ; CHECK:       # %bb.0:
965 ; CHECK-NEXT:    vcvtneph2bf8 %xmm0, %xmm0 # encoding: [0x62,0xf2,0x7e,0x08,0x74,0xc0]
966 ; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]
967   %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtneph2bf8128(<8 x half> %A, <16 x i8> undef, i8 -1)
968   ret <16 x i8> %ret
971 define <16 x i8> @test_int_x86_avx10_mask_vcvtneph2bf8128(<16 x i8> %B, <8 x half> %A, i8 %C) nounwind {
972 ; X64-LABEL: test_int_x86_avx10_mask_vcvtneph2bf8128:
973 ; X64:       # %bb.0:
974 ; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
975 ; X64-NEXT:    vcvtneph2bf8 %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf2,0x7e,0x09,0x74,0xc1]
976 ; X64-NEXT:    retq # encoding: [0xc3]
978 ; X86-LABEL: test_int_x86_avx10_mask_vcvtneph2bf8128:
979 ; X86:       # %bb.0:
980 ; X86-NEXT:    kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
981 ; X86-NEXT:    vcvtneph2bf8 %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf2,0x7e,0x09,0x74,0xc1]
982 ; X86-NEXT:    retl # encoding: [0xc3]
983   %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtneph2bf8128(<8 x half> %A, <16 x i8> %B, i8 %C)
984   ret <16 x i8> %ret
987 declare <16 x i8> @llvm.x86.avx10.mask.vcvtneph2bf8128(<8 x half> %A, <16 x i8> %B, i8 %C)
989 define <16 x i8> @test_int_x86_avx10_maskz_vcvtneph2bf8128(<8 x half> %A, i8 %B) nounwind {
990 ; X64-LABEL: test_int_x86_avx10_maskz_vcvtneph2bf8128:
991 ; X64:       # %bb.0:
992 ; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
993 ; X64-NEXT:    vcvtneph2bf8 %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf2,0x7e,0x89,0x74,0xc0]
994 ; X64-NEXT:    retq # encoding: [0xc3]
996 ; X86-LABEL: test_int_x86_avx10_maskz_vcvtneph2bf8128:
997 ; X86:       # %bb.0:
998 ; X86-NEXT:    kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
999 ; X86-NEXT:    vcvtneph2bf8 %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf2,0x7e,0x89,0x74,0xc0]
1000 ; X86-NEXT:    retl # encoding: [0xc3]
1001   %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtneph2bf8128(<8 x half> %A, <16 x i8> zeroinitializer, i8 %B)
1002   ret <16 x i8> %ret
1005 define <16 x i8> @test_int_x86_avx10_vcvtneph2bf8256(<16 x half> %A) nounwind {
1006 ; CHECK-LABEL: test_int_x86_avx10_vcvtneph2bf8256:
1007 ; CHECK:       # %bb.0:
1008 ; CHECK-NEXT:    vcvtneph2bf8 %ymm0, %xmm0 # encoding: [0x62,0xf2,0x7e,0x28,0x74,0xc0]
1009 ; CHECK-NEXT:    vzeroupper # encoding: [0xc5,0xf8,0x77]
1010 ; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]
1011   %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtneph2bf8256(<16 x half> %A, <16 x i8> undef, i16 -1)
1012   ret <16 x i8> %ret
1015 define <16 x i8> @test_int_x86_avx10_mask_vcvtneph2bf8256(<16 x i8> %B, <16 x half> %A, i16 %C) nounwind {
1016 ; X64-LABEL: test_int_x86_avx10_mask_vcvtneph2bf8256:
1017 ; X64:       # %bb.0:
1018 ; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
1019 ; X64-NEXT:    vcvtneph2bf8 %ymm1, %xmm0 {%k1} # encoding: [0x62,0xf2,0x7e,0x29,0x74,0xc1]
1020 ; X64-NEXT:    vzeroupper # encoding: [0xc5,0xf8,0x77]
1021 ; X64-NEXT:    retq # encoding: [0xc3]
1023 ; X86-LABEL: test_int_x86_avx10_mask_vcvtneph2bf8256:
1024 ; X86:       # %bb.0:
1025 ; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]
1026 ; X86-NEXT:    vcvtneph2bf8 %ymm1, %xmm0 {%k1} # encoding: [0x62,0xf2,0x7e,0x29,0x74,0xc1]
1027 ; X86-NEXT:    vzeroupper # encoding: [0xc5,0xf8,0x77]
1028 ; X86-NEXT:    retl # encoding: [0xc3]
1029   %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtneph2bf8256(<16 x half> %A, <16 x i8> %B, i16 %C)
1030   ret <16 x i8> %ret
1033 declare <16 x i8> @llvm.x86.avx10.mask.vcvtneph2bf8256(<16 x half> %A, <16 x i8> %B, i16 %C)
1035 define <16 x i8> @test_int_x86_avx10_maskz_vcvtneph2bf8256(<16 x half> %A, i16 %B) nounwind {
1036 ; X64-LABEL: test_int_x86_avx10_maskz_vcvtneph2bf8256:
1037 ; X64:       # %bb.0:
1038 ; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
1039 ; X64-NEXT:    vcvtneph2bf8 %ymm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf2,0x7e,0xa9,0x74,0xc0]
1040 ; X64-NEXT:    vzeroupper # encoding: [0xc5,0xf8,0x77]
1041 ; X64-NEXT:    retq # encoding: [0xc3]
1043 ; X86-LABEL: test_int_x86_avx10_maskz_vcvtneph2bf8256:
1044 ; X86:       # %bb.0:
1045 ; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]
1046 ; X86-NEXT:    vcvtneph2bf8 %ymm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf2,0x7e,0xa9,0x74,0xc0]
1047 ; X86-NEXT:    vzeroupper # encoding: [0xc5,0xf8,0x77]
1048 ; X86-NEXT:    retl # encoding: [0xc3]
1049   %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtneph2bf8256(<16 x half> %A, <16 x i8> zeroinitializer, i16 %B)
1050   ret <16 x i8> %ret
1053 define <16 x i8> @test_int_x86_avx10_vcvtneph2bf8s128(<8 x half> %A) nounwind {
1054 ; CHECK-LABEL: test_int_x86_avx10_vcvtneph2bf8s128:
1055 ; CHECK:       # %bb.0:
1056 ; CHECK-NEXT:    vcvtneph2bf8s %xmm0, %xmm0 # encoding: [0x62,0xf5,0x7e,0x08,0x74,0xc0]
1057 ; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]
1058   %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtneph2bf8s128(<8 x half> %A, <16 x i8> undef, i8 -1)
1059   ret <16 x i8> %ret
1062 define <16 x i8> @test_int_x86_avx10_mask_vcvtneph2bf8s128(<16 x i8> %B, <8 x half> %A, i8 %C) nounwind {
1063 ; X64-LABEL: test_int_x86_avx10_mask_vcvtneph2bf8s128:
1064 ; X64:       # %bb.0:
1065 ; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
1066 ; X64-NEXT:    vcvtneph2bf8s %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x7e,0x09,0x74,0xc1]
1067 ; X64-NEXT:    retq # encoding: [0xc3]
1069 ; X86-LABEL: test_int_x86_avx10_mask_vcvtneph2bf8s128:
1070 ; X86:       # %bb.0:
1071 ; X86-NEXT:    kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
1072 ; X86-NEXT:    vcvtneph2bf8s %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x7e,0x09,0x74,0xc1]
1073 ; X86-NEXT:    retl # encoding: [0xc3]
1074   %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtneph2bf8s128(<8 x half> %A, <16 x i8> %B, i8 %C)
1075   ret <16 x i8> %ret
1078 declare <16 x i8> @llvm.x86.avx10.mask.vcvtneph2bf8s128(<8 x half> %A, <16 x i8> %B, i8 %C)
1080 define <16 x i8> @test_int_x86_avx10_maskz_vcvtneph2bf8s128(<8 x half> %A, i8 %B) nounwind {
1081 ; X64-LABEL: test_int_x86_avx10_maskz_vcvtneph2bf8s128:
1082 ; X64:       # %bb.0:
1083 ; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
1084 ; X64-NEXT:    vcvtneph2bf8s %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7e,0x89,0x74,0xc0]
1085 ; X64-NEXT:    retq # encoding: [0xc3]
1087 ; X86-LABEL: test_int_x86_avx10_maskz_vcvtneph2bf8s128:
1088 ; X86:       # %bb.0:
1089 ; X86-NEXT:    kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
1090 ; X86-NEXT:    vcvtneph2bf8s %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7e,0x89,0x74,0xc0]
1091 ; X86-NEXT:    retl # encoding: [0xc3]
1092   %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtneph2bf8s128(<8 x half> %A, <16 x i8> zeroinitializer, i8 %B)
1093   ret <16 x i8> %ret
1096 define <16 x i8> @test_int_x86_avx10_vcvtneph2bf8s256(<16 x half> %A) nounwind {
1097 ; CHECK-LABEL: test_int_x86_avx10_vcvtneph2bf8s256:
1098 ; CHECK:       # %bb.0:
1099 ; CHECK-NEXT:    vcvtneph2bf8s %ymm0, %xmm0 # encoding: [0x62,0xf5,0x7e,0x28,0x74,0xc0]
1100 ; CHECK-NEXT:    vzeroupper # encoding: [0xc5,0xf8,0x77]
1101 ; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]
1102   %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtneph2bf8s256(<16 x half> %A, <16 x i8> undef, i16 -1)
1103   ret <16 x i8> %ret
1106 define <16 x i8> @test_int_x86_avx10_mask_vcvtneph2bf8s256(<16 x i8> %B, <16 x half> %A, i16 %C) nounwind {
1107 ; X64-LABEL: test_int_x86_avx10_mask_vcvtneph2bf8s256:
1108 ; X64:       # %bb.0:
1109 ; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
1110 ; X64-NEXT:    vcvtneph2bf8s %ymm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x7e,0x29,0x74,0xc1]
1111 ; X64-NEXT:    vzeroupper # encoding: [0xc5,0xf8,0x77]
1112 ; X64-NEXT:    retq # encoding: [0xc3]
1114 ; X86-LABEL: test_int_x86_avx10_mask_vcvtneph2bf8s256:
1115 ; X86:       # %bb.0:
1116 ; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]
1117 ; X86-NEXT:    vcvtneph2bf8s %ymm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x7e,0x29,0x74,0xc1]
1118 ; X86-NEXT:    vzeroupper # encoding: [0xc5,0xf8,0x77]
1119 ; X86-NEXT:    retl # encoding: [0xc3]
1120   %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtneph2bf8s256(<16 x half> %A, <16 x i8> %B, i16 %C)
1121   ret <16 x i8> %ret
1124 declare <16 x i8> @llvm.x86.avx10.mask.vcvtneph2bf8s256(<16 x half> %A, <16 x i8> %B, i16 %C)
1126 define <16 x i8> @test_int_x86_avx10_maskz_vcvtneph2bf8s256(<16 x half> %A, i16 %B) nounwind {
1127 ; X64-LABEL: test_int_x86_avx10_maskz_vcvtneph2bf8s256:
1128 ; X64:       # %bb.0:
1129 ; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
1130 ; X64-NEXT:    vcvtneph2bf8s %ymm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7e,0xa9,0x74,0xc0]
1131 ; X64-NEXT:    vzeroupper # encoding: [0xc5,0xf8,0x77]
1132 ; X64-NEXT:    retq # encoding: [0xc3]
1134 ; X86-LABEL: test_int_x86_avx10_maskz_vcvtneph2bf8s256:
1135 ; X86:       # %bb.0:
1136 ; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]
1137 ; X86-NEXT:    vcvtneph2bf8s %ymm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7e,0xa9,0x74,0xc0]
1138 ; X86-NEXT:    vzeroupper # encoding: [0xc5,0xf8,0x77]
1139 ; X86-NEXT:    retl # encoding: [0xc3]
1140   %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtneph2bf8s256(<16 x half> %A, <16 x i8> zeroinitializer, i16 %B)
1141   ret <16 x i8> %ret
1144 define <16 x i8> @test_int_x86_avx10_vcvtneph2hf8128(<8 x half> %A) nounwind {
1145 ; CHECK-LABEL: test_int_x86_avx10_vcvtneph2hf8128:
1146 ; CHECK:       # %bb.0:
1147 ; CHECK-NEXT:    vcvtneph2hf8 %xmm0, %xmm0 # encoding: [0x62,0xf5,0x7e,0x08,0x18,0xc0]
1148 ; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]
1149   %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtneph2hf8128(<8 x half> %A, <16 x i8> undef, i8 -1)
1150   ret <16 x i8> %ret
1153 define <16 x i8> @test_int_x86_avx10_mask_vcvtneph2hf8128(<16 x i8> %B, <8 x half> %A, i8 %C) nounwind {
1154 ; X64-LABEL: test_int_x86_avx10_mask_vcvtneph2hf8128:
1155 ; X64:       # %bb.0:
1156 ; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
1157 ; X64-NEXT:    vcvtneph2hf8 %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x7e,0x09,0x18,0xc1]
1158 ; X64-NEXT:    retq # encoding: [0xc3]
1160 ; X86-LABEL: test_int_x86_avx10_mask_vcvtneph2hf8128:
1161 ; X86:       # %bb.0:
1162 ; X86-NEXT:    kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
1163 ; X86-NEXT:    vcvtneph2hf8 %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x7e,0x09,0x18,0xc1]
1164 ; X86-NEXT:    retl # encoding: [0xc3]
1165   %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtneph2hf8128(<8 x half> %A, <16 x i8> %B, i8 %C)
1166   ret <16 x i8> %ret
1169 declare <16 x i8> @llvm.x86.avx10.mask.vcvtneph2hf8128(<8 x half> %A, <16 x i8> %B, i8 %C)
1171 define <16 x i8> @test_int_x86_avx10_maskz_vcvtneph2hf8128(<8 x half> %A, i8 %B) nounwind {
1172 ; X64-LABEL: test_int_x86_avx10_maskz_vcvtneph2hf8128:
1173 ; X64:       # %bb.0:
1174 ; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
1175 ; X64-NEXT:    vcvtneph2hf8 %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7e,0x89,0x18,0xc0]
1176 ; X64-NEXT:    retq # encoding: [0xc3]
1178 ; X86-LABEL: test_int_x86_avx10_maskz_vcvtneph2hf8128:
1179 ; X86:       # %bb.0:
1180 ; X86-NEXT:    kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
1181 ; X86-NEXT:    vcvtneph2hf8 %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7e,0x89,0x18,0xc0]
1182 ; X86-NEXT:    retl # encoding: [0xc3]
1183   %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtneph2hf8128(<8 x half> %A, <16 x i8> zeroinitializer, i8 %B)
1184   ret <16 x i8> %ret
1187 define <16 x i8> @test_int_x86_avx10_vcvtneph2hf8256(<16 x half> %A) nounwind {
1188 ; CHECK-LABEL: test_int_x86_avx10_vcvtneph2hf8256:
1189 ; CHECK:       # %bb.0:
1190 ; CHECK-NEXT:    vcvtneph2hf8 %ymm0, %xmm0 # encoding: [0x62,0xf5,0x7e,0x28,0x18,0xc0]
1191 ; CHECK-NEXT:    vzeroupper # encoding: [0xc5,0xf8,0x77]
1192 ; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]
1193   %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtneph2hf8256(<16 x half> %A, <16 x i8> undef, i16 -1)
1194   ret <16 x i8> %ret
1197 define <16 x i8> @test_int_x86_avx10_mask_vcvtneph2hf8256(<16 x i8> %B, <16 x half> %A, i16 %C) nounwind {
1198 ; X64-LABEL: test_int_x86_avx10_mask_vcvtneph2hf8256:
1199 ; X64:       # %bb.0:
1200 ; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
1201 ; X64-NEXT:    vcvtneph2hf8 %ymm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x7e,0x29,0x18,0xc1]
1202 ; X64-NEXT:    vzeroupper # encoding: [0xc5,0xf8,0x77]
1203 ; X64-NEXT:    retq # encoding: [0xc3]
1205 ; X86-LABEL: test_int_x86_avx10_mask_vcvtneph2hf8256:
1206 ; X86:       # %bb.0:
1207 ; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]
1208 ; X86-NEXT:    vcvtneph2hf8 %ymm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x7e,0x29,0x18,0xc1]
1209 ; X86-NEXT:    vzeroupper # encoding: [0xc5,0xf8,0x77]
1210 ; X86-NEXT:    retl # encoding: [0xc3]
1211   %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtneph2hf8256(<16 x half> %A, <16 x i8> %B, i16 %C)
1212   ret <16 x i8> %ret
1215 declare <16 x i8> @llvm.x86.avx10.mask.vcvtneph2hf8256(<16 x half> %A, <16 x i8> %B, i16 %C)
1217 define <16 x i8> @test_int_x86_avx10_maskz_vcvtneph2hf8256(<16 x half> %A, i16 %B) nounwind {
1218 ; X64-LABEL: test_int_x86_avx10_maskz_vcvtneph2hf8256:
1219 ; X64:       # %bb.0:
1220 ; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
1221 ; X64-NEXT:    vcvtneph2hf8 %ymm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7e,0xa9,0x18,0xc0]
1222 ; X64-NEXT:    vzeroupper # encoding: [0xc5,0xf8,0x77]
1223 ; X64-NEXT:    retq # encoding: [0xc3]
1225 ; X86-LABEL: test_int_x86_avx10_maskz_vcvtneph2hf8256:
1226 ; X86:       # %bb.0:
1227 ; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]
1228 ; X86-NEXT:    vcvtneph2hf8 %ymm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7e,0xa9,0x18,0xc0]
1229 ; X86-NEXT:    vzeroupper # encoding: [0xc5,0xf8,0x77]
1230 ; X86-NEXT:    retl # encoding: [0xc3]
1231   %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtneph2hf8256(<16 x half> %A, <16 x i8> zeroinitializer, i16 %B)
1232   ret <16 x i8> %ret
1235 define <16 x i8> @test_int_x86_avx10_vcvtneph2hf8s128(<8 x half> %A) nounwind {
1236 ; CHECK-LABEL: test_int_x86_avx10_vcvtneph2hf8s128:
1237 ; CHECK:       # %bb.0:
1238 ; CHECK-NEXT:    vcvtneph2hf8s %xmm0, %xmm0 # encoding: [0x62,0xf5,0x7e,0x08,0x1b,0xc0]
1239 ; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]
1240   %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtneph2hf8s128(<8 x half> %A, <16 x i8> undef, i8 -1)
1241   ret <16 x i8> %ret
1244 define <16 x i8> @test_int_x86_avx10_mask_vcvtneph2hf8s128(<16 x i8> %B, <8 x half> %A, i8 %C) nounwind {
1245 ; X64-LABEL: test_int_x86_avx10_mask_vcvtneph2hf8s128:
1246 ; X64:       # %bb.0:
1247 ; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
1248 ; X64-NEXT:    vcvtneph2hf8s %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x7e,0x09,0x1b,0xc1]
1249 ; X64-NEXT:    retq # encoding: [0xc3]
1251 ; X86-LABEL: test_int_x86_avx10_mask_vcvtneph2hf8s128:
1252 ; X86:       # %bb.0:
1253 ; X86-NEXT:    kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
1254 ; X86-NEXT:    vcvtneph2hf8s %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x7e,0x09,0x1b,0xc1]
1255 ; X86-NEXT:    retl # encoding: [0xc3]
1256   %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtneph2hf8s128(<8 x half> %A, <16 x i8> %B, i8 %C)
1257   ret <16 x i8> %ret
1260 declare <16 x i8> @llvm.x86.avx10.mask.vcvtneph2hf8s128(<8 x half> %A, <16 x i8> %B, i8 %C)
1262 define <16 x i8> @test_int_x86_avx10_maskz_vcvtneph2hf8s128(<8 x half> %A, i8 %B) nounwind {
1263 ; X64-LABEL: test_int_x86_avx10_maskz_vcvtneph2hf8s128:
1264 ; X64:       # %bb.0:
1265 ; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
1266 ; X64-NEXT:    vcvtneph2hf8s %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7e,0x89,0x1b,0xc0]
1267 ; X64-NEXT:    retq # encoding: [0xc3]
1269 ; X86-LABEL: test_int_x86_avx10_maskz_vcvtneph2hf8s128:
1270 ; X86:       # %bb.0:
1271 ; X86-NEXT:    kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
1272 ; X86-NEXT:    vcvtneph2hf8s %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7e,0x89,0x1b,0xc0]
1273 ; X86-NEXT:    retl # encoding: [0xc3]
1274   %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtneph2hf8s128(<8 x half> %A, <16 x i8> zeroinitializer, i8 %B)
1275   ret <16 x i8> %ret
1278 define <16 x i8> @test_int_x86_avx10_vcvtneph2hf8s256(<16 x half> %A) nounwind {
1279 ; CHECK-LABEL: test_int_x86_avx10_vcvtneph2hf8s256:
1280 ; CHECK:       # %bb.0:
1281 ; CHECK-NEXT:    vcvtneph2hf8s %ymm0, %xmm0 # encoding: [0x62,0xf5,0x7e,0x28,0x1b,0xc0]
1282 ; CHECK-NEXT:    vzeroupper # encoding: [0xc5,0xf8,0x77]
1283 ; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]
1284   %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtneph2hf8s256(<16 x half> %A, <16 x i8> undef, i16 -1)
1285   ret <16 x i8> %ret
1288 define <16 x i8> @test_int_x86_avx10_mask_vcvtneph2hf8s256(<16 x i8> %B, <16 x half> %A, i16 %C) nounwind {
1289 ; X64-LABEL: test_int_x86_avx10_mask_vcvtneph2hf8s256:
1290 ; X64:       # %bb.0:
1291 ; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
1292 ; X64-NEXT:    vcvtneph2hf8s %ymm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x7e,0x29,0x1b,0xc1]
1293 ; X64-NEXT:    vzeroupper # encoding: [0xc5,0xf8,0x77]
1294 ; X64-NEXT:    retq # encoding: [0xc3]
1296 ; X86-LABEL: test_int_x86_avx10_mask_vcvtneph2hf8s256:
1297 ; X86:       # %bb.0:
1298 ; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]
1299 ; X86-NEXT:    vcvtneph2hf8s %ymm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x7e,0x29,0x1b,0xc1]
1300 ; X86-NEXT:    vzeroupper # encoding: [0xc5,0xf8,0x77]
1301 ; X86-NEXT:    retl # encoding: [0xc3]
1302   %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtneph2hf8s256(<16 x half> %A, <16 x i8> %B, i16 %C)
1303   ret <16 x i8> %ret
1306 declare <16 x i8> @llvm.x86.avx10.mask.vcvtneph2hf8s256(<16 x half> %A, <16 x i8> %B, i16 %C)
1308 define <16 x i8> @test_int_x86_avx10_maskz_vcvtneph2hf8s256(<16 x half> %A, i16 %B) nounwind {
1309 ; X64-LABEL: test_int_x86_avx10_maskz_vcvtneph2hf8s256:
1310 ; X64:       # %bb.0:
1311 ; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
1312 ; X64-NEXT:    vcvtneph2hf8s %ymm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7e,0xa9,0x1b,0xc0]
1313 ; X64-NEXT:    vzeroupper # encoding: [0xc5,0xf8,0x77]
1314 ; X64-NEXT:    retq # encoding: [0xc3]
1316 ; X86-LABEL: test_int_x86_avx10_maskz_vcvtneph2hf8s256:
1317 ; X86:       # %bb.0:
1318 ; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]
1319 ; X86-NEXT:    vcvtneph2hf8s %ymm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7e,0xa9,0x1b,0xc0]
1320 ; X86-NEXT:    vzeroupper # encoding: [0xc5,0xf8,0x77]
1321 ; X86-NEXT:    retl # encoding: [0xc3]
1322   %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtneph2hf8s256(<16 x half> %A, <16 x i8> zeroinitializer, i16 %B)
1323   ret <16 x i8> %ret