1 | // RUN: %clang_cc1 %s -O0 -triple=x86_64-apple-darwin -target-cpu skylake-avx512 -emit-llvm -o - -Wall -Werror |opt -instnamer -S |FileCheck %s |
2 | // This test checks validity of att\gcc style inline assmebly for avx512 k and Yk constraints. |
3 | // Also checks mask register allows flexible type (size <= 64 bit) |
4 | |
5 | void mask_Yk_i8(char msk){ |
6 | //CHECK: vpaddb\09 %xmm1, %xmm0, %xmm1 {$0}\09 |
7 | asm ("vpaddb\t %%xmm1, %%xmm0, %%xmm1 %{%0%}\t" |
8 | : //output |
9 | : "Yk" (msk)); //inputs |
10 | } |
11 | |
12 | void mask_Yk_i16(short msk){ |
13 | //CHECK: vpaddb\09 %xmm1, %xmm0, %xmm1 {$0}\09 |
14 | asm ("vpaddb\t %%xmm1, %%xmm0, %%xmm1 %{%0%}\t" |
15 | : //output |
16 | : "Yk" (msk)); //inputs |
17 | } |
18 | |
19 | void mask_Yk_i32(int msk){ |
20 | //CHECK: vpaddb\09 %xmm1, %xmm0, %xmm1 {$0}\09 |
21 | asm ("vpaddb\t %%xmm1, %%xmm0, %%xmm1 %{%0%}\t" |
22 | : //output |
23 | : "Yk" (msk)); //inputs |
24 | } |
25 | |
26 | void mask_Yk_i64(long long msk){ |
27 | //CHECK: vpaddb\09 %xmm1, %xmm0, %xmm1 {$0}\09 |
28 | asm ("vpaddb\t %%xmm1, %%xmm0, %%xmm1 %{%0%}\t" |
29 | : //output |
30 | : "Yk" (msk)); //inputs |
31 | } |
32 | |
33 | void k_wise_op_i8(char msk_dst,char msk_src1,char msk_src2){ |
34 | //CHECK: kandw\09$2, $1, $0 |
35 | asm ("kandw\t%2, %1, %0" |
36 | : "=k" (msk_dst) |
37 | : "k" (msk_src1), "k" (msk_src2)); |
38 | } |
39 | |
40 | void k_wise_op_i16(short msk_dst, short msk_src1, short msk_src2){ |
41 | //CHECK: kandw\09$2, $1, $0 |
42 | asm ("kandw\t%2, %1, %0" |
43 | : "=k" (msk_dst) |
44 | : "k" (msk_src1), "k" (msk_src2)); |
45 | } |
46 | |
47 | void k_wise_op_i32(int msk_dst, int msk_src1, int msk_src2){ |
48 | //CHECK: kandw\09$2, $1, $0 |
49 | asm ("kandw\t%2, %1, %0" |
50 | : "=k" (msk_dst) |
51 | : "k" (msk_src1), "k" (msk_src2)); |
52 | } |
53 | |
54 | void k_wise_op_i64(long long msk_dst, long long msk_src1, long long msk_src2){ |
55 | //CHECK: kandw\09$2, $1, $0 |
56 | asm ("kandw\t%2, %1, %0" |
57 | : "=k" (msk_dst) |
58 | : "k" (msk_src1), "k" (msk_src2)); |
59 | } |
60 | |