Home | History | Annotate | Download | only in X86
      1 ; RUN: llc < %s -march=x86 -mcpu=corei7 | FileCheck %s
      2 ; RUN: llc < %s -march=x86 -mcpu=core-avx-i | FileCheck %s --check-prefix=AVX
      3 
      4 define <1 x float> @test1(<1 x double>* %p) nounwind {
      5 ; CHECK: test1
      6 ; CHECK: cvtsd2ss
      7 ; CHECK: ret
      8 ; AVX:   test1
      9 ; AVX:   vcvtsd2ss
     10 ; AVX:   ret
     11   %x = load <1 x double>* %p
     12   %y = fptrunc <1 x double> %x to <1 x float>
     13   ret <1 x float> %y
     14 }
     15 
     16 define <2 x float> @test2(<2 x double>* %p) nounwind {
     17 ; CHECK: test2
     18 ; CHECK: cvtpd2ps {{[0-9]*}}(%{{.*}})
     19 ; CHECK: ret
     20 ; AVX:   test2
     21 ; AVX:   vcvtpd2psx {{[0-9]*}}(%{{.*}})
     22 ; AVX:   ret
     23   %x = load <2 x double>* %p
     24   %y = fptrunc <2 x double> %x to <2 x float>
     25   ret <2 x float> %y
     26 }
     27 
     28 define <4 x float> @test3(<4 x double>* %p) nounwind {
     29 ; CHECK: test3
     30 ; CHECK: cvtpd2ps {{[0-9]*}}(%{{.*}})
     31 ; CHECK: cvtpd2ps {{[0-9]*}}(%{{.*}})
     32 ; CHECK: movlhps
     33 ; CHECK: ret
     34 ; AVX:   test3
     35 ; AVX:   vcvtpd2psy {{[0-9]*}}(%{{.*}})
     36 ; AVX:   ret
     37   %x = load <4 x double>* %p
     38   %y = fptrunc <4 x double> %x to <4 x float>
     39   ret <4 x float> %y
     40 }
     41 
     42 define <8 x float> @test4(<8 x double>* %p) nounwind {
     43 ; CHECK: test4
     44 ; CHECK: cvtpd2ps {{[0-9]*}}(%{{.*}})
     45 ; CHECK: cvtpd2ps {{[0-9]*}}(%{{.*}})
     46 ; CHECK: movlhps
     47 ; CHECK: cvtpd2ps {{[0-9]*}}(%{{.*}})
     48 ; CHECK: cvtpd2ps {{[0-9]*}}(%{{.*}})
     49 ; CHECK: movlhps
     50 ; CHECK: ret
     51 ; AVX:   test4
     52 ; AVX:   vcvtpd2psy
     53 ; AVX:   vcvtpd2psy
     54 ; AVX:   vinsertf128
     55 ; AVX:   ret
     56   %x = load <8 x double>* %p
     57   %y = fptrunc <8 x double> %x to <8 x float>
     58   ret <8 x float> %y
     59 }
     60 
     61 
     62