blob: b9a0879c9244c6778a76c11d6665b478c32c59e0 [file] [log] [blame]
Akira Hatanaka2df483e2012-09-27 02:11:20 +00001; RUN: llc -march=mipsel -mattr=+dspr2 < %s | FileCheck %s
2
3define i64 @test__builtin_mips_dpa_w_ph1(i32 %i0, i32, i64 %a0, i32 %a1.coerce, i32 %a2.coerce) nounwind readnone {
4entry:
5; CHECK: dpa.w.ph
6
7 %1 = bitcast i32 %a1.coerce to <2 x i16>
8 %2 = bitcast i32 %a2.coerce to <2 x i16>
9 %3 = tail call i64 @llvm.mips.dpa.w.ph(i64 %a0, <2 x i16> %1, <2 x i16> %2)
10 ret i64 %3
11}
12
13declare i64 @llvm.mips.dpa.w.ph(i64, <2 x i16>, <2 x i16>) nounwind readnone
14
15define i64 @test__builtin_mips_dps_w_ph1(i32 %i0, i32, i64 %a0, i32 %a1.coerce, i32 %a2.coerce) nounwind readnone {
16entry:
17; CHECK: dps.w.ph
18
19 %1 = bitcast i32 %a1.coerce to <2 x i16>
20 %2 = bitcast i32 %a2.coerce to <2 x i16>
21 %3 = tail call i64 @llvm.mips.dps.w.ph(i64 %a0, <2 x i16> %1, <2 x i16> %2)
22 ret i64 %3
23}
24
25declare i64 @llvm.mips.dps.w.ph(i64, <2 x i16>, <2 x i16>) nounwind readnone
26
27define i64 @test__builtin_mips_mulsa_w_ph1(i32 %i0, i32, i64 %a0, i32 %a1.coerce, i32 %a2.coerce) nounwind readnone {
28entry:
29; CHECK: mulsa.w.ph
30
31 %1 = bitcast i32 %a1.coerce to <2 x i16>
32 %2 = bitcast i32 %a2.coerce to <2 x i16>
33 %3 = tail call i64 @llvm.mips.mulsa.w.ph(i64 %a0, <2 x i16> %1, <2 x i16> %2)
34 ret i64 %3
35}
36
37declare i64 @llvm.mips.mulsa.w.ph(i64, <2 x i16>, <2 x i16>) nounwind readnone
38
39define i64 @test__builtin_mips_dpax_w_ph1(i32 %i0, i32, i64 %a0, i32 %a1.coerce, i32 %a2.coerce) nounwind readnone {
40entry:
41; CHECK: dpax.w.ph
42
43 %1 = bitcast i32 %a1.coerce to <2 x i16>
44 %2 = bitcast i32 %a2.coerce to <2 x i16>
45 %3 = tail call i64 @llvm.mips.dpax.w.ph(i64 %a0, <2 x i16> %1, <2 x i16> %2)
46 ret i64 %3
47}
48
49declare i64 @llvm.mips.dpax.w.ph(i64, <2 x i16>, <2 x i16>) nounwind readnone
50
51define i64 @test__builtin_mips_dpsx_w_ph1(i32 %i0, i32, i64 %a0, i32 %a1.coerce, i32 %a2.coerce) nounwind readnone {
52entry:
53; CHECK: dpsx.w.ph
54
55 %1 = bitcast i32 %a1.coerce to <2 x i16>
56 %2 = bitcast i32 %a2.coerce to <2 x i16>
57 %3 = tail call i64 @llvm.mips.dpsx.w.ph(i64 %a0, <2 x i16> %1, <2 x i16> %2)
58 ret i64 %3
59}
60
61declare i64 @llvm.mips.dpsx.w.ph(i64, <2 x i16>, <2 x i16>) nounwind readnone
62
63define i64 @test__builtin_mips_dpaqx_s_w_ph1(i32 %i0, i32, i64 %a0, i32 %a1.coerce, i32 %a2.coerce) nounwind {
64entry:
65; CHECK: dpaqx_s.w.ph
66
67 %1 = bitcast i32 %a1.coerce to <2 x i16>
68 %2 = bitcast i32 %a2.coerce to <2 x i16>
69 %3 = tail call i64 @llvm.mips.dpaqx.s.w.ph(i64 %a0, <2 x i16> %1, <2 x i16> %2)
70 ret i64 %3
71}
72
73declare i64 @llvm.mips.dpaqx.s.w.ph(i64, <2 x i16>, <2 x i16>) nounwind
74
75define i64 @test__builtin_mips_dpaqx_sa_w_ph1(i32 %i0, i32, i64 %a0, i32 %a1.coerce, i32 %a2.coerce) nounwind {
76entry:
77; CHECK: dpaqx_sa.w.ph
78
79 %1 = bitcast i32 %a1.coerce to <2 x i16>
80 %2 = bitcast i32 %a2.coerce to <2 x i16>
81 %3 = tail call i64 @llvm.mips.dpaqx.sa.w.ph(i64 %a0, <2 x i16> %1, <2 x i16> %2)
82 ret i64 %3
83}
84
85declare i64 @llvm.mips.dpaqx.sa.w.ph(i64, <2 x i16>, <2 x i16>) nounwind
86
87define i64 @test__builtin_mips_dpsqx_s_w_ph1(i32 %i0, i32, i64 %a0, i32 %a1.coerce, i32 %a2.coerce) nounwind {
88entry:
89; CHECK: dpsqx_s.w.ph
90
91 %1 = bitcast i32 %a1.coerce to <2 x i16>
92 %2 = bitcast i32 %a2.coerce to <2 x i16>
93 %3 = tail call i64 @llvm.mips.dpsqx.s.w.ph(i64 %a0, <2 x i16> %1, <2 x i16> %2)
94 ret i64 %3
95}
96
97declare i64 @llvm.mips.dpsqx.s.w.ph(i64, <2 x i16>, <2 x i16>) nounwind
98
99define i64 @test__builtin_mips_dpsqx_sa_w_ph1(i32 %i0, i32, i64 %a0, i32 %a1.coerce, i32 %a2.coerce) nounwind {
100entry:
101; CHECK: dpsqx_sa.w.ph
102
103 %1 = bitcast i32 %a1.coerce to <2 x i16>
104 %2 = bitcast i32 %a2.coerce to <2 x i16>
105 %3 = tail call i64 @llvm.mips.dpsqx.sa.w.ph(i64 %a0, <2 x i16> %1, <2 x i16> %2)
106 ret i64 %3
107}
108
109declare i64 @llvm.mips.dpsqx.sa.w.ph(i64, <2 x i16>, <2 x i16>) nounwind