xref: /aosp_15_r20/external/llvm/test/CodeGen/Mips/msa/3r-a.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; Test the MSA intrinsics that are encoded with the 3R instruction format.
2*9880d681SAndroid Build Coastguard Worker; There are lots of these so this covers those beginning with 'a'
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=mips -mattr=+msa,+fp64 -relocation-model=pic < %s | FileCheck %s
5*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=mipsel -mattr=+msa,+fp64 -relocation-model=pic < %s | FileCheck %s
6*9880d681SAndroid Build Coastguard Worker
7*9880d681SAndroid Build Coastguard Worker; It should fail to compile without fp64.
8*9880d681SAndroid Build Coastguard Worker; RUN: not llc -march=mips -mattr=+msa < %s 2>&1 | \
9*9880d681SAndroid Build Coastguard Worker; RUN:    FileCheck -check-prefix=FP32ERROR %s
10*9880d681SAndroid Build Coastguard Worker; FP32ERROR: LLVM ERROR: MSA requires a 64-bit FPU register file (FR=1 mode).
11*9880d681SAndroid Build Coastguard Worker
12*9880d681SAndroid Build Coastguard Worker@llvm_mips_add_a_b_ARG1 = global <16 x i8> <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 8, i8 9, i8 10, i8 11, i8 12, i8 13, i8 14, i8 15>, align 16
13*9880d681SAndroid Build Coastguard Worker@llvm_mips_add_a_b_ARG2 = global <16 x i8> <i8 16, i8 17, i8 18, i8 19, i8 20, i8 21, i8 22, i8 23, i8 24, i8 25, i8 26, i8 27, i8 28, i8 29, i8 30, i8 31>, align 16
14*9880d681SAndroid Build Coastguard Worker@llvm_mips_add_a_b_RES  = global <16 x i8> <i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0>, align 16
15*9880d681SAndroid Build Coastguard Worker
16*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_add_a_b_test() nounwind {
17*9880d681SAndroid Build Coastguard Workerentry:
18*9880d681SAndroid Build Coastguard Worker  %0 = load <16 x i8>, <16 x i8>* @llvm_mips_add_a_b_ARG1
19*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* @llvm_mips_add_a_b_ARG2
20*9880d681SAndroid Build Coastguard Worker  %2 = tail call <16 x i8> @llvm.mips.add.a.b(<16 x i8> %0, <16 x i8> %1)
21*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %2, <16 x i8>* @llvm_mips_add_a_b_RES
22*9880d681SAndroid Build Coastguard Worker  ret void
23*9880d681SAndroid Build Coastguard Worker}
24*9880d681SAndroid Build Coastguard Worker
25*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.mips.add.a.b(<16 x i8>, <16 x i8>) nounwind
26*9880d681SAndroid Build Coastguard Worker
27*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_add_a_b_test:
28*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_add_a_b_ARG1)
29*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_add_a_b_ARG2)
30*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.b [[WS:\$w[0-9]+]], 0([[R1]])
31*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.b [[WT:\$w[0-9]+]], 0([[R2]])
32*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: add_a.b [[WD:\$w[0-9]+]], [[WS]], [[WT]]
33*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R3:\$[0-9]+]], %got(llvm_mips_add_a_b_RES)
34*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.b [[WD]], 0([[R3]])
35*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_add_a_b_test
36*9880d681SAndroid Build Coastguard Worker;
37*9880d681SAndroid Build Coastguard Worker@llvm_mips_add_a_h_ARG1 = global <8 x i16> <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>, align 16
38*9880d681SAndroid Build Coastguard Worker@llvm_mips_add_a_h_ARG2 = global <8 x i16> <i16 8, i16 9, i16 10, i16 11, i16 12, i16 13, i16 14, i16 15>, align 16
39*9880d681SAndroid Build Coastguard Worker@llvm_mips_add_a_h_RES  = global <8 x i16> <i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0>, align 16
40*9880d681SAndroid Build Coastguard Worker
41*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_add_a_h_test() nounwind {
42*9880d681SAndroid Build Coastguard Workerentry:
43*9880d681SAndroid Build Coastguard Worker  %0 = load <8 x i16>, <8 x i16>* @llvm_mips_add_a_h_ARG1
44*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* @llvm_mips_add_a_h_ARG2
45*9880d681SAndroid Build Coastguard Worker  %2 = tail call <8 x i16> @llvm.mips.add.a.h(<8 x i16> %0, <8 x i16> %1)
46*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %2, <8 x i16>* @llvm_mips_add_a_h_RES
47*9880d681SAndroid Build Coastguard Worker  ret void
48*9880d681SAndroid Build Coastguard Worker}
49*9880d681SAndroid Build Coastguard Worker
50*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.mips.add.a.h(<8 x i16>, <8 x i16>) nounwind
51*9880d681SAndroid Build Coastguard Worker
52*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_add_a_h_test:
53*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_add_a_h_ARG1)
54*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_add_a_h_ARG2)
55*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.h [[WS:\$w[0-9]+]], 0([[R1]])
56*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.h [[WT:\$w[0-9]+]], 0([[R2]])
57*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: add_a.h [[WD:\$w[0-9]+]], [[WS]], [[WT]]
58*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R3:\$[0-9]+]], %got(llvm_mips_add_a_h_RES)
59*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.h [[WD]], 0([[R3]])
60*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_add_a_h_test
61*9880d681SAndroid Build Coastguard Worker;
62*9880d681SAndroid Build Coastguard Worker@llvm_mips_add_a_w_ARG1 = global <4 x i32> <i32 0, i32 1, i32 2, i32 3>, align 16
63*9880d681SAndroid Build Coastguard Worker@llvm_mips_add_a_w_ARG2 = global <4 x i32> <i32 4, i32 5, i32 6, i32 7>, align 16
64*9880d681SAndroid Build Coastguard Worker@llvm_mips_add_a_w_RES  = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16
65*9880d681SAndroid Build Coastguard Worker
66*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_add_a_w_test() nounwind {
67*9880d681SAndroid Build Coastguard Workerentry:
68*9880d681SAndroid Build Coastguard Worker  %0 = load <4 x i32>, <4 x i32>* @llvm_mips_add_a_w_ARG1
69*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* @llvm_mips_add_a_w_ARG2
70*9880d681SAndroid Build Coastguard Worker  %2 = tail call <4 x i32> @llvm.mips.add.a.w(<4 x i32> %0, <4 x i32> %1)
71*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %2, <4 x i32>* @llvm_mips_add_a_w_RES
72*9880d681SAndroid Build Coastguard Worker  ret void
73*9880d681SAndroid Build Coastguard Worker}
74*9880d681SAndroid Build Coastguard Worker
75*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.mips.add.a.w(<4 x i32>, <4 x i32>) nounwind
76*9880d681SAndroid Build Coastguard Worker
77*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_add_a_w_test:
78*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_add_a_w_ARG1)
79*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_add_a_w_ARG2)
80*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.w [[WS:\$w[0-9]+]], 0([[R1]])
81*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.w [[WT:\$w[0-9]+]], 0([[R2]])
82*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: add_a.w [[WD:\$w[0-9]+]], [[WS]], [[WT]]
83*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R3:\$[0-9]+]], %got(llvm_mips_add_a_w_RES)
84*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.w [[WD]], 0([[R3]])
85*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_add_a_w_test
86*9880d681SAndroid Build Coastguard Worker;
87*9880d681SAndroid Build Coastguard Worker@llvm_mips_add_a_d_ARG1 = global <2 x i64> <i64 0, i64 1>, align 16
88*9880d681SAndroid Build Coastguard Worker@llvm_mips_add_a_d_ARG2 = global <2 x i64> <i64 2, i64 3>, align 16
89*9880d681SAndroid Build Coastguard Worker@llvm_mips_add_a_d_RES  = global <2 x i64> <i64 0, i64 0>, align 16
90*9880d681SAndroid Build Coastguard Worker
91*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_add_a_d_test() nounwind {
92*9880d681SAndroid Build Coastguard Workerentry:
93*9880d681SAndroid Build Coastguard Worker  %0 = load <2 x i64>, <2 x i64>* @llvm_mips_add_a_d_ARG1
94*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* @llvm_mips_add_a_d_ARG2
95*9880d681SAndroid Build Coastguard Worker  %2 = tail call <2 x i64> @llvm.mips.add.a.d(<2 x i64> %0, <2 x i64> %1)
96*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %2, <2 x i64>* @llvm_mips_add_a_d_RES
97*9880d681SAndroid Build Coastguard Worker  ret void
98*9880d681SAndroid Build Coastguard Worker}
99*9880d681SAndroid Build Coastguard Worker
100*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.mips.add.a.d(<2 x i64>, <2 x i64>) nounwind
101*9880d681SAndroid Build Coastguard Worker
102*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_add_a_d_test:
103*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_add_a_d_ARG1)
104*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_add_a_d_ARG2)
105*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.d [[WS:\$w[0-9]+]], 0([[R1]])
106*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.d [[WT:\$w[0-9]+]], 0([[R2]])
107*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: add_a.d [[WD:\$w[0-9]+]], [[WS]], [[WT]]
108*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R3:\$[0-9]+]], %got(llvm_mips_add_a_d_RES)
109*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.d [[WD]], 0([[R3]])
110*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_add_a_d_test
111*9880d681SAndroid Build Coastguard Worker;
112*9880d681SAndroid Build Coastguard Worker@llvm_mips_adds_a_b_ARG1 = global <16 x i8> <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 8, i8 9, i8 10, i8 11, i8 12, i8 13, i8 14, i8 15>, align 16
113*9880d681SAndroid Build Coastguard Worker@llvm_mips_adds_a_b_ARG2 = global <16 x i8> <i8 16, i8 17, i8 18, i8 19, i8 20, i8 21, i8 22, i8 23, i8 24, i8 25, i8 26, i8 27, i8 28, i8 29, i8 30, i8 31>, align 16
114*9880d681SAndroid Build Coastguard Worker@llvm_mips_adds_a_b_RES  = global <16 x i8> <i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0>, align 16
115*9880d681SAndroid Build Coastguard Worker
116*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_adds_a_b_test() nounwind {
117*9880d681SAndroid Build Coastguard Workerentry:
118*9880d681SAndroid Build Coastguard Worker  %0 = load <16 x i8>, <16 x i8>* @llvm_mips_adds_a_b_ARG1
119*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* @llvm_mips_adds_a_b_ARG2
120*9880d681SAndroid Build Coastguard Worker  %2 = tail call <16 x i8> @llvm.mips.adds.a.b(<16 x i8> %0, <16 x i8> %1)
121*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %2, <16 x i8>* @llvm_mips_adds_a_b_RES
122*9880d681SAndroid Build Coastguard Worker  ret void
123*9880d681SAndroid Build Coastguard Worker}
124*9880d681SAndroid Build Coastguard Worker
125*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.mips.adds.a.b(<16 x i8>, <16 x i8>) nounwind
126*9880d681SAndroid Build Coastguard Worker
127*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_adds_a_b_test:
128*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_adds_a_b_ARG1)
129*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_adds_a_b_ARG2)
130*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.b [[WS:\$w[0-9]+]], 0([[R1]])
131*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.b [[WT:\$w[0-9]+]], 0([[R2]])
132*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: adds_a.b [[WD:\$w[0-9]+]], [[WS]], [[WT]]
133*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R3:\$[0-9]+]], %got(llvm_mips_adds_a_b_RES)
134*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.b [[WD]], 0([[R3]])
135*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_adds_a_b_test
136*9880d681SAndroid Build Coastguard Worker;
137*9880d681SAndroid Build Coastguard Worker@llvm_mips_adds_a_h_ARG1 = global <8 x i16> <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>, align 16
138*9880d681SAndroid Build Coastguard Worker@llvm_mips_adds_a_h_ARG2 = global <8 x i16> <i16 8, i16 9, i16 10, i16 11, i16 12, i16 13, i16 14, i16 15>, align 16
139*9880d681SAndroid Build Coastguard Worker@llvm_mips_adds_a_h_RES  = global <8 x i16> <i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0>, align 16
140*9880d681SAndroid Build Coastguard Worker
141*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_adds_a_h_test() nounwind {
142*9880d681SAndroid Build Coastguard Workerentry:
143*9880d681SAndroid Build Coastguard Worker  %0 = load <8 x i16>, <8 x i16>* @llvm_mips_adds_a_h_ARG1
144*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* @llvm_mips_adds_a_h_ARG2
145*9880d681SAndroid Build Coastguard Worker  %2 = tail call <8 x i16> @llvm.mips.adds.a.h(<8 x i16> %0, <8 x i16> %1)
146*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %2, <8 x i16>* @llvm_mips_adds_a_h_RES
147*9880d681SAndroid Build Coastguard Worker  ret void
148*9880d681SAndroid Build Coastguard Worker}
149*9880d681SAndroid Build Coastguard Worker
150*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.mips.adds.a.h(<8 x i16>, <8 x i16>) nounwind
151*9880d681SAndroid Build Coastguard Worker
152*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_adds_a_h_test:
153*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_adds_a_h_ARG1)
154*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_adds_a_h_ARG2)
155*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.h [[WS:\$w[0-9]+]], 0([[R1]])
156*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.h [[WT:\$w[0-9]+]], 0([[R2]])
157*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: adds_a.h [[WD:\$w[0-9]+]], [[WS]], [[WT]]
158*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R3:\$[0-9]+]], %got(llvm_mips_adds_a_h_RES)
159*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.h [[WD]], 0([[R3]])
160*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_adds_a_h_test
161*9880d681SAndroid Build Coastguard Worker;
162*9880d681SAndroid Build Coastguard Worker@llvm_mips_adds_a_w_ARG1 = global <4 x i32> <i32 0, i32 1, i32 2, i32 3>, align 16
163*9880d681SAndroid Build Coastguard Worker@llvm_mips_adds_a_w_ARG2 = global <4 x i32> <i32 4, i32 5, i32 6, i32 7>, align 16
164*9880d681SAndroid Build Coastguard Worker@llvm_mips_adds_a_w_RES  = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16
165*9880d681SAndroid Build Coastguard Worker
166*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_adds_a_w_test() nounwind {
167*9880d681SAndroid Build Coastguard Workerentry:
168*9880d681SAndroid Build Coastguard Worker  %0 = load <4 x i32>, <4 x i32>* @llvm_mips_adds_a_w_ARG1
169*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* @llvm_mips_adds_a_w_ARG2
170*9880d681SAndroid Build Coastguard Worker  %2 = tail call <4 x i32> @llvm.mips.adds.a.w(<4 x i32> %0, <4 x i32> %1)
171*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %2, <4 x i32>* @llvm_mips_adds_a_w_RES
172*9880d681SAndroid Build Coastguard Worker  ret void
173*9880d681SAndroid Build Coastguard Worker}
174*9880d681SAndroid Build Coastguard Worker
175*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.mips.adds.a.w(<4 x i32>, <4 x i32>) nounwind
176*9880d681SAndroid Build Coastguard Worker
177*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_adds_a_w_test:
178*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_adds_a_w_ARG1)
179*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_adds_a_w_ARG2)
180*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.w [[WS:\$w[0-9]+]], 0([[R1]])
181*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.w [[WT:\$w[0-9]+]], 0([[R2]])
182*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: adds_a.w [[WD:\$w[0-9]+]], [[WS]], [[WT]]
183*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R3:\$[0-9]+]], %got(llvm_mips_adds_a_w_RES)
184*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.w [[WD]], 0([[R3]])
185*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_adds_a_w_test
186*9880d681SAndroid Build Coastguard Worker;
187*9880d681SAndroid Build Coastguard Worker@llvm_mips_adds_a_d_ARG1 = global <2 x i64> <i64 0, i64 1>, align 16
188*9880d681SAndroid Build Coastguard Worker@llvm_mips_adds_a_d_ARG2 = global <2 x i64> <i64 2, i64 3>, align 16
189*9880d681SAndroid Build Coastguard Worker@llvm_mips_adds_a_d_RES  = global <2 x i64> <i64 0, i64 0>, align 16
190*9880d681SAndroid Build Coastguard Worker
191*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_adds_a_d_test() nounwind {
192*9880d681SAndroid Build Coastguard Workerentry:
193*9880d681SAndroid Build Coastguard Worker  %0 = load <2 x i64>, <2 x i64>* @llvm_mips_adds_a_d_ARG1
194*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* @llvm_mips_adds_a_d_ARG2
195*9880d681SAndroid Build Coastguard Worker  %2 = tail call <2 x i64> @llvm.mips.adds.a.d(<2 x i64> %0, <2 x i64> %1)
196*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %2, <2 x i64>* @llvm_mips_adds_a_d_RES
197*9880d681SAndroid Build Coastguard Worker  ret void
198*9880d681SAndroid Build Coastguard Worker}
199*9880d681SAndroid Build Coastguard Worker
200*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.mips.adds.a.d(<2 x i64>, <2 x i64>) nounwind
201*9880d681SAndroid Build Coastguard Worker
202*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_adds_a_d_test:
203*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_adds_a_d_ARG1)
204*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_adds_a_d_ARG2)
205*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.d [[WS:\$w[0-9]+]], 0([[R1]])
206*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.d [[WT:\$w[0-9]+]], 0([[R2]])
207*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: adds_a.d [[WD:\$w[0-9]+]], [[WS]], [[WT]]
208*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R3:\$[0-9]+]], %got(llvm_mips_adds_a_d_RES)
209*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.d [[WD]], 0([[R3]])
210*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_adds_a_d_test
211*9880d681SAndroid Build Coastguard Worker;
212*9880d681SAndroid Build Coastguard Worker@llvm_mips_adds_s_b_ARG1 = global <16 x i8> <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 8, i8 9, i8 10, i8 11, i8 12, i8 13, i8 14, i8 15>, align 16
213*9880d681SAndroid Build Coastguard Worker@llvm_mips_adds_s_b_ARG2 = global <16 x i8> <i8 16, i8 17, i8 18, i8 19, i8 20, i8 21, i8 22, i8 23, i8 24, i8 25, i8 26, i8 27, i8 28, i8 29, i8 30, i8 31>, align 16
214*9880d681SAndroid Build Coastguard Worker@llvm_mips_adds_s_b_RES  = global <16 x i8> <i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0>, align 16
215*9880d681SAndroid Build Coastguard Worker
216*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_adds_s_b_test() nounwind {
217*9880d681SAndroid Build Coastguard Workerentry:
218*9880d681SAndroid Build Coastguard Worker  %0 = load <16 x i8>, <16 x i8>* @llvm_mips_adds_s_b_ARG1
219*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* @llvm_mips_adds_s_b_ARG2
220*9880d681SAndroid Build Coastguard Worker  %2 = tail call <16 x i8> @llvm.mips.adds.s.b(<16 x i8> %0, <16 x i8> %1)
221*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %2, <16 x i8>* @llvm_mips_adds_s_b_RES
222*9880d681SAndroid Build Coastguard Worker  ret void
223*9880d681SAndroid Build Coastguard Worker}
224*9880d681SAndroid Build Coastguard Worker
225*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.mips.adds.s.b(<16 x i8>, <16 x i8>) nounwind
226*9880d681SAndroid Build Coastguard Worker
227*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_adds_s_b_test:
228*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_adds_s_b_ARG1)
229*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_adds_s_b_ARG2)
230*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.b [[WS:\$w[0-9]+]], 0([[R1]])
231*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.b [[WT:\$w[0-9]+]], 0([[R2]])
232*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: adds_s.b [[WD:\$w[0-9]+]], [[WS]], [[WT]]
233*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R3:\$[0-9]+]], %got(llvm_mips_adds_s_b_RES)
234*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.b [[WD]], 0([[R3]])
235*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_adds_s_b_test
236*9880d681SAndroid Build Coastguard Worker;
237*9880d681SAndroid Build Coastguard Worker@llvm_mips_adds_s_h_ARG1 = global <8 x i16> <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>, align 16
238*9880d681SAndroid Build Coastguard Worker@llvm_mips_adds_s_h_ARG2 = global <8 x i16> <i16 8, i16 9, i16 10, i16 11, i16 12, i16 13, i16 14, i16 15>, align 16
239*9880d681SAndroid Build Coastguard Worker@llvm_mips_adds_s_h_RES  = global <8 x i16> <i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0>, align 16
240*9880d681SAndroid Build Coastguard Worker
241*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_adds_s_h_test() nounwind {
242*9880d681SAndroid Build Coastguard Workerentry:
243*9880d681SAndroid Build Coastguard Worker  %0 = load <8 x i16>, <8 x i16>* @llvm_mips_adds_s_h_ARG1
244*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* @llvm_mips_adds_s_h_ARG2
245*9880d681SAndroid Build Coastguard Worker  %2 = tail call <8 x i16> @llvm.mips.adds.s.h(<8 x i16> %0, <8 x i16> %1)
246*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %2, <8 x i16>* @llvm_mips_adds_s_h_RES
247*9880d681SAndroid Build Coastguard Worker  ret void
248*9880d681SAndroid Build Coastguard Worker}
249*9880d681SAndroid Build Coastguard Worker
250*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.mips.adds.s.h(<8 x i16>, <8 x i16>) nounwind
251*9880d681SAndroid Build Coastguard Worker
252*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_adds_s_h_test:
253*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_adds_s_h_ARG1)
254*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_adds_s_h_ARG2)
255*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.h [[WS:\$w[0-9]+]], 0([[R1]])
256*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.h [[WT:\$w[0-9]+]], 0([[R2]])
257*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: adds_s.h [[WD:\$w[0-9]+]], [[WS]], [[WT]]
258*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R3:\$[0-9]+]], %got(llvm_mips_adds_s_h_RES)
259*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.h [[WD]], 0([[R3]])
260*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_adds_s_h_test
261*9880d681SAndroid Build Coastguard Worker;
262*9880d681SAndroid Build Coastguard Worker@llvm_mips_adds_s_w_ARG1 = global <4 x i32> <i32 0, i32 1, i32 2, i32 3>, align 16
263*9880d681SAndroid Build Coastguard Worker@llvm_mips_adds_s_w_ARG2 = global <4 x i32> <i32 4, i32 5, i32 6, i32 7>, align 16
264*9880d681SAndroid Build Coastguard Worker@llvm_mips_adds_s_w_RES  = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16
265*9880d681SAndroid Build Coastguard Worker
266*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_adds_s_w_test() nounwind {
267*9880d681SAndroid Build Coastguard Workerentry:
268*9880d681SAndroid Build Coastguard Worker  %0 = load <4 x i32>, <4 x i32>* @llvm_mips_adds_s_w_ARG1
269*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* @llvm_mips_adds_s_w_ARG2
270*9880d681SAndroid Build Coastguard Worker  %2 = tail call <4 x i32> @llvm.mips.adds.s.w(<4 x i32> %0, <4 x i32> %1)
271*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %2, <4 x i32>* @llvm_mips_adds_s_w_RES
272*9880d681SAndroid Build Coastguard Worker  ret void
273*9880d681SAndroid Build Coastguard Worker}
274*9880d681SAndroid Build Coastguard Worker
275*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.mips.adds.s.w(<4 x i32>, <4 x i32>) nounwind
276*9880d681SAndroid Build Coastguard Worker
277*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_adds_s_w_test:
278*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_adds_s_w_ARG1)
279*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_adds_s_w_ARG2)
280*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.w [[WS:\$w[0-9]+]], 0([[R1]])
281*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.w [[WT:\$w[0-9]+]], 0([[R2]])
282*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: adds_s.w [[WD:\$w[0-9]+]], [[WS]], [[WT]]
283*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R3:\$[0-9]+]], %got(llvm_mips_adds_s_w_RES)
284*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.w [[WD]], 0([[R3]])
285*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_adds_s_w_test
286*9880d681SAndroid Build Coastguard Worker;
287*9880d681SAndroid Build Coastguard Worker@llvm_mips_adds_s_d_ARG1 = global <2 x i64> <i64 0, i64 1>, align 16
288*9880d681SAndroid Build Coastguard Worker@llvm_mips_adds_s_d_ARG2 = global <2 x i64> <i64 2, i64 3>, align 16
289*9880d681SAndroid Build Coastguard Worker@llvm_mips_adds_s_d_RES  = global <2 x i64> <i64 0, i64 0>, align 16
290*9880d681SAndroid Build Coastguard Worker
291*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_adds_s_d_test() nounwind {
292*9880d681SAndroid Build Coastguard Workerentry:
293*9880d681SAndroid Build Coastguard Worker  %0 = load <2 x i64>, <2 x i64>* @llvm_mips_adds_s_d_ARG1
294*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* @llvm_mips_adds_s_d_ARG2
295*9880d681SAndroid Build Coastguard Worker  %2 = tail call <2 x i64> @llvm.mips.adds.s.d(<2 x i64> %0, <2 x i64> %1)
296*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %2, <2 x i64>* @llvm_mips_adds_s_d_RES
297*9880d681SAndroid Build Coastguard Worker  ret void
298*9880d681SAndroid Build Coastguard Worker}
299*9880d681SAndroid Build Coastguard Worker
300*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.mips.adds.s.d(<2 x i64>, <2 x i64>) nounwind
301*9880d681SAndroid Build Coastguard Worker
302*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_adds_s_d_test:
303*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_adds_s_d_ARG1)
304*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_adds_s_d_ARG2)
305*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.d [[WS:\$w[0-9]+]], 0([[R1]])
306*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.d [[WT:\$w[0-9]+]], 0([[R2]])
307*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: adds_s.d [[WD:\$w[0-9]+]], [[WS]], [[WT]]
308*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R3:\$[0-9]+]], %got(llvm_mips_adds_s_d_RES)
309*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.d [[WD]], 0([[R3]])
310*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_adds_s_d_test
311*9880d681SAndroid Build Coastguard Worker;
312*9880d681SAndroid Build Coastguard Worker@llvm_mips_adds_u_b_ARG1 = global <16 x i8> <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 8, i8 9, i8 10, i8 11, i8 12, i8 13, i8 14, i8 15>, align 16
313*9880d681SAndroid Build Coastguard Worker@llvm_mips_adds_u_b_ARG2 = global <16 x i8> <i8 16, i8 17, i8 18, i8 19, i8 20, i8 21, i8 22, i8 23, i8 24, i8 25, i8 26, i8 27, i8 28, i8 29, i8 30, i8 31>, align 16
314*9880d681SAndroid Build Coastguard Worker@llvm_mips_adds_u_b_RES  = global <16 x i8> <i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0>, align 16
315*9880d681SAndroid Build Coastguard Worker
316*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_adds_u_b_test() nounwind {
317*9880d681SAndroid Build Coastguard Workerentry:
318*9880d681SAndroid Build Coastguard Worker  %0 = load <16 x i8>, <16 x i8>* @llvm_mips_adds_u_b_ARG1
319*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* @llvm_mips_adds_u_b_ARG2
320*9880d681SAndroid Build Coastguard Worker  %2 = tail call <16 x i8> @llvm.mips.adds.u.b(<16 x i8> %0, <16 x i8> %1)
321*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %2, <16 x i8>* @llvm_mips_adds_u_b_RES
322*9880d681SAndroid Build Coastguard Worker  ret void
323*9880d681SAndroid Build Coastguard Worker}
324*9880d681SAndroid Build Coastguard Worker
325*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.mips.adds.u.b(<16 x i8>, <16 x i8>) nounwind
326*9880d681SAndroid Build Coastguard Worker
327*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_adds_u_b_test:
328*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_adds_u_b_ARG1)
329*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_adds_u_b_ARG2)
330*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.b [[WS:\$w[0-9]+]], 0([[R1]])
331*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.b [[WT:\$w[0-9]+]], 0([[R2]])
332*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: adds_u.b [[WD:\$w[0-9]+]], [[WS]], [[WT]]
333*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R3:\$[0-9]+]], %got(llvm_mips_adds_u_b_RES)
334*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.b [[WD]], 0([[R3]])
335*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_adds_u_b_test
336*9880d681SAndroid Build Coastguard Worker;
337*9880d681SAndroid Build Coastguard Worker@llvm_mips_adds_u_h_ARG1 = global <8 x i16> <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>, align 16
338*9880d681SAndroid Build Coastguard Worker@llvm_mips_adds_u_h_ARG2 = global <8 x i16> <i16 8, i16 9, i16 10, i16 11, i16 12, i16 13, i16 14, i16 15>, align 16
339*9880d681SAndroid Build Coastguard Worker@llvm_mips_adds_u_h_RES  = global <8 x i16> <i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0>, align 16
340*9880d681SAndroid Build Coastguard Worker
341*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_adds_u_h_test() nounwind {
342*9880d681SAndroid Build Coastguard Workerentry:
343*9880d681SAndroid Build Coastguard Worker  %0 = load <8 x i16>, <8 x i16>* @llvm_mips_adds_u_h_ARG1
344*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* @llvm_mips_adds_u_h_ARG2
345*9880d681SAndroid Build Coastguard Worker  %2 = tail call <8 x i16> @llvm.mips.adds.u.h(<8 x i16> %0, <8 x i16> %1)
346*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %2, <8 x i16>* @llvm_mips_adds_u_h_RES
347*9880d681SAndroid Build Coastguard Worker  ret void
348*9880d681SAndroid Build Coastguard Worker}
349*9880d681SAndroid Build Coastguard Worker
350*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.mips.adds.u.h(<8 x i16>, <8 x i16>) nounwind
351*9880d681SAndroid Build Coastguard Worker
352*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_adds_u_h_test:
353*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_adds_u_h_ARG1)
354*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_adds_u_h_ARG2)
355*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.h [[WS:\$w[0-9]+]], 0([[R1]])
356*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.h [[WT:\$w[0-9]+]], 0([[R2]])
357*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: adds_u.h [[WD:\$w[0-9]+]], [[WS]], [[WT]]
358*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R3:\$[0-9]+]], %got(llvm_mips_adds_u_h_RES)
359*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.h [[WD]], 0([[R3]])
360*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_adds_u_h_test
361*9880d681SAndroid Build Coastguard Worker;
362*9880d681SAndroid Build Coastguard Worker@llvm_mips_adds_u_w_ARG1 = global <4 x i32> <i32 0, i32 1, i32 2, i32 3>, align 16
363*9880d681SAndroid Build Coastguard Worker@llvm_mips_adds_u_w_ARG2 = global <4 x i32> <i32 4, i32 5, i32 6, i32 7>, align 16
364*9880d681SAndroid Build Coastguard Worker@llvm_mips_adds_u_w_RES  = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16
365*9880d681SAndroid Build Coastguard Worker
366*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_adds_u_w_test() nounwind {
367*9880d681SAndroid Build Coastguard Workerentry:
368*9880d681SAndroid Build Coastguard Worker  %0 = load <4 x i32>, <4 x i32>* @llvm_mips_adds_u_w_ARG1
369*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* @llvm_mips_adds_u_w_ARG2
370*9880d681SAndroid Build Coastguard Worker  %2 = tail call <4 x i32> @llvm.mips.adds.u.w(<4 x i32> %0, <4 x i32> %1)
371*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %2, <4 x i32>* @llvm_mips_adds_u_w_RES
372*9880d681SAndroid Build Coastguard Worker  ret void
373*9880d681SAndroid Build Coastguard Worker}
374*9880d681SAndroid Build Coastguard Worker
375*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.mips.adds.u.w(<4 x i32>, <4 x i32>) nounwind
376*9880d681SAndroid Build Coastguard Worker
377*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_adds_u_w_test:
378*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_adds_u_w_ARG1)
379*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_adds_u_w_ARG2)
380*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.w [[WS:\$w[0-9]+]], 0([[R1]])
381*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.w [[WT:\$w[0-9]+]], 0([[R2]])
382*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: adds_u.w [[WD:\$w[0-9]+]], [[WS]], [[WT]]
383*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R3:\$[0-9]+]], %got(llvm_mips_adds_u_w_RES)
384*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.w [[WD]], 0([[R3]])
385*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_adds_u_w_test
386*9880d681SAndroid Build Coastguard Worker;
387*9880d681SAndroid Build Coastguard Worker@llvm_mips_adds_u_d_ARG1 = global <2 x i64> <i64 0, i64 1>, align 16
388*9880d681SAndroid Build Coastguard Worker@llvm_mips_adds_u_d_ARG2 = global <2 x i64> <i64 2, i64 3>, align 16
389*9880d681SAndroid Build Coastguard Worker@llvm_mips_adds_u_d_RES  = global <2 x i64> <i64 0, i64 0>, align 16
390*9880d681SAndroid Build Coastguard Worker
391*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_adds_u_d_test() nounwind {
392*9880d681SAndroid Build Coastguard Workerentry:
393*9880d681SAndroid Build Coastguard Worker  %0 = load <2 x i64>, <2 x i64>* @llvm_mips_adds_u_d_ARG1
394*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* @llvm_mips_adds_u_d_ARG2
395*9880d681SAndroid Build Coastguard Worker  %2 = tail call <2 x i64> @llvm.mips.adds.u.d(<2 x i64> %0, <2 x i64> %1)
396*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %2, <2 x i64>* @llvm_mips_adds_u_d_RES
397*9880d681SAndroid Build Coastguard Worker  ret void
398*9880d681SAndroid Build Coastguard Worker}
399*9880d681SAndroid Build Coastguard Worker
400*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.mips.adds.u.d(<2 x i64>, <2 x i64>) nounwind
401*9880d681SAndroid Build Coastguard Worker
402*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_adds_u_d_test:
403*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_adds_u_d_ARG1)
404*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_adds_u_d_ARG2)
405*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.d [[WS:\$w[0-9]+]], 0([[R1]])
406*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.d [[WT:\$w[0-9]+]], 0([[R2]])
407*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: adds_u.d [[WD:\$w[0-9]+]], [[WS]], [[WT]]
408*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R3:\$[0-9]+]], %got(llvm_mips_adds_u_d_RES)
409*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.d [[WD]], 0([[R3]])
410*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_adds_u_d_test
411*9880d681SAndroid Build Coastguard Worker;
412*9880d681SAndroid Build Coastguard Worker@llvm_mips_addv_b_ARG1 = global <16 x i8> <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 8, i8 9, i8 10, i8 11, i8 12, i8 13, i8 14, i8 15>, align 16
413*9880d681SAndroid Build Coastguard Worker@llvm_mips_addv_b_ARG2 = global <16 x i8> <i8 16, i8 17, i8 18, i8 19, i8 20, i8 21, i8 22, i8 23, i8 24, i8 25, i8 26, i8 27, i8 28, i8 29, i8 30, i8 31>, align 16
414*9880d681SAndroid Build Coastguard Worker@llvm_mips_addv_b_RES  = global <16 x i8> <i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0>, align 16
415*9880d681SAndroid Build Coastguard Worker
416*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_addv_b_test() nounwind {
417*9880d681SAndroid Build Coastguard Workerentry:
418*9880d681SAndroid Build Coastguard Worker  %0 = load <16 x i8>, <16 x i8>* @llvm_mips_addv_b_ARG1
419*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* @llvm_mips_addv_b_ARG2
420*9880d681SAndroid Build Coastguard Worker  %2 = tail call <16 x i8> @llvm.mips.addv.b(<16 x i8> %0, <16 x i8> %1)
421*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %2, <16 x i8>* @llvm_mips_addv_b_RES
422*9880d681SAndroid Build Coastguard Worker  ret void
423*9880d681SAndroid Build Coastguard Worker}
424*9880d681SAndroid Build Coastguard Worker
425*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.mips.addv.b(<16 x i8>, <16 x i8>) nounwind
426*9880d681SAndroid Build Coastguard Worker
427*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_addv_b_test:
428*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_addv_b_ARG1)
429*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_addv_b_ARG2)
430*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.b [[WS:\$w[0-9]+]], 0([[R1]])
431*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.b [[WT:\$w[0-9]+]], 0([[R2]])
432*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: addv.b [[WD:\$w[0-9]+]], [[WS]], [[WT]]
433*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R3:\$[0-9]+]], %got(llvm_mips_addv_b_RES)
434*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.b [[WD]], 0([[R3]])
435*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_addv_b_test
436*9880d681SAndroid Build Coastguard Worker;
437*9880d681SAndroid Build Coastguard Worker@llvm_mips_addv_h_ARG1 = global <8 x i16> <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>, align 16
438*9880d681SAndroid Build Coastguard Worker@llvm_mips_addv_h_ARG2 = global <8 x i16> <i16 8, i16 9, i16 10, i16 11, i16 12, i16 13, i16 14, i16 15>, align 16
439*9880d681SAndroid Build Coastguard Worker@llvm_mips_addv_h_RES  = global <8 x i16> <i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0>, align 16
440*9880d681SAndroid Build Coastguard Worker
441*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_addv_h_test() nounwind {
442*9880d681SAndroid Build Coastguard Workerentry:
443*9880d681SAndroid Build Coastguard Worker  %0 = load <8 x i16>, <8 x i16>* @llvm_mips_addv_h_ARG1
444*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* @llvm_mips_addv_h_ARG2
445*9880d681SAndroid Build Coastguard Worker  %2 = tail call <8 x i16> @llvm.mips.addv.h(<8 x i16> %0, <8 x i16> %1)
446*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %2, <8 x i16>* @llvm_mips_addv_h_RES
447*9880d681SAndroid Build Coastguard Worker  ret void
448*9880d681SAndroid Build Coastguard Worker}
449*9880d681SAndroid Build Coastguard Worker
450*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.mips.addv.h(<8 x i16>, <8 x i16>) nounwind
451*9880d681SAndroid Build Coastguard Worker
452*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_addv_h_test:
453*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_addv_h_ARG1)
454*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_addv_h_ARG2)
455*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.h [[WS:\$w[0-9]+]], 0([[R1]])
456*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.h [[WT:\$w[0-9]+]], 0([[R2]])
457*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: addv.h [[WD:\$w[0-9]+]], [[WS]], [[WT]]
458*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R3:\$[0-9]+]], %got(llvm_mips_addv_h_RES)
459*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.h [[WD]], 0([[R3]])
460*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_addv_h_test
461*9880d681SAndroid Build Coastguard Worker;
462*9880d681SAndroid Build Coastguard Worker@llvm_mips_addv_w_ARG1 = global <4 x i32> <i32 0, i32 1, i32 2, i32 3>, align 16
463*9880d681SAndroid Build Coastguard Worker@llvm_mips_addv_w_ARG2 = global <4 x i32> <i32 4, i32 5, i32 6, i32 7>, align 16
464*9880d681SAndroid Build Coastguard Worker@llvm_mips_addv_w_RES  = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16
465*9880d681SAndroid Build Coastguard Worker
466*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_addv_w_test() nounwind {
467*9880d681SAndroid Build Coastguard Workerentry:
468*9880d681SAndroid Build Coastguard Worker  %0 = load <4 x i32>, <4 x i32>* @llvm_mips_addv_w_ARG1
469*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* @llvm_mips_addv_w_ARG2
470*9880d681SAndroid Build Coastguard Worker  %2 = tail call <4 x i32> @llvm.mips.addv.w(<4 x i32> %0, <4 x i32> %1)
471*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %2, <4 x i32>* @llvm_mips_addv_w_RES
472*9880d681SAndroid Build Coastguard Worker  ret void
473*9880d681SAndroid Build Coastguard Worker}
474*9880d681SAndroid Build Coastguard Worker
475*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.mips.addv.w(<4 x i32>, <4 x i32>) nounwind
476*9880d681SAndroid Build Coastguard Worker
477*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_addv_w_test:
478*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_addv_w_ARG1)
479*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_addv_w_ARG2)
480*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.w [[WS:\$w[0-9]+]], 0([[R1]])
481*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.w [[WT:\$w[0-9]+]], 0([[R2]])
482*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: addv.w [[WD:\$w[0-9]+]], [[WS]], [[WT]]
483*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R3:\$[0-9]+]], %got(llvm_mips_addv_w_RES)
484*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.w [[WD]], 0([[R3]])
485*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_addv_w_test
486*9880d681SAndroid Build Coastguard Worker;
487*9880d681SAndroid Build Coastguard Worker@llvm_mips_addv_d_ARG1 = global <2 x i64> <i64 0, i64 1>, align 16
488*9880d681SAndroid Build Coastguard Worker@llvm_mips_addv_d_ARG2 = global <2 x i64> <i64 2, i64 3>, align 16
489*9880d681SAndroid Build Coastguard Worker@llvm_mips_addv_d_RES  = global <2 x i64> <i64 0, i64 0>, align 16
490*9880d681SAndroid Build Coastguard Worker
491*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_addv_d_test() nounwind {
492*9880d681SAndroid Build Coastguard Workerentry:
493*9880d681SAndroid Build Coastguard Worker  %0 = load <2 x i64>, <2 x i64>* @llvm_mips_addv_d_ARG1
494*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* @llvm_mips_addv_d_ARG2
495*9880d681SAndroid Build Coastguard Worker  %2 = tail call <2 x i64> @llvm.mips.addv.d(<2 x i64> %0, <2 x i64> %1)
496*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %2, <2 x i64>* @llvm_mips_addv_d_RES
497*9880d681SAndroid Build Coastguard Worker  ret void
498*9880d681SAndroid Build Coastguard Worker}
499*9880d681SAndroid Build Coastguard Worker
500*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.mips.addv.d(<2 x i64>, <2 x i64>) nounwind
501*9880d681SAndroid Build Coastguard Worker
502*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_addv_d_test:
503*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_addv_d_ARG1)
504*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_addv_d_ARG2)
505*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.d [[WS:\$w[0-9]+]], 0([[R1]])
506*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.d [[WT:\$w[0-9]+]], 0([[R2]])
507*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: addv.d [[WD:\$w[0-9]+]], [[WS]], [[WT]]
508*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R3:\$[0-9]+]], %got(llvm_mips_addv_d_RES)
509*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.d [[WD]], 0([[R3]])
510*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_addv_d_test
511*9880d681SAndroid Build Coastguard Worker;
512*9880d681SAndroid Build Coastguard Worker
513*9880d681SAndroid Build Coastguard Workerdefine void @addv_b_test() nounwind {
514*9880d681SAndroid Build Coastguard Workerentry:
515*9880d681SAndroid Build Coastguard Worker  %0 = load <16 x i8>, <16 x i8>* @llvm_mips_addv_b_ARG1
516*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* @llvm_mips_addv_b_ARG2
517*9880d681SAndroid Build Coastguard Worker  %2 = add <16 x i8> %0, %1
518*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %2, <16 x i8>* @llvm_mips_addv_b_RES
519*9880d681SAndroid Build Coastguard Worker  ret void
520*9880d681SAndroid Build Coastguard Worker}
521*9880d681SAndroid Build Coastguard Worker
522*9880d681SAndroid Build Coastguard Worker; CHECK: addv_b_test:
523*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_addv_b_ARG1)
524*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_addv_b_ARG2)
525*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.b [[WS:\$w[0-9]+]], 0([[R1]])
526*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.b [[WT:\$w[0-9]+]], 0([[R2]])
527*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: addv.b [[WD:\$w[0-9]+]], [[WS]], [[WT]]
528*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R3:\$[0-9]+]], %got(llvm_mips_addv_b_RES)
529*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.b [[WD]], 0([[R3]])
530*9880d681SAndroid Build Coastguard Worker; CHECK: .size addv_b_test
531*9880d681SAndroid Build Coastguard Worker;
532*9880d681SAndroid Build Coastguard Worker
533*9880d681SAndroid Build Coastguard Workerdefine void @addv_h_test() nounwind {
534*9880d681SAndroid Build Coastguard Workerentry:
535*9880d681SAndroid Build Coastguard Worker  %0 = load <8 x i16>, <8 x i16>* @llvm_mips_addv_h_ARG1
536*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* @llvm_mips_addv_h_ARG2
537*9880d681SAndroid Build Coastguard Worker  %2 = add <8 x i16> %0, %1
538*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %2, <8 x i16>* @llvm_mips_addv_h_RES
539*9880d681SAndroid Build Coastguard Worker  ret void
540*9880d681SAndroid Build Coastguard Worker}
541*9880d681SAndroid Build Coastguard Worker
542*9880d681SAndroid Build Coastguard Worker; CHECK: addv_h_test:
543*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_addv_h_ARG1)
544*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_addv_h_ARG2)
545*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.h [[WS:\$w[0-9]+]], 0([[R1]])
546*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.h [[WT:\$w[0-9]+]], 0([[R2]])
547*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: addv.h [[WD:\$w[0-9]+]], [[WS]], [[WT]]
548*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R3:\$[0-9]+]], %got(llvm_mips_addv_h_RES)
549*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.h [[WD]], 0([[R3]])
550*9880d681SAndroid Build Coastguard Worker; CHECK: .size addv_h_test
551*9880d681SAndroid Build Coastguard Worker;
552*9880d681SAndroid Build Coastguard Worker
553*9880d681SAndroid Build Coastguard Workerdefine void @addv_w_test() nounwind {
554*9880d681SAndroid Build Coastguard Workerentry:
555*9880d681SAndroid Build Coastguard Worker  %0 = load <4 x i32>, <4 x i32>* @llvm_mips_addv_w_ARG1
556*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* @llvm_mips_addv_w_ARG2
557*9880d681SAndroid Build Coastguard Worker  %2 = add <4 x i32> %0, %1
558*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %2, <4 x i32>* @llvm_mips_addv_w_RES
559*9880d681SAndroid Build Coastguard Worker  ret void
560*9880d681SAndroid Build Coastguard Worker}
561*9880d681SAndroid Build Coastguard Worker
562*9880d681SAndroid Build Coastguard Worker; CHECK: addv_w_test:
563*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_addv_w_ARG1)
564*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_addv_w_ARG2)
565*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.w [[WS:\$w[0-9]+]], 0([[R1]])
566*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.w [[WT:\$w[0-9]+]], 0([[R2]])
567*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: addv.w [[WD:\$w[0-9]+]], [[WS]], [[WT]]
568*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R3:\$[0-9]+]], %got(llvm_mips_addv_w_RES)
569*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.w [[WD]], 0([[R3]])
570*9880d681SAndroid Build Coastguard Worker; CHECK: .size addv_w_test
571*9880d681SAndroid Build Coastguard Worker;
572*9880d681SAndroid Build Coastguard Worker
573*9880d681SAndroid Build Coastguard Workerdefine void @addv_d_test() nounwind {
574*9880d681SAndroid Build Coastguard Workerentry:
575*9880d681SAndroid Build Coastguard Worker  %0 = load <2 x i64>, <2 x i64>* @llvm_mips_addv_d_ARG1
576*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* @llvm_mips_addv_d_ARG2
577*9880d681SAndroid Build Coastguard Worker  %2 = add <2 x i64> %0, %1
578*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %2, <2 x i64>* @llvm_mips_addv_d_RES
579*9880d681SAndroid Build Coastguard Worker  ret void
580*9880d681SAndroid Build Coastguard Worker}
581*9880d681SAndroid Build Coastguard Worker
582*9880d681SAndroid Build Coastguard Worker; CHECK: addv_d_test:
583*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_addv_d_ARG1)
584*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_addv_d_ARG2)
585*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.d [[WS:\$w[0-9]+]], 0([[R1]])
586*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.d [[WT:\$w[0-9]+]], 0([[R2]])
587*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: addv.d [[WD:\$w[0-9]+]], [[WS]], [[WT]]
588*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R3:\$[0-9]+]], %got(llvm_mips_addv_d_RES)
589*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.d [[WD]], 0([[R3]])
590*9880d681SAndroid Build Coastguard Worker; CHECK: .size addv_d_test
591*9880d681SAndroid Build Coastguard Worker;
592*9880d681SAndroid Build Coastguard Worker@llvm_mips_asub_s_b_ARG1 = global <16 x i8> <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 8, i8 9, i8 10, i8 11, i8 12, i8 13, i8 14, i8 15>, align 16
593*9880d681SAndroid Build Coastguard Worker@llvm_mips_asub_s_b_ARG2 = global <16 x i8> <i8 16, i8 17, i8 18, i8 19, i8 20, i8 21, i8 22, i8 23, i8 24, i8 25, i8 26, i8 27, i8 28, i8 29, i8 30, i8 31>, align 16
594*9880d681SAndroid Build Coastguard Worker@llvm_mips_asub_s_b_RES  = global <16 x i8> <i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0>, align 16
595*9880d681SAndroid Build Coastguard Worker
596*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_asub_s_b_test() nounwind {
597*9880d681SAndroid Build Coastguard Workerentry:
598*9880d681SAndroid Build Coastguard Worker  %0 = load <16 x i8>, <16 x i8>* @llvm_mips_asub_s_b_ARG1
599*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* @llvm_mips_asub_s_b_ARG2
600*9880d681SAndroid Build Coastguard Worker  %2 = tail call <16 x i8> @llvm.mips.asub.s.b(<16 x i8> %0, <16 x i8> %1)
601*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %2, <16 x i8>* @llvm_mips_asub_s_b_RES
602*9880d681SAndroid Build Coastguard Worker  ret void
603*9880d681SAndroid Build Coastguard Worker}
604*9880d681SAndroid Build Coastguard Worker
605*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.mips.asub.s.b(<16 x i8>, <16 x i8>) nounwind
606*9880d681SAndroid Build Coastguard Worker
607*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_asub_s_b_test:
608*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_asub_s_b_ARG1)
609*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_asub_s_b_ARG2)
610*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.b [[WS:\$w[0-9]+]], 0([[R1]])
611*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.b [[WT:\$w[0-9]+]], 0([[R2]])
612*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: asub_s.b [[WD:\$w[0-9]+]], [[WS]], [[WT]]
613*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R3:\$[0-9]+]], %got(llvm_mips_asub_s_b_RES)
614*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.b [[WD]], 0([[R3]])
615*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_asub_s_b_test
616*9880d681SAndroid Build Coastguard Worker;
617*9880d681SAndroid Build Coastguard Worker@llvm_mips_asub_s_h_ARG1 = global <8 x i16> <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>, align 16
618*9880d681SAndroid Build Coastguard Worker@llvm_mips_asub_s_h_ARG2 = global <8 x i16> <i16 8, i16 9, i16 10, i16 11, i16 12, i16 13, i16 14, i16 15>, align 16
619*9880d681SAndroid Build Coastguard Worker@llvm_mips_asub_s_h_RES  = global <8 x i16> <i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0>, align 16
620*9880d681SAndroid Build Coastguard Worker
621*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_asub_s_h_test() nounwind {
622*9880d681SAndroid Build Coastguard Workerentry:
623*9880d681SAndroid Build Coastguard Worker  %0 = load <8 x i16>, <8 x i16>* @llvm_mips_asub_s_h_ARG1
624*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* @llvm_mips_asub_s_h_ARG2
625*9880d681SAndroid Build Coastguard Worker  %2 = tail call <8 x i16> @llvm.mips.asub.s.h(<8 x i16> %0, <8 x i16> %1)
626*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %2, <8 x i16>* @llvm_mips_asub_s_h_RES
627*9880d681SAndroid Build Coastguard Worker  ret void
628*9880d681SAndroid Build Coastguard Worker}
629*9880d681SAndroid Build Coastguard Worker
630*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.mips.asub.s.h(<8 x i16>, <8 x i16>) nounwind
631*9880d681SAndroid Build Coastguard Worker
632*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_asub_s_h_test:
633*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_asub_s_h_ARG1)
634*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_asub_s_h_ARG2)
635*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.h [[WS:\$w[0-9]+]], 0([[R1]])
636*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.h [[WT:\$w[0-9]+]], 0([[R2]])
637*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: asub_s.h [[WD:\$w[0-9]+]], [[WS]], [[WT]]
638*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R3:\$[0-9]+]], %got(llvm_mips_asub_s_h_RES)
639*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.h [[WD]], 0([[R3]])
640*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_asub_s_h_test
641*9880d681SAndroid Build Coastguard Worker;
642*9880d681SAndroid Build Coastguard Worker@llvm_mips_asub_s_w_ARG1 = global <4 x i32> <i32 0, i32 1, i32 2, i32 3>, align 16
643*9880d681SAndroid Build Coastguard Worker@llvm_mips_asub_s_w_ARG2 = global <4 x i32> <i32 4, i32 5, i32 6, i32 7>, align 16
644*9880d681SAndroid Build Coastguard Worker@llvm_mips_asub_s_w_RES  = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16
645*9880d681SAndroid Build Coastguard Worker
646*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_asub_s_w_test() nounwind {
647*9880d681SAndroid Build Coastguard Workerentry:
648*9880d681SAndroid Build Coastguard Worker  %0 = load <4 x i32>, <4 x i32>* @llvm_mips_asub_s_w_ARG1
649*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* @llvm_mips_asub_s_w_ARG2
650*9880d681SAndroid Build Coastguard Worker  %2 = tail call <4 x i32> @llvm.mips.asub.s.w(<4 x i32> %0, <4 x i32> %1)
651*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %2, <4 x i32>* @llvm_mips_asub_s_w_RES
652*9880d681SAndroid Build Coastguard Worker  ret void
653*9880d681SAndroid Build Coastguard Worker}
654*9880d681SAndroid Build Coastguard Worker
655*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.mips.asub.s.w(<4 x i32>, <4 x i32>) nounwind
656*9880d681SAndroid Build Coastguard Worker
657*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_asub_s_w_test:
658*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_asub_s_w_ARG1)
659*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_asub_s_w_ARG2)
660*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.w [[WS:\$w[0-9]+]], 0([[R1]])
661*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.w [[WT:\$w[0-9]+]], 0([[R2]])
662*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: asub_s.w [[WD:\$w[0-9]+]], [[WS]], [[WT]]
663*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R3:\$[0-9]+]], %got(llvm_mips_asub_s_w_RES)
664*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.w [[WD]], 0([[R3]])
665*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_asub_s_w_test
666*9880d681SAndroid Build Coastguard Worker;
667*9880d681SAndroid Build Coastguard Worker@llvm_mips_asub_s_d_ARG1 = global <2 x i64> <i64 0, i64 1>, align 16
668*9880d681SAndroid Build Coastguard Worker@llvm_mips_asub_s_d_ARG2 = global <2 x i64> <i64 2, i64 3>, align 16
669*9880d681SAndroid Build Coastguard Worker@llvm_mips_asub_s_d_RES  = global <2 x i64> <i64 0, i64 0>, align 16
670*9880d681SAndroid Build Coastguard Worker
671*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_asub_s_d_test() nounwind {
672*9880d681SAndroid Build Coastguard Workerentry:
673*9880d681SAndroid Build Coastguard Worker  %0 = load <2 x i64>, <2 x i64>* @llvm_mips_asub_s_d_ARG1
674*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* @llvm_mips_asub_s_d_ARG2
675*9880d681SAndroid Build Coastguard Worker  %2 = tail call <2 x i64> @llvm.mips.asub.s.d(<2 x i64> %0, <2 x i64> %1)
676*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %2, <2 x i64>* @llvm_mips_asub_s_d_RES
677*9880d681SAndroid Build Coastguard Worker  ret void
678*9880d681SAndroid Build Coastguard Worker}
679*9880d681SAndroid Build Coastguard Worker
680*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.mips.asub.s.d(<2 x i64>, <2 x i64>) nounwind
681*9880d681SAndroid Build Coastguard Worker
682*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_asub_s_d_test:
683*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_asub_s_d_ARG1)
684*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_asub_s_d_ARG2)
685*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.d [[WS:\$w[0-9]+]], 0([[R1]])
686*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.d [[WT:\$w[0-9]+]], 0([[R2]])
687*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: asub_s.d [[WD:\$w[0-9]+]], [[WS]], [[WT]]
688*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R3:\$[0-9]+]], %got(llvm_mips_asub_s_d_RES)
689*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.d [[WD]], 0([[R3]])
690*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_asub_s_d_test
691*9880d681SAndroid Build Coastguard Worker;
692*9880d681SAndroid Build Coastguard Worker@llvm_mips_asub_u_b_ARG1 = global <16 x i8> <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 8, i8 9, i8 10, i8 11, i8 12, i8 13, i8 14, i8 15>, align 16
693*9880d681SAndroid Build Coastguard Worker@llvm_mips_asub_u_b_ARG2 = global <16 x i8> <i8 16, i8 17, i8 18, i8 19, i8 20, i8 21, i8 22, i8 23, i8 24, i8 25, i8 26, i8 27, i8 28, i8 29, i8 30, i8 31>, align 16
694*9880d681SAndroid Build Coastguard Worker@llvm_mips_asub_u_b_RES  = global <16 x i8> <i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0>, align 16
695*9880d681SAndroid Build Coastguard Worker
696*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_asub_u_b_test() nounwind {
697*9880d681SAndroid Build Coastguard Workerentry:
698*9880d681SAndroid Build Coastguard Worker  %0 = load <16 x i8>, <16 x i8>* @llvm_mips_asub_u_b_ARG1
699*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* @llvm_mips_asub_u_b_ARG2
700*9880d681SAndroid Build Coastguard Worker  %2 = tail call <16 x i8> @llvm.mips.asub.u.b(<16 x i8> %0, <16 x i8> %1)
701*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %2, <16 x i8>* @llvm_mips_asub_u_b_RES
702*9880d681SAndroid Build Coastguard Worker  ret void
703*9880d681SAndroid Build Coastguard Worker}
704*9880d681SAndroid Build Coastguard Worker
705*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.mips.asub.u.b(<16 x i8>, <16 x i8>) nounwind
706*9880d681SAndroid Build Coastguard Worker
707*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_asub_u_b_test:
708*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_asub_u_b_ARG1)
709*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_asub_u_b_ARG2)
710*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.b [[WS:\$w[0-9]+]], 0([[R1]])
711*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.b [[WT:\$w[0-9]+]], 0([[R2]])
712*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: asub_u.b [[WD:\$w[0-9]+]], [[WS]], [[WT]]
713*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R3:\$[0-9]+]], %got(llvm_mips_asub_u_b_RES)
714*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.b [[WD]], 0([[R3]])
715*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_asub_u_b_test
716*9880d681SAndroid Build Coastguard Worker;
717*9880d681SAndroid Build Coastguard Worker@llvm_mips_asub_u_h_ARG1 = global <8 x i16> <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>, align 16
718*9880d681SAndroid Build Coastguard Worker@llvm_mips_asub_u_h_ARG2 = global <8 x i16> <i16 8, i16 9, i16 10, i16 11, i16 12, i16 13, i16 14, i16 15>, align 16
719*9880d681SAndroid Build Coastguard Worker@llvm_mips_asub_u_h_RES  = global <8 x i16> <i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0>, align 16
720*9880d681SAndroid Build Coastguard Worker
721*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_asub_u_h_test() nounwind {
722*9880d681SAndroid Build Coastguard Workerentry:
723*9880d681SAndroid Build Coastguard Worker  %0 = load <8 x i16>, <8 x i16>* @llvm_mips_asub_u_h_ARG1
724*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* @llvm_mips_asub_u_h_ARG2
725*9880d681SAndroid Build Coastguard Worker  %2 = tail call <8 x i16> @llvm.mips.asub.u.h(<8 x i16> %0, <8 x i16> %1)
726*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %2, <8 x i16>* @llvm_mips_asub_u_h_RES
727*9880d681SAndroid Build Coastguard Worker  ret void
728*9880d681SAndroid Build Coastguard Worker}
729*9880d681SAndroid Build Coastguard Worker
730*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.mips.asub.u.h(<8 x i16>, <8 x i16>) nounwind
731*9880d681SAndroid Build Coastguard Worker
732*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_asub_u_h_test:
733*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_asub_u_h_ARG1)
734*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_asub_u_h_ARG2)
735*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.h [[WS:\$w[0-9]+]], 0([[R1]])
736*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.h [[WT:\$w[0-9]+]], 0([[R2]])
737*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: asub_u.h [[WD:\$w[0-9]+]], [[WS]], [[WT]]
738*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R3:\$[0-9]+]], %got(llvm_mips_asub_u_h_RES)
739*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.h [[WD]], 0([[R3]])
740*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_asub_u_h_test
741*9880d681SAndroid Build Coastguard Worker;
742*9880d681SAndroid Build Coastguard Worker@llvm_mips_asub_u_w_ARG1 = global <4 x i32> <i32 0, i32 1, i32 2, i32 3>, align 16
743*9880d681SAndroid Build Coastguard Worker@llvm_mips_asub_u_w_ARG2 = global <4 x i32> <i32 4, i32 5, i32 6, i32 7>, align 16
744*9880d681SAndroid Build Coastguard Worker@llvm_mips_asub_u_w_RES  = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16
745*9880d681SAndroid Build Coastguard Worker
746*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_asub_u_w_test() nounwind {
747*9880d681SAndroid Build Coastguard Workerentry:
748*9880d681SAndroid Build Coastguard Worker  %0 = load <4 x i32>, <4 x i32>* @llvm_mips_asub_u_w_ARG1
749*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* @llvm_mips_asub_u_w_ARG2
750*9880d681SAndroid Build Coastguard Worker  %2 = tail call <4 x i32> @llvm.mips.asub.u.w(<4 x i32> %0, <4 x i32> %1)
751*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %2, <4 x i32>* @llvm_mips_asub_u_w_RES
752*9880d681SAndroid Build Coastguard Worker  ret void
753*9880d681SAndroid Build Coastguard Worker}
754*9880d681SAndroid Build Coastguard Worker
755*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.mips.asub.u.w(<4 x i32>, <4 x i32>) nounwind
756*9880d681SAndroid Build Coastguard Worker
757*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_asub_u_w_test:
758*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_asub_u_w_ARG1)
759*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_asub_u_w_ARG2)
760*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.w [[WS:\$w[0-9]+]], 0([[R1]])
761*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.w [[WT:\$w[0-9]+]], 0([[R2]])
762*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: asub_u.w [[WD:\$w[0-9]+]], [[WS]], [[WT]]
763*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R3:\$[0-9]+]], %got(llvm_mips_asub_u_w_RES)
764*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.w [[WD]], 0([[R3]])
765*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_asub_u_w_test
766*9880d681SAndroid Build Coastguard Worker;
767*9880d681SAndroid Build Coastguard Worker@llvm_mips_asub_u_d_ARG1 = global <2 x i64> <i64 0, i64 1>, align 16
768*9880d681SAndroid Build Coastguard Worker@llvm_mips_asub_u_d_ARG2 = global <2 x i64> <i64 2, i64 3>, align 16
769*9880d681SAndroid Build Coastguard Worker@llvm_mips_asub_u_d_RES  = global <2 x i64> <i64 0, i64 0>, align 16
770*9880d681SAndroid Build Coastguard Worker
771*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_asub_u_d_test() nounwind {
772*9880d681SAndroid Build Coastguard Workerentry:
773*9880d681SAndroid Build Coastguard Worker  %0 = load <2 x i64>, <2 x i64>* @llvm_mips_asub_u_d_ARG1
774*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* @llvm_mips_asub_u_d_ARG2
775*9880d681SAndroid Build Coastguard Worker  %2 = tail call <2 x i64> @llvm.mips.asub.u.d(<2 x i64> %0, <2 x i64> %1)
776*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %2, <2 x i64>* @llvm_mips_asub_u_d_RES
777*9880d681SAndroid Build Coastguard Worker  ret void
778*9880d681SAndroid Build Coastguard Worker}
779*9880d681SAndroid Build Coastguard Worker
780*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.mips.asub.u.d(<2 x i64>, <2 x i64>) nounwind
781*9880d681SAndroid Build Coastguard Worker
782*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_asub_u_d_test:
783*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_asub_u_d_ARG1)
784*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_asub_u_d_ARG2)
785*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.d [[WS:\$w[0-9]+]], 0([[R1]])
786*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.d [[WT:\$w[0-9]+]], 0([[R2]])
787*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: asub_u.d [[WD:\$w[0-9]+]], [[WS]], [[WT]]
788*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R3:\$[0-9]+]], %got(llvm_mips_asub_u_d_RES)
789*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.d [[WD]], 0([[R3]])
790*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_asub_u_d_test
791*9880d681SAndroid Build Coastguard Worker;
792*9880d681SAndroid Build Coastguard Worker@llvm_mips_ave_s_b_ARG1 = global <16 x i8> <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 8, i8 9, i8 10, i8 11, i8 12, i8 13, i8 14, i8 15>, align 16
793*9880d681SAndroid Build Coastguard Worker@llvm_mips_ave_s_b_ARG2 = global <16 x i8> <i8 16, i8 17, i8 18, i8 19, i8 20, i8 21, i8 22, i8 23, i8 24, i8 25, i8 26, i8 27, i8 28, i8 29, i8 30, i8 31>, align 16
794*9880d681SAndroid Build Coastguard Worker@llvm_mips_ave_s_b_RES  = global <16 x i8> <i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0>, align 16
795*9880d681SAndroid Build Coastguard Worker
796*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_ave_s_b_test() nounwind {
797*9880d681SAndroid Build Coastguard Workerentry:
798*9880d681SAndroid Build Coastguard Worker  %0 = load <16 x i8>, <16 x i8>* @llvm_mips_ave_s_b_ARG1
799*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* @llvm_mips_ave_s_b_ARG2
800*9880d681SAndroid Build Coastguard Worker  %2 = tail call <16 x i8> @llvm.mips.ave.s.b(<16 x i8> %0, <16 x i8> %1)
801*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %2, <16 x i8>* @llvm_mips_ave_s_b_RES
802*9880d681SAndroid Build Coastguard Worker  ret void
803*9880d681SAndroid Build Coastguard Worker}
804*9880d681SAndroid Build Coastguard Worker
805*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.mips.ave.s.b(<16 x i8>, <16 x i8>) nounwind
806*9880d681SAndroid Build Coastguard Worker
807*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_ave_s_b_test:
808*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_ave_s_b_ARG1)
809*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_ave_s_b_ARG2)
810*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.b [[WS:\$w[0-9]+]], 0([[R1]])
811*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.b [[WT:\$w[0-9]+]], 0([[R2]])
812*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ave_s.b [[WD:\$w[0-9]+]], [[WS]], [[WT]]
813*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R3:\$[0-9]+]], %got(llvm_mips_ave_s_b_RES)
814*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.b [[WD]], 0([[R3]])
815*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_ave_s_b_test
816*9880d681SAndroid Build Coastguard Worker;
817*9880d681SAndroid Build Coastguard Worker@llvm_mips_ave_s_h_ARG1 = global <8 x i16> <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>, align 16
818*9880d681SAndroid Build Coastguard Worker@llvm_mips_ave_s_h_ARG2 = global <8 x i16> <i16 8, i16 9, i16 10, i16 11, i16 12, i16 13, i16 14, i16 15>, align 16
819*9880d681SAndroid Build Coastguard Worker@llvm_mips_ave_s_h_RES  = global <8 x i16> <i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0>, align 16
820*9880d681SAndroid Build Coastguard Worker
821*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_ave_s_h_test() nounwind {
822*9880d681SAndroid Build Coastguard Workerentry:
823*9880d681SAndroid Build Coastguard Worker  %0 = load <8 x i16>, <8 x i16>* @llvm_mips_ave_s_h_ARG1
824*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* @llvm_mips_ave_s_h_ARG2
825*9880d681SAndroid Build Coastguard Worker  %2 = tail call <8 x i16> @llvm.mips.ave.s.h(<8 x i16> %0, <8 x i16> %1)
826*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %2, <8 x i16>* @llvm_mips_ave_s_h_RES
827*9880d681SAndroid Build Coastguard Worker  ret void
828*9880d681SAndroid Build Coastguard Worker}
829*9880d681SAndroid Build Coastguard Worker
830*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.mips.ave.s.h(<8 x i16>, <8 x i16>) nounwind
831*9880d681SAndroid Build Coastguard Worker
832*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_ave_s_h_test:
833*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_ave_s_h_ARG1)
834*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_ave_s_h_ARG2)
835*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.h [[WS:\$w[0-9]+]], 0([[R1]])
836*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.h [[WT:\$w[0-9]+]], 0([[R2]])
837*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ave_s.h [[WD:\$w[0-9]+]], [[WS]], [[WT]]
838*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R3:\$[0-9]+]], %got(llvm_mips_ave_s_h_RES)
839*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.h [[WD]], 0([[R3]])
840*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_ave_s_h_test
841*9880d681SAndroid Build Coastguard Worker;
842*9880d681SAndroid Build Coastguard Worker@llvm_mips_ave_s_w_ARG1 = global <4 x i32> <i32 0, i32 1, i32 2, i32 3>, align 16
843*9880d681SAndroid Build Coastguard Worker@llvm_mips_ave_s_w_ARG2 = global <4 x i32> <i32 4, i32 5, i32 6, i32 7>, align 16
844*9880d681SAndroid Build Coastguard Worker@llvm_mips_ave_s_w_RES  = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16
845*9880d681SAndroid Build Coastguard Worker
846*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_ave_s_w_test() nounwind {
847*9880d681SAndroid Build Coastguard Workerentry:
848*9880d681SAndroid Build Coastguard Worker  %0 = load <4 x i32>, <4 x i32>* @llvm_mips_ave_s_w_ARG1
849*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* @llvm_mips_ave_s_w_ARG2
850*9880d681SAndroid Build Coastguard Worker  %2 = tail call <4 x i32> @llvm.mips.ave.s.w(<4 x i32> %0, <4 x i32> %1)
851*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %2, <4 x i32>* @llvm_mips_ave_s_w_RES
852*9880d681SAndroid Build Coastguard Worker  ret void
853*9880d681SAndroid Build Coastguard Worker}
854*9880d681SAndroid Build Coastguard Worker
855*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.mips.ave.s.w(<4 x i32>, <4 x i32>) nounwind
856*9880d681SAndroid Build Coastguard Worker
857*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_ave_s_w_test:
858*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_ave_s_w_ARG1)
859*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_ave_s_w_ARG2)
860*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.w [[WS:\$w[0-9]+]], 0([[R1]])
861*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.w [[WT:\$w[0-9]+]], 0([[R2]])
862*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ave_s.w [[WD:\$w[0-9]+]], [[WS]], [[WT]]
863*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R3:\$[0-9]+]], %got(llvm_mips_ave_s_w_RES)
864*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.w [[WD]], 0([[R3]])
865*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_ave_s_w_test
866*9880d681SAndroid Build Coastguard Worker;
867*9880d681SAndroid Build Coastguard Worker@llvm_mips_ave_s_d_ARG1 = global <2 x i64> <i64 0, i64 1>, align 16
868*9880d681SAndroid Build Coastguard Worker@llvm_mips_ave_s_d_ARG2 = global <2 x i64> <i64 2, i64 3>, align 16
869*9880d681SAndroid Build Coastguard Worker@llvm_mips_ave_s_d_RES  = global <2 x i64> <i64 0, i64 0>, align 16
870*9880d681SAndroid Build Coastguard Worker
871*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_ave_s_d_test() nounwind {
872*9880d681SAndroid Build Coastguard Workerentry:
873*9880d681SAndroid Build Coastguard Worker  %0 = load <2 x i64>, <2 x i64>* @llvm_mips_ave_s_d_ARG1
874*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* @llvm_mips_ave_s_d_ARG2
875*9880d681SAndroid Build Coastguard Worker  %2 = tail call <2 x i64> @llvm.mips.ave.s.d(<2 x i64> %0, <2 x i64> %1)
876*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %2, <2 x i64>* @llvm_mips_ave_s_d_RES
877*9880d681SAndroid Build Coastguard Worker  ret void
878*9880d681SAndroid Build Coastguard Worker}
879*9880d681SAndroid Build Coastguard Worker
880*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.mips.ave.s.d(<2 x i64>, <2 x i64>) nounwind
881*9880d681SAndroid Build Coastguard Worker
882*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_ave_s_d_test:
883*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_ave_s_d_ARG1)
884*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_ave_s_d_ARG2)
885*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.d [[WS:\$w[0-9]+]], 0([[R1]])
886*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.d [[WT:\$w[0-9]+]], 0([[R2]])
887*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ave_s.d [[WD:\$w[0-9]+]], [[WS]], [[WT]]
888*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R3:\$[0-9]+]], %got(llvm_mips_ave_s_d_RES)
889*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.d [[WD]], 0([[R3]])
890*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_ave_s_d_test
891*9880d681SAndroid Build Coastguard Worker;
892*9880d681SAndroid Build Coastguard Worker@llvm_mips_ave_u_b_ARG1 = global <16 x i8> <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 8, i8 9, i8 10, i8 11, i8 12, i8 13, i8 14, i8 15>, align 16
893*9880d681SAndroid Build Coastguard Worker@llvm_mips_ave_u_b_ARG2 = global <16 x i8> <i8 16, i8 17, i8 18, i8 19, i8 20, i8 21, i8 22, i8 23, i8 24, i8 25, i8 26, i8 27, i8 28, i8 29, i8 30, i8 31>, align 16
894*9880d681SAndroid Build Coastguard Worker@llvm_mips_ave_u_b_RES  = global <16 x i8> <i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0>, align 16
895*9880d681SAndroid Build Coastguard Worker
896*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_ave_u_b_test() nounwind {
897*9880d681SAndroid Build Coastguard Workerentry:
898*9880d681SAndroid Build Coastguard Worker  %0 = load <16 x i8>, <16 x i8>* @llvm_mips_ave_u_b_ARG1
899*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* @llvm_mips_ave_u_b_ARG2
900*9880d681SAndroid Build Coastguard Worker  %2 = tail call <16 x i8> @llvm.mips.ave.u.b(<16 x i8> %0, <16 x i8> %1)
901*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %2, <16 x i8>* @llvm_mips_ave_u_b_RES
902*9880d681SAndroid Build Coastguard Worker  ret void
903*9880d681SAndroid Build Coastguard Worker}
904*9880d681SAndroid Build Coastguard Worker
905*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.mips.ave.u.b(<16 x i8>, <16 x i8>) nounwind
906*9880d681SAndroid Build Coastguard Worker
907*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_ave_u_b_test:
908*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_ave_u_b_ARG1)
909*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_ave_u_b_ARG2)
910*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.b [[WS:\$w[0-9]+]], 0([[R1]])
911*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.b [[WT:\$w[0-9]+]], 0([[R2]])
912*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ave_u.b [[WD:\$w[0-9]+]], [[WS]], [[WT]]
913*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R3:\$[0-9]+]], %got(llvm_mips_ave_u_b_RES)
914*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.b [[WD]], 0([[R3]])
915*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_ave_u_b_test
916*9880d681SAndroid Build Coastguard Worker;
917*9880d681SAndroid Build Coastguard Worker@llvm_mips_ave_u_h_ARG1 = global <8 x i16> <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>, align 16
918*9880d681SAndroid Build Coastguard Worker@llvm_mips_ave_u_h_ARG2 = global <8 x i16> <i16 8, i16 9, i16 10, i16 11, i16 12, i16 13, i16 14, i16 15>, align 16
919*9880d681SAndroid Build Coastguard Worker@llvm_mips_ave_u_h_RES  = global <8 x i16> <i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0>, align 16
920*9880d681SAndroid Build Coastguard Worker
921*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_ave_u_h_test() nounwind {
922*9880d681SAndroid Build Coastguard Workerentry:
923*9880d681SAndroid Build Coastguard Worker  %0 = load <8 x i16>, <8 x i16>* @llvm_mips_ave_u_h_ARG1
924*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* @llvm_mips_ave_u_h_ARG2
925*9880d681SAndroid Build Coastguard Worker  %2 = tail call <8 x i16> @llvm.mips.ave.u.h(<8 x i16> %0, <8 x i16> %1)
926*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %2, <8 x i16>* @llvm_mips_ave_u_h_RES
927*9880d681SAndroid Build Coastguard Worker  ret void
928*9880d681SAndroid Build Coastguard Worker}
929*9880d681SAndroid Build Coastguard Worker
930*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.mips.ave.u.h(<8 x i16>, <8 x i16>) nounwind
931*9880d681SAndroid Build Coastguard Worker
932*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_ave_u_h_test:
933*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_ave_u_h_ARG1)
934*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_ave_u_h_ARG2)
935*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.h [[WS:\$w[0-9]+]], 0([[R1]])
936*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.h [[WT:\$w[0-9]+]], 0([[R2]])
937*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ave_u.h [[WD:\$w[0-9]+]], [[WS]], [[WT]]
938*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R3:\$[0-9]+]], %got(llvm_mips_ave_u_h_RES)
939*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.h [[WD]], 0([[R3]])
940*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_ave_u_h_test
941*9880d681SAndroid Build Coastguard Worker;
942*9880d681SAndroid Build Coastguard Worker@llvm_mips_ave_u_w_ARG1 = global <4 x i32> <i32 0, i32 1, i32 2, i32 3>, align 16
943*9880d681SAndroid Build Coastguard Worker@llvm_mips_ave_u_w_ARG2 = global <4 x i32> <i32 4, i32 5, i32 6, i32 7>, align 16
944*9880d681SAndroid Build Coastguard Worker@llvm_mips_ave_u_w_RES  = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16
945*9880d681SAndroid Build Coastguard Worker
946*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_ave_u_w_test() nounwind {
947*9880d681SAndroid Build Coastguard Workerentry:
948*9880d681SAndroid Build Coastguard Worker  %0 = load <4 x i32>, <4 x i32>* @llvm_mips_ave_u_w_ARG1
949*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* @llvm_mips_ave_u_w_ARG2
950*9880d681SAndroid Build Coastguard Worker  %2 = tail call <4 x i32> @llvm.mips.ave.u.w(<4 x i32> %0, <4 x i32> %1)
951*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %2, <4 x i32>* @llvm_mips_ave_u_w_RES
952*9880d681SAndroid Build Coastguard Worker  ret void
953*9880d681SAndroid Build Coastguard Worker}
954*9880d681SAndroid Build Coastguard Worker
955*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.mips.ave.u.w(<4 x i32>, <4 x i32>) nounwind
956*9880d681SAndroid Build Coastguard Worker
957*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_ave_u_w_test:
958*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_ave_u_w_ARG1)
959*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_ave_u_w_ARG2)
960*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.w [[WS:\$w[0-9]+]], 0([[R1]])
961*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.w [[WT:\$w[0-9]+]], 0([[R2]])
962*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ave_u.w [[WD:\$w[0-9]+]], [[WS]], [[WT]]
963*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R3:\$[0-9]+]], %got(llvm_mips_ave_u_w_RES)
964*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.w [[WD]], 0([[R3]])
965*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_ave_u_w_test
966*9880d681SAndroid Build Coastguard Worker;
967*9880d681SAndroid Build Coastguard Worker@llvm_mips_ave_u_d_ARG1 = global <2 x i64> <i64 0, i64 1>, align 16
968*9880d681SAndroid Build Coastguard Worker@llvm_mips_ave_u_d_ARG2 = global <2 x i64> <i64 2, i64 3>, align 16
969*9880d681SAndroid Build Coastguard Worker@llvm_mips_ave_u_d_RES  = global <2 x i64> <i64 0, i64 0>, align 16
970*9880d681SAndroid Build Coastguard Worker
971*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_ave_u_d_test() nounwind {
972*9880d681SAndroid Build Coastguard Workerentry:
973*9880d681SAndroid Build Coastguard Worker  %0 = load <2 x i64>, <2 x i64>* @llvm_mips_ave_u_d_ARG1
974*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* @llvm_mips_ave_u_d_ARG2
975*9880d681SAndroid Build Coastguard Worker  %2 = tail call <2 x i64> @llvm.mips.ave.u.d(<2 x i64> %0, <2 x i64> %1)
976*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %2, <2 x i64>* @llvm_mips_ave_u_d_RES
977*9880d681SAndroid Build Coastguard Worker  ret void
978*9880d681SAndroid Build Coastguard Worker}
979*9880d681SAndroid Build Coastguard Worker
980*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.mips.ave.u.d(<2 x i64>, <2 x i64>) nounwind
981*9880d681SAndroid Build Coastguard Worker
982*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_ave_u_d_test:
983*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_ave_u_d_ARG1)
984*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_ave_u_d_ARG2)
985*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.d [[WS:\$w[0-9]+]], 0([[R1]])
986*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.d [[WT:\$w[0-9]+]], 0([[R2]])
987*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ave_u.d [[WD:\$w[0-9]+]], [[WS]], [[WT]]
988*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R3:\$[0-9]+]], %got(llvm_mips_ave_u_d_RES)
989*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.d [[WD]], 0([[R3]])
990*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_ave_u_d_test
991*9880d681SAndroid Build Coastguard Worker;
992*9880d681SAndroid Build Coastguard Worker@llvm_mips_aver_s_b_ARG1 = global <16 x i8> <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 8, i8 9, i8 10, i8 11, i8 12, i8 13, i8 14, i8 15>, align 16
993*9880d681SAndroid Build Coastguard Worker@llvm_mips_aver_s_b_ARG2 = global <16 x i8> <i8 16, i8 17, i8 18, i8 19, i8 20, i8 21, i8 22, i8 23, i8 24, i8 25, i8 26, i8 27, i8 28, i8 29, i8 30, i8 31>, align 16
994*9880d681SAndroid Build Coastguard Worker@llvm_mips_aver_s_b_RES  = global <16 x i8> <i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0>, align 16
995*9880d681SAndroid Build Coastguard Worker
996*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_aver_s_b_test() nounwind {
997*9880d681SAndroid Build Coastguard Workerentry:
998*9880d681SAndroid Build Coastguard Worker  %0 = load <16 x i8>, <16 x i8>* @llvm_mips_aver_s_b_ARG1
999*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* @llvm_mips_aver_s_b_ARG2
1000*9880d681SAndroid Build Coastguard Worker  %2 = tail call <16 x i8> @llvm.mips.aver.s.b(<16 x i8> %0, <16 x i8> %1)
1001*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %2, <16 x i8>* @llvm_mips_aver_s_b_RES
1002*9880d681SAndroid Build Coastguard Worker  ret void
1003*9880d681SAndroid Build Coastguard Worker}
1004*9880d681SAndroid Build Coastguard Worker
1005*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.mips.aver.s.b(<16 x i8>, <16 x i8>) nounwind
1006*9880d681SAndroid Build Coastguard Worker
1007*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_aver_s_b_test:
1008*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_aver_s_b_ARG1)
1009*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_aver_s_b_ARG2)
1010*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.b [[WS:\$w[0-9]+]], 0([[R1]])
1011*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.b [[WT:\$w[0-9]+]], 0([[R2]])
1012*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: aver_s.b [[WD:\$w[0-9]+]], [[WS]], [[WT]]
1013*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R3:\$[0-9]+]], %got(llvm_mips_aver_s_b_RES)
1014*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.b [[WD]], 0([[R3]])
1015*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_aver_s_b_test
1016*9880d681SAndroid Build Coastguard Worker;
1017*9880d681SAndroid Build Coastguard Worker@llvm_mips_aver_s_h_ARG1 = global <8 x i16> <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>, align 16
1018*9880d681SAndroid Build Coastguard Worker@llvm_mips_aver_s_h_ARG2 = global <8 x i16> <i16 8, i16 9, i16 10, i16 11, i16 12, i16 13, i16 14, i16 15>, align 16
1019*9880d681SAndroid Build Coastguard Worker@llvm_mips_aver_s_h_RES  = global <8 x i16> <i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0>, align 16
1020*9880d681SAndroid Build Coastguard Worker
1021*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_aver_s_h_test() nounwind {
1022*9880d681SAndroid Build Coastguard Workerentry:
1023*9880d681SAndroid Build Coastguard Worker  %0 = load <8 x i16>, <8 x i16>* @llvm_mips_aver_s_h_ARG1
1024*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* @llvm_mips_aver_s_h_ARG2
1025*9880d681SAndroid Build Coastguard Worker  %2 = tail call <8 x i16> @llvm.mips.aver.s.h(<8 x i16> %0, <8 x i16> %1)
1026*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %2, <8 x i16>* @llvm_mips_aver_s_h_RES
1027*9880d681SAndroid Build Coastguard Worker  ret void
1028*9880d681SAndroid Build Coastguard Worker}
1029*9880d681SAndroid Build Coastguard Worker
1030*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.mips.aver.s.h(<8 x i16>, <8 x i16>) nounwind
1031*9880d681SAndroid Build Coastguard Worker
1032*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_aver_s_h_test:
1033*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_aver_s_h_ARG1)
1034*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_aver_s_h_ARG2)
1035*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.h [[WS:\$w[0-9]+]], 0([[R1]])
1036*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.h [[WT:\$w[0-9]+]], 0([[R2]])
1037*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: aver_s.h [[WD:\$w[0-9]+]], [[WS]], [[WT]]
1038*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R3:\$[0-9]+]], %got(llvm_mips_aver_s_h_RES)
1039*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.h [[WD]], 0([[R3]])
1040*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_aver_s_h_test
1041*9880d681SAndroid Build Coastguard Worker;
1042*9880d681SAndroid Build Coastguard Worker@llvm_mips_aver_s_w_ARG1 = global <4 x i32> <i32 0, i32 1, i32 2, i32 3>, align 16
1043*9880d681SAndroid Build Coastguard Worker@llvm_mips_aver_s_w_ARG2 = global <4 x i32> <i32 4, i32 5, i32 6, i32 7>, align 16
1044*9880d681SAndroid Build Coastguard Worker@llvm_mips_aver_s_w_RES  = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16
1045*9880d681SAndroid Build Coastguard Worker
1046*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_aver_s_w_test() nounwind {
1047*9880d681SAndroid Build Coastguard Workerentry:
1048*9880d681SAndroid Build Coastguard Worker  %0 = load <4 x i32>, <4 x i32>* @llvm_mips_aver_s_w_ARG1
1049*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* @llvm_mips_aver_s_w_ARG2
1050*9880d681SAndroid Build Coastguard Worker  %2 = tail call <4 x i32> @llvm.mips.aver.s.w(<4 x i32> %0, <4 x i32> %1)
1051*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %2, <4 x i32>* @llvm_mips_aver_s_w_RES
1052*9880d681SAndroid Build Coastguard Worker  ret void
1053*9880d681SAndroid Build Coastguard Worker}
1054*9880d681SAndroid Build Coastguard Worker
1055*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.mips.aver.s.w(<4 x i32>, <4 x i32>) nounwind
1056*9880d681SAndroid Build Coastguard Worker
1057*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_aver_s_w_test:
1058*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_aver_s_w_ARG1)
1059*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_aver_s_w_ARG2)
1060*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.w [[WS:\$w[0-9]+]], 0([[R1]])
1061*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.w [[WT:\$w[0-9]+]], 0([[R2]])
1062*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: aver_s.w [[WD:\$w[0-9]+]], [[WS]], [[WT]]
1063*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R3:\$[0-9]+]], %got(llvm_mips_aver_s_w_RES)
1064*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.w [[WD]], 0([[R3]])
1065*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_aver_s_w_test
1066*9880d681SAndroid Build Coastguard Worker;
1067*9880d681SAndroid Build Coastguard Worker@llvm_mips_aver_s_d_ARG1 = global <2 x i64> <i64 0, i64 1>, align 16
1068*9880d681SAndroid Build Coastguard Worker@llvm_mips_aver_s_d_ARG2 = global <2 x i64> <i64 2, i64 3>, align 16
1069*9880d681SAndroid Build Coastguard Worker@llvm_mips_aver_s_d_RES  = global <2 x i64> <i64 0, i64 0>, align 16
1070*9880d681SAndroid Build Coastguard Worker
1071*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_aver_s_d_test() nounwind {
1072*9880d681SAndroid Build Coastguard Workerentry:
1073*9880d681SAndroid Build Coastguard Worker  %0 = load <2 x i64>, <2 x i64>* @llvm_mips_aver_s_d_ARG1
1074*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* @llvm_mips_aver_s_d_ARG2
1075*9880d681SAndroid Build Coastguard Worker  %2 = tail call <2 x i64> @llvm.mips.aver.s.d(<2 x i64> %0, <2 x i64> %1)
1076*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %2, <2 x i64>* @llvm_mips_aver_s_d_RES
1077*9880d681SAndroid Build Coastguard Worker  ret void
1078*9880d681SAndroid Build Coastguard Worker}
1079*9880d681SAndroid Build Coastguard Worker
1080*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.mips.aver.s.d(<2 x i64>, <2 x i64>) nounwind
1081*9880d681SAndroid Build Coastguard Worker
1082*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_aver_s_d_test:
1083*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_aver_s_d_ARG1)
1084*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_aver_s_d_ARG2)
1085*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.d [[WS:\$w[0-9]+]], 0([[R1]])
1086*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.d [[WT:\$w[0-9]+]], 0([[R2]])
1087*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: aver_s.d [[WD:\$w[0-9]+]], [[WS]], [[WT]]
1088*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R3:\$[0-9]+]], %got(llvm_mips_aver_s_d_RES)
1089*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.d [[WD]], 0([[R3]])
1090*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_aver_s_d_test
1091*9880d681SAndroid Build Coastguard Worker;
1092*9880d681SAndroid Build Coastguard Worker@llvm_mips_aver_u_b_ARG1 = global <16 x i8> <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 8, i8 9, i8 10, i8 11, i8 12, i8 13, i8 14, i8 15>, align 16
1093*9880d681SAndroid Build Coastguard Worker@llvm_mips_aver_u_b_ARG2 = global <16 x i8> <i8 16, i8 17, i8 18, i8 19, i8 20, i8 21, i8 22, i8 23, i8 24, i8 25, i8 26, i8 27, i8 28, i8 29, i8 30, i8 31>, align 16
1094*9880d681SAndroid Build Coastguard Worker@llvm_mips_aver_u_b_RES  = global <16 x i8> <i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0>, align 16
1095*9880d681SAndroid Build Coastguard Worker
1096*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_aver_u_b_test() nounwind {
1097*9880d681SAndroid Build Coastguard Workerentry:
1098*9880d681SAndroid Build Coastguard Worker  %0 = load <16 x i8>, <16 x i8>* @llvm_mips_aver_u_b_ARG1
1099*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* @llvm_mips_aver_u_b_ARG2
1100*9880d681SAndroid Build Coastguard Worker  %2 = tail call <16 x i8> @llvm.mips.aver.u.b(<16 x i8> %0, <16 x i8> %1)
1101*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %2, <16 x i8>* @llvm_mips_aver_u_b_RES
1102*9880d681SAndroid Build Coastguard Worker  ret void
1103*9880d681SAndroid Build Coastguard Worker}
1104*9880d681SAndroid Build Coastguard Worker
1105*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.mips.aver.u.b(<16 x i8>, <16 x i8>) nounwind
1106*9880d681SAndroid Build Coastguard Worker
1107*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_aver_u_b_test:
1108*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_aver_u_b_ARG1)
1109*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_aver_u_b_ARG2)
1110*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.b [[WS:\$w[0-9]+]], 0([[R1]])
1111*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.b [[WT:\$w[0-9]+]], 0([[R2]])
1112*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: aver_u.b [[WD:\$w[0-9]+]], [[WS]], [[WT]]
1113*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R3:\$[0-9]+]], %got(llvm_mips_aver_u_b_RES)
1114*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.b [[WD]], 0([[R3]])
1115*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_aver_u_b_test
1116*9880d681SAndroid Build Coastguard Worker;
1117*9880d681SAndroid Build Coastguard Worker@llvm_mips_aver_u_h_ARG1 = global <8 x i16> <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>, align 16
1118*9880d681SAndroid Build Coastguard Worker@llvm_mips_aver_u_h_ARG2 = global <8 x i16> <i16 8, i16 9, i16 10, i16 11, i16 12, i16 13, i16 14, i16 15>, align 16
1119*9880d681SAndroid Build Coastguard Worker@llvm_mips_aver_u_h_RES  = global <8 x i16> <i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0>, align 16
1120*9880d681SAndroid Build Coastguard Worker
1121*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_aver_u_h_test() nounwind {
1122*9880d681SAndroid Build Coastguard Workerentry:
1123*9880d681SAndroid Build Coastguard Worker  %0 = load <8 x i16>, <8 x i16>* @llvm_mips_aver_u_h_ARG1
1124*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* @llvm_mips_aver_u_h_ARG2
1125*9880d681SAndroid Build Coastguard Worker  %2 = tail call <8 x i16> @llvm.mips.aver.u.h(<8 x i16> %0, <8 x i16> %1)
1126*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %2, <8 x i16>* @llvm_mips_aver_u_h_RES
1127*9880d681SAndroid Build Coastguard Worker  ret void
1128*9880d681SAndroid Build Coastguard Worker}
1129*9880d681SAndroid Build Coastguard Worker
1130*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.mips.aver.u.h(<8 x i16>, <8 x i16>) nounwind
1131*9880d681SAndroid Build Coastguard Worker
1132*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_aver_u_h_test:
1133*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_aver_u_h_ARG1)
1134*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_aver_u_h_ARG2)
1135*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.h [[WS:\$w[0-9]+]], 0([[R1]])
1136*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.h [[WT:\$w[0-9]+]], 0([[R2]])
1137*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: aver_u.h [[WD:\$w[0-9]+]], [[WS]], [[WT]]
1138*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R3:\$[0-9]+]], %got(llvm_mips_aver_u_h_RES)
1139*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.h [[WD]], 0([[R3]])
1140*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_aver_u_h_test
1141*9880d681SAndroid Build Coastguard Worker;
1142*9880d681SAndroid Build Coastguard Worker@llvm_mips_aver_u_w_ARG1 = global <4 x i32> <i32 0, i32 1, i32 2, i32 3>, align 16
1143*9880d681SAndroid Build Coastguard Worker@llvm_mips_aver_u_w_ARG2 = global <4 x i32> <i32 4, i32 5, i32 6, i32 7>, align 16
1144*9880d681SAndroid Build Coastguard Worker@llvm_mips_aver_u_w_RES  = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16
1145*9880d681SAndroid Build Coastguard Worker
1146*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_aver_u_w_test() nounwind {
1147*9880d681SAndroid Build Coastguard Workerentry:
1148*9880d681SAndroid Build Coastguard Worker  %0 = load <4 x i32>, <4 x i32>* @llvm_mips_aver_u_w_ARG1
1149*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* @llvm_mips_aver_u_w_ARG2
1150*9880d681SAndroid Build Coastguard Worker  %2 = tail call <4 x i32> @llvm.mips.aver.u.w(<4 x i32> %0, <4 x i32> %1)
1151*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %2, <4 x i32>* @llvm_mips_aver_u_w_RES
1152*9880d681SAndroid Build Coastguard Worker  ret void
1153*9880d681SAndroid Build Coastguard Worker}
1154*9880d681SAndroid Build Coastguard Worker
1155*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.mips.aver.u.w(<4 x i32>, <4 x i32>) nounwind
1156*9880d681SAndroid Build Coastguard Worker
1157*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_aver_u_w_test:
1158*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_aver_u_w_ARG1)
1159*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_aver_u_w_ARG2)
1160*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.w [[WS:\$w[0-9]+]], 0([[R1]])
1161*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.w [[WT:\$w[0-9]+]], 0([[R2]])
1162*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: aver_u.w [[WD:\$w[0-9]+]], [[WS]], [[WT]]
1163*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R3:\$[0-9]+]], %got(llvm_mips_aver_u_w_RES)
1164*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.w [[WD]], 0([[R3]])
1165*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_aver_u_w_test
1166*9880d681SAndroid Build Coastguard Worker;
1167*9880d681SAndroid Build Coastguard Worker@llvm_mips_aver_u_d_ARG1 = global <2 x i64> <i64 0, i64 1>, align 16
1168*9880d681SAndroid Build Coastguard Worker@llvm_mips_aver_u_d_ARG2 = global <2 x i64> <i64 2, i64 3>, align 16
1169*9880d681SAndroid Build Coastguard Worker@llvm_mips_aver_u_d_RES  = global <2 x i64> <i64 0, i64 0>, align 16
1170*9880d681SAndroid Build Coastguard Worker
1171*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_aver_u_d_test() nounwind {
1172*9880d681SAndroid Build Coastguard Workerentry:
1173*9880d681SAndroid Build Coastguard Worker  %0 = load <2 x i64>, <2 x i64>* @llvm_mips_aver_u_d_ARG1
1174*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* @llvm_mips_aver_u_d_ARG2
1175*9880d681SAndroid Build Coastguard Worker  %2 = tail call <2 x i64> @llvm.mips.aver.u.d(<2 x i64> %0, <2 x i64> %1)
1176*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %2, <2 x i64>* @llvm_mips_aver_u_d_RES
1177*9880d681SAndroid Build Coastguard Worker  ret void
1178*9880d681SAndroid Build Coastguard Worker}
1179*9880d681SAndroid Build Coastguard Worker
1180*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.mips.aver.u.d(<2 x i64>, <2 x i64>) nounwind
1181*9880d681SAndroid Build Coastguard Worker
1182*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_aver_u_d_test:
1183*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_aver_u_d_ARG1)
1184*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_aver_u_d_ARG2)
1185*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.d [[WS:\$w[0-9]+]], 0([[R1]])
1186*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.d [[WT:\$w[0-9]+]], 0([[R2]])
1187*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: aver_u.d [[WD:\$w[0-9]+]], [[WS]], [[WT]]
1188*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R3:\$[0-9]+]], %got(llvm_mips_aver_u_d_RES)
1189*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.d [[WD]], 0([[R3]])
1190*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_aver_u_d_test
1191*9880d681SAndroid Build Coastguard Worker;
1192