blob: 54e416de7da22c3b6bbebec4631c2f0b24039334 [file] [log] [blame]
Jack Carterb95ee692013-08-15 13:45:36 +00001; RUN: llc -march=mips -mattr=+msa < %s | FileCheck %s
2
3@llvm_mips_fexupl_w_ARG1 = global <8 x half> <half 0.000000e+00, half 1.000000e+00, half 2.000000e+00, half 3.000000e+00, half 4.000000e+00, half 5.000000e+00, half 6.000000e+00, half 7.000000e+00>, align 16
4@llvm_mips_fexupl_w_RES = global <4 x float> <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00>, align 16
5
6define void @llvm_mips_fexupl_w_test() nounwind {
7entry:
8 %0 = load <8 x half>* @llvm_mips_fexupl_w_ARG1
9 %1 = tail call <4 x float> @llvm.mips.fexupl.w(<8 x half> %0)
10 store <4 x float> %1, <4 x float>* @llvm_mips_fexupl_w_RES
11 ret void
12}
13
14declare <4 x float> @llvm.mips.fexupl.w(<8 x half>) nounwind
15
16; CHECK: llvm_mips_fexupl_w_test:
17; CHECK: ld.h
18; CHECK: fexupl.w
19; CHECK: st.w
20; CHECK: .size llvm_mips_fexupl_w_test
21;
22@llvm_mips_fexupl_d_ARG1 = global <4 x float> <float 0.000000e+00, float 1.000000e+00, float 2.000000e+00, float 3.000000e+00>, align 16
23@llvm_mips_fexupl_d_RES = global <2 x double> <double 0.000000e+00, double 0.000000e+00>, align 16
24
25define void @llvm_mips_fexupl_d_test() nounwind {
26entry:
27 %0 = load <4 x float>* @llvm_mips_fexupl_d_ARG1
28 %1 = tail call <2 x double> @llvm.mips.fexupl.d(<4 x float> %0)
29 store <2 x double> %1, <2 x double>* @llvm_mips_fexupl_d_RES
30 ret void
31}
32
33declare <2 x double> @llvm.mips.fexupl.d(<4 x float>) nounwind
34
35; CHECK: llvm_mips_fexupl_d_test:
36; CHECK: ld.w
37; CHECK: fexupl.d
38; CHECK: st.d
39; CHECK: .size llvm_mips_fexupl_d_test
40;
41@llvm_mips_fexupr_w_ARG1 = global <8 x half> <half 0.000000e+00, half 1.000000e+00, half 2.000000e+00, half 3.000000e+00, half 4.000000e+00, half 5.000000e+00, half 6.000000e+00, half 7.000000e+00>, align 16
42@llvm_mips_fexupr_w_RES = global <4 x float> <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00>, align 16
43
44define void @llvm_mips_fexupr_w_test() nounwind {
45entry:
46 %0 = load <8 x half>* @llvm_mips_fexupr_w_ARG1
47 %1 = tail call <4 x float> @llvm.mips.fexupr.w(<8 x half> %0)
48 store <4 x float> %1, <4 x float>* @llvm_mips_fexupr_w_RES
49 ret void
50}
51
52declare <4 x float> @llvm.mips.fexupr.w(<8 x half>) nounwind
53
54; CHECK: llvm_mips_fexupr_w_test:
55; CHECK: ld.h
56; CHECK: fexupr.w
57; CHECK: st.w
58; CHECK: .size llvm_mips_fexupr_w_test
59;
60@llvm_mips_fexupr_d_ARG1 = global <4 x float> <float 0.000000e+00, float 1.000000e+00, float 2.000000e+00, float 3.000000e+00>, align 16
61@llvm_mips_fexupr_d_RES = global <2 x double> <double 0.000000e+00, double 0.000000e+00>, align 16
62
63define void @llvm_mips_fexupr_d_test() nounwind {
64entry:
65 %0 = load <4 x float>* @llvm_mips_fexupr_d_ARG1
66 %1 = tail call <2 x double> @llvm.mips.fexupr.d(<4 x float> %0)
67 store <2 x double> %1, <2 x double>* @llvm_mips_fexupr_d_RES
68 ret void
69}
70
71declare <2 x double> @llvm.mips.fexupr.d(<4 x float>) nounwind
72
73; CHECK: llvm_mips_fexupr_d_test:
74; CHECK: ld.w
75; CHECK: fexupr.d
76; CHECK: st.d
77; CHECK: .size llvm_mips_fexupr_d_test
78;