xref: /aosp_15_r20/external/llvm/test/CodeGen/Mips/msa/3r-s.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 's'
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@llvm_mips_sld_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
8*9880d681SAndroid Build Coastguard Worker@llvm_mips_sld_b_ARG2 = 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
9*9880d681SAndroid Build Coastguard Worker@llvm_mips_sld_b_ARG3 = global i32 10, align 16
10*9880d681SAndroid Build Coastguard Worker@llvm_mips_sld_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
11*9880d681SAndroid Build Coastguard Worker
12*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_sld_b_test() nounwind {
13*9880d681SAndroid Build Coastguard Workerentry:
14*9880d681SAndroid Build Coastguard Worker  %0 = load <16 x i8>, <16 x i8>* @llvm_mips_sld_b_ARG1
15*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* @llvm_mips_sld_b_ARG2
16*9880d681SAndroid Build Coastguard Worker  %2 = load i32, i32* @llvm_mips_sld_b_ARG3
17*9880d681SAndroid Build Coastguard Worker  %3 = tail call <16 x i8> @llvm.mips.sld.b(<16 x i8> %0, <16 x i8> %1, i32 %2)
18*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %3, <16 x i8>* @llvm_mips_sld_b_RES
19*9880d681SAndroid Build Coastguard Worker  ret void
20*9880d681SAndroid Build Coastguard Worker}
21*9880d681SAndroid Build Coastguard Worker
22*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.mips.sld.b(<16 x i8>, <16 x i8>, i32) nounwind
23*9880d681SAndroid Build Coastguard Worker
24*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_sld_b_test:
25*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_sld_b_ARG1)
26*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_sld_b_ARG2)
27*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R3:\$[0-9]+]], %got(llvm_mips_sld_b_ARG3)
28*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.b [[WD:\$w[0-9]+]], 0([[R1]])
29*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.b [[WS:\$w[0-9]+]], 0([[R2]])
30*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[RT:\$[0-9]+]], 0([[R3]])
31*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: sld.b [[WD]], [[WS]]{{\[}}[[RT]]{{\]}}
32*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.b [[WD]]
33*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_sld_b_test
34*9880d681SAndroid Build Coastguard Worker;
35*9880d681SAndroid Build Coastguard Worker@llvm_mips_sld_h_ARG1 = global <8 x i16> <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>, align 16
36*9880d681SAndroid Build Coastguard Worker@llvm_mips_sld_h_ARG2 = global <8 x i16> <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>, align 16
37*9880d681SAndroid Build Coastguard Worker@llvm_mips_sld_h_ARG3 = global i32 10, align 16
38*9880d681SAndroid Build Coastguard Worker@llvm_mips_sld_h_RES  = global <8 x i16> <i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0>, align 16
39*9880d681SAndroid Build Coastguard Worker
40*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_sld_h_test() nounwind {
41*9880d681SAndroid Build Coastguard Workerentry:
42*9880d681SAndroid Build Coastguard Worker  %0 = load <8 x i16>, <8 x i16>* @llvm_mips_sld_h_ARG1
43*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* @llvm_mips_sld_h_ARG2
44*9880d681SAndroid Build Coastguard Worker  %2 = load i32, i32* @llvm_mips_sld_h_ARG3
45*9880d681SAndroid Build Coastguard Worker  %3 = tail call <8 x i16> @llvm.mips.sld.h(<8 x i16> %0, <8 x i16> %1, i32 %2)
46*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %3, <8 x i16>* @llvm_mips_sld_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.sld.h(<8 x i16>, <8 x i16>, i32) nounwind
51*9880d681SAndroid Build Coastguard Worker
52*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_sld_h_test:
53*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_sld_h_ARG1)
54*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_sld_h_ARG2)
55*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R3:\$[0-9]+]], %got(llvm_mips_sld_h_ARG3)
56*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.h [[WD:\$w[0-9]+]], 0([[R1]])
57*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.h [[WS:\$w[0-9]+]], 0([[R2]])
58*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[RT:\$[0-9]+]], 0([[R3]])
59*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: sld.h [[WD]], [[WS]]{{\[}}[[RT]]{{\]}}
60*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.h [[WD]]
61*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_sld_h_test
62*9880d681SAndroid Build Coastguard Worker;
63*9880d681SAndroid Build Coastguard Worker@llvm_mips_sld_w_ARG1 = global <4 x i32> <i32 0, i32 1, i32 2, i32 3>, align 16
64*9880d681SAndroid Build Coastguard Worker@llvm_mips_sld_w_ARG2 = global <4 x i32> <i32 0, i32 1, i32 2, i32 3>, align 16
65*9880d681SAndroid Build Coastguard Worker@llvm_mips_sld_w_ARG3 = global i32 10, align 16
66*9880d681SAndroid Build Coastguard Worker@llvm_mips_sld_w_RES  = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16
67*9880d681SAndroid Build Coastguard Worker
68*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_sld_w_test() nounwind {
69*9880d681SAndroid Build Coastguard Workerentry:
70*9880d681SAndroid Build Coastguard Worker  %0 = load <4 x i32>, <4 x i32>* @llvm_mips_sld_w_ARG1
71*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* @llvm_mips_sld_w_ARG2
72*9880d681SAndroid Build Coastguard Worker  %2 = load i32, i32* @llvm_mips_sld_w_ARG3
73*9880d681SAndroid Build Coastguard Worker  %3 = tail call <4 x i32> @llvm.mips.sld.w(<4 x i32> %0, <4 x i32> %1, i32 %2)
74*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %3, <4 x i32>* @llvm_mips_sld_w_RES
75*9880d681SAndroid Build Coastguard Worker  ret void
76*9880d681SAndroid Build Coastguard Worker}
77*9880d681SAndroid Build Coastguard Worker
78*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.mips.sld.w(<4 x i32>, <4 x i32>, i32) nounwind
79*9880d681SAndroid Build Coastguard Worker
80*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_sld_w_test:
81*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_sld_w_ARG1)
82*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_sld_w_ARG2)
83*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R3:\$[0-9]+]], %got(llvm_mips_sld_w_ARG3)
84*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.w [[WD:\$w[0-9]+]], 0([[R1]])
85*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.w [[WS:\$w[0-9]+]], 0([[R2]])
86*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[RT:\$[0-9]+]], 0([[R3]])
87*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: sld.w [[WD]], [[WS]]{{\[}}[[RT]]{{\]}}
88*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.w [[WD]]
89*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_sld_w_test
90*9880d681SAndroid Build Coastguard Worker;
91*9880d681SAndroid Build Coastguard Worker@llvm_mips_sld_d_ARG1 = global <2 x i64> <i64 0, i64 1>, align 16
92*9880d681SAndroid Build Coastguard Worker@llvm_mips_sld_d_ARG2 = global <2 x i64> <i64 0, i64 1>, align 16
93*9880d681SAndroid Build Coastguard Worker@llvm_mips_sld_d_ARG3 = global i32 10, align 16
94*9880d681SAndroid Build Coastguard Worker@llvm_mips_sld_d_RES  = global <2 x i64> <i64 0, i64 0>, align 16
95*9880d681SAndroid Build Coastguard Worker
96*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_sld_d_test() nounwind {
97*9880d681SAndroid Build Coastguard Workerentry:
98*9880d681SAndroid Build Coastguard Worker  %0 = load <2 x i64>, <2 x i64>* @llvm_mips_sld_d_ARG1
99*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* @llvm_mips_sld_d_ARG2
100*9880d681SAndroid Build Coastguard Worker  %2 = load i32, i32* @llvm_mips_sld_d_ARG3
101*9880d681SAndroid Build Coastguard Worker  %3 = tail call <2 x i64> @llvm.mips.sld.d(<2 x i64> %0, <2 x i64> %1, i32 %2)
102*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %3, <2 x i64>* @llvm_mips_sld_d_RES
103*9880d681SAndroid Build Coastguard Worker  ret void
104*9880d681SAndroid Build Coastguard Worker}
105*9880d681SAndroid Build Coastguard Worker
106*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.mips.sld.d(<2 x i64>, <2 x i64>, i32) nounwind
107*9880d681SAndroid Build Coastguard Worker
108*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_sld_d_test:
109*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_sld_d_ARG1)
110*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_sld_d_ARG2)
111*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R3:\$[0-9]+]], %got(llvm_mips_sld_d_ARG3)
112*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.d [[WD:\$w[0-9]+]], 0([[R1]])
113*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.d [[WS:\$w[0-9]+]], 0([[R2]])
114*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[RT:\$[0-9]+]], 0([[R3]])
115*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: sld.d [[WD]], [[WS]]{{\[}}[[RT]]{{\]}}
116*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.d [[WD]]
117*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_sld_d_test
118*9880d681SAndroid Build Coastguard Worker;
119*9880d681SAndroid Build Coastguard Worker@llvm_mips_sll_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
120*9880d681SAndroid Build Coastguard Worker@llvm_mips_sll_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
121*9880d681SAndroid Build Coastguard Worker@llvm_mips_sll_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
122*9880d681SAndroid Build Coastguard Worker
123*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_sll_b_test() nounwind {
124*9880d681SAndroid Build Coastguard Workerentry:
125*9880d681SAndroid Build Coastguard Worker  %0 = load <16 x i8>, <16 x i8>* @llvm_mips_sll_b_ARG1
126*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* @llvm_mips_sll_b_ARG2
127*9880d681SAndroid Build Coastguard Worker  %2 = tail call <16 x i8> @llvm.mips.sll.b(<16 x i8> %0, <16 x i8> %1)
128*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %2, <16 x i8>* @llvm_mips_sll_b_RES
129*9880d681SAndroid Build Coastguard Worker  ret void
130*9880d681SAndroid Build Coastguard Worker}
131*9880d681SAndroid Build Coastguard Worker
132*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.mips.sll.b(<16 x i8>, <16 x i8>) nounwind
133*9880d681SAndroid Build Coastguard Worker
134*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_sll_b_test:
135*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_sll_b_ARG1)
136*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_sll_b_ARG2)
137*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.b [[WS:\$w[0-9]+]], 0([[R1]])
138*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.b [[WT:\$w[0-9]+]], 0([[R2]])
139*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: sll.b [[WD:\$w[0-9]+]], [[WS]], [[WT]]
140*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.b [[WD]]
141*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_sll_b_test
142*9880d681SAndroid Build Coastguard Worker;
143*9880d681SAndroid Build Coastguard Worker@llvm_mips_sll_h_ARG1 = global <8 x i16> <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>, align 16
144*9880d681SAndroid Build Coastguard Worker@llvm_mips_sll_h_ARG2 = global <8 x i16> <i16 8, i16 9, i16 10, i16 11, i16 12, i16 13, i16 14, i16 15>, align 16
145*9880d681SAndroid Build Coastguard Worker@llvm_mips_sll_h_RES  = global <8 x i16> <i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0>, align 16
146*9880d681SAndroid Build Coastguard Worker
147*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_sll_h_test() nounwind {
148*9880d681SAndroid Build Coastguard Workerentry:
149*9880d681SAndroid Build Coastguard Worker  %0 = load <8 x i16>, <8 x i16>* @llvm_mips_sll_h_ARG1
150*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* @llvm_mips_sll_h_ARG2
151*9880d681SAndroid Build Coastguard Worker  %2 = tail call <8 x i16> @llvm.mips.sll.h(<8 x i16> %0, <8 x i16> %1)
152*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %2, <8 x i16>* @llvm_mips_sll_h_RES
153*9880d681SAndroid Build Coastguard Worker  ret void
154*9880d681SAndroid Build Coastguard Worker}
155*9880d681SAndroid Build Coastguard Worker
156*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.mips.sll.h(<8 x i16>, <8 x i16>) nounwind
157*9880d681SAndroid Build Coastguard Worker
158*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_sll_h_test:
159*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_sll_h_ARG1)
160*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_sll_h_ARG2)
161*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.h [[WS:\$w[0-9]+]], 0([[R1]])
162*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.h [[WT:\$w[0-9]+]], 0([[R2]])
163*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: sll.h [[WD:\$w[0-9]+]], [[WS]], [[WT]]
164*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.h [[WD]]
165*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_sll_h_test
166*9880d681SAndroid Build Coastguard Worker;
167*9880d681SAndroid Build Coastguard Worker@llvm_mips_sll_w_ARG1 = global <4 x i32> <i32 0, i32 1, i32 2, i32 3>, align 16
168*9880d681SAndroid Build Coastguard Worker@llvm_mips_sll_w_ARG2 = global <4 x i32> <i32 4, i32 5, i32 6, i32 7>, align 16
169*9880d681SAndroid Build Coastguard Worker@llvm_mips_sll_w_RES  = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16
170*9880d681SAndroid Build Coastguard Worker
171*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_sll_w_test() nounwind {
172*9880d681SAndroid Build Coastguard Workerentry:
173*9880d681SAndroid Build Coastguard Worker  %0 = load <4 x i32>, <4 x i32>* @llvm_mips_sll_w_ARG1
174*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* @llvm_mips_sll_w_ARG2
175*9880d681SAndroid Build Coastguard Worker  %2 = tail call <4 x i32> @llvm.mips.sll.w(<4 x i32> %0, <4 x i32> %1)
176*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %2, <4 x i32>* @llvm_mips_sll_w_RES
177*9880d681SAndroid Build Coastguard Worker  ret void
178*9880d681SAndroid Build Coastguard Worker}
179*9880d681SAndroid Build Coastguard Worker
180*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.mips.sll.w(<4 x i32>, <4 x i32>) nounwind
181*9880d681SAndroid Build Coastguard Worker
182*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_sll_w_test:
183*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_sll_w_ARG1)
184*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_sll_w_ARG2)
185*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.w [[WS:\$w[0-9]+]], 0([[R1]])
186*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.w [[WT:\$w[0-9]+]], 0([[R2]])
187*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: sll.w [[WD:\$w[0-9]+]], [[WS]], [[WT]]
188*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.w [[WD]]
189*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_sll_w_test
190*9880d681SAndroid Build Coastguard Worker;
191*9880d681SAndroid Build Coastguard Worker@llvm_mips_sll_d_ARG1 = global <2 x i64> <i64 0, i64 1>, align 16
192*9880d681SAndroid Build Coastguard Worker@llvm_mips_sll_d_ARG2 = global <2 x i64> <i64 2, i64 3>, align 16
193*9880d681SAndroid Build Coastguard Worker@llvm_mips_sll_d_RES  = global <2 x i64> <i64 0, i64 0>, align 16
194*9880d681SAndroid Build Coastguard Worker
195*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_sll_d_test() nounwind {
196*9880d681SAndroid Build Coastguard Workerentry:
197*9880d681SAndroid Build Coastguard Worker  %0 = load <2 x i64>, <2 x i64>* @llvm_mips_sll_d_ARG1
198*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* @llvm_mips_sll_d_ARG2
199*9880d681SAndroid Build Coastguard Worker  %2 = tail call <2 x i64> @llvm.mips.sll.d(<2 x i64> %0, <2 x i64> %1)
200*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %2, <2 x i64>* @llvm_mips_sll_d_RES
201*9880d681SAndroid Build Coastguard Worker  ret void
202*9880d681SAndroid Build Coastguard Worker}
203*9880d681SAndroid Build Coastguard Worker
204*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.mips.sll.d(<2 x i64>, <2 x i64>) nounwind
205*9880d681SAndroid Build Coastguard Worker
206*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_sll_d_test:
207*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_sll_d_ARG1)
208*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_sll_d_ARG2)
209*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.d [[WS:\$w[0-9]+]], 0([[R1]])
210*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.d [[WT:\$w[0-9]+]], 0([[R2]])
211*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: sll.d [[WD:\$w[0-9]+]], [[WS]], [[WT]]
212*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.d [[WD]]
213*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_sll_d_test
214*9880d681SAndroid Build Coastguard Worker
215*9880d681SAndroid Build Coastguard Workerdefine void @sll_b_test() nounwind {
216*9880d681SAndroid Build Coastguard Workerentry:
217*9880d681SAndroid Build Coastguard Worker  %0 = load <16 x i8>, <16 x i8>* @llvm_mips_sll_b_ARG1
218*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* @llvm_mips_sll_b_ARG2
219*9880d681SAndroid Build Coastguard Worker  %2 = shl <16 x i8> %0, %1
220*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %2, <16 x i8>* @llvm_mips_sll_b_RES
221*9880d681SAndroid Build Coastguard Worker  ret void
222*9880d681SAndroid Build Coastguard Worker}
223*9880d681SAndroid Build Coastguard Worker
224*9880d681SAndroid Build Coastguard Worker; CHECK: sll_b_test:
225*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_sll_b_ARG1)
226*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_sll_b_ARG2)
227*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.b [[WS:\$w[0-9]+]], 0([[R1]])
228*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.b [[WT:\$w[0-9]+]], 0([[R2]])
229*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: sll.b [[WD:\$w[0-9]+]], [[WS]], [[WT]]
230*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.b [[WD]]
231*9880d681SAndroid Build Coastguard Worker; CHECK: .size sll_b_test
232*9880d681SAndroid Build Coastguard Worker
233*9880d681SAndroid Build Coastguard Workerdefine void @sll_h_test() nounwind {
234*9880d681SAndroid Build Coastguard Workerentry:
235*9880d681SAndroid Build Coastguard Worker  %0 = load <8 x i16>, <8 x i16>* @llvm_mips_sll_h_ARG1
236*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* @llvm_mips_sll_h_ARG2
237*9880d681SAndroid Build Coastguard Worker  %2 = shl <8 x i16> %0, %1
238*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %2, <8 x i16>* @llvm_mips_sll_h_RES
239*9880d681SAndroid Build Coastguard Worker  ret void
240*9880d681SAndroid Build Coastguard Worker}
241*9880d681SAndroid Build Coastguard Worker
242*9880d681SAndroid Build Coastguard Worker; CHECK: sll_h_test:
243*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_sll_h_ARG1)
244*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_sll_h_ARG2)
245*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.h [[WS:\$w[0-9]+]], 0([[R1]])
246*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.h [[WT:\$w[0-9]+]], 0([[R2]])
247*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: sll.h [[WD:\$w[0-9]+]], [[WS]], [[WT]]
248*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.h [[WD]]
249*9880d681SAndroid Build Coastguard Worker; CHECK: .size sll_h_test
250*9880d681SAndroid Build Coastguard Worker
251*9880d681SAndroid Build Coastguard Workerdefine void @sll_w_test() nounwind {
252*9880d681SAndroid Build Coastguard Workerentry:
253*9880d681SAndroid Build Coastguard Worker  %0 = load <4 x i32>, <4 x i32>* @llvm_mips_sll_w_ARG1
254*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* @llvm_mips_sll_w_ARG2
255*9880d681SAndroid Build Coastguard Worker  %2 = shl <4 x i32> %0, %1
256*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %2, <4 x i32>* @llvm_mips_sll_w_RES
257*9880d681SAndroid Build Coastguard Worker  ret void
258*9880d681SAndroid Build Coastguard Worker}
259*9880d681SAndroid Build Coastguard Worker
260*9880d681SAndroid Build Coastguard Worker; CHECK: sll_w_test:
261*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_sll_w_ARG1)
262*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_sll_w_ARG2)
263*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.w [[WS:\$w[0-9]+]], 0([[R1]])
264*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.w [[WT:\$w[0-9]+]], 0([[R2]])
265*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: sll.w [[WD:\$w[0-9]+]], [[WS]], [[WT]]
266*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.w [[WD]]
267*9880d681SAndroid Build Coastguard Worker; CHECK: .size sll_w_test
268*9880d681SAndroid Build Coastguard Worker
269*9880d681SAndroid Build Coastguard Workerdefine void @sll_d_test() nounwind {
270*9880d681SAndroid Build Coastguard Workerentry:
271*9880d681SAndroid Build Coastguard Worker  %0 = load <2 x i64>, <2 x i64>* @llvm_mips_sll_d_ARG1
272*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* @llvm_mips_sll_d_ARG2
273*9880d681SAndroid Build Coastguard Worker  %2 = shl <2 x i64> %0, %1
274*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %2, <2 x i64>* @llvm_mips_sll_d_RES
275*9880d681SAndroid Build Coastguard Worker  ret void
276*9880d681SAndroid Build Coastguard Worker}
277*9880d681SAndroid Build Coastguard Worker
278*9880d681SAndroid Build Coastguard Worker; CHECK: sll_d_test:
279*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_sll_d_ARG1)
280*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_sll_d_ARG2)
281*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.d [[WS:\$w[0-9]+]], 0([[R1]])
282*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.d [[WT:\$w[0-9]+]], 0([[R2]])
283*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: sll.d [[WD:\$w[0-9]+]], [[WS]], [[WT]]
284*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.d [[WD]]
285*9880d681SAndroid Build Coastguard Worker; CHECK: .size sll_d_test
286*9880d681SAndroid Build Coastguard Worker;
287*9880d681SAndroid Build Coastguard Worker@llvm_mips_sra_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
288*9880d681SAndroid Build Coastguard Worker@llvm_mips_sra_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
289*9880d681SAndroid Build Coastguard Worker@llvm_mips_sra_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
290*9880d681SAndroid Build Coastguard Worker
291*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_sra_b_test() nounwind {
292*9880d681SAndroid Build Coastguard Workerentry:
293*9880d681SAndroid Build Coastguard Worker  %0 = load <16 x i8>, <16 x i8>* @llvm_mips_sra_b_ARG1
294*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* @llvm_mips_sra_b_ARG2
295*9880d681SAndroid Build Coastguard Worker  %2 = tail call <16 x i8> @llvm.mips.sra.b(<16 x i8> %0, <16 x i8> %1)
296*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %2, <16 x i8>* @llvm_mips_sra_b_RES
297*9880d681SAndroid Build Coastguard Worker  ret void
298*9880d681SAndroid Build Coastguard Worker}
299*9880d681SAndroid Build Coastguard Worker
300*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.mips.sra.b(<16 x i8>, <16 x i8>) nounwind
301*9880d681SAndroid Build Coastguard Worker
302*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_sra_b_test:
303*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_sra_b_ARG1)
304*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_sra_b_ARG2)
305*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.b [[WS:\$w[0-9]+]], 0([[R1]])
306*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.b [[WT:\$w[0-9]+]], 0([[R2]])
307*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: sra.b [[WD:\$w[0-9]+]], [[WS]], [[WT]]
308*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.b [[WD]]
309*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_sra_b_test
310*9880d681SAndroid Build Coastguard Worker;
311*9880d681SAndroid Build Coastguard Worker@llvm_mips_sra_h_ARG1 = global <8 x i16> <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>, align 16
312*9880d681SAndroid Build Coastguard Worker@llvm_mips_sra_h_ARG2 = global <8 x i16> <i16 8, i16 9, i16 10, i16 11, i16 12, i16 13, i16 14, i16 15>, align 16
313*9880d681SAndroid Build Coastguard Worker@llvm_mips_sra_h_RES  = global <8 x i16> <i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0>, align 16
314*9880d681SAndroid Build Coastguard Worker
315*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_sra_h_test() nounwind {
316*9880d681SAndroid Build Coastguard Workerentry:
317*9880d681SAndroid Build Coastguard Worker  %0 = load <8 x i16>, <8 x i16>* @llvm_mips_sra_h_ARG1
318*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* @llvm_mips_sra_h_ARG2
319*9880d681SAndroid Build Coastguard Worker  %2 = tail call <8 x i16> @llvm.mips.sra.h(<8 x i16> %0, <8 x i16> %1)
320*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %2, <8 x i16>* @llvm_mips_sra_h_RES
321*9880d681SAndroid Build Coastguard Worker  ret void
322*9880d681SAndroid Build Coastguard Worker}
323*9880d681SAndroid Build Coastguard Worker
324*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.mips.sra.h(<8 x i16>, <8 x i16>) nounwind
325*9880d681SAndroid Build Coastguard Worker
326*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_sra_h_test:
327*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_sra_h_ARG1)
328*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_sra_h_ARG2)
329*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.h [[WS:\$w[0-9]+]], 0([[R1]])
330*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.h [[WT:\$w[0-9]+]], 0([[R2]])
331*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: sra.h [[WD:\$w[0-9]+]], [[WS]], [[WT]]
332*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.h [[WD]]
333*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_sra_h_test
334*9880d681SAndroid Build Coastguard Worker;
335*9880d681SAndroid Build Coastguard Worker@llvm_mips_sra_w_ARG1 = global <4 x i32> <i32 0, i32 1, i32 2, i32 3>, align 16
336*9880d681SAndroid Build Coastguard Worker@llvm_mips_sra_w_ARG2 = global <4 x i32> <i32 4, i32 5, i32 6, i32 7>, align 16
337*9880d681SAndroid Build Coastguard Worker@llvm_mips_sra_w_RES  = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16
338*9880d681SAndroid Build Coastguard Worker
339*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_sra_w_test() nounwind {
340*9880d681SAndroid Build Coastguard Workerentry:
341*9880d681SAndroid Build Coastguard Worker  %0 = load <4 x i32>, <4 x i32>* @llvm_mips_sra_w_ARG1
342*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* @llvm_mips_sra_w_ARG2
343*9880d681SAndroid Build Coastguard Worker  %2 = tail call <4 x i32> @llvm.mips.sra.w(<4 x i32> %0, <4 x i32> %1)
344*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %2, <4 x i32>* @llvm_mips_sra_w_RES
345*9880d681SAndroid Build Coastguard Worker  ret void
346*9880d681SAndroid Build Coastguard Worker}
347*9880d681SAndroid Build Coastguard Worker
348*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.mips.sra.w(<4 x i32>, <4 x i32>) nounwind
349*9880d681SAndroid Build Coastguard Worker
350*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_sra_w_test:
351*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_sra_w_ARG1)
352*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_sra_w_ARG2)
353*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.w [[WS:\$w[0-9]+]], 0([[R1]])
354*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.w [[WT:\$w[0-9]+]], 0([[R2]])
355*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: sra.w [[WD:\$w[0-9]+]], [[WS]], [[WT]]
356*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.w [[WD]]
357*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_sra_w_test
358*9880d681SAndroid Build Coastguard Worker;
359*9880d681SAndroid Build Coastguard Worker@llvm_mips_sra_d_ARG1 = global <2 x i64> <i64 0, i64 1>, align 16
360*9880d681SAndroid Build Coastguard Worker@llvm_mips_sra_d_ARG2 = global <2 x i64> <i64 2, i64 3>, align 16
361*9880d681SAndroid Build Coastguard Worker@llvm_mips_sra_d_RES  = global <2 x i64> <i64 0, i64 0>, align 16
362*9880d681SAndroid Build Coastguard Worker
363*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_sra_d_test() nounwind {
364*9880d681SAndroid Build Coastguard Workerentry:
365*9880d681SAndroid Build Coastguard Worker  %0 = load <2 x i64>, <2 x i64>* @llvm_mips_sra_d_ARG1
366*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* @llvm_mips_sra_d_ARG2
367*9880d681SAndroid Build Coastguard Worker  %2 = tail call <2 x i64> @llvm.mips.sra.d(<2 x i64> %0, <2 x i64> %1)
368*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %2, <2 x i64>* @llvm_mips_sra_d_RES
369*9880d681SAndroid Build Coastguard Worker  ret void
370*9880d681SAndroid Build Coastguard Worker}
371*9880d681SAndroid Build Coastguard Worker
372*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.mips.sra.d(<2 x i64>, <2 x i64>) nounwind
373*9880d681SAndroid Build Coastguard Worker
374*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_sra_d_test:
375*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_sra_d_ARG1)
376*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_sra_d_ARG2)
377*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.d [[WS:\$w[0-9]+]], 0([[R1]])
378*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.d [[WT:\$w[0-9]+]], 0([[R2]])
379*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: sra.d [[WD:\$w[0-9]+]], [[WS]], [[WT]]
380*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.d [[WD]]
381*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_sra_d_test
382*9880d681SAndroid Build Coastguard Worker;
383*9880d681SAndroid Build Coastguard Worker
384*9880d681SAndroid Build Coastguard Workerdefine void @sra_b_test() nounwind {
385*9880d681SAndroid Build Coastguard Workerentry:
386*9880d681SAndroid Build Coastguard Worker  %0 = load <16 x i8>, <16 x i8>* @llvm_mips_sra_b_ARG1
387*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* @llvm_mips_sra_b_ARG2
388*9880d681SAndroid Build Coastguard Worker  %2 = ashr <16 x i8> %0, %1
389*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %2, <16 x i8>* @llvm_mips_sra_b_RES
390*9880d681SAndroid Build Coastguard Worker  ret void
391*9880d681SAndroid Build Coastguard Worker}
392*9880d681SAndroid Build Coastguard Worker
393*9880d681SAndroid Build Coastguard Worker; CHECK: sra_b_test:
394*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_sra_b_ARG1)
395*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_sra_b_ARG2)
396*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.b [[WS:\$w[0-9]+]], 0([[R1]])
397*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.b [[WT:\$w[0-9]+]], 0([[R2]])
398*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: sra.b [[WD:\$w[0-9]+]], [[WS]], [[WT]]
399*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.b [[WD]]
400*9880d681SAndroid Build Coastguard Worker; CHECK: .size sra_b_test
401*9880d681SAndroid Build Coastguard Worker
402*9880d681SAndroid Build Coastguard Workerdefine void @sra_h_test() nounwind {
403*9880d681SAndroid Build Coastguard Workerentry:
404*9880d681SAndroid Build Coastguard Worker  %0 = load <8 x i16>, <8 x i16>* @llvm_mips_sra_h_ARG1
405*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* @llvm_mips_sra_h_ARG2
406*9880d681SAndroid Build Coastguard Worker  %2 = ashr <8 x i16> %0, %1
407*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %2, <8 x i16>* @llvm_mips_sra_h_RES
408*9880d681SAndroid Build Coastguard Worker  ret void
409*9880d681SAndroid Build Coastguard Worker}
410*9880d681SAndroid Build Coastguard Worker
411*9880d681SAndroid Build Coastguard Worker; CHECK: sra_h_test:
412*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_sra_h_ARG1)
413*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_sra_h_ARG2)
414*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.h [[WS:\$w[0-9]+]], 0([[R1]])
415*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.h [[WT:\$w[0-9]+]], 0([[R2]])
416*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: sra.h [[WD:\$w[0-9]+]], [[WS]], [[WT]]
417*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.h [[WD]]
418*9880d681SAndroid Build Coastguard Worker; CHECK: .size sra_h_test
419*9880d681SAndroid Build Coastguard Worker
420*9880d681SAndroid Build Coastguard Workerdefine void @sra_w_test() nounwind {
421*9880d681SAndroid Build Coastguard Workerentry:
422*9880d681SAndroid Build Coastguard Worker  %0 = load <4 x i32>, <4 x i32>* @llvm_mips_sra_w_ARG1
423*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* @llvm_mips_sra_w_ARG2
424*9880d681SAndroid Build Coastguard Worker  %2 = ashr <4 x i32> %0, %1
425*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %2, <4 x i32>* @llvm_mips_sra_w_RES
426*9880d681SAndroid Build Coastguard Worker  ret void
427*9880d681SAndroid Build Coastguard Worker}
428*9880d681SAndroid Build Coastguard Worker
429*9880d681SAndroid Build Coastguard Worker; CHECK: sra_w_test:
430*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_sra_w_ARG1)
431*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_sra_w_ARG2)
432*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.w [[WS:\$w[0-9]+]], 0([[R1]])
433*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.w [[WT:\$w[0-9]+]], 0([[R2]])
434*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: sra.w [[WD:\$w[0-9]+]], [[WS]], [[WT]]
435*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.w [[WD]]
436*9880d681SAndroid Build Coastguard Worker; CHECK: .size sra_w_test
437*9880d681SAndroid Build Coastguard Worker
438*9880d681SAndroid Build Coastguard Workerdefine void @sra_d_test() nounwind {
439*9880d681SAndroid Build Coastguard Workerentry:
440*9880d681SAndroid Build Coastguard Worker  %0 = load <2 x i64>, <2 x i64>* @llvm_mips_sra_d_ARG1
441*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* @llvm_mips_sra_d_ARG2
442*9880d681SAndroid Build Coastguard Worker  %2 = ashr <2 x i64> %0, %1
443*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %2, <2 x i64>* @llvm_mips_sra_d_RES
444*9880d681SAndroid Build Coastguard Worker  ret void
445*9880d681SAndroid Build Coastguard Worker}
446*9880d681SAndroid Build Coastguard Worker
447*9880d681SAndroid Build Coastguard Worker; CHECK: sra_d_test:
448*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_sra_d_ARG1)
449*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_sra_d_ARG2)
450*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.d [[WS:\$w[0-9]+]], 0([[R1]])
451*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.d [[WT:\$w[0-9]+]], 0([[R2]])
452*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: sra.d [[WD:\$w[0-9]+]], [[WS]], [[WT]]
453*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.d [[WD]]
454*9880d681SAndroid Build Coastguard Worker; CHECK: .size sra_d_test
455*9880d681SAndroid Build Coastguard Worker
456*9880d681SAndroid Build Coastguard Worker@llvm_mips_srar_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
457*9880d681SAndroid Build Coastguard Worker@llvm_mips_srar_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
458*9880d681SAndroid Build Coastguard Worker@llvm_mips_srar_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
459*9880d681SAndroid Build Coastguard Worker
460*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_srar_b_test() nounwind {
461*9880d681SAndroid Build Coastguard Workerentry:
462*9880d681SAndroid Build Coastguard Worker  %0 = load <16 x i8>, <16 x i8>* @llvm_mips_srar_b_ARG1
463*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* @llvm_mips_srar_b_ARG2
464*9880d681SAndroid Build Coastguard Worker  %2 = tail call <16 x i8> @llvm.mips.srar.b(<16 x i8> %0, <16 x i8> %1)
465*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %2, <16 x i8>* @llvm_mips_srar_b_RES
466*9880d681SAndroid Build Coastguard Worker  ret void
467*9880d681SAndroid Build Coastguard Worker}
468*9880d681SAndroid Build Coastguard Worker
469*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.mips.srar.b(<16 x i8>, <16 x i8>) nounwind
470*9880d681SAndroid Build Coastguard Worker
471*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_srar_b_test:
472*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_srar_b_ARG1)
473*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_srar_b_ARG2)
474*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.b [[WS:\$w[0-9]+]], 0([[R1]])
475*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.b [[WT:\$w[0-9]+]], 0([[R2]])
476*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: srar.b [[WD:\$w[0-9]+]], [[WS]], [[WT]]
477*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.b [[WD]]
478*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_srar_b_test
479*9880d681SAndroid Build Coastguard Worker;
480*9880d681SAndroid Build Coastguard Worker@llvm_mips_srar_h_ARG1 = global <8 x i16> <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>, align 16
481*9880d681SAndroid Build Coastguard Worker@llvm_mips_srar_h_ARG2 = global <8 x i16> <i16 8, i16 9, i16 10, i16 11, i16 12, i16 13, i16 14, i16 15>, align 16
482*9880d681SAndroid Build Coastguard Worker@llvm_mips_srar_h_RES  = global <8 x i16> <i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0>, align 16
483*9880d681SAndroid Build Coastguard Worker
484*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_srar_h_test() nounwind {
485*9880d681SAndroid Build Coastguard Workerentry:
486*9880d681SAndroid Build Coastguard Worker  %0 = load <8 x i16>, <8 x i16>* @llvm_mips_srar_h_ARG1
487*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* @llvm_mips_srar_h_ARG2
488*9880d681SAndroid Build Coastguard Worker  %2 = tail call <8 x i16> @llvm.mips.srar.h(<8 x i16> %0, <8 x i16> %1)
489*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %2, <8 x i16>* @llvm_mips_srar_h_RES
490*9880d681SAndroid Build Coastguard Worker  ret void
491*9880d681SAndroid Build Coastguard Worker}
492*9880d681SAndroid Build Coastguard Worker
493*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.mips.srar.h(<8 x i16>, <8 x i16>) nounwind
494*9880d681SAndroid Build Coastguard Worker
495*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_srar_h_test:
496*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_srar_h_ARG1)
497*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_srar_h_ARG2)
498*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.h [[WS:\$w[0-9]+]], 0([[R1]])
499*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.h [[WT:\$w[0-9]+]], 0([[R2]])
500*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: srar.h [[WD:\$w[0-9]+]], [[WS]], [[WT]]
501*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.h [[WD]]
502*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_srar_h_test
503*9880d681SAndroid Build Coastguard Worker;
504*9880d681SAndroid Build Coastguard Worker@llvm_mips_srar_w_ARG1 = global <4 x i32> <i32 0, i32 1, i32 2, i32 3>, align 16
505*9880d681SAndroid Build Coastguard Worker@llvm_mips_srar_w_ARG2 = global <4 x i32> <i32 4, i32 5, i32 6, i32 7>, align 16
506*9880d681SAndroid Build Coastguard Worker@llvm_mips_srar_w_RES  = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16
507*9880d681SAndroid Build Coastguard Worker
508*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_srar_w_test() nounwind {
509*9880d681SAndroid Build Coastguard Workerentry:
510*9880d681SAndroid Build Coastguard Worker  %0 = load <4 x i32>, <4 x i32>* @llvm_mips_srar_w_ARG1
511*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* @llvm_mips_srar_w_ARG2
512*9880d681SAndroid Build Coastguard Worker  %2 = tail call <4 x i32> @llvm.mips.srar.w(<4 x i32> %0, <4 x i32> %1)
513*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %2, <4 x i32>* @llvm_mips_srar_w_RES
514*9880d681SAndroid Build Coastguard Worker  ret void
515*9880d681SAndroid Build Coastguard Worker}
516*9880d681SAndroid Build Coastguard Worker
517*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.mips.srar.w(<4 x i32>, <4 x i32>) nounwind
518*9880d681SAndroid Build Coastguard Worker
519*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_srar_w_test:
520*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_srar_w_ARG1)
521*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_srar_w_ARG2)
522*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.w [[WS:\$w[0-9]+]], 0([[R1]])
523*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.w [[WT:\$w[0-9]+]], 0([[R2]])
524*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: srar.w [[WD:\$w[0-9]+]], [[WS]], [[WT]]
525*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.w [[WD]]
526*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_srar_w_test
527*9880d681SAndroid Build Coastguard Worker;
528*9880d681SAndroid Build Coastguard Worker@llvm_mips_srar_d_ARG1 = global <2 x i64> <i64 0, i64 1>, align 16
529*9880d681SAndroid Build Coastguard Worker@llvm_mips_srar_d_ARG2 = global <2 x i64> <i64 2, i64 3>, align 16
530*9880d681SAndroid Build Coastguard Worker@llvm_mips_srar_d_RES  = global <2 x i64> <i64 0, i64 0>, align 16
531*9880d681SAndroid Build Coastguard Worker
532*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_srar_d_test() nounwind {
533*9880d681SAndroid Build Coastguard Workerentry:
534*9880d681SAndroid Build Coastguard Worker  %0 = load <2 x i64>, <2 x i64>* @llvm_mips_srar_d_ARG1
535*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* @llvm_mips_srar_d_ARG2
536*9880d681SAndroid Build Coastguard Worker  %2 = tail call <2 x i64> @llvm.mips.srar.d(<2 x i64> %0, <2 x i64> %1)
537*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %2, <2 x i64>* @llvm_mips_srar_d_RES
538*9880d681SAndroid Build Coastguard Worker  ret void
539*9880d681SAndroid Build Coastguard Worker}
540*9880d681SAndroid Build Coastguard Worker
541*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.mips.srar.d(<2 x i64>, <2 x i64>) nounwind
542*9880d681SAndroid Build Coastguard Worker
543*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_srar_d_test:
544*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_srar_d_ARG1)
545*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_srar_d_ARG2)
546*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.d [[WS:\$w[0-9]+]], 0([[R1]])
547*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.d [[WT:\$w[0-9]+]], 0([[R2]])
548*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: srar.d [[WD:\$w[0-9]+]], [[WS]], [[WT]]
549*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.d [[WD]]
550*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_srar_d_test
551*9880d681SAndroid Build Coastguard Worker;
552*9880d681SAndroid Build Coastguard Worker@llvm_mips_srl_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
553*9880d681SAndroid Build Coastguard Worker@llvm_mips_srl_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
554*9880d681SAndroid Build Coastguard Worker@llvm_mips_srl_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
555*9880d681SAndroid Build Coastguard Worker
556*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_srl_b_test() nounwind {
557*9880d681SAndroid Build Coastguard Workerentry:
558*9880d681SAndroid Build Coastguard Worker  %0 = load <16 x i8>, <16 x i8>* @llvm_mips_srl_b_ARG1
559*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* @llvm_mips_srl_b_ARG2
560*9880d681SAndroid Build Coastguard Worker  %2 = tail call <16 x i8> @llvm.mips.srl.b(<16 x i8> %0, <16 x i8> %1)
561*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %2, <16 x i8>* @llvm_mips_srl_b_RES
562*9880d681SAndroid Build Coastguard Worker  ret void
563*9880d681SAndroid Build Coastguard Worker}
564*9880d681SAndroid Build Coastguard Worker
565*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.mips.srl.b(<16 x i8>, <16 x i8>) nounwind
566*9880d681SAndroid Build Coastguard Worker
567*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_srl_b_test:
568*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_srl_b_ARG1)
569*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_srl_b_ARG2)
570*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.b [[WS:\$w[0-9]+]], 0([[R1]])
571*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.b [[WT:\$w[0-9]+]], 0([[R2]])
572*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: srl.b [[WD:\$w[0-9]+]], [[WS]], [[WT]]
573*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.b [[WD]]
574*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_srl_b_test
575*9880d681SAndroid Build Coastguard Worker;
576*9880d681SAndroid Build Coastguard Worker@llvm_mips_srl_h_ARG1 = global <8 x i16> <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>, align 16
577*9880d681SAndroid Build Coastguard Worker@llvm_mips_srl_h_ARG2 = global <8 x i16> <i16 8, i16 9, i16 10, i16 11, i16 12, i16 13, i16 14, i16 15>, align 16
578*9880d681SAndroid Build Coastguard Worker@llvm_mips_srl_h_RES  = global <8 x i16> <i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0>, align 16
579*9880d681SAndroid Build Coastguard Worker
580*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_srl_h_test() nounwind {
581*9880d681SAndroid Build Coastguard Workerentry:
582*9880d681SAndroid Build Coastguard Worker  %0 = load <8 x i16>, <8 x i16>* @llvm_mips_srl_h_ARG1
583*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* @llvm_mips_srl_h_ARG2
584*9880d681SAndroid Build Coastguard Worker  %2 = tail call <8 x i16> @llvm.mips.srl.h(<8 x i16> %0, <8 x i16> %1)
585*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %2, <8 x i16>* @llvm_mips_srl_h_RES
586*9880d681SAndroid Build Coastguard Worker  ret void
587*9880d681SAndroid Build Coastguard Worker}
588*9880d681SAndroid Build Coastguard Worker
589*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.mips.srl.h(<8 x i16>, <8 x i16>) nounwind
590*9880d681SAndroid Build Coastguard Worker
591*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_srl_h_test:
592*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_srl_h_ARG1)
593*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_srl_h_ARG2)
594*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.h [[WS:\$w[0-9]+]], 0([[R1]])
595*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.h [[WT:\$w[0-9]+]], 0([[R2]])
596*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: srl.h [[WD:\$w[0-9]+]], [[WS]], [[WT]]
597*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.h [[WD]]
598*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_srl_h_test
599*9880d681SAndroid Build Coastguard Worker;
600*9880d681SAndroid Build Coastguard Worker@llvm_mips_srl_w_ARG1 = global <4 x i32> <i32 0, i32 1, i32 2, i32 3>, align 16
601*9880d681SAndroid Build Coastguard Worker@llvm_mips_srl_w_ARG2 = global <4 x i32> <i32 4, i32 5, i32 6, i32 7>, align 16
602*9880d681SAndroid Build Coastguard Worker@llvm_mips_srl_w_RES  = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16
603*9880d681SAndroid Build Coastguard Worker
604*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_srl_w_test() nounwind {
605*9880d681SAndroid Build Coastguard Workerentry:
606*9880d681SAndroid Build Coastguard Worker  %0 = load <4 x i32>, <4 x i32>* @llvm_mips_srl_w_ARG1
607*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* @llvm_mips_srl_w_ARG2
608*9880d681SAndroid Build Coastguard Worker  %2 = tail call <4 x i32> @llvm.mips.srl.w(<4 x i32> %0, <4 x i32> %1)
609*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %2, <4 x i32>* @llvm_mips_srl_w_RES
610*9880d681SAndroid Build Coastguard Worker  ret void
611*9880d681SAndroid Build Coastguard Worker}
612*9880d681SAndroid Build Coastguard Worker
613*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.mips.srl.w(<4 x i32>, <4 x i32>) nounwind
614*9880d681SAndroid Build Coastguard Worker
615*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_srl_w_test:
616*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_srl_w_ARG1)
617*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_srl_w_ARG2)
618*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.w [[WS:\$w[0-9]+]], 0([[R1]])
619*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.w [[WT:\$w[0-9]+]], 0([[R2]])
620*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: srl.w [[WD:\$w[0-9]+]], [[WS]], [[WT]]
621*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.w [[WD]]
622*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_srl_w_test
623*9880d681SAndroid Build Coastguard Worker;
624*9880d681SAndroid Build Coastguard Worker@llvm_mips_srl_d_ARG1 = global <2 x i64> <i64 0, i64 1>, align 16
625*9880d681SAndroid Build Coastguard Worker@llvm_mips_srl_d_ARG2 = global <2 x i64> <i64 2, i64 3>, align 16
626*9880d681SAndroid Build Coastguard Worker@llvm_mips_srl_d_RES  = global <2 x i64> <i64 0, i64 0>, align 16
627*9880d681SAndroid Build Coastguard Worker
628*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_srl_d_test() nounwind {
629*9880d681SAndroid Build Coastguard Workerentry:
630*9880d681SAndroid Build Coastguard Worker  %0 = load <2 x i64>, <2 x i64>* @llvm_mips_srl_d_ARG1
631*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* @llvm_mips_srl_d_ARG2
632*9880d681SAndroid Build Coastguard Worker  %2 = tail call <2 x i64> @llvm.mips.srl.d(<2 x i64> %0, <2 x i64> %1)
633*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %2, <2 x i64>* @llvm_mips_srl_d_RES
634*9880d681SAndroid Build Coastguard Worker  ret void
635*9880d681SAndroid Build Coastguard Worker}
636*9880d681SAndroid Build Coastguard Worker
637*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.mips.srl.d(<2 x i64>, <2 x i64>) nounwind
638*9880d681SAndroid Build Coastguard Worker
639*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_srl_d_test:
640*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_srl_d_ARG1)
641*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_srl_d_ARG2)
642*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.d [[WS:\$w[0-9]+]], 0([[R1]])
643*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.d [[WT:\$w[0-9]+]], 0([[R2]])
644*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: srl.d [[WD:\$w[0-9]+]], [[WS]], [[WT]]
645*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.d [[WD]]
646*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_srl_d_test
647*9880d681SAndroid Build Coastguard Worker;
648*9880d681SAndroid Build Coastguard Worker@llvm_mips_srlr_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
649*9880d681SAndroid Build Coastguard Worker@llvm_mips_srlr_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
650*9880d681SAndroid Build Coastguard Worker@llvm_mips_srlr_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
651*9880d681SAndroid Build Coastguard Worker
652*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_srlr_b_test() nounwind {
653*9880d681SAndroid Build Coastguard Workerentry:
654*9880d681SAndroid Build Coastguard Worker  %0 = load <16 x i8>, <16 x i8>* @llvm_mips_srlr_b_ARG1
655*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* @llvm_mips_srlr_b_ARG2
656*9880d681SAndroid Build Coastguard Worker  %2 = tail call <16 x i8> @llvm.mips.srlr.b(<16 x i8> %0, <16 x i8> %1)
657*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %2, <16 x i8>* @llvm_mips_srlr_b_RES
658*9880d681SAndroid Build Coastguard Worker  ret void
659*9880d681SAndroid Build Coastguard Worker}
660*9880d681SAndroid Build Coastguard Worker
661*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.mips.srlr.b(<16 x i8>, <16 x i8>) nounwind
662*9880d681SAndroid Build Coastguard Worker
663*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_srlr_b_test:
664*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_srlr_b_ARG1)
665*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_srlr_b_ARG2)
666*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.b [[WS:\$w[0-9]+]], 0([[R1]])
667*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.b [[WT:\$w[0-9]+]], 0([[R2]])
668*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: srlr.b [[WD:\$w[0-9]+]], [[WS]], [[WT]]
669*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.b [[WD]]
670*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_srlr_b_test
671*9880d681SAndroid Build Coastguard Worker;
672*9880d681SAndroid Build Coastguard Worker@llvm_mips_srlr_h_ARG1 = global <8 x i16> <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>, align 16
673*9880d681SAndroid Build Coastguard Worker@llvm_mips_srlr_h_ARG2 = global <8 x i16> <i16 8, i16 9, i16 10, i16 11, i16 12, i16 13, i16 14, i16 15>, align 16
674*9880d681SAndroid Build Coastguard Worker@llvm_mips_srlr_h_RES  = global <8 x i16> <i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0>, align 16
675*9880d681SAndroid Build Coastguard Worker
676*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_srlr_h_test() nounwind {
677*9880d681SAndroid Build Coastguard Workerentry:
678*9880d681SAndroid Build Coastguard Worker  %0 = load <8 x i16>, <8 x i16>* @llvm_mips_srlr_h_ARG1
679*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* @llvm_mips_srlr_h_ARG2
680*9880d681SAndroid Build Coastguard Worker  %2 = tail call <8 x i16> @llvm.mips.srlr.h(<8 x i16> %0, <8 x i16> %1)
681*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %2, <8 x i16>* @llvm_mips_srlr_h_RES
682*9880d681SAndroid Build Coastguard Worker  ret void
683*9880d681SAndroid Build Coastguard Worker}
684*9880d681SAndroid Build Coastguard Worker
685*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.mips.srlr.h(<8 x i16>, <8 x i16>) nounwind
686*9880d681SAndroid Build Coastguard Worker
687*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_srlr_h_test:
688*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_srlr_h_ARG1)
689*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_srlr_h_ARG2)
690*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.h [[WS:\$w[0-9]+]], 0([[R1]])
691*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.h [[WT:\$w[0-9]+]], 0([[R2]])
692*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: srlr.h [[WD:\$w[0-9]+]], [[WS]], [[WT]]
693*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.h [[WD]]
694*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_srlr_h_test
695*9880d681SAndroid Build Coastguard Worker;
696*9880d681SAndroid Build Coastguard Worker@llvm_mips_srlr_w_ARG1 = global <4 x i32> <i32 0, i32 1, i32 2, i32 3>, align 16
697*9880d681SAndroid Build Coastguard Worker@llvm_mips_srlr_w_ARG2 = global <4 x i32> <i32 4, i32 5, i32 6, i32 7>, align 16
698*9880d681SAndroid Build Coastguard Worker@llvm_mips_srlr_w_RES  = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16
699*9880d681SAndroid Build Coastguard Worker
700*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_srlr_w_test() nounwind {
701*9880d681SAndroid Build Coastguard Workerentry:
702*9880d681SAndroid Build Coastguard Worker  %0 = load <4 x i32>, <4 x i32>* @llvm_mips_srlr_w_ARG1
703*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* @llvm_mips_srlr_w_ARG2
704*9880d681SAndroid Build Coastguard Worker  %2 = tail call <4 x i32> @llvm.mips.srlr.w(<4 x i32> %0, <4 x i32> %1)
705*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %2, <4 x i32>* @llvm_mips_srlr_w_RES
706*9880d681SAndroid Build Coastguard Worker  ret void
707*9880d681SAndroid Build Coastguard Worker}
708*9880d681SAndroid Build Coastguard Worker
709*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.mips.srlr.w(<4 x i32>, <4 x i32>) nounwind
710*9880d681SAndroid Build Coastguard Worker
711*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_srlr_w_test:
712*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_srlr_w_ARG1)
713*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_srlr_w_ARG2)
714*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.w [[WS:\$w[0-9]+]], 0([[R1]])
715*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.w [[WT:\$w[0-9]+]], 0([[R2]])
716*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: srlr.w [[WD:\$w[0-9]+]], [[WS]], [[WT]]
717*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.w [[WD]]
718*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_srlr_w_test
719*9880d681SAndroid Build Coastguard Worker;
720*9880d681SAndroid Build Coastguard Worker@llvm_mips_srlr_d_ARG1 = global <2 x i64> <i64 0, i64 1>, align 16
721*9880d681SAndroid Build Coastguard Worker@llvm_mips_srlr_d_ARG2 = global <2 x i64> <i64 2, i64 3>, align 16
722*9880d681SAndroid Build Coastguard Worker@llvm_mips_srlr_d_RES  = global <2 x i64> <i64 0, i64 0>, align 16
723*9880d681SAndroid Build Coastguard Worker
724*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_srlr_d_test() nounwind {
725*9880d681SAndroid Build Coastguard Workerentry:
726*9880d681SAndroid Build Coastguard Worker  %0 = load <2 x i64>, <2 x i64>* @llvm_mips_srlr_d_ARG1
727*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* @llvm_mips_srlr_d_ARG2
728*9880d681SAndroid Build Coastguard Worker  %2 = tail call <2 x i64> @llvm.mips.srlr.d(<2 x i64> %0, <2 x i64> %1)
729*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %2, <2 x i64>* @llvm_mips_srlr_d_RES
730*9880d681SAndroid Build Coastguard Worker  ret void
731*9880d681SAndroid Build Coastguard Worker}
732*9880d681SAndroid Build Coastguard Worker
733*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.mips.srlr.d(<2 x i64>, <2 x i64>) nounwind
734*9880d681SAndroid Build Coastguard Worker
735*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_srlr_d_test:
736*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_srlr_d_ARG1)
737*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_srlr_d_ARG2)
738*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.d [[WS:\$w[0-9]+]], 0([[R1]])
739*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.d [[WT:\$w[0-9]+]], 0([[R2]])
740*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: srlr.d [[WD:\$w[0-9]+]], [[WS]], [[WT]]
741*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.d [[WD]]
742*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_srlr_d_test
743*9880d681SAndroid Build Coastguard Worker;
744*9880d681SAndroid Build Coastguard Worker
745*9880d681SAndroid Build Coastguard Workerdefine void @srl_b_test() nounwind {
746*9880d681SAndroid Build Coastguard Workerentry:
747*9880d681SAndroid Build Coastguard Worker  %0 = load <16 x i8>, <16 x i8>* @llvm_mips_srl_b_ARG1
748*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* @llvm_mips_srl_b_ARG2
749*9880d681SAndroid Build Coastguard Worker  %2 = lshr <16 x i8> %0, %1
750*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %2, <16 x i8>* @llvm_mips_srl_b_RES
751*9880d681SAndroid Build Coastguard Worker  ret void
752*9880d681SAndroid Build Coastguard Worker}
753*9880d681SAndroid Build Coastguard Worker
754*9880d681SAndroid Build Coastguard Worker; CHECK: srl_b_test:
755*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_srl_b_ARG1)
756*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_srl_b_ARG2)
757*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.b [[WS:\$w[0-9]+]], 0([[R1]])
758*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.b [[WT:\$w[0-9]+]], 0([[R2]])
759*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: srl.b [[WD:\$w[0-9]+]], [[WS]], [[WT]]
760*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.b [[WD]]
761*9880d681SAndroid Build Coastguard Worker; CHECK: .size srl_b_test
762*9880d681SAndroid Build Coastguard Worker
763*9880d681SAndroid Build Coastguard Workerdefine void @srl_h_test() nounwind {
764*9880d681SAndroid Build Coastguard Workerentry:
765*9880d681SAndroid Build Coastguard Worker  %0 = load <8 x i16>, <8 x i16>* @llvm_mips_srl_h_ARG1
766*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* @llvm_mips_srl_h_ARG2
767*9880d681SAndroid Build Coastguard Worker  %2 = lshr <8 x i16> %0, %1
768*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %2, <8 x i16>* @llvm_mips_srl_h_RES
769*9880d681SAndroid Build Coastguard Worker  ret void
770*9880d681SAndroid Build Coastguard Worker}
771*9880d681SAndroid Build Coastguard Worker
772*9880d681SAndroid Build Coastguard Worker; CHECK: srl_h_test:
773*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_srl_h_ARG1)
774*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_srl_h_ARG2)
775*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.h [[WS:\$w[0-9]+]], 0([[R1]])
776*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.h [[WT:\$w[0-9]+]], 0([[R2]])
777*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: srl.h [[WD:\$w[0-9]+]], [[WS]], [[WT]]
778*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.h [[WD]]
779*9880d681SAndroid Build Coastguard Worker; CHECK: .size srl_h_test
780*9880d681SAndroid Build Coastguard Worker
781*9880d681SAndroid Build Coastguard Workerdefine void @srl_w_test() nounwind {
782*9880d681SAndroid Build Coastguard Workerentry:
783*9880d681SAndroid Build Coastguard Worker  %0 = load <4 x i32>, <4 x i32>* @llvm_mips_srl_w_ARG1
784*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* @llvm_mips_srl_w_ARG2
785*9880d681SAndroid Build Coastguard Worker  %2 = lshr <4 x i32> %0, %1
786*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %2, <4 x i32>* @llvm_mips_srl_w_RES
787*9880d681SAndroid Build Coastguard Worker  ret void
788*9880d681SAndroid Build Coastguard Worker}
789*9880d681SAndroid Build Coastguard Worker
790*9880d681SAndroid Build Coastguard Worker; CHECK: srl_w_test:
791*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_srl_w_ARG1)
792*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_srl_w_ARG2)
793*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.w [[WS:\$w[0-9]+]], 0([[R1]])
794*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.w [[WT:\$w[0-9]+]], 0([[R2]])
795*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: srl.w [[WD:\$w[0-9]+]], [[WS]], [[WT]]
796*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.w [[WD]]
797*9880d681SAndroid Build Coastguard Worker; CHECK: .size srl_w_test
798*9880d681SAndroid Build Coastguard Worker
799*9880d681SAndroid Build Coastguard Workerdefine void @srl_d_test() nounwind {
800*9880d681SAndroid Build Coastguard Workerentry:
801*9880d681SAndroid Build Coastguard Worker  %0 = load <2 x i64>, <2 x i64>* @llvm_mips_srl_d_ARG1
802*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* @llvm_mips_srl_d_ARG2
803*9880d681SAndroid Build Coastguard Worker  %2 = lshr <2 x i64> %0, %1
804*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %2, <2 x i64>* @llvm_mips_srl_d_RES
805*9880d681SAndroid Build Coastguard Worker  ret void
806*9880d681SAndroid Build Coastguard Worker}
807*9880d681SAndroid Build Coastguard Worker
808*9880d681SAndroid Build Coastguard Worker; CHECK: srl_d_test:
809*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_srl_d_ARG1)
810*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_srl_d_ARG2)
811*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.d [[WS:\$w[0-9]+]], 0([[R1]])
812*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.d [[WT:\$w[0-9]+]], 0([[R2]])
813*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: srl.d [[WD:\$w[0-9]+]], [[WS]], [[WT]]
814*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.d [[WD]]
815*9880d681SAndroid Build Coastguard Worker; CHECK: .size srl_d_test
816*9880d681SAndroid Build Coastguard Worker
817*9880d681SAndroid Build Coastguard Worker@llvm_mips_subs_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
818*9880d681SAndroid Build Coastguard Worker@llvm_mips_subs_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
819*9880d681SAndroid Build Coastguard Worker@llvm_mips_subs_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
820*9880d681SAndroid Build Coastguard Worker
821*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_subs_s_b_test() nounwind {
822*9880d681SAndroid Build Coastguard Workerentry:
823*9880d681SAndroid Build Coastguard Worker  %0 = load <16 x i8>, <16 x i8>* @llvm_mips_subs_s_b_ARG1
824*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* @llvm_mips_subs_s_b_ARG2
825*9880d681SAndroid Build Coastguard Worker  %2 = tail call <16 x i8> @llvm.mips.subs.s.b(<16 x i8> %0, <16 x i8> %1)
826*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %2, <16 x i8>* @llvm_mips_subs_s_b_RES
827*9880d681SAndroid Build Coastguard Worker  ret void
828*9880d681SAndroid Build Coastguard Worker}
829*9880d681SAndroid Build Coastguard Worker
830*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.mips.subs.s.b(<16 x i8>, <16 x i8>) nounwind
831*9880d681SAndroid Build Coastguard Worker
832*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_subs_s_b_test:
833*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_subs_s_b_ARG1)
834*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_subs_s_b_ARG2)
835*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.b [[WS:\$w[0-9]+]], 0([[R1]])
836*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.b [[WT:\$w[0-9]+]], 0([[R2]])
837*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: subs_s.b [[WD:\$w[0-9]+]], [[WS]], [[WT]]
838*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.b [[WD]]
839*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_subs_s_b_test
840*9880d681SAndroid Build Coastguard Worker;
841*9880d681SAndroid Build Coastguard Worker@llvm_mips_subs_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
842*9880d681SAndroid Build Coastguard Worker@llvm_mips_subs_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
843*9880d681SAndroid Build Coastguard Worker@llvm_mips_subs_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
844*9880d681SAndroid Build Coastguard Worker
845*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_subs_s_h_test() nounwind {
846*9880d681SAndroid Build Coastguard Workerentry:
847*9880d681SAndroid Build Coastguard Worker  %0 = load <8 x i16>, <8 x i16>* @llvm_mips_subs_s_h_ARG1
848*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* @llvm_mips_subs_s_h_ARG2
849*9880d681SAndroid Build Coastguard Worker  %2 = tail call <8 x i16> @llvm.mips.subs.s.h(<8 x i16> %0, <8 x i16> %1)
850*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %2, <8 x i16>* @llvm_mips_subs_s_h_RES
851*9880d681SAndroid Build Coastguard Worker  ret void
852*9880d681SAndroid Build Coastguard Worker}
853*9880d681SAndroid Build Coastguard Worker
854*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.mips.subs.s.h(<8 x i16>, <8 x i16>) nounwind
855*9880d681SAndroid Build Coastguard Worker
856*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_subs_s_h_test:
857*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_subs_s_h_ARG1)
858*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_subs_s_h_ARG2)
859*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.h [[WS:\$w[0-9]+]], 0([[R1]])
860*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.h [[WT:\$w[0-9]+]], 0([[R2]])
861*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: subs_s.h [[WD:\$w[0-9]+]], [[WS]], [[WT]]
862*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.h [[WD]]
863*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_subs_s_h_test
864*9880d681SAndroid Build Coastguard Worker;
865*9880d681SAndroid Build Coastguard Worker@llvm_mips_subs_s_w_ARG1 = global <4 x i32> <i32 0, i32 1, i32 2, i32 3>, align 16
866*9880d681SAndroid Build Coastguard Worker@llvm_mips_subs_s_w_ARG2 = global <4 x i32> <i32 4, i32 5, i32 6, i32 7>, align 16
867*9880d681SAndroid Build Coastguard Worker@llvm_mips_subs_s_w_RES  = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16
868*9880d681SAndroid Build Coastguard Worker
869*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_subs_s_w_test() nounwind {
870*9880d681SAndroid Build Coastguard Workerentry:
871*9880d681SAndroid Build Coastguard Worker  %0 = load <4 x i32>, <4 x i32>* @llvm_mips_subs_s_w_ARG1
872*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* @llvm_mips_subs_s_w_ARG2
873*9880d681SAndroid Build Coastguard Worker  %2 = tail call <4 x i32> @llvm.mips.subs.s.w(<4 x i32> %0, <4 x i32> %1)
874*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %2, <4 x i32>* @llvm_mips_subs_s_w_RES
875*9880d681SAndroid Build Coastguard Worker  ret void
876*9880d681SAndroid Build Coastguard Worker}
877*9880d681SAndroid Build Coastguard Worker
878*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.mips.subs.s.w(<4 x i32>, <4 x i32>) nounwind
879*9880d681SAndroid Build Coastguard Worker
880*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_subs_s_w_test:
881*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_subs_s_w_ARG1)
882*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_subs_s_w_ARG2)
883*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.w [[WS:\$w[0-9]+]], 0([[R1]])
884*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.w [[WT:\$w[0-9]+]], 0([[R2]])
885*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: subs_s.w [[WD:\$w[0-9]+]], [[WS]], [[WT]]
886*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.w [[WD]]
887*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_subs_s_w_test
888*9880d681SAndroid Build Coastguard Worker;
889*9880d681SAndroid Build Coastguard Worker@llvm_mips_subs_s_d_ARG1 = global <2 x i64> <i64 0, i64 1>, align 16
890*9880d681SAndroid Build Coastguard Worker@llvm_mips_subs_s_d_ARG2 = global <2 x i64> <i64 2, i64 3>, align 16
891*9880d681SAndroid Build Coastguard Worker@llvm_mips_subs_s_d_RES  = global <2 x i64> <i64 0, i64 0>, align 16
892*9880d681SAndroid Build Coastguard Worker
893*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_subs_s_d_test() nounwind {
894*9880d681SAndroid Build Coastguard Workerentry:
895*9880d681SAndroid Build Coastguard Worker  %0 = load <2 x i64>, <2 x i64>* @llvm_mips_subs_s_d_ARG1
896*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* @llvm_mips_subs_s_d_ARG2
897*9880d681SAndroid Build Coastguard Worker  %2 = tail call <2 x i64> @llvm.mips.subs.s.d(<2 x i64> %0, <2 x i64> %1)
898*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %2, <2 x i64>* @llvm_mips_subs_s_d_RES
899*9880d681SAndroid Build Coastguard Worker  ret void
900*9880d681SAndroid Build Coastguard Worker}
901*9880d681SAndroid Build Coastguard Worker
902*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.mips.subs.s.d(<2 x i64>, <2 x i64>) nounwind
903*9880d681SAndroid Build Coastguard Worker
904*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_subs_s_d_test:
905*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_subs_s_d_ARG1)
906*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_subs_s_d_ARG2)
907*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.d [[WS:\$w[0-9]+]], 0([[R1]])
908*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.d [[WT:\$w[0-9]+]], 0([[R2]])
909*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: subs_s.d [[WD:\$w[0-9]+]], [[WS]], [[WT]]
910*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.d [[WD]]
911*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_subs_s_d_test
912*9880d681SAndroid Build Coastguard Worker;
913*9880d681SAndroid Build Coastguard Worker@llvm_mips_subs_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
914*9880d681SAndroid Build Coastguard Worker@llvm_mips_subs_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
915*9880d681SAndroid Build Coastguard Worker@llvm_mips_subs_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
916*9880d681SAndroid Build Coastguard Worker
917*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_subs_u_b_test() nounwind {
918*9880d681SAndroid Build Coastguard Workerentry:
919*9880d681SAndroid Build Coastguard Worker  %0 = load <16 x i8>, <16 x i8>* @llvm_mips_subs_u_b_ARG1
920*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* @llvm_mips_subs_u_b_ARG2
921*9880d681SAndroid Build Coastguard Worker  %2 = tail call <16 x i8> @llvm.mips.subs.u.b(<16 x i8> %0, <16 x i8> %1)
922*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %2, <16 x i8>* @llvm_mips_subs_u_b_RES
923*9880d681SAndroid Build Coastguard Worker  ret void
924*9880d681SAndroid Build Coastguard Worker}
925*9880d681SAndroid Build Coastguard Worker
926*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.mips.subs.u.b(<16 x i8>, <16 x i8>) nounwind
927*9880d681SAndroid Build Coastguard Worker
928*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_subs_u_b_test:
929*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_subs_u_b_ARG1)
930*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_subs_u_b_ARG2)
931*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.b [[WS:\$w[0-9]+]], 0([[R1]])
932*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.b [[WT:\$w[0-9]+]], 0([[R2]])
933*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: subs_u.b [[WD:\$w[0-9]+]], [[WS]], [[WT]]
934*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.b [[WD]]
935*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_subs_u_b_test
936*9880d681SAndroid Build Coastguard Worker;
937*9880d681SAndroid Build Coastguard Worker@llvm_mips_subs_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
938*9880d681SAndroid Build Coastguard Worker@llvm_mips_subs_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
939*9880d681SAndroid Build Coastguard Worker@llvm_mips_subs_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
940*9880d681SAndroid Build Coastguard Worker
941*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_subs_u_h_test() nounwind {
942*9880d681SAndroid Build Coastguard Workerentry:
943*9880d681SAndroid Build Coastguard Worker  %0 = load <8 x i16>, <8 x i16>* @llvm_mips_subs_u_h_ARG1
944*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* @llvm_mips_subs_u_h_ARG2
945*9880d681SAndroid Build Coastguard Worker  %2 = tail call <8 x i16> @llvm.mips.subs.u.h(<8 x i16> %0, <8 x i16> %1)
946*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %2, <8 x i16>* @llvm_mips_subs_u_h_RES
947*9880d681SAndroid Build Coastguard Worker  ret void
948*9880d681SAndroid Build Coastguard Worker}
949*9880d681SAndroid Build Coastguard Worker
950*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.mips.subs.u.h(<8 x i16>, <8 x i16>) nounwind
951*9880d681SAndroid Build Coastguard Worker
952*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_subs_u_h_test:
953*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_subs_u_h_ARG1)
954*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_subs_u_h_ARG2)
955*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.h [[WS:\$w[0-9]+]], 0([[R1]])
956*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.h [[WT:\$w[0-9]+]], 0([[R2]])
957*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: subs_u.h [[WD:\$w[0-9]+]], [[WS]], [[WT]]
958*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.h [[WD]]
959*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_subs_u_h_test
960*9880d681SAndroid Build Coastguard Worker;
961*9880d681SAndroid Build Coastguard Worker@llvm_mips_subs_u_w_ARG1 = global <4 x i32> <i32 0, i32 1, i32 2, i32 3>, align 16
962*9880d681SAndroid Build Coastguard Worker@llvm_mips_subs_u_w_ARG2 = global <4 x i32> <i32 4, i32 5, i32 6, i32 7>, align 16
963*9880d681SAndroid Build Coastguard Worker@llvm_mips_subs_u_w_RES  = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16
964*9880d681SAndroid Build Coastguard Worker
965*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_subs_u_w_test() nounwind {
966*9880d681SAndroid Build Coastguard Workerentry:
967*9880d681SAndroid Build Coastguard Worker  %0 = load <4 x i32>, <4 x i32>* @llvm_mips_subs_u_w_ARG1
968*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* @llvm_mips_subs_u_w_ARG2
969*9880d681SAndroid Build Coastguard Worker  %2 = tail call <4 x i32> @llvm.mips.subs.u.w(<4 x i32> %0, <4 x i32> %1)
970*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %2, <4 x i32>* @llvm_mips_subs_u_w_RES
971*9880d681SAndroid Build Coastguard Worker  ret void
972*9880d681SAndroid Build Coastguard Worker}
973*9880d681SAndroid Build Coastguard Worker
974*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.mips.subs.u.w(<4 x i32>, <4 x i32>) nounwind
975*9880d681SAndroid Build Coastguard Worker
976*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_subs_u_w_test:
977*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_subs_u_w_ARG1)
978*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_subs_u_w_ARG2)
979*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.w [[WS:\$w[0-9]+]], 0([[R1]])
980*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.w [[WT:\$w[0-9]+]], 0([[R2]])
981*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: subs_u.w [[WD:\$w[0-9]+]], [[WS]], [[WT]]
982*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.w [[WD]]
983*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_subs_u_w_test
984*9880d681SAndroid Build Coastguard Worker;
985*9880d681SAndroid Build Coastguard Worker@llvm_mips_subs_u_d_ARG1 = global <2 x i64> <i64 0, i64 1>, align 16
986*9880d681SAndroid Build Coastguard Worker@llvm_mips_subs_u_d_ARG2 = global <2 x i64> <i64 2, i64 3>, align 16
987*9880d681SAndroid Build Coastguard Worker@llvm_mips_subs_u_d_RES  = global <2 x i64> <i64 0, i64 0>, align 16
988*9880d681SAndroid Build Coastguard Worker
989*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_subs_u_d_test() nounwind {
990*9880d681SAndroid Build Coastguard Workerentry:
991*9880d681SAndroid Build Coastguard Worker  %0 = load <2 x i64>, <2 x i64>* @llvm_mips_subs_u_d_ARG1
992*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* @llvm_mips_subs_u_d_ARG2
993*9880d681SAndroid Build Coastguard Worker  %2 = tail call <2 x i64> @llvm.mips.subs.u.d(<2 x i64> %0, <2 x i64> %1)
994*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %2, <2 x i64>* @llvm_mips_subs_u_d_RES
995*9880d681SAndroid Build Coastguard Worker  ret void
996*9880d681SAndroid Build Coastguard Worker}
997*9880d681SAndroid Build Coastguard Worker
998*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.mips.subs.u.d(<2 x i64>, <2 x i64>) nounwind
999*9880d681SAndroid Build Coastguard Worker
1000*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_subs_u_d_test:
1001*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_subs_u_d_ARG1)
1002*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_subs_u_d_ARG2)
1003*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.d [[WS:\$w[0-9]+]], 0([[R1]])
1004*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.d [[WT:\$w[0-9]+]], 0([[R2]])
1005*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: subs_u.d [[WD:\$w[0-9]+]], [[WS]], [[WT]]
1006*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.d [[WD]]
1007*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_subs_u_d_test
1008*9880d681SAndroid Build Coastguard Worker;
1009*9880d681SAndroid Build Coastguard Worker@llvm_mips_subsus_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
1010*9880d681SAndroid Build Coastguard Worker@llvm_mips_subsus_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
1011*9880d681SAndroid Build Coastguard Worker@llvm_mips_subsus_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
1012*9880d681SAndroid Build Coastguard Worker
1013*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_subsus_u_b_test() nounwind {
1014*9880d681SAndroid Build Coastguard Workerentry:
1015*9880d681SAndroid Build Coastguard Worker  %0 = load <16 x i8>, <16 x i8>* @llvm_mips_subsus_u_b_ARG1
1016*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* @llvm_mips_subsus_u_b_ARG2
1017*9880d681SAndroid Build Coastguard Worker  %2 = tail call <16 x i8> @llvm.mips.subsus.u.b(<16 x i8> %0, <16 x i8> %1)
1018*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %2, <16 x i8>* @llvm_mips_subsus_u_b_RES
1019*9880d681SAndroid Build Coastguard Worker  ret void
1020*9880d681SAndroid Build Coastguard Worker}
1021*9880d681SAndroid Build Coastguard Worker
1022*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.mips.subsus.u.b(<16 x i8>, <16 x i8>) nounwind
1023*9880d681SAndroid Build Coastguard Worker
1024*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_subsus_u_b_test:
1025*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_subsus_u_b_ARG1)
1026*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_subsus_u_b_ARG2)
1027*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.b [[WS:\$w[0-9]+]], 0([[R1]])
1028*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.b [[WT:\$w[0-9]+]], 0([[R2]])
1029*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: subsus_u.b [[WD:\$w[0-9]+]], [[WS]], [[WT]]
1030*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.b [[WD]]
1031*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_subsus_u_b_test
1032*9880d681SAndroid Build Coastguard Worker;
1033*9880d681SAndroid Build Coastguard Worker@llvm_mips_subsus_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
1034*9880d681SAndroid Build Coastguard Worker@llvm_mips_subsus_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
1035*9880d681SAndroid Build Coastguard Worker@llvm_mips_subsus_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
1036*9880d681SAndroid Build Coastguard Worker
1037*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_subsus_u_h_test() nounwind {
1038*9880d681SAndroid Build Coastguard Workerentry:
1039*9880d681SAndroid Build Coastguard Worker  %0 = load <8 x i16>, <8 x i16>* @llvm_mips_subsus_u_h_ARG1
1040*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* @llvm_mips_subsus_u_h_ARG2
1041*9880d681SAndroid Build Coastguard Worker  %2 = tail call <8 x i16> @llvm.mips.subsus.u.h(<8 x i16> %0, <8 x i16> %1)
1042*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %2, <8 x i16>* @llvm_mips_subsus_u_h_RES
1043*9880d681SAndroid Build Coastguard Worker  ret void
1044*9880d681SAndroid Build Coastguard Worker}
1045*9880d681SAndroid Build Coastguard Worker
1046*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.mips.subsus.u.h(<8 x i16>, <8 x i16>) nounwind
1047*9880d681SAndroid Build Coastguard Worker
1048*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_subsus_u_h_test:
1049*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_subsus_u_h_ARG1)
1050*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_subsus_u_h_ARG2)
1051*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.h [[WS:\$w[0-9]+]], 0([[R1]])
1052*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.h [[WT:\$w[0-9]+]], 0([[R2]])
1053*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: subsus_u.h [[WD:\$w[0-9]+]], [[WS]], [[WT]]
1054*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.h [[WD]]
1055*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_subsus_u_h_test
1056*9880d681SAndroid Build Coastguard Worker;
1057*9880d681SAndroid Build Coastguard Worker@llvm_mips_subsus_u_w_ARG1 = global <4 x i32> <i32 0, i32 1, i32 2, i32 3>, align 16
1058*9880d681SAndroid Build Coastguard Worker@llvm_mips_subsus_u_w_ARG2 = global <4 x i32> <i32 4, i32 5, i32 6, i32 7>, align 16
1059*9880d681SAndroid Build Coastguard Worker@llvm_mips_subsus_u_w_RES  = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16
1060*9880d681SAndroid Build Coastguard Worker
1061*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_subsus_u_w_test() nounwind {
1062*9880d681SAndroid Build Coastguard Workerentry:
1063*9880d681SAndroid Build Coastguard Worker  %0 = load <4 x i32>, <4 x i32>* @llvm_mips_subsus_u_w_ARG1
1064*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* @llvm_mips_subsus_u_w_ARG2
1065*9880d681SAndroid Build Coastguard Worker  %2 = tail call <4 x i32> @llvm.mips.subsus.u.w(<4 x i32> %0, <4 x i32> %1)
1066*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %2, <4 x i32>* @llvm_mips_subsus_u_w_RES
1067*9880d681SAndroid Build Coastguard Worker  ret void
1068*9880d681SAndroid Build Coastguard Worker}
1069*9880d681SAndroid Build Coastguard Worker
1070*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.mips.subsus.u.w(<4 x i32>, <4 x i32>) nounwind
1071*9880d681SAndroid Build Coastguard Worker
1072*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_subsus_u_w_test:
1073*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_subsus_u_w_ARG1)
1074*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_subsus_u_w_ARG2)
1075*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.w [[WS:\$w[0-9]+]], 0([[R1]])
1076*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.w [[WT:\$w[0-9]+]], 0([[R2]])
1077*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: subsus_u.w [[WD:\$w[0-9]+]], [[WS]], [[WT]]
1078*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.w [[WD]]
1079*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_subsus_u_w_test
1080*9880d681SAndroid Build Coastguard Worker;
1081*9880d681SAndroid Build Coastguard Worker@llvm_mips_subsus_u_d_ARG1 = global <2 x i64> <i64 0, i64 1>, align 16
1082*9880d681SAndroid Build Coastguard Worker@llvm_mips_subsus_u_d_ARG2 = global <2 x i64> <i64 2, i64 3>, align 16
1083*9880d681SAndroid Build Coastguard Worker@llvm_mips_subsus_u_d_RES  = global <2 x i64> <i64 0, i64 0>, align 16
1084*9880d681SAndroid Build Coastguard Worker
1085*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_subsus_u_d_test() nounwind {
1086*9880d681SAndroid Build Coastguard Workerentry:
1087*9880d681SAndroid Build Coastguard Worker  %0 = load <2 x i64>, <2 x i64>* @llvm_mips_subsus_u_d_ARG1
1088*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* @llvm_mips_subsus_u_d_ARG2
1089*9880d681SAndroid Build Coastguard Worker  %2 = tail call <2 x i64> @llvm.mips.subsus.u.d(<2 x i64> %0, <2 x i64> %1)
1090*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %2, <2 x i64>* @llvm_mips_subsus_u_d_RES
1091*9880d681SAndroid Build Coastguard Worker  ret void
1092*9880d681SAndroid Build Coastguard Worker}
1093*9880d681SAndroid Build Coastguard Worker
1094*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.mips.subsus.u.d(<2 x i64>, <2 x i64>) nounwind
1095*9880d681SAndroid Build Coastguard Worker
1096*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_subsus_u_d_test:
1097*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_subsus_u_d_ARG1)
1098*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_subsus_u_d_ARG2)
1099*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.d [[WS:\$w[0-9]+]], 0([[R1]])
1100*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.d [[WT:\$w[0-9]+]], 0([[R2]])
1101*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: subsus_u.d [[WD:\$w[0-9]+]], [[WS]], [[WT]]
1102*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.d [[WD]]
1103*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_subsus_u_d_test
1104*9880d681SAndroid Build Coastguard Worker;
1105*9880d681SAndroid Build Coastguard Worker@llvm_mips_subsuu_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
1106*9880d681SAndroid Build Coastguard Worker@llvm_mips_subsuu_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
1107*9880d681SAndroid Build Coastguard Worker@llvm_mips_subsuu_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
1108*9880d681SAndroid Build Coastguard Worker
1109*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_subsuu_s_b_test() nounwind {
1110*9880d681SAndroid Build Coastguard Workerentry:
1111*9880d681SAndroid Build Coastguard Worker  %0 = load <16 x i8>, <16 x i8>* @llvm_mips_subsuu_s_b_ARG1
1112*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* @llvm_mips_subsuu_s_b_ARG2
1113*9880d681SAndroid Build Coastguard Worker  %2 = tail call <16 x i8> @llvm.mips.subsuu.s.b(<16 x i8> %0, <16 x i8> %1)
1114*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %2, <16 x i8>* @llvm_mips_subsuu_s_b_RES
1115*9880d681SAndroid Build Coastguard Worker  ret void
1116*9880d681SAndroid Build Coastguard Worker}
1117*9880d681SAndroid Build Coastguard Worker
1118*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.mips.subsuu.s.b(<16 x i8>, <16 x i8>) nounwind
1119*9880d681SAndroid Build Coastguard Worker
1120*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_subsuu_s_b_test:
1121*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_subsuu_s_b_ARG1)
1122*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_subsuu_s_b_ARG2)
1123*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.b [[WS:\$w[0-9]+]], 0([[R1]])
1124*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.b [[WT:\$w[0-9]+]], 0([[R2]])
1125*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: subsuu_s.b [[WD:\$w[0-9]+]], [[WS]], [[WT]]
1126*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.b [[WD]]
1127*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_subsuu_s_b_test
1128*9880d681SAndroid Build Coastguard Worker;
1129*9880d681SAndroid Build Coastguard Worker@llvm_mips_subsuu_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
1130*9880d681SAndroid Build Coastguard Worker@llvm_mips_subsuu_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
1131*9880d681SAndroid Build Coastguard Worker@llvm_mips_subsuu_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
1132*9880d681SAndroid Build Coastguard Worker
1133*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_subsuu_s_h_test() nounwind {
1134*9880d681SAndroid Build Coastguard Workerentry:
1135*9880d681SAndroid Build Coastguard Worker  %0 = load <8 x i16>, <8 x i16>* @llvm_mips_subsuu_s_h_ARG1
1136*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* @llvm_mips_subsuu_s_h_ARG2
1137*9880d681SAndroid Build Coastguard Worker  %2 = tail call <8 x i16> @llvm.mips.subsuu.s.h(<8 x i16> %0, <8 x i16> %1)
1138*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %2, <8 x i16>* @llvm_mips_subsuu_s_h_RES
1139*9880d681SAndroid Build Coastguard Worker  ret void
1140*9880d681SAndroid Build Coastguard Worker}
1141*9880d681SAndroid Build Coastguard Worker
1142*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.mips.subsuu.s.h(<8 x i16>, <8 x i16>) nounwind
1143*9880d681SAndroid Build Coastguard Worker
1144*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_subsuu_s_h_test:
1145*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_subsuu_s_h_ARG1)
1146*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_subsuu_s_h_ARG2)
1147*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.h [[WS:\$w[0-9]+]], 0([[R1]])
1148*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.h [[WT:\$w[0-9]+]], 0([[R2]])
1149*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: subsuu_s.h [[WD:\$w[0-9]+]], [[WS]], [[WT]]
1150*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.h [[WD]]
1151*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_subsuu_s_h_test
1152*9880d681SAndroid Build Coastguard Worker;
1153*9880d681SAndroid Build Coastguard Worker@llvm_mips_subsuu_s_w_ARG1 = global <4 x i32> <i32 0, i32 1, i32 2, i32 3>, align 16
1154*9880d681SAndroid Build Coastguard Worker@llvm_mips_subsuu_s_w_ARG2 = global <4 x i32> <i32 4, i32 5, i32 6, i32 7>, align 16
1155*9880d681SAndroid Build Coastguard Worker@llvm_mips_subsuu_s_w_RES  = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16
1156*9880d681SAndroid Build Coastguard Worker
1157*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_subsuu_s_w_test() nounwind {
1158*9880d681SAndroid Build Coastguard Workerentry:
1159*9880d681SAndroid Build Coastguard Worker  %0 = load <4 x i32>, <4 x i32>* @llvm_mips_subsuu_s_w_ARG1
1160*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* @llvm_mips_subsuu_s_w_ARG2
1161*9880d681SAndroid Build Coastguard Worker  %2 = tail call <4 x i32> @llvm.mips.subsuu.s.w(<4 x i32> %0, <4 x i32> %1)
1162*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %2, <4 x i32>* @llvm_mips_subsuu_s_w_RES
1163*9880d681SAndroid Build Coastguard Worker  ret void
1164*9880d681SAndroid Build Coastguard Worker}
1165*9880d681SAndroid Build Coastguard Worker
1166*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.mips.subsuu.s.w(<4 x i32>, <4 x i32>) nounwind
1167*9880d681SAndroid Build Coastguard Worker
1168*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_subsuu_s_w_test:
1169*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_subsuu_s_w_ARG1)
1170*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_subsuu_s_w_ARG2)
1171*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.w [[WS:\$w[0-9]+]], 0([[R1]])
1172*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.w [[WT:\$w[0-9]+]], 0([[R2]])
1173*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: subsuu_s.w [[WD:\$w[0-9]+]], [[WS]], [[WT]]
1174*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.w [[WD]]
1175*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_subsuu_s_w_test
1176*9880d681SAndroid Build Coastguard Worker;
1177*9880d681SAndroid Build Coastguard Worker@llvm_mips_subsuu_s_d_ARG1 = global <2 x i64> <i64 0, i64 1>, align 16
1178*9880d681SAndroid Build Coastguard Worker@llvm_mips_subsuu_s_d_ARG2 = global <2 x i64> <i64 2, i64 3>, align 16
1179*9880d681SAndroid Build Coastguard Worker@llvm_mips_subsuu_s_d_RES  = global <2 x i64> <i64 0, i64 0>, align 16
1180*9880d681SAndroid Build Coastguard Worker
1181*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_subsuu_s_d_test() nounwind {
1182*9880d681SAndroid Build Coastguard Workerentry:
1183*9880d681SAndroid Build Coastguard Worker  %0 = load <2 x i64>, <2 x i64>* @llvm_mips_subsuu_s_d_ARG1
1184*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* @llvm_mips_subsuu_s_d_ARG2
1185*9880d681SAndroid Build Coastguard Worker  %2 = tail call <2 x i64> @llvm.mips.subsuu.s.d(<2 x i64> %0, <2 x i64> %1)
1186*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %2, <2 x i64>* @llvm_mips_subsuu_s_d_RES
1187*9880d681SAndroid Build Coastguard Worker  ret void
1188*9880d681SAndroid Build Coastguard Worker}
1189*9880d681SAndroid Build Coastguard Worker
1190*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.mips.subsuu.s.d(<2 x i64>, <2 x i64>) nounwind
1191*9880d681SAndroid Build Coastguard Worker
1192*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_subsuu_s_d_test:
1193*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_subsuu_s_d_ARG1)
1194*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_subsuu_s_d_ARG2)
1195*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.d [[WS:\$w[0-9]+]], 0([[R1]])
1196*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.d [[WT:\$w[0-9]+]], 0([[R2]])
1197*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: subsuu_s.d [[WD:\$w[0-9]+]], [[WS]], [[WT]]
1198*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.d [[WD]]
1199*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_subsuu_s_d_test
1200*9880d681SAndroid Build Coastguard Worker;
1201*9880d681SAndroid Build Coastguard Worker@llvm_mips_subv_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
1202*9880d681SAndroid Build Coastguard Worker@llvm_mips_subv_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
1203*9880d681SAndroid Build Coastguard Worker@llvm_mips_subv_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
1204*9880d681SAndroid Build Coastguard Worker
1205*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_subv_b_test() nounwind {
1206*9880d681SAndroid Build Coastguard Workerentry:
1207*9880d681SAndroid Build Coastguard Worker  %0 = load <16 x i8>, <16 x i8>* @llvm_mips_subv_b_ARG1
1208*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* @llvm_mips_subv_b_ARG2
1209*9880d681SAndroid Build Coastguard Worker  %2 = tail call <16 x i8> @llvm.mips.subv.b(<16 x i8> %0, <16 x i8> %1)
1210*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %2, <16 x i8>* @llvm_mips_subv_b_RES
1211*9880d681SAndroid Build Coastguard Worker  ret void
1212*9880d681SAndroid Build Coastguard Worker}
1213*9880d681SAndroid Build Coastguard Worker
1214*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.mips.subv.b(<16 x i8>, <16 x i8>) nounwind
1215*9880d681SAndroid Build Coastguard Worker
1216*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_subv_b_test:
1217*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_subv_b_ARG1)
1218*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_subv_b_ARG2)
1219*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.b [[WS:\$w[0-9]+]], 0([[R1]])
1220*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.b [[WT:\$w[0-9]+]], 0([[R2]])
1221*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: subv.b [[WD:\$w[0-9]+]], [[WS]], [[WT]]
1222*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.b [[WD]]
1223*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_subv_b_test
1224*9880d681SAndroid Build Coastguard Worker;
1225*9880d681SAndroid Build Coastguard Worker@llvm_mips_subv_h_ARG1 = global <8 x i16> <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>, align 16
1226*9880d681SAndroid Build Coastguard Worker@llvm_mips_subv_h_ARG2 = global <8 x i16> <i16 8, i16 9, i16 10, i16 11, i16 12, i16 13, i16 14, i16 15>, align 16
1227*9880d681SAndroid Build Coastguard Worker@llvm_mips_subv_h_RES  = global <8 x i16> <i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0>, align 16
1228*9880d681SAndroid Build Coastguard Worker
1229*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_subv_h_test() nounwind {
1230*9880d681SAndroid Build Coastguard Workerentry:
1231*9880d681SAndroid Build Coastguard Worker  %0 = load <8 x i16>, <8 x i16>* @llvm_mips_subv_h_ARG1
1232*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* @llvm_mips_subv_h_ARG2
1233*9880d681SAndroid Build Coastguard Worker  %2 = tail call <8 x i16> @llvm.mips.subv.h(<8 x i16> %0, <8 x i16> %1)
1234*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %2, <8 x i16>* @llvm_mips_subv_h_RES
1235*9880d681SAndroid Build Coastguard Worker  ret void
1236*9880d681SAndroid Build Coastguard Worker}
1237*9880d681SAndroid Build Coastguard Worker
1238*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.mips.subv.h(<8 x i16>, <8 x i16>) nounwind
1239*9880d681SAndroid Build Coastguard Worker
1240*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_subv_h_test:
1241*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_subv_h_ARG1)
1242*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_subv_h_ARG2)
1243*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.h [[WS:\$w[0-9]+]], 0([[R1]])
1244*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.h [[WT:\$w[0-9]+]], 0([[R2]])
1245*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: subv.h [[WD:\$w[0-9]+]], [[WS]], [[WT]]
1246*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.h [[WD]]
1247*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_subv_h_test
1248*9880d681SAndroid Build Coastguard Worker;
1249*9880d681SAndroid Build Coastguard Worker@llvm_mips_subv_w_ARG1 = global <4 x i32> <i32 0, i32 1, i32 2, i32 3>, align 16
1250*9880d681SAndroid Build Coastguard Worker@llvm_mips_subv_w_ARG2 = global <4 x i32> <i32 4, i32 5, i32 6, i32 7>, align 16
1251*9880d681SAndroid Build Coastguard Worker@llvm_mips_subv_w_RES  = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16
1252*9880d681SAndroid Build Coastguard Worker
1253*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_subv_w_test() nounwind {
1254*9880d681SAndroid Build Coastguard Workerentry:
1255*9880d681SAndroid Build Coastguard Worker  %0 = load <4 x i32>, <4 x i32>* @llvm_mips_subv_w_ARG1
1256*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* @llvm_mips_subv_w_ARG2
1257*9880d681SAndroid Build Coastguard Worker  %2 = tail call <4 x i32> @llvm.mips.subv.w(<4 x i32> %0, <4 x i32> %1)
1258*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %2, <4 x i32>* @llvm_mips_subv_w_RES
1259*9880d681SAndroid Build Coastguard Worker  ret void
1260*9880d681SAndroid Build Coastguard Worker}
1261*9880d681SAndroid Build Coastguard Worker
1262*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.mips.subv.w(<4 x i32>, <4 x i32>) nounwind
1263*9880d681SAndroid Build Coastguard Worker
1264*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_subv_w_test:
1265*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_subv_w_ARG1)
1266*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_subv_w_ARG2)
1267*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.w [[WS:\$w[0-9]+]], 0([[R1]])
1268*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.w [[WT:\$w[0-9]+]], 0([[R2]])
1269*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: subv.w [[WD:\$w[0-9]+]], [[WS]], [[WT]]
1270*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.w [[WD]]
1271*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_subv_w_test
1272*9880d681SAndroid Build Coastguard Worker;
1273*9880d681SAndroid Build Coastguard Worker@llvm_mips_subv_d_ARG1 = global <2 x i64> <i64 0, i64 1>, align 16
1274*9880d681SAndroid Build Coastguard Worker@llvm_mips_subv_d_ARG2 = global <2 x i64> <i64 2, i64 3>, align 16
1275*9880d681SAndroid Build Coastguard Worker@llvm_mips_subv_d_RES  = global <2 x i64> <i64 0, i64 0>, align 16
1276*9880d681SAndroid Build Coastguard Worker
1277*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_subv_d_test() nounwind {
1278*9880d681SAndroid Build Coastguard Workerentry:
1279*9880d681SAndroid Build Coastguard Worker  %0 = load <2 x i64>, <2 x i64>* @llvm_mips_subv_d_ARG1
1280*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* @llvm_mips_subv_d_ARG2
1281*9880d681SAndroid Build Coastguard Worker  %2 = tail call <2 x i64> @llvm.mips.subv.d(<2 x i64> %0, <2 x i64> %1)
1282*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %2, <2 x i64>* @llvm_mips_subv_d_RES
1283*9880d681SAndroid Build Coastguard Worker  ret void
1284*9880d681SAndroid Build Coastguard Worker}
1285*9880d681SAndroid Build Coastguard Worker
1286*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.mips.subv.d(<2 x i64>, <2 x i64>) nounwind
1287*9880d681SAndroid Build Coastguard Worker
1288*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_subv_d_test:
1289*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_subv_d_ARG1)
1290*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_subv_d_ARG2)
1291*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.d [[WS:\$w[0-9]+]], 0([[R1]])
1292*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.d [[WT:\$w[0-9]+]], 0([[R2]])
1293*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: subv.d [[WD:\$w[0-9]+]], [[WS]], [[WT]]
1294*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.d [[WD]]
1295*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_subv_d_test
1296*9880d681SAndroid Build Coastguard Worker;
1297*9880d681SAndroid Build Coastguard Worker
1298*9880d681SAndroid Build Coastguard Workerdefine void @subv_b_test() nounwind {
1299*9880d681SAndroid Build Coastguard Workerentry:
1300*9880d681SAndroid Build Coastguard Worker  %0 = load <16 x i8>, <16 x i8>* @llvm_mips_subv_b_ARG1
1301*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* @llvm_mips_subv_b_ARG2
1302*9880d681SAndroid Build Coastguard Worker  %2 = sub <16 x i8> %0, %1
1303*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %2, <16 x i8>* @llvm_mips_subv_b_RES
1304*9880d681SAndroid Build Coastguard Worker  ret void
1305*9880d681SAndroid Build Coastguard Worker}
1306*9880d681SAndroid Build Coastguard Worker
1307*9880d681SAndroid Build Coastguard Worker; CHECK: subv_b_test:
1308*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_subv_b_ARG1)
1309*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_subv_b_ARG2)
1310*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.b [[WS:\$w[0-9]+]], 0([[R1]])
1311*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.b [[WT:\$w[0-9]+]], 0([[R2]])
1312*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: subv.b [[WD:\$w[0-9]+]], [[WS]], [[WT]]
1313*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.b [[WD]]
1314*9880d681SAndroid Build Coastguard Worker; CHECK: .size subv_b_test
1315*9880d681SAndroid Build Coastguard Worker
1316*9880d681SAndroid Build Coastguard Workerdefine void @subv_h_test() nounwind {
1317*9880d681SAndroid Build Coastguard Workerentry:
1318*9880d681SAndroid Build Coastguard Worker  %0 = load <8 x i16>, <8 x i16>* @llvm_mips_subv_h_ARG1
1319*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* @llvm_mips_subv_h_ARG2
1320*9880d681SAndroid Build Coastguard Worker  %2 = sub <8 x i16> %0, %1
1321*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %2, <8 x i16>* @llvm_mips_subv_h_RES
1322*9880d681SAndroid Build Coastguard Worker  ret void
1323*9880d681SAndroid Build Coastguard Worker}
1324*9880d681SAndroid Build Coastguard Worker
1325*9880d681SAndroid Build Coastguard Worker; CHECK: subv_h_test:
1326*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_subv_h_ARG1)
1327*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_subv_h_ARG2)
1328*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.h [[WS:\$w[0-9]+]], 0([[R1]])
1329*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.h [[WT:\$w[0-9]+]], 0([[R2]])
1330*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: subv.h [[WD:\$w[0-9]+]], [[WS]], [[WT]]
1331*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.h [[WD]]
1332*9880d681SAndroid Build Coastguard Worker; CHECK: .size subv_h_test
1333*9880d681SAndroid Build Coastguard Worker
1334*9880d681SAndroid Build Coastguard Workerdefine void @subv_w_test() nounwind {
1335*9880d681SAndroid Build Coastguard Workerentry:
1336*9880d681SAndroid Build Coastguard Worker  %0 = load <4 x i32>, <4 x i32>* @llvm_mips_subv_w_ARG1
1337*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* @llvm_mips_subv_w_ARG2
1338*9880d681SAndroid Build Coastguard Worker  %2 = sub <4 x i32> %0, %1
1339*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %2, <4 x i32>* @llvm_mips_subv_w_RES
1340*9880d681SAndroid Build Coastguard Worker  ret void
1341*9880d681SAndroid Build Coastguard Worker}
1342*9880d681SAndroid Build Coastguard Worker
1343*9880d681SAndroid Build Coastguard Worker; CHECK: subv_w_test:
1344*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_subv_w_ARG1)
1345*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_subv_w_ARG2)
1346*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.w [[WS:\$w[0-9]+]], 0([[R1]])
1347*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.w [[WT:\$w[0-9]+]], 0([[R2]])
1348*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: subv.w [[WD:\$w[0-9]+]], [[WS]], [[WT]]
1349*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.w [[WD]]
1350*9880d681SAndroid Build Coastguard Worker; CHECK: .size subv_w_test
1351*9880d681SAndroid Build Coastguard Worker
1352*9880d681SAndroid Build Coastguard Workerdefine void @subv_d_test() nounwind {
1353*9880d681SAndroid Build Coastguard Workerentry:
1354*9880d681SAndroid Build Coastguard Worker  %0 = load <2 x i64>, <2 x i64>* @llvm_mips_subv_d_ARG1
1355*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* @llvm_mips_subv_d_ARG2
1356*9880d681SAndroid Build Coastguard Worker  %2 = sub <2 x i64> %0, %1
1357*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %2, <2 x i64>* @llvm_mips_subv_d_RES
1358*9880d681SAndroid Build Coastguard Worker  ret void
1359*9880d681SAndroid Build Coastguard Worker}
1360*9880d681SAndroid Build Coastguard Worker
1361*9880d681SAndroid Build Coastguard Worker; CHECK: subv_d_test:
1362*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_subv_d_ARG1)
1363*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_subv_d_ARG2)
1364*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.d [[WS:\$w[0-9]+]], 0([[R1]])
1365*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.d [[WT:\$w[0-9]+]], 0([[R2]])
1366*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: subv.d [[WD:\$w[0-9]+]], [[WS]], [[WT]]
1367*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.d [[WD]]
1368*9880d681SAndroid Build Coastguard Worker; CHECK: .size subv_d_test
1369*9880d681SAndroid Build Coastguard Worker;
1370