blob: a155f71f79c370e052789c81fae5305a70c2afb2 [file] [log] [blame]
Simon Pilgrimec933342017-04-28 11:53:08 +00001; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=avx | FileCheck %s --check-prefix=X86
3; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=avx | FileCheck %s --check-prefix=X64
4
5define <4 x double> @cmp4f64_domain(<4 x double> %a) {
6; X86-LABEL: cmp4f64_domain:
7; X86: # BB#0:
8; X86-NEXT: vpcmpeqd %xmm1, %xmm1, %xmm1
9; X86-NEXT: vinsertf128 $1, %xmm1, %ymm1, %ymm1
10; X86-NEXT: vaddpd %ymm1, %ymm0, %ymm0
11; X86-NEXT: retl
12;
13; X64-LABEL: cmp4f64_domain:
14; X64: # BB#0:
15; X64-NEXT: vpcmpeqd %xmm1, %xmm1, %xmm1
16; X64-NEXT: vinsertf128 $1, %xmm1, %ymm1, %ymm1
17; X64-NEXT: vaddpd %ymm1, %ymm0, %ymm0
18; X64-NEXT: retq
19 %cmp = fcmp oeq <4 x double> zeroinitializer, zeroinitializer
20 %sext = sext <4 x i1> %cmp to <4 x i64>
21 %mask = bitcast <4 x i64> %sext to <4 x double>
22 %add = fadd <4 x double> %a, %mask
23 ret <4 x double> %add
24}
25
26define <4 x double> @cmp4f64_domain_optsize(<4 x double> %a) optsize {
27; X86-LABEL: cmp4f64_domain_optsize:
28; X86: # BB#0:
29; X86-NEXT: vpcmpeqd %xmm1, %xmm1, %xmm1
30; X86-NEXT: vinsertf128 $1, %xmm1, %ymm1, %ymm1
31; X86-NEXT: vaddpd %ymm1, %ymm0, %ymm0
32; X86-NEXT: retl
33;
34; X64-LABEL: cmp4f64_domain_optsize:
35; X64: # BB#0:
36; X64-NEXT: vpcmpeqd %xmm1, %xmm1, %xmm1
37; X64-NEXT: vinsertf128 $1, %xmm1, %ymm1, %ymm1
38; X64-NEXT: vaddpd %ymm1, %ymm0, %ymm0
39; X64-NEXT: retq
40 %cmp = fcmp oeq <4 x double> zeroinitializer, zeroinitializer
41 %sext = sext <4 x i1> %cmp to <4 x i64>
42 %mask = bitcast <4 x i64> %sext to <4 x double>
43 %add = fadd <4 x double> %a, %mask
44 ret <4 x double> %add
45}
46
47define <8 x float> @cmp8f32_domain(<8 x float> %a) {
48; X86-LABEL: cmp8f32_domain:
49; X86: # BB#0:
50; X86-NEXT: vpcmpeqd %xmm1, %xmm1, %xmm1
51; X86-NEXT: vinsertf128 $1, %xmm1, %ymm1, %ymm1
52; X86-NEXT: vaddps %ymm1, %ymm0, %ymm0
53; X86-NEXT: retl
54;
55; X64-LABEL: cmp8f32_domain:
56; X64: # BB#0:
57; X64-NEXT: vpcmpeqd %xmm1, %xmm1, %xmm1
58; X64-NEXT: vinsertf128 $1, %xmm1, %ymm1, %ymm1
59; X64-NEXT: vaddps %ymm1, %ymm0, %ymm0
60; X64-NEXT: retq
61 %cmp = fcmp oeq <8 x float> zeroinitializer, zeroinitializer
62 %sext = sext <8 x i1> %cmp to <8 x i32>
63 %mask = bitcast <8 x i32> %sext to <8 x float>
64 %add = fadd <8 x float> %a, %mask
65 ret <8 x float> %add
66}
67
68define <8 x float> @cmp8f32_domain_optsize(<8 x float> %a) optsize {
69; X86-LABEL: cmp8f32_domain_optsize:
70; X86: # BB#0:
71; X86-NEXT: vpcmpeqd %xmm1, %xmm1, %xmm1
72; X86-NEXT: vinsertf128 $1, %xmm1, %ymm1, %ymm1
73; X86-NEXT: vaddps %ymm1, %ymm0, %ymm0
74; X86-NEXT: retl
75;
76; X64-LABEL: cmp8f32_domain_optsize:
77; X64: # BB#0:
78; X64-NEXT: vpcmpeqd %xmm1, %xmm1, %xmm1
79; X64-NEXT: vinsertf128 $1, %xmm1, %ymm1, %ymm1
80; X64-NEXT: vaddps %ymm1, %ymm0, %ymm0
81; X64-NEXT: retq
82 %cmp = fcmp oeq <8 x float> zeroinitializer, zeroinitializer
83 %sext = sext <8 x i1> %cmp to <8 x i32>
84 %mask = bitcast <8 x i32> %sext to <8 x float>
85 %add = fadd <8 x float> %a, %mask
86 ret <8 x float> %add
87}