[x86] fix assert with horizontal math + broadcast of vector (PR43402)
[llvm-core.git] / test / CodeGen / X86 / inline-asm-avx512f-v-constraint.ll
blob019973ba935b77b23b1891ceb2aa4eedae834187
1 ; RUN: llc < %s -mtriple x86_64-unknown-linux-gnu -mattr +avx512f | FileCheck %s
3 define <16 x float> @testzmm_1(<16 x float> %_zmm0, <16 x float> %_zmm1) {
4 entry:
5 ; CHECK: vpternlogd  $0, %zmm1, %zmm0, %zmm0
6   %0 = tail call <16 x float> asm "vpternlogd $$0, $1, $2, $0", "=v,v,v,~{dirflag},~{fpsr},~{flags}"(<16 x float> %_zmm1, <16 x float> %_zmm0)
7   ret <16 x float> %0
10 define <16 x float> @testzmm_2(<16 x float> %_zmm0, <16 x float> %_zmm1) {
11 entry:
12 ; CHECK: vpabsq  %zmm1, %zmm0
13   %0 = tail call <16 x float> asm "vpabsq $1, $0", "=v,v,~{dirflag},~{fpsr},~{flags}"(<16 x float> %_zmm1)
14   ret <16 x float> %0
18 define <16 x float> @testzmm_3(<16 x float> %_zmm0, <16 x float> %_zmm1) {
19 entry:
20 ; CHECK: vpaddd  %zmm1, %zmm1, %zmm0
21   %0 = tail call <16 x float> asm "vpaddd $1, $2, $0", "=v,v,v,~{dirflag},~{fpsr},~{flags}"(<16 x float> %_zmm1, <16 x float> %_zmm1)
22   ret <16 x float> %0
26 define <16 x float> @testzmm_4(<16 x float> %_zmm0, <16 x float> %_zmm1) {
27 entry:
28 ; CHECK: vpaddq  %zmm1, %zmm1, %zmm0
29   %0 = tail call <16 x float> asm "vpaddq $1, $2, $0", "=v,v,v,~{dirflag},~{fpsr},~{flags}"(<16 x float> %_zmm1, <16 x float> %_zmm1)
30   ret <16 x float> %0
34 define <16 x float> @testzmm_5(<16 x float> %_zmm0, <16 x float> %_zmm1) {
35 entry:
36 ; CHECK: vpandd  %zmm1, %zmm1, %zmm0
37   %0 = tail call <16 x float> asm "vpandd $1, $2, $0", "=v,v,v,~{dirflag},~{fpsr},~{flags}"(<16 x float> %_zmm1, <16 x float> %_zmm1)
38   ret <16 x float> %0
42 define <16 x float> @testzmm_6(<16 x float> %_zmm0, <16 x float> %_zmm1) {
43 entry:
44 ; CHECK: vpandnd %zmm1, %zmm1, %zmm0
45   %0 = tail call <16 x float> asm "vpandnd $1, $2, $0", "=v,v,v,~{dirflag},~{fpsr},~{flags}"(<16 x float> %_zmm1, <16 x float> %_zmm1)
46   ret <16 x float> %0
50 define <16 x float> @testzmm_7(<16 x float> %_zmm0, <16 x float> %_zmm1) {
51 entry:
52 ; CHECK: vpmaxsd %zmm1, %zmm1, %zmm0
53   %0 = tail call <16 x float> asm "vpmaxsd $1, $2, $0", "=v,v,v,~{dirflag},~{fpsr},~{flags}"(<16 x float> %_zmm1, <16 x float> %_zmm1)
54   ret <16 x float> %0
58 define <16 x float> @testzmm_8(<16 x float> %_zmm0, <16 x float> %_zmm1) {
59 entry:
60 ; CHECK: vmovups %zmm1, %zmm0
61   %0 = tail call <16 x float> asm "vmovups $1, $0", "=v,v,~{dirflag},~{fpsr},~{flags}"(<16 x float> %_zmm1)
62   ret <16 x float> %0
66 define <16 x float> @testzmm_9(<16 x float> %_zmm0, <16 x float> %_zmm1) {
67 entry:
68 ; CHECK: vmovupd %zmm1, %zmm0
69   %0 = tail call <16 x float> asm "vmovupd $1, $0", "=v,v,~{dirflag},~{fpsr},~{flags}"(<16 x float> %_zmm1)
70   ret <16 x float> %0