1*1424dfb3Schristos# source file to test illegal mips64r2 instructions
2*1424dfb3Schristos
3*1424dfb3Schristos        .set noreorder
4*1424dfb3Schristos      .set noat
5*1424dfb3Schristos
6*1424dfb3Schristos      .text
7*1424dfb3Schristostext_label:
8*1424dfb3Schristos
9*1424dfb3Schristos      # dext macro position/size checks
10*1424dfb3Schristos
11*1424dfb3Schristos	# constraint: 0 <= pos < 64
12*1424dfb3Schristos	dext	$4, $5, -1, 1		# error (position)
13*1424dfb3Schristos	dext	$4, $5, 0, 1
14*1424dfb3Schristos	dext	$4, $5, 63, 1
15*1424dfb3Schristos	dext	$4, $5, 64, 1		# error (position)
16*1424dfb3Schristos
17*1424dfb3Schristos	# constraint: 0 < size <= 64
18*1424dfb3Schristos	dext	$4, $5, 0, 0		# error (size)
19*1424dfb3Schristos	dext	$4, $5, 0, 1
20*1424dfb3Schristos	dext	$4, $5, 0, 64
21*1424dfb3Schristos	dext	$4, $5, 0, 65		# error (size)
22*1424dfb3Schristos
23*1424dfb3Schristos	# constraint: 0 < (pos+size) <= 64
24*1424dfb3Schristos	dext	$4, $5, 0, 1
25*1424dfb3Schristos	dext	$4, $5, 0, 2
26*1424dfb3Schristos	dext	$4, $5, 0, 63
27*1424dfb3Schristos	dext	$4, $5, 0, 64
28*1424dfb3Schristos	dext	$4, $5, 1, 1
29*1424dfb3Schristos	dext	$4, $5, 1, 2
30*1424dfb3Schristos	dext	$4, $5, 1, 63
31*1424dfb3Schristos	dext	$4, $5, 1, 64		# error (size)
32*1424dfb3Schristos	dext	$4, $5, 63, 1
33*1424dfb3Schristos	dext	$4, $5, 63, 2		# error (size)
34*1424dfb3Schristos	dext	$4, $5, 63, 63		# error (size)
35*1424dfb3Schristos	dext	$4, $5, 63, 64		# error (size)
36*1424dfb3Schristos
37*1424dfb3Schristos      # dextm instruction position/size checks
38*1424dfb3Schristos
39*1424dfb3Schristos	# constraint: 0 <= pos < 32
40*1424dfb3Schristos	dextm	$4, $5, -1, 33		# error (position)
41*1424dfb3Schristos	dextm	$4, $5, 0, 33
42*1424dfb3Schristos	dextm	$4, $5, 31, 33
43*1424dfb3Schristos	dextm	$4, $5, 32, 33		# error (position)
44*1424dfb3Schristos
45*1424dfb3Schristos	# constraint: 32 < size <= 64
46*1424dfb3Schristos	dextm	$4, $5, 0, 32		# error (size)
47*1424dfb3Schristos	dextm	$4, $5, 0, 33
48*1424dfb3Schristos	dextm	$4, $5, 0, 64
49*1424dfb3Schristos	dextm	$4, $5, 0, 65		# error (size)
50*1424dfb3Schristos
51*1424dfb3Schristos	# constraint: 32 < (pos+size) <= 64
52*1424dfb3Schristos	dextm	$4, $5, 0, 33
53*1424dfb3Schristos	dextm	$4, $5, 0, 34
54*1424dfb3Schristos	dextm	$4, $5, 0, 63
55*1424dfb3Schristos	dextm	$4, $5, 0, 64
56*1424dfb3Schristos	dextm	$4, $5, 1, 33
57*1424dfb3Schristos	dextm	$4, $5, 1, 34
58*1424dfb3Schristos	dextm	$4, $5, 1, 63
59*1424dfb3Schristos	dextm	$4, $5, 1, 64		# error (size)
60*1424dfb3Schristos	dextm	$4, $5, 31, 33
61*1424dfb3Schristos	dextm	$4, $5, 31, 34		# error (size)
62*1424dfb3Schristos	dextm	$4, $5, 31, 63		# error (size)
63*1424dfb3Schristos	dextm	$4, $5, 31, 64		# error (size)
64*1424dfb3Schristos
65*1424dfb3Schristos      # dextu instruction position/size checks
66*1424dfb3Schristos
67*1424dfb3Schristos	# constraint: 32 <= pos < 64
68*1424dfb3Schristos	dextu	$4, $5, 31, 1		# error (position)
69*1424dfb3Schristos	dextu	$4, $5, 32, 1
70*1424dfb3Schristos	dextu	$4, $5, 63, 1
71*1424dfb3Schristos	dextu	$4, $5, 64, 1		# error (position)
72*1424dfb3Schristos
73*1424dfb3Schristos	# constraint: 0 < size <= 32
74*1424dfb3Schristos	dextu	$4, $5, 32, 0		# error (size)
75*1424dfb3Schristos	dextu	$4, $5, 32, 1
76*1424dfb3Schristos	dextu	$4, $5, 32, 32
77*1424dfb3Schristos	dextu	$4, $5, 32, 33		# error (size)
78*1424dfb3Schristos
79*1424dfb3Schristos	# constraint: 32 < (pos+size) <= 64
80*1424dfb3Schristos	dextu	$4, $5, 32, 1
81*1424dfb3Schristos	dextu	$4, $5, 32, 2
82*1424dfb3Schristos	dextu	$4, $5, 32, 31
83*1424dfb3Schristos	dextu	$4, $5, 32, 32
84*1424dfb3Schristos	dextu	$4, $5, 33, 1
85*1424dfb3Schristos	dextu	$4, $5, 33, 2
86*1424dfb3Schristos	dextu	$4, $5, 33, 31
87*1424dfb3Schristos	dextu	$4, $5, 33, 32		# error (size)
88*1424dfb3Schristos	dextu	$4, $5, 63, 1
89*1424dfb3Schristos	dextu	$4, $5, 63, 2		# error (size)
90*1424dfb3Schristos	dextu	$4, $5, 63, 31		# error (size)
91*1424dfb3Schristos	dextu	$4, $5, 63, 32		# error (size)
92*1424dfb3Schristos
93*1424dfb3Schristos      # dins macro position/size checks
94*1424dfb3Schristos
95*1424dfb3Schristos	# constraint: 0 <= pos < 64
96*1424dfb3Schristos	dins	$4, $5, -1, 1		# error (position)
97*1424dfb3Schristos	dins	$4, $5, 0, 1
98*1424dfb3Schristos	dins	$4, $5, 63, 1
99*1424dfb3Schristos	dins	$4, $5, 64, 1		# error (position)
100*1424dfb3Schristos
101*1424dfb3Schristos	# constraint: 0 < size <= 64
102*1424dfb3Schristos	dins	$4, $5, 0, 0		# error (size)
103*1424dfb3Schristos	dins	$4, $5, 0, 1
104*1424dfb3Schristos	dins	$4, $5, 0, 64
105*1424dfb3Schristos	dins	$4, $5, 0, 65		# error (size)
106*1424dfb3Schristos
107*1424dfb3Schristos	# constraint: 0 < (pos+size) <= 64
108*1424dfb3Schristos	dins	$4, $5, 0, 1
109*1424dfb3Schristos	dins	$4, $5, 0, 2
110*1424dfb3Schristos	dins	$4, $5, 0, 63
111*1424dfb3Schristos	dins	$4, $5, 0, 64
112*1424dfb3Schristos	dins	$4, $5, 1, 1
113*1424dfb3Schristos	dins	$4, $5, 1, 2
114*1424dfb3Schristos	dins	$4, $5, 1, 63
115*1424dfb3Schristos	dins	$4, $5, 1, 64		# error (size)
116*1424dfb3Schristos	dins	$4, $5, 63, 1
117*1424dfb3Schristos	dins	$4, $5, 63, 2		# error (size)
118*1424dfb3Schristos	dins	$4, $5, 63, 63		# error (size)
119*1424dfb3Schristos	dins	$4, $5, 63, 64		# error (size)
120*1424dfb3Schristos
121*1424dfb3Schristos      # dinsm instruction position/size checks
122*1424dfb3Schristos
123*1424dfb3Schristos	# constraint: 0 <= pos < 32
124*1424dfb3Schristos	dinsm	$4, $5, -1, 33		# error (position)
125*1424dfb3Schristos	dinsm	$4, $5, 0, 33
126*1424dfb3Schristos	dinsm	$4, $5, 31, 33
127*1424dfb3Schristos	dinsm	$4, $5, 32, 33		# error (position)
128*1424dfb3Schristos
129*1424dfb3Schristos	# constraint: 2 <= size <= 64
130*1424dfb3Schristos	dinsm	$4, $5, 31, 1		# error (size)
131*1424dfb3Schristos	dinsm	$4, $5, 31, 2
132*1424dfb3Schristos	dinsm	$4, $5, 0, 64
133*1424dfb3Schristos	dinsm	$4, $5, 0, 65		# error (size)
134*1424dfb3Schristos
135*1424dfb3Schristos	# constraint: 32 < (pos+size) <= 64
136*1424dfb3Schristos	dinsm	$4, $5, 0, 2		# error (size)
137*1424dfb3Schristos	dinsm	$4, $5, 0, 3		# error (size)
138*1424dfb3Schristos	dinsm	$4, $5, 0, 63
139*1424dfb3Schristos	dinsm	$4, $5, 0, 64
140*1424dfb3Schristos	dinsm	$4, $5, 1, 2		# error (size)
141*1424dfb3Schristos	dinsm	$4, $5, 1, 3		# error (size)
142*1424dfb3Schristos	dinsm	$4, $5, 1, 63
143*1424dfb3Schristos	dinsm	$4, $5, 1, 64		# error (size)
144*1424dfb3Schristos	dinsm	$4, $5, 30, 2		# error (size)
145*1424dfb3Schristos	dinsm	$4, $5, 30, 3
146*1424dfb3Schristos	dinsm	$4, $5, 30, 63		# error (size)
147*1424dfb3Schristos	dinsm	$4, $5, 30, 64		# error (size)
148*1424dfb3Schristos	dinsm	$4, $5, 31, 2
149*1424dfb3Schristos	dinsm	$4, $5, 31, 3
150*1424dfb3Schristos	dinsm	$4, $5, 31, 63		# error (size)
151*1424dfb3Schristos	dinsm	$4, $5, 31, 64		# error (size)
152*1424dfb3Schristos
153*1424dfb3Schristos      # dinsu instruction position/size checks
154*1424dfb3Schristos
155*1424dfb3Schristos	# constraint: 32 <= pos < 64
156*1424dfb3Schristos	dinsu	$4, $5, 31, 1		# error (position)
157*1424dfb3Schristos	dinsu	$4, $5, 32, 1
158*1424dfb3Schristos	dinsu	$4, $5, 63, 1
159*1424dfb3Schristos	dinsu	$4, $5, 64, 1		# error (position)
160*1424dfb3Schristos
161*1424dfb3Schristos	# constraint: 1 <= size <= 32
162*1424dfb3Schristos	dinsu	$4, $5, 32, 0		# error (size)
163*1424dfb3Schristos	dinsu	$4, $5, 32, 1
164*1424dfb3Schristos	dinsu	$4, $5, 32, 32
165*1424dfb3Schristos	dinsu	$4, $5, 32, 33		# error (size)
166*1424dfb3Schristos
167*1424dfb3Schristos	# constraint: 32 < (pos+size) <= 64
168*1424dfb3Schristos	dinsu	$4, $5, 32, 1
169*1424dfb3Schristos	dinsu	$4, $5, 32, 2
170*1424dfb3Schristos	dinsu	$4, $5, 32, 31
171*1424dfb3Schristos	dinsu	$4, $5, 32, 32
172*1424dfb3Schristos	dinsu	$4, $5, 33, 1
173*1424dfb3Schristos	dinsu	$4, $5, 33, 2
174*1424dfb3Schristos	dinsu	$4, $5, 33, 31
175*1424dfb3Schristos	dinsu	$4, $5, 33, 32		# error (size)
176*1424dfb3Schristos	dinsu	$4, $5, 62, 1
177*1424dfb3Schristos	dinsu	$4, $5, 62, 2
178*1424dfb3Schristos	dinsu	$4, $5, 62, 31		# error (size)
179*1424dfb3Schristos	dinsu	$4, $5, 62, 32		# error (size)
180*1424dfb3Schristos	dinsu	$4, $5, 63, 1
181*1424dfb3Schristos	dinsu	$4, $5, 63, 2		# error (size)
182*1424dfb3Schristos	dinsu	$4, $5, 63, 31		# error (size)
183*1424dfb3Schristos	dinsu	$4, $5, 63, 32		# error (size)
184*1424dfb3Schristos
185*1424dfb3Schristos# Force at least 8 (non-delay-slot) zero bytes, to make 'objdump' print ...
186*1424dfb3Schristos	.space  8
187