summaryrefslogtreecommitdiffstats
path: root/llvm/utils/TableGen/NeonEmitter.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Remove the Clang tblgen backends from LLVM.Peter Collingbourne2011-10-061-1551/+0
| | | | llvm-svn: 141293
* Move TableGen's parser and entry point into a libraryPeter Collingbourne2011-10-011-1/+1
| | | | | | This is the first step towards splitting LLVM and Clang's tblgen executables. llvm-svn: 140951
* Avoid evaluating Neon macro arguments more than once by disabling type checks.Bob Wilson2011-08-151-15/+8
| | | | | | | | | | It turns out that the use of "__extension__" in these macros was disabling the expected "incompatible pointer" warnings, so these type checks were not doing anything anyway. They introduced a serious bug by evaluating some macro arguments twice, which is a big problem for arguments with side effects. I'll have to find another way to get the right type checking. Radar 9947657. llvm-svn: 137680
* Revert "Shorten some ARM builtin names by removing unnecessary "neon" prefix."Bob Wilson2011-06-241-6/+6
| | | | | | | | Sorry, this was a bad idea. Within clang these builtins are in a separate "ARM" namespace, but the actual builtin names should clearly distinguish that they are target specific. llvm-svn: 133832
* Shorten some ARM builtin names by removing unnecessary "neon" prefix.Bob Wilson2011-06-241-6/+6
| | | | llvm-svn: 133825
* Consolidate some TableGen diagnostic helper functions.Jim Grosbach2011-06-211-0/+1
| | | | | | | TableGen had diagnostic printers sprinkled about in a few places. Pull them together into a single location in Error.cpp. llvm-svn: 133568
* Add special-case range checking for VCVT_N intrinsic immediate operands.Bob Wilson2011-06-091-3/+8
| | | | | | Radar 9558930. llvm-svn: 132782
* Define Neon load/store intrinsics for Clang as macros instead of functions.Bob Wilson2011-04-221-15/+51
| | | | | | | This is needed so the front-end can see "aligned" attributes on the type for the pointer arguments. Radar 9311427. llvm-svn: 129964
* Use intrinsics for Neon vmull operations. Radar 9208957.Bob Wilson2011-03-311-23/+17
| | | | llvm-svn: 128591
* Use __builtin_shufflevector to implement vget_low and vget_high intrinsics.Bob Wilson2011-01-071-15/+5
| | | | | | This was suggested by Edmund Grimley Evans in pr8411. llvm-svn: 123043
* Neon intrinsic tests need to be compiled for Cortex-A9 for f16 support.Bob Wilson2010-12-171-1/+1
| | | | llvm-svn: 122015
* Teach the Neon intrinsic generator to widen half-precision float types.Bob Wilson2010-12-151-0/+2
| | | | | | | This isn't currently used for anything but I ran into it when experimenting with some changes, and it might be useful in the future. llvm-svn: 121911
* Add a Neon intrinsic test generator.Bob Wilson2010-12-151-1/+106
| | | | | | This is still a WIP. It's already good enough to expose a few bugs, though. llvm-svn: 121868
* Fix Neon intrinsic immediate range checking for some double-register operands.Bob Wilson2010-12-151-3/+7
| | | | | | | | | | | Some quad-register intrinsics with lane operands only take a double-register operand for the vector containing the lane. The valid range of lane numbers is then half as big as you would expect from the quad-register type. Note: This currently has no effect because those intrinsics are now handled entirely in the header file using __builtin_shufflevector, which does its own range checking, but I want to use this for generating tests. llvm-svn: 121867
* The Neon vqdmlsl_lane and vqdmlal_lane intrinsics have 4 arguments, not 3.Bob Wilson2010-12-101-4/+4
| | | | llvm-svn: 121469
* 80-column fixes.Bob Wilson2010-12-091-13/+26
| | | | llvm-svn: 121395
* Add a license comment to the generated arm_neon.h header.Bob Wilson2010-12-091-3/+23
| | | | | | | | | Remove the previous header. I don't think we need to expose to end users that we use TableGen to produce our version of arm_neon.h, and that header was also using doubleslash comments which could be a problem when using it in strict C89 compilations. llvm-svn: 121390
* Add operators for "_lane" variants of some saturating Neon multiply intrinsicsBob Wilson2010-12-081-2/+24
| | | | | | so they can be implemented without separate clang builtins. llvm-svn: 121299
* Add operators for vabdl and vabal so they can be implemented without builtins.Bob Wilson2010-12-081-0/+27
| | | | llvm-svn: 121287
* Remove unused function parameter.Bob Wilson2010-12-081-27/+22
| | | | llvm-svn: 121286
* Add an operator for vaba so it can be implemented using vabd.Bob Wilson2010-12-081-2/+7
| | | | llvm-svn: 121276
* Add operators for vadd[lw] and vsub[lw]Bob Wilson2010-12-081-0/+14
| | | | | | so they can be implemented without clang builtins. llvm-svn: 121213
* Add operators for vmlal{_n,_lane} and vmlsl{_n,_lane}Bob Wilson2010-12-071-2/+25
| | | | | | so they can be implemented without clang builtins. llvm-svn: 121209
* Emit vmovl intrinsics first in the arm_neon.h headerBob Wilson2010-12-071-33/+44
| | | | | | so they can be used in the implementations of other intrinsics. llvm-svn: 121208
* Add an operator for vdup_lane so it can be implemented without a clang builtin.Bob Wilson2010-12-071-0/+3
| | | | llvm-svn: 121190
* Add an operator for vmull_lane so it can be implemented without a clang builtin.Bob Wilson2010-12-071-0/+5
| | | | llvm-svn: 121187
* Add new built-in operations for vmull and vmull_nBob Wilson2010-12-071-0/+18
| | | | | | | so they can be implemented without requiring clang builtins. Radar 8446238. llvm-svn: 121173
* Add an OpReinterpret operation to TableGen's NeonEmitter.Bob Wilson2010-12-071-39/+70
| | | | | | | | An OpReinterpret entry is handled by translating it to OpCast intrinsics for all combinations of source and destination types with the same total size. This will be used to generate all the vreinterpret intrinsics. llvm-svn: 121087
* Fix whitespace.Bob Wilson2010-12-071-5/+5
| | | | llvm-svn: 121086
* Remove trailing whitespace.Bob Wilson2010-12-041-107/+107
| | | | llvm-svn: 120891
* Get Neon intrinsic names from the new "Name" field in the tblgen recordsBob Wilson2010-12-031-4/+4
| | | | | | instead of just converting the record name to lowercase. llvm-svn: 120809
* Add support for "_lane" variants of VMUL, VMLA, and VMLS Neon intrinsics.Bob Wilson2010-12-031-0/+18
| | | | llvm-svn: 120764
* Support using macros for Neon intrinsics implemented without builtins.Bob Wilson2010-12-031-49/+58
| | | | | | | | Intrinsics implemented with Clang builtins could already be implemented as either inline functions or macros, but intrinsics implemented directly (without builtins) could only be inline functions. llvm-svn: 120763
* Simplify code in Neon intrinsics. No functional changes intended.Bob Wilson2010-12-021-43/+37
| | | | | | | For most intrinsics, there is no need to allocate a temporary to hold the result value; just return it directly. llvm-svn: 120695
* Assign arguments of Neon intrinsic macros to local temporaries.Bob Wilson2010-12-021-4/+31
| | | | | | | | Since we're casting them for the calls to the builtins, we need this to make sure their types get checked in the same way they would if the intrinsics were implemented as inline functions. llvm-svn: 120693
* Use statement expressions in Neon intrinsics defined as macros.Bob Wilson2010-12-021-9/+8
| | | | | | | This is in preparation for adding assignments to temporaries to ensure that the proper type checking is done. llvm-svn: 120649
* Add casts for splatted scalars in calls to Neon builtins.Bob Wilson2010-12-021-5/+5
| | | | llvm-svn: 120641
* Add a missing cast for Neon vsbl results.Bob Wilson2010-12-021-2/+3
| | | | | | | The bitwise operations are always done with unsigned values, but the result may be signed. llvm-svn: 120640
* Add another missing cast for Neon vcombine results.Bob Wilson2010-12-021-1/+1
| | | | llvm-svn: 120639
* Add casts in arm_neon.h for result values in inline functions as well as macros.Bob Wilson2010-12-021-1/+1
| | | | | | We should not rely on lax-vector-conversions for these intrinsics to work. llvm-svn: 120638
* Avoid "char" for Neon vector elements; make it explicitly signed (or unsigned).Bob Wilson2010-12-021-5/+7
| | | | llvm-svn: 120632
* Cast scalar results of Neon macros to the correct type.Bob Wilson2010-12-021-1/+1
| | | | llvm-svn: 120631
* Add explicit casts for vector arguments to Neon builtins.Bob Wilson2010-12-011-5/+31
| | | | | | This avoids warnings with -Wvector-conversions. Radar 8228022. llvm-svn: 120597
* Add some comments for TableGen's NeonEmitter.Bob Wilson2010-12-011-7/+12
| | | | llvm-svn: 120596
* Cleanup: simplify checks for integers between 2 and 4.Bob Wilson2010-12-011-4/+4
| | | | llvm-svn: 120595
* Fix copy-and-paste error in exception message.Bob Wilson2010-11-231-1/+1
| | | | llvm-svn: 120033
* Change the 'x' type modifier for Neon intrinsics to force a signed integer.Bob Wilson2010-11-181-0/+5
| | | | | | | | This makes it symmetric with the 'u' modifier that forces an unsigned type. This is needed for unsigned vector shifts, where the shift amount still needs to be signed. PR8482 (Radar 8603521). llvm-svn: 119742
* Use new neon_vector_type and neon_polyvector_type attributes for Neon vectors.Bob Wilson2010-11-161-7/+11
| | | | llvm-svn: 119406
* Change Neon polynomial types to be signed to match GCC.Bob Wilson2010-11-161-2/+2
| | | | llvm-svn: 119405
* Refactor to new GetNumElements function.Bob Wilson2010-11-161-35/+38
| | | | | | No functional change. llvm-svn: 119404
OpenPOWER on IntegriCloud