brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.5 KiB · 38179d9 Raw
160 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f,+avx512bw,+avx512vl,+avx512dq -O2 | FileCheck %s --check-prefix=AVX512-ALL3; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f -O2| FileCheck %s --check-prefix=AVX512-ONLY4 5define void @load_v1i2_trunc_v1i1_store(ptr %a0,ptr %a1) {6; AVX512-ALL-LABEL: load_v1i2_trunc_v1i1_store:7; AVX512-ALL:       # %bb.0:8; AVX512-ALL-NEXT:    kmovb (%rdi), %k09; AVX512-ALL-NEXT:    kshiftlb $7, %k0, %k010; AVX512-ALL-NEXT:    kshiftrb $7, %k0, %k011; AVX512-ALL-NEXT:    kmovb %k0, (%rsi)12; AVX512-ALL-NEXT:    retq13;14; AVX512-ONLY-LABEL: load_v1i2_trunc_v1i1_store:15; AVX512-ONLY:       # %bb.0:16; AVX512-ONLY-NEXT:    movzbl (%rdi), %eax17; AVX512-ONLY-NEXT:    andl $1, %eax18; AVX512-ONLY-NEXT:    kmovw %eax, %k019; AVX512-ONLY-NEXT:    kmovw %k0, %eax20; AVX512-ONLY-NEXT:    movb %al, (%rsi)21; AVX512-ONLY-NEXT:    retq22    %d0 = load <1 x i2>, ptr %a023    %d1 = trunc <1 x i2> %d0 to <1 x i1>24    store <1 x i1> %d1, ptr %a125    ret void26}27define void @load_v1i3_trunc_v1i1_store(ptr %a0,ptr %a1) {28; AVX512-ALL-LABEL: load_v1i3_trunc_v1i1_store:29; AVX512-ALL:       # %bb.0:30; AVX512-ALL-NEXT:    kmovb (%rdi), %k031; AVX512-ALL-NEXT:    kshiftlb $7, %k0, %k032; AVX512-ALL-NEXT:    kshiftrb $7, %k0, %k033; AVX512-ALL-NEXT:    kmovb %k0, (%rsi)34; AVX512-ALL-NEXT:    retq35;36; AVX512-ONLY-LABEL: load_v1i3_trunc_v1i1_store:37; AVX512-ONLY:       # %bb.0:38; AVX512-ONLY-NEXT:    movzbl (%rdi), %eax39; AVX512-ONLY-NEXT:    andl $1, %eax40; AVX512-ONLY-NEXT:    kmovw %eax, %k041; AVX512-ONLY-NEXT:    kmovw %k0, %eax42; AVX512-ONLY-NEXT:    movb %al, (%rsi)43; AVX512-ONLY-NEXT:    retq44    %d0 = load <1 x i3>, ptr %a045    %d1 = trunc <1 x i3> %d0 to <1 x i1>46    store <1 x i1> %d1, ptr %a147    ret void48}49define void @load_v1i4_trunc_v1i1_store(ptr %a0,ptr %a1) {50; AVX512-ALL-LABEL: load_v1i4_trunc_v1i1_store:51; AVX512-ALL:       # %bb.0:52; AVX512-ALL-NEXT:    kmovb (%rdi), %k053; AVX512-ALL-NEXT:    kshiftlb $7, %k0, %k054; AVX512-ALL-NEXT:    kshiftrb $7, %k0, %k055; AVX512-ALL-NEXT:    kmovb %k0, (%rsi)56; AVX512-ALL-NEXT:    retq57;58; AVX512-ONLY-LABEL: load_v1i4_trunc_v1i1_store:59; AVX512-ONLY:       # %bb.0:60; AVX512-ONLY-NEXT:    movzbl (%rdi), %eax61; AVX512-ONLY-NEXT:    andl $1, %eax62; AVX512-ONLY-NEXT:    kmovw %eax, %k063; AVX512-ONLY-NEXT:    kmovw %k0, %eax64; AVX512-ONLY-NEXT:    movb %al, (%rsi)65; AVX512-ONLY-NEXT:    retq66    %d0 = load <1 x i4>, ptr %a067    %d1 = trunc <1 x i4> %d0 to <1 x i1>68    store <1 x i1> %d1, ptr %a169    ret void70}71define void @load_v1i8_trunc_v1i1_store(ptr %a0,ptr %a1) {72; AVX512-ALL-LABEL: load_v1i8_trunc_v1i1_store:73; AVX512-ALL:       # %bb.0:74; AVX512-ALL-NEXT:    kmovb (%rdi), %k075; AVX512-ALL-NEXT:    kshiftlb $7, %k0, %k076; AVX512-ALL-NEXT:    kshiftrb $7, %k0, %k077; AVX512-ALL-NEXT:    kmovb %k0, (%rsi)78; AVX512-ALL-NEXT:    retq79;80; AVX512-ONLY-LABEL: load_v1i8_trunc_v1i1_store:81; AVX512-ONLY:       # %bb.0:82; AVX512-ONLY-NEXT:    movzbl (%rdi), %eax83; AVX512-ONLY-NEXT:    andl $1, %eax84; AVX512-ONLY-NEXT:    kmovw %eax, %k085; AVX512-ONLY-NEXT:    kmovw %k0, %eax86; AVX512-ONLY-NEXT:    movb %al, (%rsi)87; AVX512-ONLY-NEXT:    retq88    %d0 = load <1 x i8>, ptr %a089    %d1 = trunc <1 x i8> %d0 to <1 x i1>90    store <1 x i1> %d1, ptr %a191    ret void92}93define void @load_v1i16_trunc_v1i1_store(ptr %a0,ptr %a1) {94; AVX512-ALL-LABEL: load_v1i16_trunc_v1i1_store:95; AVX512-ALL:       # %bb.0:96; AVX512-ALL-NEXT:    kmovb (%rdi), %k097; AVX512-ALL-NEXT:    kshiftlb $7, %k0, %k098; AVX512-ALL-NEXT:    kshiftrb $7, %k0, %k099; AVX512-ALL-NEXT:    kmovb %k0, (%rsi)100; AVX512-ALL-NEXT:    retq101;102; AVX512-ONLY-LABEL: load_v1i16_trunc_v1i1_store:103; AVX512-ONLY:       # %bb.0:104; AVX512-ONLY-NEXT:    movzbl (%rdi), %eax105; AVX512-ONLY-NEXT:    andl $1, %eax106; AVX512-ONLY-NEXT:    kmovw %eax, %k0107; AVX512-ONLY-NEXT:    kmovw %k0, %eax108; AVX512-ONLY-NEXT:    movb %al, (%rsi)109; AVX512-ONLY-NEXT:    retq110    %d0 = load <1 x i16>, ptr %a0111    %d1 = trunc <1 x i16> %d0 to <1 x i1>112    store <1 x i1> %d1, ptr %a1113    ret void114}115define void @load_v1i32_trunc_v1i1_store(ptr %a0,ptr %a1) {116; AVX512-ALL-LABEL: load_v1i32_trunc_v1i1_store:117; AVX512-ALL:       # %bb.0:118; AVX512-ALL-NEXT:    kmovb (%rdi), %k0119; AVX512-ALL-NEXT:    kshiftlb $7, %k0, %k0120; AVX512-ALL-NEXT:    kshiftrb $7, %k0, %k0121; AVX512-ALL-NEXT:    kmovb %k0, (%rsi)122; AVX512-ALL-NEXT:    retq123;124; AVX512-ONLY-LABEL: load_v1i32_trunc_v1i1_store:125; AVX512-ONLY:       # %bb.0:126; AVX512-ONLY-NEXT:    movzbl (%rdi), %eax127; AVX512-ONLY-NEXT:    andl $1, %eax128; AVX512-ONLY-NEXT:    kmovw %eax, %k0129; AVX512-ONLY-NEXT:    kmovw %k0, %eax130; AVX512-ONLY-NEXT:    movb %al, (%rsi)131; AVX512-ONLY-NEXT:    retq132    %d0 = load <1 x i32>, ptr %a0133    %d1 = trunc <1 x i32> %d0 to <1 x i1>134    store <1 x i1> %d1, ptr %a1135    ret void136}137define void @load_v1i64_trunc_v1i1_store(ptr %a0,ptr %a1) {138; AVX512-ALL-LABEL: load_v1i64_trunc_v1i1_store:139; AVX512-ALL:       # %bb.0:140; AVX512-ALL-NEXT:    kmovb (%rdi), %k0141; AVX512-ALL-NEXT:    kshiftlb $7, %k0, %k0142; AVX512-ALL-NEXT:    kshiftrb $7, %k0, %k0143; AVX512-ALL-NEXT:    kmovb %k0, (%rsi)144; AVX512-ALL-NEXT:    retq145;146; AVX512-ONLY-LABEL: load_v1i64_trunc_v1i1_store:147; AVX512-ONLY:       # %bb.0:148; AVX512-ONLY-NEXT:    movzbl (%rdi), %eax149; AVX512-ONLY-NEXT:    andl $1, %eax150; AVX512-ONLY-NEXT:    kmovw %eax, %k0151; AVX512-ONLY-NEXT:    kmovw %k0, %eax152; AVX512-ONLY-NEXT:    movb %al, (%rsi)153; AVX512-ONLY-NEXT:    retq154    %d0 = load <1 x i64>, ptr %a0155    %d1 = trunc <1 x i64> %d0 to <1 x i1>156    store <1 x i1> %d1, ptr %a1157    ret void158}159 160