[llvm-commits] CVS: llvm/lib/Target/X86/X86InstrInfo.td
Evan Cheng
evan.cheng at apple.com
Sun Jan 15 02:05:33 PST 2006
Changes in directory llvm/lib/Target/X86:
X86InstrInfo.td updated: 1.205 -> 1.206
---
Log message:
Added patterns for 8-bit multiply
---
Diffs of the changes: (+11 -2)
X86InstrInfo.td | 13 +++++++++++--
1 files changed, 11 insertions(+), 2 deletions(-)
Index: llvm/lib/Target/X86/X86InstrInfo.td
diff -u llvm/lib/Target/X86/X86InstrInfo.td:1.205 llvm/lib/Target/X86/X86InstrInfo.td:1.206
--- llvm/lib/Target/X86/X86InstrInfo.td:1.205 Fri Jan 13 21:14:10 2006
+++ llvm/lib/Target/X86/X86InstrInfo.td Sun Jan 15 04:05:20 2006
@@ -682,14 +682,23 @@
//
// Extra precision multiplication
-def MUL8r : I<0xF6, MRM4r, (ops R8:$src), "mul{b} $src", []>,
+def MUL8r : I<0xF6, MRM4r, (ops R8:$src), "mul{b} $src",
+ // FIXME: Used for 8-bit mul, ignore result upper 8 bits.
+ // This probably ought to be moved to a def : Pat<> if the
+ // syntax can be accepted.
+ [(set AL, (mul AL, R8:$src))]>,
Imp<[AL],[AX]>; // AL,AH = AL*R8
def MUL16r : I<0xF7, MRM4r, (ops R16:$src), "mul{w} $src", []>,
Imp<[AX],[AX,DX]>, OpSize; // AX,DX = AX*R16
def MUL32r : I<0xF7, MRM4r, (ops R32:$src), "mul{l} $src", []>,
Imp<[EAX],[EAX,EDX]>; // EAX,EDX = EAX*R32
def MUL8m : I<0xF6, MRM4m, (ops i8mem :$src),
- "mul{b} $src", []>, Imp<[AL],[AX]>; // AL,AH = AL*[mem8]
+ "mul{b} $src",
+ // FIXME: Used for 8-bit mul, ignore result upper 8 bits.
+ // This probably ought to be moved to a def : Pat<> if the
+ // syntax can be accepted.
+ [(set AL, (mul AL, (loadi8 addr:$src)))]>,
+ Imp<[AL],[AX]>; // AL,AH = AL*[mem8]
def MUL16m : I<0xF7, MRM4m, (ops i16mem:$src),
"mul{w} $src", []>, Imp<[AX],[AX,DX]>,
OpSize; // AX,DX = AX*[mem16]
More information about the llvm-commits
mailing list