Skip to content

Commit a284b66

Browse files
add zeroextend predicate->integer
llvm-svn: 24131
1 parent 7432cee commit a284b66

File tree

1 file changed

+42
-37
lines changed

1 file changed

+42
-37
lines changed

llvm/lib/Target/IA64/IA64InstrInfo.td

Lines changed: 42 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,48 @@ def imm64 : PatLeaf<(i64 imm), [{
9393
return true;
9494
}]>;
9595

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
96138
def SXT1 : AForm_DAG<0x03, 0x0b, (ops GR:$dst, GR:$src), "sxt1 $dst = $src;;",
97139
[(set GR:$dst, (sext_inreg GR:$src, i8))]>;
98140
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),
137179
[(set GR:$dst, (or (and (shl GR:$src1, 32), isMIX4Rable),
138180
(and GR:$src2, isMIX4Rable)))]>;
139181

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-
168182
def GETFSIGD : AForm_DAG<0x03, 0x0b, (ops GR:$dst, FP:$src),
169183
"getf.sig $dst = $src;;",
170184
[]>;
@@ -424,15 +438,6 @@ def ADDIMM22 : AForm<0x03, 0x0b, (ops GR:$dst, GR:$src1, s22imm:$imm),
424438
def CADDIMM22 : AForm<0x03, 0x0b, (ops GR:$dst, GR:$src1, s22imm:$imm, PR:$qp),
425439
"($qp) add $dst = $imm, $src1;;">;
426440

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-
436441
def SUBIMM8 : AForm<0x03, 0x0b, (ops GR:$dst, s8imm:$imm, GR:$src2),
437442
"sub $dst = $imm, $src2;;">;
438443

0 commit comments

Comments
 (0)