@@ -93,6 +93,48 @@ def imm64 : PatLeaf<(i64 imm), [{
93
93
return true ;
94
94
}]>;
95
95
96
+ def ADD : AForm_DAG<0x03 , 0x0b , (ops GR:$dst, GR:$src1, GR:$src2),
97
+ " add $dst = $src1, $src2;;" ,
98
+ [(set GR:$dst, (add GR:$src1, GR:$src2))]>;
99
+
100
+ def ADD1 : AForm_DAG<0x03 , 0x0b , (ops GR:$dst, GR:$src1, GR:$src2),
101
+ " add $dst = $src1, $src2, 1;;" ,
102
+ [(set GR:$dst, (add (add GR:$src1, GR:$src2), 1 ))]>;
103
+
104
+ def ADDS : AForm_DAG<0x03 , 0x0b , (ops GR:$dst, GR:$src1, s14imm:$imm),
105
+ " adds $dst = $imm, $src1;;" ,
106
+ [(set GR:$dst, (add GR:$src1, immSExt14:$imm))]>;
107
+
108
+ def MOVL : AForm_DAG<0x03 , 0x0b , (ops GR:$dst, s64imm:$imm),
109
+ " movl $dst = $imm;;" ,
110
+ [(set GR:$dst, imm64:$imm)]>;
111
+
112
+ def ADDL_GA : AForm_DAG<0x03 , 0x0b , (ops GR:$dst, GR:$src1, globaladdress:$imm),
113
+ " addl $dst = $imm, $src1;;" ,
114
+ []>;
115
+
116
+ def SUB : AForm_DAG<0x03 , 0x0b , (ops GR:$dst, GR:$src1, GR:$src2),
117
+ " sub $dst = $src1, $src2;;" ,
118
+ [(set GR:$dst, (sub GR:$src1, GR:$src2))]>;
119
+
120
+ def SUB1 : AForm_DAG<0x03 , 0x0b , (ops GR:$dst, GR:$src1, GR:$src2),
121
+ " sub $dst = $src1, $src2, 1;;" ,
122
+ [(set GR:$dst, (add (sub GR: $src1, GR:$src2), -1 ))]>;
123
+
124
+ let isTwoAddress = 1 in {
125
+ def TPCADDIMM22 : AForm<0x03 , 0x0b ,
126
+ (ops GR:$dst, GR:$src1, s22imm:$imm, PR:$qp),
127
+ " ($qp) add $dst = $imm, $dst;;" >;
128
+ def TPCMPIMM8NE : AForm<0x03 , 0x0b ,
129
+ (ops PR:$dst, PR:$src1, s22imm:$imm, GR:$src2, PR:$qp),
130
+ " ($qp) cmp.ne $dst , p0 = $imm, $src2;;" >;
131
+ }
132
+
133
+ // zero extend a bool (predicate reg) into an integer reg
134
+ def ZXTb : Pat<(zext PR:$src),
135
+ (TPCADDIMM22 (ADDS r0, 0 ), 1 , PR:$src)>;
136
+
137
+ // normal sign/zero-extends
96
138
def SXT1 : AForm_DAG<0x03 , 0x0b , (ops GR:$dst, GR:$src), " sxt1 $dst = $src;;" ,
97
139
[(set GR:$dst, (sext_inreg GR:$src, i8 ))]>;
98
140
def ZXT1 : AForm_DAG<0x03 , 0x0b , (ops GR:$dst, GR:$src), " zxt1 $dst = $src;;" ,
@@ -137,34 +179,6 @@ def MIX4R : AForm_DAG<0x03, 0x0b, (ops GR:$dst, GR:$src1, GR:$src2),
137
179
[(set GR:$dst, (or (and (shl GR:$src1, 32 ), isMIX4Rable),
138
180
(and GR:$src2, isMIX4Rable)))]>;
139
181
140
- def ADD : AForm_DAG<0x03 , 0x0b , (ops GR:$dst, GR:$src1, GR:$src2),
141
- " add $dst = $src1, $src2;;" ,
142
- [(set GR:$dst, (add GR:$src1, GR:$src2))]>;
143
-
144
- def ADD1 : AForm_DAG<0x03 , 0x0b , (ops GR:$dst, GR:$src1, GR:$src2),
145
- " add $dst = $src1, $src2, 1;;" ,
146
- [(set GR:$dst, (add (add GR:$src1, GR:$src2), 1 ))]>;
147
-
148
- def ADDS : AForm_DAG<0x03 , 0x0b , (ops GR:$dst, GR:$src1, s14imm:$imm),
149
- " adds $dst = $imm, $src1;;" ,
150
- [(set GR:$dst, (add GR:$src1, immSExt14:$imm))]>;
151
-
152
- def MOVL : AForm_DAG<0x03 , 0x0b , (ops GR:$dst, s64imm:$imm),
153
- " movl $dst = $imm;;" ,
154
- [(set GR:$dst, imm64:$imm)]>;
155
-
156
- def ADDL_GA : AForm_DAG<0x03 , 0x0b , (ops GR:$dst, GR:$src1, globaladdress:$imm),
157
- " addl $dst = $imm, $src1;;" ,
158
- []>;
159
-
160
- def SUB : AForm_DAG<0x03 , 0x0b , (ops GR:$dst, GR:$src1, GR:$src2),
161
- " sub $dst = $src1, $src2;;" ,
162
- [(set GR:$dst, (sub GR:$src1, GR:$src2))]>;
163
-
164
- def SUB1 : AForm_DAG<0x03 , 0x0b , (ops GR:$dst, GR:$src1, GR:$src2),
165
- " sub $dst = $src1, $src2, 1;;" ,
166
- [(set GR:$dst, (add (sub GR: $src1, GR:$src2), -1 ))]>;
167
-
168
182
def GETFSIGD : AForm_DAG<0x03 , 0x0b , (ops GR:$dst, FP:$src),
169
183
" getf.sig $dst = $src;;" ,
170
184
[]>;
@@ -424,15 +438,6 @@ def ADDIMM22 : AForm<0x03, 0x0b, (ops GR:$dst, GR:$src1, s22imm:$imm),
424
438
def CADDIMM22 : AForm<0x03 , 0x0b , (ops GR:$dst, GR:$src1, s22imm:$imm, PR:$qp),
425
439
" ($qp) add $dst = $imm, $src1;;" >;
426
440
427
- let isTwoAddress = 1 in {
428
- def TPCADDIMM22 : AForm<0x03 , 0x0b ,
429
- (ops GR:$dst, GR:$src1, s22imm:$imm, PR:$qp),
430
- " ($qp) add $dst = $imm, $dst;;" >;
431
- def TPCMPIMM8NE : AForm<0x03 , 0x0b ,
432
- (ops PR:$dst, PR:$src1, s22imm:$imm, GR:$src2, PR:$qp),
433
- " ($qp) cmp.ne $dst , p0 = $imm, $src2;;" >;
434
- }
435
-
436
441
def SUBIMM8 : AForm<0x03 , 0x0b , (ops GR:$dst, s8imm:$imm, GR:$src2),
437
442
" sub $dst = $imm, $src2;;" >;
438
443
0 commit comments