summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/IntrinsicLowering.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* reapply Sanjiv's patch to genericize memcpy/memset/memmove to take anChris Lattner2008-11-211-12/+6
| | | | | | arbitrary integer width for the count. llvm-svn: 59823
* Revert r59802. It was breaking the build of llvm-gcc:Bill Wendling2008-11-211-6/+12
| | | | | | | | | | | | | | | | | | | | | g++ -m32 -c -g -DIN_GCC -W -Wall -Wwrite-strings -Wmissing-format-attribute -fno-common -mdynamic-no-pic -DHAVE_CONFIG_H -Wno-unused -DTARGET_NAME=\"i386-apple-darwin9.5.0\" -I. -I. -I../../llvm-gcc.src/gcc -I../../llvm-gcc.src/gcc/. -I../../llvm-gcc.src/gcc/../include -I./../intl -I../../llvm-gcc.src/gcc/../libcpp/include -I../../llvm-gcc.src/gcc/../libdecnumber -I../libdecnumber -I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.obj/include -I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.src/include -DENABLE_LLVM -I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.obj/../llvm.src/include -D_DEBUG -D_GNU_SOURCE -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -I. -I. -I../../llvm-gcc.src/gcc -I../../llvm-gcc.src/gcc/. -I../../llvm-gcc.src/gcc/../include -I./../intl -I../../llvm-gcc.src/gcc/../libcpp/include -I../../llvm-gcc.src/gcc/../libdecnumber -I../libdecnumber -I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.obj/include -I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.src/include ../../llvm-gcc.src/gcc/llvm-types.cpp -o llvm-types.o ../../llvm-gcc.src/gcc/llvm-convert.cpp: In member function 'void TreeToLLVM::EmitMemCpy(llvm::Value*, llvm::Value*, llvm::Value*, unsigned int)': ../../llvm-gcc.src/gcc/llvm-convert.cpp:1496: error: 'memcpy_i32' is not a member of 'llvm::Intrinsic' ../../llvm-gcc.src/gcc/llvm-convert.cpp:1496: error: 'memcpy_i64' is not a member of 'llvm::Intrinsic' ../../llvm-gcc.src/gcc/llvm-convert.cpp: In member function 'void TreeToLLVM::EmitMemMove(llvm::Value*, llvm::Value*, llvm::Value*, unsigned int)': ../../llvm-gcc.src/gcc/llvm-convert.cpp:1512: error: 'memmove_i32' is not a member of 'llvm::Intrinsic' ../../llvm-gcc.src/gcc/llvm-convert.cpp:1512: error: 'memmove_i64' is not a member of 'llvm::Intrinsic' ../../llvm-gcc.src/gcc/llvm-convert.cpp: In member function 'void TreeToLLVM::EmitMemSet(llvm::Value*, llvm::Value*, llvm::Value*, unsigned int)': ../../llvm-gcc.src/gcc/llvm-convert.cpp:1528: error: 'memset_i32' is not a member of 'llvm::Intrinsic' ../../llvm-gcc.src/gcc/llvm-convert.cpp:1528: error: 'memset_i64' is not a member of 'llvm::Intrinsic' make[3]: *** [llvm-convert.o] Error 1 make[3]: *** Waiting for unfinished jobs.... rm fsf-funding.pod gcov.pod gfdl.pod cpp.pod gpl.pod gcc.pod make[2]: *** [all-stage1-gcc] Error 2 make[1]: *** [stage1-bubble] Error 2 make: *** [all] Error 2 llvm-svn: 59809
* Make mem[cpy,move,set] intrinsics overloaded.Sanjiv Gupta2008-11-211-12/+6
| | | | llvm-svn: 59802
* More refactoring. Yawn.Dale Johannesen2008-09-221-126/+43
| | | | llvm-svn: 56468
* Refactor FP intrinisic setup. Per review feedback.Dale Johannesen2008-09-221-117/+28
| | | | llvm-svn: 56456
* Add intrinsics for log, log2, log10, exp, exp2.Dale Johannesen2008-09-041-0/+213
| | | | | | No functional change (and no FE change to generate them). llvm-svn: 55753
* API change for {BinaryOperator|CmpInst|CastInst}::create*() --> Create. ↵Gabor Greif2008-05-161-78/+78
| | | | | | Legacy interfaces will be in place for some time. (Merge from use-diet branch.) llvm-svn: 51200
* API changes for class Use size reduction, wave 1.Gabor Greif2008-04-061-41/+41
| | | | | | | | Specifically, introduction of XXX::Create methods for Users that have a potentially variable number of Uses. llvm-svn: 49277
* Remove attribution from file headers, per discussion on llvmdev.Chris Lattner2007-12-291-2/+2
| | | | llvm-svn: 45418
* Change the PointerType api for creating pointer types. The old functionality ↵Christopher Lamb2007-12-171-8/+9
| | | | | | of PointerType::get() has become PointerType::getUnqual(), which returns a pointer in the generic address space. The new prototype of PointerType::get() requires both a type and an address space. llvm-svn: 45082
* Implement necessary bits for flt_rounds gcc builtin. Anton Korobeynikov2007-11-151-0/+5
| | | | | | Codegen bits and llvm-gcc support will follow. llvm-svn: 44182
* Teach IntrinsicLowering.cpp about the sin, cos, and pow intrinsics.Dan Gohman2007-10-151-0/+45
| | | | llvm-svn: 43020
* Rewrite sqrt and powi to use anyfloat. By popular demand.Dale Johannesen2007-10-021-29/+28
| | | | llvm-svn: 42537
* minor long double related changesDale Johannesen2007-09-281-0/+18
| | | | llvm-svn: 42439
* Split eh.select / eh.typeid.for intrinsics into i32/i64 versions. This is ↵Anton Korobeynikov2007-09-071-2/+4
| | | | | | | | needed, because they just "mark" register liveins and we let frontend solve type issue, not lowering code :) llvm-svn: 41763
* Add lengthof and endof templates that hide a lot of sizeof computations.Owen Anderson2007-09-071-2/+3
| | | | | | Patch by Sterling Stein! llvm-svn: 41758
* Fix a regression compiling 2005-05-11-Popcount-ffs-fls with the CBE,Chris Lattner2007-08-061-1/+1
| | | | | | introduced by chandler's patch. llvm-svn: 40864
* New CallInst interface to address GLIBCXX_DEBUG errors caused byDavid Greene2007-08-011-4/+4
| | | | | | | | indexing an empty std::vector. Updates to all clients. llvm-svn: 40660
* The exception handling intrinsics return values,Duncan Sands2007-07-061-1/+9
| | | | | | | | | | | | | so must be lowered to a value, not nothing at all. Subtle point: I made eh_selector return 0 and eh_typeid_for return 1. This means that only cleanups (destructors) will be run as the exception unwinds [if eh_typeid_for returned 0 then it would be as if the first catch always matched, and the corresponding handler would be run], which is probably want you want in the CBE. llvm-svn: 37947
* Extend eh.selector to support both catches and filters.Duncan Sands2007-07-041-1/+0
| | | | | | Drop the eh.filter intrinsic. llvm-svn: 37875
* Codegen support (stripped out) for the annotate attribute.Tanya Lattner2007-06-151-0/+3
| | | | llvm-svn: 37608
* Fix a typo in bswap lowering.Lauro Ramos Venancio2007-06-111-1/+1
| | | | llvm-svn: 37544
* Make LowerCTPOP() support arbitrary bitwidth integer type.Zhou Sheng2007-06-021-10/+23
| | | | llvm-svn: 37397
* Correct the logic in LowerPartSet which cleared the bits from 0 to low-1.Zhou Sheng2007-05-261-5/+7
| | | | llvm-svn: 37331
* Un-brain-dead-ify the lowering of part set for the reverse case.Reid Spencer2007-05-151-99/+73
| | | | llvm-svn: 37071
* Give names to the final result values of the part_set computations. ThisReid Spencer2007-05-141-2/+2
| | | | | | just aids in readability and debugability of the output. No functional change. llvm-svn: 37037
* Get the size of auto arrays right, regardless of its changing size.Reid Spencer2007-05-121-11/+13
| | | | llvm-svn: 37006
* Fix problems in the PartSet lowering having to do with incorrect bit width.Reid Spencer2007-04-161-3/+5
| | | | llvm-svn: 36180
* Make sure intrinsics that are lowered to functions make the function weakReid Spencer2007-04-121-2/+2
| | | | | | | linkage so we only end up with one of them in a program. These are, after all overloaded and templatish in nature. llvm-svn: 35956
* Fix bugs in generated code for part_select and part_set so that llc doesn'tReid Spencer2007-04-121-35/+44
| | | | | | barf when CBE is run with a program that contains these intrinsics. llvm-svn: 35946
* Fix a bug in PartSet. The replacement value needs to be zext or trunc toReid Spencer2007-04-121-3/+7
| | | | | | the size of the value, not just zext. Also, give better names to two BBs. llvm-svn: 35945
* For PR1284:Reid Spencer2007-04-121-11/+193
| | | | | | Implement the "part_set" intrinsic. llvm-svn: 35938
* apparently some people commit without building the tree, or they forget toChris Lattner2007-04-101-1/+1
| | | | | | commit a LOT of files. llvm-svn: 35858
* Implement the llvm.bit.part_select.iN.iN.iN overloaded intrinsic.Reid Spencer2007-04-041-0/+175
| | | | llvm-svn: 35678
* For PR1297:Reid Spencer2007-04-021-1/+1
| | | | | | | Make sure that the CTPOP result is casted to i32 as the bit counting intrinsics all return i32 now (this affects CTLZ and CTTZ as well). llvm-svn: 35567
* For PR1297:Reid Spencer2007-04-011-17/+4
| | | | | | Support overloaded intrinsics bswap, ctpop, cttz, ctlz. llvm-svn: 35547
* Lower eh filter intrinsic.Jim Laskey2007-03-011-0/+1
| | | | llvm-svn: 34802
* Provide a more meaningful name.Jim Laskey2007-02-281-1/+1
| | | | llvm-svn: 34751
* Update comment.Jim Laskey2007-02-221-1/+1
| | | | llvm-svn: 34502
* Remove assertion.Jim Laskey2007-02-221-4/+1
| | | | llvm-svn: 34494
* Selection and lowering for exception handling.Jim Laskey2007-02-211-0/+5
| | | | llvm-svn: 34481
* eliminate vector-related allocationsChris Lattner2007-02-131-2/+4
| | | | llvm-svn: 34223
* Two fixes:Chris Lattner2007-02-061-38/+33
| | | | | | | | 1. Memset takes an i32 for the value to set, not i8. This was causing GCC to ICE all over the place (PR1183). 2. memcpy/memmove were not properly zext/trunc'ing the size in some cases. llvm-svn: 33970
* Fix PR1181 and CodeGen/CBackend/2007-02-05-memset.llChris Lattner2007-02-061-6/+16
| | | | llvm-svn: 33957
* Use short form of BinaryOperator create function.Reid Spencer2007-02-021-16/+16
| | | | llvm-svn: 33784
* Changes to support making the shift instructions be true BinaryOperators.Reid Spencer2007-02-021-32/+32
| | | | | | | | | | | | This feature is needed in order to support shifts of more than 255 bits on large integer types. This changes the syntax for llvm assembly to make shl, ashr and lshr instructions look like a binary operator: shl i32 %X, 1 instead of shl i32 %X, i8 1 Additionally, this should help a few passes perform additional optimizations. llvm-svn: 33776
* For PR1136: Rename GlobalVariable::isExternal as isDeclaration to avoidReid Spencer2007-01-301-1/+1
| | | | | | confusion with external linkage types. llvm-svn: 33663
* Use TargetData to obtain the correct size of the "size_t" argument forReid Spencer2007-01-291-9/+24
| | | | | | | | functions like memcpy, memmove and memset. Ensure only one prototype is used for these functions and that it matches the system definition by using the appropriate type for the size argument. llvm-svn: 33618
* For PR1138:Reid Spencer2007-01-281-4/+11
| | | | | | | Force memcpy to be the 32-bit variant. Since this is only used with CBE and lli which both target 32-bit machines, this should be okay. llvm-svn: 33608
* rename Type::isIntegral to Type::isInteger, eliminating the old Type::isInteger.Chris Lattner2007-01-151-2/+2
| | | | | | | | | rename Type::getIntegralTypeMask to Type::getIntegerTypeMask. This makes naming much more consistent. For example, there are now no longer any instances of IntegerType that are not considered isInteger! :) llvm-svn: 33225
OpenPOWER on IntegriCloud