[llvm-commits] [llvm] r42717 - /llvm/trunk/include/llvm/ADT/SparseBitVector.h

2007-10-06 Thread Daniel Berlin
Author: dannyb
Date: Sat Oct  6 23:47:57 2007
New Revision: 42717

URL: http://llvm.org/viewvc/llvm-project?rev=42717&view=rev
Log:
Some more problems noticed by Curtis

Modified:
llvm/trunk/include/llvm/ADT/SparseBitVector.h

Modified: llvm/trunk/include/llvm/ADT/SparseBitVector.h
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/SparseBitVector.h?rev=42717&r1=42716&r2=42717&view=diff

==
--- llvm/trunk/include/llvm/ADT/SparseBitVector.h (original)
+++ llvm/trunk/include/llvm/ADT/SparseBitVector.h Sat Oct  6 23:47:57 2007
@@ -648,8 +648,8 @@
 ElementListIter Iter1 = Elements.begin();
 ElementListConstIter Iter2 = RHS.Elements.begin();
 
-// Check if they are both empty
-if (Elements.empty() && RHS.Elements.empty())
+// If either our bitmap or RHS is empty, we are done
+if (Elements.empty() || RHS.Elements.empty())
   return false;
 
 // Loop through, intersecting as we go, erasing elements when necessary.
@@ -692,8 +692,9 @@
 ElementListConstIter Iter1 = RHS1.Elements.begin();
 ElementListConstIter Iter2 = RHS2.Elements.begin();
 
-// Check if they are both empty.
-if (RHS1.empty() && RHS2.empty())
+// If RHS1 is empty, we are done
+// If RHS2 is empty, we still have to copy RHS1
+if (RHS1.Elements.empty())
   return;
 
 // Loop through, intersecting as we go, erasing elements when necessary.
@@ -716,6 +717,9 @@
 ++Iter1;
 ++Iter2;
   } else {
+SparseBitVectorElement *NewElement =
+  new SparseBitVectorElement(*Iter1);
+Elements.push_back(NewElement);
 ++Iter1;
   }
 }


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


Re: [llvm-commits] [llvm] r42699 - /llvm/trunk/lib/Target/X86/X86RegisterInfo.cpp

2007-10-06 Thread Chris Lattner
> URL: http://llvm.org/viewvc/llvm-project?rev=42699&view=rev
> Log:
> Move merge code into new helper function.

Nice:

> +// mergeSPUpdatesUp - Merge two stack-manipulating instructions  
> upper iterator.
> +static
> +void mergeSPUpdatesUp(MachineBasicBlock &MBB,  
> MachineBasicBlock::iterator &MBBI,
> +  unsigned StackPtr, uint64_t *NumBytes = NULL) {
> +  if (MBBI != MBB.begin()) {

How about starting this out with:

if (MBBI == MBB.begin()) return;

to unnest the function body one level?

-Chris



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


Re: [llvm-commits] [test-suite] r42694 - in /test-suite/trunk/MultiSource/Benchmarks/MiBench/telecomm-gsm: config.h toast.c

2007-10-06 Thread Chris Lattner

On Oct 6, 2007, at 3:55 AM, Anton Korobeynikov wrote:

> Author: asl
> Date: Sat Oct  6 05:55:20 2007
> New Revision: 42694
>
> URL: http://llvm.org/viewvc/llvm-project?rev=42694&view=rev
> Log:
> Unbreak toast again for mingw32.
> Funny, but we have two toast's in in llvm-test. Maybe we should  
> drop one?

Where is the other toast?

-Chris

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


[llvm-commits] [llvm] r42713 - in /llvm/trunk: bindings/ocaml/llvm/llvm.ml bindings/ocaml/llvm/llvm.mli bindings/ocaml/llvm/llvm_ocaml.c include/llvm-c/Core.h lib/VMCore/Core.cpp test/Bindings/Ocaml/v

2007-10-06 Thread Gordon Henriksen
Author: gordon
Date: Sat Oct  6 19:13:35 2007
New Revision: 42713

URL: http://llvm.org/viewvc/llvm-project?rev=42713&view=rev
Log:
C and Objective Caml bindings for PATypeHolder.

Modified:
llvm/trunk/bindings/ocaml/llvm/llvm.ml
llvm/trunk/bindings/ocaml/llvm/llvm.mli
llvm/trunk/bindings/ocaml/llvm/llvm_ocaml.c
llvm/trunk/include/llvm-c/Core.h
llvm/trunk/lib/VMCore/Core.cpp
llvm/trunk/test/Bindings/Ocaml/vmcore.ml

Modified: llvm/trunk/bindings/ocaml/llvm/llvm.ml
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/bindings/ocaml/llvm/llvm.ml?rev=42713&r1=42712&r2=42713&view=diff

==
--- llvm/trunk/bindings/ocaml/llvm/llvm.ml (original)
+++ llvm/trunk/bindings/ocaml/llvm/llvm.ml Sat Oct  6 19:13:35 2007
@@ -16,6 +16,7 @@
 (* These abstract types correlate directly to the LLVM VMCore classes. *)
 type llmodule
 type lltype
+type lltypehandle
 type llvalue
 type llbasicblock (* These are actually values, but
  benefit from type checking. *)
@@ -176,6 +177,11 @@
 let void_type = _void_type ()
 let label_type = _label_type ()
 
+(*--... Operations on type handles 
.--*)
+external handle_to_type : lltype -> lltypehandle = "llvm_handle_to_type"
+external type_of_handle : lltypehandle -> lltype = "llvm_type_of_handle"
+external refine_type : lltype -> lltype -> unit = "llvm_refine_type"
+
 
 (*===-- Values 
===*)
 

Modified: llvm/trunk/bindings/ocaml/llvm/llvm.mli
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/bindings/ocaml/llvm/llvm.mli?rev=42713&r1=42712&r2=42713&view=diff

==
--- llvm/trunk/bindings/ocaml/llvm/llvm.mli (original)
+++ llvm/trunk/bindings/ocaml/llvm/llvm.mli Sat Oct  6 19:13:35 2007
@@ -16,6 +16,7 @@
 (* These abstract types correlate directly to the LLVM VMCore classes. *)
 type llmodule
 type lltype
+type lltypehandle
 type llvalue
 type llbasicblock (* These are actually values, but
  benefit from type checking. *)
@@ -160,6 +161,11 @@
 val void_type : lltype
 val label_type : lltype
 
+(*--... Operations on type handles 
.--*)
+external handle_to_type : lltype -> lltypehandle = "llvm_handle_to_type"
+external type_of_handle : lltypehandle -> lltype = "llvm_type_of_handle"
+external refine_type : lltype -> lltype -> unit = "llvm_refine_type"
+
 
 (*===-- Values 
===*)
 external type_of : llvalue -> lltype = "llvm_type_of"

Modified: llvm/trunk/bindings/ocaml/llvm/llvm_ocaml.c
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/bindings/ocaml/llvm/llvm_ocaml.c?rev=42713&r1=42712&r2=42713&view=diff

==
--- llvm/trunk/bindings/ocaml/llvm/llvm_ocaml.c (original)
+++ llvm/trunk/bindings/ocaml/llvm/llvm_ocaml.c Sat Oct  6 19:13:35 2007
@@ -195,6 +195,38 @@
   return LLVMOpaqueType();
 }
 
+/*--... Operations on type handles 
.--*/
+
+#define Typehandle_val(v)  (*(LLVMTypeHandleRef *)(Data_custom_val(v)))
+
+void llvm_finalize_handle(value TH) {
+  LLVMDisposeTypeHandle(Typehandle_val(TH));
+}
+
+static struct custom_operations typehandle_ops = {
+  (char *) "LLVMTypeHandle",
+  llvm_finalize_handle,
+  custom_compare_default,
+  custom_hash_default,
+  custom_serialize_default,
+  custom_deserialize_default
+};
+
+CAMLprim value llvm_handle_to_type(LLVMTypeRef PATy) {
+  value TH = alloc_custom(&typehandle_ops, sizeof(LLVMBuilderRef), 0, 1);
+  Typehandle_val(TH) = LLVMCreateTypeHandle(PATy);
+  return TH;
+}
+
+CAMLprim LLVMTypeRef llvm_type_of_handle(value TH) {
+  return LLVMResolveTypeHandle(Typehandle_val(TH));
+}
+
+CAMLprim value llvm_refine_type(LLVMTypeRef AbstractTy, LLVMTypeRef 
ConcreteTy){
+  LLVMRefineAbstractType(AbstractTy, ConcreteTy);
+  return Val_unit;
+}
+
 
 /*===-- VALUES 
===*/
 

Modified: llvm/trunk/include/llvm-c/Core.h
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm-c/Core.h?rev=42713&r1=42712&r2=42713&view=diff

==
--- llvm/trunk/include/llvm-c/Core.h (original)
+++ llvm/trunk/include/llvm-c/Core.h Sat Oct  6 19:13:35 2007
@@ -47,6 +47,7 @@
 /* Opaque types. */
 typedef struct LLVMOpaqueModule *LLVMModuleRef;
 typedef struct LLVMOpaqueType *LLVMTypeRef;
+typedef struct LLVMOpaqueTypeHandle *LLVMTypeHandleRef;
 typedef struct LLVMOpaqueValue *LLVMValueRef;
 typedef struct LLVMOpaqueBasicBlock *LLVMBasicBlockRef;
 typedef struct LLVMOpaqueBuilder *LLVMBuilderRef;
@@ -204,6 +205,12 @@
 LLVMTypeRef LLVMLabelType();
 LLVMTypeRef LLVMOpaqueType();
 
+/* Operations on type handles */
+LLVMTypeH

Re: [llvm-commits] [llvm] r42677 - in /llvm/trunk/lib: CodeGen/SelectionDAG/DAGCombiner.cpp Target/X86/X86InstrSSE.td

2007-10-06 Thread Evan Cheng


On Oct 5, 2007, at 10:11 PM, Chris Lattner <[EMAIL PROTECTED]> wrote:

> Evan, it looks like you missed a commit.  Would a similar approach be
> suitable to implement this X86/README-SSE.txt entry?:

Looks that way. Some of the x86 specific shuffle optmizations (and  
missing ones like this) probably should move to the combiner.

Evan

>
>
> +
> +These functions should produce the same code:
> +
> +#include 
> +
> +typedef long long __m128i __attribute__ ((__vector_size__ (16)));
> +
> +int foo(__m128i* val) {
> +  return __builtin_ia32_vec_ext_v4si(*val, 1);
> +}
> +int bar(__m128i* val) {
> +  union vs {
> +__m128i *_v;
> +int* _s;
> +  } v = {val};
> +  return v._s[1];
> +}
> +
> +We currently produce (with -m64):
> +
> +_foo:
> +pshufd $1, (%rdi), %xmm0
> +movd %xmm0, %eax
> +ret
> +_bar:
> +movl 4(%rdi), %eax
> +ret
> +
>
> -Chris
>
>
> On Oct 5, 2007, at 7:46 PM, Evan Cheng wrote:
>
>> Author: evancheng
>> Date: Fri Oct  5 21:46:29 2007
>> New Revision: 42677
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=42677&view=rev
>> Log:
>> Added DAG xforms. e.g.
>> (vextract (v4f32 s2v (f32 load $addr)), 0) -> (f32 load $addr)
>> (vextract (v4i32 bc (v4f32 s2v (f32 load $addr))), 0) -> (i32 load
>> $addr)
>> Remove x86 specific patterns.
>>
>> Modified:
>>llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
>>llvm/trunk/lib/Target/X86/X86InstrSSE.td
>>
>> Modified: llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/
>> SelectionDAG/DAGCombiner.cpp?rev=42677&r1=42676&r2=42677&view=diff
>>
>> === 
>> ===
>> 
>> --- llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp (original)
>> +++ llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp Fri Oct  5
>> 21:46:29 2007
>> @@ -263,6 +263,7 @@
>> SDOperand visitLOAD(SDNode *N);
>> SDOperand visitSTORE(SDNode *N);
>> SDOperand visitINSERT_VECTOR_ELT(SDNode *N);
>> +SDOperand visitEXTRACT_VECTOR_ELT(SDNode *N);
>> SDOperand visitBUILD_VECTOR(SDNode *N);
>> SDOperand visitCONCAT_VECTORS(SDNode *N);
>> SDOperand visitVECTOR_SHUFFLE(SDNode *N);
>> @@ -682,6 +683,7 @@
>>   case ISD::LOAD:   return visitLOAD(N);
>>   case ISD::STORE:  return visitSTORE(N);
>>   case ISD::INSERT_VECTOR_ELT:  return visitINSERT_VECTOR_ELT(N);
>> +  case ISD::EXTRACT_VECTOR_ELT: return visitEXTRACT_VECTOR_ELT(N);
>>   case ISD::BUILD_VECTOR:   return visitBUILD_VECTOR(N);
>>   case ISD::CONCAT_VECTORS: return visitCONCAT_VECTORS(N);
>>   case ISD::VECTOR_SHUFFLE: return visitVECTOR_SHUFFLE(N);
>> @@ -2907,9 +2909,8 @@
>> return DAG.getNode(ISD::BIT_CONVERT, VT, N0.getOperand(0));
>>
>>   // fold (conv (load x)) -> (load (conv*)x)
>> -  // If the resultant load doesn't need a  higher alignment than
>> the original!
>> -  if (ISD::isNON_EXTLoad(N0.Val) && N0.hasOneUse() &&
>> -  ISD::isUNINDEXEDLoad(N0.Val) &&
>> +  // If the resultant load doesn't need a higher alignment than
>> the original!
>> +  if (ISD::isNormalLoad(N0.Val) && N0.hasOneUse() &&
>>   TLI.isOperationLegal(ISD::LOAD, VT)) {
>> LoadSDNode *LN0 = cast(N0);
>> unsigned Align = TLI.getTargetMachine().getTargetData()->
>> @@ -3901,6 +3902,54 @@
>>   return SDOperand();
>> }
>>
>> +SDOperand DAGCombiner::visitEXTRACT_VECTOR_ELT(SDNode *N) {
>> +  SDOperand InVec = N->getOperand(0);
>> +  SDOperand EltNo = N->getOperand(1);
>> +
>> +  // (vextract (v4f32 s2v (f32 load $addr)), 0) -> (f32 load $addr)
>> +  // (vextract (v4i32 bc (v4f32 s2v (f32 load $addr))), 0) -> (i32
>> load $addr)
>> +  if (isa(EltNo)) {
>> +unsigned Elt = cast(EltNo)->getValue();
>> +bool NewLoad = false;
>> +if (Elt == 0) {
>> +  MVT::ValueType VT = InVec.getValueType();
>> +  MVT::ValueType EVT = MVT::getVectorElementType(VT);
>> +  MVT::ValueType LVT = EVT;
>> +  unsigned NumElts = MVT::getVectorNumElements(VT);
>> +  if (InVec.getOpcode() == ISD::BIT_CONVERT) {
>> +MVT::ValueType BCVT = InVec.getOperand(0).getValueType();
>> +if (NumElts != MVT::getVectorNumElements(BCVT))
>> +  return SDOperand();
>> +InVec = InVec.getOperand(0);
>> +EVT = MVT::getVectorElementType(BCVT);
>> +NewLoad = true;
>> +  }
>> +  if (InVec.getOpcode() == ISD::SCALAR_TO_VECTOR &&
>> +  InVec.getOperand(0).getValueType() == EVT &&
>> +  ISD::isNormalLoad(InVec.getOperand(0).Val) &&
>> +  InVec.getOperand(0).hasOneUse()) {
>> +LoadSDNode *LN0 = cast(InVec.getOperand(0));
>> +unsigned Align = LN0->getAlignment();
>> +if (NewLoad) {
>> +  // Check the resultant load doesn't need a higher
>> alignment than the
>> +  // original load.
>> +  unsigned NewAlign = TLI.getTargetMachine().getTargetData
>> ()->
>> +getABITypeAlignment(MVT::getTypeForV

Re: [llvm-commits] [llvm] r42661 - in /llvm/trunk/lib/Target/X86: X86InstrInfo.cpp X86InstrInfo.td X86InstrX86-64.td

2007-10-06 Thread Evan Cheng
Not crazy at all. If I had any sense at all I would have done that  
back then. :) I'll make that clean up one of these days.

Evan

On Oct 5, 2007, at 4:45 PM, Chris Lattner <[EMAIL PROTECTED]> wrote:

>> URL: http://llvm.org/viewvc/llvm-project?rev=42661&view=rev
>> Log:
>> Commute x86 cmove instructions by swapping the operands and change
>> the condition
>> to its inverse.
>> Testing this as llcbeta
>
> Random crazy idea:
>
>> +def CMOVB16rm : I<0x42, MRMSrcMem,   // if > +  (outs GR16:$dst), (ins GR16:$src1, i16mem:$src2),
>> +  "cmovb\t{$src2, $dst|$dst, $src2}",
>> +  [(set GR16:$dst, (X86cmov GR16:$src1, (loadi16
>> addr:$src2),
>> +   X86_COND_B, EFLAGS))]>,
>> +  TB, OpSize;
>
> Instead of having one instruction for each comparison code, would it
> make sense to have one "CMOV16rm" that took the condcode as an
> immediate argument?  If you had that, you could change the comparison
> just by twiddling the immediate operand and wouldn't have a bazillion
> CMOV instructions.
>
> -Chris
>
>
> ___
> llvm-commits mailing list
> llvm-commits@cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] [llvm] r42707 - in /llvm/trunk: Xcode/LLVM.xcodeproj/project.pbxproj bindings/ocaml/Makefile bindings/ocaml/Makefile.ocaml bindings/ocaml/analysis/ bindings/ocaml/analysis/Makefile bind

2007-10-06 Thread Gordon Henriksen
Author: gordon
Date: Sat Oct  6 16:00:36 2007
New Revision: 42707

URL: http://llvm.org/viewvc/llvm-project?rev=42707&view=rev
Log:
Bindings for the verifier.

Added:
llvm/trunk/bindings/ocaml/analysis/   (with props)
llvm/trunk/bindings/ocaml/analysis/Makefile
llvm/trunk/bindings/ocaml/analysis/analysis_ocaml.c
llvm/trunk/bindings/ocaml/analysis/llvm_analysis.ml
llvm/trunk/bindings/ocaml/analysis/llvm_analysis.mli
llvm/trunk/include/llvm-c/Analysis.h
llvm/trunk/lib/Analysis/Analysis.cpp
llvm/trunk/test/Bindings/Ocaml/analysis.ml
Modified:
llvm/trunk/Xcode/LLVM.xcodeproj/project.pbxproj
llvm/trunk/bindings/ocaml/Makefile
llvm/trunk/bindings/ocaml/Makefile.ocaml
llvm/trunk/bindings/ocaml/bitwriter/Makefile
llvm/trunk/bindings/ocaml/llvm/Makefile
llvm/trunk/lib/Bitcode/Writer/BitWriter.cpp

Modified: llvm/trunk/Xcode/LLVM.xcodeproj/project.pbxproj
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/Xcode/LLVM.xcodeproj/project.pbxproj?rev=42707&r1=42706&r2=42707&view=diff

==
--- llvm/trunk/Xcode/LLVM.xcodeproj/project.pbxproj (original)
+++ llvm/trunk/Xcode/LLVM.xcodeproj/project.pbxproj Sat Oct  6 16:00:36 2007
@@ -137,6 +137,11 @@
9F7794870C73D51000551F9C /* LLVMBuilder.h */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = 
LLVMBuilder.h; sourceTree = ""; };
9F7794880C73D51000551F9C /* MemoryBuffer.h */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = 
MemoryBuffer.h; sourceTree = ""; };
9F7794890C73D51000551F9C /* Streams.h */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = 
Streams.h; sourceTree = ""; };
+   9F7C23E50CB81C2100498408 /* Analysis.h */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = 
Analysis.h; sourceTree = ""; };
+   9F7C23E60CB81C2B00498408 /* Analysis.cpp */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; 
path = Analysis.cpp; sourceTree = ""; };
+   9F7C240C0CB81ECD00498408 /* analysis_ocaml.c */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = 
analysis_ocaml.c; sourceTree = ""; };
+   9F7C240D0CB81ECD00498408 /* llvm_analysis.ml */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = 
llvm_analysis.ml; sourceTree = ""; };
+   9F7C240E0CB81ECD00498408 /* llvm_analysis.mli */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = 
llvm_analysis.mli; sourceTree = ""; };
9FA638D90C77B184007F12AE /* AutoUpgrade.h */ = {isa = 
PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = 
AutoUpgrade.h; sourceTree = ""; };
9FA638DA0C77B184007F12AE /* GlobalAlias.h */ = {isa = 
PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = 
GlobalAlias.h; sourceTree = ""; };
9FA638DB0C77B1AB007F12AE /* APInt.h */ = {isa = 
PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = 
APInt.h; sourceTree = ""; };
@@ -166,7 +171,6 @@
9FE25D900CAB166D005383FC /* APFloat.h */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = 
APFloat.h; sourceTree = ""; };
9FE25D910CAB166D005383FC /* SparseBitVector.h */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = 
SparseBitVector.h; sourceTree = ""; };
9FE25D920CAB169F005383FC /* RegisterCoalescer.h */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = 
RegisterCoalescer.h; sourceTree = ""; };
-   9FE25D930CAB16D8005383FC /* PostDominatorCalculation.h */ = 
{isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; 
path = PostDominatorCalculation.h; sourceTree = ""; };
9FE25D940CAB16FB005383FC /* RegisterCoalescer.cpp */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; 
path = RegisterCoalescer.cpp; sourceTree = ""; };
9FE25D950CAB1724005383FC /* APFloat.cpp */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; 
path = APFloat.cpp; sourceTree = ""; };
9FE25D960CAB1759005383FC /* TargetCallingConv.td */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = 
TargetCallingConv.td; sourceTree = ""; };
@@ -1156,6 +1160,16 @@
path = MSIL;
sourceTree = "";
};
+   9F7C240B0CB81ECD00498408 /* analysis */ = {
+   isa = PBXGroup;
+   children = (
+   9F7C240C0CB81ECD

[llvm-commits] [llvm] r42702 - in /llvm/trunk/bindings/ocaml/llvm: llvm.ml llvm.mli llvm_ocaml.c

2007-10-06 Thread Gordon Henriksen
Author: gordon
Date: Sat Oct  6 12:10:44 2007
New Revision: 42702

URL: http://llvm.org/viewvc/llvm-project?rev=42702&view=rev
Log:
Deleting some unnecessary glue.

Modified:
llvm/trunk/bindings/ocaml/llvm/llvm.ml
llvm/trunk/bindings/ocaml/llvm/llvm.mli
llvm/trunk/bindings/ocaml/llvm/llvm_ocaml.c

Modified: llvm/trunk/bindings/ocaml/llvm/llvm.ml
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/bindings/ocaml/llvm/llvm.ml?rev=42702&r1=42701&r2=42702&view=diff

==
--- llvm/trunk/bindings/ocaml/llvm/llvm.ml (original)
+++ llvm/trunk/bindings/ocaml/llvm/llvm.ml Sat Oct  6 12:10:44 2007
@@ -150,7 +150,7 @@
 external var_arg_function_type : lltype -> lltype array -> lltype
= "llvm_var_arg_function_type"
 external is_var_arg : lltype -> bool = "llvm_is_var_arg"
-external return_type : lltype -> lltype = "llvm_return_type"
+external return_type : lltype -> lltype = "LLVMGetReturnType"
 external param_types : lltype -> lltype array = "llvm_param_types"
 
 (*--... Operations on struct types 
.--*)
@@ -161,10 +161,10 @@
 
 (*--... Operations on pointer, vector, and array types 
.--*)
 external array_type : lltype -> int -> lltype = "llvm_array_type"
-external pointer_type : lltype -> lltype = "llvm_pointer_type"
+external pointer_type : lltype -> lltype = "LLVMPointerType"
 external vector_type : lltype -> int -> lltype = "llvm_vector_type"
 
-external element_type : lltype -> lltype = "llvm_element_type"
+external element_type : lltype -> lltype = "LLVMGetElementType"
 external array_length : lltype -> int = "llvm_array_length"
 external vector_size : lltype -> int = "llvm_vector_size"
 

Modified: llvm/trunk/bindings/ocaml/llvm/llvm.mli
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/bindings/ocaml/llvm/llvm.mli?rev=42702&r1=42701&r2=42702&view=diff

==
--- llvm/trunk/bindings/ocaml/llvm/llvm.mli (original)
+++ llvm/trunk/bindings/ocaml/llvm/llvm.mli Sat Oct  6 12:10:44 2007
@@ -137,7 +137,7 @@
 external var_arg_function_type : lltype -> lltype array -> lltype
= "llvm_var_arg_function_type"
 external is_var_arg : lltype -> bool = "llvm_is_var_arg"
-external return_type : lltype -> lltype = "llvm_return_type"
+external return_type : lltype -> lltype = "LLVMGetReturnType"
 external param_types : lltype -> lltype array = "llvm_param_types"
 
 (*--... Operations on struct types 
.--*)
@@ -148,10 +148,10 @@
 
 (*--... Operations on pointer, vector, and array types 
.--*)
 external array_type : lltype -> int -> lltype = "llvm_array_type"
-external pointer_type : lltype -> lltype = "llvm_pointer_type"
+external pointer_type : lltype -> lltype = "LLVMPointerType"
 external vector_type : lltype -> int -> lltype = "llvm_vector_type"
 
-external element_type : lltype -> lltype = "llvm_element_type"
+external element_type : lltype -> lltype = "LLVMGetElementType"
 external array_length : lltype -> int = "llvm_array_length"
 external vector_size : lltype -> int = "llvm_vector_size"
 

Modified: llvm/trunk/bindings/ocaml/llvm/llvm_ocaml.c
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/bindings/ocaml/llvm/llvm_ocaml.c?rev=42702&r1=42701&r2=42702&view=diff

==
--- llvm/trunk/bindings/ocaml/llvm/llvm_ocaml.c (original)
+++ llvm/trunk/bindings/ocaml/llvm/llvm_ocaml.c Sat Oct  6 12:10:44 2007
@@ -129,11 +129,6 @@
   return Val_bool(LLVMIsFunctionVarArg(FunTy));
 }
 
-/* lltype -> lltype */
-CAMLprim LLVMTypeRef llvm_return_type(LLVMTypeRef FunTy) {
-  return LLVMGetReturnType(FunTy);
-}
-
 /* lltype -> lltype array */
 CAMLprim value llvm_param_types(LLVMTypeRef FunTy) {
   value Tys = alloc(LLVMCountParamTypes(FunTy), 0);
@@ -174,21 +169,11 @@
   return LLVMArrayType(ElementTy, Int_val(Count));
 }
 
-/* lltype -> lltype */
-CAMLprim LLVMTypeRef llvm_pointer_type(LLVMTypeRef ElementTy) {
-  return LLVMPointerType(ElementTy);
-}
-
 /* lltype -> int -> lltype */
 CAMLprim LLVMTypeRef llvm_vector_type(LLVMTypeRef ElementTy, value Count) {
   return LLVMVectorType(ElementTy, Int_val(Count));
 }
 
-/* lltype -> lltype */
-CAMLprim LLVMTypeRef llvm_element_type(LLVMTypeRef Ty) {
-  return LLVMGetElementType(Ty);
-}
-
 /* lltype -> int */
 CAMLprim value llvm_array_length(LLVMTypeRef ArrayTy) {
   return Val_int(LLVMGetArrayLength(ArrayTy));


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


[llvm-commits] [llvm] r42701 - in /llvm/trunk: bindings/ocaml/llvm/llvm.ml bindings/ocaml/llvm/llvm.mli bindings/ocaml/llvm/llvm_ocaml.c test/Bindings/Ocaml/vmcore.ml

2007-10-06 Thread Gordon Henriksen
Author: gordon
Date: Sat Oct  6 11:56:09 2007
New Revision: 42701

URL: http://llvm.org/viewvc/llvm-project?rev=42701&view=rev
Log:
Adopting a uniform naming convention for type constructors in
bindings (part le deux).

Modified:
llvm/trunk/bindings/ocaml/llvm/llvm.ml
llvm/trunk/bindings/ocaml/llvm/llvm.mli
llvm/trunk/bindings/ocaml/llvm/llvm_ocaml.c
llvm/trunk/test/Bindings/Ocaml/vmcore.ml

Modified: llvm/trunk/bindings/ocaml/llvm/llvm.ml
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/bindings/ocaml/llvm/llvm.ml?rev=42701&r1=42700&r2=42701&view=diff

==
--- llvm/trunk/bindings/ocaml/llvm/llvm.ml (original)
+++ llvm/trunk/bindings/ocaml/llvm/llvm.ml Sat Oct  6 11:56:09 2007
@@ -128,7 +128,7 @@
 let i32_type = _i32_type ()
 let i64_type = _i64_type ()
 
-external make_integer_type : int -> lltype = "llvm_make_integer_type"
+external integer_type : int -> lltype = "llvm_integer_type"
 external integer_bitwidth : lltype -> int = "llvm_integer_bitwidth"
 
 (*--... Operations on real types 
...--*)
@@ -146,29 +146,30 @@
 
 (*--... Operations on function types 
...--*)
 (* FIXME: handle parameter attributes *)
-external make_function_type : lltype -> lltype array -> bool -> lltype
-= "llvm_make_function_type"
+external function_type : lltype -> lltype array -> lltype = 
"llvm_function_type"
+external var_arg_function_type : lltype -> lltype array -> lltype
+   = "llvm_var_arg_function_type"
 external is_var_arg : lltype -> bool = "llvm_is_var_arg"
 external return_type : lltype -> lltype = "llvm_return_type"
 external param_types : lltype -> lltype array = "llvm_param_types"
 
 (*--... Operations on struct types 
.--*)
-external make_struct_type : lltype array -> bool -> lltype
-  = "llvm_make_struct_type"
+external struct_type : lltype array -> lltype = "llvm_struct_type"
+external packed_struct_type : lltype array -> lltype = 
"llvm_packed_struct_type"
 external element_types : lltype -> lltype array = "llvm_element_types"
 external is_packed : lltype -> bool = "llvm_is_packed"
 
 (*--... Operations on pointer, vector, and array types 
.--*)
-external make_array_type : lltype -> int -> lltype = "llvm_make_array_type"
-external make_pointer_type : lltype -> lltype = "llvm_make_pointer_type"
-external make_vector_type : lltype -> int -> lltype = "llvm_make_vector_type"
+external array_type : lltype -> int -> lltype = "llvm_array_type"
+external pointer_type : lltype -> lltype = "llvm_pointer_type"
+external vector_type : lltype -> int -> lltype = "llvm_vector_type"
 
 external element_type : lltype -> lltype = "llvm_element_type"
 external array_length : lltype -> int = "llvm_array_length"
 external vector_size : lltype -> int = "llvm_vector_size"
 
 (*--... Operations on other types 
..--*)
-external make_opaque_type : unit -> lltype = "llvm_make_opaque_type"
+external opaque_type : unit -> lltype = "llvm_opaque_type"
 external _void_type : unit -> lltype = "llvm_void_type"
 external _label_type : unit -> lltype = "llvm_label_type"
 

Modified: llvm/trunk/bindings/ocaml/llvm/llvm.mli
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/bindings/ocaml/llvm/llvm.mli?rev=42701&r1=42700&r2=42701&view=diff

==
--- llvm/trunk/bindings/ocaml/llvm/llvm.mli (original)
+++ llvm/trunk/bindings/ocaml/llvm/llvm.mli Sat Oct  6 11:56:09 2007
@@ -121,7 +121,7 @@
 val i16_type : lltype
 val i32_type : lltype
 val i64_type : lltype
-external make_integer_type : int -> lltype = "llvm_make_integer_type"
+external integer_type : int -> lltype = "llvm_integer_type"
 external integer_bitwidth : lltype -> int = "llvm_integer_bitwidth"
 
 (*--... Operations on real types 
...--*)
@@ -133,29 +133,30 @@
 
 (*--... Operations on function types 
...--*)
 (* FIXME: handle parameter attributes 
*)
-external make_function_type : lltype -> lltype array -> bool -> lltype
-= "llvm_make_function_type"
+external function_type : lltype -> lltype array -> lltype = 
"llvm_function_type"
+external var_arg_function_type : lltype -> lltype array -> lltype
+   = "llvm_var_arg_function_type"
 external is_var_arg : lltype -> bool = "llvm_is_var_arg"
 external return_type : lltype -> lltype = "llvm_return_type"
 external param_types : lltype -> lltype array = "llvm_param_types"
 
 (*--... Operations on struct types 
.--*)
-external make_struct_type : lltype array -> bool -> lltype
-  = "llvm_make_struct_

[llvm-commits] [llvm] r42700 - /llvm/trunk/lib/Target/X86/X86RegisterInfo.cpp

2007-10-06 Thread Anton Korobeynikov
Author: asl
Date: Sat Oct  6 11:39:43 2007
New Revision: 42700

URL: http://llvm.org/viewvc/llvm-project?rev=42700&view=rev
Log:
Oops, I really wanted to commit this part also :)

Modified:
llvm/trunk/lib/Target/X86/X86RegisterInfo.cpp

Modified: llvm/trunk/lib/Target/X86/X86RegisterInfo.cpp
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86RegisterInfo.cpp?rev=42700&r1=42699&r2=42700&view=diff

==
--- llvm/trunk/lib/Target/X86/X86RegisterInfo.cpp (original)
+++ llvm/trunk/lib/Target/X86/X86RegisterInfo.cpp Sat Oct  6 11:39:43 2007
@@ -1500,6 +1500,31 @@
   }
 }
 
+// mergeSPUpdatesUp - Merge two stack-manipulating instructions lower iterator.
+static
+void mergeSPUpdatesDown(MachineBasicBlock &MBB,MachineBasicBlock::iterator 
&MBBI,
+unsigned StackPtr, uint64_t *NumBytes = NULL) {
+  if (MBBI != MBB.end()) {
+MachineBasicBlock::iterator NI = next(MBBI);
+unsigned Opc = NI->getOpcode();
+if ((Opc == X86::ADD64ri32 || Opc == X86::ADD64ri8 ||
+ Opc == X86::ADD32ri || Opc == X86::ADD32ri8) &&
+NI->getOperand(0).getReg() == StackPtr) {
+  if (NumBytes)
+*NumBytes -= NI->getOperand(2).getImm();
+  MBB.erase(NI);
+  MBBI = NI;
+} else if ((Opc == X86::SUB64ri32 || Opc == X86::SUB64ri8 ||
+Opc == X86::SUB32ri || Opc == X86::SUB32ri8) &&
+   NI->getOperand(0).getReg() == StackPtr) {
+  if (NumBytes)
+*NumBytes += NI->getOperand(2).getImm();
+  MBB.erase(NI);
+  MBBI = NI;
+}
+  }
+}
+
 void X86RegisterInfo::emitPrologue(MachineFunction &MF) const {
   MachineBasicBlock &MBB = MF.front();   // Prolog goes in entry BB
   MachineFrameInfo *MFI = MF.getFrameInfo();
@@ -1585,9 +1610,9 @@
 MBB.insert(MBBI, MI);
   }
 } else {
-  // If there is an ADD32ri or SUB32ri of ESP immediately before this
+  // If there is an ADD32ri or SUB32ri of ESP immediately after this
   // instruction, merge the two instructions.
-  mergeSPUpdatesUp(MBB, MBBI, StackPtr, &NumBytes);
+  mergeSPUpdatesDown(MBB, MBBI, StackPtr, &NumBytes);
   
   if (NumBytes)
 emitSPUpdate(MBB, MBBI, StackPtr, -(int64_t)NumBytes, Is64Bit, TII);


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


[llvm-commits] [llvm] r42699 - /llvm/trunk/lib/Target/X86/X86RegisterInfo.cpp

2007-10-06 Thread Anton Korobeynikov
Author: asl
Date: Sat Oct  6 11:17:49 2007
New Revision: 42699

URL: http://llvm.org/viewvc/llvm-project?rev=42699&view=rev
Log:
Move merge code into new helper function.

Modified:
llvm/trunk/lib/Target/X86/X86RegisterInfo.cpp

Modified: llvm/trunk/lib/Target/X86/X86RegisterInfo.cpp
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86RegisterInfo.cpp?rev=42699&r1=42698&r2=42699&view=diff

==
--- llvm/trunk/lib/Target/X86/X86RegisterInfo.cpp (original)
+++ llvm/trunk/lib/Target/X86/X86RegisterInfo.cpp Sat Oct  6 11:17:49 2007
@@ -1477,6 +1477,29 @@
   }
 }
 
+// mergeSPUpdatesUp - Merge two stack-manipulating instructions upper iterator.
+static
+void mergeSPUpdatesUp(MachineBasicBlock &MBB, MachineBasicBlock::iterator 
&MBBI,
+  unsigned StackPtr, uint64_t *NumBytes = NULL) {
+  if (MBBI != MBB.begin()) {
+MachineBasicBlock::iterator PI = prior(MBBI);
+unsigned Opc = PI->getOpcode();
+if ((Opc == X86::ADD64ri32 || Opc == X86::ADD64ri8 ||
+ Opc == X86::ADD32ri || Opc == X86::ADD32ri8) &&
+PI->getOperand(0).getReg() == StackPtr) {
+  if (NumBytes)
+*NumBytes += PI->getOperand(2).getImm();
+  MBB.erase(PI);
+} else if ((Opc == X86::SUB64ri32 || Opc == X86::SUB64ri8 ||
+Opc == X86::SUB32ri || Opc == X86::SUB32ri8) &&
+   PI->getOperand(0).getReg() == StackPtr) {
+  if (NumBytes)
+*NumBytes -= PI->getOperand(2).getImm();
+  MBB.erase(PI);
+}
+  }
+}
+
 void X86RegisterInfo::emitPrologue(MachineFunction &MF) const {
   MachineBasicBlock &MBB = MF.front();   // Prolog goes in entry BB
   MachineFrameInfo *MFI = MF.getFrameInfo();
@@ -1562,26 +1585,10 @@
 MBB.insert(MBBI, MI);
   }
 } else {
-  // If there is an ADD32ri or SUB32ri of ESP immediately after this
+  // If there is an ADD32ri or SUB32ri of ESP immediately before this
   // instruction, merge the two instructions.
-  if (MBBI != MBB.end()) {
-MachineBasicBlock::iterator NI = next(MBBI);
-unsigned Opc = MBBI->getOpcode();
-if ((Opc == X86::ADD64ri32 || Opc == X86::ADD64ri8 ||
- Opc == X86::ADD32ri || Opc == X86::ADD32ri8) &&
-MBBI->getOperand(0).getReg() == StackPtr) {
-  NumBytes -= MBBI->getOperand(2).getImm();
-  MBB.erase(MBBI);
-  MBBI = NI;
-} else if ((Opc == X86::SUB64ri32 || Opc == X86::SUB64ri8 ||
-Opc == X86::SUB32ri || Opc == X86::SUB32ri8) &&
-   MBBI->getOperand(0).getReg() == StackPtr) {
-  NumBytes += MBBI->getOperand(2).getImm();
-  MBB.erase(MBBI);
-  MBBI = NI;
-}
-  }
-
+  mergeSPUpdatesUp(MBB, MBBI, StackPtr, &NumBytes);
+  
   if (NumBytes)
 emitSPUpdate(MBB, MBBI, StackPtr, -(int64_t)NumBytes, Is64Bit, TII);
 }
@@ -1702,31 +1709,15 @@
 --MBBI;
   }
 
-  if (NumBytes || MFI->hasVarSizedObjects()) {
-// If there is an ADD32ri or SUB32ri of ESP immediately before this
-// instruction, merge the two instructions.
-if (MBBI != MBB.begin()) {
-  MachineBasicBlock::iterator PI = prior(MBBI);
-  unsigned Opc = PI->getOpcode();
-  if ((Opc == X86::ADD64ri32 || Opc == X86::ADD64ri8 ||
-   Opc == X86::ADD32ri || Opc == X86::ADD32ri8) &&
-  PI->getOperand(0).getReg() == StackPtr) {
-NumBytes += PI->getOperand(2).getImm();
-MBB.erase(PI);
-  } else if ((Opc == X86::SUB64ri32 || Opc == X86::SUB64ri8 ||
-  Opc == X86::SUB32ri || Opc == X86::SUB32ri8) &&
- PI->getOperand(0).getReg() == StackPtr) {
-NumBytes -= PI->getOperand(2).getImm();
-MBB.erase(PI);
-  }
-}
-  }
-
-  // If dynamic alloca is used, then reset esp to point to the last
-  // callee-saved slot before popping them off!
-  // Also, if it's main() on Cygwin/Mingw32 we aligned stack in the prologue, 
- revert
-  // stack changes back. Note: we're assuming, that frame pointer was forced
-  // for main()
+  // If there is an ADD32ri or SUB32ri of ESP immediately before this
+  // instruction, merge the two instructions.
+  if (NumBytes || MFI->hasVarSizedObjects())
+mergeSPUpdatesUp(MBB, MBBI, StackPtr, &NumBytes);
+
+  // If dynamic alloca is used, then reset esp to point to the last 
callee-saved
+  // slot before popping them off!  Also, if it's main() on Cygwin/Mingw32 we
+  // aligned stack in the prologue, - revert stack changes back. Note: we're
+  // assuming, that frame pointer was forced for main()
   if (MFI->hasVarSizedObjects() ||
   (Fn->hasExternalLinkage() && Fn->getName() == "main" &&
Subtarget->isTargetCygMing())) {


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


[llvm-commits] [llvm] r42698 - in /llvm/trunk: bindings/ocaml/llvm/llvm_ocaml.c include/llvm-c/Core.h lib/VMCore/Core.cpp

2007-10-06 Thread Gordon Henriksen
Author: gordon
Date: Sat Oct  6 11:05:20 2007
New Revision: 42698

URL: http://llvm.org/viewvc/llvm-project?rev=42698&view=rev
Log:
Adopting a uniform naming convention for type constructors in bindings.

Modified:
llvm/trunk/bindings/ocaml/llvm/llvm_ocaml.c
llvm/trunk/include/llvm-c/Core.h
llvm/trunk/lib/VMCore/Core.cpp

Modified: llvm/trunk/bindings/ocaml/llvm/llvm_ocaml.c
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/bindings/ocaml/llvm/llvm_ocaml.c?rev=42698&r1=42697&r2=42698&view=diff

==
--- llvm/trunk/bindings/ocaml/llvm/llvm_ocaml.c (original)
+++ llvm/trunk/bindings/ocaml/llvm/llvm_ocaml.c Sat Oct  6 11:05:20 2007
@@ -74,7 +74,7 @@
 
 /* int -> lltype */
 CAMLprim LLVMTypeRef llvm_make_integer_type(value Width) {
-  return LLVMCreateIntType(Int_val(Width));
+  return LLVMIntType(Int_val(Width));
 }
 
 /* lltype -> int */
@@ -114,9 +114,9 @@
 /* lltype -> lltype array -> bool -> lltype */
 CAMLprim LLVMTypeRef llvm_make_function_type(LLVMTypeRef RetTy, value ParamTys,
  value IsVarArg) {
-  return LLVMCreateFunctionType(RetTy, (LLVMTypeRef *) ParamTys,
-Wosize_val(ParamTys),
-Bool_val(IsVarArg));
+  return LLVMFunctionType(RetTy, (LLVMTypeRef *) ParamTys,
+  Wosize_val(ParamTys),
+  Bool_val(IsVarArg));
 }
 
 /* lltype -> bool */
@@ -140,9 +140,9 @@
 
 /* lltype array -> bool -> lltype */
 CAMLprim LLVMTypeRef llvm_make_struct_type(value ElementTypes, value Packed) {
-  return LLVMCreateStructType((LLVMTypeRef *) ElementTypes,
-  Wosize_val(ElementTypes),
-  Bool_val(Packed));
+  return LLVMStructType((LLVMTypeRef *) ElementTypes,
+Wosize_val(ElementTypes),
+Bool_val(Packed));
 }
 
 /* lltype -> lltype array */
@@ -161,17 +161,17 @@
 
 /* lltype -> int -> lltype */
 CAMLprim LLVMTypeRef llvm_make_array_type(LLVMTypeRef ElementTy, value Count) {
-  return LLVMCreateArrayType(ElementTy, Int_val(Count));
+  return LLVMArrayType(ElementTy, Int_val(Count));
 }
 
 /* lltype -> lltype */
 CAMLprim LLVMTypeRef llvm_make_pointer_type(LLVMTypeRef ElementTy) {
-  return LLVMCreatePointerType(ElementTy);
+  return LLVMPointerType(ElementTy);
 }
 
 /* lltype -> int -> lltype */
 CAMLprim LLVMTypeRef llvm_make_vector_type(LLVMTypeRef ElementTy, value Count) 
{
-  return LLVMCreateVectorType(ElementTy, Int_val(Count));
+  return LLVMVectorType(ElementTy, Int_val(Count));
 }
 
 /* lltype -> lltype */
@@ -197,7 +197,7 @@
 
 /* unit -> lltype */
 CAMLprim LLVMTypeRef llvm_make_opaque_type(value Unit) {
-  return LLVMCreateOpaqueType();
+  return LLVMOpaqueType();
 }
 
 

Modified: llvm/trunk/include/llvm-c/Core.h
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm-c/Core.h?rev=42698&r1=42697&r2=42698&view=diff

==
--- llvm/trunk/include/llvm-c/Core.h (original)
+++ llvm/trunk/include/llvm-c/Core.h Sat Oct  6 11:05:20 2007
@@ -164,7 +164,7 @@
 LLVMTypeRef LLVMInt16Type();
 LLVMTypeRef LLVMInt32Type();
 LLVMTypeRef LLVMInt64Type();
-LLVMTypeRef LLVMCreateIntType(unsigned NumBits);
+LLVMTypeRef LLVMIntType(unsigned NumBits);
 unsigned LLVMGetIntTypeWidth(LLVMTypeRef IntegerTy);
 
 /* Operations on real types */
@@ -175,25 +175,25 @@
 LLVMTypeRef LLVMPPCFP128Type();
 
 /* Operations on function types */
-LLVMTypeRef LLVMCreateFunctionType(LLVMTypeRef ReturnType,
-   LLVMTypeRef *ParamTypes, unsigned 
ParamCount,
-   int IsVarArg);
+LLVMTypeRef LLVMFunctionType(LLVMTypeRef ReturnType,
+ LLVMTypeRef *ParamTypes, unsigned ParamCount,
+ int IsVarArg);
 int LLVMIsFunctionVarArg(LLVMTypeRef FunctionTy);
 LLVMTypeRef LLVMGetReturnType(LLVMTypeRef FunctionTy);
 unsigned LLVMCountParamTypes(LLVMTypeRef FunctionTy);
 void LLVMGetParamTypes(LLVMTypeRef FunctionTy, LLVMTypeRef *Dest);
 
 /* Operations on struct types */
-LLVMTypeRef LLVMCreateStructType(LLVMTypeRef *ElementTypes,
- unsigned ElementCount, int Packed);
+LLVMTypeRef LLVMStructType(LLVMTypeRef *ElementTypes, unsigned ElementCount,
+   int Packed);
 unsigned LLVMCountStructElementTypes(LLVMTypeRef StructTy);
 void LLVMGetStructElementTypes(LLVMTypeRef StructTy, LLVMTypeRef *Dest);
 int LLVMIsPackedStruct(LLVMTypeRef StructTy);
 
 /* Operations on array, pointer, and vector types (sequence types) */
-LLVMTypeRef LLVMCreateArrayType(LLVMTypeRef ElementType, unsigned 
ElementCount);
-LLVMTypeRef LLVMCreatePointerType(LLVMTypeRef ElementType);
-LLVMTypeRef LLVMCreateVectorType(LLVMTypeRef ElementType,unsigned 
ElementCount);
+LLVMTypeRef LLVMArrayType(LLVMTypeRef E

[llvm-commits] [llvm] r42697 - in /llvm/trunk: bindings/ocaml/llvm/llvm.ml bindings/ocaml/llvm/llvm.mli bindings/ocaml/llvm/llvm_ocaml.c include/llvm-c/Core.h lib/VMCore/Core.cpp test/Bindings/Ocaml/v

2007-10-06 Thread Gordon Henriksen
Author: gordon
Date: Sat Oct  6 10:11:06 2007
New Revision: 42697

URL: http://llvm.org/viewvc/llvm-project?rev=42697&view=rev
Log:
Adopting a uniform naming convention for constant constructors in bindings.

Modified:
llvm/trunk/bindings/ocaml/llvm/llvm.ml
llvm/trunk/bindings/ocaml/llvm/llvm.mli
llvm/trunk/bindings/ocaml/llvm/llvm_ocaml.c
llvm/trunk/include/llvm-c/Core.h
llvm/trunk/lib/VMCore/Core.cpp
llvm/trunk/test/Bindings/Ocaml/vmcore.ml

Modified: llvm/trunk/bindings/ocaml/llvm/llvm.ml
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/bindings/ocaml/llvm/llvm.ml?rev=42697&r1=42696&r2=42697&view=diff

==
--- llvm/trunk/bindings/ocaml/llvm/llvm.ml (original)
+++ llvm/trunk/bindings/ocaml/llvm/llvm.ml Sat Oct  6 10:11:06 2007
@@ -185,32 +185,29 @@
 
 (*--... Operations on constants of (mostly) any type 
...--*)
 external is_constant : llvalue -> bool = "llvm_is_constant"
-external make_null : lltype -> llvalue = "LLVMGetNull"
-external make_all_ones : (*int|vec*)lltype -> llvalue = "LLVMGetAllOnes"
-external make_undef : lltype -> llvalue = "LLVMGetUndef"
+external const_null : lltype -> llvalue = "LLVMConstNull"
+external const_all_ones : (*int|vec*)lltype -> llvalue = "LLVMConstAllOnes"
+external undef : lltype -> llvalue = "LLVMGetUndef"
 external is_null : llvalue -> bool = "llvm_is_null"
 external is_undef : llvalue -> bool = "llvm_is_undef"
 
 (*--... Operations on scalar constants 
.--*)
-external make_int_constant : lltype -> int -> bool -> llvalue
-   = "llvm_make_int_constant"
-external make_int64_constant : lltype -> Int64.t -> bool -> llvalue
- = "llvm_make_int64_constant"
-external make_real_constant : lltype -> float -> llvalue
-= "llvm_make_real_constant"
+external const_int : lltype -> int -> llvalue = "llvm_const_int"
+external const_of_int64 : lltype -> Int64.t -> bool -> llvalue
+= "llvm_const_of_int64"
+external const_float : lltype -> float -> llvalue = "llvm_const_float"
 
 (*--... Operations on composite constants 
..--*)
-external make_string_constant : string -> bool -> llvalue
-  = "llvm_make_string_constant"
-external make_array_constant : lltype -> llvalue array -> llvalue
- = "llvm_make_array_constant"
-external make_struct_constant : llvalue array -> bool -> llvalue
-  = "llvm_make_struct_constant"
-external make_vector_constant : llvalue array -> llvalue
-  = "llvm_make_vector_constant"
+external const_string : string -> llvalue = "llvm_const_string"
+external const_stringz : string -> llvalue = "llvm_const_stringz"
+external const_array : lltype -> llvalue array -> llvalue = "llvm_const_array"
+external const_struct : llvalue array -> llvalue = "llvm_const_struct"
+external const_packed_struct : llvalue array -> llvalue
+ = "llvm_const_packed_struct"
+external const_vector : llvalue array -> llvalue = "llvm_const_vector"
 
 (*--... Constant expressions 
...--*)
-external sizeof : lltype -> llvalue = "LLVMSizeOf"
+external size_of : lltype -> llvalue = "LLVMSizeOf"
 external const_neg : llvalue -> llvalue = "LLVMConstNeg"
 external const_not : llvalue -> llvalue = "LLVMConstNot"
 external const_add : llvalue -> llvalue -> llvalue = "LLVMConstAdd"

Modified: llvm/trunk/bindings/ocaml/llvm/llvm.mli
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/bindings/ocaml/llvm/llvm.mli?rev=42697&r1=42696&r2=42697&view=diff

==
--- llvm/trunk/bindings/ocaml/llvm/llvm.mli (original)
+++ llvm/trunk/bindings/ocaml/llvm/llvm.mli Sat Oct  6 10:11:06 2007
@@ -168,32 +168,29 @@
 
 (*--... Operations on constants of (mostly) any type 
...--*)
 external is_constant : llvalue -> bool = "llvm_is_constant"
-external make_null : lltype -> llvalue = "LLVMGetNull"
-external make_all_ones : (*int|vec*)lltype -> llvalue = "LLVMGetAllOnes"
-external make_undef : lltype -> llvalue = "LLVMGetUndef"
+external const_null : lltype -> llvalue = "LLVMConstNull"
+external const_all_ones : (*int|vec*)lltype -> llvalue = "LLVMConstAllOnes"
+external undef : lltype -> llvalue = "LLVMGetUndef"
 external is_null : llvalue -> bool = "llvm_is_null"
 external is_undef : llvalue -> bool = "llvm_is_undef"
 
 (*--... Operations on scalar constants 
.--*)
-external make_int_constant : lltype -> int -> bool -> llvalue
-   = "llvm_make_int_constant"
-external make_int64_constant : lltype -> Int64.t -> bool -> llvalue
- = "llvm_make_int64_constant"
-external make_real_cons

[llvm-commits] [llvm] r42696 - in /llvm/trunk: bindings/ocaml/llvm/llvm.ml bindings/ocaml/llvm/llvm.mli bindings/ocaml/llvm/llvm_ocaml.c include/llvm-c/Core.h include/llvm/Constants.h lib/VMCore/Const

2007-10-06 Thread Gordon Henriksen
Author: gordon
Date: Sat Oct  6 09:29:36 2007
New Revision: 42696

URL: http://llvm.org/viewvc/llvm-project?rev=42696&view=rev
Log:
Adding C and Ocaml bindings for ConstantExpr.

Modified:
llvm/trunk/bindings/ocaml/llvm/llvm.ml
llvm/trunk/bindings/ocaml/llvm/llvm.mli
llvm/trunk/bindings/ocaml/llvm/llvm_ocaml.c
llvm/trunk/include/llvm-c/Core.h
llvm/trunk/include/llvm/Constants.h
llvm/trunk/lib/VMCore/Constants.cpp
llvm/trunk/lib/VMCore/Core.cpp
llvm/trunk/test/Bindings/Ocaml/vmcore.ml

Modified: llvm/trunk/bindings/ocaml/llvm/llvm.ml
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/bindings/ocaml/llvm/llvm.ml?rev=42696&r1=42695&r2=42696&view=diff

==
--- llvm/trunk/bindings/ocaml/llvm/llvm.ml (original)
+++ llvm/trunk/bindings/ocaml/llvm/llvm.ml Sat Oct  6 09:29:36 2007
@@ -209,6 +209,51 @@
 external make_vector_constant : llvalue array -> llvalue
   = "llvm_make_vector_constant"
 
+(*--... Constant expressions 
...--*)
+external sizeof : lltype -> llvalue = "LLVMSizeOf"
+external const_neg : llvalue -> llvalue = "LLVMConstNeg"
+external const_not : llvalue -> llvalue = "LLVMConstNot"
+external const_add : llvalue -> llvalue -> llvalue = "LLVMConstAdd"
+external const_sub : llvalue -> llvalue -> llvalue = "LLVMConstSub"
+external const_mul : llvalue -> llvalue -> llvalue = "LLVMConstMul"
+external const_udiv : llvalue -> llvalue -> llvalue = "LLVMConstUDiv"
+external const_sdiv : llvalue -> llvalue -> llvalue = "LLVMConstSDiv"
+external const_fdiv : llvalue -> llvalue -> llvalue = "LLVMConstFDiv"
+external const_urem : llvalue -> llvalue -> llvalue = "LLVMConstURem"
+external const_srem : llvalue -> llvalue -> llvalue = "LLVMConstSRem"
+external const_frem : llvalue -> llvalue -> llvalue = "LLVMConstFRem"
+external const_and : llvalue -> llvalue -> llvalue = "LLVMConstAnd"
+external const_or : llvalue -> llvalue -> llvalue = "LLVMConstOr"
+external const_xor : llvalue -> llvalue -> llvalue = "LLVMConstXor"
+external const_icmp : int_predicate -> llvalue -> llvalue -> llvalue
+= "llvm_const_icmp"
+external const_fcmp : real_predicate -> llvalue -> llvalue -> llvalue
+= "llvm_const_fcmp"
+external const_shl : llvalue -> llvalue -> llvalue = "LLVMConstShl"
+external const_lshr : llvalue -> llvalue -> llvalue = "LLVMConstLShr"
+external const_ashr : llvalue -> llvalue -> llvalue = "LLVMConstAShr"
+external const_gep : llvalue -> llvalue array -> llvalue = "llvm_const_gep"
+external const_trunc : llvalue -> lltype -> llvalue = "LLVMConstTrunc"
+external const_sext : llvalue -> lltype -> llvalue = "LLVMConstSExt"
+external const_zext : llvalue -> lltype -> llvalue = "LLVMConstZExt"
+external const_fptrunc : llvalue -> lltype -> llvalue = "LLVMConstFPTrunc"
+external const_fpext : llvalue -> lltype -> llvalue = "LLVMConstFPExt"
+external const_uitofp : llvalue -> lltype -> llvalue = "LLVMConstUIToFP"
+external const_sitofp : llvalue -> lltype -> llvalue = "LLVMConstSIToFP"
+external const_fptoui : llvalue -> lltype -> llvalue = "LLVMConstFPToUI"
+external const_fptosi : llvalue -> lltype -> llvalue = "LLVMConstFPToSI"
+external const_ptrtoint : llvalue -> lltype -> llvalue = "LLVMConstPtrToInt"
+external const_inttoptr : llvalue -> lltype -> llvalue = "LLVMConstIntToPtr"
+external const_bitcast : llvalue -> lltype -> llvalue = "LLVMConstBitCast"
+external const_select : llvalue -> llvalue -> llvalue -> llvalue
+  = "LLVMConstSelect"
+external const_extractelement : llvalue -> llvalue -> llvalue
+  = "LLVMConstExtractElement"
+external const_insertelement : llvalue -> llvalue -> llvalue -> llvalue
+ = "LLVMConstInsertElement"
+external const_shufflevector : llvalue -> llvalue -> llvalue -> llvalue
+ = "LLVMConstShuffleVector"
+
 (*--... Operations on global variables, functions, and aliases (globals) 
...--*)
 external is_declaration : llvalue -> bool = "llvm_is_declaration"
 external linkage : llvalue -> linkage = "llvm_linkage"

Modified: llvm/trunk/bindings/ocaml/llvm/llvm.mli
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/bindings/ocaml/llvm/llvm.mli?rev=42696&r1=42695&r2=42696&view=diff

==
--- llvm/trunk/bindings/ocaml/llvm/llvm.mli (original)
+++ llvm/trunk/bindings/ocaml/llvm/llvm.mli Sat Oct  6 09:29:36 2007
@@ -192,6 +192,51 @@
 external make_vector_constant : llvalue array -> llvalue
   = "llvm_make_vector_constant"
 
+(*--... Constant expressions 
...--*)
+external sizeof : lltype -> llvalue = "LLVMSizeOf"
+external const_neg : llvalue -> llvalue = "LLVMConstNeg"
+external const_not : llvalue -> llvalue = "LLVMConstNot"
+external 

[llvm-commits] [llvm] r42695 - /llvm/trunk/include/llvm/Pass.h

2007-10-06 Thread Anton Korobeynikov
Author: asl
Date: Sat Oct  6 08:07:11 2007
New Revision: 42695

URL: http://llvm.org/viewvc/llvm-project?rev=42695&view=rev
Log:
Include DataTypes.h to provide intptr_t type. This fixes OpenBSD compilation of 
this file.
Inspired by Laurence Tratt's patch

Modified:
llvm/trunk/include/llvm/Pass.h

Modified: llvm/trunk/include/llvm/Pass.h
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Pass.h?rev=42695&r1=42694&r2=42695&view=diff

==
--- llvm/trunk/include/llvm/Pass.h (original)
+++ llvm/trunk/include/llvm/Pass.h Sat Oct  6 08:07:11 2007
@@ -29,6 +29,7 @@
 #ifndef LLVM_PASS_H
 #define LLVM_PASS_H
 
+#include "llvm/Support/DataTypes.h"
 #include "llvm/Support/Streams.h"
 #include 
 #include 


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


[llvm-commits] [test-suite] r42694 - in /test-suite/trunk/MultiSource/Benchmarks/MiBench/telecomm-gsm: config.h toast.c

2007-10-06 Thread Anton Korobeynikov
Author: asl
Date: Sat Oct  6 05:55:20 2007
New Revision: 42694

URL: http://llvm.org/viewvc/llvm-project?rev=42694&view=rev
Log:
Unbreak toast again for mingw32.
Funny, but we have two toast's in in llvm-test. Maybe we should drop one?

Modified:
test-suite/trunk/MultiSource/Benchmarks/MiBench/telecomm-gsm/config.h
test-suite/trunk/MultiSource/Benchmarks/MiBench/telecomm-gsm/toast.c

Modified: test-suite/trunk/MultiSource/Benchmarks/MiBench/telecomm-gsm/config.h
URL: 
http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/MiBench/telecomm-gsm/config.h?rev=42694&r1=42693&r2=42694&view=diff

==
--- test-suite/trunk/MultiSource/Benchmarks/MiBench/telecomm-gsm/config.h 
(original)
+++ test-suite/trunk/MultiSource/Benchmarks/MiBench/telecomm-gsm/config.h Sat 
Oct  6 05:55:20 2007
@@ -18,8 +18,13 @@
 /*efineHAS_ERRNO_DECL  1   /* errno.h declares errno   
*/
 
 #defineHAS_FSTAT   1   /* fstat syscall
*/
+#ifndef __MINGW32__
 #defineHAS_FCHMOD  1   /* fchmod syscall   
*/
 #defineHAS_FCHOWN  1   /* fchown syscall   
*/
+#else
+#undef HAS_FCHMOD
+#undef HAS_FCHOWN
+#endif
 
 #defineHAS_STRING_H1   /* /usr/include/string.h
*/
 /*efineHAS_STRINGS_H   1   /* /usr/include/strings.h   
*/

Modified: test-suite/trunk/MultiSource/Benchmarks/MiBench/telecomm-gsm/toast.c
URL: 
http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/MiBench/telecomm-gsm/toast.c?rev=42694&r1=42693&r2=42694&view=diff

==
--- test-suite/trunk/MultiSource/Benchmarks/MiBench/telecomm-gsm/toast.c 
(original)
+++ test-suite/trunk/MultiSource/Benchmarks/MiBench/telecomm-gsm/toast.c Sat 
Oct  6 05:55:20 2007
@@ -339,7 +339,9 @@
 #ifdef HAS_FCHOWN
(void)fchown(fileno(out), instat.st_uid, instat.st_gid);
 #else 
+#ifndef __MINGW32__
(void)chown(outname, instat.st_uid, instat.st_gid);
+#endif 
 #endif /* HAS_FCHOWN */
 }
 


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


[llvm-commits] [test-suite] r42693 - in /test-suite/trunk/MultiSource/Benchmarks/mediabench/gsm/toast: config.h toast.c

2007-10-06 Thread Anton Korobeynikov
Author: asl
Date: Sat Oct  6 05:37:39 2007
New Revision: 42693

URL: http://llvm.org/viewvc/llvm-project?rev=42693&view=rev
Log:
Unbreak mediabench on mingw32

Modified:
test-suite/trunk/MultiSource/Benchmarks/mediabench/gsm/toast/config.h
test-suite/trunk/MultiSource/Benchmarks/mediabench/gsm/toast/toast.c

Modified: test-suite/trunk/MultiSource/Benchmarks/mediabench/gsm/toast/config.h
URL: 
http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/mediabench/gsm/toast/config.h?rev=42693&r1=42692&r2=42693&view=diff

==
--- test-suite/trunk/MultiSource/Benchmarks/mediabench/gsm/toast/config.h 
(original)
+++ test-suite/trunk/MultiSource/Benchmarks/mediabench/gsm/toast/config.h Sat 
Oct  6 05:37:39 2007
@@ -18,8 +18,13 @@
 /*efineHAS_ERRNO_DECL  1   /* errno.h declares errno   
*/
 
 #defineHAS_FSTAT   1   /* fstat syscall
*/
+#ifndef __MINGW32__
 #defineHAS_FCHMOD  1   /* fchmod syscall   
*/
 #defineHAS_FCHOWN  1   /* fchown syscall   
*/
+#else
+#undef HAS_FCHMOD
+#undef HAS_FCHOWN
+#endif
 
 #defineHAS_STRING_H1   /* /usr/include/string.h
*/
 /*efineHAS_STRINGS_H   1   /* /usr/include/strings.h   
*/

Modified: test-suite/trunk/MultiSource/Benchmarks/mediabench/gsm/toast/toast.c
URL: 
http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/mediabench/gsm/toast/toast.c?rev=42693&r1=42692&r2=42693&view=diff

==
--- test-suite/trunk/MultiSource/Benchmarks/mediabench/gsm/toast/toast.c 
(original)
+++ test-suite/trunk/MultiSource/Benchmarks/mediabench/gsm/toast/toast.c Sat 
Oct  6 05:37:39 2007
@@ -338,8 +338,10 @@
if (!instat.st_nlink) return; /* couldn't stat in */
 #ifdef HAS_FCHOWN
(void)fchown(fileno(out), instat.st_uid, instat.st_gid);
-#else 
+#else
+#ifndef __MINGW32__
(void)chown(outname, instat.st_uid, instat.st_gid);
+#endif 
 #endif /* HAS_FCHOWN */
 }
 


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


[llvm-commits] [llvm] r42692 - /llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp

2007-10-06 Thread Evan Cheng
Author: evancheng
Date: Sat Oct  6 03:19:55 2007
New Revision: 42692

URL: http://llvm.org/viewvc/llvm-project?rev=42692&view=rev
Log:
Reapply 42677.

Modified:
llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp

Modified: llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp?rev=42692&r1=42691&r2=42692&view=diff

==
--- llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp (original)
+++ llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp Sat Oct  6 03:19:55 2007
@@ -263,6 +263,7 @@
 SDOperand visitLOAD(SDNode *N);
 SDOperand visitSTORE(SDNode *N);
 SDOperand visitINSERT_VECTOR_ELT(SDNode *N);
+SDOperand visitEXTRACT_VECTOR_ELT(SDNode *N);
 SDOperand visitBUILD_VECTOR(SDNode *N);
 SDOperand visitCONCAT_VECTORS(SDNode *N);
 SDOperand visitVECTOR_SHUFFLE(SDNode *N);
@@ -682,6 +683,7 @@
   case ISD::LOAD:   return visitLOAD(N);
   case ISD::STORE:  return visitSTORE(N);
   case ISD::INSERT_VECTOR_ELT:  return visitINSERT_VECTOR_ELT(N);
+  case ISD::EXTRACT_VECTOR_ELT: return visitEXTRACT_VECTOR_ELT(N);
   case ISD::BUILD_VECTOR:   return visitBUILD_VECTOR(N);
   case ISD::CONCAT_VECTORS: return visitCONCAT_VECTORS(N);
   case ISD::VECTOR_SHUFFLE: return visitVECTOR_SHUFFLE(N);
@@ -2907,9 +2909,8 @@
 return DAG.getNode(ISD::BIT_CONVERT, VT, N0.getOperand(0));
 
   // fold (conv (load x)) -> (load (conv*)x)
-  // If the resultant load doesn't need a  higher alignment than the original!
-  if (ISD::isNON_EXTLoad(N0.Val) && N0.hasOneUse() &&
-  ISD::isUNINDEXEDLoad(N0.Val) &&
+  // If the resultant load doesn't need a higher alignment than the original!
+  if (ISD::isNormalLoad(N0.Val) && N0.hasOneUse() &&
   TLI.isOperationLegal(ISD::LOAD, VT)) {
 LoadSDNode *LN0 = cast(N0);
 unsigned Align = TLI.getTargetMachine().getTargetData()->
@@ -3901,6 +3902,54 @@
   return SDOperand();
 }
 
+SDOperand DAGCombiner::visitEXTRACT_VECTOR_ELT(SDNode *N) {
+  SDOperand InVec = N->getOperand(0);
+  SDOperand EltNo = N->getOperand(1);
+
+  // (vextract (v4f32 s2v (f32 load $addr)), 0) -> (f32 load $addr)
+  // (vextract (v4i32 bc (v4f32 s2v (f32 load $addr))), 0) -> (i32 load $addr)
+  if (isa(EltNo)) {
+unsigned Elt = cast(EltNo)->getValue();
+bool NewLoad = false;
+if (Elt == 0) {
+  MVT::ValueType VT = InVec.getValueType();
+  MVT::ValueType EVT = MVT::getVectorElementType(VT);
+  MVT::ValueType LVT = EVT;
+  unsigned NumElts = MVT::getVectorNumElements(VT);
+  if (InVec.getOpcode() == ISD::BIT_CONVERT) {
+MVT::ValueType BCVT = InVec.getOperand(0).getValueType();
+if (NumElts != MVT::getVectorNumElements(BCVT))
+  return SDOperand();
+InVec = InVec.getOperand(0);
+EVT = MVT::getVectorElementType(BCVT);
+NewLoad = true;
+  }
+  if (InVec.getOpcode() == ISD::SCALAR_TO_VECTOR &&
+  InVec.getOperand(0).getValueType() == EVT &&
+  ISD::isNormalLoad(InVec.getOperand(0).Val) &&
+  InVec.getOperand(0).hasOneUse()) {
+LoadSDNode *LN0 = cast(InVec.getOperand(0));
+unsigned Align = LN0->getAlignment();
+if (NewLoad) {
+  // Check the resultant load doesn't need a higher alignment than the
+  // original load.
+  unsigned NewAlign = TLI.getTargetMachine().getTargetData()->
+getABITypeAlignment(MVT::getTypeForValueType(LVT));
+  if (!TLI.isOperationLegal(ISD::LOAD, LVT) || NewAlign > Align)
+return SDOperand();
+  Align = NewAlign;
+}
+
+return DAG.getLoad(LVT, LN0->getChain(), LN0->getBasePtr(),
+   LN0->getSrcValue(), LN0->getSrcValueOffset(),
+   LN0->isVolatile(), Align);
+  }
+}
+  }
+  return SDOperand();
+}
+  
+
 SDOperand DAGCombiner::visitBUILD_VECTOR(SDNode *N) {
   unsigned NumInScalars = N->getNumOperands();
   MVT::ValueType VT = N->getValueType(0);


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


[llvm-commits] [llvm] r42691 - /llvm/trunk/include/llvm/CodeGen/SelectionDAGNodes.h

2007-10-06 Thread Evan Cheng
Author: evancheng
Date: Sat Oct  6 03:09:29 2007
New Revision: 42691

URL: http://llvm.org/viewvc/llvm-project?rev=42691&view=rev
Log:
Oops. Forgot this.

Modified:
llvm/trunk/include/llvm/CodeGen/SelectionDAGNodes.h

Modified: llvm/trunk/include/llvm/CodeGen/SelectionDAGNodes.h
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/SelectionDAGNodes.h?rev=42691&r1=42690&r2=42691&view=diff

==
--- llvm/trunk/include/llvm/CodeGen/SelectionDAGNodes.h (original)
+++ llvm/trunk/include/llvm/CodeGen/SelectionDAGNodes.h Sat Oct  6 03:09:29 2007
@@ -1651,6 +1651,16 @@
 };
 
 namespace ISD {
+  /// isNormalLoad - Returns true if the specified node is a non-extending
+  /// and unindexed load.
+  inline bool isNormalLoad(const SDNode *N) {
+if (N->getOpcode() != ISD::LOAD)
+  return false;
+const LoadSDNode *Ld = cast(N);
+return Ld->getExtensionType() == ISD::NON_EXTLOAD &&
+  Ld->getAddressingMode() == ISD::UNINDEXED;
+  }
+
   /// isNON_EXTLoad - Returns true if the specified node is a non-extending
   /// load.
   inline bool isNON_EXTLoad(const SDNode *N) {


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


[llvm-commits] [llvm] r42690 - /llvm/trunk/lib/Support/APFloat.cpp

2007-10-06 Thread Neil Booth
Author: neil
Date: Sat Oct  6 02:29:25 2007
New Revision: 42690

URL: http://llvm.org/viewvc/llvm-project?rev=42690&view=rev
Log:
Cleaner, more general exponent output.

Modified:
llvm/trunk/lib/Support/APFloat.cpp

Modified: llvm/trunk/lib/Support/APFloat.cpp
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Support/APFloat.cpp?rev=42690&r1=42689&r2=42690&view=diff

==
--- llvm/trunk/lib/Support/APFloat.cpp (original)
+++ llvm/trunk/lib/Support/APFloat.cpp Sat Oct  6 02:29:25 2007
@@ -252,32 +252,33 @@
 return result;
   }
 
-  /* Write out a decimal exponent.  */
+  /* Write out an unsigned decimal integer.  */
   static char *
-  writeDecimalExponent (char *dst, int exponent)
+  writeUnsignedDecimal (char *dst, unsigned int n)
   {
-assert (exponent >= -65536 && exponent <= 65535);
+char buff[40], *p;
 
-if (exponent < 0) {
-  *dst++ = '-';
-  exponent = -exponent;
-}
-
-if (exponent == 0) {
-  *dst++ = '0';
-} else {
-  char buff[12], *p;
+p = buff;
+do
+  *p++ = '0' + n % 10;
+while (n /= 10);
+
+do
+  *dst++ = *--p;
+while (p != buff);
 
-  p = buff;
-  while (exponent) {
-*p++ = '0' + exponent % 10;
-exponent /= 10;
-  }
+return dst;
+  }
 
-  do
-*dst++ = *--p;
-  while (p != buff);
-}
+  /* Write out a signed decimal integer.  */
+  static char *
+  writeSignedDecimal (char *dst, int value)
+  {
+if (value < 0) {
+  *dst++ = '-';
+  dst = writeUnsignedDecimal(dst, -(unsigned) value);
+} else
+  dst = writeUnsignedDecimal(dst, value);
 
 return dst;
   }
@@ -1865,7 +1866,7 @@
   /* Finally output the exponent.  */
   *dst++ = upperCase ? 'P': 'p';
 
-  return writeDecimalExponent (dst, exponent);
+  return writeSignedDecimal (dst, exponent);
 }
 
 // For good performance it is desirable for different APFloats


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