• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f,+avx512bw,+avx512vl,+avx512dq -O2 | FileCheck %s --check-prefix=AVX512-ALL
3; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f -O2| FileCheck %s --check-prefix=AVX512-ONLY
4
5define void @load_v1i2_trunc_v1i1_store(<1 x i2>* %a0,<1 x i1>* %a1) {
6; AVX512-ALL-LABEL: load_v1i2_trunc_v1i1_store:
7; AVX512-ALL:       # %bb.0:
8; AVX512-ALL-NEXT:    movb (%rdi), %al
9; AVX512-ALL-NEXT:    movb %al, (%rsi)
10; AVX512-ALL-NEXT:    retq
11;
12; AVX512-ONLY-LABEL: load_v1i2_trunc_v1i1_store:
13; AVX512-ONLY:       # %bb.0:
14; AVX512-ONLY-NEXT:    movb (%rdi), %al
15; AVX512-ONLY-NEXT:    movb %al, (%rsi)
16; AVX512-ONLY-NEXT:    retq
17    %d0 = load <1 x i2>, <1 x i2>* %a0
18    %d1 = trunc <1 x i2> %d0 to <1 x i1>
19    store <1 x i1> %d1, <1 x i1>* %a1
20    ret void
21}
22define void @load_v1i3_trunc_v1i1_store(<1 x i3>* %a0,<1 x i1>* %a1) {
23; AVX512-ALL-LABEL: load_v1i3_trunc_v1i1_store:
24; AVX512-ALL:       # %bb.0:
25; AVX512-ALL-NEXT:    movb (%rdi), %al
26; AVX512-ALL-NEXT:    movb %al, (%rsi)
27; AVX512-ALL-NEXT:    retq
28;
29; AVX512-ONLY-LABEL: load_v1i3_trunc_v1i1_store:
30; AVX512-ONLY:       # %bb.0:
31; AVX512-ONLY-NEXT:    movb (%rdi), %al
32; AVX512-ONLY-NEXT:    movb %al, (%rsi)
33; AVX512-ONLY-NEXT:    retq
34    %d0 = load <1 x i3>, <1 x i3>* %a0
35    %d1 = trunc <1 x i3> %d0 to <1 x i1>
36    store <1 x i1> %d1, <1 x i1>* %a1
37    ret void
38}
39define void @load_v1i4_trunc_v1i1_store(<1 x i4>* %a0,<1 x i1>* %a1) {
40; AVX512-ALL-LABEL: load_v1i4_trunc_v1i1_store:
41; AVX512-ALL:       # %bb.0:
42; AVX512-ALL-NEXT:    movb (%rdi), %al
43; AVX512-ALL-NEXT:    movb %al, (%rsi)
44; AVX512-ALL-NEXT:    retq
45;
46; AVX512-ONLY-LABEL: load_v1i4_trunc_v1i1_store:
47; AVX512-ONLY:       # %bb.0:
48; AVX512-ONLY-NEXT:    movb (%rdi), %al
49; AVX512-ONLY-NEXT:    movb %al, (%rsi)
50; AVX512-ONLY-NEXT:    retq
51    %d0 = load <1 x i4>, <1 x i4>* %a0
52    %d1 = trunc <1 x i4> %d0 to <1 x i1>
53    store <1 x i1> %d1, <1 x i1>* %a1
54    ret void
55}
56define void @load_v1i8_trunc_v1i1_store(<1 x i8>* %a0,<1 x i1>* %a1) {
57; AVX512-ALL-LABEL: load_v1i8_trunc_v1i1_store:
58; AVX512-ALL:       # %bb.0:
59; AVX512-ALL-NEXT:    movb (%rdi), %al
60; AVX512-ALL-NEXT:    movb %al, (%rsi)
61; AVX512-ALL-NEXT:    retq
62;
63; AVX512-ONLY-LABEL: load_v1i8_trunc_v1i1_store:
64; AVX512-ONLY:       # %bb.0:
65; AVX512-ONLY-NEXT:    movb (%rdi), %al
66; AVX512-ONLY-NEXT:    movb %al, (%rsi)
67; AVX512-ONLY-NEXT:    retq
68    %d0 = load <1 x i8>, <1 x i8>* %a0
69    %d1 = trunc <1 x i8> %d0 to <1 x i1>
70    store <1 x i1> %d1, <1 x i1>* %a1
71    ret void
72}
73define void @load_v1i16_trunc_v1i1_store(<1 x i16>* %a0,<1 x i1>* %a1) {
74; AVX512-ALL-LABEL: load_v1i16_trunc_v1i1_store:
75; AVX512-ALL:       # %bb.0:
76; AVX512-ALL-NEXT:    movb (%rdi), %al
77; AVX512-ALL-NEXT:    movb %al, (%rsi)
78; AVX512-ALL-NEXT:    retq
79;
80; AVX512-ONLY-LABEL: load_v1i16_trunc_v1i1_store:
81; AVX512-ONLY:       # %bb.0:
82; AVX512-ONLY-NEXT:    movb (%rdi), %al
83; AVX512-ONLY-NEXT:    movb %al, (%rsi)
84; AVX512-ONLY-NEXT:    retq
85    %d0 = load <1 x i16>, <1 x i16>* %a0
86    %d1 = trunc <1 x i16> %d0 to <1 x i1>
87    store <1 x i1> %d1, <1 x i1>* %a1
88    ret void
89}
90define void @load_v1i32_trunc_v1i1_store(<1 x i32>* %a0,<1 x i1>* %a1) {
91; AVX512-ALL-LABEL: load_v1i32_trunc_v1i1_store:
92; AVX512-ALL:       # %bb.0:
93; AVX512-ALL-NEXT:    movb (%rdi), %al
94; AVX512-ALL-NEXT:    movb %al, (%rsi)
95; AVX512-ALL-NEXT:    retq
96;
97; AVX512-ONLY-LABEL: load_v1i32_trunc_v1i1_store:
98; AVX512-ONLY:       # %bb.0:
99; AVX512-ONLY-NEXT:    movb (%rdi), %al
100; AVX512-ONLY-NEXT:    movb %al, (%rsi)
101; AVX512-ONLY-NEXT:    retq
102    %d0 = load <1 x i32>, <1 x i32>* %a0
103    %d1 = trunc <1 x i32> %d0 to <1 x i1>
104    store <1 x i1> %d1, <1 x i1>* %a1
105    ret void
106}
107define void @load_v1i64_trunc_v1i1_store(<1 x i64>* %a0,<1 x i1>* %a1) {
108; AVX512-ALL-LABEL: load_v1i64_trunc_v1i1_store:
109; AVX512-ALL:       # %bb.0:
110; AVX512-ALL-NEXT:    movb (%rdi), %al
111; AVX512-ALL-NEXT:    movb %al, (%rsi)
112; AVX512-ALL-NEXT:    retq
113;
114; AVX512-ONLY-LABEL: load_v1i64_trunc_v1i1_store:
115; AVX512-ONLY:       # %bb.0:
116; AVX512-ONLY-NEXT:    movb (%rdi), %al
117; AVX512-ONLY-NEXT:    movb %al, (%rsi)
118; AVX512-ONLY-NEXT:    retq
119    %d0 = load <1 x i64>, <1 x i64>* %a0
120    %d1 = trunc <1 x i64> %d0 to <1 x i1>
121    store <1 x i1> %d1, <1 x i1>* %a1
122    ret void
123}
124
125