summaryrefslogtreecommitdiffstats
path: root/clang/utils
Commit message (Collapse)AuthorAgeFilesLines
...
* [AArch64] Add support for NEON scalar floating-point compare instructions.Chad Rosier2013-10-301-0/+2
| | | | llvm-svn: 193692
* PR17666: Instead of allowing an initial identifier argument in any attributeRichard Smith2013-10-243-42/+35
| | | | | | | | | | | | which we don't think can't have one, only allow it in the tiny number of attributes which opts into this weird parse rule. I've manually checked that the handlers for all these attributes can in fact cope with an identifier as the argument. This is still somewhat terrible; we should move more fully towards picking the parsing rules based on the attribute, and make the Parse -> Sema interface more type-safe. llvm-svn: 193295
* [AArch64] Add support for NEON scalar extract narrow instructions.Chad Rosier2013-10-181-0/+6
| | | | llvm-svn: 192971
* Implemented aarch64 SIMD copy related ACLE intrinsic :Kevin Qin2013-10-111-5/+25
| | | | | | vget_lane, vset_lane, vcopy_lane, vcreate, vdup_n, vdup_lane, vmov_n. llvm-svn: 192411
* [AArch64] Add support for NEON scalar signed/unsigned integer to floating-pointChad Rosier2013-10-081-0/+7
| | | | | | convert instructions. llvm-svn: 192232
* Implement aarch64 neon instruction set AdvSIMD (Across).Jiangning Liu2013-10-051-4/+12
| | | | llvm-svn: 192029
* Consumed Analysis: Change callable_when so that it can take a list of statesDeLesley Hutchins2013-10-041-1/+94
| | | | | | | | that a function can be called in. This reduced the total number of annotations needed and makes writing more complicated behaviour less burdensome. Patch by chriswails@gmail.com. llvm-svn: 191983
* Implement aarch64 neon instruction set AdvSIMD (3V elem).Jiangning Liu2013-10-041-16/+94
| | | | llvm-svn: 191945
* Tablegen now generates a StringSwitch for attributes containing enumeration ↵Aaron Ballman2013-09-111-0/+25
| | | | | | arguments to map strings to the proper enumeration value. This makes error checking more consistent and reduces the amount of hand-written code required. llvm-svn: 190545
* The cleanup attribute no longer uses an unresolved, simple identifier as its ↵Aaron Ballman2013-09-111-0/+1
| | | | | | argument. Instead, it takes an expression that is fully resolved. llvm-svn: 190476
* Attribute tablegen now understands that attribute arguments can be optional. ↵Aaron Ballman2013-09-093-18/+140
| | | | | | This allows for automated checking of the number of arguments expected vs number of arguments given for attributes. Greatly reduces the amount of manual checking required. llvm-svn: 190368
* Fix constructor-related typos.Benjamin Kramer2013-09-091-1/+1
| | | | | | Noticed by Roman Divacky. llvm-svn: 190311
* Implement aarch64 neon instruction set AdvSIMD (3V Diff), covering the ↵Jiangning Liu2013-09-091-15/+175
| | | | | | | | following 26 instructions, SADDL, UADDL, SADDW, UADDW, SSUBL, USUBL, SSUBW, USUBW, ADDHN, RADDHN, SABAL, UABAL, SUBHN, RSUBHN, SABDL, UABDL, SMLAL, UMLAL, SMLSL, UMLSL, SQDMLAL, SQDMLSL, SMULL, UMULL, SQDMULL, PMULL llvm-svn: 190289
* [analyzer] SATestBuild: strip trailing newlines from command file.Jordan Rose2013-09-061-0/+1
| | | | | | | | | | When running a make-based command, SATestBuild tries to append a -jN flag with an appropriate N to run the build in parallel. However, it failed to take into account that each line read includes a trailing newline (unless it is the last line of a file without a trailing newline), which resulted in the "-jN" appearing on a line on its own. llvm-svn: 190164
* Inplement aarch64 neon instructions in AdvSIMD(shift). About 24 shift ↵Hao Liu2013-09-041-6/+54
| | | | | | | | | | instructions: sshr,ushr,ssra,usra,srshr,urshr,srsra,ursra,sri,shl,sli,sqshlu,sqshl,uqshl,shrn,sqrshr$ and 4 convert instructions: scvtf,ucvtf,fcvtzs,fcvtzu llvm-svn: 189926
* Switched FormatAttr to using an IdentifierArgument instead of a ↵Aaron Ballman2013-09-031-0/+1
| | | | | | StringArgument since that is a more accurate modeling. llvm-svn: 189851
* mangle aarch64 Neon ACLE scalar instrinsic name with BHSD suffix.Kevin Qin2013-08-291-12/+45
| | | | llvm-svn: 189574
* Move individual group name strings from the OptionTable into one big char ↵Craig Topper2013-08-291-10/+22
| | | | | | array. Then only store offsets into it in the OptionTable. Saves about 4K from the clang binary and removes 400 relocation entries from DiagnosticIDs.o. llvm-svn: 189568
* Reorder and shrink size of NameLen field in diagnostic group table. Shaves ↵Craig Topper2013-08-281-1/+3
| | | | | | ~4K from clang binary. llvm-svn: 189445
* Merge diagnostic group tables to reduce data size and relocation entries.Craig Topper2013-08-281-14/+37
| | | | | | | | The individual group and subgroups tables are now two large tables. The option table stores an index into these two tables instead of pointers. This reduces the size of the options tabe since it doesn't need to store pointers. It also reduces the number of relocations needed. My build shows this reducing DiagnosticsIDs.o and the clang binary by ~20.5K. It also removes ~400 relocation entries from DiagnosticIDs.o. llvm-svn: 189438
* clang-format utils/TableGen/TableGen.cpp.Rafael Espindola2013-08-161-82/+76
| | | | | | | I have a patch that edits the file. Running clang-format first makes the patch a lot easier to review. llvm-svn: 188562
* Clang and AArch64 backend patches to support shll/shl and vmovl instructions ↵Hao Liu2013-08-151-7/+8
| | | | | | and ACLE functions llvm-svn: 188452
* AArch64: initial NEON supportTim Northover2013-08-011-132/+442
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Patch by Ana Pazos - Completed implementation of instruction formats: AdvSIMD three same AdvSIMD modified immediate AdvSIMD scalar pairwise - Completed implementation of instruction classes (some of the instructions in these classes belong to yet unfinished instruction formats): Vector Arithmetic Vector Immediate Vector Pairwise Arithmetic - Initial implementation of instruction formats: AdvSIMD scalar two-reg misc AdvSIMD scalar three same - Intial implementation of instruction class: Scalar Arithmetic - Initial clang changes to support arm v8 intrinsics. Note: no clang changes for scalar intrinsics function name mangling yet. - Comprehensive test cases for added instructions To verify auto codegen, encoding, decoding, diagnosis, intrinsics. llvm-svn: 187568
* Fixing an unused variable warning.Aaron Ballman2013-07-311-4/+1
| | | | llvm-svn: 187474
* Added the notion of Type and TargetSpecific attributes to the clang ↵Aaron Ballman2013-07-301-1/+12
| | | | | | tablegen. In turn, this fixes a mistake with Ptr32, Ptr64, UPtr and SPtr attribtues generating AST nodes that are never actually used. llvm-svn: 187401
* Const-correct some iterators. No functional change.Craig Topper2013-07-211-9/+9
| | | | llvm-svn: 186797
* Remove trailing whitespaceCraig Topper2013-07-191-28/+28
| | | | llvm-svn: 186722
* [NeonIntrinsicTestEmitter] vld1/vst1 do not require the :64 hint.Michael Gottesman2013-06-241-2/+0
| | | | llvm-svn: 184786
* [NeonIntrinsicTestEmitter] Fix incorrect FileCheck pattern where we were ↵Michael Gottesman2013-06-241-2/+2
| | | | | | expecting a ',' prefix to alignment hints. llvm-svn: 184785
* [NeonIntrinsicTestEmitter] Add requirement to arm neon intrinsic tests for ↵Michael Gottesman2013-06-241-0/+2
| | | | | | | | | the feature long_tests. This will prevent the tests from running on normal make check. You will need to actually pass in --param run_long_tests=true to LIT in order to run these. llvm-svn: 184784
* Remove option emitter from clang-tblgenReid Kleckner2013-06-184-290/+1
| | | | | | | The CMake build was still using it because I forgot to s/CLANG/LLVM/ in the tablegen() call. The Makefile build is already using llvm-tblgen. llvm-svn: 184192
* [analyzer] SATestBuild: Don't require reference results to have logs.Jordan Rose2013-06-101-2/+4
| | | | | | | | The Logs directory isn't used for testing, so it's filtered out ahead of time. However, there's then no reason to include it in version control at all. Don't error if it's not present. llvm-svn: 183689
* [analyzer] Always use ccc-analyzer when running scan-build on buildbotAnna Zaks2013-05-311-0/+3
| | | | llvm-svn: 182982
* Increase the portability of this script a bit: use /usr/bin/env to find bash,Richard Smith2013-05-241-1/+1
| | | | | | rather than assuming it lives in the path. Patch by Eitan Adler! llvm-svn: 182696
* ARM: Improve codegen for vget_low_* and vget_high_ intrinsics.Jim Grosbach2013-05-151-4/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | These intrinsics use the __builtin_shuffle() function to extract the low and high half, respectively, of a 128-bit NEON vector. Currently, they're defined to use bitcasts to simplify the emitter, so we get code like: uint16x4_t vget_low_u32(uint16x8_t __a) { return (uint32x2_t) __builtin_shufflevector((int64x2_t) __a, (int64x2_t) __a, 0); } While this works, it results in those bitcasts going all the way through to the IR, resulting in code like: %1 = bitcast <8 x i16> %in to <2 x i64> %2 = shufflevector <2 x i64> %1, <2 x i64> undef, <1 x i32> %zeroinitializer %3 = bitcast <1 x i64> %2 to <4 x i16> We can instead easily perform the operation directly on the input vector like: uint16x4_t vget_low_u16(uint16x8_t __a) { return __builtin_shufflevector(__a, __a, 0, 1, 2, 3); } Not only is that much easier to read on its own, it also results in cleaner IR like: %1 = shufflevector <8 x i16> %in, <8 x i16> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3> This is both easier to read and easier for the back end to reason about effectively since the operation is obfuscating the source with bitcasts. rdar://13894163 llvm-svn: 181865
* Fix copy-pasto in naming of LAST_MS_INHERITANCE[_ATTR]Reid Kleckner2013-05-141-8/+8
| | | | | | Richard Smith pointed this out over a month ago. llvm-svn: 181830
* ArrayRef<T>() -> None cleanupDmitri Gribenko2013-05-051-1/+1
| | | | llvm-svn: 181140
* Restore Richard's belief in me.Douglas Gregor2013-05-031-1/+1
| | | | llvm-svn: 181042
* Use attribute argument information to determine when to parse attribute ↵Douglas Gregor2013-05-023-0/+51
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | arguments as expressions. This change partly addresses a heinous problem we have with the parsing of attribute arguments that are a lone identifier. Previously, we would end up parsing the 'align' attribute of this as an expression "(Align)": template<unsigned Size, unsigned Align> class my_aligned_storage { __attribute__((align((Align)))) char storage[Size]; }; while this would parse as a "parameter name" 'Align': template<unsigned Size, unsigned Align> class my_aligned_storage { __attribute__((align(Align))) char storage[Size]; }; The code that handles the alignment attribute would completely ignore the parameter name, so the while the first of these would do what's expected, the second would silently be equivalent to template<unsigned Size, unsigned Align> class my_aligned_storage { __attribute__((align)) char storage[Size]; }; i.e., use the maximal alignment rather than the specified alignment. Address this by sniffing the "Args" provided in the TableGen description of attributes. If the first argument is "obviously" something that should be treated as an expression (rather than an identifier to be matched later), parse it as an expression. Fixes <rdar://problem/13700933>. llvm-svn: 180973
* Revert r180970; it's causing breakage.Douglas Gregor2013-05-023-52/+0
| | | | llvm-svn: 180972
* Use attribute argument information to determine when to parse attribute ↵Douglas Gregor2013-05-023-0/+52
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | arguments as expressions. This change partly addresses a heinous problem we have with the parsing of attribute arguments that are a lone identifier. Previously, we would end up parsing the 'align' attribute of this as an expression "(Align)": template<unsigned Size, unsigned Align> class my_aligned_storage { __attribute__((align((Align)))) char storage[Size]; }; while this would parse as a "parameter name" 'Align': template<unsigned Size, unsigned Align> class my_aligned_storage { __attribute__((align(Align))) char storage[Size]; }; The code that handles the alignment attribute would completely ignore the parameter name, so the while the first of these would do what's expected, the second would silently be equivalent to template<unsigned Size, unsigned Align> class my_aligned_storage { __attribute__((align)) char storage[Size]; }; i.e., use the maximal alignment rather than the specified alignment. Address this by sniffing the "Args" provided in the TableGen description of attributes. If the first argument is "obviously" something that should be treated as an expression (rather than an identifier to be matched later), parse it as an expression. Fixes <rdar://problem/13700933>. llvm-svn: 180970
* [neonemitter tests] Change triple of emitted tests to thumbv7s to match the ↵Michael Gottesman2013-04-251-1/+1
| | | | | | target cpu being swift. Also specify the target-abi to apcs-gnu. llvm-svn: 180233
* [6/6] ARM Neon Intrinsic Tablegen Test Generator.Michael Gottesman2013-04-161-1/+462
| | | | | | | | | Added GenerateChecksForIntrinsic method to generate FileCheck patterns for generated arm neon tests. Reviewed by Bob Wilson. llvm-svn: 179644
* [5/6] ARM Neon Intrinsic Tablegen Test Generator.Michael Gottesman2013-04-161-1/+2
| | | | | | | | Changed the test generation target cpu type from cortex-a9 to swift. Reviewed by Bob Wilson. llvm-svn: 179642
* [4/6] ARM Neon Intrinsic Tablegen Test Generator.Michael Gottesman2013-04-161-3/+9
| | | | | | | | | Added code to NeonEmitter::runTests so that GenTest gets all of the needed arguments to invoke the neon test generation methods. Reviewed by Bob Wilson. llvm-svn: 179640
* [3/6] ARM Neon Intrinsic Tablegen Test Generator.Michael Gottesman2013-04-161-28/+44
| | | | | | | | | Refactored out the method InstructionTypeCode from MangleName for use in further patches which perform neon tablegen test generation. Reviewed by Bob Wilson. llvm-svn: 179636
* [2/6] ARM Neon Intrinsic Tablegen Test Generator.Michael Gottesman2013-04-161-1/+17
| | | | | | | | | | This patch causes OpInst records to be silently identified with their Non-Op inst counterparts so that the same test generation infrastructure can be used to generate tests. Reviewed by Bob Wilson. llvm-svn: 179628
* Define Neon intrinsics as "static inline" to avoid warning. rdar://13108414Bob Wilson2013-04-121-1/+1
| | | | | | | | | | | We had been defining Neon intrinsics as "static" with always_inline attributes. If you use them from an extern inline function, you get a warning, e.g.: static function 'vadd_u8' is used in an inline function with external linkage This change simply adds the inline keyword to avoid that warning. llvm-svn: 179406
* doce parsing: adding few more headerdoc tags.Fariborz Jahanian2013-04-051-0/+3
| | | | | | // rdar://12379114 llvm-svn: 178903
* [analyzer] Re-enable cplusplus.NewDelete (but not NewDeleteLeaks).Jordan Rose2013-04-051-2/+3
| | | | | | | | As mentioned in the previous commit message, the use-after-free and double-free warnings for 'delete' are worth enabling even while the leak warnings still have false positives. llvm-svn: 178891
OpenPOWER on IntegriCloud