1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+sse4.2 | FileCheck %s --check-prefixes=SSE 3; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx | FileCheck %s --check-prefixes=AVX12,AVX1 4; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx2 | FileCheck %s --check-prefixes=AVX12,AVX2 5; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f | FileCheck %s --check-prefix=AVX512 --check-prefix=AVX512F 6; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f,+avx512bw | FileCheck %s --check-prefix=AVX512 --check-prefix=AVX512BW 7 8define i32 @v32i16(<32 x i16> %a, <32 x i16> %b) { 9; SSE-LABEL: v32i16: 10; SSE: # %bb.0: 11; SSE-NEXT: pcmpgtw %xmm5, %xmm1 12; SSE-NEXT: pcmpgtw %xmm4, %xmm0 13; SSE-NEXT: packsswb %xmm1, %xmm0 14; SSE-NEXT: pmovmskb %xmm0, %ecx 15; SSE-NEXT: pcmpgtw %xmm7, %xmm3 16; SSE-NEXT: pcmpgtw %xmm6, %xmm2 17; SSE-NEXT: packsswb %xmm3, %xmm2 18; SSE-NEXT: pmovmskb %xmm2, %eax 19; SSE-NEXT: shll $16, %eax 20; SSE-NEXT: orl %ecx, %eax 21; SSE-NEXT: retq 22; 23; AVX1-LABEL: v32i16: 24; AVX1: # %bb.0: 25; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm4 26; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm5 27; AVX1-NEXT: vpcmpgtw %xmm4, %xmm5, %xmm4 28; AVX1-NEXT: vpcmpgtw %xmm2, %xmm0, %xmm0 29; AVX1-NEXT: vpacksswb %xmm4, %xmm0, %xmm0 30; AVX1-NEXT: vpmovmskb %xmm0, %ecx 31; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm0 32; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2 33; AVX1-NEXT: vpcmpgtw %xmm0, %xmm2, %xmm0 34; AVX1-NEXT: vpcmpgtw %xmm3, %xmm1, %xmm1 35; AVX1-NEXT: vpacksswb %xmm0, %xmm1, %xmm0 36; AVX1-NEXT: vpmovmskb %xmm0, %eax 37; AVX1-NEXT: shll $16, %eax 38; AVX1-NEXT: orl %ecx, %eax 39; AVX1-NEXT: vzeroupper 40; AVX1-NEXT: retq 41; 42; AVX2-LABEL: v32i16: 43; AVX2: # %bb.0: 44; AVX2-NEXT: vpcmpgtw %ymm3, %ymm1, %ymm1 45; AVX2-NEXT: vpcmpgtw %ymm2, %ymm0, %ymm0 46; AVX2-NEXT: vpacksswb %ymm1, %ymm0, %ymm0 47; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3] 48; AVX2-NEXT: vpmovmskb %ymm0, %eax 49; AVX2-NEXT: vzeroupper 50; AVX2-NEXT: retq 51; 52; AVX512F-LABEL: v32i16: 53; AVX512F: # %bb.0: 54; AVX512F-NEXT: vpcmpgtw %ymm2, %ymm0, %ymm0 55; AVX512F-NEXT: vpmovsxwd %ymm0, %zmm0 56; AVX512F-NEXT: vptestmd %zmm0, %zmm0, %k0 57; AVX512F-NEXT: kmovw %k0, %ecx 58; AVX512F-NEXT: vpcmpgtw %ymm3, %ymm1, %ymm0 59; AVX512F-NEXT: vpmovsxwd %ymm0, %zmm0 60; AVX512F-NEXT: vptestmd %zmm0, %zmm0, %k0 61; AVX512F-NEXT: kmovw %k0, %eax 62; AVX512F-NEXT: shll $16, %eax 63; AVX512F-NEXT: orl %ecx, %eax 64; AVX512F-NEXT: vzeroupper 65; AVX512F-NEXT: retq 66; 67; AVX512BW-LABEL: v32i16: 68; AVX512BW: # %bb.0: 69; AVX512BW-NEXT: vpcmpgtw %zmm1, %zmm0, %k0 70; AVX512BW-NEXT: kmovd %k0, %eax 71; AVX512BW-NEXT: vzeroupper 72; AVX512BW-NEXT: retq 73 %x = icmp sgt <32 x i16> %a, %b 74 %res = bitcast <32 x i1> %x to i32 75 ret i32 %res 76} 77 78define i16 @v16i32(<16 x i32> %a, <16 x i32> %b) { 79; SSE-LABEL: v16i32: 80; SSE: # %bb.0: 81; SSE-NEXT: pcmpgtd %xmm7, %xmm3 82; SSE-NEXT: pcmpgtd %xmm6, %xmm2 83; SSE-NEXT: packssdw %xmm3, %xmm2 84; SSE-NEXT: pcmpgtd %xmm5, %xmm1 85; SSE-NEXT: pcmpgtd %xmm4, %xmm0 86; SSE-NEXT: packssdw %xmm1, %xmm0 87; SSE-NEXT: packsswb %xmm2, %xmm0 88; SSE-NEXT: pmovmskb %xmm0, %eax 89; SSE-NEXT: # kill: def $ax killed $ax killed $eax 90; SSE-NEXT: retq 91; 92; AVX1-LABEL: v16i32: 93; AVX1: # %bb.0: 94; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm4 95; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm5 96; AVX1-NEXT: vpcmpgtd %xmm4, %xmm5, %xmm4 97; AVX1-NEXT: vpcmpgtd %xmm3, %xmm1, %xmm1 98; AVX1-NEXT: vpackssdw %xmm4, %xmm1, %xmm1 99; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm3 100; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm4 101; AVX1-NEXT: vpcmpgtd %xmm3, %xmm4, %xmm3 102; AVX1-NEXT: vpcmpgtd %xmm2, %xmm0, %xmm0 103; AVX1-NEXT: vpackssdw %xmm3, %xmm0, %xmm0 104; AVX1-NEXT: vpacksswb %xmm1, %xmm0, %xmm0 105; AVX1-NEXT: vpmovmskb %xmm0, %eax 106; AVX1-NEXT: # kill: def $ax killed $ax killed $eax 107; AVX1-NEXT: vzeroupper 108; AVX1-NEXT: retq 109; 110; AVX2-LABEL: v16i32: 111; AVX2: # %bb.0: 112; AVX2-NEXT: vpcmpgtd %ymm3, %ymm1, %ymm1 113; AVX2-NEXT: vpcmpgtd %ymm2, %ymm0, %ymm0 114; AVX2-NEXT: vpackssdw %ymm1, %ymm0, %ymm0 115; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3] 116; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 117; AVX2-NEXT: vpacksswb %xmm1, %xmm0, %xmm0 118; AVX2-NEXT: vpmovmskb %xmm0, %eax 119; AVX2-NEXT: # kill: def $ax killed $ax killed $eax 120; AVX2-NEXT: vzeroupper 121; AVX2-NEXT: retq 122; 123; AVX512F-LABEL: v16i32: 124; AVX512F: # %bb.0: 125; AVX512F-NEXT: vpcmpgtd %zmm1, %zmm0, %k0 126; AVX512F-NEXT: kmovw %k0, %eax 127; AVX512F-NEXT: # kill: def $ax killed $ax killed $eax 128; AVX512F-NEXT: vzeroupper 129; AVX512F-NEXT: retq 130; 131; AVX512BW-LABEL: v16i32: 132; AVX512BW: # %bb.0: 133; AVX512BW-NEXT: vpcmpgtd %zmm1, %zmm0, %k0 134; AVX512BW-NEXT: kmovd %k0, %eax 135; AVX512BW-NEXT: # kill: def $ax killed $ax killed $eax 136; AVX512BW-NEXT: vzeroupper 137; AVX512BW-NEXT: retq 138 %x = icmp sgt <16 x i32> %a, %b 139 %res = bitcast <16 x i1> %x to i16 140 ret i16 %res 141} 142 143define i16 @v16f32(<16 x float> %a, <16 x float> %b) { 144; SSE-LABEL: v16f32: 145; SSE: # %bb.0: 146; SSE-NEXT: cmpltps %xmm3, %xmm7 147; SSE-NEXT: cmpltps %xmm2, %xmm6 148; SSE-NEXT: packssdw %xmm7, %xmm6 149; SSE-NEXT: cmpltps %xmm1, %xmm5 150; SSE-NEXT: cmpltps %xmm0, %xmm4 151; SSE-NEXT: packssdw %xmm5, %xmm4 152; SSE-NEXT: packsswb %xmm6, %xmm4 153; SSE-NEXT: pmovmskb %xmm4, %eax 154; SSE-NEXT: # kill: def $ax killed $ax killed $eax 155; SSE-NEXT: retq 156; 157; AVX1-LABEL: v16f32: 158; AVX1: # %bb.0: 159; AVX1-NEXT: vcmpltps %ymm1, %ymm3, %ymm1 160; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm3 161; AVX1-NEXT: vpackssdw %xmm3, %xmm1, %xmm1 162; AVX1-NEXT: vcmpltps %ymm0, %ymm2, %ymm0 163; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm2 164; AVX1-NEXT: vpackssdw %xmm2, %xmm0, %xmm0 165; AVX1-NEXT: vpacksswb %xmm1, %xmm0, %xmm0 166; AVX1-NEXT: vpmovmskb %xmm0, %eax 167; AVX1-NEXT: # kill: def $ax killed $ax killed $eax 168; AVX1-NEXT: vzeroupper 169; AVX1-NEXT: retq 170; 171; AVX2-LABEL: v16f32: 172; AVX2: # %bb.0: 173; AVX2-NEXT: vcmpltps %ymm1, %ymm3, %ymm1 174; AVX2-NEXT: vcmpltps %ymm0, %ymm2, %ymm0 175; AVX2-NEXT: vpackssdw %ymm1, %ymm0, %ymm0 176; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3] 177; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 178; AVX2-NEXT: vpacksswb %xmm1, %xmm0, %xmm0 179; AVX2-NEXT: vpmovmskb %xmm0, %eax 180; AVX2-NEXT: # kill: def $ax killed $ax killed $eax 181; AVX2-NEXT: vzeroupper 182; AVX2-NEXT: retq 183; 184; AVX512F-LABEL: v16f32: 185; AVX512F: # %bb.0: 186; AVX512F-NEXT: vcmpltps %zmm0, %zmm1, %k0 187; AVX512F-NEXT: kmovw %k0, %eax 188; AVX512F-NEXT: # kill: def $ax killed $ax killed $eax 189; AVX512F-NEXT: vzeroupper 190; AVX512F-NEXT: retq 191; 192; AVX512BW-LABEL: v16f32: 193; AVX512BW: # %bb.0: 194; AVX512BW-NEXT: vcmpltps %zmm0, %zmm1, %k0 195; AVX512BW-NEXT: kmovd %k0, %eax 196; AVX512BW-NEXT: # kill: def $ax killed $ax killed $eax 197; AVX512BW-NEXT: vzeroupper 198; AVX512BW-NEXT: retq 199 %x = fcmp ogt <16 x float> %a, %b 200 %res = bitcast <16 x i1> %x to i16 201 ret i16 %res 202} 203 204define i64 @v64i8(<64 x i8> %a, <64 x i8> %b) { 205; SSE-LABEL: v64i8: 206; SSE: # %bb.0: 207; SSE-NEXT: pcmpgtb %xmm4, %xmm0 208; SSE-NEXT: pmovmskb %xmm0, %eax 209; SSE-NEXT: pcmpgtb %xmm5, %xmm1 210; SSE-NEXT: pmovmskb %xmm1, %ecx 211; SSE-NEXT: shll $16, %ecx 212; SSE-NEXT: orl %eax, %ecx 213; SSE-NEXT: pcmpgtb %xmm6, %xmm2 214; SSE-NEXT: pmovmskb %xmm2, %edx 215; SSE-NEXT: pcmpgtb %xmm7, %xmm3 216; SSE-NEXT: pmovmskb %xmm3, %eax 217; SSE-NEXT: shll $16, %eax 218; SSE-NEXT: orl %edx, %eax 219; SSE-NEXT: shlq $32, %rax 220; SSE-NEXT: orq %rcx, %rax 221; SSE-NEXT: retq 222; 223; AVX1-LABEL: v64i8: 224; AVX1: # %bb.0: 225; AVX1-NEXT: vpcmpgtb %xmm2, %xmm0, %xmm4 226; AVX1-NEXT: vpmovmskb %xmm4, %eax 227; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm2 228; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0 229; AVX1-NEXT: vpcmpgtb %xmm2, %xmm0, %xmm0 230; AVX1-NEXT: vpmovmskb %xmm0, %ecx 231; AVX1-NEXT: shll $16, %ecx 232; AVX1-NEXT: orl %eax, %ecx 233; AVX1-NEXT: vpcmpgtb %xmm3, %xmm1, %xmm0 234; AVX1-NEXT: vpmovmskb %xmm0, %edx 235; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm0 236; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm1 237; AVX1-NEXT: vpcmpgtb %xmm0, %xmm1, %xmm0 238; AVX1-NEXT: vpmovmskb %xmm0, %eax 239; AVX1-NEXT: shll $16, %eax 240; AVX1-NEXT: orl %edx, %eax 241; AVX1-NEXT: shlq $32, %rax 242; AVX1-NEXT: orq %rcx, %rax 243; AVX1-NEXT: vzeroupper 244; AVX1-NEXT: retq 245; 246; AVX2-LABEL: v64i8: 247; AVX2: # %bb.0: 248; AVX2-NEXT: vpcmpgtb %ymm2, %ymm0, %ymm0 249; AVX2-NEXT: vpmovmskb %ymm0, %ecx 250; AVX2-NEXT: vpcmpgtb %ymm3, %ymm1, %ymm0 251; AVX2-NEXT: vpmovmskb %ymm0, %eax 252; AVX2-NEXT: shlq $32, %rax 253; AVX2-NEXT: orq %rcx, %rax 254; AVX2-NEXT: vzeroupper 255; AVX2-NEXT: retq 256; 257; AVX512F-LABEL: v64i8: 258; AVX512F: # %bb.0: 259; AVX512F-NEXT: vpcmpgtb %ymm2, %ymm0, %ymm0 260; AVX512F-NEXT: vpmovsxbd %xmm0, %zmm2 261; AVX512F-NEXT: vptestmd %zmm2, %zmm2, %k0 262; AVX512F-NEXT: kmovw %k0, %eax 263; AVX512F-NEXT: vextracti128 $1, %ymm0, %xmm0 264; AVX512F-NEXT: vpmovsxbd %xmm0, %zmm0 265; AVX512F-NEXT: vptestmd %zmm0, %zmm0, %k0 266; AVX512F-NEXT: kmovw %k0, %ecx 267; AVX512F-NEXT: shll $16, %ecx 268; AVX512F-NEXT: orl %eax, %ecx 269; AVX512F-NEXT: vpcmpgtb %ymm3, %ymm1, %ymm0 270; AVX512F-NEXT: vpmovsxbd %xmm0, %zmm1 271; AVX512F-NEXT: vptestmd %zmm1, %zmm1, %k0 272; AVX512F-NEXT: kmovw %k0, %edx 273; AVX512F-NEXT: vextracti128 $1, %ymm0, %xmm0 274; AVX512F-NEXT: vpmovsxbd %xmm0, %zmm0 275; AVX512F-NEXT: vptestmd %zmm0, %zmm0, %k0 276; AVX512F-NEXT: kmovw %k0, %eax 277; AVX512F-NEXT: shll $16, %eax 278; AVX512F-NEXT: orl %edx, %eax 279; AVX512F-NEXT: shlq $32, %rax 280; AVX512F-NEXT: orq %rcx, %rax 281; AVX512F-NEXT: vzeroupper 282; AVX512F-NEXT: retq 283; 284; AVX512BW-LABEL: v64i8: 285; AVX512BW: # %bb.0: 286; AVX512BW-NEXT: vpcmpgtb %zmm1, %zmm0, %k0 287; AVX512BW-NEXT: kmovq %k0, %rax 288; AVX512BW-NEXT: vzeroupper 289; AVX512BW-NEXT: retq 290 %x = icmp sgt <64 x i8> %a, %b 291 %res = bitcast <64 x i1> %x to i64 292 ret i64 %res 293} 294 295define i8 @v8i64(<8 x i64> %a, <8 x i64> %b) { 296; SSE-LABEL: v8i64: 297; SSE: # %bb.0: 298; SSE-NEXT: pcmpgtq %xmm7, %xmm3 299; SSE-NEXT: pcmpgtq %xmm6, %xmm2 300; SSE-NEXT: packssdw %xmm3, %xmm2 301; SSE-NEXT: pcmpgtq %xmm5, %xmm1 302; SSE-NEXT: pcmpgtq %xmm4, %xmm0 303; SSE-NEXT: packssdw %xmm1, %xmm0 304; SSE-NEXT: packssdw %xmm2, %xmm0 305; SSE-NEXT: packsswb %xmm0, %xmm0 306; SSE-NEXT: pmovmskb %xmm0, %eax 307; SSE-NEXT: # kill: def $al killed $al killed $eax 308; SSE-NEXT: retq 309; 310; AVX1-LABEL: v8i64: 311; AVX1: # %bb.0: 312; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm4 313; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm5 314; AVX1-NEXT: vpcmpgtq %xmm4, %xmm5, %xmm4 315; AVX1-NEXT: vpcmpgtq %xmm3, %xmm1, %xmm1 316; AVX1-NEXT: vpackssdw %xmm4, %xmm1, %xmm1 317; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm3 318; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm4 319; AVX1-NEXT: vpcmpgtq %xmm3, %xmm4, %xmm3 320; AVX1-NEXT: vpcmpgtq %xmm2, %xmm0, %xmm0 321; AVX1-NEXT: vpackssdw %xmm3, %xmm0, %xmm0 322; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 323; AVX1-NEXT: vmovmskps %ymm0, %eax 324; AVX1-NEXT: # kill: def $al killed $al killed $eax 325; AVX1-NEXT: vzeroupper 326; AVX1-NEXT: retq 327; 328; AVX2-LABEL: v8i64: 329; AVX2: # %bb.0: 330; AVX2-NEXT: vpcmpgtq %ymm3, %ymm1, %ymm1 331; AVX2-NEXT: vpcmpgtq %ymm2, %ymm0, %ymm0 332; AVX2-NEXT: vpackssdw %ymm1, %ymm0, %ymm0 333; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3] 334; AVX2-NEXT: vmovmskps %ymm0, %eax 335; AVX2-NEXT: # kill: def $al killed $al killed $eax 336; AVX2-NEXT: vzeroupper 337; AVX2-NEXT: retq 338; 339; AVX512F-LABEL: v8i64: 340; AVX512F: # %bb.0: 341; AVX512F-NEXT: vpcmpgtq %zmm1, %zmm0, %k0 342; AVX512F-NEXT: kmovw %k0, %eax 343; AVX512F-NEXT: # kill: def $al killed $al killed $eax 344; AVX512F-NEXT: vzeroupper 345; AVX512F-NEXT: retq 346; 347; AVX512BW-LABEL: v8i64: 348; AVX512BW: # %bb.0: 349; AVX512BW-NEXT: vpcmpgtq %zmm1, %zmm0, %k0 350; AVX512BW-NEXT: kmovd %k0, %eax 351; AVX512BW-NEXT: # kill: def $al killed $al killed $eax 352; AVX512BW-NEXT: vzeroupper 353; AVX512BW-NEXT: retq 354 %x = icmp sgt <8 x i64> %a, %b 355 %res = bitcast <8 x i1> %x to i8 356 ret i8 %res 357} 358 359define i8 @v8f64(<8 x double> %a, <8 x double> %b) { 360; SSE-LABEL: v8f64: 361; SSE: # %bb.0: 362; SSE-NEXT: cmpltpd %xmm3, %xmm7 363; SSE-NEXT: cmpltpd %xmm2, %xmm6 364; SSE-NEXT: packssdw %xmm7, %xmm6 365; SSE-NEXT: cmpltpd %xmm1, %xmm5 366; SSE-NEXT: cmpltpd %xmm0, %xmm4 367; SSE-NEXT: packssdw %xmm5, %xmm4 368; SSE-NEXT: packssdw %xmm6, %xmm4 369; SSE-NEXT: packsswb %xmm0, %xmm4 370; SSE-NEXT: pmovmskb %xmm4, %eax 371; SSE-NEXT: # kill: def $al killed $al killed $eax 372; SSE-NEXT: retq 373; 374; AVX1-LABEL: v8f64: 375; AVX1: # %bb.0: 376; AVX1-NEXT: vcmpltpd %ymm1, %ymm3, %ymm1 377; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm3 378; AVX1-NEXT: vpackssdw %xmm3, %xmm1, %xmm1 379; AVX1-NEXT: vcmpltpd %ymm0, %ymm2, %ymm0 380; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm2 381; AVX1-NEXT: vpackssdw %xmm2, %xmm0, %xmm0 382; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 383; AVX1-NEXT: vmovmskps %ymm0, %eax 384; AVX1-NEXT: # kill: def $al killed $al killed $eax 385; AVX1-NEXT: vzeroupper 386; AVX1-NEXT: retq 387; 388; AVX2-LABEL: v8f64: 389; AVX2: # %bb.0: 390; AVX2-NEXT: vcmpltpd %ymm1, %ymm3, %ymm1 391; AVX2-NEXT: vcmpltpd %ymm0, %ymm2, %ymm0 392; AVX2-NEXT: vpackssdw %ymm1, %ymm0, %ymm0 393; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3] 394; AVX2-NEXT: vmovmskps %ymm0, %eax 395; AVX2-NEXT: # kill: def $al killed $al killed $eax 396; AVX2-NEXT: vzeroupper 397; AVX2-NEXT: retq 398; 399; AVX512F-LABEL: v8f64: 400; AVX512F: # %bb.0: 401; AVX512F-NEXT: vcmpltpd %zmm0, %zmm1, %k0 402; AVX512F-NEXT: kmovw %k0, %eax 403; AVX512F-NEXT: # kill: def $al killed $al killed $eax 404; AVX512F-NEXT: vzeroupper 405; AVX512F-NEXT: retq 406; 407; AVX512BW-LABEL: v8f64: 408; AVX512BW: # %bb.0: 409; AVX512BW-NEXT: vcmpltpd %zmm0, %zmm1, %k0 410; AVX512BW-NEXT: kmovd %k0, %eax 411; AVX512BW-NEXT: # kill: def $al killed $al killed $eax 412; AVX512BW-NEXT: vzeroupper 413; AVX512BW-NEXT: retq 414 %x = fcmp ogt <8 x double> %a, %b 415 %res = bitcast <8 x i1> %x to i8 416 ret i8 %res 417} 418