xcodebuild-helper 1.1.1 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- metadata +4 -220
- data/.codeclimate.yml +0 -20
- data/.gitignore +0 -1
- data/.rspec +0 -2
- data/.travis.yml +0 -7
- data/Gemfile +0 -6
- data/Gemfile.lock +0 -114
- data/Guardfile +0 -18
- data/README.md +0 -7
- data/Rakefile +0 -7
- data/assets/style.css +0 -110
- data/bin/oclint +0 -5
- data/bin/oclint-0.8 +0 -5
- data/bin/oclint-json-compilation-database +0 -5
- data/bin/oclint-xcodebuild +0 -5
- data/externals/oclint/LICENSE +0 -69
- 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 +0 -88
- data/externals/oclint/bin/oclint-xcodebuild +0 -218
- data/externals/oclint/lib/clang/3.7.0/asan_blacklist.txt +0 -13
- data/externals/oclint/lib/clang/3.7.0/include/Intrin.h +0 -958
- data/externals/oclint/lib/clang/3.7.0/include/__stddef_max_align_t.h +0 -43
- data/externals/oclint/lib/clang/3.7.0/include/__wmmintrin_aes.h +0 -72
- data/externals/oclint/lib/clang/3.7.0/include/__wmmintrin_pclmul.h +0 -34
- data/externals/oclint/lib/clang/3.7.0/include/adxintrin.h +0 -88
- data/externals/oclint/lib/clang/3.7.0/include/altivec.h +0 -13528
- data/externals/oclint/lib/clang/3.7.0/include/ammintrin.h +0 -215
- data/externals/oclint/lib/clang/3.7.0/include/arm_acle.h +0 -304
- data/externals/oclint/lib/clang/3.7.0/include/arm_neon.h +0 -68419
- data/externals/oclint/lib/clang/3.7.0/include/avx2intrin.h +0 -1256
- data/externals/oclint/lib/clang/3.7.0/include/avx512bwintrin.h +0 -1250
- data/externals/oclint/lib/clang/3.7.0/include/avx512cdintrin.h +0 -131
- data/externals/oclint/lib/clang/3.7.0/include/avx512dqintrin.h +0 -242
- data/externals/oclint/lib/clang/3.7.0/include/avx512erintrin.h +0 -285
- data/externals/oclint/lib/clang/3.7.0/include/avx512fintrin.h +0 -2457
- data/externals/oclint/lib/clang/3.7.0/include/avx512vlbwintrin.h +0 -1907
- data/externals/oclint/lib/clang/3.7.0/include/avx512vldqintrin.h +0 -353
- data/externals/oclint/lib/clang/3.7.0/include/avx512vlintrin.h +0 -1982
- data/externals/oclint/lib/clang/3.7.0/include/avxintrin.h +0 -1308
- data/externals/oclint/lib/clang/3.7.0/include/bmi2intrin.h +0 -99
- data/externals/oclint/lib/clang/3.7.0/include/bmiintrin.h +0 -153
- data/externals/oclint/lib/clang/3.7.0/include/cpuid.h +0 -209
- data/externals/oclint/lib/clang/3.7.0/include/cuda_builtin_vars.h +0 -110
- data/externals/oclint/lib/clang/3.7.0/include/emmintrin.h +0 -1480
- data/externals/oclint/lib/clang/3.7.0/include/f16cintrin.h +0 -63
- data/externals/oclint/lib/clang/3.7.0/include/float.h +0 -124
- data/externals/oclint/lib/clang/3.7.0/include/fma4intrin.h +0 -236
- data/externals/oclint/lib/clang/3.7.0/include/fmaintrin.h +0 -234
- data/externals/oclint/lib/clang/3.7.0/include/fxsrintrin.h +0 -55
- data/externals/oclint/lib/clang/3.7.0/include/htmintrin.h +0 -226
- data/externals/oclint/lib/clang/3.7.0/include/htmxlintrin.h +0 -363
- data/externals/oclint/lib/clang/3.7.0/include/ia32intrin.h +0 -101
- data/externals/oclint/lib/clang/3.7.0/include/immintrin.h +0 -203
- data/externals/oclint/lib/clang/3.7.0/include/inttypes.h +0 -102
- data/externals/oclint/lib/clang/3.7.0/include/iso646.h +0 -43
- data/externals/oclint/lib/clang/3.7.0/include/limits.h +0 -118
- data/externals/oclint/lib/clang/3.7.0/include/lzcntintrin.h +0 -72
- data/externals/oclint/lib/clang/3.7.0/include/mm3dnow.h +0 -167
- data/externals/oclint/lib/clang/3.7.0/include/mm_malloc.h +0 -75
- data/externals/oclint/lib/clang/3.7.0/include/mmintrin.h +0 -507
- data/externals/oclint/lib/clang/3.7.0/include/module.modulemap +0 -196
- data/externals/oclint/lib/clang/3.7.0/include/nmmintrin.h +0 -35
- data/externals/oclint/lib/clang/3.7.0/include/pmmintrin.h +0 -122
- data/externals/oclint/lib/clang/3.7.0/include/popcntintrin.h +0 -50
- data/externals/oclint/lib/clang/3.7.0/include/prfchwintrin.h +0 -39
- data/externals/oclint/lib/clang/3.7.0/include/rdseedintrin.h +0 -59
- data/externals/oclint/lib/clang/3.7.0/include/rtmintrin.h +0 -59
- data/externals/oclint/lib/clang/3.7.0/include/s390intrin.h +0 -39
- data/externals/oclint/lib/clang/3.7.0/include/sanitizer/allocator_interface.h +0 -66
- data/externals/oclint/lib/clang/3.7.0/include/sanitizer/asan_interface.h +0 -155
- data/externals/oclint/lib/clang/3.7.0/include/sanitizer/common_interface_defs.h +0 -118
- data/externals/oclint/lib/clang/3.7.0/include/sanitizer/coverage_interface.h +0 -63
- data/externals/oclint/lib/clang/3.7.0/include/sanitizer/dfsan_interface.h +0 -114
- data/externals/oclint/lib/clang/3.7.0/include/sanitizer/linux_syscall_hooks.h +0 -3070
- data/externals/oclint/lib/clang/3.7.0/include/sanitizer/lsan_interface.h +0 -84
- data/externals/oclint/lib/clang/3.7.0/include/sanitizer/msan_interface.h +0 -107
- data/externals/oclint/lib/clang/3.7.0/include/sanitizer/tsan_interface_atomic.h +0 -222
- data/externals/oclint/lib/clang/3.7.0/include/shaintrin.h +0 -79
- data/externals/oclint/lib/clang/3.7.0/include/smmintrin.h +0 -487
- data/externals/oclint/lib/clang/3.7.0/include/stdalign.h +0 -35
- data/externals/oclint/lib/clang/3.7.0/include/stdarg.h +0 -52
- data/externals/oclint/lib/clang/3.7.0/include/stdatomic.h +0 -190
- data/externals/oclint/lib/clang/3.7.0/include/stdbool.h +0 -44
- data/externals/oclint/lib/clang/3.7.0/include/stddef.h +0 -137
- data/externals/oclint/lib/clang/3.7.0/include/stdint.h +0 -707
- data/externals/oclint/lib/clang/3.7.0/include/stdnoreturn.h +0 -30
- data/externals/oclint/lib/clang/3.7.0/include/tbmintrin.h +0 -154
- data/externals/oclint/lib/clang/3.7.0/include/tgmath.h +0 -1374
- data/externals/oclint/lib/clang/3.7.0/include/tmmintrin.h +0 -230
- data/externals/oclint/lib/clang/3.7.0/include/unwind.h +0 -282
- data/externals/oclint/lib/clang/3.7.0/include/vadefs.h +0 -65
- data/externals/oclint/lib/clang/3.7.0/include/varargs.h +0 -26
- data/externals/oclint/lib/clang/3.7.0/include/vecintrin.h +0 -8946
- data/externals/oclint/lib/clang/3.7.0/include/wmmintrin.h +0 -42
- data/externals/oclint/lib/clang/3.7.0/include/x86intrin.h +0 -81
- data/externals/oclint/lib/clang/3.7.0/include/xmmintrin.h +0 -1008
- data/externals/oclint/lib/clang/3.7.0/include/xopintrin.h +0 -809
- data/externals/oclint/lib/clang/3.7.0/include/xtestintrin.h +0 -41
- 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_html_converter.rb +0 -141
- data/lib/coverage_plan.rb +0 -27
- data/lib/device.rb +0 -27
- data/lib/execute.rb +0 -7
- data/lib/lint_plan.rb +0 -41
- data/lib/rules.rb +0 -23
- data/lib/test_plan.rb +0 -11
- data/lib/version.rb +0 -3
- data/lib/xcode.rb +0 -128
- data/lib/xcodebuild-helper.rb +0 -135
- data/spec/coverage_html_coverter_spec.rb +0 -55
- data/spec/coverage_plan_spec.rb +0 -23
- data/spec/device_spec.rb +0 -24
- data/spec/lint_plan_spec.rb +0 -35
- data/spec/rule_spec.rb +0 -37
- data/spec/spec_helper.rb +0 -17
- data/spec/test_plan_spec.rb +0 -11
- data/spec/xcode_dsl_actions_spec.rb +0 -227
- data/spec/xcode_dsl_spec.rb +0 -176
- data/spec/xcode_spec.rb +0 -85
- data/xcodebuild-helper.gemspec +0 -27
@@ -1,99 +0,0 @@
|
|
1
|
-
/*===---- bmi2intrin.h - BMI2 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
|
-
#if !defined __X86INTRIN_H && !defined __IMMINTRIN_H
|
25
|
-
#error "Never use <bmi2intrin.h> directly; include <x86intrin.h> instead."
|
26
|
-
#endif
|
27
|
-
|
28
|
-
#ifndef __BMI2__
|
29
|
-
# error "BMI2 instruction set not enabled"
|
30
|
-
#endif /* __BMI2__ */
|
31
|
-
|
32
|
-
#ifndef __BMI2INTRIN_H
|
33
|
-
#define __BMI2INTRIN_H
|
34
|
-
|
35
|
-
/* Define the default attributes for the functions in this file. */
|
36
|
-
#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))
|
37
|
-
|
38
|
-
static __inline__ unsigned int __DEFAULT_FN_ATTRS
|
39
|
-
_bzhi_u32(unsigned int __X, unsigned int __Y)
|
40
|
-
{
|
41
|
-
return __builtin_ia32_bzhi_si(__X, __Y);
|
42
|
-
}
|
43
|
-
|
44
|
-
static __inline__ unsigned int __DEFAULT_FN_ATTRS
|
45
|
-
_pdep_u32(unsigned int __X, unsigned int __Y)
|
46
|
-
{
|
47
|
-
return __builtin_ia32_pdep_si(__X, __Y);
|
48
|
-
}
|
49
|
-
|
50
|
-
static __inline__ unsigned int __DEFAULT_FN_ATTRS
|
51
|
-
_pext_u32(unsigned int __X, unsigned int __Y)
|
52
|
-
{
|
53
|
-
return __builtin_ia32_pext_si(__X, __Y);
|
54
|
-
}
|
55
|
-
|
56
|
-
#ifdef __x86_64__
|
57
|
-
|
58
|
-
static __inline__ unsigned long long __DEFAULT_FN_ATTRS
|
59
|
-
_bzhi_u64(unsigned long long __X, unsigned long long __Y)
|
60
|
-
{
|
61
|
-
return __builtin_ia32_bzhi_di(__X, __Y);
|
62
|
-
}
|
63
|
-
|
64
|
-
static __inline__ unsigned long long __DEFAULT_FN_ATTRS
|
65
|
-
_pdep_u64(unsigned long long __X, unsigned long long __Y)
|
66
|
-
{
|
67
|
-
return __builtin_ia32_pdep_di(__X, __Y);
|
68
|
-
}
|
69
|
-
|
70
|
-
static __inline__ unsigned long long __DEFAULT_FN_ATTRS
|
71
|
-
_pext_u64(unsigned long long __X, unsigned long long __Y)
|
72
|
-
{
|
73
|
-
return __builtin_ia32_pext_di(__X, __Y);
|
74
|
-
}
|
75
|
-
|
76
|
-
static __inline__ unsigned long long __DEFAULT_FN_ATTRS
|
77
|
-
_mulx_u64 (unsigned long long __X, unsigned long long __Y,
|
78
|
-
unsigned long long *__P)
|
79
|
-
{
|
80
|
-
unsigned __int128 __res = (unsigned __int128) __X * __Y;
|
81
|
-
*__P = (unsigned long long) (__res >> 64);
|
82
|
-
return (unsigned long long) __res;
|
83
|
-
}
|
84
|
-
|
85
|
-
#else /* !__x86_64__ */
|
86
|
-
|
87
|
-
static __inline__ unsigned int __DEFAULT_FN_ATTRS
|
88
|
-
_mulx_u32 (unsigned int __X, unsigned int __Y, unsigned int *__P)
|
89
|
-
{
|
90
|
-
unsigned long long __res = (unsigned long long) __X * __Y;
|
91
|
-
*__P = (unsigned int) (__res >> 32);
|
92
|
-
return (unsigned int) __res;
|
93
|
-
}
|
94
|
-
|
95
|
-
#endif /* !__x86_64__ */
|
96
|
-
|
97
|
-
#undef __DEFAULT_FN_ATTRS
|
98
|
-
|
99
|
-
#endif /* __BMI2INTRIN_H */
|
@@ -1,153 +0,0 @@
|
|
1
|
-
/*===---- bmiintrin.h - BMI 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
|
-
#if !defined __X86INTRIN_H && !defined __IMMINTRIN_H
|
25
|
-
#error "Never use <bmiintrin.h> directly; include <x86intrin.h> instead."
|
26
|
-
#endif
|
27
|
-
|
28
|
-
#ifndef __BMI__
|
29
|
-
# error "BMI instruction set not enabled"
|
30
|
-
#endif /* __BMI__ */
|
31
|
-
|
32
|
-
#ifndef __BMIINTRIN_H
|
33
|
-
#define __BMIINTRIN_H
|
34
|
-
|
35
|
-
#define _tzcnt_u16(a) (__tzcnt_u16((a)))
|
36
|
-
#define _andn_u32(a, b) (__andn_u32((a), (b)))
|
37
|
-
/* _bextr_u32 != __bextr_u32 */
|
38
|
-
#define _blsi_u32(a) (__blsi_u32((a)))
|
39
|
-
#define _blsmsk_u32(a) (__blsmsk_u32((a)))
|
40
|
-
#define _blsr_u32(a) (__blsr_u32((a)))
|
41
|
-
#define _tzcnt_u32(a) (__tzcnt_u32((a)))
|
42
|
-
|
43
|
-
/* Define the default attributes for the functions in this file. */
|
44
|
-
#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))
|
45
|
-
|
46
|
-
static __inline__ unsigned short __DEFAULT_FN_ATTRS
|
47
|
-
__tzcnt_u16(unsigned short __X)
|
48
|
-
{
|
49
|
-
return __X ? __builtin_ctzs(__X) : 16;
|
50
|
-
}
|
51
|
-
|
52
|
-
static __inline__ unsigned int __DEFAULT_FN_ATTRS
|
53
|
-
__andn_u32(unsigned int __X, unsigned int __Y)
|
54
|
-
{
|
55
|
-
return ~__X & __Y;
|
56
|
-
}
|
57
|
-
|
58
|
-
/* AMD-specified, double-leading-underscore version of BEXTR */
|
59
|
-
static __inline__ unsigned int __DEFAULT_FN_ATTRS
|
60
|
-
__bextr_u32(unsigned int __X, unsigned int __Y)
|
61
|
-
{
|
62
|
-
return __builtin_ia32_bextr_u32(__X, __Y);
|
63
|
-
}
|
64
|
-
|
65
|
-
/* Intel-specified, single-leading-underscore version of BEXTR */
|
66
|
-
static __inline__ unsigned int __DEFAULT_FN_ATTRS
|
67
|
-
_bextr_u32(unsigned int __X, unsigned int __Y, unsigned int __Z)
|
68
|
-
{
|
69
|
-
return __builtin_ia32_bextr_u32 (__X, ((__Y & 0xff) | ((__Z & 0xff) << 8)));
|
70
|
-
}
|
71
|
-
|
72
|
-
static __inline__ unsigned int __DEFAULT_FN_ATTRS
|
73
|
-
__blsi_u32(unsigned int __X)
|
74
|
-
{
|
75
|
-
return __X & -__X;
|
76
|
-
}
|
77
|
-
|
78
|
-
static __inline__ unsigned int __DEFAULT_FN_ATTRS
|
79
|
-
__blsmsk_u32(unsigned int __X)
|
80
|
-
{
|
81
|
-
return __X ^ (__X - 1);
|
82
|
-
}
|
83
|
-
|
84
|
-
static __inline__ unsigned int __DEFAULT_FN_ATTRS
|
85
|
-
__blsr_u32(unsigned int __X)
|
86
|
-
{
|
87
|
-
return __X & (__X - 1);
|
88
|
-
}
|
89
|
-
|
90
|
-
static __inline__ unsigned int __DEFAULT_FN_ATTRS
|
91
|
-
__tzcnt_u32(unsigned int __X)
|
92
|
-
{
|
93
|
-
return __X ? __builtin_ctz(__X) : 32;
|
94
|
-
}
|
95
|
-
|
96
|
-
#ifdef __x86_64__
|
97
|
-
|
98
|
-
#define _andn_u64(a, b) (__andn_u64((a), (b)))
|
99
|
-
/* _bextr_u64 != __bextr_u64 */
|
100
|
-
#define _blsi_u64(a) (__blsi_u64((a)))
|
101
|
-
#define _blsmsk_u64(a) (__blsmsk_u64((a)))
|
102
|
-
#define _blsr_u64(a) (__blsr_u64((a)))
|
103
|
-
#define _tzcnt_u64(a) (__tzcnt_u64((a)))
|
104
|
-
|
105
|
-
static __inline__ unsigned long long __DEFAULT_FN_ATTRS
|
106
|
-
__andn_u64 (unsigned long long __X, unsigned long long __Y)
|
107
|
-
{
|
108
|
-
return ~__X & __Y;
|
109
|
-
}
|
110
|
-
|
111
|
-
/* AMD-specified, double-leading-underscore version of BEXTR */
|
112
|
-
static __inline__ unsigned long long __DEFAULT_FN_ATTRS
|
113
|
-
__bextr_u64(unsigned long long __X, unsigned long long __Y)
|
114
|
-
{
|
115
|
-
return __builtin_ia32_bextr_u64(__X, __Y);
|
116
|
-
}
|
117
|
-
|
118
|
-
/* Intel-specified, single-leading-underscore version of BEXTR */
|
119
|
-
static __inline__ unsigned long long __DEFAULT_FN_ATTRS
|
120
|
-
_bextr_u64(unsigned long long __X, unsigned int __Y, unsigned int __Z)
|
121
|
-
{
|
122
|
-
return __builtin_ia32_bextr_u64 (__X, ((__Y & 0xff) | ((__Z & 0xff) << 8)));
|
123
|
-
}
|
124
|
-
|
125
|
-
static __inline__ unsigned long long __DEFAULT_FN_ATTRS
|
126
|
-
__blsi_u64(unsigned long long __X)
|
127
|
-
{
|
128
|
-
return __X & -__X;
|
129
|
-
}
|
130
|
-
|
131
|
-
static __inline__ unsigned long long __DEFAULT_FN_ATTRS
|
132
|
-
__blsmsk_u64(unsigned long long __X)
|
133
|
-
{
|
134
|
-
return __X ^ (__X - 1);
|
135
|
-
}
|
136
|
-
|
137
|
-
static __inline__ unsigned long long __DEFAULT_FN_ATTRS
|
138
|
-
__blsr_u64(unsigned long long __X)
|
139
|
-
{
|
140
|
-
return __X & (__X - 1);
|
141
|
-
}
|
142
|
-
|
143
|
-
static __inline__ unsigned long long __DEFAULT_FN_ATTRS
|
144
|
-
__tzcnt_u64(unsigned long long __X)
|
145
|
-
{
|
146
|
-
return __X ? __builtin_ctzll(__X) : 64;
|
147
|
-
}
|
148
|
-
|
149
|
-
#endif /* __x86_64__ */
|
150
|
-
|
151
|
-
#undef __DEFAULT_FN_ATTRS
|
152
|
-
|
153
|
-
#endif /* __BMIINTRIN_H */
|
@@ -1,209 +0,0 @@
|
|
1
|
-
/*===---- cpuid.h - X86 cpu model detection --------------------------------===
|
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
|
-
#if !(__x86_64__ || __i386__)
|
25
|
-
#error this header is for x86 only
|
26
|
-
#endif
|
27
|
-
|
28
|
-
/* Responses identification request with %eax 0 */
|
29
|
-
/* AMD: "AuthenticAMD" */
|
30
|
-
#define signature_AMD_ebx 0x68747541
|
31
|
-
#define signature_AMD_edx 0x69746e65
|
32
|
-
#define signature_AMD_ecx 0x444d4163
|
33
|
-
/* CENTAUR: "CentaurHauls" */
|
34
|
-
#define signature_CENTAUR_ebx 0x746e6543
|
35
|
-
#define signature_CENTAUR_edx 0x48727561
|
36
|
-
#define signature_CENTAUR_ecx 0x736c7561
|
37
|
-
/* CYRIX: "CyrixInstead" */
|
38
|
-
#define signature_CYRIX_ebx 0x69727943
|
39
|
-
#define signature_CYRIX_edx 0x736e4978
|
40
|
-
#define signature_CYRIX_ecx 0x64616574
|
41
|
-
/* INTEL: "GenuineIntel" */
|
42
|
-
#define signature_INTEL_ebx 0x756e6547
|
43
|
-
#define signature_INTEL_edx 0x49656e69
|
44
|
-
#define signature_INTEL_ecx 0x6c65746e
|
45
|
-
/* TM1: "TransmetaCPU" */
|
46
|
-
#define signature_TM1_ebx 0x6e617254
|
47
|
-
#define signature_TM1_edx 0x74656d73
|
48
|
-
#define signature_TM1_ecx 0x55504361
|
49
|
-
/* TM2: "GenuineTMx86" */
|
50
|
-
#define signature_TM2_ebx 0x756e6547
|
51
|
-
#define signature_TM2_edx 0x54656e69
|
52
|
-
#define signature_TM2_ecx 0x3638784d
|
53
|
-
/* NSC: "Geode by NSC" */
|
54
|
-
#define signature_NSC_ebx 0x646f6547
|
55
|
-
#define signature_NSC_edx 0x43534e20
|
56
|
-
#define signature_NSC_ecx 0x79622065
|
57
|
-
/* NEXGEN: "NexGenDriven" */
|
58
|
-
#define signature_NEXGEN_ebx 0x4778654e
|
59
|
-
#define signature_NEXGEN_edx 0x72446e65
|
60
|
-
#define signature_NEXGEN_ecx 0x6e657669
|
61
|
-
/* RISE: "RiseRiseRise" */
|
62
|
-
#define signature_RISE_ebx 0x65736952
|
63
|
-
#define signature_RISE_edx 0x65736952
|
64
|
-
#define signature_RISE_ecx 0x65736952
|
65
|
-
/* SIS: "SiS SiS SiS " */
|
66
|
-
#define signature_SIS_ebx 0x20536953
|
67
|
-
#define signature_SIS_edx 0x20536953
|
68
|
-
#define signature_SIS_ecx 0x20536953
|
69
|
-
/* UMC: "UMC UMC UMC " */
|
70
|
-
#define signature_UMC_ebx 0x20434d55
|
71
|
-
#define signature_UMC_edx 0x20434d55
|
72
|
-
#define signature_UMC_ecx 0x20434d55
|
73
|
-
/* VIA: "VIA VIA VIA " */
|
74
|
-
#define signature_VIA_ebx 0x20414956
|
75
|
-
#define signature_VIA_edx 0x20414956
|
76
|
-
#define signature_VIA_ecx 0x20414956
|
77
|
-
/* VORTEX: "Vortex86 SoC" */
|
78
|
-
#define signature_VORTEX_ebx 0x74726f56
|
79
|
-
#define signature_VORTEX_edx 0x36387865
|
80
|
-
#define signature_VORTEX_ecx 0x436f5320
|
81
|
-
|
82
|
-
/* Features in %ecx for level 1 */
|
83
|
-
#define bit_SSE3 0x00000001
|
84
|
-
#define bit_PCLMULQDQ 0x00000002
|
85
|
-
#define bit_DTES64 0x00000004
|
86
|
-
#define bit_MONITOR 0x00000008
|
87
|
-
#define bit_DSCPL 0x00000010
|
88
|
-
#define bit_VMX 0x00000020
|
89
|
-
#define bit_SMX 0x00000040
|
90
|
-
#define bit_EIST 0x00000080
|
91
|
-
#define bit_TM2 0x00000100
|
92
|
-
#define bit_SSSE3 0x00000200
|
93
|
-
#define bit_CNXTID 0x00000400
|
94
|
-
#define bit_FMA 0x00001000
|
95
|
-
#define bit_CMPXCHG16B 0x00002000
|
96
|
-
#define bit_xTPR 0x00004000
|
97
|
-
#define bit_PDCM 0x00008000
|
98
|
-
#define bit_PCID 0x00020000
|
99
|
-
#define bit_DCA 0x00040000
|
100
|
-
#define bit_SSE41 0x00080000
|
101
|
-
#define bit_SSE42 0x00100000
|
102
|
-
#define bit_x2APIC 0x00200000
|
103
|
-
#define bit_MOVBE 0x00400000
|
104
|
-
#define bit_POPCNT 0x00800000
|
105
|
-
#define bit_TSCDeadline 0x01000000
|
106
|
-
#define bit_AESNI 0x02000000
|
107
|
-
#define bit_XSAVE 0x04000000
|
108
|
-
#define bit_OSXSAVE 0x08000000
|
109
|
-
#define bit_AVX 0x10000000
|
110
|
-
#define bit_RDRND 0x40000000
|
111
|
-
|
112
|
-
/* Features in %edx for level 1 */
|
113
|
-
#define bit_FPU 0x00000001
|
114
|
-
#define bit_VME 0x00000002
|
115
|
-
#define bit_DE 0x00000004
|
116
|
-
#define bit_PSE 0x00000008
|
117
|
-
#define bit_TSC 0x00000010
|
118
|
-
#define bit_MSR 0x00000020
|
119
|
-
#define bit_PAE 0x00000040
|
120
|
-
#define bit_MCE 0x00000080
|
121
|
-
#define bit_CX8 0x00000100
|
122
|
-
#define bit_APIC 0x00000200
|
123
|
-
#define bit_SEP 0x00000800
|
124
|
-
#define bit_MTRR 0x00001000
|
125
|
-
#define bit_PGE 0x00002000
|
126
|
-
#define bit_MCA 0x00004000
|
127
|
-
#define bit_CMOV 0x00008000
|
128
|
-
#define bit_PAT 0x00010000
|
129
|
-
#define bit_PSE36 0x00020000
|
130
|
-
#define bit_PSN 0x00040000
|
131
|
-
#define bit_CLFSH 0x00080000
|
132
|
-
#define bit_DS 0x00200000
|
133
|
-
#define bit_ACPI 0x00400000
|
134
|
-
#define bit_MMX 0x00800000
|
135
|
-
#define bit_FXSR 0x01000000
|
136
|
-
#define bit_FXSAVE bit_FXSR /* for gcc compat */
|
137
|
-
#define bit_SSE 0x02000000
|
138
|
-
#define bit_SSE2 0x04000000
|
139
|
-
#define bit_SS 0x08000000
|
140
|
-
#define bit_HTT 0x10000000
|
141
|
-
#define bit_TM 0x20000000
|
142
|
-
#define bit_PBE 0x80000000
|
143
|
-
|
144
|
-
/* Features in %ebx for level 7 sub-leaf 0 */
|
145
|
-
#define bit_FSGSBASE 0x00000001
|
146
|
-
#define bit_SMEP 0x00000080
|
147
|
-
#define bit_ENH_MOVSB 0x00000200
|
148
|
-
|
149
|
-
#if __i386__
|
150
|
-
#define __cpuid(__level, __eax, __ebx, __ecx, __edx) \
|
151
|
-
__asm("cpuid" : "=a"(__eax), "=b" (__ebx), "=c"(__ecx), "=d"(__edx) \
|
152
|
-
: "0"(__level))
|
153
|
-
|
154
|
-
#define __cpuid_count(__level, __count, __eax, __ebx, __ecx, __edx) \
|
155
|
-
__asm("cpuid" : "=a"(__eax), "=b" (__ebx), "=c"(__ecx), "=d"(__edx) \
|
156
|
-
: "0"(__level), "2"(__count))
|
157
|
-
#else
|
158
|
-
/* x86-64 uses %rbx as the base register, so preserve it. */
|
159
|
-
#define __cpuid(__level, __eax, __ebx, __ecx, __edx) \
|
160
|
-
__asm(" xchgq %%rbx,%q1\n" \
|
161
|
-
" cpuid\n" \
|
162
|
-
" xchgq %%rbx,%q1" \
|
163
|
-
: "=a"(__eax), "=r" (__ebx), "=c"(__ecx), "=d"(__edx) \
|
164
|
-
: "0"(__level))
|
165
|
-
|
166
|
-
#define __cpuid_count(__level, __count, __eax, __ebx, __ecx, __edx) \
|
167
|
-
__asm(" xchgq %%rbx,%q1\n" \
|
168
|
-
" cpuid\n" \
|
169
|
-
" xchgq %%rbx,%q1" \
|
170
|
-
: "=a"(__eax), "=r" (__ebx), "=c"(__ecx), "=d"(__edx) \
|
171
|
-
: "0"(__level), "2"(__count))
|
172
|
-
#endif
|
173
|
-
|
174
|
-
static __inline int __get_cpuid (unsigned int __level, unsigned int *__eax,
|
175
|
-
unsigned int *__ebx, unsigned int *__ecx,
|
176
|
-
unsigned int *__edx) {
|
177
|
-
__cpuid(__level, *__eax, *__ebx, *__ecx, *__edx);
|
178
|
-
return 1;
|
179
|
-
}
|
180
|
-
|
181
|
-
static __inline int __get_cpuid_max (unsigned int __level, unsigned int *__sig)
|
182
|
-
{
|
183
|
-
unsigned int __eax, __ebx, __ecx, __edx;
|
184
|
-
#if __i386__
|
185
|
-
int __cpuid_supported;
|
186
|
-
|
187
|
-
__asm(" pushfl\n"
|
188
|
-
" popl %%eax\n"
|
189
|
-
" movl %%eax,%%ecx\n"
|
190
|
-
" xorl $0x00200000,%%eax\n"
|
191
|
-
" pushl %%eax\n"
|
192
|
-
" popfl\n"
|
193
|
-
" pushfl\n"
|
194
|
-
" popl %%eax\n"
|
195
|
-
" movl $0,%0\n"
|
196
|
-
" cmpl %%eax,%%ecx\n"
|
197
|
-
" je 1f\n"
|
198
|
-
" movl $1,%0\n"
|
199
|
-
"1:"
|
200
|
-
: "=r" (__cpuid_supported) : : "eax", "ecx");
|
201
|
-
if (!__cpuid_supported)
|
202
|
-
return 0;
|
203
|
-
#endif
|
204
|
-
|
205
|
-
__cpuid(__level, __eax, __ebx, __ecx, __edx);
|
206
|
-
if (__sig)
|
207
|
-
*__sig = __ebx;
|
208
|
-
return __eax;
|
209
|
-
}
|
@@ -1,110 +0,0 @@
|
|
1
|
-
/*===---- cuda_builtin_vars.h - CUDA built-in variables ---------------------===
|
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 __CUDA_BUILTIN_VARS_H
|
25
|
-
#define __CUDA_BUILTIN_VARS_H
|
26
|
-
|
27
|
-
// The file implements built-in CUDA variables using __declspec(property).
|
28
|
-
// https://msdn.microsoft.com/en-us/library/yhfk0thd.aspx
|
29
|
-
// All read accesses of built-in variable fields get converted into calls to a
|
30
|
-
// getter function which in turn would call appropriate builtin to fetch the
|
31
|
-
// value.
|
32
|
-
//
|
33
|
-
// Example:
|
34
|
-
// int x = threadIdx.x;
|
35
|
-
// IR output:
|
36
|
-
// %0 = call i32 @llvm.ptx.read.tid.x() #3
|
37
|
-
// PTX output:
|
38
|
-
// mov.u32 %r2, %tid.x;
|
39
|
-
|
40
|
-
#define __CUDA_DEVICE_BUILTIN(FIELD, INTRINSIC) \
|
41
|
-
__declspec(property(get = __fetch_builtin_##FIELD)) unsigned int FIELD; \
|
42
|
-
static inline __attribute__((always_inline)) \
|
43
|
-
__attribute__((device)) unsigned int __fetch_builtin_##FIELD(void) { \
|
44
|
-
return INTRINSIC; \
|
45
|
-
}
|
46
|
-
|
47
|
-
#if __cplusplus >= 201103L
|
48
|
-
#define __DELETE =delete
|
49
|
-
#else
|
50
|
-
#define __DELETE
|
51
|
-
#endif
|
52
|
-
|
53
|
-
// Make sure nobody can create instances of the special varible types. nvcc
|
54
|
-
// also disallows taking address of special variables, so we disable address-of
|
55
|
-
// operator as well.
|
56
|
-
#define __CUDA_DISALLOW_BUILTINVAR_ACCESS(TypeName) \
|
57
|
-
__attribute__((device)) TypeName() __DELETE; \
|
58
|
-
__attribute__((device)) TypeName(const TypeName &) __DELETE; \
|
59
|
-
__attribute__((device)) void operator=(const TypeName &) const __DELETE; \
|
60
|
-
__attribute__((device)) TypeName *operator&() const __DELETE
|
61
|
-
|
62
|
-
struct __cuda_builtin_threadIdx_t {
|
63
|
-
__CUDA_DEVICE_BUILTIN(x,__builtin_ptx_read_tid_x());
|
64
|
-
__CUDA_DEVICE_BUILTIN(y,__builtin_ptx_read_tid_y());
|
65
|
-
__CUDA_DEVICE_BUILTIN(z,__builtin_ptx_read_tid_z());
|
66
|
-
private:
|
67
|
-
__CUDA_DISALLOW_BUILTINVAR_ACCESS(__cuda_builtin_threadIdx_t);
|
68
|
-
};
|
69
|
-
|
70
|
-
struct __cuda_builtin_blockIdx_t {
|
71
|
-
__CUDA_DEVICE_BUILTIN(x,__builtin_ptx_read_ctaid_x());
|
72
|
-
__CUDA_DEVICE_BUILTIN(y,__builtin_ptx_read_ctaid_y());
|
73
|
-
__CUDA_DEVICE_BUILTIN(z,__builtin_ptx_read_ctaid_z());
|
74
|
-
private:
|
75
|
-
__CUDA_DISALLOW_BUILTINVAR_ACCESS(__cuda_builtin_blockIdx_t);
|
76
|
-
};
|
77
|
-
|
78
|
-
struct __cuda_builtin_blockDim_t {
|
79
|
-
__CUDA_DEVICE_BUILTIN(x,__builtin_ptx_read_ntid_x());
|
80
|
-
__CUDA_DEVICE_BUILTIN(y,__builtin_ptx_read_ntid_y());
|
81
|
-
__CUDA_DEVICE_BUILTIN(z,__builtin_ptx_read_ntid_z());
|
82
|
-
private:
|
83
|
-
__CUDA_DISALLOW_BUILTINVAR_ACCESS(__cuda_builtin_blockDim_t);
|
84
|
-
};
|
85
|
-
|
86
|
-
struct __cuda_builtin_gridDim_t {
|
87
|
-
__CUDA_DEVICE_BUILTIN(x,__builtin_ptx_read_nctaid_x());
|
88
|
-
__CUDA_DEVICE_BUILTIN(y,__builtin_ptx_read_nctaid_y());
|
89
|
-
__CUDA_DEVICE_BUILTIN(z,__builtin_ptx_read_nctaid_z());
|
90
|
-
private:
|
91
|
-
__CUDA_DISALLOW_BUILTINVAR_ACCESS(__cuda_builtin_gridDim_t);
|
92
|
-
};
|
93
|
-
|
94
|
-
#define __CUDA_BUILTIN_VAR \
|
95
|
-
extern const __attribute__((device)) __attribute__((weak))
|
96
|
-
__CUDA_BUILTIN_VAR __cuda_builtin_threadIdx_t threadIdx;
|
97
|
-
__CUDA_BUILTIN_VAR __cuda_builtin_blockIdx_t blockIdx;
|
98
|
-
__CUDA_BUILTIN_VAR __cuda_builtin_blockDim_t blockDim;
|
99
|
-
__CUDA_BUILTIN_VAR __cuda_builtin_gridDim_t gridDim;
|
100
|
-
|
101
|
-
// warpSize should translate to read of %WARP_SZ but there's currently no
|
102
|
-
// builtin to do so. According to PTX v4.2 docs 'to date, all target
|
103
|
-
// architectures have a WARP_SZ value of 32'.
|
104
|
-
__attribute__((device)) const int warpSize = 32;
|
105
|
-
|
106
|
-
#undef __CUDA_DEVICE_BUILTIN
|
107
|
-
#undef __CUDA_BUILTIN_VAR
|
108
|
-
#undef __CUDA_DISALLOW_BUILTINVAR_ACCESS
|
109
|
-
|
110
|
-
#endif /* __CUDA_BUILTIN_VARS_H */
|