summaryrefslogtreecommitdiff
path: root/gas/testsuite/gas/ia64/opc-a.pl
blob: 8b5e12da453d9c156969f81d7a8cd8c7547af902 (plain)
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
$AT = '@';
print <<END
.text
	.type _start,${AT}function
_start:

	add r101 = r102, r103
(p1)	add r104 = r105, r106
	add r107 = r108, r109, 1
(p2)	add r110 = r111, r112, 1

	adds r20 = 0, r10
(p1)	adds r21 = 1, r10
	adds r22 = -1, r10
	adds r23 = -0x2000, r10
(p2)	adds r24 = 0x1FFF, r10

	addl r30 = 0, r1
	addl r31 = 1, r1
(p1)	addl r32 = -1, r1
	addl r33 = -0x2000, r1
	addl r34 = 0x1FFF, r1
	addl r35 = -0x200000, r1
	addl r36 = 0x1FFFFF, r1

	add r11 = 0, r10
	add r12 = 0x1234, r10
	add r13 = 0x1234, r1
	add r14 = 0x12345, r1

	addp4 r20 = r3, r10
(p1)	addp4 r21 = 1, r10
	addp4 r22 = -1, r10

	sub r101 = r102, r103
(p2)	sub r110 = r111, r112, 1
	sub r120 = 0, r3
	sub r121 = 1, r3
	sub r122 = -1, r3
	sub r123 = -128, r3
	sub r124 = 127, r3

	and r8 = r9, r10
(p3)	and r11 = -128, r12

(p4)	or r8 = r9, r10
	or r11 = -128, r12

	xor r8 = r9, r10
	xor r11 = -128, r12

	andcm r8 = r9, r10
	andcm r11 = -128, r12

	shladd r8 = r30, 1, r31
	shladd r9 = r30, 2, r31
	shladd r10 = r30, 3, r31
	shladd r11 = r30, 4, r31

	shladdp4 r8 = r30, 1, r31
	shladdp4 r9 = r30, 2, r31
	shladdp4 r10 = r30, 3, r31
	shladdp4 r11 = r30, 4, r31

	padd1 r10 = r30, r31
	padd1.sss r11 = r30, r31
	padd1.uus r12 = r30, r31
	padd1.uuu r13 = r30, r31
	padd2 r14 = r30, r31
	padd2.sss r15 = r30, r31
	padd2.uus r16 = r30, r31
	padd2.uuu r17 = r30, r31
	padd4 r18 = r30, r31

	psub1 r10 = r30, r31
	psub1.sss r11 = r30, r31
	psub1.uus r12 = r30, r31
	psub1.uuu r13 = r30, r31
	psub2 r14 = r30, r31
	psub2.sss r15 = r30, r31
	psub2.uus r16 = r30, r31
	psub2.uuu r17 = r30, r31
	psub4 r18 = r30, r31

	pavg1 r10 = r30, r31
	pavg1.raz r10 = r30, r31
	pavg2 r10 = r30, r31
	pavg2.raz r10 = r30, r31

	pavgsub1 r10 = r30, r31
	pavgsub2 r10 = r30, r31

	pcmp1.eq r10 = r30, r31
	pcmp2.eq r10 = r30, r31
	pcmp4.eq r10 = r30, r31
	pcmp1.gt r10 = r30, r31
	pcmp2.gt r10 = r30, r31
	pcmp4.gt r10 = r30, r31

	pshladd2 r10 = r11, 1, r12
	pshladd2 r10 = r11, 3, r12

	pshradd2 r10 = r11, 1, r12
	pshradd2 r10 = r11, 2, r12

END
;

@cmp2 = ( ".eq", ".ne" );
@cmp6 = ( @cmp2, ".lt", ".le", ".gt", ".ge" );
@cmp10 = ( @cmp6, ".ltu", ".leu", ".gtu", ".geu" );

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

foreach $C ( "cmp", "cmp4" ) {
  foreach $u ( "", ".unc" ) {
    foreach $i (@cmp10) {
      print "\t${C}${i}${u} p2, p3 = r3, r4\n";
      print "\t${C}${i}${u} p2, p3 = 3, r4\n";
    }
    print "\n";
  }
  
  foreach $i (@cmp2) {
    foreach $c (@ctype) {
      print "\t${C}${i}${c} p2, p3 = r3, r4\n";
      print "\t${C}${i}${c} p2, p3 = 3, r4\n";
    }
    print "\n";
  }
      
  foreach $i (@cmp6) {
    foreach $c (@ctype) {
      print "\t${C}${i}${c} p2, p3 = r0, r4\n";
      print "\t${C}${i}${c} p2, p3 = r4, r0\n";
    }
    print "\n";
  }
}

# Pad to a bundle boundary with known nops.
print "nop.i 0; nop.i 0\n";