Home | History | Annotate | Download | only in X86
      1 ; RUN: llc < %s -mcpu=core-avx-i -mtriple=i386-pc-win32 | FileCheck %s
      2 
      3 %struct_type = type { [64 x <8 x float>], <8 x float> }
      4 
      5 ; Function Attrs: nounwind readnone
      6 declare i32 @llvm.x86.avx.movmsk.ps.256(<8 x float>)
      7 
      8 ; Function Attrs: nounwind
      9 define i32 @equal(<8 x i32> %A) {
     10 allocas:
     11   %first_alloc  = alloca [64 x <8 x i32>]
     12   %second_alloc = alloca %struct_type
     13 
     14   %A1 = bitcast <8 x i32> %A to <8 x float>
     15   %A2 = call i32 @llvm.x86.avx.movmsk.ps.256(<8 x float> %A1)
     16   ret i32 %A2
     17 }
     18 
     19 ; CHECK: equal
     20 ; CHECK-NOT: vzeroupper
     21 ; CHECK: _chkstk
     22 ; CHECK: ret
     23 
     24 define <8 x float> @foo(<8 x float> %y, i64* %p, double %x) {
     25   %i = fptoui double %x to i64
     26   store i64 %i, i64* %p
     27   %ret = fadd <8 x float> %y, %y
     28   ret <8 x float> %ret
     29 }
     30 
     31 ; CHECK: foo
     32 ; CHECK-NOT: vzeroupper
     33 ; CHECK: {{cvtt|fist}}
     34 ; CHECK: ret
     35