Commit message (Collapse) | Author | Age | Files | Lines | ||
---|---|---|---|---|---|---|
... | ||||||
* | implement __extension__ and unary~ for complex. | Chris Lattner | 2007-08-21 | 1 | -0/+12 | |
| | | | | llvm-svn: 41249 | |||||
* | implement codegen for complex unary +/- | Chris Lattner | 2007-08-21 | 1 | -1/+12 | |
| | | | | llvm-svn: 41247 | |||||
* | minor nicities. | Chris Lattner | 2007-08-21 | 1 | -6/+9 | |
| | | | | llvm-svn: 41244 | |||||
* | implement support for complex subscripts. | Chris Lattner | 2007-08-21 | 1 | -4/+2 | |
| | | | | llvm-svn: 41240 | |||||
* | allow support for volatile lvalues even though it's still not right. | Chris Lattner | 2007-08-21 | 1 | -12/+14 | |
| | | | | llvm-svn: 41239 | |||||
* | Implement parsing and code generation of Objective-C string literals. | Anders Carlsson | 2007-08-21 | 3 | -0/+33 | |
| | | | | llvm-svn: 41238 | |||||
* | add a new builder ivar. | Chris Lattner | 2007-08-21 | 1 | -24/+25 | |
| | | | | llvm-svn: 41237 | |||||
* | move EmitLoadOfComplex/EmitStoreOfComplex into ComplexExprEmitter. | Chris Lattner | 2007-08-21 | 4 | -60/+40 | |
| | | | | llvm-svn: 41236 | |||||
* | implement comma for complex. | Chris Lattner | 2007-08-21 | 2 | -1/+7 | |
| | | | | llvm-svn: 41235 | |||||
* | and/or/xor are invalid for complex, even integer complex apparently. | Chris Lattner | 2007-08-21 | 2 | -138/+6 | |
| | | | | llvm-svn: 41234 | |||||
* | simplify code slightly | Chris Lattner | 2007-08-21 | 1 | -3/+4 | |
| | | | | llvm-svn: 41233 | |||||
* | reimplement support for complex comparisons, add support for integer complex ↵ | Chris Lattner | 2007-08-21 | 3 | -27/+39 | |
| | | | | | | compares. llvm-svn: 41231 | |||||
* | reimplement complex mul | Chris Lattner | 2007-08-21 | 2 | -47/+28 | |
| | | | | llvm-svn: 41226 | |||||
* | update some comments. | Chris Lattner | 2007-08-21 | 2 | -5/+4 | |
| | | | | llvm-svn: 41218 | |||||
* | Split complex arithmetic codegen out from aggregate codegen. | Chris Lattner | 2007-08-21 | 4 | -160/+320 | |
| | | | | | | | | | | | | | | | | This means that we get rid of tons of intermediate allocas. For example: void foo(double _Complex a, double _Complex b) { a = b+a+a; } this used to have 4 temporary allocas, now it has zero of them. This also simplifies the individual visitor methods because they now can all operate on real/imag pairs instead of having to load/store all over the place. llvm-svn: 41217 | |||||
* | simplify this a bit to remove indirection | Chris Lattner | 2007-08-21 | 1 | -3/+3 | |
| | | | | llvm-svn: 41216 | |||||
* | reimplement addition of complex numbers. | Chris Lattner | 2007-08-21 | 3 | -67/+108 | |
| | | | | llvm-svn: 41215 | |||||
* | Add the ability to visit binary operators without having to | Chris Lattner | 2007-08-21 | 1 | -10/+6 | |
| | | | | | | match on binop then explicitly switching again. llvm-svn: 41214 | |||||
* | switch aggregate expr codegen to use a visitor to localize most of the nasty | Chris Lattner | 2007-08-21 | 2 | -78/+69 | |
| | | | | | | details in its own file. llvm-svn: 41213 | |||||
* | Implement code generation for constant CFStrings. | Anders Carlsson | 2007-08-21 | 5 | -3/+82 | |
| | | | | llvm-svn: 41206 | |||||
* | Fix array->pointer decay. This unbreaks test/CodeGen/array.c | Chris Lattner | 2007-08-20 | 2 | -1/+28 | |
| | | | | llvm-svn: 41202 | |||||
* | Add support for code generation of builtins. | Anders Carlsson | 2007-08-20 | 3 | -0/+41 | |
| | | | | llvm-svn: 41188 | |||||
* | Modified ArraySubscriptExpr to have accessors getLHS and getRHS in addition | Ted Kremenek | 2007-08-20 | 1 | -18/+7 | |
| | | | | | | | | | | | | | to getBase and getIdx. getBase and getIdx now return a "normalized" view of the expression (e.g., always "A[4]" instead of possibly "4[A]"). getLHS and getRHS return the expressions with syntactic fidelity to the original source code. Also modified client code of ArraySubscriptExpr, including the AST dumper and pretty printer, the return-stack value checker, and the LLVM code generator. llvm-svn: 41180 | |||||
* | Add preliminary support for converting struct types. | Anders Carlsson | 2007-08-17 | 3 | -6/+30 | |
| | | | | llvm-svn: 41145 | |||||
* | start splitting out aggregate value computation from EmitExpr into EmitAggExpr. | Chris Lattner | 2007-08-11 | 4 | -58/+336 | |
| | | | | | | | | aggregate value and scalar expression computation are very different, this gets them away from each other. This causes a temporary regression on some complex number examples. llvm-svn: 41014 | |||||
* | New file, just a placeholder for now. | Chris Lattner | 2007-08-10 | 1 | -0/+17 | |
| | | | | llvm-svn: 41002 | |||||
* | fix a codegen bug handling ocuvector element exprs. | Chris Lattner | 2007-08-10 | 1 | -3/+4 | |
| | | | | llvm-svn: 40995 | |||||
* | implement initial codegen for aggregate return functions. This implements | Chris Lattner | 2007-08-10 | 2 | -4/+13 | |
| | | | | | | | | | | | | | | | codegen for: _Complex double bar(int); void test(_Complex double*); void test2(int c) { _Complex double X; X = bar(1); test(&X); } llvm-svn: 40993 | |||||
* | Fix a bug handling function -> pointer decay and avoid emitting a noop | Chris Lattner | 2007-08-10 | 1 | -2/+6 | |
| | | | | | | bitcast. llvm-svn: 40992 | |||||
* | now that implicit conversions are explicit, we can eliminate | Chris Lattner | 2007-08-08 | 2 | -133/+31 | |
| | | | | | | EmitUsualArithmeticConversions. llvm-svn: 40931 | |||||
* | now that implicit conversions are explicit, we can eliminate | Chris Lattner | 2007-08-08 | 2 | -125/+45 | |
| | | | | | | EmitExprWithUsualUnaryConversions. llvm-svn: 40929 | |||||
* | Implement codegen for __builtin_choose_expr. For example: | Chris Lattner | 2007-08-04 | 2 | -0/+14 | |
| | | | | | | | | | | | | | | | | | | | struct X { int A; }; void foo() { struct X s; int i; i = __builtin_choose_expr(0, s, i); } compiles to: %tmp = load i32* %i ; <i32> [#uses=1] store i32 %tmp, i32* %i wow :) llvm-svn: 40801 | |||||
* | implement codegen support for __builtin_types_compatible_p | Chris Lattner | 2007-08-03 | 2 | -0/+11 | |
| | | | | llvm-svn: 40788 | |||||
* | Rename AddrLabel and OCUVectorComponent -> AddrLabelExpr and ↵ | Chris Lattner | 2007-08-03 | 2 | -31/+31 | |
| | | | | | | OCUVectorElementExpr respectively. This is for consistency with other expr nodes end with *Expr. llvm-svn: 40785 | |||||
* | implement codegen for multidest ocuvector expressions, like: | Chris Lattner | 2007-08-03 | 1 | -5/+14 | |
| | | | | | | | vec2.yx = vec2; // reverse llvm-svn: 40782 | |||||
* | add codegen support for storing into a single-element ocu lvalue, such as: | Chris Lattner | 2007-08-03 | 2 | -10/+40 | |
| | | | | | | vec2.x = f; llvm-svn: 40781 | |||||
* | refactor handling of ocuvector lvalue->rvalue codegen into its own method. | Chris Lattner | 2007-08-03 | 2 | -43/+52 | |
| | | | | llvm-svn: 40780 | |||||
* | In the common case where we are shuffling a vector, emit an | Chris Lattner | 2007-08-03 | 1 | -2/+19 | |
| | | | | | | | | | | | | | | | | | | | | | llvm vector shuffle instead of a bunch of insert/extract operations. For: vec4 = vec4.yyyy; // splat Emit: %tmp1 = shufflevector <4 x float> %tmp, <4 x float> undef, <4 x i32> < i32 1, i32 1, i32 1, i32 1 > instead of: %tmp1 = extractelement <4 x float> %tmp, i32 1 %tmp2 = insertelement <4 x float> undef, float %tmp1, i32 0 %tmp3 = extractelement <4 x float> %tmp, i32 1 %tmp4 = insertelement <4 x float> %tmp2, float %tmp3, i32 1 %tmp5 = extractelement <4 x float> %tmp, i32 1 %tmp6 = insertelement <4 x float> %tmp4, float %tmp5, i32 2 %tmp7 = extractelement <4 x float> %tmp, i32 1 %tmp8 = insertelement <4 x float> %tmp6, float %tmp7, i32 3 llvm-svn: 40779 | |||||
* | Add support for scalar-returning element accesses like V.x | Chris Lattner | 2007-08-03 | 1 | -2/+12 | |
| | | | | llvm-svn: 40777 | |||||
* | implement lvalue to rvalue conversion for ocuvector components. We can now ↵ | Chris Lattner | 2007-08-03 | 2 | -1/+28 | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | compile stuff like this: typedef __attribute__(( ocu_vector_type(4) )) float float4; float4 test1(float4 V) { return V.wzyx+V; } to: _test1: pshufd $27, %xmm0, %xmm1 addps %xmm0, %xmm1 movaps %xmm1, %xmm0 ret and: _test1: mfspr r2, 256 oris r3, r2, 4096 mtspr 256, r3 li r3, lo16(LCPI1_0) lis r4, ha16(LCPI1_0) lvx v3, r4, r3 vperm v3, v2, v2, v3 vaddfp v2, v3, v2 mtspr 256, r2 blr llvm-svn: 40771 | |||||
* | add support for codegen of an OCUVectorComponent as an lvalue. | Chris Lattner | 2007-08-02 | 2 | -4/+34 | |
| | | | | | | | | | | We can now codegen: vec4.xy; as nothing! llvm-svn: 40769 | |||||
* | silence some warnings. | Chris Lattner | 2007-08-02 | 1 | -1/+4 | |
| | | | | llvm-svn: 40761 | |||||
* | update this to build with LLVM ToT | Chris Lattner | 2007-08-01 | 1 | -2/+2 | |
| | | | | llvm-svn: 40665 | |||||
* | Implement code generation for __func__, __FUNCTION__ and __PRETTY_FUNCTION__ | Anders Carlsson | 2007-07-21 | 2 | -0/+39 | |
| | | | | llvm-svn: 40162 | |||||
* | silence a warning by treating ocuvectors the same as vectors. | Chris Lattner | 2007-07-19 | 1 | -0/+1 | |
| | | | | llvm-svn: 40037 | |||||
* | implement codegen support for sizeof/alignof | Chris Lattner | 2007-07-18 | 2 | -2/+26 | |
| | | | | llvm-svn: 40009 | |||||
* | Implement break and continue. Patch by Anders Carlsson! | Chris Lattner | 2007-07-16 | 3 | -13/+76 | |
| | | | | llvm-svn: 39927 | |||||
* | Add a hack (mirroring llvm-gcc) to pointer difference | Chris Lattner | 2007-07-16 | 1 | -7/+17 | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | codegen to compile: int test(int *A, int *B) { return A-B; } into: _test: movl 4(%esp), %eax subl 8(%esp), %eax sarl $2, %eax ret instead of: _test: movl 4(%esp), %eax subl 8(%esp), %eax movl %eax, %ecx sarl $31, %ecx shrl $30, %ecx addl %ecx, %eax sarl $2, %eax ret llvm-svn: 39902 | |||||
* | Refactor code so that isIntegerConstantExpr has an ASTContext available. | Chris Lattner | 2007-07-15 | 4 | -5/+6 | |
| | | | | llvm-svn: 39884 | |||||
* | add FIXME and un-XFAIL test | Gabor Greif | 2007-07-14 | 1 | -0/+2 | |
| | | | | llvm-svn: 39858 |