blob: f86c439ef040adb33b44cf3cb58e3a34aeda699f [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:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +00007; X86: # %bb.0:
Dinar Temirbulatovaead31a2017-07-27 17:47:01 +00008; X86-NEXT: vxorps %xmm1, %xmm1, %xmm1
Simon Pilgrimef46c272017-05-13 13:42:35 +00009; X86-NEXT: vcmptrueps %ymm1, %ymm1, %ymm1
Simon Pilgrimec933342017-04-28 11:53:08 +000010; X86-NEXT: vaddpd %ymm1, %ymm0, %ymm0
11; X86-NEXT: retl
12;
13; X64-LABEL: cmp4f64_domain:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +000014; X64: # %bb.0:
Dinar Temirbulatovaead31a2017-07-27 17:47:01 +000015; X64-NEXT: vxorps %xmm1, %xmm1, %xmm1
Simon Pilgrimef46c272017-05-13 13:42:35 +000016; X64-NEXT: vcmptrueps %ymm1, %ymm1, %ymm1
Simon Pilgrimec933342017-04-28 11:53:08 +000017; 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:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +000028; X86: # %bb.0:
Dinar Temirbulatovaead31a2017-07-27 17:47:01 +000029; X86-NEXT: vxorps %xmm1, %xmm1, %xmm1
Simon Pilgrimef46c272017-05-13 13:42:35 +000030; X86-NEXT: vcmptrueps %ymm1, %ymm1, %ymm1
Simon Pilgrimec933342017-04-28 11:53:08 +000031; X86-NEXT: vaddpd %ymm1, %ymm0, %ymm0
32; X86-NEXT: retl
33;
34; X64-LABEL: cmp4f64_domain_optsize:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +000035; X64: # %bb.0:
Dinar Temirbulatovaead31a2017-07-27 17:47:01 +000036; X64-NEXT: vxorps %xmm1, %xmm1, %xmm1
Simon Pilgrimef46c272017-05-13 13:42:35 +000037; X64-NEXT: vcmptrueps %ymm1, %ymm1, %ymm1
Simon Pilgrimec933342017-04-28 11:53:08 +000038; 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:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +000049; X86: # %bb.0:
Dinar Temirbulatovaead31a2017-07-27 17:47:01 +000050; X86-NEXT: vxorps %xmm1, %xmm1, %xmm1
Simon Pilgrimef46c272017-05-13 13:42:35 +000051; X86-NEXT: vcmptrueps %ymm1, %ymm1, %ymm1
Simon Pilgrimec933342017-04-28 11:53:08 +000052; X86-NEXT: vaddps %ymm1, %ymm0, %ymm0
53; X86-NEXT: retl
54;
55; X64-LABEL: cmp8f32_domain:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +000056; X64: # %bb.0:
Dinar Temirbulatovaead31a2017-07-27 17:47:01 +000057; X64-NEXT: vxorps %xmm1, %xmm1, %xmm1
Simon Pilgrimef46c272017-05-13 13:42:35 +000058; X64-NEXT: vcmptrueps %ymm1, %ymm1, %ymm1
Simon Pilgrimec933342017-04-28 11:53:08 +000059; 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:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +000070; X86: # %bb.0:
Dinar Temirbulatovaead31a2017-07-27 17:47:01 +000071; X86-NEXT: vxorps %xmm1, %xmm1, %xmm1
Simon Pilgrimef46c272017-05-13 13:42:35 +000072; X86-NEXT: vcmptrueps %ymm1, %ymm1, %ymm1
Simon Pilgrimec933342017-04-28 11:53:08 +000073; X86-NEXT: vaddps %ymm1, %ymm0, %ymm0
74; X86-NEXT: retl
75;
76; X64-LABEL: cmp8f32_domain_optsize:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +000077; X64: # %bb.0:
Dinar Temirbulatovaead31a2017-07-27 17:47:01 +000078; X64-NEXT: vxorps %xmm1, %xmm1, %xmm1
Simon Pilgrimef46c272017-05-13 13:42:35 +000079; X64-NEXT: vcmptrueps %ymm1, %ymm1, %ymm1
Simon Pilgrimec933342017-04-28 11:53:08 +000080; 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}