1*56bb7041Schristos$AT = '@';
2*56bb7041Schristosprint <<END
3*56bb7041Schristos.text
4*56bb7041Schristos	.type _start,${AT}function
5*56bb7041Schristos_start:
6*56bb7041Schristos
7*56bb7041Schristos	pmpyshr2 r4 = r5, r6, 0
8*56bb7041Schristos	pmpyshr2.u r4 = r5, r6, 16
9*56bb7041Schristos
10*56bb7041Schristos	pmpy2.r r4 = r5, r6
11*56bb7041Schristos	pmpy2.l r4 = r5, r6
12*56bb7041Schristos
13*56bb7041Schristos	mix1.r r4 = r5, r6
14*56bb7041Schristos	mix2.r r4 = r5, r6
15*56bb7041Schristos	mix4.r r4 = r5, r6
16*56bb7041Schristos	mix1.l r4 = r5, r6
17*56bb7041Schristos	mix2.l r4 = r5, r6
18*56bb7041Schristos	mix4.l r4 = r5, r6
19*56bb7041Schristos
20*56bb7041Schristos	pack2.uss r4 = r5, r6
21*56bb7041Schristos	pack2.sss r4 = r5, r6
22*56bb7041Schristos	pack4.sss r4 = r5, r6
23*56bb7041Schristos
24*56bb7041Schristos	unpack1.h r4 = r5, r6
25*56bb7041Schristos	unpack2.h r4 = r5, r6
26*56bb7041Schristos	unpack4.h r4 = r5, r6
27*56bb7041Schristos	unpack1.l r4 = r5, r6
28*56bb7041Schristos	unpack2.l r4 = r5, r6
29*56bb7041Schristos	unpack4.l r4 = r5, r6
30*56bb7041Schristos
31*56bb7041Schristos	pmin1.u r4 = r5, r6
32*56bb7041Schristos	pmax1.u r4 = r5, r6
33*56bb7041Schristos
34*56bb7041Schristos	pmin2 r4 = r5, r6
35*56bb7041Schristos	pmax2 r4 = r5, r6
36*56bb7041Schristos
37*56bb7041Schristos	psad1 r4 = r5, r6
38*56bb7041Schristos
39*56bb7041Schristos	mux1 r4 = r5, ${AT}rev
40*56bb7041Schristos	mux1 r4 = r5, ${AT}mix
41*56bb7041Schristos	mux1 r4 = r5, ${AT}shuf
42*56bb7041Schristos	mux1 r4 = r5, ${AT}alt
43*56bb7041Schristos	mux1 r4 = r5, ${AT}brcst
44*56bb7041Schristos
45*56bb7041Schristos	mux2 r4 = r5, 0
46*56bb7041Schristos	mux2 r4 = r5, 0xff
47*56bb7041Schristos	mux2 r4 = r5, 0xaa
48*56bb7041Schristos
49*56bb7041Schristos	pshr2 r4 = r5, r6
50*56bb7041Schristos	pshr2 r4 = r5, 0
51*56bb7041Schristos	pshr2 r4 = r5, 8
52*56bb7041Schristos	pshr2 r4 = r5, 31
53*56bb7041Schristos
54*56bb7041Schristos	pshr4 r4 = r5, r6
55*56bb7041Schristos	pshr4 r4 = r5, 0
56*56bb7041Schristos	pshr4 r4 = r5, 8
57*56bb7041Schristos	pshr4 r4 = r5, 31
58*56bb7041Schristos
59*56bb7041Schristos	pshr2.u r4 = r5, r6
60*56bb7041Schristos	pshr2.u r4 = r5, 0
61*56bb7041Schristos	pshr2.u r4 = r5, 8
62*56bb7041Schristos	pshr2.u r4 = r5, 31
63*56bb7041Schristos
64*56bb7041Schristos	pshr4.u r4 = r5, r6
65*56bb7041Schristos	pshr4.u r4 = r5, 0
66*56bb7041Schristos	pshr4.u r4 = r5, 8
67*56bb7041Schristos	pshr4.u r4 = r5, 31
68*56bb7041Schristos
69*56bb7041Schristos	shr r4 = r5, r6
70*56bb7041Schristos	shr.u r4 = r5, r6
71*56bb7041Schristos
72*56bb7041Schristos	pshl2 r4 = r5, r6
73*56bb7041Schristos	pshl2 r4 = r5, 0
74*56bb7041Schristos	pshl2 r4 = r5, 8
75*56bb7041Schristos	pshl2 r4 = r5, 31
76*56bb7041Schristos
77*56bb7041Schristos	pshl4 r4 = r5, r6
78*56bb7041Schristos	pshl4 r4 = r5, 0
79*56bb7041Schristos	pshl4 r4 = r5, 8
80*56bb7041Schristos	pshl4 r4 = r5, 31
81*56bb7041Schristos
82*56bb7041Schristos	shl r4 = r5, r6
83*56bb7041Schristos
84*56bb7041Schristos	popcnt r4 = r5
85*56bb7041Schristos
86*56bb7041Schristos	shrp r4 = r5, r6, 0
87*56bb7041Schristos	shrp r4 = r5, r6, 12
88*56bb7041Schristos	shrp r4 = r5, r6, 63
89*56bb7041Schristos
90*56bb7041Schristos	extr r4 = r5, 0, 16
91*56bb7041Schristos	extr r4 = r5, 0, 63
92*56bb7041Schristos	extr r4 = r5, 10, 40
93*56bb7041Schristos
94*56bb7041Schristos	extr.u r4 = r5, 0, 16
95*56bb7041Schristos	extr.u r4 = r5, 0, 63
96*56bb7041Schristos	extr.u r4 = r5, 10, 40
97*56bb7041Schristos
98*56bb7041Schristos	dep.z r4 = r5, 0, 16
99*56bb7041Schristos	dep.z r4 = r5, 0, 63
100*56bb7041Schristos	dep.z r4 = r5, 10, 40
101*56bb7041Schristos	dep.z r4 = 0, 0, 16
102*56bb7041Schristos	dep.z r4 = 127, 0, 63
103*56bb7041Schristos	dep.z r4 = -128, 5, 50
104*56bb7041Schristos	dep.z r4 = 0x55, 10, 40
105*56bb7041Schristos
106*56bb7041Schristos	dep r4 = 0, r5, 0, 16
107*56bb7041Schristos	dep r4 = -1, r5, 0, 63
108*56bb7041Schristos// Insert padding NOPs to force the same template selection as IAS.
109*56bb7041Schristos	nop.m 0
110*56bb7041Schristos	nop.f 0
111*56bb7041Schristos	dep r4 = r5, r6, 10, 7
112*56bb7041Schristos
113*56bb7041Schristos	movl r4 = 0
114*56bb7041Schristos	movl r4 = 0xffffffffffffffff
115*56bb7041Schristos	movl r4 = 0x1234567890abcdef
116*56bb7041Schristos
117*56bb7041Schristos	break.i 0
118*56bb7041Schristos	break.i 0x1fffff
119*56bb7041Schristos
120*56bb7041Schristos	nop.i 0
121*56bb7041Schristos	nop.i 0x1fffff
122*56bb7041Schristos
123*56bb7041Schristos	chk.s.i r4, _start
124*56bb7041Schristos
125*56bb7041Schristos	mov r4 = b0
126*56bb7041Schristos	mov b0 = r4
127*56bb7041Schristos
128*56bb7041Schristos	mov pr = r4, 0
129*56bb7041Schristos	mov pr = r4, 0x1234
130*56bb7041Schristos	mov pr = r4, 0x1ffff
131*56bb7041Schristos
132*56bb7041Schristos	mov pr.rot = 0
133*56bb7041Schristos// ??? This was originally 0x3ffffff, but that generates an assembler warning
134*56bb7041Schristos// that the testsuite infrastructure isn't set up to ignore.
135*56bb7041Schristos	mov pr.rot = 0x3ff0000
136*56bb7041Schristos	mov pr.rot = -0x4000000
137*56bb7041Schristos
138*56bb7041Schristos	zxt1 r4 = r5
139*56bb7041Schristos	zxt2 r4 = r5
140*56bb7041Schristos	zxt4 r4 = r5
141*56bb7041Schristos
142*56bb7041Schristos	sxt1 r4 = r5
143*56bb7041Schristos	sxt2 r4 = r5
144*56bb7041Schristos	sxt4 r4 = r5
145*56bb7041Schristos
146*56bb7041Schristos	czx1.l r4 = r5
147*56bb7041Schristos	czx2.l r4 = r5
148*56bb7041Schristos	czx1.r r4 = r5
149*56bb7041Schristos	czx2.r r4 = r5
150*56bb7041Schristos
151*56bb7041SchristosEND
152*56bb7041Schristos;
153*56bb7041Schristos
154*56bb7041Schristos@ctype = ( "", ".unc", ".and", ".or", ".or.andcm", ".orcm",
155*56bb7041Schristos	   ".andcm", ".and.orcm" );
156*56bb7041Schristos
157*56bb7041Schristos$i = 0;
158*56bb7041Schristosforeach $z ( ".z", ".nz" ) {
159*56bb7041Schristos  foreach $c (@ctype) {
160*56bb7041Schristos    print "\ttbit${z}${c} p2, p3 = r4, $i\n";
161*56bb7041Schristos    ++$i;
162*56bb7041Schristos  }
163*56bb7041Schristos}
164*56bb7041Schristosprint "\n";
165*56bb7041Schristos
166*56bb7041Schristosforeach $z ( ".z", ".nz" ) {
167*56bb7041Schristos  foreach $c (@ctype) {
168*56bb7041Schristos    print "\ttnat${z}${c} p2, p3 = r4\n";
169*56bb7041Schristos  }
170*56bb7041Schristos}
171*56bb7041Schristosprint "\n";
172*56bb7041Schristos
173*56bb7041Schristos
174*56bb7041Schristos@mwh = ( "", ".sptk", ".dptk" );
175*56bb7041Schristos@ih = ( "", ".imp" );
176*56bb7041Schristos
177*56bb7041Schristos$LAB = 1;
178*56bb7041Schristos
179*56bb7041Schristosforeach $b ("", ".ret") {
180*56bb7041Schristos  foreach $w (@mwh) {
181*56bb7041Schristos    foreach $i (@ih) {
182*56bb7041Schristos      print "\tmov${b}${w}${i} b3 = r4, .L${LAB}\n";
183*56bb7041Schristos    }
184*56bb7041Schristos    print ".space 240\n";
185*56bb7041Schristos    print ".L${LAB}:\n";
186*56bb7041Schristos    ++$LAB;
187*56bb7041Schristos  }
188*56bb7041Schristos  print "\n";
189*56bb7041Schristos}
190