Home | History | Annotate | Download | only in X86
      1 ; RUN: llc < %s -march=x86-64 -mtriple=x86_64-apple-darwin -mcpu=skx | FileCheck %s
      2 
      3 define i8 @mask8(i8 %x) {
      4   %m0 = bitcast i8 %x to <8 x i1>
      5   %m1 = xor <8 x i1> %m0, <i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1>
      6   %ret = bitcast <8 x i1> %m1 to i8
      7   ret i8 %ret
      8 ; CHECK: mask8
      9 ; CHECK: knotb
     10 ; CHECK: ret
     11 }
     12 
     13 define void @mask8_mem(i8* %ptr) {
     14   %x = load i8, i8* %ptr, align 4
     15   %m0 = bitcast i8 %x to <8 x i1>
     16   %m1 = xor <8 x i1> %m0, <i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1>
     17   %ret = bitcast <8 x i1> %m1 to i8
     18   store i8 %ret, i8* %ptr, align 4
     19   ret void
     20 ; CHECK-LABEL: mask8_mem
     21 ; CHECK: kmovb ([[ARG1:%rdi|%rcx]]), %k{{[0-7]}}
     22 ; CHECK-NEXT: knotb
     23 ; CHECK-NEXT: kmovb %k{{[0-7]}}, ([[ARG1]])
     24 ; CHECK: ret
     25 }
     26 
     27 define i8 @mand8(i8 %x, i8 %y) {
     28   %ma = bitcast i8 %x to <8 x i1>
     29   %mb = bitcast i8 %y to <8 x i1>
     30   %mc = and <8 x i1> %ma, %mb
     31   %md = xor <8 x i1> %ma, %mb
     32   %me = or <8 x i1> %mc, %md
     33   %ret = bitcast <8 x i1> %me to i8
     34 ; CHECK: kandb
     35 ; CHECK: kxorb
     36 ; CHECK: korb
     37   ret i8 %ret
     38 }
     39