; Test the MSA floating-point conversion intrinsics that are encoded with the
; 3RF instruction format.

; RUN: llc -march=mips -mattr=+msa,+fp64,+mips32r2 < %s | FileCheck %s
; RUN: llc -march=mipsel -mattr=+msa,+fp64,+mips32r2 < %s | FileCheck %s

@llvm_mips_fexdo_h_ARG1 = global <4 x float> <float 0.000000e+00, float 1.000000e+00, float 2.000000e+00, float 3.000000e+00>, align 16
@llvm_mips_fexdo_h_ARG2 = global <4 x float> <float 4.000000e+00, float 5.000000e+00, float 6.000000e+00, float 7.000000e+00>, align 16
@llvm_mips_fexdo_h_RES  = global <8 x half> <half 0.000000e+00, half 0.000000e+00, half 0.000000e+00, half 0.000000e+00, half 0.000000e+00, half 0.000000e+00, half 0.000000e+00, half 0.000000e+00>, align 16

define void @llvm_mips_fexdo_h_test() nounwind {
entry:
  %0 = load <4 x float>, <4 x float>* @llvm_mips_fexdo_h_ARG1
  %1 = load <4 x float>, <4 x float>* @llvm_mips_fexdo_h_ARG2
  %2 = tail call <8 x half> @llvm.mips.fexdo.h(<4 x float> %0, <4 x float> %1)
  store <8 x half> %2, <8 x half>* @llvm_mips_fexdo_h_RES
  ret void
}

declare <8 x half> @llvm.mips.fexdo.h(<4 x float>, <4 x float>) nounwind

; CHECK: llvm_mips_fexdo_h_test:
; CHECK: ld.w
; CHECK: ld.w
; CHECK: fexdo.h
; CHECK: st.h
; CHECK: .size llvm_mips_fexdo_h_test
;
@llvm_mips_fexdo_w_ARG1 = global <2 x double> <double 0.000000e+00, double 1.000000e+00>, align 16
@llvm_mips_fexdo_w_ARG2 = global <2 x double> <double 2.000000e+00, double 3.000000e+00>, align 16
@llvm_mips_fexdo_w_RES  = global <4 x float> <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00>, align 16

define void @llvm_mips_fexdo_w_test() nounwind {
entry:
  %0 = load <2 x double>, <2 x double>* @llvm_mips_fexdo_w_ARG1
  %1 = load <2 x double>, <2 x double>* @llvm_mips_fexdo_w_ARG2
  %2 = tail call <4 x float> @llvm.mips.fexdo.w(<2 x double> %0, <2 x double> %1)
  store <4 x float> %2, <4 x float>* @llvm_mips_fexdo_w_RES
  ret void
}

declare <4 x float> @llvm.mips.fexdo.w(<2 x double>, <2 x double>) nounwind

; CHECK: llvm_mips_fexdo_w_test:
; CHECK: ld.d
; CHECK: ld.d
; CHECK: fexdo.w
; CHECK: st.w
; CHECK: .size llvm_mips_fexdo_w_test
;
