Home | History | Annotate | Download | only in X86
      1 ; RUN: llc < %s -march=x86 -mattr=+avx,+f16c | FileCheck %s
      2 ; RUN: llc < %s -march=x86-64 -mattr=+avx,+f16c | FileCheck %s
      3 
      4 define <4 x float> @test_x86_vcvtph2ps_128(<8 x i16> %a0) {
      5   ; CHECK: vcvtph2ps
      6   %res = call <4 x float> @llvm.x86.vcvtph2ps.128(<8 x i16> %a0) ; <<4 x float>> [#uses=1]
      7   ret <4 x float> %res
      8 }
      9 declare <4 x float> @llvm.x86.vcvtph2ps.128(<8 x i16>) nounwind readonly
     10 
     11 
     12 define <8 x float> @test_x86_vcvtph2ps_256(<8 x i16> %a0) {
     13   ; CHECK: vcvtph2ps
     14   %res = call <8 x float> @llvm.x86.vcvtph2ps.256(<8 x i16> %a0) ; <<8 x float>> [#uses=1]
     15   ret <8 x float> %res
     16 }
     17 declare <8 x float> @llvm.x86.vcvtph2ps.256(<8 x i16>) nounwind readonly
     18 
     19 
     20 define <8 x i16> @test_x86_vcvtps2ph_128(<4 x float> %a0) {
     21   ; CHECK: vcvtps2ph
     22   %res = call <8 x i16> @llvm.x86.vcvtps2ph.128(<4 x float> %a0, i32 0) ; <<8 x i16>> [#uses=1]
     23   ret <8 x i16> %res
     24 }
     25 declare <8 x i16> @llvm.x86.vcvtps2ph.128(<4 x float>, i32) nounwind readonly
     26 
     27 
     28 define <8 x i16> @test_x86_vcvtps2ph_256(<8 x float> %a0) {
     29   ; CHECK: vcvtps2ph
     30   %res = call <8 x i16> @llvm.x86.vcvtps2ph.256(<8 x float> %a0, i32 0) ; <<8 x i16>> [#uses=1]
     31   ret <8 x i16> %res
     32 }
     33 declare <8 x i16> @llvm.x86.vcvtps2ph.256(<8 x float>, i32) nounwind readonly
     34 
     35 define <4 x float> @test_x86_vcvtps2ph_128_scalar(i64* %ptr) {
     36 ; CHECK-LABEL: test_x86_vcvtps2ph_128_scalar
     37 ; CHECK-NOT: vmov
     38 ; CHECK: vcvtph2ps (%
     39 
     40   %load = load i64* %ptr
     41   %ins1 = insertelement <2 x i64> undef, i64 %load, i32 0
     42   %ins2 = insertelement <2 x i64> %ins1, i64 0, i32 1
     43   %bc = bitcast <2 x i64> %ins2 to <8 x i16>
     44   %res = tail call <4 x float> @llvm.x86.vcvtph2ps.128(<8 x i16> %bc) #2
     45   ret <4 x float> %res
     46 }
     47