[llvm-commits] CVS: llvm/lib/Target/X86/X86Subtarget.cpp

2006-10-06 Thread Evan Cheng


Changes in directory llvm/lib/Target/X86:

X86Subtarget.cpp updated: 1.32 - 1.33
---
Log message:

It appears the inline asm in GetCpuIDAndInfo() may clobbers some registers if 
it isn't inlined (at  -O3). Force it to be inlined.

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

 X86Subtarget.cpp |6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)


Index: llvm/lib/Target/X86/X86Subtarget.cpp
diff -u llvm/lib/Target/X86/X86Subtarget.cpp:1.32 
llvm/lib/Target/X86/X86Subtarget.cpp:1.33
--- llvm/lib/Target/X86/X86Subtarget.cpp:1.32   Wed Oct  4 13:33:00 2006
+++ llvm/lib/Target/X86/X86Subtarget.cppFri Oct  6 02:50:56 2006
@@ -28,7 +28,7 @@
 
 /// GetCpuIDAndInfo - Execute the specified cpuid and return the 4 values in 
the
 /// specified arguments.  If we can't run cpuid on the host, return true.
-static bool GetCpuIDAndInfo(unsigned value, unsigned *rEAX, unsigned *rEBX,
+static inline bool GetCpuIDAndInfo(unsigned value, unsigned *rEAX, unsigned 
*rEBX,
 unsigned *rECX, unsigned *rEDX) {
 #if defined(__x86_64__)
   asm (pushq\t%%rbx\n\t
@@ -76,8 +76,8 @@
   unsigned EAX = 0, EBX = 0, ECX = 0, EDX = 0;
   if (GetCpuIDAndInfo(0x1, EAX, EBX, ECX, EDX))
 return generic;
-  unsigned Family  = (EAX  (0x  (32 - 4))  8)  8; // Bits 8 - 11
-  unsigned Model   = (EAX  (0x  (32 - 4))  4)  4; // Bits 4 - 7
+  unsigned Family  = (EAX  8)  0xf; // Bits 8 - 11
+  unsigned Model   = (EAX  4)  0xf; // Bits 4 - 7
   GetCpuIDAndInfo(0x8001, EAX, EBX, ECX, EDX);
   bool Em64T = EDX  (1  29);
 



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


[llvm-commits] CVS: llvm/lib/Target/X86/Makefile X86.td X86Subtarget.cpp X86Subtarget.h

2006-10-06 Thread Evan Cheng


Changes in directory llvm/lib/Target/X86:

Makefile updated: 1.28 - 1.29
X86.td updated: 1.27 - 1.28
X86Subtarget.cpp updated: 1.34 - 1.35
X86Subtarget.h updated: 1.18 - 1.19
---
Log message:

Still need to support -mcpu= or cross compilation will fail. Doh.

---
Diffs of the changes:  (+195 -7)

 Makefile |3 +
 X86.td   |   73 +
 X86Subtarget.cpp |  107 +--
 X86Subtarget.h   |   19 -
 4 files changed, 195 insertions(+), 7 deletions(-)


Index: llvm/lib/Target/X86/Makefile
diff -u llvm/lib/Target/X86/Makefile:1.28 llvm/lib/Target/X86/Makefile:1.29
--- llvm/lib/Target/X86/Makefile:1.28   Fri Oct  6 03:21:07 2006
+++ llvm/lib/Target/X86/MakefileFri Oct  6 04:17:41 2006
@@ -14,6 +14,7 @@
 BUILT_SOURCES = X86GenRegisterInfo.h.inc X86GenRegisterNames.inc \
 X86GenRegisterInfo.inc X86GenInstrNames.inc \
 X86GenInstrInfo.inc X86GenAsmWriter.inc \
-X86GenAsmWriter1.inc X86GenDAGISel.inc
+X86GenAsmWriter1.inc X86GenDAGISel.inc  \
+X86GenSubtarget.inc
 
 include $(LEVEL)/Makefile.common


Index: llvm/lib/Target/X86/X86.td
diff -u llvm/lib/Target/X86/X86.td:1.27 llvm/lib/Target/X86/X86.td:1.28
--- llvm/lib/Target/X86/X86.td:1.27 Fri Oct  6 03:21:07 2006
+++ llvm/lib/Target/X86/X86.td  Fri Oct  6 04:17:41 2006
@@ -17,6 +17,79 @@
 include ../Target.td
 
 
//===--===//
+// X86 Subtarget features.
+//
+ 
+def Feature64Bit : SubtargetFeature64bit, HasX86_64, true,
+Support 64-bit instructions;
+def FeatureMMX   : SubtargetFeaturemmx,X86SSELevel, MMX,
+Enable MMX instructions;
+def FeatureSSE1  : SubtargetFeaturesse, X86SSELevel, SSE1,
+Enable SSE instructions;
+def FeatureSSE2  : SubtargetFeaturesse2, X86SSELevel, SSE2,
+Enable SSE2 instructions;
+def FeatureSSE3  : SubtargetFeaturesse3, X86SSELevel, SSE3,
+Enable SSE3 instructions;
+def Feature3DNow : SubtargetFeature3dnow, X863DNowLevel, ThreeDNow,
+Enable 3DNow! instructions;
+def Feature3DNowA: SubtargetFeature3dnowa, X863DNowLevel, 
ThreeDNowA,
+Enable 3DNow! Athlon instructions;
+
+//===--===//
+// X86 processors supported.
+//===--===//
+
+class Procstring Name, listSubtargetFeature Features
+ : ProcessorName, NoItineraries, Features;
+
+def : Procgeneric, [];
+def : Proci386,[];
+def : Proci486,[];
+def : Procpentium, [];
+def : Procpentium-mmx, [FeatureMMX];
+def : Proci686,[];
+def : Procpentiumpro,  [];
+def : Procpentium2,[FeatureMMX];
+def : Procpentium3,[FeatureMMX, FeatureSSE1];
+def : Procpentium-m,   [FeatureMMX, FeatureSSE1, FeatureSSE2];
+def : Procpentium4,[FeatureMMX, FeatureSSE1, FeatureSSE2];
+def : Procx86-64,  [FeatureMMX, FeatureSSE1, FeatureSSE2,
+   Feature64Bit];
+def : Procyonah,   [FeatureMMX, FeatureSSE1, FeatureSSE2,
+   FeatureSSE3];
+def : Procprescott,[FeatureMMX, FeatureSSE1, FeatureSSE2,
+   FeatureSSE3];
+def : Procnocona,  [FeatureMMX, FeatureSSE1, FeatureSSE2,
+   FeatureSSE3, Feature64Bit];
+def : Proccore2,   [FeatureMMX, FeatureSSE1, FeatureSSE2,
+   FeatureSSE3,  Feature64Bit];
+
+def : Prock6,  [FeatureMMX];
+def : Prock6-2,[FeatureMMX, Feature3DNow];
+def : Prock6-3,[FeatureMMX, Feature3DNow];
+def : Procathlon,  [FeatureMMX, Feature3DNow, Feature3DNowA];
+def : Procathlon-tbird,[FeatureMMX, Feature3DNow, Feature3DNowA];
+def : Procathlon-4,[FeatureMMX, FeatureSSE1, Feature3DNow,
+   Feature3DNowA];
+def : Procathlon-xp,   [FeatureMMX, FeatureSSE1, Feature3DNow,
+   Feature3DNowA];
+def : Procathlon-mp,   [FeatureMMX, FeatureSSE1, Feature3DNow,
+   Feature3DNowA];
+def : Prock8,  [FeatureMMX, FeatureSSE1, FeatureSSE2,
+   Feature3DNow, Feature3DNowA, Feature64Bit];
+def : Procopteron, [FeatureMMX, FeatureSSE1, FeatureSSE2,
+   Feature3DNow, Feature3DNowA, Feature64Bit];
+def : Procathlon64,[FeatureMMX, FeatureSSE1, FeatureSSE2,
+   Feature3DNow, Feature3DNowA, Feature64Bit];
+def : Procathlon-fx,

[llvm-commits] CVS: llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp

2006-10-06 Thread Rafael Espindola


Changes in directory llvm/lib/Target/ARM:

ARMISelDAGToDAG.cpp updated: 1.54 - 1.55
---
Log message:

fix some bugs affecting functions with no arguments


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

 ARMISelDAGToDAG.cpp |6 --
 1 files changed, 4 insertions(+), 2 deletions(-)


Index: llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp
diff -u llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp:1.54 
llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp:1.55
--- llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp:1.54Fri Oct  6 07:50:22 2006
+++ llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp Fri Oct  6 12:26:30 2006
@@ -181,6 +181,8 @@
   }
   unsigned getStackSize(void) {
 int last = is_reg.size() - 1;
+if (last  0)
+  return 0;
 if (isRegister(last))
   return 0;
 return getOffset(last) + MVT::getSizeInBits(getType(last))/8;
@@ -193,7 +195,7 @@
 last--;
 return last;
   }
-  unsigned lastRegNum(void) {
+  int lastRegNum(void) {
 intl = lastRegArg();
 if (l  0)
   return -1;
@@ -264,7 +266,7 @@
   // Build a sequence of copy-to-reg nodes chained together with token chain
   // and flag operands which copy the outgoing args into the appropriate regs.
   SDOperand InFlag;
-  for (unsigned i = 0, e = Layout.lastRegArg(); i = e; ++i) {
+  for (int i = 0, e = Layout.lastRegArg(); i = e; ++i) {
 SDOperand Arg = Op.getOperand(5+2*i);
 unsigned   RegNum = Layout.getRegisterNum(i);
 unsigned Reg1 = regs[RegNum];



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


[llvm-commits] CVS: llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp

2006-10-06 Thread Chris Lattner


Changes in directory llvm/lib/CodeGen/SelectionDAG:

LegalizeDAG.cpp updated: 1.403 - 1.404
---
Log message:

Fix a miscompilation of:

long long foo(long long X) {
  return (long long)(signed char)(int)X;
}

Instead of:

_foo:
extsb r2, r4
srawi r3, r4, 31
mr r4, r2
blr

we now produce:

_foo:
extsb r4, r4
srawi r3, r4, 31
blr

This fixes a miscompilation in ConstantFolding.cpp.



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

 LegalizeDAG.cpp |8 +---
 1 files changed, 5 insertions(+), 3 deletions(-)


Index: llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
diff -u llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp:1.403 
llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp:1.404
--- llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp:1.403 Thu Oct  5 17:57:27 2006
+++ llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp   Fri Oct  6 12:34:12 2006
@@ -4349,12 +4349,14 @@
 
   case ISD::SIGN_EXTEND_INREG:
 ExpandOp(Node-getOperand(0), Lo, Hi);
-// Sign extend the lo-part.
+// sext_inreg the low part if needed.
+Lo = DAG.getNode(ISD::SIGN_EXTEND_INREG, NVT, Lo, Node-getOperand(1));
+
+// The high part gets the sign extension from the lo-part.  This handles
+// things like sextinreg V:i64 from i8.
 Hi = DAG.getNode(ISD::SRA, NVT, Lo,
  DAG.getConstant(MVT::getSizeInBits(NVT)-1,
  TLI.getShiftAmountTy()));
-// sext_inreg the low part if needed.
-Lo = DAG.getNode(ISD::SIGN_EXTEND_INREG, NVT, Lo, Node-getOperand(1));
 break;
 
   case ISD::BSWAP: {



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


[llvm-commits] CVS: llvm/lib/Target/X86/README.txt

2006-10-06 Thread Chris Lattner


Changes in directory llvm/lib/Target/X86:

README.txt updated: 1.140 - 1.141
---
Log message:

ugly codegen


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

 README.txt |   22 ++
 1 files changed, 22 insertions(+)


Index: llvm/lib/Target/X86/README.txt
diff -u llvm/lib/Target/X86/README.txt:1.140 
llvm/lib/Target/X86/README.txt:1.141
--- llvm/lib/Target/X86/README.txt:1.140Fri Oct  6 03:21:07 2006
+++ llvm/lib/Target/X86/README.txt  Fri Oct  6 12:39:34 2006
@@ -711,4 +711,26 @@
 
 into x.h == 0
 
+//===-===//
 
+We currently compile sign_extend_inreg into two shifts:
+
+long foo(long X) {
+  return (long)(signed char)X;
+}
+
+becomes:
+
+_foo:
+movl 4(%esp), %eax
+shll $24, %eax
+sarl $24, %eax
+ret
+
+This could be:
+
+_foo:
+movsbl  4(%esp),%eax
+ret
+
+//===-===//



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


[llvm-commits] CVS: llvm/lib/Target/X86/X86Subtarget.cpp

2006-10-06 Thread Evan Cheng


Changes in directory llvm/lib/Target/X86:

X86Subtarget.cpp updated: 1.35 - 1.36
---
Log message:

80 col violation.

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

 X86Subtarget.cpp |7 ---
 1 files changed, 4 insertions(+), 3 deletions(-)


Index: llvm/lib/Target/X86/X86Subtarget.cpp
diff -u llvm/lib/Target/X86/X86Subtarget.cpp:1.35 
llvm/lib/Target/X86/X86Subtarget.cpp:1.36
--- llvm/lib/Target/X86/X86Subtarget.cpp:1.35   Fri Oct  6 04:17:41 2006
+++ llvm/lib/Target/X86/X86Subtarget.cppFri Oct  6 13:57:51 2006
@@ -28,8 +28,9 @@
 
 /// GetCpuIDAndInfo - Execute the specified cpuid and return the 4 values in 
the
 /// specified arguments.  If we can't run cpuid on the host, return true.
-static inline bool GetCpuIDAndInfo(unsigned value, unsigned *rEAX, unsigned 
*rEBX,
-unsigned *rECX, unsigned *rEDX) {
+static inline bool GetCpuIDAndInfo(unsigned value, unsigned *rEAX,
+   unsigned *rEBX, unsigned *rECX,
+   unsigned *rEDX) {
 #if defined(__x86_64__)
   asm (pushq\t%%rbx\n\t
cpuid\n\t
@@ -103,7 +104,7 @@
   unsigned Family  = (EAX  8)  0xf; // Bits 8 - 11
   unsigned Model   = (EAX  4)  0xf; // Bits 4 - 7
   GetCpuIDAndInfo(0x8001, EAX, EBX, ECX, EDX);
-  bool Em64T = EDX  (1  29);
+  bool Em64T = (EDX  29)  0x1;
 
   union {
 unsigned u[3];



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


[llvm-commits] CVS: llvm-test/External/SPEC/CFP2006/454.calculix/Makefile

2006-10-06 Thread Bill Wendling


Changes in directory llvm-test/External/SPEC/CFP2006/454.calculix:

Makefile updated: 1.4 - 1.5
---
Log message:

Another fix for the caluculix test. It was getting header files from the
wrong place. Blast!


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

 Makefile |2 +-
 1 files changed, 1 insertion(+), 1 deletion(-)


Index: llvm-test/External/SPEC/CFP2006/454.calculix/Makefile
diff -u llvm-test/External/SPEC/CFP2006/454.calculix/Makefile:1.4 
llvm-test/External/SPEC/CFP2006/454.calculix/Makefile:1.5
--- llvm-test/External/SPEC/CFP2006/454.calculix/Makefile:1.4   Wed Sep 27 
16:57:16 2006
+++ llvm-test/External/SPEC/CFP2006/454.calculix/Makefile   Fri Oct  6 
15:07:58 2006
@@ -234,10 +234,10 @@
  -I$(SPEC_BENCH_DIR)/src/SPOOLES/SubMtxManager/src \
  -I$(SPEC_BENCH_DIR)/src/SPOOLES/SymbFac/src   \
  -I$(SPEC_BENCH_DIR)/src/SPOOLES/Tree/src  \
- -I$(SPEC_BENCH_DIR)/src/SPOOLES/Utilities/src \
  -I$(SPEC_BENCH_DIR)/src/SPOOLES/ZV/src\
  -I$(SPEC_BENCH_DIR)/src/SPOOLES/misc/src  \
  -I$(SPEC_BENCH_DIR)/src/SPOOLES   \
+ -I$(SPEC_BENCH_DIR)/src/SPOOLES/Utilities/src \
  -I$(SPEC_BENCH_DIR)/src   \
  -I$(SPEC_BENCH_DIR)/src/include 
 



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


[llvm-commits] CVS: llvm-test/External/SPEC/CFP2006/459.GemsFDTD/Makefile

2006-10-06 Thread Bill Wendling


Changes in directory llvm-test/External/SPEC/CFP2006/459.GemsFDTD:

Makefile updated: 1.2 - 1.3
---
Log message:

Added dependencies so that things build properly


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

 Makefile |   15 +++
 1 files changed, 15 insertions(+)


Index: llvm-test/External/SPEC/CFP2006/459.GemsFDTD/Makefile
diff -u llvm-test/External/SPEC/CFP2006/459.GemsFDTD/Makefile:1.2 
llvm-test/External/SPEC/CFP2006/459.GemsFDTD/Makefile:1.3
--- llvm-test/External/SPEC/CFP2006/459.GemsFDTD/Makefile:1.2   Wed Sep  6 
15:41:12 2006
+++ llvm-test/External/SPEC/CFP2006/459.GemsFDTD/Makefile   Fri Oct  6 
15:29:30 2006
@@ -17,3 +17,18 @@
 else
   STDOUT_FILENAME := train.log
 endif
+
+GemsFDTD.c: parameter.c readdata.c leapfrog.c
+NFT.c: parameter.c globalvar.c posvector.c fourier_transf.c errorcheck.c 
huygens.c excite.c
+PEC.c: parameter.c errorcheck.c readline.c globalvar.c
+UPML.c: parameter.c globalvar.c errorcheck.c PEC.c
+calcflops.c: globalvar.c parameter.c huygens.c UPML.c NFT.c
+excite.c: parameter.c globalvar.c
+fourier_transf.c: parameter.c
+globalvar.c: parameter.c
+huygens.c: parameter.c globalvar.c excite.c errorcheck.c
+leapfrog.c:  errorcheck.c parameter.c huygens.c update.c UPML.c PEC.c NFT.c 
calcflops.c globalvar.c progress.c
+posvector.c: parameter.c
+progress.c: parameter.c globalvar.c
+readdata.c: parameter.c globalvar.c errorcheck.c huygens.c UPML.c excite.c 
NFT.c PEC.c progress.c
+update.c: parameter.c globalvar.c



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


[llvm-commits] CVS: llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp ARMInstrInfo.td

2006-10-06 Thread Rafael Espindola


Changes in directory llvm/lib/Target/ARM:

ARMISelDAGToDAG.cpp updated: 1.56 - 1.57
ARMInstrInfo.td updated: 1.32 - 1.33
---
Log message:

add optional input flag to FMRRD


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

 ARMISelDAGToDAG.cpp |4 ++--
 ARMInstrInfo.td |3 ++-
 2 files changed, 4 insertions(+), 3 deletions(-)


Index: llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp
diff -u llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp:1.56 
llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp:1.57
--- llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp:1.56Fri Oct  6 14:10:05 2006
+++ llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp Fri Oct  6 15:33:26 2006
@@ -284,8 +284,8 @@
 
   Ops.push_back(DAG.getRegister(Reg2, MVT::i32));
   SDVTListVTs = DAG.getVTList(MVT::Other, MVT::Flag);
-  SDOperand Ops[] = {Chain, SDReg1, SDReg2, Arg}; //missing flag
-  Chain = DAG.getNode(ARMISD::FMRRD, VTs, Ops, 4);
+  SDOperand Ops[] = {Chain, SDReg1, SDReg2, Arg, InFlag};
+  Chain = DAG.getNode(ARMISD::FMRRD, VTs, Ops, InFlag.Val ? 5 : 4);
 } else {
   if (VT == MVT::f32)
 Arg = DAG.getNode(ISD::BIT_CONVERT, MVT::i32, Arg);


Index: llvm/lib/Target/ARM/ARMInstrInfo.td
diff -u llvm/lib/Target/ARM/ARMInstrInfo.td:1.32 
llvm/lib/Target/ARM/ARMInstrInfo.td:1.33
--- llvm/lib/Target/ARM/ARMInstrInfo.td:1.32Thu Oct  5 11:48:49 2006
+++ llvm/lib/Target/ARM/ARMInstrInfo.td Fri Oct  6 15:33:26 2006
@@ -78,7 +78,8 @@
 def armfsitod  : SDNodeARMISD::FSITOD, SDTUnaryOp;
 
 def SDTarmfmrrd: SDTypeProfile0, 3, [SDTCisInt0, SDTCisInt1, 
SDTCisFP2];
-def armfmrrd   : SDNodeARMISD::FMRRD, SDTarmfmrrd, [SDNPHasChain, 
SDNPOutFlag];
+def armfmrrd   : SDNodeARMISD::FMRRD, SDTarmfmrrd,
+[SDNPHasChain, SDNPOptInFlag, SDNPOutFlag];
 
 def SDTarmfmdrr: SDTypeProfile1, 2, [SDTCisFP0, SDTCisInt1, 
SDTCisInt2];
 def armfmdrr   : SDNodeARMISD::FMDRR, SDTarmfmdrr, [];



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


[llvm-commits] CVS: llvm/lib/CodeGen/MachineBasicBlock.cpp

2006-10-06 Thread Chris Lattner


Changes in directory llvm/lib/CodeGen:

MachineBasicBlock.cpp updated: 1.31 - 1.32
---
Log message:

print labels even if a MBB doesn't have a corresponding LLVM BB, just don't
print the LLVM BB label.



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

 MachineBasicBlock.cpp |7 ---
 1 files changed, 4 insertions(+), 3 deletions(-)


Index: llvm/lib/CodeGen/MachineBasicBlock.cpp
diff -u llvm/lib/CodeGen/MachineBasicBlock.cpp:1.31 
llvm/lib/CodeGen/MachineBasicBlock.cpp:1.32
--- llvm/lib/CodeGen/MachineBasicBlock.cpp:1.31 Thu Oct  5 20:12:44 2006
+++ llvm/lib/CodeGen/MachineBasicBlock.cpp  Fri Oct  6 16:28:17 2006
@@ -94,9 +94,10 @@
   }
 
   const BasicBlock *LBB = getBasicBlock();
-  if (LBB)
-OS  \n  LBB-getName()   (  (const void*)this
-, LLVM BB @  (const void*) LBB  , ID#  getNumber() 
):\n;
+  OS  \n;
+  if (LBB) OS  LBB-getName();
+  OS   (  (const void*)this
+  , LLVM BB @  (const void*) LBB  , ID#  getNumber() ):\n;
   // Print the preds of this block according to the CFG.
   if (!pred_empty()) {
 OS  Predecessors according to CFG:;



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


[llvm-commits] llvm-gcc commit (dwarf2)

2006-10-06 Thread Chris Lattner

This fixes the build on mingw.  Anton K wrote this patch:




dwarf.diff
Description: Binary data


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


[llvm-commits] CVS: llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp

2006-10-06 Thread Chris Lattner


Changes in directory llvm/lib/CodeGen/SelectionDAG:

SelectionDAGISel.cpp updated: 1.283 - 1.284
---
Log message:

jump tables handle pic


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

 SelectionDAGISel.cpp |5 -
 1 files changed, 5 deletions(-)


Index: llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
diff -u llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1.283 
llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1.284
--- llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1.283Thu Oct  5 
17:57:27 2006
+++ llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp  Fri Oct  6 17:32:29 2006
@@ -846,11 +846,6 @@
 }
 
 void SelectionDAGLowering::visitJumpTable(SelectionDAGISel::JumpTable JT) {
-  // FIXME: Need to emit different code for PIC vs. Non-PIC, specifically,
-  // we need to add the address of the jump table to the value loaded, since
-  // the entries in the jump table will be differences rather than absolute
-  // addresses.
-  
   // Emit the code for the jump table
   MVT::ValueType PTy = TLI.getPointerTy();
   assert((PTy == MVT::i32 || PTy == MVT::i64) 



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


[llvm-commits] CVS: llvm/include/llvm/Target/TargetLowering.h

2006-10-06 Thread Chris Lattner


Changes in directory llvm/include/llvm/Target:

TargetLowering.h updated: 1.79 - 1.80
---
Log message:

Add support for targets to declare that they use a GOT


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

 TargetLowering.h |   11 +++
 1 files changed, 11 insertions(+)


Index: llvm/include/llvm/Target/TargetLowering.h
diff -u llvm/include/llvm/Target/TargetLowering.h:1.79 
llvm/include/llvm/Target/TargetLowering.h:1.80
--- llvm/include/llvm/Target/TargetLowering.h:1.79  Tue Oct  3 19:50:21 2006
+++ llvm/include/llvm/Target/TargetLowering.h   Fri Oct  6 17:46:34 2006
@@ -85,6 +85,10 @@
   MVT::ValueType getShiftAmountTy() const { return ShiftAmountTy; }
   OutOfRangeShiftAmount getShiftAmountFlavor() const {return ShiftAmtHandling; 
}
 
+  /// usesGlobalOffsetTable - Return true if this target uses a GOT for PIC
+  /// codegen.
+  bool usesGlobalOffsetTable() const { return UsesGlobalOffsetTable; }
+  
   /// isSetCCExpensive - Return true if the setcc operation is expensive for
   /// this target.
   bool isSetCCExpensive() const { return SetCCIsExpensive; }
@@ -469,6 +473,9 @@
   //
 
 protected:
+  /// setUsesGlobalOffsetTable - Specify that this target does or doesn't use a
+  /// GOT for PC-relative code.
+  void setUsesGlobalOffsetTable(bool V) { UsesGlobalOffsetTable = V; }
 
   /// setShiftAmountType - Describe the type that should be used for shift
   /// amounts.  This type defaults to the pointer type.
@@ -731,6 +738,10 @@
   ///
   MVT::ValueType PointerTy;
 
+  /// UsesGlobalOffsetTable - True if this target uses a GOT for PIC codegen.
+  ///
+  bool UsesGlobalOffsetTable;
+  
   /// ShiftAmountTy - The type to use for shift amounts, usually i8 or whatever
   /// PointerTy is.
   MVT::ValueType ShiftAmountTy;



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


[llvm-commits] CVS: llvm/lib/Target/Alpha/AlphaISelLowering.cpp

2006-10-06 Thread Chris Lattner


Changes in directory llvm/lib/Target/Alpha:

AlphaISelLowering.cpp updated: 1.64 - 1.65
---
Log message:

Alpha uses a got


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

 AlphaISelLowering.cpp |2 ++
 1 files changed, 2 insertions(+)


Index: llvm/lib/Target/Alpha/AlphaISelLowering.cpp
diff -u llvm/lib/Target/Alpha/AlphaISelLowering.cpp:1.64 
llvm/lib/Target/Alpha/AlphaISelLowering.cpp:1.65
--- llvm/lib/Target/Alpha/AlphaISelLowering.cpp:1.64Thu Oct  5 17:59:48 2006
+++ llvm/lib/Target/Alpha/AlphaISelLowering.cpp Fri Oct  6 17:46:51 2006
@@ -44,6 +44,8 @@
   setSetCCResultType(MVT::i64);
   setSetCCResultContents(ZeroOrOneSetCCResult);
   
+  setUsesGlobalOffsetTable(true);
+  
   addRegisterClass(MVT::i64, Alpha::GPRCRegisterClass);
   addRegisterClass(MVT::f64, Alpha::F8RCRegisterClass);
   addRegisterClass(MVT::f32, Alpha::F4RCRegisterClass);



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


[llvm-commits] CVS: llvm/lib/CodeGen/AsmPrinter.cpp

2006-10-06 Thread Chris Lattner


Changes in directory llvm/lib/CodeGen:

AsmPrinter.cpp updated: 1.107 - 1.108
---
Log message:

If a target uses a GOT, put it in the jt data section, not the text 
section.  This will fix alpha when Andrew implements 
AlphaTargetMachine::getTargetLowering().


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

 AsmPrinter.cpp |   16 
 1 files changed, 12 insertions(+), 4 deletions(-)


Index: llvm/lib/CodeGen/AsmPrinter.cpp
diff -u llvm/lib/CodeGen/AsmPrinter.cpp:1.107 
llvm/lib/CodeGen/AsmPrinter.cpp:1.108
--- llvm/lib/CodeGen/AsmPrinter.cpp:1.107   Thu Oct  5 16:40:14 2006
+++ llvm/lib/CodeGen/AsmPrinter.cpp Fri Oct  6 17:50:56 2006
@@ -22,6 +22,7 @@
 #include llvm/Support/MathExtras.h
 #include llvm/Target/TargetAsmInfo.h
 #include llvm/Target/TargetData.h
+#include llvm/Target/TargetLowering.h
 #include llvm/Target/TargetMachine.h
 #include iostream
 #include cerrno
@@ -200,10 +201,17 @@
   // Pick the directive to use to print the jump table entries, and switch to 
   // the appropriate section.
   if (TM.getRelocationModel() == Reloc::PIC_) {
-// In PIC mode, we need to emit the jump table to the same section as the
-// function body itself, otherwise the label differences won't make sense.
-const Function *F = MF.getFunction();
-SwitchToTextSection(getSectionForFunction(*F).c_str(), F);
+TargetLowering *LoweringInfo = TM.getTargetLowering();
+if (LoweringInfo  LoweringInfo-usesGlobalOffsetTable()) {
+  SwitchToDataSection(TAI-getJumpTableDataSection(), 0);
+  if (TD-getPointerSize() == 8)
+JTEntryDirective = TAI-getData64bitsDirective();
+} else {  
+  // In PIC mode, we need to emit the jump table to the same section as the
+  // function body itself, otherwise the label differences won't make 
sense.
+  const Function *F = MF.getFunction();
+  SwitchToTextSection(getSectionForFunction(*F).c_str(), F);
+}
   } else {
 SwitchToDataSection(TAI-getJumpTableDataSection(), 0);
 if (TD-getPointerSize() == 8)



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


[llvm-commits] CVS: llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp

2006-10-06 Thread Chris Lattner


Changes in directory llvm/lib/CodeGen/SelectionDAG:

TargetLowering.cpp updated: 1.73 - 1.74
---
Log message:

initialize ivar


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

 TargetLowering.cpp |1 +
 1 files changed, 1 insertion(+)


Index: llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
diff -u llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp:1.73 
llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp:1.74
--- llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp:1.73   Tue Oct  3 
19:52:21 2006
+++ llvm/lib/CodeGen/SelectionDAG/TargetLowering.cppFri Oct  6 17:52:08 2006
@@ -30,6 +30,7 @@
   memset(LoadXActions, 0, sizeof(LoadXActions));
 
   IsLittleEndian = TD-isLittleEndian();
+  UsesGlobalOffsetTable = false;
   ShiftAmountTy = SetCCResultTy = PointerTy = 
getValueType(TD-getIntPtrType());
   ShiftAmtHandling = Undefined;
   memset(RegClassForVT, 0,MVT::LAST_VALUETYPE*sizeof(TargetRegisterClass*));



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


[llvm-commits] CVS: llvm/lib/Target/Alpha/AlphaTargetAsmInfo.cpp

2006-10-06 Thread Chris Lattner


Changes in directory llvm/lib/Target/Alpha:

AlphaTargetAsmInfo.cpp updated: 1.3 - 1.4
---
Log message:

Set the jt section


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

 AlphaTargetAsmInfo.cpp |1 +
 1 files changed, 1 insertion(+)


Index: llvm/lib/Target/Alpha/AlphaTargetAsmInfo.cpp
diff -u llvm/lib/Target/Alpha/AlphaTargetAsmInfo.cpp:1.3 
llvm/lib/Target/Alpha/AlphaTargetAsmInfo.cpp:1.4
--- llvm/lib/Target/Alpha/AlphaTargetAsmInfo.cpp:1.3Wed Oct  4 22:13:59 2006
+++ llvm/lib/Target/Alpha/AlphaTargetAsmInfo.cppFri Oct  6 17:52:33 2006
@@ -19,4 +19,5 @@
   AlignmentIsInBytes = false;
   PrivateGlobalPrefix = $;
   JumpTableDirective = .gprel32;
+  JumpTableDataSection = \t.section .rodata\n;
 }



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


[llvm-commits] CVS: llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp

2006-10-06 Thread Chris Lattner


Changes in directory llvm/lib/CodeGen/SelectionDAG:

LegalizeDAG.cpp updated: 1.404 - 1.405
---
Log message:

Fix a bug legalizing zero-extending i64 loads into 32-bit loads.  The bottom
part was always forced to be sextload, even when we needed an zextload.


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

 LegalizeDAG.cpp |5 ++---
 1 files changed, 2 insertions(+), 3 deletions(-)


Index: llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
diff -u llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp:1.404 
llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp:1.405
--- llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp:1.404 Fri Oct  6 12:34:12 2006
+++ llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp   Fri Oct  6 19:58:36 2006
@@ -4474,13 +4474,12 @@
 SDOperand Chain = Node-getOperand(0);
 SDOperand Ptr   = Node-getOperand(1);
 MVT::ValueType EVT = castVTSDNode(Node-getOperand(3))-getVT();
-unsigned LType = Node-getConstantOperandVal(4);
+ISD::LoadExtType LType = (ISD::LoadExtType)Node-getConstantOperandVal(4);
 
 if (EVT == NVT)
   Lo = DAG.getLoad(NVT, Chain, Ptr, Node-getOperand(2));
 else
-  Lo = DAG.getExtLoad(ISD::SEXTLOAD, NVT, Chain, Ptr, Node-getOperand(2),
-  EVT);
+  Lo = DAG.getExtLoad(LType, NVT, Chain, Ptr, Node-getOperand(2), EVT);
 
 // Remember that we legalized the chain.
 AddLegalizedOperand(SDOperand(Node, 1), LegalizeOp(Lo.getValue(1)));



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


[llvm-commits] CVS: llvm/lib/Target/X86/X86InstrSSE.td

2006-10-06 Thread Chris Lattner


Changes in directory llvm/lib/Target/X86:

X86InstrSSE.td updated: 1.133 - 1.134
---
Log message:

eliminate redundancy


---
Diffs of the changes:  (+32 -60)

 X86InstrSSE.td |   92 +++--
 1 files changed, 32 insertions(+), 60 deletions(-)


Index: llvm/lib/Target/X86/X86InstrSSE.td
diff -u llvm/lib/Target/X86/X86InstrSSE.td:1.133 
llvm/lib/Target/X86/X86InstrSSE.td:1.134
--- llvm/lib/Target/X86/X86InstrSSE.td:1.133Tue Oct  3 01:55:11 2006
+++ llvm/lib/Target/X86/X86InstrSSE.td  Fri Oct  6 23:52:09 2006
@@ -2289,66 +2289,38 @@
   Requires[HasSSE2];
 
 // bit_convert
-def : Pat(v2i64 (bitconvert (v4i32 VR128:$src))), (v2i64 VR128:$src),
-  Requires[HasSSE2];
-def : Pat(v2i64 (bitconvert (v8i16 VR128:$src))), (v2i64 VR128:$src),
-  Requires[HasSSE2];
-def : Pat(v2i64 (bitconvert (v16i8 VR128:$src))), (v2i64 VR128:$src),
-  Requires[HasSSE2];
-def : Pat(v2i64 (bitconvert (v2f64 VR128:$src))), (v2i64 VR128:$src),
-  Requires[HasSSE2];
-def : Pat(v2i64 (bitconvert (v4f32 VR128:$src))), (v2i64 VR128:$src),
-  Requires[HasSSE2];
-def : Pat(v4i32 (bitconvert (v2i64 VR128:$src))), (v4i32 VR128:$src),
-  Requires[HasSSE2];
-def : Pat(v4i32 (bitconvert (v8i16 VR128:$src))), (v4i32 VR128:$src),
-  Requires[HasSSE2];
-def : Pat(v4i32 (bitconvert (v16i8 VR128:$src))), (v4i32 VR128:$src),
-  Requires[HasSSE2];
-def : Pat(v4i32 (bitconvert (v2f64 VR128:$src))), (v4i32 VR128:$src),
-  Requires[HasSSE2];
-def : Pat(v4i32 (bitconvert (v4f32 VR128:$src))), (v4i32 VR128:$src),
-  Requires[HasSSE2];
-def : Pat(v8i16 (bitconvert (v2i64 VR128:$src))), (v8i16 VR128:$src),
-  Requires[HasSSE2];
-def : Pat(v8i16 (bitconvert (v4i32 VR128:$src))), (v8i16 VR128:$src),
-  Requires[HasSSE2];
-def : Pat(v8i16 (bitconvert (v16i8 VR128:$src))), (v8i16 VR128:$src),
-  Requires[HasSSE2];
-def : Pat(v8i16 (bitconvert (v2f64 VR128:$src))), (v8i16 VR128:$src),
-  Requires[HasSSE2];
-def : Pat(v8i16 (bitconvert (v4f32 VR128:$src))), (v8i16 VR128:$src),
-  Requires[HasSSE2];
-def : Pat(v16i8 (bitconvert (v2i64 VR128:$src))), (v16i8 VR128:$src),
-  Requires[HasSSE2];
-def : Pat(v16i8 (bitconvert (v4i32 VR128:$src))), (v16i8 VR128:$src),
-  Requires[HasSSE2];
-def : Pat(v16i8 (bitconvert (v8i16 VR128:$src))), (v16i8 VR128:$src),
-  Requires[HasSSE2];
-def : Pat(v16i8 (bitconvert (v2f64 VR128:$src))), (v16i8 VR128:$src),
-  Requires[HasSSE2];
-def : Pat(v16i8 (bitconvert (v4f32 VR128:$src))), (v16i8 VR128:$src),
-  Requires[HasSSE2];
-def : Pat(v4f32 (bitconvert (v2i64 VR128:$src))), (v4f32 VR128:$src),
-  Requires[HasSSE2];
-def : Pat(v4f32 (bitconvert (v4i32 VR128:$src))), (v4f32 VR128:$src),
-  Requires[HasSSE2];
-def : Pat(v4f32 (bitconvert (v8i16 VR128:$src))), (v4f32 VR128:$src),
-  Requires[HasSSE2];
-def : Pat(v4f32 (bitconvert (v16i8 VR128:$src))), (v4f32 VR128:$src),
-  Requires[HasSSE2];
-def : Pat(v4f32 (bitconvert (v2f64 VR128:$src))), (v4f32 VR128:$src),
-  Requires[HasSSE2];
-def : Pat(v2f64 (bitconvert (v2i64 VR128:$src))), (v2f64 VR128:$src),
-  Requires[HasSSE2];
-def : Pat(v2f64 (bitconvert (v4i32 VR128:$src))), (v2f64 VR128:$src),
-  Requires[HasSSE2];
-def : Pat(v2f64 (bitconvert (v8i16 VR128:$src))), (v2f64 VR128:$src),
-  Requires[HasSSE2];
-def : Pat(v2f64 (bitconvert (v16i8 VR128:$src))), (v2f64 VR128:$src),
-  Requires[HasSSE2];
-def : Pat(v2f64 (bitconvert (v4f32 VR128:$src))), (v2f64 VR128:$src),
-  Requires[HasSSE2];
+let Predicates = [HasSSE2] in {
+  def : Pat(v2i64 (bitconvert (v4i32 VR128:$src))), (v2i64 VR128:$src);
+  def : Pat(v2i64 (bitconvert (v8i16 VR128:$src))), (v2i64 VR128:$src);
+  def : Pat(v2i64 (bitconvert (v16i8 VR128:$src))), (v2i64 VR128:$src);
+  def : Pat(v2i64 (bitconvert (v2f64 VR128:$src))), (v2i64 VR128:$src);
+  def : Pat(v2i64 (bitconvert (v4f32 VR128:$src))), (v2i64 VR128:$src);
+  def : Pat(v4i32 (bitconvert (v2i64 VR128:$src))), (v4i32 VR128:$src);
+  def : Pat(v4i32 (bitconvert (v8i16 VR128:$src))), (v4i32 VR128:$src);
+  def : Pat(v4i32 (bitconvert (v16i8 VR128:$src))), (v4i32 VR128:$src);
+  def : Pat(v4i32 (bitconvert (v2f64 VR128:$src))), (v4i32 VR128:$src);
+  def : Pat(v4i32 (bitconvert (v4f32 VR128:$src))), (v4i32 VR128:$src);
+  def : Pat(v8i16 (bitconvert (v2i64 VR128:$src))), (v8i16 VR128:$src);
+  def : Pat(v8i16 (bitconvert (v4i32 VR128:$src))), (v8i16 VR128:$src);
+  def : Pat(v8i16 (bitconvert (v16i8 VR128:$src))), (v8i16 VR128:$src);
+  def : Pat(v8i16 (bitconvert (v2f64 VR128:$src))), (v8i16 VR128:$src);
+  def : Pat(v8i16 (bitconvert (v4f32 VR128:$src))), (v8i16 VR128:$src);
+  def : Pat(v16i8 (bitconvert (v2i64 VR128:$src))), (v16i8 VR128:$src);
+  def : Pat(v16i8 (bitconvert (v4i32 VR128:$src))), (v16i8 VR128:$src);
+  def : Pat(v16i8 (bitconvert (v8i16 VR128:$src))), (v16i8 VR128:$src);
+  def : Pat(v16i8 (bitconvert (v2f64 VR128:$src))), (v16i8 VR128:$src);
+  def : Pat(v16i8 (bitconvert 

[llvm-commits] CVS: llvm/lib/Target/X86/X86InstrSSE.td

2006-10-06 Thread Chris Lattner


Changes in directory llvm/lib/Target/X86:

X86InstrSSE.td updated: 1.134 - 1.135
---
Log message:

Remove RSQRTSS[rm] RCPSS[rm], which are dead.

Introduce SS_IntUnary, a multiclass to replace SS_Int[rm].



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

 X86InstrSSE.td |   37 -
 1 files changed, 16 insertions(+), 21 deletions(-)


Index: llvm/lib/Target/X86/X86InstrSSE.td
diff -u llvm/lib/Target/X86/X86InstrSSE.td:1.134 
llvm/lib/Target/X86/X86InstrSSE.td:1.135
--- llvm/lib/Target/X86/X86InstrSSE.td:1.134Fri Oct  6 23:52:09 2006
+++ llvm/lib/Target/X86/X86InstrSSE.td  Sat Oct  7 00:09:48 2006
@@ -194,6 +194,15 @@
 class SS_Intmbits8 o, string asm, Intrinsic IntId
   : SSIo, MRMSrcMem, (ops VR128:$dst, f32mem:$src), asm,
 [(set VR128:$dst, (v4f32 (IntId (load addr:$src];
+
+
+multiclass SS_IntUnarybits8 o, string asm, Intrinsic IntId {
+  def r : SSIo, MRMSrcReg, (ops VR128:$dst, VR128:$src), asm,
+  [(set VR128:$dst, (v4f32 (IntId VR128:$src)))];
+  def m : SSIo, MRMSrcMem, (ops VR128:$dst, f32mem:$src), asm,
+  [(set VR128:$dst, (v4f32 (IntId (load addr:$src];
+}
+
 class SD_Intrbits8 o, string asm, Intrinsic IntId
   : SDIo, MRMSrcReg, (ops VR128:$dst, VR128:$src), asm,
 [(set VR128:$dst, (v2f64 (IntId VR128:$src)))];
@@ -380,15 +389,6 @@
  sqrtsd {$src, $dst|$dst, $src},
  [(set FR64:$dst, (fsqrt (loadf64 addr:$src)))];
 
-def RSQRTSSr : SSI0x52, MRMSrcReg, (ops FR32:$dst, FR32:$src),
-   rsqrtss {$src, $dst|$dst, $src}, [];
-def RSQRTSSm : SSI0x52, MRMSrcMem, (ops FR32:$dst, f32mem:$src),
-   rsqrtss {$src, $dst|$dst, $src}, [];
-def RCPSSr : SSI0x53, MRMSrcReg, (ops FR32:$dst, FR32:$src),
- rcpss {$src, $dst|$dst, $src}, [];
-def RCPSSm : SSI0x53, MRMSrcMem, (ops FR32:$dst, f32mem:$src),
- rcpss {$src, $dst|$dst, $src}, [];
-
 let isTwoAddress = 1 in {
 let isCommutable = 1 in {
 def MAXSSrr : SSI0x5F, MRMSrcReg, (ops FR32:$dst, FR32:$src1, FR32:$src2),
@@ -451,23 +451,18 @@
int_x86_sse2_sub_sd;
 }
 
-def Int_SQRTSSr : SS_Intr0x51, sqrtss {$src, $dst|$dst, $src},
-  int_x86_sse_sqrt_ss;
-def Int_SQRTSSm : SS_Intm0x51, sqrtss {$src, $dst|$dst, $src},
-  int_x86_sse_sqrt_ss;
+defm Int_SQRTSS : SS_IntUnary0x51, sqrtss {$src, $dst|$dst, $src},
+  int_x86_sse_sqrt_ss;
+
 def Int_SQRTSDr : SD_Intr0x51, sqrtsd {$src, $dst|$dst, $src},
   int_x86_sse2_sqrt_sd;
 def Int_SQRTSDm : SD_Intm0x51, sqrtsd {$src, $dst|$dst, $src},
   int_x86_sse2_sqrt_sd;
 
-def Int_RSQRTSSr : SS_Intr0x52, rsqrtss {$src, $dst|$dst, $src},
-   int_x86_sse_rsqrt_ss;
-def Int_RSQRTSSm : SS_Intm0x52, rsqrtss {$src, $dst|$dst, $src},
-   int_x86_sse_rsqrt_ss;
-def Int_RCPSSr   : SS_Intr0x53, rcpss {$src, $dst|$dst, $src},
-   int_x86_sse_rcp_ss;
-def Int_RCPSSm   : SS_Intm0x53, rcpss {$src, $dst|$dst, $src},
-   int_x86_sse_rcp_ss;
+defm Int_RSQRTSS : SS_IntUnary0x52, rsqrtss {$src, $dst|$dst, $src},
+   int_x86_sse_rsqrt_ss;
+defm Int_RCPSS   : SS_IntUnary0x53, rcpss {$src, $dst|$dst, $src},
+   int_x86_sse_rcp_ss;
 
 let isTwoAddress = 1 in {
 let isCommutable = 1 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/X86/X86InstrSSE.td

2006-10-06 Thread Chris Lattner


Changes in directory llvm/lib/Target/X86:

X86InstrSSE.td updated: 1.135 - 1.136
---
Log message:

pull operand string into the multiclass 


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

 X86InstrSSE.td |   19 +--
 1 files changed, 9 insertions(+), 10 deletions(-)


Index: llvm/lib/Target/X86/X86InstrSSE.td
diff -u llvm/lib/Target/X86/X86InstrSSE.td:1.135 
llvm/lib/Target/X86/X86InstrSSE.td:1.136
--- llvm/lib/Target/X86/X86InstrSSE.td:1.135Sat Oct  7 00:09:48 2006
+++ llvm/lib/Target/X86/X86InstrSSE.td  Sat Oct  7 00:13:26 2006
@@ -196,10 +196,12 @@
 [(set VR128:$dst, (v4f32 (IntId (load addr:$src];
 
 
-multiclass SS_IntUnarybits8 o, string asm, Intrinsic IntId {
-  def r : SSIo, MRMSrcReg, (ops VR128:$dst, VR128:$src), asm,
+multiclass SS_IntUnarybits8 o, string OpcodeStr, Intrinsic IntId {
+  def r : SSIo, MRMSrcReg, (ops VR128:$dst, VR128:$src),
+  !strconcat(OpcodeStr,  {$src, $dst|$dst, $src),
   [(set VR128:$dst, (v4f32 (IntId VR128:$src)))];
-  def m : SSIo, MRMSrcMem, (ops VR128:$dst, f32mem:$src), asm,
+  def m : SSIo, MRMSrcMem, (ops VR128:$dst, f32mem:$src),
+  !strconcat(OpcodeStr,  {$src, $dst|$dst, $src),
   [(set VR128:$dst, (v4f32 (IntId (load addr:$src];
 }
 
@@ -451,19 +453,16 @@
int_x86_sse2_sub_sd;
 }
 
-defm Int_SQRTSS : SS_IntUnary0x51, sqrtss {$src, $dst|$dst, $src},
-  int_x86_sse_sqrt_ss;
+defm Int_SQRTSS  : SS_IntUnary0x51, sqrtss , int_x86_sse_sqrt_ss;
+defm Int_RSQRTSS : SS_IntUnary0x52, rsqrtss, int_x86_sse_rsqrt_ss;
+defm Int_RCPSS   : SS_IntUnary0x53, rcpss  , int_x86_sse_rcp_ss;
+
 
 def Int_SQRTSDr : SD_Intr0x51, sqrtsd {$src, $dst|$dst, $src},
   int_x86_sse2_sqrt_sd;
 def Int_SQRTSDm : SD_Intm0x51, sqrtsd {$src, $dst|$dst, $src},
   int_x86_sse2_sqrt_sd;
 
-defm Int_RSQRTSS : SS_IntUnary0x52, rsqrtss {$src, $dst|$dst, $src},
-   int_x86_sse_rsqrt_ss;
-defm Int_RCPSS   : SS_IntUnary0x53, rcpss {$src, $dst|$dst, $src},
-   int_x86_sse_rcp_ss;
-
 let isTwoAddress = 1 in {
 let isCommutable = 1 in {
 def Int_MAXSSrr : SS_Intrr0x5F, maxss {$src2, $dst|$dst, $src2},



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


[llvm-commits] CVS: llvm/lib/Target/X86/X86InstrSSE.td

2006-10-06 Thread Chris Lattner


Changes in directory llvm/lib/Target/X86:

X86InstrSSE.td updated: 1.136 - 1.137
---
Log message:

convert the sole sd unary intrinsic to a multiclass for consistency


---
Diffs of the changes:  (+9 -19)

 X86InstrSSE.td |   28 +---
 1 files changed, 9 insertions(+), 19 deletions(-)


Index: llvm/lib/Target/X86/X86InstrSSE.td
diff -u llvm/lib/Target/X86/X86InstrSSE.td:1.136 
llvm/lib/Target/X86/X86InstrSSE.td:1.137
--- llvm/lib/Target/X86/X86InstrSSE.td:1.136Sat Oct  7 00:13:26 2006
+++ llvm/lib/Target/X86/X86InstrSSE.td  Sat Oct  7 00:19:31 2006
@@ -188,13 +188,6 @@
 
 
//===--===//
 // Helpers for defining instructions that directly correspond to intrinsics.
-class SS_Intrbits8 o, string asm, Intrinsic IntId
-  : SSIo, MRMSrcReg, (ops VR128:$dst, VR128:$src), asm,
-[(set VR128:$dst, (v4f32 (IntId VR128:$src)))];
-class SS_Intmbits8 o, string asm, Intrinsic IntId
-  : SSIo, MRMSrcMem, (ops VR128:$dst, f32mem:$src), asm,
-[(set VR128:$dst, (v4f32 (IntId (load addr:$src];
-
 
 multiclass SS_IntUnarybits8 o, string OpcodeStr, Intrinsic IntId {
   def r : SSIo, MRMSrcReg, (ops VR128:$dst, VR128:$src),
@@ -205,12 +198,14 @@
   [(set VR128:$dst, (v4f32 (IntId (load addr:$src];
 }
 
-class SD_Intrbits8 o, string asm, Intrinsic IntId
-  : SDIo, MRMSrcReg, (ops VR128:$dst, VR128:$src), asm,
-[(set VR128:$dst, (v2f64 (IntId VR128:$src)))];
-class SD_Intmbits8 o, string asm, Intrinsic IntId
-  : SDIo, MRMSrcMem, (ops VR128:$dst, f64mem:$src), asm,
-[(set VR128:$dst, (v2f64 (IntId (load addr:$src];
+multiclass SD_IntUnarybits8 o, string OpcodeStr, Intrinsic IntId {
+  def r : SDIo, MRMSrcReg, (ops VR128:$dst, VR128:$src),
+  !strconcat(OpcodeStr,  {$src, $dst|$dst, $src),
+  [(set VR128:$dst, (v2f64 (IntId VR128:$src)))];
+  def m : SDIo, MRMSrcMem, (ops VR128:$dst, f64mem:$src),
+  !strconcat(OpcodeStr,  {$src, $dst|$dst, $src),
+  [(set VR128:$dst, (v2f64 (IntId (load addr:$src];
+}
 
 class SS_Intrrbits8 o, string asm, Intrinsic IntId
   : SSIo, MRMSrcReg, (ops VR128:$dst, VR128:$src1, VR128:$src2), asm,
@@ -454,15 +449,10 @@
 }
 
 defm Int_SQRTSS  : SS_IntUnary0x51, sqrtss , int_x86_sse_sqrt_ss;
+defm Int_SQRTSD  : SD_IntUnary0x51, sqrtsd , int_x86_sse2_sqrt_sd;
 defm Int_RSQRTSS : SS_IntUnary0x52, rsqrtss, int_x86_sse_rsqrt_ss;
 defm Int_RCPSS   : SS_IntUnary0x53, rcpss  , int_x86_sse_rcp_ss;
 
-
-def Int_SQRTSDr : SD_Intr0x51, sqrtsd {$src, $dst|$dst, $src},
-  int_x86_sse2_sqrt_sd;
-def Int_SQRTSDm : SD_Intm0x51, sqrtsd {$src, $dst|$dst, $src},
-  int_x86_sse2_sqrt_sd;
-
 let isTwoAddress = 1 in {
 let isCommutable = 1 in {
 def Int_MAXSSrr : SS_Intrr0x5F, maxss {$src2, $dst|$dst, $src2},



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


[llvm-commits] CVS: llvm/lib/Target/X86/X86InstrSSE.td

2006-10-06 Thread Chris Lattner


Changes in directory llvm/lib/Target/X86:

X86InstrSSE.td updated: 1.137 - 1.138
---
Log message:

Pull operand info up into parent class for scalar sse intrinsics.


---
Diffs of the changes:  (+41 -61)

 X86InstrSSE.td |  102 ++---
 1 files changed, 41 insertions(+), 61 deletions(-)


Index: llvm/lib/Target/X86/X86InstrSSE.td
diff -u llvm/lib/Target/X86/X86InstrSSE.td:1.137 
llvm/lib/Target/X86/X86InstrSSE.td:1.138
--- llvm/lib/Target/X86/X86InstrSSE.td:1.137Sat Oct  7 00:19:31 2006
+++ llvm/lib/Target/X86/X86InstrSSE.td  Sat Oct  7 00:26:13 2006
@@ -207,17 +207,21 @@
   [(set VR128:$dst, (v2f64 (IntId (load addr:$src];
 }
 
-class SS_Intrrbits8 o, string asm, Intrinsic IntId
-  : SSIo, MRMSrcReg, (ops VR128:$dst, VR128:$src1, VR128:$src2), asm,
+class SS_Intrrbits8 o, string OpcodeStr, Intrinsic IntId
+  : SSIo, MRMSrcReg, (ops VR128:$dst, VR128:$src1, VR128:$src2),
+!strconcat(OpcodeStr,  {$src2, $dst|$dst, $src2}),
 [(set VR128:$dst, (v4f32 (IntId VR128:$src1, VR128:$src2)))];
-class SS_Intrmbits8 o, string asm, Intrinsic IntId
-  : SSIo, MRMSrcMem, (ops VR128:$dst, VR128:$src1, f32mem:$src2), asm,
+class SS_Intrmbits8 o, string OpcodeStr, Intrinsic IntId
+  : SSIo, MRMSrcMem, (ops VR128:$dst, VR128:$src1, f32mem:$src2),
+!strconcat(OpcodeStr,  {$src2, $dst|$dst, $src2}),
 [(set VR128:$dst, (v4f32 (IntId VR128:$src1, (load addr:$src2];
-class SD_Intrrbits8 o, string asm, Intrinsic IntId
-  : SDIo, MRMSrcReg, (ops VR128:$dst, VR128:$src1, VR128:$src2), asm,
+class SD_Intrrbits8 o, string OpcodeStr, Intrinsic IntId
+  : SDIo, MRMSrcReg, (ops VR128:$dst, VR128:$src1, VR128:$src2),
+!strconcat(OpcodeStr,  {$src2, $dst|$dst, $src2}),
 [(set VR128:$dst, (v2f64 (IntId VR128:$src1, VR128:$src2)))];
-class SD_Intrmbits8 o, string asm, Intrinsic IntId
-  : SDIo, MRMSrcMem, (ops VR128:$dst, VR128:$src1, f64mem:$src2), asm,
+class SD_Intrmbits8 o, string OpcodeStr, Intrinsic IntId
+  : SDIo, MRMSrcMem, (ops VR128:$dst, VR128:$src1, f64mem:$src2),
+!strconcat(OpcodeStr,  {$src2, $dst|$dst, $src2}),
 [(set VR128:$dst, (v2f64 (IntId VR128:$src1, (load addr:$src2];
 
 class PS_Intrbits8 o, string asm, Intrinsic IntId
@@ -410,42 +414,26 @@
 // Aliases to match intrinsics which expect XMM operand(s).
 let isTwoAddress = 1 in {
 let isCommutable = 1 in {
-def Int_ADDSSrr : SS_Intrr0x58, addss {$src2, $dst|$dst, $src2},
-   int_x86_sse_add_ss;
-def Int_ADDSDrr : SD_Intrr0x58, addsd {$src2, $dst|$dst, $src2},
-   int_x86_sse2_add_sd;
-def Int_MULSSrr : SS_Intrr0x59, mulss {$src2, $dst|$dst, $src2},
-   int_x86_sse_mul_ss;
-def Int_MULSDrr : SD_Intrr0x59, mulsd {$src2, $dst|$dst, $src2},
-   int_x86_sse2_mul_sd;
-}
-
-def Int_ADDSSrm : SS_Intrm0x58, addss {$src2, $dst|$dst, $src2},
-   int_x86_sse_add_ss;
-def Int_ADDSDrm : SD_Intrm0x58, addsd {$src2, $dst|$dst, $src2},
-   int_x86_sse2_add_sd;
-def Int_MULSSrm : SS_Intrm0x59, mulss {$src2, $dst|$dst, $src2},
-   int_x86_sse_mul_ss;
-def Int_MULSDrm : SD_Intrm0x59, mulsd {$src2, $dst|$dst, $src2},
-   int_x86_sse2_mul_sd;
-
-def Int_DIVSSrr : SS_Intrr0x5E, divss {$src2, $dst|$dst, $src2},
-   int_x86_sse_div_ss;
-def Int_DIVSSrm : SS_Intrm0x5E, divss {$src2, $dst|$dst, $src2},
-   int_x86_sse_div_ss;
-def Int_DIVSDrr : SD_Intrr0x5E, divsd {$src2, $dst|$dst, $src2},
-   int_x86_sse2_div_sd;
-def Int_DIVSDrm : SD_Intrm0x5E, divsd {$src2, $dst|$dst, $src2},
-   int_x86_sse2_div_sd;
-
-def Int_SUBSSrr : SS_Intrr0x5C, subss {$src2, $dst|$dst, $src2},
-   int_x86_sse_sub_ss;
-def Int_SUBSSrm : SS_Intrm0x5C, subss {$src2, $dst|$dst, $src2},
-   int_x86_sse_sub_ss;
-def Int_SUBSDrr : SD_Intrr0x5C, subsd {$src2, $dst|$dst, $src2},
-   int_x86_sse2_sub_sd;
-def Int_SUBSDrm : SD_Intrm0x5C, subsd {$src2, $dst|$dst, $src2},
-   int_x86_sse2_sub_sd;
+def Int_ADDSSrr : SS_Intrr0x58, addss, int_x86_sse_add_ss;
+def Int_ADDSDrr : SD_Intrr0x58, addsd, int_x86_sse2_add_sd;
+def Int_MULSSrr : SS_Intrr0x59, mulss, int_x86_sse_mul_ss;
+def Int_MULSDrr : SD_Intrr0x59, mulsd, int_x86_sse2_mul_sd;
+}
+
+def Int_ADDSSrm : SS_Intrm0x58, addss, int_x86_sse_add_ss;
+def Int_ADDSDrm : SD_Intrm0x58, addsd, int_x86_sse2_add_sd;
+def Int_MULSSrm : SS_Intrm0x59, mulss, int_x86_sse_mul_ss;
+def Int_MULSDrm : SD_Intrm0x59, mulsd, int_x86_sse2_mul_sd;
+
+def Int_DIVSSrr : SS_Intrr0x5E, divss, int_x86_sse_div_ss;
+def Int_DIVSSrm : SS_Intrm0x5E, divss, int_x86_sse_div_ss;
+def Int_DIVSDrr : SD_Intrr0x5E, divsd, int_x86_sse2_div_sd;
+def Int_DIVSDrm : SD_Intrm0x5E, divsd, 

[llvm-commits] CVS: llvm/lib/Target/X86/X86InstrSSE.td

2006-10-06 Thread Chris Lattner


Changes in directory llvm/lib/Target/X86:

X86InstrSSE.td updated: 1.138 - 1.139
---
Log message:

remove dead/duplicate instructions



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

 X86InstrSSE.td |   21 -
 1 files changed, 21 deletions(-)


Index: llvm/lib/Target/X86/X86InstrSSE.td
diff -u llvm/lib/Target/X86/X86InstrSSE.td:1.138 
llvm/lib/Target/X86/X86InstrSSE.td:1.139
--- llvm/lib/Target/X86/X86InstrSSE.td:1.138Sat Oct  7 00:26:13 2006
+++ llvm/lib/Target/X86/X86InstrSSE.td  Sat Oct  7 00:41:52 2006
@@ -390,27 +390,6 @@
  sqrtsd {$src, $dst|$dst, $src},
  [(set FR64:$dst, (fsqrt (loadf64 addr:$src)))];
 
-let isTwoAddress = 1 in {
-let isCommutable = 1 in {
-def MAXSSrr : SSI0x5F, MRMSrcReg, (ops FR32:$dst, FR32:$src1, FR32:$src2),
-  maxss {$src2, $dst|$dst, $src2}, [];
-def MAXSDrr : SDI0x5F, MRMSrcReg, (ops FR64:$dst, FR32:$src1, FR64:$src2),
-  maxsd {$src2, $dst|$dst, $src2}, [];
-def MINSSrr : SSI0x5D, MRMSrcReg, (ops FR32:$dst, FR32:$src1, FR32:$src2),
-  minss {$src2, $dst|$dst, $src2}, [];
-def MINSDrr : SDI0x5D, MRMSrcReg, (ops FR64:$dst, FR32:$src1, FR64:$src2),
-  minsd {$src2, $dst|$dst, $src2}, [];
-}
-def MAXSSrm : SSI0x5F, MRMSrcMem, (ops FR32:$dst, FR32:$src1, f32mem:$src2),
-  maxss {$src2, $dst|$dst, $src2}, [];
-def MAXSDrm : SDI0x5F, MRMSrcMem, (ops FR64:$dst, FR32:$src1, f64mem:$src2),
-  maxsd {$src2, $dst|$dst, $src2}, [];
-def MINSSrm : SSI0x5D, MRMSrcMem, (ops FR32:$dst, FR32:$src1, f32mem:$src2),
-  minss {$src2, $dst|$dst, $src2}, [];
-def MINSDrm : SDI0x5D, MRMSrcMem, (ops FR64:$dst, FR32:$src1, f64mem:$src2),
-  minsd {$src2, $dst|$dst, $src2}, [];
-}
-
 // Aliases to match intrinsics which expect XMM operand(s).
 let isTwoAddress = 1 in {
 let isCommutable = 1 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/X86/X86InstrSSE.td

2006-10-06 Thread Chris Lattner


Changes in directory llvm/lib/Target/X86:

X86InstrSSE.td updated: 1.139 - 1.140
---
Log message:

Factor operands into packed unary classes


---
Diffs of the changes:  (+21 -25)

 X86InstrSSE.td |   46 +-
 1 files changed, 21 insertions(+), 25 deletions(-)


Index: llvm/lib/Target/X86/X86InstrSSE.td
diff -u llvm/lib/Target/X86/X86InstrSSE.td:1.139 
llvm/lib/Target/X86/X86InstrSSE.td:1.140
--- llvm/lib/Target/X86/X86InstrSSE.td:1.139Sat Oct  7 00:41:52 2006
+++ llvm/lib/Target/X86/X86InstrSSE.td  Sat Oct  7 00:47:20 2006
@@ -237,17 +237,21 @@
   : PDIo, MRMSrcMem, (ops VR128:$dst, f64mem:$src), asm,
 [(set VR128:$dst, (IntId (loadv2f64 addr:$src)))];
 
-class PS_Intrrbits8 o, string asm, Intrinsic IntId
-  : PSIo, MRMSrcReg, (ops VR128:$dst, VR128:$src1, VR128:$src2), asm,
+class PS_Intrrbits8 o, string OpcodeStr, Intrinsic IntId
+  : PSIo, MRMSrcReg, (ops VR128:$dst, VR128:$src1, VR128:$src2),
+!strconcat(OpcodeStr,  {$src2, $dst|$dst, $src2}),
 [(set VR128:$dst, (IntId VR128:$src1, VR128:$src2))];
-class PS_Intrmbits8 o, string asm, Intrinsic IntId
-  : PSIo, MRMSrcMem, (ops VR128:$dst, VR128:$src1, f32mem:$src2), asm,
+class PS_Intrmbits8 o, string OpcodeStr, Intrinsic IntId
+  : PSIo, MRMSrcMem, (ops VR128:$dst, VR128:$src1, f32mem:$src2),
+!strconcat(OpcodeStr,  {$src2, $dst|$dst, $src2}),
 [(set VR128:$dst, (IntId VR128:$src1, (loadv4f32 addr:$src2)))];
-class PD_Intrrbits8 o, string asm, Intrinsic IntId
-  : PDIo, MRMSrcReg, (ops VR128:$dst, VR128:$src1, VR128:$src2), asm,
+class PD_Intrrbits8 o, string OpcodeStr, Intrinsic IntId
+  : PDIo, MRMSrcReg, (ops VR128:$dst, VR128:$src1, VR128:$src2),
+!strconcat(OpcodeStr,  {$src2, $dst|$dst, $src2}),
 [(set VR128:$dst, (IntId VR128:$src1, VR128:$src2))];
-class PD_Intrmbits8 o, string asm, Intrinsic IntId
-  : PDIo, MRMSrcMem, (ops VR128:$dst, VR128:$src1, f64mem:$src2), asm,
+class PD_Intrmbits8 o, string OpcodeStr, Intrinsic IntId
+  : PDIo, MRMSrcMem, (ops VR128:$dst, VR128:$src1, f64mem:$src2),
+!strconcat(OpcodeStr,  {$src2, $dst|$dst, $src2}),
 [(set VR128:$dst, (IntId VR128:$src1, (loadv2f64 addr:$src2)))];
 
 class S3D_Intrrbits8 o, string asm, Intrinsic IntId
@@ -1045,23 +1049,15 @@
 
 let isTwoAddress = 1 in {
 let isCommutable = 1 in {
-def MAXPSrr : PS_Intrr0x5F, maxps {$src2, $dst|$dst, $src2},
-   int_x86_sse_max_ps;
-def MAXPDrr : PD_Intrr0x5F, maxpd {$src2, $dst|$dst, $src2},
-   int_x86_sse2_max_pd;
-def MINPSrr : PS_Intrr0x5D, minps {$src2, $dst|$dst, $src2},
-   int_x86_sse_min_ps;
-def MINPDrr : PD_Intrr0x5D, minpd {$src2, $dst|$dst, $src2},
-   int_x86_sse2_min_pd;
-}
-def MAXPSrm : PS_Intrm0x5F, maxps {$src2, $dst|$dst, $src2},
-   int_x86_sse_max_ps;
-def MAXPDrm : PD_Intrm0x5F, maxpd {$src2, $dst|$dst, $src2},
-   int_x86_sse2_max_pd;
-def MINPSrm : PS_Intrm0x5D, minps {$src2, $dst|$dst, $src2},
-   int_x86_sse_min_ps;
-def MINPDrm : PD_Intrm0x5D, minpd {$src2, $dst|$dst, $src2},
-   int_x86_sse2_min_pd;
+def MAXPSrr : PS_Intrr0x5F, maxps, int_x86_sse_max_ps;
+def MAXPDrr : PD_Intrr0x5F, maxpd, int_x86_sse2_max_pd;
+def MINPSrr : PS_Intrr0x5D, minps, int_x86_sse_min_ps;
+def MINPDrr : PD_Intrr0x5D, minpd, int_x86_sse2_min_pd;
+}
+def MAXPSrm : PS_Intrm0x5F, maxps, int_x86_sse_max_ps;
+def MAXPDrm : PD_Intrm0x5F, maxpd, int_x86_sse2_max_pd;
+def MINPSrm : PS_Intrm0x5D, minps, int_x86_sse_min_ps;
+def MINPDrm : PD_Intrm0x5D, minpd, int_x86_sse2_min_pd;
 }
 
 // Logical



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


[llvm-commits] CVS: llvm/lib/Target/X86/X86InstrSSE.td

2006-10-06 Thread Chris Lattner


Changes in directory llvm/lib/Target/X86:

X86InstrSSE.td updated: 1.140 - 1.141
---
Log message:

simplify patterns by merging in operand info


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

 X86InstrSSE.td |   64 ++---
 1 files changed, 30 insertions(+), 34 deletions(-)


Index: llvm/lib/Target/X86/X86InstrSSE.td
diff -u llvm/lib/Target/X86/X86InstrSSE.td:1.140 
llvm/lib/Target/X86/X86InstrSSE.td:1.141
--- llvm/lib/Target/X86/X86InstrSSE.td:1.140Sat Oct  7 00:47:20 2006
+++ llvm/lib/Target/X86/X86InstrSSE.td  Sat Oct  7 00:50:25 2006
@@ -224,17 +224,21 @@
 !strconcat(OpcodeStr,  {$src2, $dst|$dst, $src2}),
 [(set VR128:$dst, (v2f64 (IntId VR128:$src1, (load addr:$src2];
 
-class PS_Intrbits8 o, string asm, Intrinsic IntId
-  : PSIo, MRMSrcReg, (ops VR128:$dst, VR128:$src), asm,
+class PS_Intrbits8 o, string OpcodeStr, Intrinsic IntId
+  : PSIo, MRMSrcReg, (ops VR128:$dst, VR128:$src),
+!strconcat(OpcodeStr,  {$src, $dst|$dst, $src}),
 [(set VR128:$dst, (IntId VR128:$src))];
-class PS_Intmbits8 o, string asm, Intrinsic IntId
-  : PSIo, MRMSrcMem, (ops VR128:$dst, f32mem:$src), asm,
+class PS_Intmbits8 o, string OpcodeStr, Intrinsic IntId
+  : PSIo, MRMSrcMem, (ops VR128:$dst, f32mem:$src),
+!strconcat(OpcodeStr,  {$src, $dst|$dst, $src}),
 [(set VR128:$dst, (IntId (loadv4f32 addr:$src)))];
-class PD_Intrbits8 o, string asm, Intrinsic IntId
-  : PDIo, MRMSrcReg, (ops VR128:$dst, VR128:$src), asm,
+class PD_Intrbits8 o, string OpcodeStr, Intrinsic IntId
+  : PDIo, MRMSrcReg, (ops VR128:$dst, VR128:$src),
+!strconcat(OpcodeStr,  {$src, $dst|$dst, $src}),
 [(set VR128:$dst, (IntId VR128:$src))];
-class PD_Intmbits8 o, string asm, Intrinsic IntId
-  : PDIo, MRMSrcMem, (ops VR128:$dst, f64mem:$src), asm,
+class PD_Intmbits8 o, string OpcodeStr, Intrinsic IntId
+  : PDIo, MRMSrcMem, (ops VR128:$dst, f64mem:$src),
+!strconcat(OpcodeStr,  {$src, $dst|$dst, $src}),
 [(set VR128:$dst, (IntId (loadv2f64 addr:$src)))];
 
 class PS_Intrrbits8 o, string OpcodeStr, Intrinsic IntId
@@ -1029,35 +1033,27 @@
  (loadv2f64 addr:$src2)))];
 }
 
-def SQRTPSr : PS_Intr0x51, sqrtps {$src, $dst|$dst, $src},
-  int_x86_sse_sqrt_ps;
-def SQRTPSm : PS_Intm0x51, sqrtps {$src, $dst|$dst, $src},
-  int_x86_sse_sqrt_ps;
-def SQRTPDr : PD_Intr0x51, sqrtpd {$src, $dst|$dst, $src},
-  int_x86_sse2_sqrt_pd;
-def SQRTPDm : PD_Intm0x51, sqrtpd {$src, $dst|$dst, $src},
-  int_x86_sse2_sqrt_pd;
-
-def RSQRTPSr : PS_Intr0x52, rsqrtps {$src, $dst|$dst, $src},
-   int_x86_sse_rsqrt_ps;
-def RSQRTPSm : PS_Intm0x52, rsqrtps {$src, $dst|$dst, $src},
-   int_x86_sse_rsqrt_ps;
-def RCPPSr : PS_Intr0x53, rcpps {$src, $dst|$dst, $src},
- int_x86_sse_rcp_ps;
-def RCPPSm : PS_Intm0x53, rcpps {$src, $dst|$dst, $src},
- int_x86_sse_rcp_ps;
+def SQRTPSr  : PS_Intr0x51, sqrtps, int_x86_sse_sqrt_ps;
+def SQRTPSm  : PS_Intm0x51, sqrtps, int_x86_sse_sqrt_ps;
+def SQRTPDr  : PD_Intr0x51, sqrtpd, int_x86_sse2_sqrt_pd;
+def SQRTPDm  : PD_Intm0x51, sqrtpd, int_x86_sse2_sqrt_pd;
+
+def RSQRTPSr : PS_Intr0x52, rsqrtps, int_x86_sse_rsqrt_ps;
+def RSQRTPSm : PS_Intm0x52, rsqrtps, int_x86_sse_rsqrt_ps;
+def RCPPSr   : PS_Intr0x53, rcpps, int_x86_sse_rcp_ps;
+def RCPPSm   : PS_Intm0x53, rcpps, int_x86_sse_rcp_ps;
 
 let isTwoAddress = 1 in {
 let isCommutable = 1 in {
-def MAXPSrr : PS_Intrr0x5F, maxps, int_x86_sse_max_ps;
-def MAXPDrr : PD_Intrr0x5F, maxpd, int_x86_sse2_max_pd;
-def MINPSrr : PS_Intrr0x5D, minps, int_x86_sse_min_ps;
-def MINPDrr : PD_Intrr0x5D, minpd, int_x86_sse2_min_pd;
-}
-def MAXPSrm : PS_Intrm0x5F, maxps, int_x86_sse_max_ps;
-def MAXPDrm : PD_Intrm0x5F, maxpd, int_x86_sse2_max_pd;
-def MINPSrm : PS_Intrm0x5D, minps, int_x86_sse_min_ps;
-def MINPDrm : PD_Intrm0x5D, minpd, int_x86_sse2_min_pd;
+def MAXPSrr  : PS_Intrr0x5F, maxps, int_x86_sse_max_ps;
+def MAXPDrr  : PD_Intrr0x5F, maxpd, int_x86_sse2_max_pd;
+def MINPSrr  : PS_Intrr0x5D, minps, int_x86_sse_min_ps;
+def MINPDrr  : PD_Intrr0x5D, minpd, int_x86_sse2_min_pd;
+}
+def MAXPSrm  : PS_Intrm0x5F, maxps, int_x86_sse_max_ps;
+def MAXPDrm  : PD_Intrm0x5F, maxpd, int_x86_sse2_max_pd;
+def MINPSrm  : PS_Intrm0x5D, minps, int_x86_sse_min_ps;
+def MINPDrm  : PD_Intrm0x5D, minpd, int_x86_sse2_min_pd;
 }
 
 // Logical



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