Home | History | Annotate | Download | only in AArch64
      1 ; RUN: llc < %s -march=arm64 -aarch64-neon-syntax=apple | FileCheck %s
      2 
      3 ;CHECK: @func63
      4 ;CHECK: cmeq.4h v0, v0, v1
      5 
      6 ;FIXME: currently, it will generate 3 instructions:
      7 ; ushll.4s	v0, v0, #0
      8 ; shl.4s	v0, v0, #31
      9 ; sshr.4s	v0, v0, #31
     10 ;But these instrucitons can be optimized into 1 instruction:
     11 ; sshll.4s  v0, v0, #0
     12 
     13 ;CHECK: bsl.16b v0, v2, v3
     14 ;CHECK: str  q0, [x0]
     15 ;CHECK: ret
     16 
     17 %T0_63 = type <4 x i16>
     18 %T1_63 = type <4 x i32>
     19 %T2_63 = type <4 x i1>
     20 define void @func63(%T1_63* %out, %T0_63 %v0, %T0_63 %v1, %T1_63 %v2, %T1_63 %v3) {
     21   %cond = icmp eq %T0_63 %v0, %v1
     22   %r = select %T2_63 %cond, %T1_63 %v2, %T1_63 %v3
     23   store %T1_63 %r, %T1_63* %out
     24   ret void
     25 }
     26