File: opc-i.pl

package info (click to toggle)
binutils 2.31.1-11
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 307,644 kB
  • sloc: ansic: 1,161,122; asm: 638,494; cpp: 128,815; exp: 68,557; makefile: 55,816; sh: 22,360; yacc: 14,238; lisp: 13,272; perl: 2,111; ada: 1,681; lex: 1,652; pascal: 1,446; cs: 879; sed: 195; python: 154; xml: 95; awk: 25
file content (189 lines) | stat: -rw-r--r-- 3,060 bytes parent folder | download | duplicates (46)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
$AT = '@';
print <<END
.text
	.type _start,${AT}function
_start:

	pmpyshr2 r4 = r5, r6, 0
	pmpyshr2.u r4 = r5, r6, 16

	pmpy2.r r4 = r5, r6
	pmpy2.l r4 = r5, r6

	mix1.r r4 = r5, r6
	mix2.r r4 = r5, r6
	mix4.r r4 = r5, r6
	mix1.l r4 = r5, r6
	mix2.l r4 = r5, r6
	mix4.l r4 = r5, r6

	pack2.uss r4 = r5, r6
	pack2.sss r4 = r5, r6
	pack4.sss r4 = r5, r6

	unpack1.h r4 = r5, r6
	unpack2.h r4 = r5, r6
	unpack4.h r4 = r5, r6
	unpack1.l r4 = r5, r6
	unpack2.l r4 = r5, r6
	unpack4.l r4 = r5, r6

	pmin1.u r4 = r5, r6
	pmax1.u r4 = r5, r6

	pmin2 r4 = r5, r6
	pmax2 r4 = r5, r6

	psad1 r4 = r5, r6

	mux1 r4 = r5, ${AT}rev
	mux1 r4 = r5, ${AT}mix
	mux1 r4 = r5, ${AT}shuf
	mux1 r4 = r5, ${AT}alt
	mux1 r4 = r5, ${AT}brcst

	mux2 r4 = r5, 0
	mux2 r4 = r5, 0xff
	mux2 r4 = r5, 0xaa

	pshr2 r4 = r5, r6
	pshr2 r4 = r5, 0
	pshr2 r4 = r5, 8
	pshr2 r4 = r5, 31

	pshr4 r4 = r5, r6
	pshr4 r4 = r5, 0
	pshr4 r4 = r5, 8
	pshr4 r4 = r5, 31

	pshr2.u r4 = r5, r6
	pshr2.u r4 = r5, 0
	pshr2.u r4 = r5, 8
	pshr2.u r4 = r5, 31

	pshr4.u r4 = r5, r6
	pshr4.u r4 = r5, 0
	pshr4.u r4 = r5, 8
	pshr4.u r4 = r5, 31

	shr r4 = r5, r6
	shr.u r4 = r5, r6

	pshl2 r4 = r5, r6
	pshl2 r4 = r5, 0
	pshl2 r4 = r5, 8
	pshl2 r4 = r5, 31

	pshl4 r4 = r5, r6
	pshl4 r4 = r5, 0
	pshl4 r4 = r5, 8
	pshl4 r4 = r5, 31

	shl r4 = r5, r6

	popcnt r4 = r5

	shrp r4 = r5, r6, 0
	shrp r4 = r5, r6, 12
	shrp r4 = r5, r6, 63

	extr r4 = r5, 0, 16
	extr r4 = r5, 0, 63
	extr r4 = r5, 10, 40
	
	extr.u r4 = r5, 0, 16
	extr.u r4 = r5, 0, 63
	extr.u r4 = r5, 10, 40
	
	dep.z r4 = r5, 0, 16
	dep.z r4 = r5, 0, 63
	dep.z r4 = r5, 10, 40
	dep.z r4 = 0, 0, 16
	dep.z r4 = 127, 0, 63
	dep.z r4 = -128, 5, 50
	dep.z r4 = 0x55, 10, 40

	dep r4 = 0, r5, 0, 16
	dep r4 = -1, r5, 0, 63
// Insert padding NOPs to force the same template selection as IAS.
	nop.m 0
	nop.f 0
	dep r4 = r5, r6, 10, 7

	movl r4 = 0
	movl r4 = 0xffffffffffffffff
	movl r4 = 0x1234567890abcdef

	break.i 0
	break.i 0x1fffff

	nop.i 0
	nop.i 0x1fffff

	chk.s.i r4, _start

	mov r4 = b0
	mov b0 = r4

	mov pr = r4, 0
	mov pr = r4, 0x1234
	mov pr = r4, 0x1ffff

	mov pr.rot = 0
// ??? This was originally 0x3ffffff, but that generates an assembler warning
// that the testsuite infrastructure isn't set up to ignore.
	mov pr.rot = 0x3ff0000
	mov pr.rot = -0x4000000

	zxt1 r4 = r5
	zxt2 r4 = r5
	zxt4 r4 = r5

	sxt1 r4 = r5
	sxt2 r4 = r5
	sxt4 r4 = r5

	czx1.l r4 = r5
	czx2.l r4 = r5
	czx1.r r4 = r5
	czx2.r r4 = r5

END
;

@ctype = ( "", ".unc", ".and", ".or", ".or.andcm", ".orcm",
	   ".andcm", ".and.orcm" );

$i = 0;
foreach $z ( ".z", ".nz" ) {
  foreach $c (@ctype) {
    print "\ttbit${z}${c} p2, p3 = r4, $i\n";
    ++$i;
  }
}
print "\n";

foreach $z ( ".z", ".nz" ) {
  foreach $c (@ctype) {
    print "\ttnat${z}${c} p2, p3 = r4\n";
  }
}
print "\n";


@mwh = ( "", ".sptk", ".dptk" );
@ih = ( "", ".imp" );

$LAB = 1;

foreach $b ("", ".ret") {
  foreach $w (@mwh) {
    foreach $i (@ih) {
      print "\tmov${b}${w}${i} b3 = r4, .L${LAB}\n";
    }
    print ".space 240\n";
    print ".L${LAB}:\n";
    ++$LAB;
  }
  print "\n";
}