brintos

brintos / llvm-project-archived public Read only

0
0
Text · 77.5 KiB · 01f1037 Raw
1516 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=i686-apple-darwin -mattr=+avx | FileCheck %s --check-prefix=X863; RUN: llc < %s -mtriple=x86_64-apple-darwin -mattr=+avx | FileCheck %s --check-prefix=X644; RUN: llc < %s -mtriple=i686-apple-darwin -mattr=+avx2 | FileCheck %s --check-prefix=X86-AVX25; RUN: llc < %s -mtriple=x86_64-apple-darwin -mattr=+avx2 | FileCheck %s --check-prefix=X64-AVX26; RUN: llc < %s -mtriple=i686-apple-darwin -mattr=+avx512vl | FileCheck %s --check-prefix=X86-AVX5127; RUN: llc < %s -mtriple=x86_64-apple-darwin -mattr=+avx512vl | FileCheck %s --check-prefix=X64-AVX5128 9define void @and_masks(ptr %a, ptr %b, ptr %c) nounwind uwtable noinline ssp {10; X86-LABEL: and_masks:11; X86:       ## %bb.0:12; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax13; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx14; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx15; X86-NEXT:    vmovups (%edx), %ymm016; X86-NEXT:    vmovups (%ecx), %ymm117; X86-NEXT:    vcmpltps %ymm0, %ymm1, %ymm118; X86-NEXT:    vmovups (%eax), %ymm219; X86-NEXT:    vcmpltps %ymm0, %ymm2, %ymm020; X86-NEXT:    vandps %ymm1, %ymm0, %ymm021; X86-NEXT:    vandps {{\.?LCPI[0-9]+_[0-9]+}}, %ymm0, %ymm022; X86-NEXT:    vmovaps %ymm0, (%eax)23; X86-NEXT:    vzeroupper24; X86-NEXT:    retl25;26; X64-LABEL: and_masks:27; X64:       ## %bb.0:28; X64-NEXT:    vmovups (%rdi), %ymm029; X64-NEXT:    vmovups (%rsi), %ymm130; X64-NEXT:    vcmpltps %ymm0, %ymm1, %ymm131; X64-NEXT:    vmovups (%rdx), %ymm232; X64-NEXT:    vcmpltps %ymm0, %ymm2, %ymm033; X64-NEXT:    vandps %ymm1, %ymm0, %ymm034; X64-NEXT:    vandps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm035; X64-NEXT:    vmovaps %ymm0, (%rax)36; X64-NEXT:    vzeroupper37; X64-NEXT:    retq38;39; X86-AVX2-LABEL: and_masks:40; X86-AVX2:       ## %bb.0:41; X86-AVX2-NEXT:    movl {{[0-9]+}}(%esp), %eax42; X86-AVX2-NEXT:    movl {{[0-9]+}}(%esp), %ecx43; X86-AVX2-NEXT:    movl {{[0-9]+}}(%esp), %edx44; X86-AVX2-NEXT:    vmovups (%edx), %ymm045; X86-AVX2-NEXT:    vmovups (%ecx), %ymm146; X86-AVX2-NEXT:    vcmpltps %ymm0, %ymm1, %ymm147; X86-AVX2-NEXT:    vmovups (%eax), %ymm248; X86-AVX2-NEXT:    vcmpltps %ymm0, %ymm2, %ymm049; X86-AVX2-NEXT:    vandps %ymm1, %ymm0, %ymm050; X86-AVX2-NEXT:    vpsrld $31, %ymm0, %ymm051; X86-AVX2-NEXT:    vmovdqa %ymm0, (%eax)52; X86-AVX2-NEXT:    vzeroupper53; X86-AVX2-NEXT:    retl54;55; X64-AVX2-LABEL: and_masks:56; X64-AVX2:       ## %bb.0:57; X64-AVX2-NEXT:    vmovups (%rdi), %ymm058; X64-AVX2-NEXT:    vmovups (%rsi), %ymm159; X64-AVX2-NEXT:    vcmpltps %ymm0, %ymm1, %ymm160; X64-AVX2-NEXT:    vmovups (%rdx), %ymm261; X64-AVX2-NEXT:    vcmpltps %ymm0, %ymm2, %ymm062; X64-AVX2-NEXT:    vandps %ymm1, %ymm0, %ymm063; X64-AVX2-NEXT:    vpsrld $31, %ymm0, %ymm064; X64-AVX2-NEXT:    vmovdqa %ymm0, (%rax)65; X64-AVX2-NEXT:    vzeroupper66; X64-AVX2-NEXT:    retq67;68; X86-AVX512-LABEL: and_masks:69; X86-AVX512:       ## %bb.0:70; X86-AVX512-NEXT:    movl {{[0-9]+}}(%esp), %eax71; X86-AVX512-NEXT:    movl {{[0-9]+}}(%esp), %ecx72; X86-AVX512-NEXT:    movl {{[0-9]+}}(%esp), %edx73; X86-AVX512-NEXT:    vmovups (%edx), %ymm074; X86-AVX512-NEXT:    vcmpgtps (%ecx), %ymm0, %k175; X86-AVX512-NEXT:    vcmpgtps (%eax), %ymm0, %k1 {%k1}76; X86-AVX512-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm077; X86-AVX512-NEXT:    vmovdqa32 %ymm0, %ymm0 {%k1} {z}78; X86-AVX512-NEXT:    vpsrld $31, %ymm0, %ymm079; X86-AVX512-NEXT:    vmovdqa %ymm0, (%eax)80; X86-AVX512-NEXT:    vzeroupper81; X86-AVX512-NEXT:    retl82;83; X64-AVX512-LABEL: and_masks:84; X64-AVX512:       ## %bb.0:85; X64-AVX512-NEXT:    vmovups (%rdi), %ymm086; X64-AVX512-NEXT:    vcmpgtps (%rdx), %ymm0, %k187; X64-AVX512-NEXT:    vcmpgtps (%rsi), %ymm0, %k1 {%k1}88; X64-AVX512-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm089; X64-AVX512-NEXT:    vmovdqa32 %ymm0, %ymm0 {%k1} {z}90; X64-AVX512-NEXT:    vpsrld $31, %ymm0, %ymm091; X64-AVX512-NEXT:    vmovdqa %ymm0, (%rax)92; X64-AVX512-NEXT:    vzeroupper93; X64-AVX512-NEXT:    retq94  %v0 = load <8 x float>, ptr %a, align 1695  %v1 = load <8 x float>, ptr %b, align 1696  %m0 = fcmp olt <8 x float> %v1, %v097  %v2 = load <8 x float>, ptr %c, align 1698  %m1 = fcmp olt <8 x float> %v2, %v099  %mand = and <8 x i1> %m1, %m0100  %r = zext <8 x i1> %mand to <8 x i32>101  store <8 x i32> %r, ptr undef, align 32102  ret void103}104 105define void @neg_masks(ptr %a, ptr %b, ptr %c) nounwind uwtable noinline ssp {106; X86-LABEL: neg_masks:107; X86:       ## %bb.0:108; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax109; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx110; X86-NEXT:    vmovups (%ecx), %ymm0111; X86-NEXT:    vcmpnltps (%eax), %ymm0, %ymm0112; X86-NEXT:    vandps {{\.?LCPI[0-9]+_[0-9]+}}, %ymm0, %ymm0113; X86-NEXT:    vmovaps %ymm0, (%eax)114; X86-NEXT:    vzeroupper115; X86-NEXT:    retl116;117; X64-LABEL: neg_masks:118; X64:       ## %bb.0:119; X64-NEXT:    vmovups (%rsi), %ymm0120; X64-NEXT:    vcmpnltps (%rdi), %ymm0, %ymm0121; X64-NEXT:    vandps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm0122; X64-NEXT:    vmovaps %ymm0, (%rax)123; X64-NEXT:    vzeroupper124; X64-NEXT:    retq125;126; X86-AVX2-LABEL: neg_masks:127; X86-AVX2:       ## %bb.0:128; X86-AVX2-NEXT:    movl {{[0-9]+}}(%esp), %eax129; X86-AVX2-NEXT:    movl {{[0-9]+}}(%esp), %ecx130; X86-AVX2-NEXT:    vmovups (%ecx), %ymm0131; X86-AVX2-NEXT:    vcmpnltps (%eax), %ymm0, %ymm0132; X86-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm1 = [1,1,1,1,1,1,1,1]133; X86-AVX2-NEXT:    vandps %ymm1, %ymm0, %ymm0134; X86-AVX2-NEXT:    vmovaps %ymm0, (%eax)135; X86-AVX2-NEXT:    vzeroupper136; X86-AVX2-NEXT:    retl137;138; X64-AVX2-LABEL: neg_masks:139; X64-AVX2:       ## %bb.0:140; X64-AVX2-NEXT:    vmovups (%rsi), %ymm0141; X64-AVX2-NEXT:    vcmpnltps (%rdi), %ymm0, %ymm0142; X64-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm1 = [1,1,1,1,1,1,1,1]143; X64-AVX2-NEXT:    vandps %ymm1, %ymm0, %ymm0144; X64-AVX2-NEXT:    vmovaps %ymm0, (%rax)145; X64-AVX2-NEXT:    vzeroupper146; X64-AVX2-NEXT:    retq147;148; X86-AVX512-LABEL: neg_masks:149; X86-AVX512:       ## %bb.0:150; X86-AVX512-NEXT:    movl {{[0-9]+}}(%esp), %eax151; X86-AVX512-NEXT:    movl {{[0-9]+}}(%esp), %ecx152; X86-AVX512-NEXT:    vmovups (%ecx), %ymm0153; X86-AVX512-NEXT:    vcmpnltps (%eax), %ymm0, %ymm0154; X86-AVX512-NEXT:    vpandd {{\.?LCPI[0-9]+_[0-9]+}}{1to8}, %ymm0, %ymm0155; X86-AVX512-NEXT:    vmovdqa %ymm0, (%eax)156; X86-AVX512-NEXT:    vzeroupper157; X86-AVX512-NEXT:    retl158;159; X64-AVX512-LABEL: neg_masks:160; X64-AVX512:       ## %bb.0:161; X64-AVX512-NEXT:    vmovups (%rsi), %ymm0162; X64-AVX512-NEXT:    vcmpnltps (%rdi), %ymm0, %ymm0163; X64-AVX512-NEXT:    vpandd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %ymm0164; X64-AVX512-NEXT:    vmovdqa %ymm0, (%rax)165; X64-AVX512-NEXT:    vzeroupper166; X64-AVX512-NEXT:    retq167  %v0 = load <8 x float>, ptr %a, align 16168  %v1 = load <8 x float>, ptr %b, align 16169  %m0 = fcmp olt <8 x float> %v1, %v0170  %mand = xor <8 x i1> %m0, <i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1>171  %r = zext <8 x i1> %mand to <8 x i32>172  store <8 x i32> %r, ptr undef, align 32173  ret void174}175 176define <8 x i32> @and_mask_constant(<8 x i32> %v0, <8 x i32> %v1) {177; X86-LABEL: and_mask_constant:178; X86:       ## %bb.0:179; X86-NEXT:    vextractf128 $1, %ymm0, %xmm1180; X86-NEXT:    vpxor %xmm2, %xmm2, %xmm2181; X86-NEXT:    vpcmpeqd %xmm2, %xmm1, %xmm1182; X86-NEXT:    vpcmpeqd %xmm2, %xmm0, %xmm0183; X86-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0184; X86-NEXT:    vandps {{\.?LCPI[0-9]+_[0-9]+}}, %ymm0, %ymm0185; X86-NEXT:    retl186;187; X64-LABEL: and_mask_constant:188; X64:       ## %bb.0:189; X64-NEXT:    vextractf128 $1, %ymm0, %xmm1190; X64-NEXT:    vpxor %xmm2, %xmm2, %xmm2191; X64-NEXT:    vpcmpeqd %xmm2, %xmm1, %xmm1192; X64-NEXT:    vpcmpeqd %xmm2, %xmm0, %xmm0193; X64-NEXT:    vinsertf128 $1, %xmm1, %ymm0, %ymm0194; X64-NEXT:    vandps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm0195; X64-NEXT:    retq196;197; X86-AVX2-LABEL: and_mask_constant:198; X86-AVX2:       ## %bb.0:199; X86-AVX2-NEXT:    vpxor %xmm1, %xmm1, %xmm1200; X86-AVX2-NEXT:    vpcmpeqd %ymm1, %ymm0, %ymm0201; X86-AVX2-NEXT:    vpand {{\.?LCPI[0-9]+_[0-9]+}}, %ymm0, %ymm0202; X86-AVX2-NEXT:    retl203;204; X64-AVX2-LABEL: and_mask_constant:205; X64-AVX2:       ## %bb.0:206; X64-AVX2-NEXT:    vpxor %xmm1, %xmm1, %xmm1207; X64-AVX2-NEXT:    vpcmpeqd %ymm1, %ymm0, %ymm0208; X64-AVX2-NEXT:    vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm0209; X64-AVX2-NEXT:    retq210;211; X86-AVX512-LABEL: and_mask_constant:212; X86-AVX512:       ## %bb.0:213; X86-AVX512-NEXT:    movb $105, %al214; X86-AVX512-NEXT:    kmovw %eax, %k1215; X86-AVX512-NEXT:    vptestnmd %ymm0, %ymm0, %k1 {%k1}216; X86-AVX512-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0217; X86-AVX512-NEXT:    vmovdqa32 %ymm0, %ymm0 {%k1} {z}218; X86-AVX512-NEXT:    vpsrld $31, %ymm0, %ymm0219; X86-AVX512-NEXT:    retl220;221; X64-AVX512-LABEL: and_mask_constant:222; X64-AVX512:       ## %bb.0:223; X64-AVX512-NEXT:    movb $105, %al224; X64-AVX512-NEXT:    kmovw %eax, %k1225; X64-AVX512-NEXT:    vptestnmd %ymm0, %ymm0, %k1 {%k1}226; X64-AVX512-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0227; X64-AVX512-NEXT:    vmovdqa32 %ymm0, %ymm0 {%k1} {z}228; X64-AVX512-NEXT:    vpsrld $31, %ymm0, %ymm0229; X64-AVX512-NEXT:    retq230  %m = icmp eq <8 x i32> %v0, zeroinitializer231  %mand = and <8 x i1> %m, <i1 true, i1 false, i1 false, i1 true, i1 false, i1 true, i1 true, i1 false>232  %r = zext <8 x i1> %mand to <8 x i32>233  ret <8 x i32> %r234}235 236define <8 x i32> @two_ands(<8 x float> %x) local_unnamed_addr #0 {237; X86-LABEL: two_ands:238; X86:       ## %bb.0: ## %entry239; X86-NEXT:    vbroadcastss {{.*#+}} ymm1 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]240; X86-NEXT:    vcmpleps %ymm0, %ymm1, %ymm1241; X86-NEXT:    vcmpltps {{\.?LCPI[0-9]+_[0-9]+}}, %ymm0, %ymm0242; X86-NEXT:    vandps %ymm0, %ymm1, %ymm0243; X86-NEXT:    retl244;245; X64-LABEL: two_ands:246; X64:       ## %bb.0: ## %entry247; X64-NEXT:    vbroadcastss {{.*#+}} ymm1 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]248; X64-NEXT:    vcmpleps %ymm0, %ymm1, %ymm1249; X64-NEXT:    vcmpltps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm0250; X64-NEXT:    vandps %ymm0, %ymm1, %ymm0251; X64-NEXT:    retq252;253; X86-AVX2-LABEL: two_ands:254; X86-AVX2:       ## %bb.0: ## %entry255; X86-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm1 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]256; X86-AVX2-NEXT:    vcmpleps %ymm0, %ymm1, %ymm1257; X86-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm2 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0]258; X86-AVX2-NEXT:    vcmpltps %ymm2, %ymm0, %ymm0259; X86-AVX2-NEXT:    vandps %ymm0, %ymm1, %ymm0260; X86-AVX2-NEXT:    retl261;262; X64-AVX2-LABEL: two_ands:263; X64-AVX2:       ## %bb.0: ## %entry264; X64-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm1 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]265; X64-AVX2-NEXT:    vcmpleps %ymm0, %ymm1, %ymm1266; X64-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm2 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0]267; X64-AVX2-NEXT:    vcmpltps %ymm2, %ymm0, %ymm0268; X64-AVX2-NEXT:    vandps %ymm0, %ymm1, %ymm0269; X64-AVX2-NEXT:    retq270;271; X86-AVX512-LABEL: two_ands:272; X86-AVX512:       ## %bb.0: ## %entry273; X86-AVX512-NEXT:    vcmpgeps {{\.?LCPI[0-9]+_[0-9]+}}{1to8}, %ymm0, %k1274; X86-AVX512-NEXT:    vcmpltps {{\.?LCPI[0-9]+_[0-9]+}}{1to8}, %ymm0, %k1 {%k1}275; X86-AVX512-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0276; X86-AVX512-NEXT:    vmovdqa32 %ymm0, %ymm0 {%k1} {z}277; X86-AVX512-NEXT:    retl278;279; X64-AVX512-LABEL: two_ands:280; X64-AVX512:       ## %bb.0: ## %entry281; X64-AVX512-NEXT:    vcmpgeps {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %k1282; X64-AVX512-NEXT:    vcmpltps {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %k1 {%k1}283; X64-AVX512-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0284; X64-AVX512-NEXT:    vmovdqa32 %ymm0, %ymm0 {%k1} {z}285; X64-AVX512-NEXT:    retq286entry:287  %cmp = fcmp oge <8 x float> %x, <float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01>288  %cmp1 = fcmp olt <8 x float> %x, <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>289  %and4 = and <8 x i1> %cmp, %cmp1290  %and = sext <8 x i1> %and4 to <8 x i32>291  ret <8 x i32> %and292}293 294define <8 x i32> @three_ands(<8 x float> %x) {295; X86-LABEL: three_ands:296; X86:       ## %bb.0: ## %entry297; X86-NEXT:    vbroadcastss {{.*#+}} ymm1 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]298; X86-NEXT:    vcmpleps %ymm0, %ymm1, %ymm1299; X86-NEXT:    vcmpltps {{\.?LCPI[0-9]+_[0-9]+}}, %ymm0, %ymm2300; X86-NEXT:    vxorps %xmm3, %xmm3, %xmm3301; X86-NEXT:    vcmpneqps %ymm3, %ymm0, %ymm0302; X86-NEXT:    vandps %ymm0, %ymm2, %ymm0303; X86-NEXT:    vandps %ymm0, %ymm1, %ymm0304; X86-NEXT:    retl305;306; X64-LABEL: three_ands:307; X64:       ## %bb.0: ## %entry308; X64-NEXT:    vbroadcastss {{.*#+}} ymm1 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]309; X64-NEXT:    vcmpleps %ymm0, %ymm1, %ymm1310; X64-NEXT:    vcmpltps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm2311; X64-NEXT:    vxorps %xmm3, %xmm3, %xmm3312; X64-NEXT:    vcmpneqps %ymm3, %ymm0, %ymm0313; X64-NEXT:    vandps %ymm0, %ymm2, %ymm0314; X64-NEXT:    vandps %ymm0, %ymm1, %ymm0315; X64-NEXT:    retq316;317; X86-AVX2-LABEL: three_ands:318; X86-AVX2:       ## %bb.0: ## %entry319; X86-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm1 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]320; X86-AVX2-NEXT:    vcmpleps %ymm0, %ymm1, %ymm1321; X86-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm2 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0]322; X86-AVX2-NEXT:    vcmpltps %ymm2, %ymm0, %ymm2323; X86-AVX2-NEXT:    vandps %ymm2, %ymm1, %ymm1324; X86-AVX2-NEXT:    vxorps %xmm2, %xmm2, %xmm2325; X86-AVX2-NEXT:    vcmpneqps %ymm2, %ymm0, %ymm0326; X86-AVX2-NEXT:    vandps %ymm0, %ymm1, %ymm0327; X86-AVX2-NEXT:    retl328;329; X64-AVX2-LABEL: three_ands:330; X64-AVX2:       ## %bb.0: ## %entry331; X64-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm1 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]332; X64-AVX2-NEXT:    vcmpleps %ymm0, %ymm1, %ymm1333; X64-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm2 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0]334; X64-AVX2-NEXT:    vcmpltps %ymm2, %ymm0, %ymm2335; X64-AVX2-NEXT:    vandps %ymm2, %ymm1, %ymm1336; X64-AVX2-NEXT:    vxorps %xmm2, %xmm2, %xmm2337; X64-AVX2-NEXT:    vcmpneqps %ymm2, %ymm0, %ymm0338; X64-AVX2-NEXT:    vandps %ymm0, %ymm1, %ymm0339; X64-AVX2-NEXT:    retq340;341; X86-AVX512-LABEL: three_ands:342; X86-AVX512:       ## %bb.0: ## %entry343; X86-AVX512-NEXT:    vcmpgeps {{\.?LCPI[0-9]+_[0-9]+}}{1to8}, %ymm0, %k1344; X86-AVX512-NEXT:    vcmpltps {{\.?LCPI[0-9]+_[0-9]+}}{1to8}, %ymm0, %k1 {%k1}345; X86-AVX512-NEXT:    vxorps %xmm1, %xmm1, %xmm1346; X86-AVX512-NEXT:    vcmpneqps %ymm1, %ymm0, %k1 {%k1}347; X86-AVX512-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0348; X86-AVX512-NEXT:    vmovdqa32 %ymm0, %ymm0 {%k1} {z}349; X86-AVX512-NEXT:    retl350;351; X64-AVX512-LABEL: three_ands:352; X64-AVX512:       ## %bb.0: ## %entry353; X64-AVX512-NEXT:    vcmpgeps {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %k1354; X64-AVX512-NEXT:    vcmpltps {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %k1 {%k1}355; X64-AVX512-NEXT:    vxorps %xmm1, %xmm1, %xmm1356; X64-AVX512-NEXT:    vcmpneqps %ymm1, %ymm0, %k1 {%k1}357; X64-AVX512-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0358; X64-AVX512-NEXT:    vmovdqa32 %ymm0, %ymm0 {%k1} {z}359; X64-AVX512-NEXT:    retq360entry:361  %cmp = fcmp oge <8 x float> %x, <float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01>362  %cmp1 = fcmp olt <8 x float> %x, <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>363  %and8 = and <8 x i1> %cmp, %cmp1364  %cmp3 = fcmp une <8 x float> %x, zeroinitializer365  %and59 = and <8 x i1> %and8, %cmp3366  %and5 = sext <8 x i1> %and59 to <8 x i32>367  ret <8 x i32> %and5368}369 370define <8 x i32> @four_ands(<8 x float> %x) {371; X86-LABEL: four_ands:372; X86:       ## %bb.0: ## %entry373; X86-NEXT:    vbroadcastss {{.*#+}} ymm1 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]374; X86-NEXT:    vcmpleps %ymm0, %ymm1, %ymm1375; X86-NEXT:    vcmpltps {{\.?LCPI[0-9]+_[0-9]+}}, %ymm0, %ymm2376; X86-NEXT:    vxorps %xmm3, %xmm3, %xmm3377; X86-NEXT:    vcmpneqps %ymm3, %ymm0, %ymm3378; X86-NEXT:    vandps %ymm3, %ymm2, %ymm2379; X86-NEXT:    vandps %ymm2, %ymm1, %ymm1380; X86-NEXT:    vcmpneqps {{\.?LCPI[0-9]+_[0-9]+}}, %ymm0, %ymm0381; X86-NEXT:    vandps %ymm0, %ymm1, %ymm0382; X86-NEXT:    retl383;384; X64-LABEL: four_ands:385; X64:       ## %bb.0: ## %entry386; X64-NEXT:    vbroadcastss {{.*#+}} ymm1 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]387; X64-NEXT:    vcmpleps %ymm0, %ymm1, %ymm1388; X64-NEXT:    vcmpltps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm2389; X64-NEXT:    vxorps %xmm3, %xmm3, %xmm3390; X64-NEXT:    vcmpneqps %ymm3, %ymm0, %ymm3391; X64-NEXT:    vandps %ymm3, %ymm2, %ymm2392; X64-NEXT:    vandps %ymm2, %ymm1, %ymm1393; X64-NEXT:    vcmpneqps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm0394; X64-NEXT:    vandps %ymm0, %ymm1, %ymm0395; X64-NEXT:    retq396;397; X86-AVX2-LABEL: four_ands:398; X86-AVX2:       ## %bb.0: ## %entry399; X86-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm1 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]400; X86-AVX2-NEXT:    vcmpleps %ymm0, %ymm1, %ymm1401; X86-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm2 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0]402; X86-AVX2-NEXT:    vcmpltps %ymm2, %ymm0, %ymm2403; X86-AVX2-NEXT:    vandps %ymm2, %ymm1, %ymm1404; X86-AVX2-NEXT:    vxorps %xmm2, %xmm2, %xmm2405; X86-AVX2-NEXT:    vcmpneqps %ymm2, %ymm0, %ymm2406; X86-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm3 = [1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1]407; X86-AVX2-NEXT:    vcmpneqps %ymm3, %ymm0, %ymm0408; X86-AVX2-NEXT:    vandps %ymm0, %ymm2, %ymm0409; X86-AVX2-NEXT:    vandps %ymm0, %ymm1, %ymm0410; X86-AVX2-NEXT:    retl411;412; X64-AVX2-LABEL: four_ands:413; X64-AVX2:       ## %bb.0: ## %entry414; X64-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm1 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]415; X64-AVX2-NEXT:    vcmpleps %ymm0, %ymm1, %ymm1416; X64-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm2 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0]417; X64-AVX2-NEXT:    vcmpltps %ymm2, %ymm0, %ymm2418; X64-AVX2-NEXT:    vandps %ymm2, %ymm1, %ymm1419; X64-AVX2-NEXT:    vxorps %xmm2, %xmm2, %xmm2420; X64-AVX2-NEXT:    vcmpneqps %ymm2, %ymm0, %ymm2421; X64-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm3 = [1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1]422; X64-AVX2-NEXT:    vcmpneqps %ymm3, %ymm0, %ymm0423; X64-AVX2-NEXT:    vandps %ymm0, %ymm2, %ymm0424; X64-AVX2-NEXT:    vandps %ymm0, %ymm1, %ymm0425; X64-AVX2-NEXT:    retq426;427; X86-AVX512-LABEL: four_ands:428; X86-AVX512:       ## %bb.0: ## %entry429; X86-AVX512-NEXT:    vcmpgeps {{\.?LCPI[0-9]+_[0-9]+}}{1to8}, %ymm0, %k1430; X86-AVX512-NEXT:    vcmpltps {{\.?LCPI[0-9]+_[0-9]+}}{1to8}, %ymm0, %k1 {%k1}431; X86-AVX512-NEXT:    vxorps %xmm1, %xmm1, %xmm1432; X86-AVX512-NEXT:    vcmpneqps %ymm1, %ymm0, %k1 {%k1}433; X86-AVX512-NEXT:    vcmpneqps {{\.?LCPI[0-9]+_[0-9]+}}{1to8}, %ymm0, %k1 {%k1}434; X86-AVX512-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0435; X86-AVX512-NEXT:    vmovdqa32 %ymm0, %ymm0 {%k1} {z}436; X86-AVX512-NEXT:    retl437;438; X64-AVX512-LABEL: four_ands:439; X64-AVX512:       ## %bb.0: ## %entry440; X64-AVX512-NEXT:    vcmpgeps {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %k1441; X64-AVX512-NEXT:    vcmpltps {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %k1 {%k1}442; X64-AVX512-NEXT:    vxorps %xmm1, %xmm1, %xmm1443; X64-AVX512-NEXT:    vcmpneqps %ymm1, %ymm0, %k1 {%k1}444; X64-AVX512-NEXT:    vcmpneqps {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %k1 {%k1}445; X64-AVX512-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0446; X64-AVX512-NEXT:    vmovdqa32 %ymm0, %ymm0 {%k1} {z}447; X64-AVX512-NEXT:    retq448entry:449  %cmp = fcmp oge <8 x float> %x, <float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01>450  %cmp1 = fcmp olt <8 x float> %x, <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>451  %and12 = and <8 x i1> %cmp, %cmp1452  %cmp3 = fcmp une <8 x float> %x, zeroinitializer453  %and513 = and <8 x i1> %and12, %cmp3454  %cmp6 = fcmp une <8 x float> %x, <float 0x3FB99999A0000000, float 0x3FB99999A0000000, float 0x3FB99999A0000000, float 0x3FB99999A0000000, float 0x3FB99999A0000000, float 0x3FB99999A0000000, float 0x3FB99999A0000000, float 0x3FB99999A0000000>455  %and814 = and <8 x i1> %and513, %cmp6456  %and8 = sext <8 x i1> %and814 to <8 x i32>457  ret <8 x i32> %and8458}459 460define <8 x i32> @five_ands(<8 x float> %x) {461; X86-LABEL: five_ands:462; X86:       ## %bb.0: ## %entry463; X86-NEXT:    vbroadcastss {{.*#+}} ymm1 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]464; X86-NEXT:    vcmpleps %ymm0, %ymm1, %ymm1465; X86-NEXT:    vcmpltps {{\.?LCPI[0-9]+_[0-9]+}}, %ymm0, %ymm2466; X86-NEXT:    vxorps %xmm3, %xmm3, %xmm3467; X86-NEXT:    vcmpneqps %ymm3, %ymm0, %ymm3468; X86-NEXT:    vandps %ymm3, %ymm2, %ymm2469; X86-NEXT:    vandps %ymm2, %ymm1, %ymm1470; X86-NEXT:    vcmpneqps {{\.?LCPI[0-9]+_[0-9]+}}, %ymm0, %ymm2471; X86-NEXT:    vcmpneqps {{\.?LCPI[0-9]+_[0-9]+}}, %ymm0, %ymm0472; X86-NEXT:    vandps %ymm0, %ymm2, %ymm0473; X86-NEXT:    vandps %ymm0, %ymm1, %ymm0474; X86-NEXT:    retl475;476; X64-LABEL: five_ands:477; X64:       ## %bb.0: ## %entry478; X64-NEXT:    vbroadcastss {{.*#+}} ymm1 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]479; X64-NEXT:    vcmpleps %ymm0, %ymm1, %ymm1480; X64-NEXT:    vcmpltps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm2481; X64-NEXT:    vxorps %xmm3, %xmm3, %xmm3482; X64-NEXT:    vcmpneqps %ymm3, %ymm0, %ymm3483; X64-NEXT:    vandps %ymm3, %ymm2, %ymm2484; X64-NEXT:    vandps %ymm2, %ymm1, %ymm1485; X64-NEXT:    vcmpneqps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm2486; X64-NEXT:    vcmpneqps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm0487; X64-NEXT:    vandps %ymm0, %ymm2, %ymm0488; X64-NEXT:    vandps %ymm0, %ymm1, %ymm0489; X64-NEXT:    retq490;491; X86-AVX2-LABEL: five_ands:492; X86-AVX2:       ## %bb.0: ## %entry493; X86-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm1 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]494; X86-AVX2-NEXT:    vcmpleps %ymm0, %ymm1, %ymm1495; X86-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm2 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0]496; X86-AVX2-NEXT:    vcmpltps %ymm2, %ymm0, %ymm2497; X86-AVX2-NEXT:    vandps %ymm2, %ymm1, %ymm1498; X86-AVX2-NEXT:    vxorps %xmm2, %xmm2, %xmm2499; X86-AVX2-NEXT:    vcmpneqps %ymm2, %ymm0, %ymm2500; X86-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm3 = [1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1]501; X86-AVX2-NEXT:    vcmpneqps %ymm3, %ymm0, %ymm3502; X86-AVX2-NEXT:    vandps %ymm3, %ymm2, %ymm2503; X86-AVX2-NEXT:    vandps %ymm2, %ymm1, %ymm1504; X86-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm2 = [2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1]505; X86-AVX2-NEXT:    vcmpneqps %ymm2, %ymm0, %ymm0506; X86-AVX2-NEXT:    vandps %ymm0, %ymm1, %ymm0507; X86-AVX2-NEXT:    retl508;509; X64-AVX2-LABEL: five_ands:510; X64-AVX2:       ## %bb.0: ## %entry511; X64-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm1 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]512; X64-AVX2-NEXT:    vcmpleps %ymm0, %ymm1, %ymm1513; X64-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm2 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0]514; X64-AVX2-NEXT:    vcmpltps %ymm2, %ymm0, %ymm2515; X64-AVX2-NEXT:    vandps %ymm2, %ymm1, %ymm1516; X64-AVX2-NEXT:    vxorps %xmm2, %xmm2, %xmm2517; X64-AVX2-NEXT:    vcmpneqps %ymm2, %ymm0, %ymm2518; X64-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm3 = [1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1]519; X64-AVX2-NEXT:    vcmpneqps %ymm3, %ymm0, %ymm3520; X64-AVX2-NEXT:    vandps %ymm3, %ymm2, %ymm2521; X64-AVX2-NEXT:    vandps %ymm2, %ymm1, %ymm1522; X64-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm2 = [2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1]523; X64-AVX2-NEXT:    vcmpneqps %ymm2, %ymm0, %ymm0524; X64-AVX2-NEXT:    vandps %ymm0, %ymm1, %ymm0525; X64-AVX2-NEXT:    retq526;527; X86-AVX512-LABEL: five_ands:528; X86-AVX512:       ## %bb.0: ## %entry529; X86-AVX512-NEXT:    vcmpgeps {{\.?LCPI[0-9]+_[0-9]+}}{1to8}, %ymm0, %k1530; X86-AVX512-NEXT:    vcmpltps {{\.?LCPI[0-9]+_[0-9]+}}{1to8}, %ymm0, %k1 {%k1}531; X86-AVX512-NEXT:    vxorps %xmm1, %xmm1, %xmm1532; X86-AVX512-NEXT:    vcmpneqps %ymm1, %ymm0, %k1 {%k1}533; X86-AVX512-NEXT:    vcmpneqps {{\.?LCPI[0-9]+_[0-9]+}}{1to8}, %ymm0, %k1 {%k1}534; X86-AVX512-NEXT:    vcmpneqps {{\.?LCPI[0-9]+_[0-9]+}}{1to8}, %ymm0, %k1 {%k1}535; X86-AVX512-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0536; X86-AVX512-NEXT:    vmovdqa32 %ymm0, %ymm0 {%k1} {z}537; X86-AVX512-NEXT:    retl538;539; X64-AVX512-LABEL: five_ands:540; X64-AVX512:       ## %bb.0: ## %entry541; X64-AVX512-NEXT:    vcmpgeps {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %k1542; X64-AVX512-NEXT:    vcmpltps {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %k1 {%k1}543; X64-AVX512-NEXT:    vxorps %xmm1, %xmm1, %xmm1544; X64-AVX512-NEXT:    vcmpneqps %ymm1, %ymm0, %k1 {%k1}545; X64-AVX512-NEXT:    vcmpneqps {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %k1 {%k1}546; X64-AVX512-NEXT:    vcmpneqps {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %k1 {%k1}547; X64-AVX512-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0548; X64-AVX512-NEXT:    vmovdqa32 %ymm0, %ymm0 {%k1} {z}549; X64-AVX512-NEXT:    retq550entry:551  %cmp = fcmp oge <8 x float> %x, <float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01>552  %cmp1 = fcmp olt <8 x float> %x, <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>553  %and16 = and <8 x i1> %cmp, %cmp1554  %cmp3 = fcmp une <8 x float> %x, zeroinitializer555  %and517 = and <8 x i1> %and16, %cmp3556  %cmp6 = fcmp une <8 x float> %x, <float 0x3FB99999A0000000, float 0x3FB99999A0000000, float 0x3FB99999A0000000, float 0x3FB99999A0000000, float 0x3FB99999A0000000, float 0x3FB99999A0000000, float 0x3FB99999A0000000, float 0x3FB99999A0000000>557  %and818 = and <8 x i1> %and517, %cmp6558  %cmp9 = fcmp une <8 x float> %x, <float 0x3FC99999A0000000, float 0x3FC99999A0000000, float 0x3FC99999A0000000, float 0x3FC99999A0000000, float 0x3FC99999A0000000, float 0x3FC99999A0000000, float 0x3FC99999A0000000, float 0x3FC99999A0000000>559  %and1119 = and <8 x i1> %and818, %cmp9560  %and11 = sext <8 x i1> %and1119 to <8 x i32>561  ret <8 x i32> %and11562}563 564define <8 x i32> @two_or(<8 x float> %x) {565; X86-LABEL: two_or:566; X86:       ## %bb.0: ## %entry567; X86-NEXT:    vbroadcastss {{.*#+}} ymm1 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]568; X86-NEXT:    vcmpleps %ymm0, %ymm1, %ymm1569; X86-NEXT:    vcmpltps {{\.?LCPI[0-9]+_[0-9]+}}, %ymm0, %ymm0570; X86-NEXT:    vorps %ymm0, %ymm1, %ymm0571; X86-NEXT:    retl572;573; X64-LABEL: two_or:574; X64:       ## %bb.0: ## %entry575; X64-NEXT:    vbroadcastss {{.*#+}} ymm1 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]576; X64-NEXT:    vcmpleps %ymm0, %ymm1, %ymm1577; X64-NEXT:    vcmpltps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm0578; X64-NEXT:    vorps %ymm0, %ymm1, %ymm0579; X64-NEXT:    retq580;581; X86-AVX2-LABEL: two_or:582; X86-AVX2:       ## %bb.0: ## %entry583; X86-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm1 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]584; X86-AVX2-NEXT:    vcmpleps %ymm0, %ymm1, %ymm1585; X86-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm2 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0]586; X86-AVX2-NEXT:    vcmpltps %ymm2, %ymm0, %ymm0587; X86-AVX2-NEXT:    vorps %ymm0, %ymm1, %ymm0588; X86-AVX2-NEXT:    retl589;590; X64-AVX2-LABEL: two_or:591; X64-AVX2:       ## %bb.0: ## %entry592; X64-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm1 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]593; X64-AVX2-NEXT:    vcmpleps %ymm0, %ymm1, %ymm1594; X64-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm2 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0]595; X64-AVX2-NEXT:    vcmpltps %ymm2, %ymm0, %ymm0596; X64-AVX2-NEXT:    vorps %ymm0, %ymm1, %ymm0597; X64-AVX2-NEXT:    retq598;599; X86-AVX512-LABEL: two_or:600; X86-AVX512:       ## %bb.0: ## %entry601; X86-AVX512-NEXT:    vcmpgeps {{\.?LCPI[0-9]+_[0-9]+}}{1to8}, %ymm0, %k0602; X86-AVX512-NEXT:    vcmpltps {{\.?LCPI[0-9]+_[0-9]+}}{1to8}, %ymm0, %k1603; X86-AVX512-NEXT:    korw %k1, %k0, %k1604; X86-AVX512-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0605; X86-AVX512-NEXT:    vmovdqa32 %ymm0, %ymm0 {%k1} {z}606; X86-AVX512-NEXT:    retl607;608; X64-AVX512-LABEL: two_or:609; X64-AVX512:       ## %bb.0: ## %entry610; X64-AVX512-NEXT:    vcmpgeps {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %k0611; X64-AVX512-NEXT:    vcmpltps {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %k1612; X64-AVX512-NEXT:    korw %k1, %k0, %k1613; X64-AVX512-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0614; X64-AVX512-NEXT:    vmovdqa32 %ymm0, %ymm0 {%k1} {z}615; X64-AVX512-NEXT:    retq616entry:617  %cmp = fcmp oge <8 x float> %x, <float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01>618  %cmp1 = fcmp olt <8 x float> %x, <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>619  %or4 = or <8 x i1> %cmp, %cmp1620  %or = sext <8 x i1> %or4 to <8 x i32>621  ret <8 x i32> %or622}623 624define <8 x i32> @three_or(<8 x float> %x) {625; X86-LABEL: three_or:626; X86:       ## %bb.0: ## %entry627; X86-NEXT:    vbroadcastss {{.*#+}} ymm1 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]628; X86-NEXT:    vcmpleps %ymm0, %ymm1, %ymm1629; X86-NEXT:    vcmpltps {{\.?LCPI[0-9]+_[0-9]+}}, %ymm0, %ymm2630; X86-NEXT:    vxorps %xmm3, %xmm3, %xmm3631; X86-NEXT:    vcmpneqps %ymm3, %ymm0, %ymm0632; X86-NEXT:    vorps %ymm0, %ymm2, %ymm0633; X86-NEXT:    vorps %ymm0, %ymm1, %ymm0634; X86-NEXT:    retl635;636; X64-LABEL: three_or:637; X64:       ## %bb.0: ## %entry638; X64-NEXT:    vbroadcastss {{.*#+}} ymm1 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]639; X64-NEXT:    vcmpleps %ymm0, %ymm1, %ymm1640; X64-NEXT:    vcmpltps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm2641; X64-NEXT:    vxorps %xmm3, %xmm3, %xmm3642; X64-NEXT:    vcmpneqps %ymm3, %ymm0, %ymm0643; X64-NEXT:    vorps %ymm0, %ymm2, %ymm0644; X64-NEXT:    vorps %ymm0, %ymm1, %ymm0645; X64-NEXT:    retq646;647; X86-AVX2-LABEL: three_or:648; X86-AVX2:       ## %bb.0: ## %entry649; X86-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm1 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]650; X86-AVX2-NEXT:    vcmpleps %ymm0, %ymm1, %ymm1651; X86-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm2 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0]652; X86-AVX2-NEXT:    vcmpltps %ymm2, %ymm0, %ymm2653; X86-AVX2-NEXT:    vorps %ymm2, %ymm1, %ymm1654; X86-AVX2-NEXT:    vxorps %xmm2, %xmm2, %xmm2655; X86-AVX2-NEXT:    vcmpneqps %ymm2, %ymm0, %ymm0656; X86-AVX2-NEXT:    vorps %ymm0, %ymm1, %ymm0657; X86-AVX2-NEXT:    retl658;659; X64-AVX2-LABEL: three_or:660; X64-AVX2:       ## %bb.0: ## %entry661; X64-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm1 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]662; X64-AVX2-NEXT:    vcmpleps %ymm0, %ymm1, %ymm1663; X64-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm2 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0]664; X64-AVX2-NEXT:    vcmpltps %ymm2, %ymm0, %ymm2665; X64-AVX2-NEXT:    vorps %ymm2, %ymm1, %ymm1666; X64-AVX2-NEXT:    vxorps %xmm2, %xmm2, %xmm2667; X64-AVX2-NEXT:    vcmpneqps %ymm2, %ymm0, %ymm0668; X64-AVX2-NEXT:    vorps %ymm0, %ymm1, %ymm0669; X64-AVX2-NEXT:    retq670;671; X86-AVX512-LABEL: three_or:672; X86-AVX512:       ## %bb.0: ## %entry673; X86-AVX512-NEXT:    vcmpgeps {{\.?LCPI[0-9]+_[0-9]+}}{1to8}, %ymm0, %k0674; X86-AVX512-NEXT:    vcmpltps {{\.?LCPI[0-9]+_[0-9]+}}{1to8}, %ymm0, %k1675; X86-AVX512-NEXT:    korw %k1, %k0, %k0676; X86-AVX512-NEXT:    vxorps %xmm1, %xmm1, %xmm1677; X86-AVX512-NEXT:    vcmpneqps %ymm1, %ymm0, %k1678; X86-AVX512-NEXT:    korw %k1, %k0, %k1679; X86-AVX512-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0680; X86-AVX512-NEXT:    vmovdqa32 %ymm0, %ymm0 {%k1} {z}681; X86-AVX512-NEXT:    retl682;683; X64-AVX512-LABEL: three_or:684; X64-AVX512:       ## %bb.0: ## %entry685; X64-AVX512-NEXT:    vcmpgeps {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %k0686; X64-AVX512-NEXT:    vcmpltps {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %k1687; X64-AVX512-NEXT:    korw %k1, %k0, %k0688; X64-AVX512-NEXT:    vxorps %xmm1, %xmm1, %xmm1689; X64-AVX512-NEXT:    vcmpneqps %ymm1, %ymm0, %k1690; X64-AVX512-NEXT:    korw %k1, %k0, %k1691; X64-AVX512-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0692; X64-AVX512-NEXT:    vmovdqa32 %ymm0, %ymm0 {%k1} {z}693; X64-AVX512-NEXT:    retq694entry:695  %cmp = fcmp oge <8 x float> %x, <float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01>696  %cmp1 = fcmp olt <8 x float> %x, <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>697  %or8 = or <8 x i1> %cmp, %cmp1698  %cmp3 = fcmp une <8 x float> %x, zeroinitializer699  %or59 = or <8 x i1> %or8, %cmp3700  %or5 = sext <8 x i1> %or59 to <8 x i32>701  ret <8 x i32> %or5702}703; Function Attrs: norecurse nounwind readnone ssp uwtable704define <8 x i32> @four_or(<8 x float> %x) {705; X86-LABEL: four_or:706; X86:       ## %bb.0: ## %entry707; X86-NEXT:    vbroadcastss {{.*#+}} ymm1 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]708; X86-NEXT:    vcmpleps %ymm0, %ymm1, %ymm1709; X86-NEXT:    vcmpltps {{\.?LCPI[0-9]+_[0-9]+}}, %ymm0, %ymm2710; X86-NEXT:    vxorps %xmm3, %xmm3, %xmm3711; X86-NEXT:    vcmpneqps %ymm3, %ymm0, %ymm3712; X86-NEXT:    vorps %ymm3, %ymm2, %ymm2713; X86-NEXT:    vorps %ymm2, %ymm1, %ymm1714; X86-NEXT:    vcmpneqps {{\.?LCPI[0-9]+_[0-9]+}}, %ymm0, %ymm0715; X86-NEXT:    vorps %ymm0, %ymm1, %ymm0716; X86-NEXT:    retl717;718; X64-LABEL: four_or:719; X64:       ## %bb.0: ## %entry720; X64-NEXT:    vbroadcastss {{.*#+}} ymm1 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]721; X64-NEXT:    vcmpleps %ymm0, %ymm1, %ymm1722; X64-NEXT:    vcmpltps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm2723; X64-NEXT:    vxorps %xmm3, %xmm3, %xmm3724; X64-NEXT:    vcmpneqps %ymm3, %ymm0, %ymm3725; X64-NEXT:    vorps %ymm3, %ymm2, %ymm2726; X64-NEXT:    vorps %ymm2, %ymm1, %ymm1727; X64-NEXT:    vcmpneqps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm0728; X64-NEXT:    vorps %ymm0, %ymm1, %ymm0729; X64-NEXT:    retq730;731; X86-AVX2-LABEL: four_or:732; X86-AVX2:       ## %bb.0: ## %entry733; X86-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm1 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]734; X86-AVX2-NEXT:    vcmpleps %ymm0, %ymm1, %ymm1735; X86-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm2 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0]736; X86-AVX2-NEXT:    vcmpltps %ymm2, %ymm0, %ymm2737; X86-AVX2-NEXT:    vorps %ymm2, %ymm1, %ymm1738; X86-AVX2-NEXT:    vxorps %xmm2, %xmm2, %xmm2739; X86-AVX2-NEXT:    vcmpneqps %ymm2, %ymm0, %ymm2740; X86-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm3 = [1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1]741; X86-AVX2-NEXT:    vcmpneqps %ymm3, %ymm0, %ymm0742; X86-AVX2-NEXT:    vorps %ymm0, %ymm2, %ymm0743; X86-AVX2-NEXT:    vorps %ymm0, %ymm1, %ymm0744; X86-AVX2-NEXT:    retl745;746; X64-AVX2-LABEL: four_or:747; X64-AVX2:       ## %bb.0: ## %entry748; X64-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm1 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]749; X64-AVX2-NEXT:    vcmpleps %ymm0, %ymm1, %ymm1750; X64-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm2 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0]751; X64-AVX2-NEXT:    vcmpltps %ymm2, %ymm0, %ymm2752; X64-AVX2-NEXT:    vorps %ymm2, %ymm1, %ymm1753; X64-AVX2-NEXT:    vxorps %xmm2, %xmm2, %xmm2754; X64-AVX2-NEXT:    vcmpneqps %ymm2, %ymm0, %ymm2755; X64-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm3 = [1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1]756; X64-AVX2-NEXT:    vcmpneqps %ymm3, %ymm0, %ymm0757; X64-AVX2-NEXT:    vorps %ymm0, %ymm2, %ymm0758; X64-AVX2-NEXT:    vorps %ymm0, %ymm1, %ymm0759; X64-AVX2-NEXT:    retq760;761; X86-AVX512-LABEL: four_or:762; X86-AVX512:       ## %bb.0: ## %entry763; X86-AVX512-NEXT:    vcmpgeps {{\.?LCPI[0-9]+_[0-9]+}}{1to8}, %ymm0, %k0764; X86-AVX512-NEXT:    vcmpltps {{\.?LCPI[0-9]+_[0-9]+}}{1to8}, %ymm0, %k1765; X86-AVX512-NEXT:    korw %k1, %k0, %k0766; X86-AVX512-NEXT:    vxorps %xmm1, %xmm1, %xmm1767; X86-AVX512-NEXT:    vcmpneqps %ymm1, %ymm0, %k1768; X86-AVX512-NEXT:    korw %k1, %k0, %k0769; X86-AVX512-NEXT:    vcmpneqps {{\.?LCPI[0-9]+_[0-9]+}}{1to8}, %ymm0, %k1770; X86-AVX512-NEXT:    korw %k1, %k0, %k1771; X86-AVX512-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0772; X86-AVX512-NEXT:    vmovdqa32 %ymm0, %ymm0 {%k1} {z}773; X86-AVX512-NEXT:    retl774;775; X64-AVX512-LABEL: four_or:776; X64-AVX512:       ## %bb.0: ## %entry777; X64-AVX512-NEXT:    vcmpgeps {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %k0778; X64-AVX512-NEXT:    vcmpltps {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %k1779; X64-AVX512-NEXT:    korw %k1, %k0, %k0780; X64-AVX512-NEXT:    vxorps %xmm1, %xmm1, %xmm1781; X64-AVX512-NEXT:    vcmpneqps %ymm1, %ymm0, %k1782; X64-AVX512-NEXT:    korw %k1, %k0, %k0783; X64-AVX512-NEXT:    vcmpneqps {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %k1784; X64-AVX512-NEXT:    korw %k1, %k0, %k1785; X64-AVX512-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0786; X64-AVX512-NEXT:    vmovdqa32 %ymm0, %ymm0 {%k1} {z}787; X64-AVX512-NEXT:    retq788entry:789  %cmp = fcmp oge <8 x float> %x, <float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01>790  %cmp1 = fcmp olt <8 x float> %x, <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>791  %or12 = or <8 x i1> %cmp, %cmp1792  %cmp3 = fcmp une <8 x float> %x, zeroinitializer793  %or513 = or <8 x i1> %or12, %cmp3794  %cmp6 = fcmp une <8 x float> %x, <float 0x3FB99999A0000000, float 0x3FB99999A0000000, float 0x3FB99999A0000000, float 0x3FB99999A0000000, float 0x3FB99999A0000000, float 0x3FB99999A0000000, float 0x3FB99999A0000000, float 0x3FB99999A0000000>795  %or814 = or <8 x i1> %or513, %cmp6796  %or8 = sext <8 x i1> %or814 to <8 x i32>797  ret <8 x i32> %or8798}799; Function Attrs: norecurse nounwind readnone ssp uwtable800define <8 x i32> @five_or(<8 x float> %x) {801; X86-LABEL: five_or:802; X86:       ## %bb.0: ## %entry803; X86-NEXT:    vbroadcastss {{.*#+}} ymm1 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]804; X86-NEXT:    vcmpleps %ymm0, %ymm1, %ymm1805; X86-NEXT:    vcmpltps {{\.?LCPI[0-9]+_[0-9]+}}, %ymm0, %ymm2806; X86-NEXT:    vxorps %xmm3, %xmm3, %xmm3807; X86-NEXT:    vcmpneqps %ymm3, %ymm0, %ymm3808; X86-NEXT:    vorps %ymm3, %ymm2, %ymm2809; X86-NEXT:    vorps %ymm2, %ymm1, %ymm1810; X86-NEXT:    vcmpneqps {{\.?LCPI[0-9]+_[0-9]+}}, %ymm0, %ymm2811; X86-NEXT:    vcmpneqps {{\.?LCPI[0-9]+_[0-9]+}}, %ymm0, %ymm0812; X86-NEXT:    vorps %ymm0, %ymm2, %ymm0813; X86-NEXT:    vorps %ymm0, %ymm1, %ymm0814; X86-NEXT:    retl815;816; X64-LABEL: five_or:817; X64:       ## %bb.0: ## %entry818; X64-NEXT:    vbroadcastss {{.*#+}} ymm1 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]819; X64-NEXT:    vcmpleps %ymm0, %ymm1, %ymm1820; X64-NEXT:    vcmpltps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm2821; X64-NEXT:    vxorps %xmm3, %xmm3, %xmm3822; X64-NEXT:    vcmpneqps %ymm3, %ymm0, %ymm3823; X64-NEXT:    vorps %ymm3, %ymm2, %ymm2824; X64-NEXT:    vorps %ymm2, %ymm1, %ymm1825; X64-NEXT:    vcmpneqps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm2826; X64-NEXT:    vcmpneqps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm0827; X64-NEXT:    vorps %ymm0, %ymm2, %ymm0828; X64-NEXT:    vorps %ymm0, %ymm1, %ymm0829; X64-NEXT:    retq830;831; X86-AVX2-LABEL: five_or:832; X86-AVX2:       ## %bb.0: ## %entry833; X86-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm1 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]834; X86-AVX2-NEXT:    vcmpleps %ymm0, %ymm1, %ymm1835; X86-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm2 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0]836; X86-AVX2-NEXT:    vcmpltps %ymm2, %ymm0, %ymm2837; X86-AVX2-NEXT:    vorps %ymm2, %ymm1, %ymm1838; X86-AVX2-NEXT:    vxorps %xmm2, %xmm2, %xmm2839; X86-AVX2-NEXT:    vcmpneqps %ymm2, %ymm0, %ymm2840; X86-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm3 = [1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1]841; X86-AVX2-NEXT:    vcmpneqps %ymm3, %ymm0, %ymm3842; X86-AVX2-NEXT:    vorps %ymm3, %ymm2, %ymm2843; X86-AVX2-NEXT:    vorps %ymm2, %ymm1, %ymm1844; X86-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm2 = [2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1]845; X86-AVX2-NEXT:    vcmpneqps %ymm2, %ymm0, %ymm0846; X86-AVX2-NEXT:    vorps %ymm0, %ymm1, %ymm0847; X86-AVX2-NEXT:    retl848;849; X64-AVX2-LABEL: five_or:850; X64-AVX2:       ## %bb.0: ## %entry851; X64-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm1 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]852; X64-AVX2-NEXT:    vcmpleps %ymm0, %ymm1, %ymm1853; X64-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm2 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0]854; X64-AVX2-NEXT:    vcmpltps %ymm2, %ymm0, %ymm2855; X64-AVX2-NEXT:    vorps %ymm2, %ymm1, %ymm1856; X64-AVX2-NEXT:    vxorps %xmm2, %xmm2, %xmm2857; X64-AVX2-NEXT:    vcmpneqps %ymm2, %ymm0, %ymm2858; X64-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm3 = [1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1]859; X64-AVX2-NEXT:    vcmpneqps %ymm3, %ymm0, %ymm3860; X64-AVX2-NEXT:    vorps %ymm3, %ymm2, %ymm2861; X64-AVX2-NEXT:    vorps %ymm2, %ymm1, %ymm1862; X64-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm2 = [2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1]863; X64-AVX2-NEXT:    vcmpneqps %ymm2, %ymm0, %ymm0864; X64-AVX2-NEXT:    vorps %ymm0, %ymm1, %ymm0865; X64-AVX2-NEXT:    retq866;867; X86-AVX512-LABEL: five_or:868; X86-AVX512:       ## %bb.0: ## %entry869; X86-AVX512-NEXT:    vcmpgeps {{\.?LCPI[0-9]+_[0-9]+}}{1to8}, %ymm0, %k0870; X86-AVX512-NEXT:    vcmpltps {{\.?LCPI[0-9]+_[0-9]+}}{1to8}, %ymm0, %k1871; X86-AVX512-NEXT:    korw %k1, %k0, %k0872; X86-AVX512-NEXT:    vxorps %xmm1, %xmm1, %xmm1873; X86-AVX512-NEXT:    vcmpneqps %ymm1, %ymm0, %k1874; X86-AVX512-NEXT:    korw %k1, %k0, %k0875; X86-AVX512-NEXT:    vcmpneqps {{\.?LCPI[0-9]+_[0-9]+}}{1to8}, %ymm0, %k1876; X86-AVX512-NEXT:    korw %k1, %k0, %k0877; X86-AVX512-NEXT:    vcmpneqps {{\.?LCPI[0-9]+_[0-9]+}}{1to8}, %ymm0, %k1878; X86-AVX512-NEXT:    korw %k1, %k0, %k1879; X86-AVX512-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0880; X86-AVX512-NEXT:    vmovdqa32 %ymm0, %ymm0 {%k1} {z}881; X86-AVX512-NEXT:    retl882;883; X64-AVX512-LABEL: five_or:884; X64-AVX512:       ## %bb.0: ## %entry885; X64-AVX512-NEXT:    vcmpgeps {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %k0886; X64-AVX512-NEXT:    vcmpltps {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %k1887; X64-AVX512-NEXT:    korw %k1, %k0, %k0888; X64-AVX512-NEXT:    vxorps %xmm1, %xmm1, %xmm1889; X64-AVX512-NEXT:    vcmpneqps %ymm1, %ymm0, %k1890; X64-AVX512-NEXT:    korw %k1, %k0, %k0891; X64-AVX512-NEXT:    vcmpneqps {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %k1892; X64-AVX512-NEXT:    korw %k1, %k0, %k0893; X64-AVX512-NEXT:    vcmpneqps {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %k1894; X64-AVX512-NEXT:    korw %k1, %k0, %k1895; X64-AVX512-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0896; X64-AVX512-NEXT:    vmovdqa32 %ymm0, %ymm0 {%k1} {z}897; X64-AVX512-NEXT:    retq898entry:899  %cmp = fcmp oge <8 x float> %x, <float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01>900  %cmp1 = fcmp olt <8 x float> %x, <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>901  %or16 = or <8 x i1> %cmp, %cmp1902  %cmp3 = fcmp une <8 x float> %x, zeroinitializer903  %or517 = or <8 x i1> %or16, %cmp3904  %cmp6 = fcmp une <8 x float> %x, <float 0x3FB99999A0000000, float 0x3FB99999A0000000, float 0x3FB99999A0000000, float 0x3FB99999A0000000, float 0x3FB99999A0000000, float 0x3FB99999A0000000, float 0x3FB99999A0000000, float 0x3FB99999A0000000>905  %or818 = or <8 x i1> %or517, %cmp6906  %cmp9 = fcmp une <8 x float> %x, <float 0x3FC99999A0000000, float 0x3FC99999A0000000, float 0x3FC99999A0000000, float 0x3FC99999A0000000, float 0x3FC99999A0000000, float 0x3FC99999A0000000, float 0x3FC99999A0000000, float 0x3FC99999A0000000>907  %or1119 = or <8 x i1> %or818, %cmp9908  %or11 = sext <8 x i1> %or1119 to <8 x i32>909  ret <8 x i32> %or11910}911 912define <8 x i32> @three_or_and(<8 x float> %x) {913; X86-LABEL: three_or_and:914; X86:       ## %bb.0: ## %entry915; X86-NEXT:    vbroadcastss {{.*#+}} ymm1 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]916; X86-NEXT:    vcmpleps %ymm0, %ymm1, %ymm1917; X86-NEXT:    vcmpltps {{\.?LCPI[0-9]+_[0-9]+}}, %ymm0, %ymm2918; X86-NEXT:    vxorps %xmm3, %xmm3, %xmm3919; X86-NEXT:    vcmpneqps %ymm3, %ymm0, %ymm0920; X86-NEXT:    vandps %ymm0, %ymm2, %ymm0921; X86-NEXT:    vorps %ymm1, %ymm0, %ymm0922; X86-NEXT:    retl923;924; X64-LABEL: three_or_and:925; X64:       ## %bb.0: ## %entry926; X64-NEXT:    vbroadcastss {{.*#+}} ymm1 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]927; X64-NEXT:    vcmpleps %ymm0, %ymm1, %ymm1928; X64-NEXT:    vcmpltps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm2929; X64-NEXT:    vxorps %xmm3, %xmm3, %xmm3930; X64-NEXT:    vcmpneqps %ymm3, %ymm0, %ymm0931; X64-NEXT:    vandps %ymm0, %ymm2, %ymm0932; X64-NEXT:    vorps %ymm1, %ymm0, %ymm0933; X64-NEXT:    retq934;935; X86-AVX2-LABEL: three_or_and:936; X86-AVX2:       ## %bb.0: ## %entry937; X86-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm1 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]938; X86-AVX2-NEXT:    vcmpleps %ymm0, %ymm1, %ymm1939; X86-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm2 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0]940; X86-AVX2-NEXT:    vcmpltps %ymm2, %ymm0, %ymm2941; X86-AVX2-NEXT:    vxorps %xmm3, %xmm3, %xmm3942; X86-AVX2-NEXT:    vcmpneqps %ymm3, %ymm0, %ymm0943; X86-AVX2-NEXT:    vandps %ymm0, %ymm2, %ymm0944; X86-AVX2-NEXT:    vorps %ymm1, %ymm0, %ymm0945; X86-AVX2-NEXT:    retl946;947; X64-AVX2-LABEL: three_or_and:948; X64-AVX2:       ## %bb.0: ## %entry949; X64-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm1 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]950; X64-AVX2-NEXT:    vcmpleps %ymm0, %ymm1, %ymm1951; X64-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm2 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0]952; X64-AVX2-NEXT:    vcmpltps %ymm2, %ymm0, %ymm2953; X64-AVX2-NEXT:    vxorps %xmm3, %xmm3, %xmm3954; X64-AVX2-NEXT:    vcmpneqps %ymm3, %ymm0, %ymm0955; X64-AVX2-NEXT:    vandps %ymm0, %ymm2, %ymm0956; X64-AVX2-NEXT:    vorps %ymm1, %ymm0, %ymm0957; X64-AVX2-NEXT:    retq958;959; X86-AVX512-LABEL: three_or_and:960; X86-AVX512:       ## %bb.0: ## %entry961; X86-AVX512-NEXT:    vcmpgeps {{\.?LCPI[0-9]+_[0-9]+}}{1to8}, %ymm0, %k0962; X86-AVX512-NEXT:    vxorps %xmm1, %xmm1, %xmm1963; X86-AVX512-NEXT:    vcmpneqps %ymm1, %ymm0, %k1964; X86-AVX512-NEXT:    vcmpltps {{\.?LCPI[0-9]+_[0-9]+}}{1to8}, %ymm0, %k1 {%k1}965; X86-AVX512-NEXT:    korw %k0, %k1, %k1966; X86-AVX512-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0967; X86-AVX512-NEXT:    vmovdqa32 %ymm0, %ymm0 {%k1} {z}968; X86-AVX512-NEXT:    retl969;970; X64-AVX512-LABEL: three_or_and:971; X64-AVX512:       ## %bb.0: ## %entry972; X64-AVX512-NEXT:    vcmpgeps {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %k0973; X64-AVX512-NEXT:    vxorps %xmm1, %xmm1, %xmm1974; X64-AVX512-NEXT:    vcmpneqps %ymm1, %ymm0, %k1975; X64-AVX512-NEXT:    vcmpltps {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %k1 {%k1}976; X64-AVX512-NEXT:    korw %k0, %k1, %k1977; X64-AVX512-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0978; X64-AVX512-NEXT:    vmovdqa32 %ymm0, %ymm0 {%k1} {z}979; X64-AVX512-NEXT:    retq980entry:981  %cmp = fcmp oge <8 x float> %x, <float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01>982  %cmp1 = fcmp olt <8 x float> %x, <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>983  %cmp3 = fcmp une <8 x float> %x, zeroinitializer984  %and7 = and <8 x i1> %cmp1, %cmp3985  %or8 = or <8 x i1> %and7, %cmp986  %or = sext <8 x i1> %or8 to <8 x i32>987  ret <8 x i32> %or988}989 990define <8 x i32> @four_or_and(<8 x float> %x) {991; X86-LABEL: four_or_and:992; X86:       ## %bb.0: ## %entry993; X86-NEXT:    vbroadcastss {{.*#+}} ymm1 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]994; X86-NEXT:    vcmpleps %ymm0, %ymm1, %ymm1995; X86-NEXT:    vcmpltps {{\.?LCPI[0-9]+_[0-9]+}}, %ymm0, %ymm2996; X86-NEXT:    vandps %ymm2, %ymm1, %ymm1997; X86-NEXT:    vxorps %xmm2, %xmm2, %xmm2998; X86-NEXT:    vcmpneqps %ymm2, %ymm0, %ymm2999; X86-NEXT:    vcmpneqps {{\.?LCPI[0-9]+_[0-9]+}}, %ymm0, %ymm01000; X86-NEXT:    vandps %ymm0, %ymm2, %ymm01001; X86-NEXT:    vorps %ymm0, %ymm1, %ymm01002; X86-NEXT:    retl1003;1004; X64-LABEL: four_or_and:1005; X64:       ## %bb.0: ## %entry1006; X64-NEXT:    vbroadcastss {{.*#+}} ymm1 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]1007; X64-NEXT:    vcmpleps %ymm0, %ymm1, %ymm11008; X64-NEXT:    vcmpltps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm21009; X64-NEXT:    vandps %ymm2, %ymm1, %ymm11010; X64-NEXT:    vxorps %xmm2, %xmm2, %xmm21011; X64-NEXT:    vcmpneqps %ymm2, %ymm0, %ymm21012; X64-NEXT:    vcmpneqps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm01013; X64-NEXT:    vandps %ymm0, %ymm2, %ymm01014; X64-NEXT:    vorps %ymm0, %ymm1, %ymm01015; X64-NEXT:    retq1016;1017; X86-AVX2-LABEL: four_or_and:1018; X86-AVX2:       ## %bb.0: ## %entry1019; X86-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm1 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]1020; X86-AVX2-NEXT:    vcmpleps %ymm0, %ymm1, %ymm11021; X86-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm2 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0]1022; X86-AVX2-NEXT:    vcmpltps %ymm2, %ymm0, %ymm21023; X86-AVX2-NEXT:    vandps %ymm2, %ymm1, %ymm11024; X86-AVX2-NEXT:    vxorps %xmm2, %xmm2, %xmm21025; X86-AVX2-NEXT:    vcmpneqps %ymm2, %ymm0, %ymm21026; X86-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm3 = [1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1]1027; X86-AVX2-NEXT:    vcmpneqps %ymm3, %ymm0, %ymm01028; X86-AVX2-NEXT:    vandps %ymm0, %ymm2, %ymm01029; X86-AVX2-NEXT:    vorps %ymm0, %ymm1, %ymm01030; X86-AVX2-NEXT:    retl1031;1032; X64-AVX2-LABEL: four_or_and:1033; X64-AVX2:       ## %bb.0: ## %entry1034; X64-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm1 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]1035; X64-AVX2-NEXT:    vcmpleps %ymm0, %ymm1, %ymm11036; X64-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm2 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0]1037; X64-AVX2-NEXT:    vcmpltps %ymm2, %ymm0, %ymm21038; X64-AVX2-NEXT:    vandps %ymm2, %ymm1, %ymm11039; X64-AVX2-NEXT:    vxorps %xmm2, %xmm2, %xmm21040; X64-AVX2-NEXT:    vcmpneqps %ymm2, %ymm0, %ymm21041; X64-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm3 = [1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1]1042; X64-AVX2-NEXT:    vcmpneqps %ymm3, %ymm0, %ymm01043; X64-AVX2-NEXT:    vandps %ymm0, %ymm2, %ymm01044; X64-AVX2-NEXT:    vorps %ymm0, %ymm1, %ymm01045; X64-AVX2-NEXT:    retq1046;1047; X86-AVX512-LABEL: four_or_and:1048; X86-AVX512:       ## %bb.0: ## %entry1049; X86-AVX512-NEXT:    vcmpgeps {{\.?LCPI[0-9]+_[0-9]+}}{1to8}, %ymm0, %k11050; X86-AVX512-NEXT:    vcmpltps {{\.?LCPI[0-9]+_[0-9]+}}{1to8}, %ymm0, %k0 {%k1}1051; X86-AVX512-NEXT:    vxorps %xmm1, %xmm1, %xmm11052; X86-AVX512-NEXT:    vcmpneqps %ymm1, %ymm0, %k11053; X86-AVX512-NEXT:    vcmpneqps {{\.?LCPI[0-9]+_[0-9]+}}{1to8}, %ymm0, %k1 {%k1}1054; X86-AVX512-NEXT:    korw %k1, %k0, %k11055; X86-AVX512-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm01056; X86-AVX512-NEXT:    vmovdqa32 %ymm0, %ymm0 {%k1} {z}1057; X86-AVX512-NEXT:    retl1058;1059; X64-AVX512-LABEL: four_or_and:1060; X64-AVX512:       ## %bb.0: ## %entry1061; X64-AVX512-NEXT:    vcmpgeps {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %k11062; X64-AVX512-NEXT:    vcmpltps {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %k0 {%k1}1063; X64-AVX512-NEXT:    vxorps %xmm1, %xmm1, %xmm11064; X64-AVX512-NEXT:    vcmpneqps %ymm1, %ymm0, %k11065; X64-AVX512-NEXT:    vcmpneqps {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %k1 {%k1}1066; X64-AVX512-NEXT:    korw %k1, %k0, %k11067; X64-AVX512-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm01068; X64-AVX512-NEXT:    vmovdqa32 %ymm0, %ymm0 {%k1} {z}1069; X64-AVX512-NEXT:    retq1070entry:1071  %cmp = fcmp oge <8 x float> %x, <float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01>1072  %cmp1 = fcmp olt <8 x float> %x, <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>1073  %and11 = and <8 x i1> %cmp, %cmp11074  %cmp3 = fcmp une <8 x float> %x, zeroinitializer1075  %cmp5 = fcmp une <8 x float> %x, <float 0x3FB99999A0000000, float 0x3FB99999A0000000, float 0x3FB99999A0000000, float 0x3FB99999A0000000, float 0x3FB99999A0000000, float 0x3FB99999A0000000, float 0x3FB99999A0000000, float 0x3FB99999A0000000>1076  %and712 = and <8 x i1> %cmp3, %cmp51077  %or13 = or <8 x i1> %and11, %and7121078  %or = sext <8 x i1> %or13 to <8 x i32>1079  ret <8 x i32> %or1080}1081 1082define <8 x i32> @five_or_and(<8 x float> %x) {1083; X86-LABEL: five_or_and:1084; X86:       ## %bb.0: ## %entry1085; X86-NEXT:    vbroadcastss {{.*#+}} ymm1 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]1086; X86-NEXT:    vcmpleps %ymm0, %ymm1, %ymm11087; X86-NEXT:    vcmpltps {{\.?LCPI[0-9]+_[0-9]+}}, %ymm0, %ymm21088; X86-NEXT:    vxorps %xmm3, %xmm3, %xmm31089; X86-NEXT:    vcmpneqps %ymm3, %ymm0, %ymm31090; X86-NEXT:    vandps %ymm3, %ymm2, %ymm21091; X86-NEXT:    vorps %ymm1, %ymm2, %ymm11092; X86-NEXT:    vcmpneqps {{\.?LCPI[0-9]+_[0-9]+}}, %ymm0, %ymm21093; X86-NEXT:    vcmpneqps {{\.?LCPI[0-9]+_[0-9]+}}, %ymm0, %ymm01094; X86-NEXT:    vandps %ymm0, %ymm2, %ymm01095; X86-NEXT:    vorps %ymm0, %ymm1, %ymm01096; X86-NEXT:    retl1097;1098; X64-LABEL: five_or_and:1099; X64:       ## %bb.0: ## %entry1100; X64-NEXT:    vbroadcastss {{.*#+}} ymm1 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]1101; X64-NEXT:    vcmpleps %ymm0, %ymm1, %ymm11102; X64-NEXT:    vcmpltps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm21103; X64-NEXT:    vxorps %xmm3, %xmm3, %xmm31104; X64-NEXT:    vcmpneqps %ymm3, %ymm0, %ymm31105; X64-NEXT:    vandps %ymm3, %ymm2, %ymm21106; X64-NEXT:    vorps %ymm1, %ymm2, %ymm11107; X64-NEXT:    vcmpneqps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm21108; X64-NEXT:    vcmpneqps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm01109; X64-NEXT:    vandps %ymm0, %ymm2, %ymm01110; X64-NEXT:    vorps %ymm0, %ymm1, %ymm01111; X64-NEXT:    retq1112;1113; X86-AVX2-LABEL: five_or_and:1114; X86-AVX2:       ## %bb.0: ## %entry1115; X86-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm1 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]1116; X86-AVX2-NEXT:    vcmpleps %ymm0, %ymm1, %ymm11117; X86-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm2 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0]1118; X86-AVX2-NEXT:    vcmpltps %ymm2, %ymm0, %ymm21119; X86-AVX2-NEXT:    vxorps %xmm3, %xmm3, %xmm31120; X86-AVX2-NEXT:    vcmpneqps %ymm3, %ymm0, %ymm31121; X86-AVX2-NEXT:    vandps %ymm3, %ymm2, %ymm21122; X86-AVX2-NEXT:    vorps %ymm1, %ymm2, %ymm11123; X86-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm2 = [1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1]1124; X86-AVX2-NEXT:    vcmpneqps %ymm2, %ymm0, %ymm21125; X86-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm3 = [2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1]1126; X86-AVX2-NEXT:    vcmpneqps %ymm3, %ymm0, %ymm01127; X86-AVX2-NEXT:    vandps %ymm0, %ymm2, %ymm01128; X86-AVX2-NEXT:    vorps %ymm0, %ymm1, %ymm01129; X86-AVX2-NEXT:    retl1130;1131; X64-AVX2-LABEL: five_or_and:1132; X64-AVX2:       ## %bb.0: ## %entry1133; X64-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm1 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]1134; X64-AVX2-NEXT:    vcmpleps %ymm0, %ymm1, %ymm11135; X64-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm2 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0]1136; X64-AVX2-NEXT:    vcmpltps %ymm2, %ymm0, %ymm21137; X64-AVX2-NEXT:    vxorps %xmm3, %xmm3, %xmm31138; X64-AVX2-NEXT:    vcmpneqps %ymm3, %ymm0, %ymm31139; X64-AVX2-NEXT:    vandps %ymm3, %ymm2, %ymm21140; X64-AVX2-NEXT:    vorps %ymm1, %ymm2, %ymm11141; X64-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm2 = [1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1]1142; X64-AVX2-NEXT:    vcmpneqps %ymm2, %ymm0, %ymm21143; X64-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm3 = [2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1]1144; X64-AVX2-NEXT:    vcmpneqps %ymm3, %ymm0, %ymm01145; X64-AVX2-NEXT:    vandps %ymm0, %ymm2, %ymm01146; X64-AVX2-NEXT:    vorps %ymm0, %ymm1, %ymm01147; X64-AVX2-NEXT:    retq1148;1149; X86-AVX512-LABEL: five_or_and:1150; X86-AVX512:       ## %bb.0: ## %entry1151; X86-AVX512-NEXT:    vcmpgeps {{\.?LCPI[0-9]+_[0-9]+}}{1to8}, %ymm0, %k01152; X86-AVX512-NEXT:    vxorps %xmm1, %xmm1, %xmm11153; X86-AVX512-NEXT:    vcmpneqps %ymm1, %ymm0, %k11154; X86-AVX512-NEXT:    vcmpltps {{\.?LCPI[0-9]+_[0-9]+}}{1to8}, %ymm0, %k1 {%k1}1155; X86-AVX512-NEXT:    korw %k0, %k1, %k01156; X86-AVX512-NEXT:    vcmpneqps {{\.?LCPI[0-9]+_[0-9]+}}{1to8}, %ymm0, %k11157; X86-AVX512-NEXT:    vcmpneqps {{\.?LCPI[0-9]+_[0-9]+}}{1to8}, %ymm0, %k1 {%k1}1158; X86-AVX512-NEXT:    korw %k1, %k0, %k11159; X86-AVX512-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm01160; X86-AVX512-NEXT:    vmovdqa32 %ymm0, %ymm0 {%k1} {z}1161; X86-AVX512-NEXT:    retl1162;1163; X64-AVX512-LABEL: five_or_and:1164; X64-AVX512:       ## %bb.0: ## %entry1165; X64-AVX512-NEXT:    vcmpgeps {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %k01166; X64-AVX512-NEXT:    vxorps %xmm1, %xmm1, %xmm11167; X64-AVX512-NEXT:    vcmpneqps %ymm1, %ymm0, %k11168; X64-AVX512-NEXT:    vcmpltps {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %k1 {%k1}1169; X64-AVX512-NEXT:    korw %k0, %k1, %k01170; X64-AVX512-NEXT:    vcmpneqps {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %k11171; X64-AVX512-NEXT:    vcmpneqps {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %k1 {%k1}1172; X64-AVX512-NEXT:    korw %k1, %k0, %k11173; X64-AVX512-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm01174; X64-AVX512-NEXT:    vmovdqa32 %ymm0, %ymm0 {%k1} {z}1175; X64-AVX512-NEXT:    retq1176entry:1177  %cmp = fcmp oge <8 x float> %x, <float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01>1178  %cmp1 = fcmp olt <8 x float> %x, <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>1179  %cmp3 = fcmp une <8 x float> %x, zeroinitializer1180  %and15 = and <8 x i1> %cmp1, %cmp31181  %or16 = or <8 x i1> %and15, %cmp1182  %cmp5 = fcmp une <8 x float> %x, <float 0x3FB99999A0000000, float 0x3FB99999A0000000, float 0x3FB99999A0000000, float 0x3FB99999A0000000, float 0x3FB99999A0000000, float 0x3FB99999A0000000, float 0x3FB99999A0000000, float 0x3FB99999A0000000>1183  %cmp7 = fcmp une <8 x float> %x, <float 0x3FC99999A0000000, float 0x3FC99999A0000000, float 0x3FC99999A0000000, float 0x3FC99999A0000000, float 0x3FC99999A0000000, float 0x3FC99999A0000000, float 0x3FC99999A0000000, float 0x3FC99999A0000000>1184  %and917 = and <8 x i1> %cmp5, %cmp71185  %or1018 = or <8 x i1> %or16, %and9171186  %or10 = sext <8 x i1> %or1018 to <8 x i32>1187  ret <8 x i32> %or101188}1189 1190define <8 x i32> @four_or_and_xor(<8 x float> %x) {1191; X86-LABEL: four_or_and_xor:1192; X86:       ## %bb.0: ## %entry1193; X86-NEXT:    vbroadcastss {{.*#+}} ymm1 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]1194; X86-NEXT:    vcmpleps %ymm0, %ymm1, %ymm11195; X86-NEXT:    vcmpltps {{\.?LCPI[0-9]+_[0-9]+}}, %ymm0, %ymm21196; X86-NEXT:    vxorps %ymm2, %ymm1, %ymm11197; X86-NEXT:    vxorps %xmm2, %xmm2, %xmm21198; X86-NEXT:    vcmpneqps %ymm2, %ymm0, %ymm21199; X86-NEXT:    vcmpneqps {{\.?LCPI[0-9]+_[0-9]+}}, %ymm0, %ymm01200; X86-NEXT:    vandps %ymm0, %ymm2, %ymm01201; X86-NEXT:    vorps %ymm0, %ymm1, %ymm01202; X86-NEXT:    retl1203;1204; X64-LABEL: four_or_and_xor:1205; X64:       ## %bb.0: ## %entry1206; X64-NEXT:    vbroadcastss {{.*#+}} ymm1 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]1207; X64-NEXT:    vcmpleps %ymm0, %ymm1, %ymm11208; X64-NEXT:    vcmpltps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm21209; X64-NEXT:    vxorps %ymm2, %ymm1, %ymm11210; X64-NEXT:    vxorps %xmm2, %xmm2, %xmm21211; X64-NEXT:    vcmpneqps %ymm2, %ymm0, %ymm21212; X64-NEXT:    vcmpneqps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm01213; X64-NEXT:    vandps %ymm0, %ymm2, %ymm01214; X64-NEXT:    vorps %ymm0, %ymm1, %ymm01215; X64-NEXT:    retq1216;1217; X86-AVX2-LABEL: four_or_and_xor:1218; X86-AVX2:       ## %bb.0: ## %entry1219; X86-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm1 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]1220; X86-AVX2-NEXT:    vcmpleps %ymm0, %ymm1, %ymm11221; X86-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm2 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0]1222; X86-AVX2-NEXT:    vcmpltps %ymm2, %ymm0, %ymm21223; X86-AVX2-NEXT:    vxorps %ymm2, %ymm1, %ymm11224; X86-AVX2-NEXT:    vxorps %xmm2, %xmm2, %xmm21225; X86-AVX2-NEXT:    vcmpneqps %ymm2, %ymm0, %ymm21226; X86-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm3 = [1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1]1227; X86-AVX2-NEXT:    vcmpneqps %ymm3, %ymm0, %ymm01228; X86-AVX2-NEXT:    vandps %ymm0, %ymm2, %ymm01229; X86-AVX2-NEXT:    vorps %ymm0, %ymm1, %ymm01230; X86-AVX2-NEXT:    retl1231;1232; X64-AVX2-LABEL: four_or_and_xor:1233; X64-AVX2:       ## %bb.0: ## %entry1234; X64-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm1 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]1235; X64-AVX2-NEXT:    vcmpleps %ymm0, %ymm1, %ymm11236; X64-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm2 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0]1237; X64-AVX2-NEXT:    vcmpltps %ymm2, %ymm0, %ymm21238; X64-AVX2-NEXT:    vxorps %ymm2, %ymm1, %ymm11239; X64-AVX2-NEXT:    vxorps %xmm2, %xmm2, %xmm21240; X64-AVX2-NEXT:    vcmpneqps %ymm2, %ymm0, %ymm21241; X64-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm3 = [1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1]1242; X64-AVX2-NEXT:    vcmpneqps %ymm3, %ymm0, %ymm01243; X64-AVX2-NEXT:    vandps %ymm0, %ymm2, %ymm01244; X64-AVX2-NEXT:    vorps %ymm0, %ymm1, %ymm01245; X64-AVX2-NEXT:    retq1246;1247; X86-AVX512-LABEL: four_or_and_xor:1248; X86-AVX512:       ## %bb.0: ## %entry1249; X86-AVX512-NEXT:    vcmpgeps {{\.?LCPI[0-9]+_[0-9]+}}{1to8}, %ymm0, %k01250; X86-AVX512-NEXT:    vcmpltps {{\.?LCPI[0-9]+_[0-9]+}}{1to8}, %ymm0, %k11251; X86-AVX512-NEXT:    kxorw %k1, %k0, %k01252; X86-AVX512-NEXT:    vxorps %xmm1, %xmm1, %xmm11253; X86-AVX512-NEXT:    vcmpneqps %ymm1, %ymm0, %k11254; X86-AVX512-NEXT:    vcmpneqps {{\.?LCPI[0-9]+_[0-9]+}}{1to8}, %ymm0, %k1 {%k1}1255; X86-AVX512-NEXT:    korw %k1, %k0, %k11256; X86-AVX512-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm01257; X86-AVX512-NEXT:    vmovdqa32 %ymm0, %ymm0 {%k1} {z}1258; X86-AVX512-NEXT:    retl1259;1260; X64-AVX512-LABEL: four_or_and_xor:1261; X64-AVX512:       ## %bb.0: ## %entry1262; X64-AVX512-NEXT:    vcmpgeps {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %k01263; X64-AVX512-NEXT:    vcmpltps {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %k11264; X64-AVX512-NEXT:    kxorw %k1, %k0, %k01265; X64-AVX512-NEXT:    vxorps %xmm1, %xmm1, %xmm11266; X64-AVX512-NEXT:    vcmpneqps %ymm1, %ymm0, %k11267; X64-AVX512-NEXT:    vcmpneqps {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %k1 {%k1}1268; X64-AVX512-NEXT:    korw %k1, %k0, %k11269; X64-AVX512-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm01270; X64-AVX512-NEXT:    vmovdqa32 %ymm0, %ymm0 {%k1} {z}1271; X64-AVX512-NEXT:    retq1272entry:1273  %cmp = fcmp oge <8 x float> %x, <float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01>1274  %cmp1 = fcmp olt <8 x float> %x, <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>1275  %xor10 = xor <8 x i1> %cmp, %cmp11276  %cmp3 = fcmp une <8 x float> %x, zeroinitializer1277  %cmp5 = fcmp une <8 x float> %x, <float 0x3FB99999A0000000, float 0x3FB99999A0000000, float 0x3FB99999A0000000, float 0x3FB99999A0000000, float 0x3FB99999A0000000, float 0x3FB99999A0000000, float 0x3FB99999A0000000, float 0x3FB99999A0000000>1278  %and11 = and <8 x i1> %cmp3, %cmp51279  %or12 = or <8 x i1> %xor10, %and111280  %or = sext <8 x i1> %or12 to <8 x i32>1281  ret <8 x i32> %or1282}1283; Function Attrs: norecurse nounwind readnone ssp uwtable1284define <8 x i32> @five_or_and_xor(<8 x float> %x) {1285; X86-LABEL: five_or_and_xor:1286; X86:       ## %bb.0: ## %entry1287; X86-NEXT:    vbroadcastss {{.*#+}} ymm1 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]1288; X86-NEXT:    vcmpleps %ymm0, %ymm1, %ymm11289; X86-NEXT:    vcmpltps {{\.?LCPI[0-9]+_[0-9]+}}, %ymm0, %ymm21290; X86-NEXT:    vxorps %xmm3, %xmm3, %xmm31291; X86-NEXT:    vcmpneqps %ymm3, %ymm0, %ymm31292; X86-NEXT:    vxorps %ymm3, %ymm2, %ymm21293; X86-NEXT:    vcmpneqps {{\.?LCPI[0-9]+_[0-9]+}}, %ymm0, %ymm31294; X86-NEXT:    vcmpneqps {{\.?LCPI[0-9]+_[0-9]+}}, %ymm0, %ymm01295; X86-NEXT:    vandps %ymm0, %ymm3, %ymm01296; X86-NEXT:    vxorps %ymm0, %ymm2, %ymm01297; X86-NEXT:    vorps %ymm1, %ymm0, %ymm01298; X86-NEXT:    retl1299;1300; X64-LABEL: five_or_and_xor:1301; X64:       ## %bb.0: ## %entry1302; X64-NEXT:    vbroadcastss {{.*#+}} ymm1 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]1303; X64-NEXT:    vcmpleps %ymm0, %ymm1, %ymm11304; X64-NEXT:    vcmpltps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm21305; X64-NEXT:    vxorps %xmm3, %xmm3, %xmm31306; X64-NEXT:    vcmpneqps %ymm3, %ymm0, %ymm31307; X64-NEXT:    vxorps %ymm3, %ymm2, %ymm21308; X64-NEXT:    vcmpneqps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm31309; X64-NEXT:    vcmpneqps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm01310; X64-NEXT:    vandps %ymm0, %ymm3, %ymm01311; X64-NEXT:    vxorps %ymm0, %ymm2, %ymm01312; X64-NEXT:    vorps %ymm1, %ymm0, %ymm01313; X64-NEXT:    retq1314;1315; X86-AVX2-LABEL: five_or_and_xor:1316; X86-AVX2:       ## %bb.0: ## %entry1317; X86-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm1 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]1318; X86-AVX2-NEXT:    vcmpleps %ymm0, %ymm1, %ymm11319; X86-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm2 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0]1320; X86-AVX2-NEXT:    vcmpltps %ymm2, %ymm0, %ymm21321; X86-AVX2-NEXT:    vxorps %xmm3, %xmm3, %xmm31322; X86-AVX2-NEXT:    vcmpneqps %ymm3, %ymm0, %ymm31323; X86-AVX2-NEXT:    vxorps %ymm3, %ymm2, %ymm21324; X86-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm3 = [1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1]1325; X86-AVX2-NEXT:    vcmpneqps %ymm3, %ymm0, %ymm31326; X86-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm4 = [2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1]1327; X86-AVX2-NEXT:    vcmpneqps %ymm4, %ymm0, %ymm01328; X86-AVX2-NEXT:    vandps %ymm0, %ymm3, %ymm01329; X86-AVX2-NEXT:    vxorps %ymm0, %ymm2, %ymm01330; X86-AVX2-NEXT:    vorps %ymm1, %ymm0, %ymm01331; X86-AVX2-NEXT:    retl1332;1333; X64-AVX2-LABEL: five_or_and_xor:1334; X64-AVX2:       ## %bb.0: ## %entry1335; X64-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm1 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]1336; X64-AVX2-NEXT:    vcmpleps %ymm0, %ymm1, %ymm11337; X64-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm2 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0]1338; X64-AVX2-NEXT:    vcmpltps %ymm2, %ymm0, %ymm21339; X64-AVX2-NEXT:    vxorps %xmm3, %xmm3, %xmm31340; X64-AVX2-NEXT:    vcmpneqps %ymm3, %ymm0, %ymm31341; X64-AVX2-NEXT:    vxorps %ymm3, %ymm2, %ymm21342; X64-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm3 = [1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1]1343; X64-AVX2-NEXT:    vcmpneqps %ymm3, %ymm0, %ymm31344; X64-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm4 = [2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1]1345; X64-AVX2-NEXT:    vcmpneqps %ymm4, %ymm0, %ymm01346; X64-AVX2-NEXT:    vandps %ymm0, %ymm3, %ymm01347; X64-AVX2-NEXT:    vxorps %ymm0, %ymm2, %ymm01348; X64-AVX2-NEXT:    vorps %ymm1, %ymm0, %ymm01349; X64-AVX2-NEXT:    retq1350;1351; X86-AVX512-LABEL: five_or_and_xor:1352; X86-AVX512:       ## %bb.0: ## %entry1353; X86-AVX512-NEXT:    vcmpgeps {{\.?LCPI[0-9]+_[0-9]+}}{1to8}, %ymm0, %k01354; X86-AVX512-NEXT:    vcmpltps {{\.?LCPI[0-9]+_[0-9]+}}{1to8}, %ymm0, %k11355; X86-AVX512-NEXT:    vxorps %xmm1, %xmm1, %xmm11356; X86-AVX512-NEXT:    vcmpneqps %ymm1, %ymm0, %k21357; X86-AVX512-NEXT:    kxorw %k2, %k1, %k11358; X86-AVX512-NEXT:    vcmpneqps {{\.?LCPI[0-9]+_[0-9]+}}{1to8}, %ymm0, %k21359; X86-AVX512-NEXT:    vcmpneqps {{\.?LCPI[0-9]+_[0-9]+}}{1to8}, %ymm0, %k2 {%k2}1360; X86-AVX512-NEXT:    kxorw %k2, %k1, %k11361; X86-AVX512-NEXT:    korw %k0, %k1, %k11362; X86-AVX512-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm01363; X86-AVX512-NEXT:    vmovdqa32 %ymm0, %ymm0 {%k1} {z}1364; X86-AVX512-NEXT:    retl1365;1366; X64-AVX512-LABEL: five_or_and_xor:1367; X64-AVX512:       ## %bb.0: ## %entry1368; X64-AVX512-NEXT:    vcmpgeps {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %k01369; X64-AVX512-NEXT:    vcmpltps {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %k11370; X64-AVX512-NEXT:    vxorps %xmm1, %xmm1, %xmm11371; X64-AVX512-NEXT:    vcmpneqps %ymm1, %ymm0, %k21372; X64-AVX512-NEXT:    kxorw %k2, %k1, %k11373; X64-AVX512-NEXT:    vcmpneqps {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %k21374; X64-AVX512-NEXT:    vcmpneqps {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %k2 {%k2}1375; X64-AVX512-NEXT:    kxorw %k2, %k1, %k11376; X64-AVX512-NEXT:    korw %k0, %k1, %k11377; X64-AVX512-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm01378; X64-AVX512-NEXT:    vmovdqa32 %ymm0, %ymm0 {%k1} {z}1379; X64-AVX512-NEXT:    retq1380entry:1381  %cmp = fcmp oge <8 x float> %x, <float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01>1382  %cmp1 = fcmp olt <8 x float> %x, <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>1383  %cmp3 = fcmp une <8 x float> %x, zeroinitializer1384  %xor14 = xor <8 x i1> %cmp1, %cmp31385  %cmp5 = fcmp une <8 x float> %x, <float 0x3FB99999A0000000, float 0x3FB99999A0000000, float 0x3FB99999A0000000, float 0x3FB99999A0000000, float 0x3FB99999A0000000, float 0x3FB99999A0000000, float 0x3FB99999A0000000, float 0x3FB99999A0000000>1386  %cmp7 = fcmp une <8 x float> %x, <float 0x3FC99999A0000000, float 0x3FC99999A0000000, float 0x3FC99999A0000000, float 0x3FC99999A0000000, float 0x3FC99999A0000000, float 0x3FC99999A0000000, float 0x3FC99999A0000000, float 0x3FC99999A0000000>1387  %and15 = and <8 x i1> %cmp5, %cmp71388  %xor916 = xor <8 x i1> %xor14, %and151389  %or17 = or <8 x i1> %xor916, %cmp1390  %or = sext <8 x i1> %or17 to <8 x i32>1391  ret <8 x i32> %or1392}1393define <8 x i32> @six_or_and_xor(<8 x float> %x) {1394; X86-LABEL: six_or_and_xor:1395; X86:       ## %bb.0: ## %entry1396; X86-NEXT:    vbroadcastss {{.*#+}} ymm1 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]1397; X86-NEXT:    vcmpleps %ymm0, %ymm1, %ymm11398; X86-NEXT:    vcmpltps {{\.?LCPI[0-9]+_[0-9]+}}, %ymm0, %ymm21399; X86-NEXT:    vxorps %xmm3, %xmm3, %xmm31400; X86-NEXT:    vcmpneqps %ymm3, %ymm0, %ymm31401; X86-NEXT:    vcmpneqps {{\.?LCPI[0-9]+_[0-9]+}}, %ymm0, %ymm41402; X86-NEXT:    vandps %ymm4, %ymm3, %ymm31403; X86-NEXT:    vandps %ymm2, %ymm3, %ymm21404; X86-NEXT:    vcmpneqps {{\.?LCPI[0-9]+_[0-9]+}}, %ymm0, %ymm31405; X86-NEXT:    vxorps %ymm1, %ymm3, %ymm11406; X86-NEXT:    vxorps %ymm2, %ymm1, %ymm11407; X86-NEXT:    vcmpneqps {{\.?LCPI[0-9]+_[0-9]+}}, %ymm0, %ymm01408; X86-NEXT:    vorps %ymm0, %ymm1, %ymm01409; X86-NEXT:    retl1410;1411; X64-LABEL: six_or_and_xor:1412; X64:       ## %bb.0: ## %entry1413; X64-NEXT:    vbroadcastss {{.*#+}} ymm1 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]1414; X64-NEXT:    vcmpleps %ymm0, %ymm1, %ymm11415; X64-NEXT:    vcmpltps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm21416; X64-NEXT:    vxorps %xmm3, %xmm3, %xmm31417; X64-NEXT:    vcmpneqps %ymm3, %ymm0, %ymm31418; X64-NEXT:    vcmpneqps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm41419; X64-NEXT:    vandps %ymm4, %ymm3, %ymm31420; X64-NEXT:    vandps %ymm2, %ymm3, %ymm21421; X64-NEXT:    vcmpneqps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm31422; X64-NEXT:    vxorps %ymm1, %ymm3, %ymm11423; X64-NEXT:    vxorps %ymm2, %ymm1, %ymm11424; X64-NEXT:    vcmpneqps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm01425; X64-NEXT:    vorps %ymm0, %ymm1, %ymm01426; X64-NEXT:    retq1427;1428; X86-AVX2-LABEL: six_or_and_xor:1429; X86-AVX2:       ## %bb.0: ## %entry1430; X86-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm1 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]1431; X86-AVX2-NEXT:    vcmpleps %ymm0, %ymm1, %ymm11432; X86-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm2 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0]1433; X86-AVX2-NEXT:    vcmpltps %ymm2, %ymm0, %ymm21434; X86-AVX2-NEXT:    vxorps %xmm3, %xmm3, %xmm31435; X86-AVX2-NEXT:    vcmpneqps %ymm3, %ymm0, %ymm31436; X86-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm4 = [1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1]1437; X86-AVX2-NEXT:    vcmpneqps %ymm4, %ymm0, %ymm41438; X86-AVX2-NEXT:    vandps %ymm4, %ymm3, %ymm31439; X86-AVX2-NEXT:    vandps %ymm2, %ymm3, %ymm21440; X86-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm3 = [2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1]1441; X86-AVX2-NEXT:    vcmpneqps %ymm3, %ymm0, %ymm31442; X86-AVX2-NEXT:    vxorps %ymm1, %ymm3, %ymm11443; X86-AVX2-NEXT:    vxorps %ymm2, %ymm1, %ymm11444; X86-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm2 = [4.00000006E-1,4.00000006E-1,4.00000006E-1,4.00000006E-1,4.00000006E-1,4.00000006E-1,4.00000006E-1,4.00000006E-1]1445; X86-AVX2-NEXT:    vcmpneqps %ymm2, %ymm0, %ymm01446; X86-AVX2-NEXT:    vorps %ymm0, %ymm1, %ymm01447; X86-AVX2-NEXT:    retl1448;1449; X64-AVX2-LABEL: six_or_and_xor:1450; X64-AVX2:       ## %bb.0: ## %entry1451; X64-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm1 = [-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1,-5.0E-1]1452; X64-AVX2-NEXT:    vcmpleps %ymm0, %ymm1, %ymm11453; X64-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm2 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0]1454; X64-AVX2-NEXT:    vcmpltps %ymm2, %ymm0, %ymm21455; X64-AVX2-NEXT:    vxorps %xmm3, %xmm3, %xmm31456; X64-AVX2-NEXT:    vcmpneqps %ymm3, %ymm0, %ymm31457; X64-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm4 = [1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1,1.00000001E-1]1458; X64-AVX2-NEXT:    vcmpneqps %ymm4, %ymm0, %ymm41459; X64-AVX2-NEXT:    vandps %ymm4, %ymm3, %ymm31460; X64-AVX2-NEXT:    vandps %ymm2, %ymm3, %ymm21461; X64-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm3 = [2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1,2.00000003E-1]1462; X64-AVX2-NEXT:    vcmpneqps %ymm3, %ymm0, %ymm31463; X64-AVX2-NEXT:    vxorps %ymm1, %ymm3, %ymm11464; X64-AVX2-NEXT:    vxorps %ymm2, %ymm1, %ymm11465; X64-AVX2-NEXT:    vbroadcastss {{.*#+}} ymm2 = [4.00000006E-1,4.00000006E-1,4.00000006E-1,4.00000006E-1,4.00000006E-1,4.00000006E-1,4.00000006E-1,4.00000006E-1]1466; X64-AVX2-NEXT:    vcmpneqps %ymm2, %ymm0, %ymm01467; X64-AVX2-NEXT:    vorps %ymm0, %ymm1, %ymm01468; X64-AVX2-NEXT:    retq1469;1470; X86-AVX512-LABEL: six_or_and_xor:1471; X86-AVX512:       ## %bb.0: ## %entry1472; X86-AVX512-NEXT:    vcmpgeps {{\.?LCPI[0-9]+_[0-9]+}}{1to8}, %ymm0, %k01473; X86-AVX512-NEXT:    vxorps %xmm1, %xmm1, %xmm11474; X86-AVX512-NEXT:    vcmpneqps %ymm1, %ymm0, %k11475; X86-AVX512-NEXT:    vcmpneqps {{\.?LCPI[0-9]+_[0-9]+}}{1to8}, %ymm0, %k1 {%k1}1476; X86-AVX512-NEXT:    vcmpltps {{\.?LCPI[0-9]+_[0-9]+}}{1to8}, %ymm0, %k1 {%k1}1477; X86-AVX512-NEXT:    vcmpneqps {{\.?LCPI[0-9]+_[0-9]+}}{1to8}, %ymm0, %k21478; X86-AVX512-NEXT:    kxorw %k0, %k2, %k01479; X86-AVX512-NEXT:    kxorw %k1, %k0, %k01480; X86-AVX512-NEXT:    vcmpneqps {{\.?LCPI[0-9]+_[0-9]+}}{1to8}, %ymm0, %k11481; X86-AVX512-NEXT:    korw %k1, %k0, %k11482; X86-AVX512-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm01483; X86-AVX512-NEXT:    vmovdqa32 %ymm0, %ymm0 {%k1} {z}1484; X86-AVX512-NEXT:    retl1485;1486; X64-AVX512-LABEL: six_or_and_xor:1487; X64-AVX512:       ## %bb.0: ## %entry1488; X64-AVX512-NEXT:    vcmpgeps {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %k01489; X64-AVX512-NEXT:    vxorps %xmm1, %xmm1, %xmm11490; X64-AVX512-NEXT:    vcmpneqps %ymm1, %ymm0, %k11491; X64-AVX512-NEXT:    vcmpneqps {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %k1 {%k1}1492; X64-AVX512-NEXT:    vcmpltps {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %k1 {%k1}1493; X64-AVX512-NEXT:    vcmpneqps {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %k21494; X64-AVX512-NEXT:    kxorw %k0, %k2, %k01495; X64-AVX512-NEXT:    kxorw %k1, %k0, %k01496; X64-AVX512-NEXT:    vcmpneqps {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %k11497; X64-AVX512-NEXT:    korw %k1, %k0, %k11498; X64-AVX512-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm01499; X64-AVX512-NEXT:    vmovdqa32 %ymm0, %ymm0 {%k1} {z}1500; X64-AVX512-NEXT:    retq1501entry:1502  %cmp = fcmp oge <8 x float> %x, <float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01, float -5.000000e-01>1503  %cmp1 = fcmp olt <8 x float> %x, <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>1504  %cmp3 = fcmp une <8 x float> %x, zeroinitializer1505  %and18 = and <8 x i1> %cmp1, %cmp31506  %cmp5 = fcmp une <8 x float> %x, <float 0x3FB99999A0000000, float 0x3FB99999A0000000, float 0x3FB99999A0000000, float 0x3FB99999A0000000, float 0x3FB99999A0000000, float 0x3FB99999A0000000, float 0x3FB99999A0000000, float 0x3FB99999A0000000>1507  %and719 = and <8 x i1> %and18, %cmp51508  %cmp8 = fcmp une <8 x float> %x, <float 0x3FC99999A0000000, float 0x3FC99999A0000000, float 0x3FC99999A0000000, float 0x3FC99999A0000000, float 0x3FC99999A0000000, float 0x3FC99999A0000000, float 0x3FC99999A0000000, float 0x3FC99999A0000000>1509  %xor20 = xor <8 x i1> %cmp8, %cmp1510  %xor1021 = xor <8 x i1> %xor20, %and7191511  %cmp11 = fcmp une <8 x float> %x, <float 0x3FD99999A0000000, float 0x3FD99999A0000000, float 0x3FD99999A0000000, float 0x3FD99999A0000000, float 0x3FD99999A0000000, float 0x3FD99999A0000000, float 0x3FD99999A0000000, float 0x3FD99999A0000000>1512  %or22 = or <8 x i1> %xor1021, %cmp111513  %or = sext <8 x i1> %or22 to <8 x i32>1514  ret <8 x i32> %or1515}1516