Fix AVX512 vector sqrt assembly strings.
[oota-llvm.git] / test / CodeGen / X86 / pr15267.ll
1 ; RUN: llc < %s -mtriple=x86_64-pc-linux -mcpu=corei7-avx | FileCheck %s
2
3 define <4 x i3> @test1(<4 x i3>* %in) nounwind {
4   %ret = load <4 x i3>* %in, align 1
5   ret <4 x i3> %ret
6 }
7
8 ; CHECK: test1
9 ; CHECK: movzwl
10 ; CHECK: shrl $3
11 ; CHECK: andl $7
12 ; CHECK: andl $7
13 ; CHECK: vmovd
14 ; CHECK: pinsrd $1
15 ; CHECK: shrl $6
16 ; CHECK: andl $7
17 ; CHECK: pinsrd $2
18 ; CHECK: shrl $9
19 ; CHECK: andl $7
20 ; CHECK: pinsrd $3
21 ; CHECK: ret
22
23 define <4 x i1> @test2(<4 x i1>* %in) nounwind {
24   %ret = load <4 x i1>* %in, align 1
25   ret <4 x i1> %ret
26 }
27
28 ; CHECK: test2
29 ; CHECK: movzbl
30 ; CHECK: shrl
31 ; CHECK: andl $1
32 ; CHECK: andl $1
33 ; CHECK: vmovd
34 ; CHECK: pinsrd $1
35 ; CHECK: shrl $2
36 ; CHECK: andl $1
37 ; CHECK: pinsrd $2
38 ; CHECK: shrl $3
39 ; CHECK: andl $1
40 ; CHECK: pinsrd $3
41 ; CHECK: ret
42
43 define <4 x i64> @test3(<4 x i1>* %in) nounwind {
44   %wide.load35 = load <4 x i1>* %in, align 1
45   %sext = sext <4 x i1> %wide.load35 to <4 x i64>
46   ret <4 x i64> %sext
47 }
48
49 ; CHECK: test3
50 ; CHECK: movzbl
51 ; CHECK: shrl
52 ; CHECK: andl $1
53 ; CHECK: andl $1
54 ; CHECK: vmovd
55 ; CHECK: pinsrd $1
56 ; CHECK: shrl $2
57 ; CHECK: andl $1
58 ; CHECK: pinsrd $2
59 ; CHECK: shrl $3
60 ; CHECK: andl $1
61 ; CHECK: pinsrd $3
62 ; CHECK: pslld
63 ; CHECK: psrad
64 ; CHECK: pmovsxdq
65 ; CHECK: pmovsxdq
66 ; CHECK: ret