xcodebuild-helper 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.codeclimate.yml +20 -0
- data/.gitignore +1 -0
- data/.rspec +2 -0
- data/.travis.yml +7 -0
- data/Gemfile +6 -0
- data/Gemfile.lock +110 -0
- data/Guardfile +18 -0
- data/README.md +7 -0
- data/Rakefile +7 -0
- data/TODO.md +3 -0
- data/bin/oclint +5 -0
- data/bin/oclint-0.8 +5 -0
- data/bin/oclint-json-compilation-database +5 -0
- data/bin/oclint-xcodebuild +5 -0
- data/externals/oclint/LICENSE +69 -0
- data/externals/oclint/bin/oclint +0 -0
- data/externals/oclint/bin/oclint-0.10.2 +0 -0
- data/externals/oclint/bin/oclint-json-compilation-database +88 -0
- data/externals/oclint/bin/oclint-xcodebuild +218 -0
- data/externals/oclint/lib/clang/3.7.0/asan_blacklist.txt +13 -0
- data/externals/oclint/lib/clang/3.7.0/include/Intrin.h +958 -0
- data/externals/oclint/lib/clang/3.7.0/include/__stddef_max_align_t.h +43 -0
- data/externals/oclint/lib/clang/3.7.0/include/__wmmintrin_aes.h +72 -0
- data/externals/oclint/lib/clang/3.7.0/include/__wmmintrin_pclmul.h +34 -0
- data/externals/oclint/lib/clang/3.7.0/include/adxintrin.h +88 -0
- data/externals/oclint/lib/clang/3.7.0/include/altivec.h +13528 -0
- data/externals/oclint/lib/clang/3.7.0/include/ammintrin.h +215 -0
- data/externals/oclint/lib/clang/3.7.0/include/arm_acle.h +304 -0
- data/externals/oclint/lib/clang/3.7.0/include/arm_neon.h +68419 -0
- data/externals/oclint/lib/clang/3.7.0/include/avx2intrin.h +1256 -0
- data/externals/oclint/lib/clang/3.7.0/include/avx512bwintrin.h +1250 -0
- data/externals/oclint/lib/clang/3.7.0/include/avx512cdintrin.h +131 -0
- data/externals/oclint/lib/clang/3.7.0/include/avx512dqintrin.h +242 -0
- data/externals/oclint/lib/clang/3.7.0/include/avx512erintrin.h +285 -0
- data/externals/oclint/lib/clang/3.7.0/include/avx512fintrin.h +2457 -0
- data/externals/oclint/lib/clang/3.7.0/include/avx512vlbwintrin.h +1907 -0
- data/externals/oclint/lib/clang/3.7.0/include/avx512vldqintrin.h +353 -0
- data/externals/oclint/lib/clang/3.7.0/include/avx512vlintrin.h +1982 -0
- data/externals/oclint/lib/clang/3.7.0/include/avxintrin.h +1308 -0
- data/externals/oclint/lib/clang/3.7.0/include/bmi2intrin.h +99 -0
- data/externals/oclint/lib/clang/3.7.0/include/bmiintrin.h +153 -0
- data/externals/oclint/lib/clang/3.7.0/include/cpuid.h +209 -0
- data/externals/oclint/lib/clang/3.7.0/include/cuda_builtin_vars.h +110 -0
- data/externals/oclint/lib/clang/3.7.0/include/emmintrin.h +1480 -0
- data/externals/oclint/lib/clang/3.7.0/include/f16cintrin.h +63 -0
- data/externals/oclint/lib/clang/3.7.0/include/float.h +124 -0
- data/externals/oclint/lib/clang/3.7.0/include/fma4intrin.h +236 -0
- data/externals/oclint/lib/clang/3.7.0/include/fmaintrin.h +234 -0
- data/externals/oclint/lib/clang/3.7.0/include/fxsrintrin.h +55 -0
- data/externals/oclint/lib/clang/3.7.0/include/htmintrin.h +226 -0
- data/externals/oclint/lib/clang/3.7.0/include/htmxlintrin.h +363 -0
- data/externals/oclint/lib/clang/3.7.0/include/ia32intrin.h +101 -0
- data/externals/oclint/lib/clang/3.7.0/include/immintrin.h +203 -0
- data/externals/oclint/lib/clang/3.7.0/include/inttypes.h +102 -0
- data/externals/oclint/lib/clang/3.7.0/include/iso646.h +43 -0
- data/externals/oclint/lib/clang/3.7.0/include/limits.h +118 -0
- data/externals/oclint/lib/clang/3.7.0/include/lzcntintrin.h +72 -0
- data/externals/oclint/lib/clang/3.7.0/include/mm3dnow.h +167 -0
- data/externals/oclint/lib/clang/3.7.0/include/mm_malloc.h +75 -0
- data/externals/oclint/lib/clang/3.7.0/include/mmintrin.h +507 -0
- data/externals/oclint/lib/clang/3.7.0/include/module.modulemap +196 -0
- data/externals/oclint/lib/clang/3.7.0/include/nmmintrin.h +35 -0
- data/externals/oclint/lib/clang/3.7.0/include/pmmintrin.h +122 -0
- data/externals/oclint/lib/clang/3.7.0/include/popcntintrin.h +50 -0
- data/externals/oclint/lib/clang/3.7.0/include/prfchwintrin.h +39 -0
- data/externals/oclint/lib/clang/3.7.0/include/rdseedintrin.h +59 -0
- data/externals/oclint/lib/clang/3.7.0/include/rtmintrin.h +59 -0
- data/externals/oclint/lib/clang/3.7.0/include/s390intrin.h +39 -0
- data/externals/oclint/lib/clang/3.7.0/include/sanitizer/allocator_interface.h +66 -0
- data/externals/oclint/lib/clang/3.7.0/include/sanitizer/asan_interface.h +155 -0
- data/externals/oclint/lib/clang/3.7.0/include/sanitizer/common_interface_defs.h +118 -0
- data/externals/oclint/lib/clang/3.7.0/include/sanitizer/coverage_interface.h +63 -0
- data/externals/oclint/lib/clang/3.7.0/include/sanitizer/dfsan_interface.h +114 -0
- data/externals/oclint/lib/clang/3.7.0/include/sanitizer/linux_syscall_hooks.h +3070 -0
- data/externals/oclint/lib/clang/3.7.0/include/sanitizer/lsan_interface.h +84 -0
- data/externals/oclint/lib/clang/3.7.0/include/sanitizer/msan_interface.h +107 -0
- data/externals/oclint/lib/clang/3.7.0/include/sanitizer/tsan_interface_atomic.h +222 -0
- data/externals/oclint/lib/clang/3.7.0/include/shaintrin.h +79 -0
- data/externals/oclint/lib/clang/3.7.0/include/smmintrin.h +487 -0
- data/externals/oclint/lib/clang/3.7.0/include/stdalign.h +35 -0
- data/externals/oclint/lib/clang/3.7.0/include/stdarg.h +52 -0
- data/externals/oclint/lib/clang/3.7.0/include/stdatomic.h +190 -0
- data/externals/oclint/lib/clang/3.7.0/include/stdbool.h +44 -0
- data/externals/oclint/lib/clang/3.7.0/include/stddef.h +137 -0
- data/externals/oclint/lib/clang/3.7.0/include/stdint.h +707 -0
- data/externals/oclint/lib/clang/3.7.0/include/stdnoreturn.h +30 -0
- data/externals/oclint/lib/clang/3.7.0/include/tbmintrin.h +154 -0
- data/externals/oclint/lib/clang/3.7.0/include/tgmath.h +1374 -0
- data/externals/oclint/lib/clang/3.7.0/include/tmmintrin.h +230 -0
- data/externals/oclint/lib/clang/3.7.0/include/unwind.h +282 -0
- data/externals/oclint/lib/clang/3.7.0/include/vadefs.h +65 -0
- data/externals/oclint/lib/clang/3.7.0/include/varargs.h +26 -0
- data/externals/oclint/lib/clang/3.7.0/include/vecintrin.h +8946 -0
- data/externals/oclint/lib/clang/3.7.0/include/wmmintrin.h +42 -0
- data/externals/oclint/lib/clang/3.7.0/include/x86intrin.h +81 -0
- data/externals/oclint/lib/clang/3.7.0/include/xmmintrin.h +1008 -0
- data/externals/oclint/lib/clang/3.7.0/include/xopintrin.h +809 -0
- data/externals/oclint/lib/clang/3.7.0/include/xtestintrin.h +41 -0
- data/externals/oclint/lib/clang/3.7.0/lib/darwin/libclang_rt.asan_iossim_dynamic.dylib +0 -0
- data/externals/oclint/lib/clang/3.7.0/lib/darwin/libclang_rt.asan_osx_dynamic.dylib +0 -0
- data/externals/oclint/lib/clang/3.7.0/lib/darwin/libclang_rt.builtins-i386.a +0 -0
- data/externals/oclint/lib/clang/3.7.0/lib/darwin/libclang_rt.builtins-x86_64.a +0 -0
- data/externals/oclint/lib/clang/3.7.0/lib/darwin/libclang_rt.profile_osx.a +0 -0
- data/externals/oclint/lib/clang/3.7.0/lib/darwin/libclang_rt.safestack_osx.a +0 -0
- data/externals/oclint/lib/clang/3.7.0/lib/darwin/libclang_rt.ubsan_iossim_dynamic.dylib +0 -0
- data/externals/oclint/lib/clang/3.7.0/lib/darwin/libclang_rt.ubsan_osx_dynamic.dylib +0 -0
- data/externals/oclint/lib/oclint/reporters/libHTMLReporter.dylib +0 -0
- data/externals/oclint/lib/oclint/reporters/libJSONReporter.dylib +0 -0
- data/externals/oclint/lib/oclint/reporters/libPMDReporter.dylib +0 -0
- data/externals/oclint/lib/oclint/reporters/libTextReporter.dylib +0 -0
- data/externals/oclint/lib/oclint/reporters/libXMLReporter.dylib +0 -0
- data/externals/oclint/lib/oclint/reporters/libXcodeReporter.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libAvoidBranchingStatementAsLastInLoopRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libAvoidDefaultArgumentsOnVirtualMethodsRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libAvoidPrivateStaticMembersRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libBaseClassDestructorShouldBeVirtualOrProtectedRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libBitwiseOperatorInConditionalRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libBrokenNullCheckRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libBrokenOddnessCheckRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libCollapsibleIfStatementsRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libConstantConditionalOperatorRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libConstantIfExpressionRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libCoveredSwitchStatementsDontNeedDefaultRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libCyclomaticComplexityRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libDeadCodeRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libDefaultLabelNotLastInSwitchStatementRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libDestructorOfVirtualClassRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libDoubleNegativeRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libEmptyCatchStatementRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libEmptyDoWhileStatementRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libEmptyElseBlockRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libEmptyFinallyStatementRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libEmptyForStatementRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libEmptyIfStatementRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libEmptySwitchStatementRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libEmptyTryStatementRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libEmptyWhileStatementRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libForLoopShouldBeWhileLoopRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libGotoStatementRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libInvertedLogicRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libJumbledIncrementerRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libLongClassRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libLongLineRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libLongMethodRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libLongVariableNameRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libMisplacedNullCheckRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libMissingBreakInSwitchStatementRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libMultipleUnaryOperatorRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libNPathComplexityRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libNcssMethodCountRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libNestedBlockDepthRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libNonCaseLabelInSwitchStatementRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libObjCAssignIvarOutsideAccessorsRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libObjCBoxedExpressionsRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libObjCContainerLiteralsRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libObjCNSNumberLiteralsRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libObjCObjectSubscriptingRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libObjCVerifyIsEqualHashRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libObjCVerifyMustCallSuperRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libObjCVerifyProhibitedCallRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libObjCVerifyProtectedMethodRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libObjCVerifySubclassMustImplementRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libParameterReassignmentRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libPreferEarlyExitRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libRedundantConditionalOperatorRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libRedundantIfStatementRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libRedundantLocalVariableRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libRedundantNilCheckRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libReturnFromFinallyBlockRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libShortVariableNameRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libSwitchStatementsShouldHaveDefaultRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libThrowExceptionFromFinallyBlockRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libTooFewBranchesInSwitchStatementRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libTooManyFieldsRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libTooManyMethodsRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libTooManyParametersRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libUnnecessaryElseStatementRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libUnnecessaryNullCheckForCXXDeallocRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libUnusedLocalVariableRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libUnusedMethodParameterRule.dylib +0 -0
- data/externals/oclint/lib/oclint/rules/libUselessParenthesesRule.dylib +0 -0
- data/lib/coverage_plan.rb +19 -0
- data/lib/device.rb +27 -0
- data/lib/execute.rb +7 -0
- data/lib/lint_plan.rb +41 -0
- data/lib/rules.rb +23 -0
- data/lib/test_plan.rb +11 -0
- data/lib/version.rb +3 -0
- data/lib/xcode.rb +128 -0
- data/lib/xcodebuild-helper.rb +110 -0
- data/spec/coverage_plan_spec.rb +18 -0
- data/spec/device_spec.rb +24 -0
- data/spec/lint_plan_spec.rb +35 -0
- data/spec/rule_spec.rb +37 -0
- data/spec/spec_helper.rb +17 -0
- data/spec/test_plan_spec.rb +11 -0
- data/spec/xcode_dsl_actions_spec.rb +136 -0
- data/spec/xcode_dsl_spec.rb +176 -0
- data/spec/xcode_spec.rb +79 -0
- data/xcodebuild-helper.gemspec +26 -0
- metadata +327 -0
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
/*===---- ammintrin.h - SSE4a intrinsics -----------------------------------===
|
|
2
|
+
*
|
|
3
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
4
|
+
* of this software and associated documentation files (the "Software"), to deal
|
|
5
|
+
* in the Software without restriction, including without limitation the rights
|
|
6
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
7
|
+
* copies of the Software, and to permit persons to whom the Software is
|
|
8
|
+
* furnished to do so, subject to the following conditions:
|
|
9
|
+
*
|
|
10
|
+
* The above copyright notice and this permission notice shall be included in
|
|
11
|
+
* all copies or substantial portions of the Software.
|
|
12
|
+
*
|
|
13
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
14
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
15
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
16
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
17
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
18
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
19
|
+
* THE SOFTWARE.
|
|
20
|
+
*
|
|
21
|
+
*===-----------------------------------------------------------------------===
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
#ifndef __AMMINTRIN_H
|
|
25
|
+
#define __AMMINTRIN_H
|
|
26
|
+
|
|
27
|
+
#ifndef __SSE4A__
|
|
28
|
+
#error "SSE4A instruction set not enabled"
|
|
29
|
+
#else
|
|
30
|
+
|
|
31
|
+
#include <pmmintrin.h>
|
|
32
|
+
|
|
33
|
+
/* Define the default attributes for the functions in this file. */
|
|
34
|
+
#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))
|
|
35
|
+
|
|
36
|
+
/// \brief Extracts the specified bits from the lower 64 bits of the 128-bit
|
|
37
|
+
/// integer vector operand at the index idx and of the length len.
|
|
38
|
+
///
|
|
39
|
+
/// \headerfile <x86intrin.h>
|
|
40
|
+
///
|
|
41
|
+
/// \code
|
|
42
|
+
/// __m128i _mm_extracti_si64(__m128i x, const int len, const int idx);
|
|
43
|
+
/// \endcode
|
|
44
|
+
///
|
|
45
|
+
/// \code
|
|
46
|
+
/// This intrinsic corresponds to the \c EXTRQ instruction.
|
|
47
|
+
/// \endcode
|
|
48
|
+
///
|
|
49
|
+
/// \param x
|
|
50
|
+
/// The value from which bits are extracted.
|
|
51
|
+
/// \param len
|
|
52
|
+
/// Bits [5:0] specify the length; the other bits are ignored. If bits [5:0]
|
|
53
|
+
/// are zero, the length is interpreted as 64.
|
|
54
|
+
/// \param idx
|
|
55
|
+
/// Bits [5:0] specify the index of the least significant bit; the other
|
|
56
|
+
/// bits are ignored. If the sum of the index and length is greater than
|
|
57
|
+
/// 64, the result is undefined. If the length and index are both zero,
|
|
58
|
+
/// bits [63:0] of parameter x are extracted. If the length is zero
|
|
59
|
+
/// but the index is non-zero, the result is undefined.
|
|
60
|
+
/// \returns A 128-bit integer vector whose lower 64 bits contain the bits
|
|
61
|
+
/// extracted from the source operand.
|
|
62
|
+
#define _mm_extracti_si64(x, len, idx) \
|
|
63
|
+
((__m128i)__builtin_ia32_extrqi((__v2di)(__m128i)(x), \
|
|
64
|
+
(char)(len), (char)(idx)))
|
|
65
|
+
|
|
66
|
+
/// \brief Extracts the specified bits from the lower 64 bits of the 128-bit
|
|
67
|
+
/// integer vector operand at the index and of the length specified by __y.
|
|
68
|
+
///
|
|
69
|
+
/// \headerfile <x86intrin.h>
|
|
70
|
+
///
|
|
71
|
+
/// \code
|
|
72
|
+
/// This intrinsic corresponds to the \c EXTRQ instruction.
|
|
73
|
+
/// \endcode
|
|
74
|
+
///
|
|
75
|
+
/// \param __x
|
|
76
|
+
/// The value from which bits are extracted.
|
|
77
|
+
/// \param __y
|
|
78
|
+
/// Specifies the index of the least significant bit at [13:8]
|
|
79
|
+
/// and the length at [5:0]; all other bits are ignored.
|
|
80
|
+
/// If bits [5:0] are zero, the length is interpreted as 64.
|
|
81
|
+
/// If the sum of the index and length is greater than 64, the result is
|
|
82
|
+
/// undefined. If the length and index are both zero, bits [63:0] of
|
|
83
|
+
/// parameter __x are extracted. If the length is zero but the index is
|
|
84
|
+
/// non-zero, the result is undefined.
|
|
85
|
+
/// \returns A 128-bit vector whose lower 64 bits contain the bits extracted
|
|
86
|
+
/// from the source operand.
|
|
87
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS
|
|
88
|
+
_mm_extract_si64(__m128i __x, __m128i __y)
|
|
89
|
+
{
|
|
90
|
+
return (__m128i)__builtin_ia32_extrq((__v2di)__x, (__v16qi)__y);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/// \brief Inserts bits of a specified length from the source integer vector
|
|
94
|
+
/// y into the lower 64 bits of the destination integer vector x at the
|
|
95
|
+
/// index idx and of the length len.
|
|
96
|
+
///
|
|
97
|
+
/// \headerfile <x86intrin.h>
|
|
98
|
+
///
|
|
99
|
+
/// \code
|
|
100
|
+
/// __m128i _mm_inserti_si64(__m128i x, __m128i y, const int len,
|
|
101
|
+
/// const int idx);
|
|
102
|
+
/// \endcode
|
|
103
|
+
///
|
|
104
|
+
/// \code
|
|
105
|
+
/// This intrinsic corresponds to the \c INSERTQ instruction.
|
|
106
|
+
/// \endcode
|
|
107
|
+
///
|
|
108
|
+
/// \param x
|
|
109
|
+
/// The destination operand where bits will be inserted. The inserted bits
|
|
110
|
+
/// are defined by the length len and by the index idx specifying the least
|
|
111
|
+
/// significant bit.
|
|
112
|
+
/// \param y
|
|
113
|
+
/// The source operand containing the bits to be extracted. The extracted
|
|
114
|
+
/// bits are the least significant bits of operand y of length len.
|
|
115
|
+
/// \param len
|
|
116
|
+
/// Bits [5:0] specify the length; the other bits are ignored. If bits [5:0]
|
|
117
|
+
/// are zero, the length is interpreted as 64.
|
|
118
|
+
/// \param idx
|
|
119
|
+
/// Bits [5:0] specify the index of the least significant bit; the other
|
|
120
|
+
/// bits are ignored. If the sum of the index and length is greater than
|
|
121
|
+
/// 64, the result is undefined. If the length and index are both zero,
|
|
122
|
+
/// bits [63:0] of parameter y are inserted into parameter x. If the
|
|
123
|
+
/// length is zero but the index is non-zero, the result is undefined.
|
|
124
|
+
/// \returns A 128-bit integer vector containing the original lower 64-bits
|
|
125
|
+
/// of destination operand x with the specified bitfields replaced by the
|
|
126
|
+
/// lower bits of source operand y. The upper 64 bits of the return value
|
|
127
|
+
/// are undefined.
|
|
128
|
+
|
|
129
|
+
#define _mm_inserti_si64(x, y, len, idx) \
|
|
130
|
+
((__m128i)__builtin_ia32_insertqi((__v2di)(__m128i)(x), \
|
|
131
|
+
(__v2di)(__m128i)(y), \
|
|
132
|
+
(char)(len), (char)(idx)))
|
|
133
|
+
|
|
134
|
+
/// \brief Inserts bits of a specified length from the source integer vector
|
|
135
|
+
/// __y into the lower 64 bits of the destination integer vector __x at
|
|
136
|
+
/// the index and of the length specified by __y.
|
|
137
|
+
///
|
|
138
|
+
/// \headerfile <x86intrin.h>
|
|
139
|
+
///
|
|
140
|
+
/// \code
|
|
141
|
+
/// This intrinsic corresponds to the \c INSERTQ instruction.
|
|
142
|
+
/// \endcode
|
|
143
|
+
///
|
|
144
|
+
/// \param __x
|
|
145
|
+
/// The destination operand where bits will be inserted. The inserted bits
|
|
146
|
+
/// are defined by the length and by the index of the least significant bit
|
|
147
|
+
/// specified by operand __y.
|
|
148
|
+
/// \param __y
|
|
149
|
+
/// The source operand containing the bits to be extracted. The extracted
|
|
150
|
+
/// bits are the least significant bits of operand __y with length specified
|
|
151
|
+
/// by bits [69:64]. These are inserted into the destination at the index
|
|
152
|
+
/// specified by bits [77:72]; all other bits are ignored.
|
|
153
|
+
/// If bits [69:64] are zero, the length is interpreted as 64.
|
|
154
|
+
/// If the sum of the index and length is greater than 64, the result is
|
|
155
|
+
/// undefined. If the length and index are both zero, bits [63:0] of
|
|
156
|
+
/// parameter __y are inserted into parameter __x. If the length
|
|
157
|
+
/// is zero but the index is non-zero, the result is undefined.
|
|
158
|
+
/// \returns A 128-bit integer vector containing the original lower 64-bits
|
|
159
|
+
/// of destination operand __x with the specified bitfields replaced by the
|
|
160
|
+
/// lower bits of source operand __y. The upper 64 bits of the return value
|
|
161
|
+
/// are undefined.
|
|
162
|
+
|
|
163
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS
|
|
164
|
+
_mm_insert_si64(__m128i __x, __m128i __y)
|
|
165
|
+
{
|
|
166
|
+
return (__m128i)__builtin_ia32_insertq((__v2di)__x, (__v2di)__y);
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
/// \brief Stores a 64-bit double-precision value in a 64-bit memory location.
|
|
170
|
+
/// To minimize caching, the data is flagged as non-temporal (unlikely to be
|
|
171
|
+
/// used again soon).
|
|
172
|
+
///
|
|
173
|
+
/// \headerfile <x86intrin.h>
|
|
174
|
+
///
|
|
175
|
+
/// \code
|
|
176
|
+
/// This intrinsic corresponds to the \c MOVNTSD instruction.
|
|
177
|
+
/// \endcode
|
|
178
|
+
///
|
|
179
|
+
/// \param __p
|
|
180
|
+
/// The 64-bit memory location used to store the register value.
|
|
181
|
+
/// \param __a
|
|
182
|
+
/// The 64-bit double-precision floating-point register value to
|
|
183
|
+
/// be stored.
|
|
184
|
+
static __inline__ void __DEFAULT_FN_ATTRS
|
|
185
|
+
_mm_stream_sd(double *__p, __m128d __a)
|
|
186
|
+
{
|
|
187
|
+
__builtin_ia32_movntsd(__p, (__v2df)__a);
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
/// \brief Stores a 32-bit single-precision floating-point value in a 32-bit
|
|
191
|
+
/// memory location. To minimize caching, the data is flagged as
|
|
192
|
+
/// non-temporal (unlikely to be used again soon).
|
|
193
|
+
///
|
|
194
|
+
/// \headerfile <x86intrin.h>
|
|
195
|
+
///
|
|
196
|
+
/// \code
|
|
197
|
+
/// This intrinsic corresponds to the \c MOVNTSS instruction.
|
|
198
|
+
/// \endcode
|
|
199
|
+
///
|
|
200
|
+
/// \param __p
|
|
201
|
+
/// The 32-bit memory location used to store the register value.
|
|
202
|
+
/// \param __a
|
|
203
|
+
/// The 32-bit single-precision floating-point register value to
|
|
204
|
+
/// be stored.
|
|
205
|
+
static __inline__ void __DEFAULT_FN_ATTRS
|
|
206
|
+
_mm_stream_ss(float *__p, __m128 __a)
|
|
207
|
+
{
|
|
208
|
+
__builtin_ia32_movntss(__p, (__v4sf)__a);
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
#undef __DEFAULT_FN_ATTRS
|
|
212
|
+
|
|
213
|
+
#endif /* __SSE4A__ */
|
|
214
|
+
|
|
215
|
+
#endif /* __AMMINTRIN_H */
|
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
/*===---- arm_acle.h - ARM Non-Neon intrinsics -----------------------------===
|
|
2
|
+
*
|
|
3
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
4
|
+
* of this software and associated documentation files (the "Software"), to deal
|
|
5
|
+
* in the Software without restriction, including without limitation the rights
|
|
6
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
7
|
+
* copies of the Software, and to permit persons to whom the Software is
|
|
8
|
+
* furnished to do so, subject to the following conditions:
|
|
9
|
+
*
|
|
10
|
+
* The above copyright notice and this permission notice shall be included in
|
|
11
|
+
* all copies or substantial portions of the Software.
|
|
12
|
+
*
|
|
13
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
14
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
15
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
16
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
17
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
18
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
19
|
+
* THE SOFTWARE.
|
|
20
|
+
*
|
|
21
|
+
*===-----------------------------------------------------------------------===
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
#ifndef __ARM_ACLE_H
|
|
25
|
+
#define __ARM_ACLE_H
|
|
26
|
+
|
|
27
|
+
#ifndef __ARM_ACLE
|
|
28
|
+
#error "ACLE intrinsics support not enabled."
|
|
29
|
+
#endif
|
|
30
|
+
|
|
31
|
+
#include <stdint.h>
|
|
32
|
+
|
|
33
|
+
#if defined(__cplusplus)
|
|
34
|
+
extern "C" {
|
|
35
|
+
#endif
|
|
36
|
+
|
|
37
|
+
/* 8 SYNCHRONIZATION, BARRIER AND HINT INTRINSICS */
|
|
38
|
+
/* 8.3 Memory barriers */
|
|
39
|
+
#if !defined(_MSC_VER)
|
|
40
|
+
#define __dmb(i) __builtin_arm_dmb(i)
|
|
41
|
+
#define __dsb(i) __builtin_arm_dsb(i)
|
|
42
|
+
#define __isb(i) __builtin_arm_isb(i)
|
|
43
|
+
#endif
|
|
44
|
+
|
|
45
|
+
/* 8.4 Hints */
|
|
46
|
+
|
|
47
|
+
#if !defined(_MSC_VER)
|
|
48
|
+
static __inline__ void __attribute__((__always_inline__, __nodebug__)) __wfi(void) {
|
|
49
|
+
__builtin_arm_wfi();
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
static __inline__ void __attribute__((__always_inline__, __nodebug__)) __wfe(void) {
|
|
53
|
+
__builtin_arm_wfe();
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
static __inline__ void __attribute__((__always_inline__, __nodebug__)) __sev(void) {
|
|
57
|
+
__builtin_arm_sev();
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
static __inline__ void __attribute__((__always_inline__, __nodebug__)) __sevl(void) {
|
|
61
|
+
__builtin_arm_sevl();
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
static __inline__ void __attribute__((__always_inline__, __nodebug__)) __yield(void) {
|
|
65
|
+
__builtin_arm_yield();
|
|
66
|
+
}
|
|
67
|
+
#endif
|
|
68
|
+
|
|
69
|
+
#if __ARM_32BIT_STATE
|
|
70
|
+
#define __dbg(t) __builtin_arm_dbg(t)
|
|
71
|
+
#endif
|
|
72
|
+
|
|
73
|
+
/* 8.5 Swap */
|
|
74
|
+
static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
|
|
75
|
+
__swp(uint32_t x, volatile uint32_t *p) {
|
|
76
|
+
uint32_t v;
|
|
77
|
+
do v = __builtin_arm_ldrex(p); while (__builtin_arm_strex(x, p));
|
|
78
|
+
return v;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/* 8.6 Memory prefetch intrinsics */
|
|
82
|
+
/* 8.6.1 Data prefetch */
|
|
83
|
+
#define __pld(addr) __pldx(0, 0, 0, addr)
|
|
84
|
+
|
|
85
|
+
#if __ARM_32BIT_STATE
|
|
86
|
+
#define __pldx(access_kind, cache_level, retention_policy, addr) \
|
|
87
|
+
__builtin_arm_prefetch(addr, access_kind, 1)
|
|
88
|
+
#else
|
|
89
|
+
#define __pldx(access_kind, cache_level, retention_policy, addr) \
|
|
90
|
+
__builtin_arm_prefetch(addr, access_kind, cache_level, retention_policy, 1)
|
|
91
|
+
#endif
|
|
92
|
+
|
|
93
|
+
/* 8.6.2 Instruction prefetch */
|
|
94
|
+
#define __pli(addr) __plix(0, 0, addr)
|
|
95
|
+
|
|
96
|
+
#if __ARM_32BIT_STATE
|
|
97
|
+
#define __plix(cache_level, retention_policy, addr) \
|
|
98
|
+
__builtin_arm_prefetch(addr, 0, 0)
|
|
99
|
+
#else
|
|
100
|
+
#define __plix(cache_level, retention_policy, addr) \
|
|
101
|
+
__builtin_arm_prefetch(addr, 0, cache_level, retention_policy, 0)
|
|
102
|
+
#endif
|
|
103
|
+
|
|
104
|
+
/* 8.7 NOP */
|
|
105
|
+
static __inline__ void __attribute__((__always_inline__, __nodebug__)) __nop(void) {
|
|
106
|
+
__builtin_arm_nop();
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/* 9 DATA-PROCESSING INTRINSICS */
|
|
110
|
+
/* 9.2 Miscellaneous data-processing intrinsics */
|
|
111
|
+
/* ROR */
|
|
112
|
+
static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
|
|
113
|
+
__ror(uint32_t x, uint32_t y) {
|
|
114
|
+
y %= 32;
|
|
115
|
+
if (y == 0) return x;
|
|
116
|
+
return (x >> y) | (x << (32 - y));
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
static __inline__ uint64_t __attribute__((__always_inline__, __nodebug__))
|
|
120
|
+
__rorll(uint64_t x, uint32_t y) {
|
|
121
|
+
y %= 64;
|
|
122
|
+
if (y == 0) return x;
|
|
123
|
+
return (x >> y) | (x << (64 - y));
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
static __inline__ unsigned long __attribute__((__always_inline__, __nodebug__))
|
|
127
|
+
__rorl(unsigned long x, uint32_t y) {
|
|
128
|
+
#if __SIZEOF_LONG__ == 4
|
|
129
|
+
return __ror(x, y);
|
|
130
|
+
#else
|
|
131
|
+
return __rorll(x, y);
|
|
132
|
+
#endif
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
/* CLZ */
|
|
137
|
+
static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
|
|
138
|
+
__clz(uint32_t t) {
|
|
139
|
+
return __builtin_clz(t);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
static __inline__ unsigned long __attribute__((__always_inline__, __nodebug__))
|
|
143
|
+
__clzl(unsigned long t) {
|
|
144
|
+
return __builtin_clzl(t);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
static __inline__ uint64_t __attribute__((__always_inline__, __nodebug__))
|
|
148
|
+
__clzll(uint64_t t) {
|
|
149
|
+
return __builtin_clzll(t);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
/* REV */
|
|
153
|
+
static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
|
|
154
|
+
__rev(uint32_t t) {
|
|
155
|
+
return __builtin_bswap32(t);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
static __inline__ unsigned long __attribute__((__always_inline__, __nodebug__))
|
|
159
|
+
__revl(unsigned long t) {
|
|
160
|
+
#if __SIZEOF_LONG__ == 4
|
|
161
|
+
return __builtin_bswap32(t);
|
|
162
|
+
#else
|
|
163
|
+
return __builtin_bswap64(t);
|
|
164
|
+
#endif
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
static __inline__ uint64_t __attribute__((__always_inline__, __nodebug__))
|
|
168
|
+
__revll(uint64_t t) {
|
|
169
|
+
return __builtin_bswap64(t);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/* REV16 */
|
|
173
|
+
static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
|
|
174
|
+
__rev16(uint32_t t) {
|
|
175
|
+
return __ror(__rev(t), 16);
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
static __inline__ unsigned long __attribute__((__always_inline__, __nodebug__))
|
|
179
|
+
__rev16l(unsigned long t) {
|
|
180
|
+
return __rorl(__revl(t), sizeof(long) / 2);
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
static __inline__ uint64_t __attribute__((__always_inline__, __nodebug__))
|
|
184
|
+
__rev16ll(uint64_t t) {
|
|
185
|
+
return __rorll(__revll(t), 32);
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
/* REVSH */
|
|
189
|
+
static __inline__ int16_t __attribute__((__always_inline__, __nodebug__))
|
|
190
|
+
__revsh(int16_t t) {
|
|
191
|
+
return __builtin_bswap16(t);
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
/* RBIT */
|
|
195
|
+
static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
|
|
196
|
+
__rbit(uint32_t t) {
|
|
197
|
+
return __builtin_arm_rbit(t);
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
static __inline__ uint64_t __attribute__((__always_inline__, __nodebug__))
|
|
201
|
+
__rbitll(uint64_t t) {
|
|
202
|
+
#if __ARM_32BIT_STATE
|
|
203
|
+
return (((uint64_t) __builtin_arm_rbit(t)) << 32) |
|
|
204
|
+
__builtin_arm_rbit(t >> 32);
|
|
205
|
+
#else
|
|
206
|
+
return __builtin_arm_rbit64(t);
|
|
207
|
+
#endif
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
static __inline__ unsigned long __attribute__((__always_inline__, __nodebug__))
|
|
211
|
+
__rbitl(unsigned long t) {
|
|
212
|
+
#if __SIZEOF_LONG__ == 4
|
|
213
|
+
return __rbit(t);
|
|
214
|
+
#else
|
|
215
|
+
return __rbitll(t);
|
|
216
|
+
#endif
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
/*
|
|
220
|
+
* 9.4 Saturating intrinsics
|
|
221
|
+
*
|
|
222
|
+
* FIXME: Change guard to their corrosponding __ARM_FEATURE flag when Q flag
|
|
223
|
+
* intrinsics are implemented and the flag is enabled.
|
|
224
|
+
*/
|
|
225
|
+
/* 9.4.1 Width-specified saturation intrinsics */
|
|
226
|
+
#if __ARM_32BIT_STATE
|
|
227
|
+
#define __ssat(x, y) __builtin_arm_ssat(x, y)
|
|
228
|
+
#define __usat(x, y) __builtin_arm_usat(x, y)
|
|
229
|
+
#endif
|
|
230
|
+
|
|
231
|
+
/* 9.4.2 Saturating addition and subtraction intrinsics */
|
|
232
|
+
#if __ARM_32BIT_STATE
|
|
233
|
+
static __inline__ int32_t __attribute__((__always_inline__, __nodebug__))
|
|
234
|
+
__qadd(int32_t t, int32_t v) {
|
|
235
|
+
return __builtin_arm_qadd(t, v);
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
static __inline__ int32_t __attribute__((__always_inline__, __nodebug__))
|
|
239
|
+
__qsub(int32_t t, int32_t v) {
|
|
240
|
+
return __builtin_arm_qsub(t, v);
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
static __inline__ int32_t __attribute__((__always_inline__, __nodebug__))
|
|
244
|
+
__qdbl(int32_t t) {
|
|
245
|
+
return __builtin_arm_qadd(t, t);
|
|
246
|
+
}
|
|
247
|
+
#endif
|
|
248
|
+
|
|
249
|
+
/* 9.7 CRC32 intrinsics */
|
|
250
|
+
#if __ARM_FEATURE_CRC32
|
|
251
|
+
static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
|
|
252
|
+
__crc32b(uint32_t a, uint8_t b) {
|
|
253
|
+
return __builtin_arm_crc32b(a, b);
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
|
|
257
|
+
__crc32h(uint32_t a, uint16_t b) {
|
|
258
|
+
return __builtin_arm_crc32h(a, b);
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
|
|
262
|
+
__crc32w(uint32_t a, uint32_t b) {
|
|
263
|
+
return __builtin_arm_crc32w(a, b);
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
|
|
267
|
+
__crc32d(uint32_t a, uint64_t b) {
|
|
268
|
+
return __builtin_arm_crc32d(a, b);
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
|
|
272
|
+
__crc32cb(uint32_t a, uint8_t b) {
|
|
273
|
+
return __builtin_arm_crc32cb(a, b);
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
|
|
277
|
+
__crc32ch(uint32_t a, uint16_t b) {
|
|
278
|
+
return __builtin_arm_crc32ch(a, b);
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
|
|
282
|
+
__crc32cw(uint32_t a, uint32_t b) {
|
|
283
|
+
return __builtin_arm_crc32cw(a, b);
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
|
|
287
|
+
__crc32cd(uint32_t a, uint64_t b) {
|
|
288
|
+
return __builtin_arm_crc32cd(a, b);
|
|
289
|
+
}
|
|
290
|
+
#endif
|
|
291
|
+
|
|
292
|
+
/* 10.1 Special register intrinsics */
|
|
293
|
+
#define __arm_rsr(sysreg) __builtin_arm_rsr(sysreg)
|
|
294
|
+
#define __arm_rsr64(sysreg) __builtin_arm_rsr64(sysreg)
|
|
295
|
+
#define __arm_rsrp(sysreg) __builtin_arm_rsrp(sysreg)
|
|
296
|
+
#define __arm_wsr(sysreg, v) __builtin_arm_wsr(sysreg, v)
|
|
297
|
+
#define __arm_wsr64(sysreg, v) __builtin_arm_wsr64(sysreg, v)
|
|
298
|
+
#define __arm_wsrp(sysreg, v) __builtin_arm_wsrp(sysreg, v)
|
|
299
|
+
|
|
300
|
+
#if defined(__cplusplus)
|
|
301
|
+
}
|
|
302
|
+
#endif
|
|
303
|
+
|
|
304
|
+
#endif /* __ARM_ACLE_H */
|