[llvm-commits] CVS: llvm/lib/Target/PowerPC/PPCInstr64Bit.td

2007-05-17 Thread Chris Lattner


Changes in directory llvm/lib/Target/PowerPC:

PPCInstr64Bit.td updated: 1.44 - 1.45
---
Log message:

add support for 128-bit add/sub on ppc64


---
Diffs of the changes:  (+34 -0)

 PPCInstr64Bit.td |   34 ++
 1 files changed, 34 insertions(+)


Index: llvm/lib/Target/PowerPC/PPCInstr64Bit.td
diff -u llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.44 
llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.45
--- llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.44   Tue Apr  3 07:35:28 2007
+++ llvm/lib/Target/PowerPC/PPCInstr64Bit.tdThu May 17 01:52:46 2007
@@ -212,6 +212,15 @@
 def ADD8  : XOForm_131, 266, 0, (ops G8RC:$rT, G8RC:$rA, G8RC:$rB),
  add $rT, $rA, $rB, IntGeneral,
  [(set G8RC:$rT, (add G8RC:$rA, G8RC:$rB))];
+ 
+def ADDC8 : XOForm_131, 10, 0, (ops G8RC:$rT, G8RC:$rA, G8RC:$rB),
+ addc $rT, $rA, $rB, IntGeneral,
+ [(set G8RC:$rT, (addc G8RC:$rA, G8RC:$rB))],
+ PPC970_DGroup_Cracked;
+def ADDE8 : XOForm_131, 138, 0, (ops G8RC:$rT, G8RC:$rA, G8RC:$rB),
+ adde $rT, $rA, $rB, IntGeneral,
+ [(set G8RC:$rT, (adde G8RC:$rA, G8RC:$rB))];
+ 
 def ADDI8  : DForm_214, (ops G8RC:$rD, G8RC:$rA, s16imm64:$imm),
  addi $rD, $rA, $imm, IntGeneral,
  [(set G8RC:$rD, (add G8RC:$rA, immSExt16:$imm))];
@@ -226,6 +235,31 @@
  subf $rT, $rA, $rB, IntGeneral,
  [(set G8RC:$rT, (sub G8RC:$rB, G8RC:$rA))];
 
+def SUBFC8 : XOForm_131, 8, 0, (ops G8RC:$rT, G8RC:$rA, G8RC:$rB),
+  subfc $rT, $rA, $rB, IntGeneral,
+  [(set G8RC:$rT, (subc G8RC:$rB, G8RC:$rA))],
+  PPC970_DGroup_Cracked;
+
+def SUBFE8 : XOForm_131, 136, 0, (ops G8RC:$rT, G8RC:$rA, G8RC:$rB),
+  subfe $rT, $rA, $rB, IntGeneral,
+  [(set G8RC:$rT, (sube G8RC:$rB, G8RC:$rA))];
+def ADDME8  : XOForm_331, 234, 0, (ops G8RC:$rT, G8RC:$rA),
+   addme $rT, $rA, IntGeneral,
+   [(set G8RC:$rT, (adde G8RC:$rA, immAllOnes))];
+def ADDZE8  : XOForm_331, 202, 0, (ops G8RC:$rT, G8RC:$rA),
+   addze $rT, $rA, IntGeneral,
+   [(set G8RC:$rT, (adde G8RC:$rA, 0))];
+def NEG8: XOForm_331, 104, 0, (ops G8RC:$rT, G8RC:$rA),
+   neg $rT, $rA, IntGeneral,
+   [(set G8RC:$rT, (ineg G8RC:$rA))];
+def SUBFME8 : XOForm_331, 232, 0, (ops G8RC:$rT, G8RC:$rA),
+   subfme $rT, $rA, IntGeneral,
+   [(set G8RC:$rT, (sube immAllOnes, G8RC:$rA))];
+def SUBFZE8 : XOForm_331, 200, 0, (ops G8RC:$rT, G8RC:$rA),
+   subfze $rT, $rA, IntGeneral,
+   [(set G8RC:$rT, (sube 0, G8RC:$rA))];
+
+
 
 def MULHD : XOForm_131, 73, 0, (ops G8RC:$rT, G8RC:$rA, G8RC:$rB),
  mulhd $rT, $rA, $rB, IntMulHW,



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/lib/Target/PowerPC/PPCInstr64Bit.td

2007-03-24 Thread Chris Lattner


Changes in directory llvm/lib/Target/PowerPC:

PPCInstr64Bit.td updated: 1.41 - 1.42
---
Log message:

Fix CodeGen/PowerPC/2007-03-24-cntlzd.ll


---
Diffs of the changes:  (+4 -1)

 PPCInstr64Bit.td |5 -
 1 files changed, 4 insertions(+), 1 deletion(-)


Index: llvm/lib/Target/PowerPC/PPCInstr64Bit.td
diff -u llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.41 
llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.42
--- llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.41   Tue Feb 27 07:01:19 2007
+++ llvm/lib/Target/PowerPC/PPCInstr64Bit.tdSat Mar 24 23:44:03 2007
@@ -273,7 +273,10 @@
 def SRADI  : XSForm_131, 413, (ops G8RC:$rA, G8RC:$rS, u6imm:$SH),
   sradi $rA, $rS, $SH, IntRotateD,
   [(set G8RC:$rA, (sra G8RC:$rS, (i32 imm:$SH)))], 
isPPC64;
-  
+def CNTLZD : XForm_1131, 58, (ops G8RC:$rA, G8RC:$rS),
+  cntlzd $rA, $rS, IntGeneral,
+  [(set G8RC:$rA, (ctlz G8RC:$rS))];
+
 def DIVD  : XOForm_131, 489, 0, (ops G8RC:$rT, G8RC:$rA, G8RC:$rB),
  divd $rT, $rA, $rB, IntDivD,
  [(set G8RC:$rT, (sdiv G8RC:$rA, G8RC:$rB))], isPPC64,



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/lib/Target/PowerPC/PPCInstr64Bit.td PPCInstrInfo.td

2007-02-25 Thread Chris Lattner


Changes in directory llvm/lib/Target/PowerPC:

PPCInstr64Bit.td updated: 1.39 - 1.40
PPCInstrInfo.td updated: 1.273 - 1.274
---
Log message:

one important bugfix: PPC32 didn't have both elf and macho support for
external symbols and global addresses.  Add the missing ones.

one important workaround: PPCISD::CALL is matched by both PPCcall_ELF
and PPCcall_Macho, disable the _ELF patterns for now.


---
Diffs of the changes:  (+10 -6)

 PPCInstr64Bit.td |6 +++---
 PPCInstrInfo.td  |   10 +++---
 2 files changed, 10 insertions(+), 6 deletions(-)


Index: llvm/lib/Target/PowerPC/PPCInstr64Bit.td
diff -u llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.39 
llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.40
--- llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.39   Sat Feb 24 23:34:32 2007
+++ llvm/lib/Target/PowerPC/PPCInstr64Bit.tdSun Feb 25 13:20:53 2007
@@ -102,7 +102,7 @@
 
   def BLA8_ELF : IForm18, 1, 1,
(ops aaddr:$func, variable_ops),
-   bla $func, BrB, [(PPCcall_ELF (i64 imm:$func))];
+   bla $func, BrB, [/*(PPCcall_ELF (i64 imm:$func))*/];
 }
 
 
@@ -111,12 +111,12 @@
   (BL8_Macho tglobaladdr:$dst);
 def : Pat(PPCcall_Macho (i64 texternalsym:$dst)),
   (BL8_Macho texternalsym:$dst);
-
+/*
 def : Pat(PPCcall_ELF (i64 tglobaladdr:$dst)),
   (BL8_ELF tglobaladdr:$dst);
 def : Pat(PPCcall_ELF (i64 texternalsym:$dst)),
   (BL8_ELF texternalsym:$dst);
-
+*/
 
 
//===--===//
 // 64-bit SPR manipulation instrs.


Index: llvm/lib/Target/PowerPC/PPCInstrInfo.td
diff -u llvm/lib/Target/PowerPC/PPCInstrInfo.td:1.273 
llvm/lib/Target/PowerPC/PPCInstrInfo.td:1.274
--- llvm/lib/Target/PowerPC/PPCInstrInfo.td:1.273   Sat Feb 24 23:34:32 2007
+++ llvm/lib/Target/PowerPC/PPCInstrInfo.td Sun Feb 25 13:20:53 2007
@@ -407,11 +407,11 @@
   def BLA_ELF : IForm18, 1, 1,
   (ops aaddr:$func, variable_ops),
   bla $func, BrB,
-  [(PPCcall_ELF (i32 imm:$func))];
+  [/*(PPCcall_ELF (i32 imm:$func))*/];
   def BCTRL_ELF : XLForm_2_ext19, 528, 20, 0, 1,
(ops variable_ops),
bctrl, BrB,
-   [(PPCbctrl_ELF)];
+   [/*(PPCbctrl_ELF)*/];
 }
 
 // DCB* instructions.
@@ -1102,8 +1102,12 @@
 // Calls
 def : Pat(PPCcall_Macho (i32 tglobaladdr:$dst)),
   (BL_Macho tglobaladdr:$dst);
+def : Pat(PPCcall_Macho (i32 texternalsym:$dst)),
+  (BL_Macho texternalsym:$dst);
+/*def : Pat(PPCcall_ELF (i32 tglobaladdr:$dst)),
+  (BL_ELF tglobaladdr:$dst);
 def : Pat(PPCcall_ELF (i32 texternalsym:$dst)),
-  (BL_ELF texternalsym:$dst);
+  (BL_ELF texternalsym:$dst);*/
 
 // Hi and Lo for Darwin Global Addresses.
 def : Pat(PPChi tglobaladdr:$in, 0), (LIS tglobaladdr:$in);



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/lib/Target/PowerPC/PPCInstr64Bit.td

2006-12-15 Thread Jim Laskey


Changes in directory llvm/lib/Target/PowerPC:

PPCInstr64Bit.td updated: 1.34 - 1.35
---
Log message:

Provide 64-bit support for i64 sextloadi8.

---
Diffs of the changes:  (+4 -0)

 PPCInstr64Bit.td |4 
 1 files changed, 4 insertions(+)


Index: llvm/lib/Target/PowerPC/PPCInstr64Bit.td
diff -u llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.34 
llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.35
--- llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.34   Tue Dec 12 07:23:43 2006
+++ llvm/lib/Target/PowerPC/PPCInstr64Bit.tdFri Dec 15 08:34:11 2006
@@ -491,6 +491,10 @@
   (LBZ8 iaddr:$src);
 def : Pat(extloadi1 xaddr:$src),
   (LBZX8 xaddr:$src);
+def : Pat(sextloadi8 iaddr:$src),
+  (EXTSB8 (LBZ8 iaddr:$src));
+def : Pat(sextloadi8 xaddr:$src),
+  (EXTSB8 (LBZX8 xaddr:$src));
 def : Pat(extloadi8 iaddr:$src),
   (LBZ8 iaddr:$src);
 def : Pat(extloadi8 xaddr:$src),



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/lib/Target/PowerPC/PPCInstr64Bit.td

2006-12-15 Thread Jim Laskey


Changes in directory llvm/lib/Target/PowerPC:

PPCInstr64Bit.td updated: 1.36 - 1.37
---
Log message:

Not all test cases are created equal.  This fix is needed.


---
Diffs of the changes:  (+4 -0)

 PPCInstr64Bit.td |4 
 1 files changed, 4 insertions(+)


Index: llvm/lib/Target/PowerPC/PPCInstr64Bit.td
diff -u llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.36 
llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.37
--- llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.36   Fri Dec 15 12:45:32 2006
+++ llvm/lib/Target/PowerPC/PPCInstr64Bit.tdFri Dec 15 12:51:01 2006
@@ -491,6 +491,10 @@
   (LBZ8 iaddr:$src);
 def : Pat(extloadi1 xaddr:$src),
   (LBZX8 xaddr:$src);
+def : Pat(sextloadi8 iaddr:$src),
+  (EXTSB8 (LBZ8 iaddr:$src));
+def : Pat(sextloadi8 xaddr:$src),
+  (EXTSB8 (LBZX8 xaddr:$src));
 def : Pat(extloadi8 iaddr:$src),
   (LBZ8 iaddr:$src);
 def : Pat(extloadi8 xaddr:$src),



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/lib/Target/PowerPC/PPCInstr64Bit.td

2006-12-15 Thread Jim Laskey


Changes in directory llvm/lib/Target/PowerPC:

PPCInstr64Bit.td updated: 1.35 - 1.36
---
Log message:

Not needed.  Misinterpreted error message from other bug (Missing load/store
relocations.)


---
Diffs of the changes:  (+0 -4)

 PPCInstr64Bit.td |4 
 1 files changed, 4 deletions(-)


Index: llvm/lib/Target/PowerPC/PPCInstr64Bit.td
diff -u llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.35 
llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.36
--- llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.35   Fri Dec 15 08:34:11 2006
+++ llvm/lib/Target/PowerPC/PPCInstr64Bit.tdFri Dec 15 12:45:32 2006
@@ -491,10 +491,6 @@
   (LBZ8 iaddr:$src);
 def : Pat(extloadi1 xaddr:$src),
   (LBZX8 xaddr:$src);
-def : Pat(sextloadi8 iaddr:$src),
-  (EXTSB8 (LBZ8 iaddr:$src));
-def : Pat(sextloadi8 xaddr:$src),
-  (EXTSB8 (LBZX8 xaddr:$src));
 def : Pat(extloadi8 iaddr:$src),
   (LBZ8 iaddr:$src);
 def : Pat(extloadi8 xaddr:$src),



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/lib/Target/PowerPC/PPCInstr64Bit.td

2006-12-15 Thread Jim Laskey


Changes in directory llvm/lib/Target/PowerPC:

PPCInstr64Bit.td updated: 1.37 - 1.38
---
Log message:

Patterns no longer needed due to fix in the DAG combiner.


---
Diffs of the changes:  (+0 -4)

 PPCInstr64Bit.td |4 
 1 files changed, 4 deletions(-)


Index: llvm/lib/Target/PowerPC/PPCInstr64Bit.td
diff -u llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.37 
llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.38
--- llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.37   Fri Dec 15 12:51:01 2006
+++ llvm/lib/Target/PowerPC/PPCInstr64Bit.tdFri Dec 15 15:39:31 2006
@@ -491,10 +491,6 @@
   (LBZ8 iaddr:$src);
 def : Pat(extloadi1 xaddr:$src),
   (LBZX8 xaddr:$src);
-def : Pat(sextloadi8 iaddr:$src),
-  (EXTSB8 (LBZ8 iaddr:$src));
-def : Pat(sextloadi8 xaddr:$src),
-  (EXTSB8 (LBZX8 xaddr:$src));
 def : Pat(extloadi8 iaddr:$src),
   (LBZ8 iaddr:$src);
 def : Pat(extloadi8 xaddr:$src),



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/lib/Target/PowerPC/PPCInstr64Bit.td

2006-12-06 Thread Chris Lattner


Changes in directory llvm/lib/Target/PowerPC:

PPCInstr64Bit.td updated: 1.32 - 1.33
---
Log message:

implement sextinreg i8-i64 and i16-i64


---
Diffs of the changes:  (+8 -0)

 PPCInstr64Bit.td |8 
 1 files changed, 8 insertions(+)


Index: llvm/lib/Target/PowerPC/PPCInstr64Bit.td
diff -u llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.32 
llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.33
--- llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.32   Thu Nov 16 16:43:37 2006
+++ llvm/lib/Target/PowerPC/PPCInstr64Bit.tdWed Dec  6 15:46:13 2006
@@ -224,6 +224,14 @@
 def SRAD : XForm_631, 794, (ops G8RC:$rA, G8RC:$rS, GPRC:$rB),
srad $rA, $rS, $rB, IntRotateD,
[(set G8RC:$rA, (sra G8RC:$rS, GPRC:$rB))], isPPC64;
+   
+def EXTSB8 : XForm_1131, 954, (ops G8RC:$rA, G8RC:$rS),
+  extsb $rA, $rS, IntGeneral,
+  [(set G8RC:$rA, (sext_inreg G8RC:$rS, i8))];
+def EXTSH8 : XForm_1131, 922, (ops G8RC:$rA, G8RC:$rS),
+  extsh $rA, $rS, IntGeneral,
+  [(set G8RC:$rA, (sext_inreg G8RC:$rS, i16))];
+
 def EXTSW  : XForm_1131, 986, (ops G8RC:$rA, G8RC:$rS),
   extsw $rA, $rS, IntGeneral,
   [(set G8RC:$rA, (sext_inreg G8RC:$rS, i32))], isPPC64;



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/lib/Target/PowerPC/PPCInstr64Bit.td PPCRegisterInfo.cpp

2006-11-11 Thread Chris Lattner


Changes in directory llvm/lib/Target/PowerPC:

PPCInstr64Bit.td updated: 1.24 - 1.25
PPCRegisterInfo.cpp updated: 1.78 - 1.79
---
Log message:

implement proper PPC64 prolog/epilog codegen.



---
Diffs of the changes:  (+81 -30)

 PPCInstr64Bit.td|5 ++
 PPCRegisterInfo.cpp |  106 +---
 2 files changed, 81 insertions(+), 30 deletions(-)


Index: llvm/lib/Target/PowerPC/PPCInstr64Bit.td
diff -u llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.24 
llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.25
--- llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.24   Fri Nov 10 22:51:36 2006
+++ llvm/lib/Target/PowerPC/PPCInstr64Bit.tdSat Nov 11 13:05:28 2006
@@ -322,6 +322,10 @@
stdx $rS, $dst, LdStSTD,
[(store G8RC:$rS, xaddr:$dst)], isPPC64,
PPC970_DGroup_Cracked;
+
+def STDU : DSForm_162, 1, (ops G8RC:$rS, memrix:$dst),
+stdu $rS, $dst, LdStSTD,
+[], isPPC64;
 def STDUX : XForm_831, 181, (ops G8RC:$rS, memrr:$dst),
stdux $rS, $dst, LdStSTD,
[], isPPC64;
@@ -335,6 +339,7 @@
[(PPCstd_32  GPRC:$rT, xaddr:$dst)], isPPC64,
PPC970_DGroup_Cracked;
 
+
 // Truncating stores.   
 def STB8 : DForm_338, (ops G8RC:$rS, memri:$src),
stb $rS, $src, LdStGeneral,


Index: llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp
diff -u llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp:1.78 
llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp:1.79
--- llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp:1.78Sat Nov 11 04:21:58 2006
+++ llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp Sat Nov 11 13:05:28 2006
@@ -636,7 +636,7 @@
   // Add the size of R1 to  NumBytes size for the store of R1 to the bottom
   // of the stack and round the size to a multiple of the alignment.
   unsigned Align = std::max(TargetAlign, MaxAlign);
-  unsigned GPRSize = 4;
+  unsigned GPRSize = Subtarget.isPPC64() ? 8 : 4;
   unsigned Size = HasFP ? GPRSize + GPRSize : GPRSize;
   NumBytes = (NumBytes+Size+Align-1)/Align*Align;
 
@@ -646,24 +646,47 @@
 
   // Adjust stack pointer: r1 -= numbytes.
   // If there is a preferred stack alignment, align R1 now
-  if (MaxAlign  TargetAlign) {
-assert(isPowerOf2_32(MaxAlign)  MaxAlign  32767  Invalid 
alignment!);
-assert(isInt16(0-NumBytes)  Unhandled stack size and alignment!);
-BuildMI(MBB, MBBI, PPC::RLWINM, 4, PPC::R0)
-  .addReg(PPC::R1).addImm(0).addImm(32-Log2_32(MaxAlign)).addImm(31);
-BuildMI(MBB, MBBI, PPC::SUBFIC,2,PPC::R0).addReg(PPC::R0)
-  .addImm(0-NumBytes);
-BuildMI(MBB, MBBI, PPC::STWUX, 3)
-  .addReg(PPC::R1).addReg(PPC::R1).addReg(PPC::R0);
-  } else if (NumBytes = 32768) {
-BuildMI(MBB, MBBI, PPC::STWU, 3).addReg(PPC::R1).addImm(NegNumbytes)
-  .addReg(PPC::R1);
-  } else {
-BuildMI(MBB, MBBI, PPC::LIS, 1, PPC::R0).addImm(NegNumbytes  16);
-BuildMI(MBB, MBBI, PPC::ORI, 2, PPC::R0).addReg(PPC::R0)
-  .addImm(NegNumbytes  0x);
-BuildMI(MBB, MBBI, PPC::STWUX, 3).addReg(PPC::R1).addReg(PPC::R1)
-  .addReg(PPC::R0);
+  if (!Subtarget.isPPC64()) {
+// PPC32.
+if (MaxAlign  TargetAlign) {
+  assert(isPowerOf2_32(MaxAlign)  MaxAlign  32767Invalid 
alignment!);
+  assert(isInt16(0-NumBytes)  Unhandled stack size and alignment!);
+  BuildMI(MBB, MBBI, PPC::RLWINM, 4, PPC::R0)
+.addReg(PPC::R1).addImm(0).addImm(32-Log2_32(MaxAlign)).addImm(31);
+  BuildMI(MBB, MBBI, PPC::SUBFIC,2,PPC::R0).addReg(PPC::R0)
+.addImm(0-NumBytes);
+  BuildMI(MBB, MBBI, PPC::STWUX, 3)
+.addReg(PPC::R1).addReg(PPC::R1).addReg(PPC::R0);
+} else if (NumBytes = 32768) {
+  BuildMI(MBB, MBBI, PPC::STWU, 3).addReg(PPC::R1).addImm(NegNumbytes)
+.addReg(PPC::R1);
+} else {
+  BuildMI(MBB, MBBI, PPC::LIS, 1, PPC::R0).addImm(NegNumbytes  16);
+  BuildMI(MBB, MBBI, PPC::ORI, 2, PPC::R0).addReg(PPC::R0)
+.addImm(NegNumbytes  0x);
+  BuildMI(MBB, MBBI, PPC::STWUX, 3).addReg(PPC::R1).addReg(PPC::R1)
+.addReg(PPC::R0);
+}
+  } else {// PPC64.
+if (MaxAlign  TargetAlign) {
+  assert(isPowerOf2_32(MaxAlign)  MaxAlign  32767Invalid 
alignment!);
+  assert(isInt16(0-NumBytes)  Unhandled stack size and alignment!);
+  BuildMI(MBB, MBBI, PPC::RLDICL, 3, PPC::X0)
+.addReg(PPC::X1).addImm(0).addImm(64-Log2_32(MaxAlign));
+  BuildMI(MBB, MBBI, PPC::SUBFIC8, 2, PPC::X0).addReg(PPC::X0)
+.addImm(0-NumBytes);
+  BuildMI(MBB, MBBI, PPC::STDUX, 3)
+.addReg(PPC::X1).addReg(PPC::X1).addReg(PPC::X0);
+} else if (NumBytes = 32768*4) {
+  BuildMI(MBB, MBBI, PPC::STDU, 3).addReg(PPC::X1).addImm(NegNumbytes/4)
+ .addReg(PPC::X1);
+} else {
+  BuildMI(MBB, MBBI, PPC::LIS8, 1, PPC::X0).addImm(NegNumbytes  16);
+  BuildMI(MBB, MBBI, PPC::ORI8, 2, PPC::X0).addReg(PPC::X0)
+  

[llvm-commits] CVS: llvm/lib/Target/PowerPC/PPCInstr64Bit.td PPCInstrInfo.td

2006-11-10 Thread Chris Lattner


Changes in directory llvm/lib/Target/PowerPC:

PPCInstr64Bit.td updated: 1.23 - 1.24
PPCInstrInfo.td updated: 1.256 - 1.257
---
Log message:

Mark operands as symbol lo instead of imm32 so that they print lo(x) around
globals.


---
Diffs of the changes:  (+11 -11)

 PPCInstr64Bit.td |   10 +-
 PPCInstrInfo.td  |   12 ++--
 2 files changed, 11 insertions(+), 11 deletions(-)


Index: llvm/lib/Target/PowerPC/PPCInstr64Bit.td
diff -u llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.23 
llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.24
--- llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.23   Fri Nov 10 17:58:45 2006
+++ llvm/lib/Target/PowerPC/PPCInstr64Bit.tdFri Nov 10 22:51:36 2006
@@ -249,7 +249,7 @@
PPC970_DGroup_Cracked;
 
 // Update forms.
-def LHAU8 : DForm_143, (ops G8RC:$rD, ptr_rc:$rA_result, i32imm:$disp,
+def LHAU8 : DForm_143, (ops G8RC:$rD, ptr_rc:$rA_result, symbolLo:$disp,
 ptr_rc:$rA),
 lhau $rD, $disp($rA), LdStGeneral,
 [], RegConstraint$rA = $rA_result;
@@ -281,15 +281,15 @@


 // Update forms.
-def LBZU8 : DForm_135, (ops G8RC:$rD, ptr_rc:$rA_result, i32imm:$disp,
+def LBZU8 : DForm_135, (ops G8RC:$rD, ptr_rc:$rA_result, symbolLo:$disp,
  ptr_rc:$rA),
 lbzu $rD, $disp($rA), LdStGeneral,
 [], RegConstraint$rA = $rA_result;
-def LHZU8 : DForm_141, (ops G8RC:$rD, ptr_rc:$rA_result, i32imm:$disp,
+def LHZU8 : DForm_141, (ops G8RC:$rD, ptr_rc:$rA_result, symbolLo:$disp,
  ptr_rc:$rA),
 lhzu $rD, $disp($rA), LdStGeneral,
 [], RegConstraint$rA = $rA_result;
-def LWZU8 : DForm_133, (ops G8RC:$rD, ptr_rc:$rA_result, i32imm:$disp,
+def LWZU8 : DForm_133, (ops G8RC:$rD, ptr_rc:$rA_result, symbolLo:$disp,
  ptr_rc:$rA),
 lwzu $rD, $disp($rA), LdStGeneral,
 [], RegConstraint$rA = $rA_result;
@@ -306,7 +306,7 @@
ldx $rD, $src, LdStLD,
[(set G8RC:$rD, (load xaddr:$src))], isPPC64;

-def LDU  : DSForm_158, 1, (ops G8RC:$rD, ptr_rc:$rA_result, i32imm:$disp,
+def LDU  : DSForm_158, 1, (ops G8RC:$rD, ptr_rc:$rA_result, symbolLo:$disp,
 ptr_rc:$rA),
 ldu $rD, $disp($rA), LdStLD,
 [], RegConstraint$rA = $rA_result, isPPC64;


Index: llvm/lib/Target/PowerPC/PPCInstrInfo.td
diff -u llvm/lib/Target/PowerPC/PPCInstrInfo.td:1.256 
llvm/lib/Target/PowerPC/PPCInstrInfo.td:1.257
--- llvm/lib/Target/PowerPC/PPCInstrInfo.td:1.256   Fri Nov 10 11:51:02 2006
+++ llvm/lib/Target/PowerPC/PPCInstrInfo.td Fri Nov 10 22:51:36 2006
@@ -432,31 +432,31 @@
 // FIXME: PTRRC for Pointer regs for ppc64.
 
 // 'Update' load forms.
-def LBZU : DForm_135, (ops GPRC:$rD, ptr_rc:$rA_result, i32imm:$disp,
+def LBZU : DForm_135, (ops GPRC:$rD, ptr_rc:$rA_result, symbolLo:$disp,
 ptr_rc:$rA),
lbzu $rD, $disp($rA), LdStGeneral,
[], RegConstraint$rA = $rA_result;
 
-def LHAU : DForm_143, (ops GPRC:$rD, ptr_rc:$rA_result, i32imm:$disp,
+def LHAU : DForm_143, (ops GPRC:$rD, ptr_rc:$rA_result, symbolLo:$disp,
 ptr_rc:$rA),
lhau $rD, $disp($rA), LdStGeneral,
[], RegConstraint$rA = $rA_result;
 
-def LHZU : DForm_141, (ops GPRC:$rD, ptr_rc:$rA_result, i32imm:$disp,
+def LHZU : DForm_141, (ops GPRC:$rD, ptr_rc:$rA_result, symbolLo:$disp,
 ptr_rc:$rA),
lhzu $rD, $disp($rA), LdStGeneral,
[], RegConstraint$rA = $rA_result;
 
-def LWZU : DForm_133, (ops GPRC:$rD, ptr_rc:$rA_result, i32imm:$disp,
+def LWZU : DForm_133, (ops GPRC:$rD, ptr_rc:$rA_result, symbolLo:$disp,
 ptr_rc:$rA),
lwzu $rD, $disp($rA), LdStGeneral,
[], RegConstraint$rA = $rA_result;
 
-def LFSU : DForm_149, (ops F4RC:$rD, ptr_rc:$rA_result, i32imm:$disp,
+def LFSU : DForm_149, (ops F4RC:$rD, ptr_rc:$rA_result, symbolLo:$disp,
 ptr_rc:$rA),
   lfs $rD, $disp($rA), LdStLFDU,
   [], RegConstraint$rA = $rA_result;
-def LFDU : DForm_151, (ops F8RC:$rD, ptr_rc:$rA_result, i32imm:$disp,
+def LFDU : DForm_151, (ops F8RC:$rD, ptr_rc:$rA_result, symbolLo:$disp,
 ptr_rc:$rA),
   lfd $rD, $disp($rA), LdStLFD,
   [], RegConstraint$rA = $rA_result;



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/lib/Target/PowerPC/PPCInstr64Bit.td

2006-09-28 Thread Chris Lattner


Changes in directory llvm/lib/Target/PowerPC:

PPCInstr64Bit.td updated: 1.19 - 1.20
---
Log message:

Shift amounts are always 32-bits, even in 64-bit mode.  This fixes
CodeGen/PowerPC/2006-09-28-shift_64.ll


---
Diffs of the changes:  (+6 -6)

 PPCInstr64Bit.td |   12 ++--
 1 files changed, 6 insertions(+), 6 deletions(-)


Index: llvm/lib/Target/PowerPC/PPCInstr64Bit.td
diff -u llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.19 
llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.20
--- llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.19   Tue Jul 18 11:33:26 2006
+++ llvm/lib/Target/PowerPC/PPCInstr64Bit.tdThu Sep 28 15:48:45 2006
@@ -168,15 +168,15 @@
 def CMPLDI : DForm_6_ext10, (ops CRRC:$dst, G8RC:$src1, u16imm:$src2),
  cmpldi $dst, $src1, $src2, IntCompare, isPPC64;
 
-def SLD  : XForm_631,  27, (ops G8RC:$rA, G8RC:$rS, G8RC:$rB),
+def SLD  : XForm_631,  27, (ops G8RC:$rA, G8RC:$rS, GPRC:$rB),
sld $rA, $rS, $rB, IntRotateD,
-   [(set G8RC:$rA, (shl G8RC:$rS, G8RC:$rB))], isPPC64;
-def SRD  : XForm_631, 539, (ops G8RC:$rA, G8RC:$rS, G8RC:$rB),
+   [(set G8RC:$rA, (shl G8RC:$rS, GPRC:$rB))], isPPC64;
+def SRD  : XForm_631, 539, (ops G8RC:$rA, G8RC:$rS, GPRC:$rB),
srd $rA, $rS, $rB, IntRotateD,
-   [(set G8RC:$rA, (srl G8RC:$rS, G8RC:$rB))], isPPC64;
-def SRAD : XForm_631, 794, (ops G8RC:$rA, G8RC:$rS, G8RC:$rB),
+   [(set G8RC:$rA, (srl G8RC:$rS, GPRC:$rB))], isPPC64;
+def SRAD : XForm_631, 794, (ops G8RC:$rA, G8RC:$rS, GPRC:$rB),
srad $rA, $rS, $rB, IntRotateD,
-   [(set G8RC:$rA, (sra G8RC:$rS, G8RC:$rB))], isPPC64;
+   [(set G8RC:$rA, (sra G8RC:$rS, GPRC:$rB))], isPPC64;
 def EXTSW  : XForm_1131, 986, (ops G8RC:$rA, G8RC:$rS),
   extsw $rA, $rS, IntGeneral,
   [(set G8RC:$rA, (sext_inreg G8RC:$rS, i32))], isPPC64;



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/lib/Target/PowerPC/PPCInstr64Bit.td PPCInstrAltivec.td PPCInstrInfo.td

2006-07-18 Thread Chris Lattner


Changes in directory llvm/lib/Target/PowerPC:

PPCInstr64Bit.td updated: 1.18 - 1.19
PPCInstrAltivec.td updated: 1.54 - 1.55
PPCInstrInfo.td updated: 1.238 - 1.239
---
Log message:

Make the implicit def instructions look like other instrs.


---
Diffs of the changes:  (+5 -5)

 PPCInstr64Bit.td   |2 +-
 PPCInstrAltivec.td |2 +-
 PPCInstrInfo.td|6 +++---
 3 files changed, 5 insertions(+), 5 deletions(-)


Index: llvm/lib/Target/PowerPC/PPCInstr64Bit.td
diff -u llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.18 
llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.19
--- llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.18   Thu Jul 13 23:42:02 2006
+++ llvm/lib/Target/PowerPC/PPCInstr64Bit.tdTue Jul 18 11:33:26 2006
@@ -57,7 +57,7 @@
 // Pseudo instructions.
 //
 
-def IMPLICIT_DEF_G8RC : Pseudo(ops G8RC:$rD), ; $rD = IMPLICIT_DEF_G8RC,
+def IMPLICIT_DEF_G8RC : Pseudo(ops G8RC:$rD), ; IMPLICIT_DEF_G8RC $rD,
   [(set G8RC:$rD, (undef))];
 
 let Pattern = [(PPCmtctr G8RC:$rS)] in {


Index: llvm/lib/Target/PowerPC/PPCInstrAltivec.td
diff -u llvm/lib/Target/PowerPC/PPCInstrAltivec.td:1.54 
llvm/lib/Target/PowerPC/PPCInstrAltivec.td:1.55
--- llvm/lib/Target/PowerPC/PPCInstrAltivec.td:1.54 Mon Jun 19 19:39:56 2006
+++ llvm/lib/Target/PowerPC/PPCInstrAltivec.td  Tue Jul 18 11:33:26 2006
@@ -157,7 +157,7 @@
 
//===--===//
 // Instruction Definitions.
 
-def IMPLICIT_DEF_VRRC : Pseudo(ops VRRC:$rD), ; $rD = IMPLICIT_DEF_VRRC,
+def IMPLICIT_DEF_VRRC : Pseudo(ops VRRC:$rD), ; IMPLICIT_DEF_VRRC $rD,
[(set VRRC:$rD, (v4i32 (undef)))];
 
 let noResults = 1 in {


Index: llvm/lib/Target/PowerPC/PPCInstrInfo.td
diff -u llvm/lib/Target/PowerPC/PPCInstrInfo.td:1.238 
llvm/lib/Target/PowerPC/PPCInstrInfo.td:1.239
--- llvm/lib/Target/PowerPC/PPCInstrInfo.td:1.238   Mon Jul 10 15:56:58 2006
+++ llvm/lib/Target/PowerPC/PPCInstrInfo.td Tue Jul 18 11:33:26 2006
@@ -262,11 +262,11 @@
 def UPDATE_VRSAVE: Pseudo(ops GPRC:$rD, GPRC:$rS),
   UPDATE_VRSAVE $rD, $rS, [];
 }
-def IMPLICIT_DEF_GPRC: Pseudo(ops GPRC:$rD), ; $rD = IMPLICIT_DEF_GPRC,
+def IMPLICIT_DEF_GPRC: Pseudo(ops GPRC:$rD), ; IMPLICIT_DEF_GPRC $rD,
   [(set GPRC:$rD, (undef))];
-def IMPLICIT_DEF_F8  : Pseudo(ops F8RC:$rD), ; $rD = IMPLICIT_DEF_F8,
+def IMPLICIT_DEF_F8  : Pseudo(ops F8RC:$rD), ; IMPLICIT_DEF_F8 $rD,
   [(set F8RC:$rD, (undef))];
-def IMPLICIT_DEF_F4  : Pseudo(ops F4RC:$rD), ; $rD = IMPLICIT_DEF_F4,
+def IMPLICIT_DEF_F4  : Pseudo(ops F4RC:$rD), ; IMPLICIT_DEF_F4 $rD,
   [(set F4RC:$rD, (undef))];
 
 // SELECT_CC_* - Used to implement the SELECT_CC DAG operation.  Expanded by 
the



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/lib/Target/PowerPC/PPCInstr64Bit.td

2006-06-27 Thread Chris Lattner


Changes in directory llvm/lib/Target/PowerPC:

PPCInstr64Bit.td updated: 1.11 - 1.12
---
Log message:

Add zextload from i32 - i64, with this, perimeter works.



---
Diffs of the changes:  (+3 -0)

 PPCInstr64Bit.td |3 +++
 1 files changed, 3 insertions(+)


Index: llvm/lib/Target/PowerPC/PPCInstr64Bit.td
diff -u llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.11 
llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.12
--- llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.11   Mon Jun 26 18:53:10 2006
+++ llvm/lib/Target/PowerPC/PPCInstr64Bit.tdTue Jun 27 12:30:08 2006
@@ -228,6 +228,9 @@
 def LDX  : XForm_131,  21, (ops G8RC:$rD, memrr:$src),
ldx $rD, $src, LdStLD,
[(set G8RC:$rD, (load xaddr:$src))], isPPC64;
+def LWZ8 : DForm_132, (ops G8RC:$rD, memri:$src),
+  lwz $rD, $src, LdStGeneral,
+  [(set G8RC:$rD, (zextload iaddr:$src, i32))], isPPC64;
 }
 let isStore = 1, noResults = 1, PPC970_Unit = 2 in {
 def STD  : DSForm_262, 0, (ops G8RC:$rS, memrix:$dst),



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/lib/Target/PowerPC/PPCInstr64Bit.td

2006-06-27 Thread Chris Lattner


Changes in directory llvm/lib/Target/PowerPC:

PPCInstr64Bit.td updated: 1.13 - 1.14
---
Log message:

Fix an incorrect store pattern.  This fixes em3d.


---
Diffs of the changes:  (+1 -1)

 PPCInstr64Bit.td |2 +-
 1 files changed, 1 insertion(+), 1 deletion(-)


Index: llvm/lib/Target/PowerPC/PPCInstr64Bit.td
diff -u llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.13 
llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.14
--- llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.13   Tue Jun 27 13:18:41 2006
+++ llvm/lib/Target/PowerPC/PPCInstr64Bit.tdTue Jun 27 13:22:50 2006
@@ -251,7 +251,7 @@
 [(store G8RC:$rS, ixaddr:$dst)], isPPC64;
 def STDX  : XForm_831, 149, (ops G8RC:$rS, memrr:$dst),
stdx $rS, $dst, LdStSTD,
-   [(store G8RC:$rS, iaddr:$dst)], isPPC64,
+   [(store G8RC:$rS, xaddr:$dst)], isPPC64,
PPC970_DGroup_Cracked;
 def STDUX : XForm_831, 181, (ops G8RC:$rS, memrr:$dst),
stdux $rS, $dst, LdStSTD,



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/lib/Target/PowerPC/PPCInstr64Bit.td PPCInstrInfo.td

2006-06-27 Thread Chris Lattner


Changes in directory llvm/lib/Target/PowerPC:

PPCInstr64Bit.td updated: 1.14 - 1.15
PPCInstrInfo.td updated: 1.236 - 1.237
---
Log message:

Add 64-bit MTCTR so that indirect calls work.


---
Diffs of the changes:  (+6 -2)

 PPCInstr64Bit.td |4 
 PPCInstrInfo.td  |4 ++--
 2 files changed, 6 insertions(+), 2 deletions(-)


Index: llvm/lib/Target/PowerPC/PPCInstr64Bit.td
diff -u llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.14 
llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.15
--- llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.14   Tue Jun 27 13:22:50 2006
+++ llvm/lib/Target/PowerPC/PPCInstr64Bit.tdTue Jun 27 13:36:44 2006
@@ -60,6 +60,10 @@
 def IMPLICIT_DEF_G8RC : Pseudo(ops G8RC:$rD), ; $rD = IMPLICIT_DEF_G8RC,
   [(set G8RC:$rD, (undef))];
 
+let Pattern = [(PPCmtctr G8RC:$rS)] in {
+def MTCTR8 : XFXForm_7_ext31, 467, 9, (ops G8RC:$rS), mtctr $rS, SprMTSPR,
+PPC970_DGroup_First, PPC970_Unit_FXU;
+}
 
 
//===--===//
 // Fixed point instructions.


Index: llvm/lib/Target/PowerPC/PPCInstrInfo.td
diff -u llvm/lib/Target/PowerPC/PPCInstrInfo.td:1.236 
llvm/lib/Target/PowerPC/PPCInstrInfo.td:1.237
--- llvm/lib/Target/PowerPC/PPCInstrInfo.td:1.236   Tue Jun 27 13:18:41 2006
+++ llvm/lib/Target/PowerPC/PPCInstrInfo.td Tue Jun 27 13:36:44 2006
@@ -71,7 +71,7 @@
 def callseq_start : SDNodeISD::CALLSEQ_START, 
SDT_PPCCallSeq,[SDNPHasChain];
 def callseq_end   : SDNodeISD::CALLSEQ_END,   
SDT_PPCCallSeq,[SDNPHasChain];
 
-def SDT_PPCCall   : SDTypeProfile0, -1, [SDTCisVT0, i32];
+def SDT_PPCCall   : SDTypeProfile0, -1, [SDTCisInt0];
 def PPCcall   : SDNodePPCISD::CALL, SDT_PPCCall,
[SDNPHasChain, SDNPOptInFlag, SDNPOutFlag];
 def PPCmtctr  : SDNodePPCISD::MTCTR, SDT_PPCCall,
@@ -323,7 +323,7 @@
   def BL  : IForm18, 0, 1, (ops calltarget:$func, variable_ops), 
 bl $func, BrB, [];  // See Pat patterns below.
   def BLA : IForm18, 1, 1, (ops aaddr:$func, variable_ops),
-bla $func, BrB, [(PPCcall imm:$func)];
+bla $func, BrB, [(PPCcall (i32 imm:$func))];
   def BCTRL : XLForm_2_ext19, 528, 20, 0, 1, (ops variable_ops), bctrl, BrB,
[(PPCbctrl)];
 }



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/lib/Target/PowerPC/PPCInstr64Bit.td

2006-06-20 Thread Chris Lattner


Changes in directory llvm/lib/Target/PowerPC:

PPCInstr64Bit.td updated: 1.4 - 1.5
---
Log message:

Add some patterns for globals, so we can now compile this:

static unsigned long long X, Y;
void test1() {
  X = Y;
}

into:

_test1:
lis r2, ha16(_Y)
lis r3, ha16(_X)
ld r2, lo16(_Y)(r2)
std r2, lo16(_X)(r3)
blr




---
Diffs of the changes:  (+37 -1)

 PPCInstr64Bit.td |   38 +-
 1 files changed, 37 insertions(+), 1 deletion(-)


Index: llvm/lib/Target/PowerPC/PPCInstr64Bit.td
diff -u llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.4 
llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.5
--- llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.4Mon Jun 19 19:38:36 2006
+++ llvm/lib/Target/PowerPC/PPCInstr64Bit.tdTue Jun 20 16:23:06 2006
@@ -12,6 +12,18 @@
 //
 
//===--===//
 
+//===--===//
+// 64-bit operands.
+//
+def symbolHi64 : Operandi64 {
+  let PrintMethod = printSymbolHi;
+}
+def symbolLo64 : Operandi64 {
+  let PrintMethod = printSymbolLo;
+}
+
+
+
 
 
//===--===//
 // Fixed point instructions.
@@ -19,6 +31,13 @@
 
 let PPC970_Unit = 1 in {  // FXU Operations.
 
+def LI8  : DForm_2_r014, (ops G8RC:$rD, symbolLo64:$imm),
+  li $rD, $imm, IntGeneral,
+  [(set G8RC:$rD, immSExt16:$imm)];
+def LIS8 : DForm_2_r015, (ops G8RC:$rD, symbolHi64:$imm),
+  lis $rD, $imm, IntGeneral,
+  [(set G8RC:$rD, imm16Shifted:$imm)];
+
 def OR8  : XForm_631, 444, (ops G8RC:$rA, G8RC:$rS, G8RC:$rB),
or $rA, $rS, $rB, IntGeneral,
[(set G8RC:$rA, (or G8RC:$rS, G8RC:$rB))];
@@ -32,6 +51,10 @@
 def ADD8  : XOForm_131, 266, 0, (ops G8RC:$rT, G8RC:$rA, G8RC:$rB),
  add $rT, $rA, $rB, IntGeneral,
  [(set G8RC:$rT, (add G8RC:$rA, G8RC:$rB))];
+def ADDIS8 : DForm_215, (ops G8RC:$rD, G8RC:$rA, symbolHi64:$imm),
+ addis $rD, $rA, $imm, IntGeneral,
+ [(set G8RC:$rD, (add G8RC:$rA, imm16Shifted:$imm))];
+
 def MULHD : XOForm_131, 73, 0, (ops G8RC:$rT, G8RC:$rA, G8RC:$rB),
  mulhd $rT, $rA, $rB, IntMulHW,
  [(set G8RC:$rT, (mulhs G8RC:$rA, G8RC:$rB))];
@@ -163,7 +186,6 @@
 
//===--===//
 // Instruction Patterns
 //
-
 // Extensions and truncates to/from 32-bit regs.
 def : Pat(i64 (zext GPRC:$in)),
   (RLDICL (OR4To8 GPRC:$in, GPRC:$in), 0, 32);
@@ -177,3 +199,17 @@
   (RLDICR G8RC:$in, imm:$imm, (SHL64 imm:$imm));
 def : Pat(srl G8RC:$in, (i64 imm:$imm)),
   (RLDICL G8RC:$in, (SRL64 imm:$imm), imm:$imm);
+
+// Hi and Lo for Darwin Global Addresses.
+def : Pat(PPChi tglobaladdr:$in, 0), (LIS8 tglobaladdr:$in);
+def : Pat(PPClo tglobaladdr:$in, 0), (LI8  tglobaladdr:$in);
+def : Pat(PPChi tconstpool:$in , 0), (LIS8 tconstpool:$in);
+def : Pat(PPClo tconstpool:$in , 0), (LI8  tconstpool:$in);
+def : Pat(PPChi tjumptable:$in , 0), (LIS8 tjumptable:$in);
+def : Pat(PPClo tjumptable:$in , 0), (LI8  tjumptable:$in);
+def : Pat(add G8RC:$in, (PPChi tglobaladdr:$g, 0)),
+  (ADDIS8 G8RC:$in, tglobaladdr:$g);
+def : Pat(add G8RC:$in, (PPChi tconstpool:$g, 0)),
+  (ADDIS8 G8RC:$in, tconstpool:$g);
+def : Pat(add G8RC:$in, (PPChi tjumptable:$g, 0)),
+  (ADDIS8 G8RC:$in, tjumptable:$g);



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/lib/Target/PowerPC/PPCInstr64Bit.td PPCInstrInfo.td

2006-06-20 Thread Chris Lattner


Changes in directory llvm/lib/Target/PowerPC:

PPCInstr64Bit.td updated: 1.5 - 1.6
PPCInstrInfo.td updated: 1.227 - 1.228
---
Log message:

Add some 64-bit logical ops.
Split imm16Shifted into a sext/zext form for 64-bit support.
Add some patterns for immediate formation.  For example, we now compile this:

static unsigned long long Y;
void test3() {
  Y = 0xF0F00F00;
}

into:

_test3:
li r2, 3840
lis r3, ha16(_Y)
xoris r2, r2, 61680
std r2, lo16(_Y)(r3)
blr

GCC produces:

_test3:
li r0,0
lis r2,ha16(_Y)
ori r0,r0,61680
sldi r0,r0,16
ori r0,r0,3840
std r0,lo16(_Y)(r2)
blr



---
Diffs of the changes:  (+78 -16)

 PPCInstr64Bit.td |   66 ---
 PPCInstrInfo.td  |   28 ---
 2 files changed, 78 insertions(+), 16 deletions(-)


Index: llvm/lib/Target/PowerPC/PPCInstr64Bit.td
diff -u llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.5 
llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.6
--- llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.5Tue Jun 20 16:23:06 2006
+++ llvm/lib/Target/PowerPC/PPCInstr64Bit.tdTue Jun 20 17:34:10 2006
@@ -31,13 +31,7 @@
 
 let PPC970_Unit = 1 in {  // FXU Operations.
 
-def LI8  : DForm_2_r014, (ops G8RC:$rD, symbolLo64:$imm),
-  li $rD, $imm, IntGeneral,
-  [(set G8RC:$rD, immSExt16:$imm)];
-def LIS8 : DForm_2_r015, (ops G8RC:$rD, symbolHi64:$imm),
-  lis $rD, $imm, IntGeneral,
-  [(set G8RC:$rD, imm16Shifted:$imm)];
-
+// Copies, extends, truncates.
 def OR8  : XForm_631, 444, (ops G8RC:$rA, G8RC:$rS, G8RC:$rB),
or $rA, $rS, $rB, IntGeneral,
[(set G8RC:$rA, (or G8RC:$rS, G8RC:$rB))];
@@ -47,13 +41,47 @@
 def OR8To4  : XForm_631, 444, (ops GPRC:$rA, G8RC:$rS, G8RC:$rB),
or $rA, $rS, $rB, IntGeneral,
[];
+
+def LI8  : DForm_2_r014, (ops G8RC:$rD, symbolLo64:$imm),
+  li $rD, $imm, IntGeneral,
+  [(set G8RC:$rD, immSExt16:$imm)];
+def LIS8 : DForm_2_r015, (ops G8RC:$rD, symbolHi64:$imm),
+  lis $rD, $imm, IntGeneral,
+  [(set G8RC:$rD, imm16ShiftedSExt:$imm)];
+
+// Logical ops.
+def ANDIo8  : DForm_428, (ops G8RC:$dst, G8RC:$src1, u16imm:$src2),
+  andi. $dst, $src1, $src2, IntGeneral,
+  [(set G8RC:$dst, (and G8RC:$src1, immZExt16:$src2))],
+  isDOT;
+def ANDISo8 : DForm_429, (ops G8RC:$dst, G8RC:$src1, u16imm:$src2),
+ andis. $dst, $src1, $src2, IntGeneral,
+[(set G8RC:$dst, (and 
G8RC:$src1,imm16ShiftedZExt:$src2))],
+ isDOT;
+def ORI8: DForm_424, (ops G8RC:$dst, G8RC:$src1, u16imm:$src2),
+  ori $dst, $src1, $src2, IntGeneral,
+  [(set G8RC:$dst, (or G8RC:$src1, immZExt16:$src2))];
+def ORIS8   : DForm_425, (ops G8RC:$dst, G8RC:$src1, u16imm:$src2),
+  oris $dst, $src1, $src2, IntGeneral,
+[(set G8RC:$dst, (or G8RC:$src1, 
imm16ShiftedZExt:$src2))];
+def XORI8   : DForm_426, (ops G8RC:$dst, G8RC:$src1, u16imm:$src2),
+  xori $dst, $src1, $src2, IntGeneral,
+  [(set G8RC:$dst, (xor G8RC:$src1, immZExt16:$src2))];
+def XORIS8  : DForm_427, (ops G8RC:$dst, G8RC:$src1, u16imm:$src2),
+  xoris $dst, $src1, $src2, IntGeneral,
+   [(set G8RC:$dst, (xor G8RC:$src1, 
imm16ShiftedZExt:$src2))];
+
+

 def ADD8  : XOForm_131, 266, 0, (ops G8RC:$rT, G8RC:$rA, G8RC:$rB),
  add $rT, $rA, $rB, IntGeneral,
  [(set G8RC:$rT, (add G8RC:$rA, G8RC:$rB))];
 def ADDIS8 : DForm_215, (ops G8RC:$rD, G8RC:$rA, symbolHi64:$imm),
  addis $rD, $rA, $imm, IntGeneral,
- [(set G8RC:$rD, (add G8RC:$rA, imm16Shifted:$imm))];
+ [(set G8RC:$rD, (add G8RC:$rA, imm16ShiftedSExt:$imm))];
+
+
+
 
 def MULHD : XOForm_131, 73, 0, (ops G8RC:$rT, G8RC:$rA, G8RC:$rB),
  mulhd $rT, $rA, $rB, IntMulHW,
@@ -186,6 +214,28 @@
 
//===--===//
 // Instruction Patterns
 //
+
+// Immediate support.
+// Handled above:
+//   sext(0x___,  i8) - li imm
+//   sext(0x___, i16) - lis imm16
+
+// sext(0x___,  i16)  - lis + ori
+def sext_0x____i16 : PatLeaf(imm), [{
+  return N-getValue() == (uint64_t)(int32_t)N-getValue();
+}];
+def : Pat(i64 sext_0x____i16:$imm),
+  (ORI8 (LIS8 (HI16 imm:$imm)), (LO16 imm:$imm));
+
+// zext(0x___, i16) - xoris (li lo16(imm)), imm16
+def zext_0x____i16 : PatLeaf(imm), [{
+  return (N-getValue()  

[llvm-commits] CVS: llvm/lib/Target/PowerPC/PPCInstr64Bit.td

2006-06-20 Thread Chris Lattner


Changes in directory llvm/lib/Target/PowerPC:

PPCInstr64Bit.td updated: 1.6 - 1.7
---
Log message:

Instead of li/xoris use li/oris.  Note that this doesn't work if bit 15 is
set, so disable the pattern in that case.


---
Diffs of the changes:  (+5 -5)

 PPCInstr64Bit.td |   10 +-
 1 files changed, 5 insertions(+), 5 deletions(-)


Index: llvm/lib/Target/PowerPC/PPCInstr64Bit.td
diff -u llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.6 
llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.7
--- llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.6Tue Jun 20 17:34:10 2006
+++ llvm/lib/Target/PowerPC/PPCInstr64Bit.tdTue Jun 20 17:38:59 2006
@@ -227,12 +227,12 @@
 def : Pat(i64 sext_0x____i16:$imm),
   (ORI8 (LIS8 (HI16 imm:$imm)), (LO16 imm:$imm));
 
-// zext(0x___, i16) - xoris (li lo16(imm)), imm16
-def zext_0x____i16 : PatLeaf(imm), [{
-  return (N-getValue()  0xULL) == 0;
+// zext(0x___7FFF, i16) - oris (li lo16(imm)), imm16
+def zext_0x___7FFF_i16 : PatLeaf(imm), [{
+  return (N-getValue()  0x8000ULL) == 0;
 }];
-def : Pat(i64 zext_0x____i16:$imm),
-  (XORIS8 (LI8 (LO16 imm:$imm)), (HI16 imm:$imm));
+def : Pat(i64 zext_0x___7FFF_i16:$imm),
+  (ORIS8 (LI8 (LO16 imm:$imm)), (HI16 imm:$imm));
 
 
 



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/lib/Target/PowerPC/PPCInstr64Bit.td

2006-06-20 Thread Chris Lattner


Changes in directory llvm/lib/Target/PowerPC:

PPCInstr64Bit.td updated: 1.8 - 1.9
---
Log message:

add some logical ops


---
Diffs of the changes:  (+28 -3)

 PPCInstr64Bit.td |   31 ---
 1 files changed, 28 insertions(+), 3 deletions(-)


Index: llvm/lib/Target/PowerPC/PPCInstr64Bit.td
diff -u llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.8 
llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.9
--- llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.8Tue Jun 20 18:03:01 2006
+++ llvm/lib/Target/PowerPC/PPCInstr64Bit.tdTue Jun 20 18:11:59 2006
@@ -32,9 +32,6 @@
 let PPC970_Unit = 1 in {  // FXU Operations.
 
 // Copies, extends, truncates.
-def OR8  : XForm_631, 444, (ops G8RC:$rA, G8RC:$rS, G8RC:$rB),
-   or $rA, $rS, $rB, IntGeneral,
-   [(set G8RC:$rA, (or G8RC:$rS, G8RC:$rB))];
 def OR4To8  : XForm_631, 444, (ops G8RC:$rA, GPRC:$rS, GPRC:$rB),
or $rA, $rS, $rB, IntGeneral,
[];
@@ -50,6 +47,32 @@
   [(set G8RC:$rD, imm16ShiftedSExt:$imm)];
 
 // Logical ops.
+def NAND8: XForm_631, 476, (ops G8RC:$rA, G8RC:$rS, G8RC:$rB),
+   nand $rA, $rS, $rB, IntGeneral,
+   [(set G8RC:$rA, (not (and G8RC:$rS, G8RC:$rB)))];
+def AND8 : XForm_631,  28, (ops G8RC:$rA, G8RC:$rS, G8RC:$rB),
+   and $rA, $rS, $rB, IntGeneral,
+   [(set G8RC:$rA, (and G8RC:$rS, G8RC:$rB))];
+def ANDC8: XForm_631,  60, (ops G8RC:$rA, G8RC:$rS, G8RC:$rB),
+   andc $rA, $rS, $rB, IntGeneral,
+   [(set G8RC:$rA, (and G8RC:$rS, (not G8RC:$rB)))];
+def OR8  : XForm_631, 444, (ops G8RC:$rA, G8RC:$rS, G8RC:$rB),
+   or $rA, $rS, $rB, IntGeneral,
+   [(set G8RC:$rA, (or G8RC:$rS, G8RC:$rB))];
+def NOR8 : XForm_631, 124, (ops G8RC:$rA, G8RC:$rS, G8RC:$rB),
+   nor $rA, $rS, $rB, IntGeneral,
+   [(set G8RC:$rA, (not (or G8RC:$rS, G8RC:$rB)))];
+def ORC8 : XForm_631, 412, (ops G8RC:$rA, G8RC:$rS, G8RC:$rB),
+   orc $rA, $rS, $rB, IntGeneral,
+   [(set G8RC:$rA, (or G8RC:$rS, (not G8RC:$rB)))];
+def EQV8 : XForm_631, 284, (ops G8RC:$rA, G8RC:$rS, G8RC:$rB),
+   eqv $rA, $rS, $rB, IntGeneral,
+   [(set G8RC:$rA, (not (xor G8RC:$rS, G8RC:$rB)))];
+def XOR8 : XForm_631, 316, (ops G8RC:$rA, G8RC:$rS, G8RC:$rB),
+   xor $rA, $rS, $rB, IntGeneral,
+   [(set G8RC:$rA, (xor G8RC:$rS, G8RC:$rB))];
+
+// Logical ops with immediate.
 def ANDIo8  : DForm_428, (ops G8RC:$dst, G8RC:$src1, u16imm:$src2),
   andi. $dst, $src1, $src2, IntGeneral,
   [(set G8RC:$dst, (and G8RC:$src1, immZExt16:$src2))],
@@ -252,6 +275,8 @@
 def : Pat(i64 zext_0x____i16:$imm),
   (ORIS8 (ORI8 (LI8 0), (LO16 imm:$imm)), (HI16 imm:$imm));
 
+// FIXME: Handle smart forms where the top 32-bits are set.  Right now, stuff
+// like 0xABCD0123BCDE hits the case below, which produces ORI R, R, 0's! 
 
 // Fully general (and most expensive: 6 instructions!) immediate pattern.
 def : Pat(i64 imm:$imm),



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/lib/Target/PowerPC/PPCInstr64Bit.td

2006-06-19 Thread Chris Lattner


Changes in directory llvm/lib/Target/PowerPC:

PPCInstr64Bit.td updated: 1.3 - 1.4
---
Log message:

Add some patterns for ppc64


---
Diffs of the changes:  (+14 -13)

 PPCInstr64Bit.td |   27 ++-
 1 files changed, 14 insertions(+), 13 deletions(-)


Index: llvm/lib/Target/PowerPC/PPCInstr64Bit.td
diff -u llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.3 
llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.4
--- llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.3Fri Jun 16 16:29:41 2006
+++ llvm/lib/Target/PowerPC/PPCInstr64Bit.tdMon Jun 19 19:38:36 2006
@@ -105,12 +105,13 @@
 
 
 let isLoad = 1, PPC970_Unit = 2 in {
-def LWA  : DSForm_158, 2, (ops G8RC:$rT, memrix:$src),
-lwa $rT, $src, LdStLWA,
-[], isPPC64, PPC970_DGroup_Cracked;
-def LD   : DSForm_258, 0, (ops G8RC:$rT, memrix:$src),
-ld $rT, $src, LdStLD,
-[], isPPC64;
+def LWA  : DSForm_158, 2, (ops G8RC:$rD, memrix:$src),
+lwa $rD, $src, LdStLWA,
+[(set G8RC:$rD, (sextload ixaddr:$src, i32))], isPPC64,
+PPC970_DGroup_Cracked;
+def LD   : DSForm_258, 0, (ops G8RC:$rD, memrix:$src),
+ld $rD, $src, LdStLD,
+[(set G8RC:$rD, (load ixaddr:$src))], isPPC64;
 
 def LWAX : XForm_131, 341, (ops G8RC:$rD, memrr:$src),
lwax $rD, $src, LdStLHA,
@@ -121,14 +122,14 @@
[(set G8RC:$rD, (load xaddr:$src))], isPPC64;
 }
 let isStore = 1, noResults = 1, PPC970_Unit = 2 in {
-def STD  : DSForm_262, 0, (ops G8RC:$rT, memrix:$src),
-std $rT, $src, LdStSTD,
-[], isPPC64;
-
-def STDX  : XForm_831, 149, (ops GPRC:$rS, memrr:$dst),
+def STD  : DSForm_262, 0, (ops G8RC:$rS, memrix:$dst),
+std $rS, $dst, LdStSTD,
+[(store G8RC:$rS, ixaddr:$dst)], isPPC64;
+def STDX  : XForm_831, 149, (ops G8RC:$rS, memrr:$dst),
stdx $rS, $dst, LdStSTD,
-   [], isPPC64, PPC970_DGroup_Cracked;
-def STDUX : XForm_831, 181, (ops GPRC:$rS, memrr:$dst),
+   [(store G8RC:$rS, iaddr:$dst)], isPPC64,
+   PPC970_DGroup_Cracked;
+def STDUX : XForm_831, 181, (ops G8RC:$rS, memrr:$dst),
stdux $rS, $dst, LdStSTD,
[], isPPC64;




___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/lib/Target/PowerPC/PPCInstr64Bit.td PPCInstrInfo.td

2006-06-16 Thread Chris Lattner


Changes in directory llvm/lib/Target/PowerPC:

PPCInstr64Bit.td added (r1.1)
PPCInstrInfo.td updated: 1.222 - 1.223
---
Log message:

Split 64-bit instructions out into a separate .td file


---
Diffs of the changes:  (+185 -130)

 PPCInstr64Bit.td |  183 +++
 PPCInstrInfo.td  |  132 ---
 2 files changed, 185 insertions(+), 130 deletions(-)


Index: llvm/lib/Target/PowerPC/PPCInstr64Bit.td
diff -c /dev/null llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.1
*** /dev/null   Fri Jun 16 15:22:11 2006
--- llvm/lib/Target/PowerPC/PPCInstr64Bit.tdFri Jun 16 15:22:01 2006
***
*** 0 
--- 1,183 
+ //===- PPCInstr64Bit.td - The PowerPC 64-bit Support ---*- tablegen 
-*-===//
+ // 
+ // The LLVM Compiler Infrastructure
+ //
+ // This file was developed by Chris Lattner and is distributed under
+ // the University of Illinois Open Source License. See LICENSE.TXT for 
details.
+ // 
+ 
//===--===//
+ //
+ // This file describes the PowerPC 64-bit instructions.  These patterns are 
used
+ // both when in ppc64 mode and when in use 64-bit extensions in 32-bit mode.
+ //
+ 
//===--===//
+ 
+ 
+ 
//===--===//
+ // Fixed point instructions.
+ //
+ 
+ let PPC970_Unit = 1 in {  // FXU Operations.
+ 
+ def OR8  : XForm_631, 444, (ops G8RC:$rA, G8RC:$rS, G8RC:$rB),
+or $rA, $rS, $rB, IntGeneral,
+[(set G8RC:$rA, (or G8RC:$rS, G8RC:$rB))];
+ def OR4To8  : XForm_631, 444, (ops G8RC:$rA, GPRC:$rS, GPRC:$rB),
+or $rA, $rS, $rB, IntGeneral,
+[];
+ def OR8To4  : XForm_631, 444, (ops GPRC:$rA, G8RC:$rS, G8RC:$rB),
+or $rA, $rS, $rB, IntGeneral,
+[];
+
+ def ADD8  : XOForm_131, 266, 0, (ops G8RC:$rT, G8RC:$rA, G8RC:$rB),
+  add $rT, $rA, $rB, IntGeneral,
+  [(set G8RC:$rT, (add G8RC:$rA, G8RC:$rB))];
+ def MULHD : XOForm_131, 73, 0, (ops G8RC:$rT, G8RC:$rA, G8RC:$rB),
+  mulhd $rT, $rA, $rB, IntMulHW,
+  [(set G8RC:$rT, (mulhs G8RC:$rA, G8RC:$rB))];
+ def MULHDU : XOForm_131, 9, 0, (ops G8RC:$rT, G8RC:$rA, G8RC:$rB),
+  mulhdu $rT, $rA, $rB, IntMulHWU,
+  [(set G8RC:$rT, (mulhu G8RC:$rA, G8RC:$rB))];
+ 
+ def CMPDI : DForm_5_ext11, (ops CRRC:$crD, GPRC:$rA, s16imm:$imm),
+ cmpdi $crD, $rA, $imm, IntCompare, isPPC64;
+ 
+ def CMPLDI : DForm_6_ext10, (ops CRRC:$dst, GPRC:$src1, u16imm:$src2),
+  cmpldi $dst, $src1, $src2, IntCompare, isPPC64;
+ def CMPD   : XForm_16_ext31, 0, (ops CRRC:$crD, GPRC:$rA, GPRC:$rB),
+   cmpd $crD, $rA, $rB, IntCompare, isPPC64;
+ def CMPLD  : XForm_16_ext31, 32, (ops CRRC:$crD, GPRC:$rA, GPRC:$rB),
+   cmpld $crD, $rA, $rB, IntCompare, isPPC64;
+ 
+ def SLD  : XForm_631,  27, (ops G8RC:$rA, G8RC:$rS, G8RC:$rB),
+sld $rA, $rS, $rB, IntRotateD,
+[(set G8RC:$rA, (shl G8RC:$rS, G8RC:$rB))], isPPC64;
+ def SRD  : XForm_631, 539, (ops G8RC:$rA, G8RC:$rS, G8RC:$rB),
+srd $rA, $rS, $rB, IntRotateD,
+[(set G8RC:$rA, (srl G8RC:$rS, G8RC:$rB))], isPPC64;
+ def SRAD : XForm_631, 794, (ops G8RC:$rA, G8RC:$rS, G8RC:$rB),
+srad $rA, $rS, $rB, IntRotateD,
+[(set G8RC:$rA, (sra G8RC:$rS, G8RC:$rB))], isPPC64;
+ def EXTSW  : XForm_1131, 986, (ops G8RC:$rA, G8RC:$rS),
+   extsw $rA, $rS, IntGeneral,
+   [(set G8RC:$rA, (sext_inreg G8RC:$rS, i32))], isPPC64;
+ /// EXTSW_32 - Just like EXTSW, but works on '32-bit' registers.
+ def EXTSW_32 : XForm_1131, 986, (ops GPRC:$rA, GPRC:$rS),
+   extsw $rA, $rS, IntGeneral,
+   [(set GPRC:$rA, (PPCextsw_32 GPRC:$rS))], isPPC64;
+ 
+ def SRADI  : XSForm_131, 413, (ops GPRC:$rA, GPRC:$rS, u6imm:$SH),
+   sradi $rA, $rS, $SH, IntRotateD, isPPC64;
+ def DIVD  : XOForm_131, 489, 0, (ops G8RC:$rT, G8RC:$rA, G8RC:$rB),
+  divd $rT, $rA, $rB, IntDivD,
+  [(set G8RC:$rT, (sdiv G8RC:$rA, G8RC:$rB))], isPPC64,
+  PPC970_DGroup_First, PPC970_DGroup_Cracked;
+ def DIVDU : XOForm_131, 457, 0, (ops G8RC:$rT, G8RC:$rA, G8RC:$rB),
+  divdu $rT, $rA, $rB, IntDivD,
+  [(set G8RC:$rT, (udiv G8RC:$rA, G8RC:$rB))], isPPC64,
+  PPC970_DGroup_First, PPC970_DGroup_Cracked;
+ def MULLD : XOForm_131, 233, 0, (ops G8RC:$rT, G8RC:$rA, G8RC:$rB),
+  mulld $rT, $rA, $rB, IntMulHD,
+

[llvm-commits] CVS: llvm/lib/Target/PowerPC/PPCInstr64Bit.td

2006-06-16 Thread Chris Lattner


Changes in directory llvm/lib/Target/PowerPC:

PPCInstr64Bit.td updated: 1.2 - 1.3
---
Log message:

Upgrade some load/store instructions to use the proper addressing mode stuff.


---
Diffs of the changes:  (+10 -10)

 PPCInstr64Bit.td |   20 ++--
 1 files changed, 10 insertions(+), 10 deletions(-)


Index: llvm/lib/Target/PowerPC/PPCInstr64Bit.td
diff -u llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.2 
llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.3
--- llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.2Fri Jun 16 16:01:35 2006
+++ llvm/lib/Target/PowerPC/PPCInstr64Bit.tdFri Jun 16 16:29:41 2006
@@ -105,11 +105,11 @@
 
 
 let isLoad = 1, PPC970_Unit = 2 in {
-def LWA  : DSForm_158, 2, (ops GPRC:$rT, s16immX4:$DS, GPRC:$rA),
-lwa $rT, $DS($rA), LdStLWA,
+def LWA  : DSForm_158, 2, (ops G8RC:$rT, memrix:$src),
+lwa $rT, $src, LdStLWA,
 [], isPPC64, PPC970_DGroup_Cracked;
-def LD   : DSForm_258, 0, (ops GPRC:$rT, s16immX4:$DS, GPRC:$rA),
-ld $rT, $DS($rA), LdStLD,
+def LD   : DSForm_258, 0, (ops G8RC:$rT, memrix:$src),
+ld $rT, $src, LdStLD,
 [], isPPC64;
 
 def LWAX : XForm_131, 341, (ops G8RC:$rD, memrr:$src),
@@ -121,15 +121,15 @@
[(set G8RC:$rD, (load xaddr:$src))], isPPC64;
 }
 let isStore = 1, noResults = 1, PPC970_Unit = 2 in {
-def STD  : DSForm_262, 0, (ops GPRC:$rT, s16immX4:$DS, GPRC:$rA),
-std $rT, $DS($rA), LdStSTD,
+def STD  : DSForm_262, 0, (ops G8RC:$rT, memrix:$src),
+std $rT, $src, LdStSTD,
 [], isPPC64;
 
-def STDX  : XForm_831, 149, (ops GPRC:$rS, GPRC:$rA, GPRC:$rB),
-   stdx $rS, $rA, $rB, LdStSTD,
+def STDX  : XForm_831, 149, (ops GPRC:$rS, memrr:$dst),
+   stdx $rS, $dst, LdStSTD,
[], isPPC64, PPC970_DGroup_Cracked;
-def STDUX : XForm_831, 181, (ops GPRC:$rS, GPRC:$rA, GPRC:$rB),
-   stdux $rS, $rA, $rB, LdStSTD,
+def STDUX : XForm_831, 181, (ops GPRC:$rS, memrr:$dst),
+   stdux $rS, $dst, LdStSTD,
[], isPPC64;

 // STD_32/STDX_32 - Just like STD/STDX, but uses a '32-bit' input register.



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits