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.
Files changed (202) hide show
  1. checksums.yaml +7 -0
  2. data/.codeclimate.yml +20 -0
  3. data/.gitignore +1 -0
  4. data/.rspec +2 -0
  5. data/.travis.yml +7 -0
  6. data/Gemfile +6 -0
  7. data/Gemfile.lock +110 -0
  8. data/Guardfile +18 -0
  9. data/README.md +7 -0
  10. data/Rakefile +7 -0
  11. data/TODO.md +3 -0
  12. data/bin/oclint +5 -0
  13. data/bin/oclint-0.8 +5 -0
  14. data/bin/oclint-json-compilation-database +5 -0
  15. data/bin/oclint-xcodebuild +5 -0
  16. data/externals/oclint/LICENSE +69 -0
  17. data/externals/oclint/bin/oclint +0 -0
  18. data/externals/oclint/bin/oclint-0.10.2 +0 -0
  19. data/externals/oclint/bin/oclint-json-compilation-database +88 -0
  20. data/externals/oclint/bin/oclint-xcodebuild +218 -0
  21. data/externals/oclint/lib/clang/3.7.0/asan_blacklist.txt +13 -0
  22. data/externals/oclint/lib/clang/3.7.0/include/Intrin.h +958 -0
  23. data/externals/oclint/lib/clang/3.7.0/include/__stddef_max_align_t.h +43 -0
  24. data/externals/oclint/lib/clang/3.7.0/include/__wmmintrin_aes.h +72 -0
  25. data/externals/oclint/lib/clang/3.7.0/include/__wmmintrin_pclmul.h +34 -0
  26. data/externals/oclint/lib/clang/3.7.0/include/adxintrin.h +88 -0
  27. data/externals/oclint/lib/clang/3.7.0/include/altivec.h +13528 -0
  28. data/externals/oclint/lib/clang/3.7.0/include/ammintrin.h +215 -0
  29. data/externals/oclint/lib/clang/3.7.0/include/arm_acle.h +304 -0
  30. data/externals/oclint/lib/clang/3.7.0/include/arm_neon.h +68419 -0
  31. data/externals/oclint/lib/clang/3.7.0/include/avx2intrin.h +1256 -0
  32. data/externals/oclint/lib/clang/3.7.0/include/avx512bwintrin.h +1250 -0
  33. data/externals/oclint/lib/clang/3.7.0/include/avx512cdintrin.h +131 -0
  34. data/externals/oclint/lib/clang/3.7.0/include/avx512dqintrin.h +242 -0
  35. data/externals/oclint/lib/clang/3.7.0/include/avx512erintrin.h +285 -0
  36. data/externals/oclint/lib/clang/3.7.0/include/avx512fintrin.h +2457 -0
  37. data/externals/oclint/lib/clang/3.7.0/include/avx512vlbwintrin.h +1907 -0
  38. data/externals/oclint/lib/clang/3.7.0/include/avx512vldqintrin.h +353 -0
  39. data/externals/oclint/lib/clang/3.7.0/include/avx512vlintrin.h +1982 -0
  40. data/externals/oclint/lib/clang/3.7.0/include/avxintrin.h +1308 -0
  41. data/externals/oclint/lib/clang/3.7.0/include/bmi2intrin.h +99 -0
  42. data/externals/oclint/lib/clang/3.7.0/include/bmiintrin.h +153 -0
  43. data/externals/oclint/lib/clang/3.7.0/include/cpuid.h +209 -0
  44. data/externals/oclint/lib/clang/3.7.0/include/cuda_builtin_vars.h +110 -0
  45. data/externals/oclint/lib/clang/3.7.0/include/emmintrin.h +1480 -0
  46. data/externals/oclint/lib/clang/3.7.0/include/f16cintrin.h +63 -0
  47. data/externals/oclint/lib/clang/3.7.0/include/float.h +124 -0
  48. data/externals/oclint/lib/clang/3.7.0/include/fma4intrin.h +236 -0
  49. data/externals/oclint/lib/clang/3.7.0/include/fmaintrin.h +234 -0
  50. data/externals/oclint/lib/clang/3.7.0/include/fxsrintrin.h +55 -0
  51. data/externals/oclint/lib/clang/3.7.0/include/htmintrin.h +226 -0
  52. data/externals/oclint/lib/clang/3.7.0/include/htmxlintrin.h +363 -0
  53. data/externals/oclint/lib/clang/3.7.0/include/ia32intrin.h +101 -0
  54. data/externals/oclint/lib/clang/3.7.0/include/immintrin.h +203 -0
  55. data/externals/oclint/lib/clang/3.7.0/include/inttypes.h +102 -0
  56. data/externals/oclint/lib/clang/3.7.0/include/iso646.h +43 -0
  57. data/externals/oclint/lib/clang/3.7.0/include/limits.h +118 -0
  58. data/externals/oclint/lib/clang/3.7.0/include/lzcntintrin.h +72 -0
  59. data/externals/oclint/lib/clang/3.7.0/include/mm3dnow.h +167 -0
  60. data/externals/oclint/lib/clang/3.7.0/include/mm_malloc.h +75 -0
  61. data/externals/oclint/lib/clang/3.7.0/include/mmintrin.h +507 -0
  62. data/externals/oclint/lib/clang/3.7.0/include/module.modulemap +196 -0
  63. data/externals/oclint/lib/clang/3.7.0/include/nmmintrin.h +35 -0
  64. data/externals/oclint/lib/clang/3.7.0/include/pmmintrin.h +122 -0
  65. data/externals/oclint/lib/clang/3.7.0/include/popcntintrin.h +50 -0
  66. data/externals/oclint/lib/clang/3.7.0/include/prfchwintrin.h +39 -0
  67. data/externals/oclint/lib/clang/3.7.0/include/rdseedintrin.h +59 -0
  68. data/externals/oclint/lib/clang/3.7.0/include/rtmintrin.h +59 -0
  69. data/externals/oclint/lib/clang/3.7.0/include/s390intrin.h +39 -0
  70. data/externals/oclint/lib/clang/3.7.0/include/sanitizer/allocator_interface.h +66 -0
  71. data/externals/oclint/lib/clang/3.7.0/include/sanitizer/asan_interface.h +155 -0
  72. data/externals/oclint/lib/clang/3.7.0/include/sanitizer/common_interface_defs.h +118 -0
  73. data/externals/oclint/lib/clang/3.7.0/include/sanitizer/coverage_interface.h +63 -0
  74. data/externals/oclint/lib/clang/3.7.0/include/sanitizer/dfsan_interface.h +114 -0
  75. data/externals/oclint/lib/clang/3.7.0/include/sanitizer/linux_syscall_hooks.h +3070 -0
  76. data/externals/oclint/lib/clang/3.7.0/include/sanitizer/lsan_interface.h +84 -0
  77. data/externals/oclint/lib/clang/3.7.0/include/sanitizer/msan_interface.h +107 -0
  78. data/externals/oclint/lib/clang/3.7.0/include/sanitizer/tsan_interface_atomic.h +222 -0
  79. data/externals/oclint/lib/clang/3.7.0/include/shaintrin.h +79 -0
  80. data/externals/oclint/lib/clang/3.7.0/include/smmintrin.h +487 -0
  81. data/externals/oclint/lib/clang/3.7.0/include/stdalign.h +35 -0
  82. data/externals/oclint/lib/clang/3.7.0/include/stdarg.h +52 -0
  83. data/externals/oclint/lib/clang/3.7.0/include/stdatomic.h +190 -0
  84. data/externals/oclint/lib/clang/3.7.0/include/stdbool.h +44 -0
  85. data/externals/oclint/lib/clang/3.7.0/include/stddef.h +137 -0
  86. data/externals/oclint/lib/clang/3.7.0/include/stdint.h +707 -0
  87. data/externals/oclint/lib/clang/3.7.0/include/stdnoreturn.h +30 -0
  88. data/externals/oclint/lib/clang/3.7.0/include/tbmintrin.h +154 -0
  89. data/externals/oclint/lib/clang/3.7.0/include/tgmath.h +1374 -0
  90. data/externals/oclint/lib/clang/3.7.0/include/tmmintrin.h +230 -0
  91. data/externals/oclint/lib/clang/3.7.0/include/unwind.h +282 -0
  92. data/externals/oclint/lib/clang/3.7.0/include/vadefs.h +65 -0
  93. data/externals/oclint/lib/clang/3.7.0/include/varargs.h +26 -0
  94. data/externals/oclint/lib/clang/3.7.0/include/vecintrin.h +8946 -0
  95. data/externals/oclint/lib/clang/3.7.0/include/wmmintrin.h +42 -0
  96. data/externals/oclint/lib/clang/3.7.0/include/x86intrin.h +81 -0
  97. data/externals/oclint/lib/clang/3.7.0/include/xmmintrin.h +1008 -0
  98. data/externals/oclint/lib/clang/3.7.0/include/xopintrin.h +809 -0
  99. data/externals/oclint/lib/clang/3.7.0/include/xtestintrin.h +41 -0
  100. data/externals/oclint/lib/clang/3.7.0/lib/darwin/libclang_rt.asan_iossim_dynamic.dylib +0 -0
  101. data/externals/oclint/lib/clang/3.7.0/lib/darwin/libclang_rt.asan_osx_dynamic.dylib +0 -0
  102. data/externals/oclint/lib/clang/3.7.0/lib/darwin/libclang_rt.builtins-i386.a +0 -0
  103. data/externals/oclint/lib/clang/3.7.0/lib/darwin/libclang_rt.builtins-x86_64.a +0 -0
  104. data/externals/oclint/lib/clang/3.7.0/lib/darwin/libclang_rt.profile_osx.a +0 -0
  105. data/externals/oclint/lib/clang/3.7.0/lib/darwin/libclang_rt.safestack_osx.a +0 -0
  106. data/externals/oclint/lib/clang/3.7.0/lib/darwin/libclang_rt.ubsan_iossim_dynamic.dylib +0 -0
  107. data/externals/oclint/lib/clang/3.7.0/lib/darwin/libclang_rt.ubsan_osx_dynamic.dylib +0 -0
  108. data/externals/oclint/lib/oclint/reporters/libHTMLReporter.dylib +0 -0
  109. data/externals/oclint/lib/oclint/reporters/libJSONReporter.dylib +0 -0
  110. data/externals/oclint/lib/oclint/reporters/libPMDReporter.dylib +0 -0
  111. data/externals/oclint/lib/oclint/reporters/libTextReporter.dylib +0 -0
  112. data/externals/oclint/lib/oclint/reporters/libXMLReporter.dylib +0 -0
  113. data/externals/oclint/lib/oclint/reporters/libXcodeReporter.dylib +0 -0
  114. data/externals/oclint/lib/oclint/rules/libAvoidBranchingStatementAsLastInLoopRule.dylib +0 -0
  115. data/externals/oclint/lib/oclint/rules/libAvoidDefaultArgumentsOnVirtualMethodsRule.dylib +0 -0
  116. data/externals/oclint/lib/oclint/rules/libAvoidPrivateStaticMembersRule.dylib +0 -0
  117. data/externals/oclint/lib/oclint/rules/libBaseClassDestructorShouldBeVirtualOrProtectedRule.dylib +0 -0
  118. data/externals/oclint/lib/oclint/rules/libBitwiseOperatorInConditionalRule.dylib +0 -0
  119. data/externals/oclint/lib/oclint/rules/libBrokenNullCheckRule.dylib +0 -0
  120. data/externals/oclint/lib/oclint/rules/libBrokenOddnessCheckRule.dylib +0 -0
  121. data/externals/oclint/lib/oclint/rules/libCollapsibleIfStatementsRule.dylib +0 -0
  122. data/externals/oclint/lib/oclint/rules/libConstantConditionalOperatorRule.dylib +0 -0
  123. data/externals/oclint/lib/oclint/rules/libConstantIfExpressionRule.dylib +0 -0
  124. data/externals/oclint/lib/oclint/rules/libCoveredSwitchStatementsDontNeedDefaultRule.dylib +0 -0
  125. data/externals/oclint/lib/oclint/rules/libCyclomaticComplexityRule.dylib +0 -0
  126. data/externals/oclint/lib/oclint/rules/libDeadCodeRule.dylib +0 -0
  127. data/externals/oclint/lib/oclint/rules/libDefaultLabelNotLastInSwitchStatementRule.dylib +0 -0
  128. data/externals/oclint/lib/oclint/rules/libDestructorOfVirtualClassRule.dylib +0 -0
  129. data/externals/oclint/lib/oclint/rules/libDoubleNegativeRule.dylib +0 -0
  130. data/externals/oclint/lib/oclint/rules/libEmptyCatchStatementRule.dylib +0 -0
  131. data/externals/oclint/lib/oclint/rules/libEmptyDoWhileStatementRule.dylib +0 -0
  132. data/externals/oclint/lib/oclint/rules/libEmptyElseBlockRule.dylib +0 -0
  133. data/externals/oclint/lib/oclint/rules/libEmptyFinallyStatementRule.dylib +0 -0
  134. data/externals/oclint/lib/oclint/rules/libEmptyForStatementRule.dylib +0 -0
  135. data/externals/oclint/lib/oclint/rules/libEmptyIfStatementRule.dylib +0 -0
  136. data/externals/oclint/lib/oclint/rules/libEmptySwitchStatementRule.dylib +0 -0
  137. data/externals/oclint/lib/oclint/rules/libEmptyTryStatementRule.dylib +0 -0
  138. data/externals/oclint/lib/oclint/rules/libEmptyWhileStatementRule.dylib +0 -0
  139. data/externals/oclint/lib/oclint/rules/libForLoopShouldBeWhileLoopRule.dylib +0 -0
  140. data/externals/oclint/lib/oclint/rules/libGotoStatementRule.dylib +0 -0
  141. data/externals/oclint/lib/oclint/rules/libInvertedLogicRule.dylib +0 -0
  142. data/externals/oclint/lib/oclint/rules/libJumbledIncrementerRule.dylib +0 -0
  143. data/externals/oclint/lib/oclint/rules/libLongClassRule.dylib +0 -0
  144. data/externals/oclint/lib/oclint/rules/libLongLineRule.dylib +0 -0
  145. data/externals/oclint/lib/oclint/rules/libLongMethodRule.dylib +0 -0
  146. data/externals/oclint/lib/oclint/rules/libLongVariableNameRule.dylib +0 -0
  147. data/externals/oclint/lib/oclint/rules/libMisplacedNullCheckRule.dylib +0 -0
  148. data/externals/oclint/lib/oclint/rules/libMissingBreakInSwitchStatementRule.dylib +0 -0
  149. data/externals/oclint/lib/oclint/rules/libMultipleUnaryOperatorRule.dylib +0 -0
  150. data/externals/oclint/lib/oclint/rules/libNPathComplexityRule.dylib +0 -0
  151. data/externals/oclint/lib/oclint/rules/libNcssMethodCountRule.dylib +0 -0
  152. data/externals/oclint/lib/oclint/rules/libNestedBlockDepthRule.dylib +0 -0
  153. data/externals/oclint/lib/oclint/rules/libNonCaseLabelInSwitchStatementRule.dylib +0 -0
  154. data/externals/oclint/lib/oclint/rules/libObjCAssignIvarOutsideAccessorsRule.dylib +0 -0
  155. data/externals/oclint/lib/oclint/rules/libObjCBoxedExpressionsRule.dylib +0 -0
  156. data/externals/oclint/lib/oclint/rules/libObjCContainerLiteralsRule.dylib +0 -0
  157. data/externals/oclint/lib/oclint/rules/libObjCNSNumberLiteralsRule.dylib +0 -0
  158. data/externals/oclint/lib/oclint/rules/libObjCObjectSubscriptingRule.dylib +0 -0
  159. data/externals/oclint/lib/oclint/rules/libObjCVerifyIsEqualHashRule.dylib +0 -0
  160. data/externals/oclint/lib/oclint/rules/libObjCVerifyMustCallSuperRule.dylib +0 -0
  161. data/externals/oclint/lib/oclint/rules/libObjCVerifyProhibitedCallRule.dylib +0 -0
  162. data/externals/oclint/lib/oclint/rules/libObjCVerifyProtectedMethodRule.dylib +0 -0
  163. data/externals/oclint/lib/oclint/rules/libObjCVerifySubclassMustImplementRule.dylib +0 -0
  164. data/externals/oclint/lib/oclint/rules/libParameterReassignmentRule.dylib +0 -0
  165. data/externals/oclint/lib/oclint/rules/libPreferEarlyExitRule.dylib +0 -0
  166. data/externals/oclint/lib/oclint/rules/libRedundantConditionalOperatorRule.dylib +0 -0
  167. data/externals/oclint/lib/oclint/rules/libRedundantIfStatementRule.dylib +0 -0
  168. data/externals/oclint/lib/oclint/rules/libRedundantLocalVariableRule.dylib +0 -0
  169. data/externals/oclint/lib/oclint/rules/libRedundantNilCheckRule.dylib +0 -0
  170. data/externals/oclint/lib/oclint/rules/libReturnFromFinallyBlockRule.dylib +0 -0
  171. data/externals/oclint/lib/oclint/rules/libShortVariableNameRule.dylib +0 -0
  172. data/externals/oclint/lib/oclint/rules/libSwitchStatementsShouldHaveDefaultRule.dylib +0 -0
  173. data/externals/oclint/lib/oclint/rules/libThrowExceptionFromFinallyBlockRule.dylib +0 -0
  174. data/externals/oclint/lib/oclint/rules/libTooFewBranchesInSwitchStatementRule.dylib +0 -0
  175. data/externals/oclint/lib/oclint/rules/libTooManyFieldsRule.dylib +0 -0
  176. data/externals/oclint/lib/oclint/rules/libTooManyMethodsRule.dylib +0 -0
  177. data/externals/oclint/lib/oclint/rules/libTooManyParametersRule.dylib +0 -0
  178. data/externals/oclint/lib/oclint/rules/libUnnecessaryElseStatementRule.dylib +0 -0
  179. data/externals/oclint/lib/oclint/rules/libUnnecessaryNullCheckForCXXDeallocRule.dylib +0 -0
  180. data/externals/oclint/lib/oclint/rules/libUnusedLocalVariableRule.dylib +0 -0
  181. data/externals/oclint/lib/oclint/rules/libUnusedMethodParameterRule.dylib +0 -0
  182. data/externals/oclint/lib/oclint/rules/libUselessParenthesesRule.dylib +0 -0
  183. data/lib/coverage_plan.rb +19 -0
  184. data/lib/device.rb +27 -0
  185. data/lib/execute.rb +7 -0
  186. data/lib/lint_plan.rb +41 -0
  187. data/lib/rules.rb +23 -0
  188. data/lib/test_plan.rb +11 -0
  189. data/lib/version.rb +3 -0
  190. data/lib/xcode.rb +128 -0
  191. data/lib/xcodebuild-helper.rb +110 -0
  192. data/spec/coverage_plan_spec.rb +18 -0
  193. data/spec/device_spec.rb +24 -0
  194. data/spec/lint_plan_spec.rb +35 -0
  195. data/spec/rule_spec.rb +37 -0
  196. data/spec/spec_helper.rb +17 -0
  197. data/spec/test_plan_spec.rb +11 -0
  198. data/spec/xcode_dsl_actions_spec.rb +136 -0
  199. data/spec/xcode_dsl_spec.rb +176 -0
  200. data/spec/xcode_spec.rb +79 -0
  201. data/xcodebuild-helper.gemspec +26 -0
  202. metadata +327 -0
@@ -0,0 +1,118 @@
1
+ /*===---- limits.h - Standard header for integer sizes --------------------===*\
2
+ *
3
+ * Copyright (c) 2009 Chris Lattner
4
+ *
5
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ * of this software and associated documentation files (the "Software"), to deal
7
+ * in the Software without restriction, including without limitation the rights
8
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ * copies of the Software, and to permit persons to whom the Software is
10
+ * furnished to do so, subject to the following conditions:
11
+ *
12
+ * The above copyright notice and this permission notice shall be included in
13
+ * all copies or substantial portions of the Software.
14
+ *
15
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ * THE SOFTWARE.
22
+ *
23
+ \*===----------------------------------------------------------------------===*/
24
+
25
+ #ifndef __CLANG_LIMITS_H
26
+ #define __CLANG_LIMITS_H
27
+
28
+ /* The system's limits.h may, in turn, try to #include_next GCC's limits.h.
29
+ Avert this #include_next madness. */
30
+ #if defined __GNUC__ && !defined _GCC_LIMITS_H_
31
+ #define _GCC_LIMITS_H_
32
+ #endif
33
+
34
+ /* System headers include a number of constants from POSIX in <limits.h>.
35
+ Include it if we're hosted. */
36
+ #if __STDC_HOSTED__ && __has_include_next(<limits.h>)
37
+ #include_next <limits.h>
38
+ #endif
39
+
40
+ /* Many system headers try to "help us out" by defining these. No really, we
41
+ know how big each datatype is. */
42
+ #undef SCHAR_MIN
43
+ #undef SCHAR_MAX
44
+ #undef UCHAR_MAX
45
+ #undef SHRT_MIN
46
+ #undef SHRT_MAX
47
+ #undef USHRT_MAX
48
+ #undef INT_MIN
49
+ #undef INT_MAX
50
+ #undef UINT_MAX
51
+ #undef LONG_MIN
52
+ #undef LONG_MAX
53
+ #undef ULONG_MAX
54
+
55
+ #undef CHAR_BIT
56
+ #undef CHAR_MIN
57
+ #undef CHAR_MAX
58
+
59
+ /* C90/99 5.2.4.2.1 */
60
+ #define SCHAR_MAX __SCHAR_MAX__
61
+ #define SHRT_MAX __SHRT_MAX__
62
+ #define INT_MAX __INT_MAX__
63
+ #define LONG_MAX __LONG_MAX__
64
+
65
+ #define SCHAR_MIN (-__SCHAR_MAX__-1)
66
+ #define SHRT_MIN (-__SHRT_MAX__ -1)
67
+ #define INT_MIN (-__INT_MAX__ -1)
68
+ #define LONG_MIN (-__LONG_MAX__ -1L)
69
+
70
+ #define UCHAR_MAX (__SCHAR_MAX__*2 +1)
71
+ #define USHRT_MAX (__SHRT_MAX__ *2 +1)
72
+ #define UINT_MAX (__INT_MAX__ *2U +1U)
73
+ #define ULONG_MAX (__LONG_MAX__ *2UL+1UL)
74
+
75
+ #ifndef MB_LEN_MAX
76
+ #define MB_LEN_MAX 1
77
+ #endif
78
+
79
+ #define CHAR_BIT __CHAR_BIT__
80
+
81
+ #ifdef __CHAR_UNSIGNED__ /* -funsigned-char */
82
+ #define CHAR_MIN 0
83
+ #define CHAR_MAX UCHAR_MAX
84
+ #else
85
+ #define CHAR_MIN SCHAR_MIN
86
+ #define CHAR_MAX __SCHAR_MAX__
87
+ #endif
88
+
89
+ /* C99 5.2.4.2.1: Added long long.
90
+ C++11 18.3.3.2: same contents as the Standard C Library header <limits.h>.
91
+ */
92
+ #if __STDC_VERSION__ >= 199901L || __cplusplus >= 201103L
93
+
94
+ #undef LLONG_MIN
95
+ #undef LLONG_MAX
96
+ #undef ULLONG_MAX
97
+
98
+ #define LLONG_MAX __LONG_LONG_MAX__
99
+ #define LLONG_MIN (-__LONG_LONG_MAX__-1LL)
100
+ #define ULLONG_MAX (__LONG_LONG_MAX__*2ULL+1ULL)
101
+ #endif
102
+
103
+ /* LONG_LONG_MIN/LONG_LONG_MAX/ULONG_LONG_MAX are a GNU extension. It's too bad
104
+ that we don't have something like #pragma poison that could be used to
105
+ deprecate a macro - the code should just use LLONG_MAX and friends.
106
+ */
107
+ #if defined(__GNU_LIBRARY__) ? defined(__USE_GNU) : !defined(__STRICT_ANSI__)
108
+
109
+ #undef LONG_LONG_MIN
110
+ #undef LONG_LONG_MAX
111
+ #undef ULONG_LONG_MAX
112
+
113
+ #define LONG_LONG_MAX __LONG_LONG_MAX__
114
+ #define LONG_LONG_MIN (-__LONG_LONG_MAX__-1LL)
115
+ #define ULONG_LONG_MAX (__LONG_LONG_MAX__*2ULL+1ULL)
116
+ #endif
117
+
118
+ #endif /* __CLANG_LIMITS_H */
@@ -0,0 +1,72 @@
1
+ /*===---- lzcntintrin.h - LZCNT 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 <lzcntintrin.h> directly; include <x86intrin.h> instead."
26
+ #endif
27
+
28
+ #ifndef __LZCNT__
29
+ # error "LZCNT instruction is not enabled"
30
+ #endif /* __LZCNT__ */
31
+
32
+ #ifndef __LZCNTINTRIN_H
33
+ #define __LZCNTINTRIN_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 short __DEFAULT_FN_ATTRS
39
+ __lzcnt16(unsigned short __X)
40
+ {
41
+ return __X ? __builtin_clzs(__X) : 16;
42
+ }
43
+
44
+ static __inline__ unsigned int __DEFAULT_FN_ATTRS
45
+ __lzcnt32(unsigned int __X)
46
+ {
47
+ return __X ? __builtin_clz(__X) : 32;
48
+ }
49
+
50
+ static __inline__ unsigned int __DEFAULT_FN_ATTRS
51
+ _lzcnt_u32(unsigned int __X)
52
+ {
53
+ return __X ? __builtin_clz(__X) : 32;
54
+ }
55
+
56
+ #ifdef __x86_64__
57
+ static __inline__ unsigned long long __DEFAULT_FN_ATTRS
58
+ __lzcnt64(unsigned long long __X)
59
+ {
60
+ return __X ? __builtin_clzll(__X) : 64;
61
+ }
62
+
63
+ static __inline__ unsigned long long __DEFAULT_FN_ATTRS
64
+ _lzcnt_u64(unsigned long long __X)
65
+ {
66
+ return __X ? __builtin_clzll(__X) : 64;
67
+ }
68
+ #endif
69
+
70
+ #undef __DEFAULT_FN_ATTRS
71
+
72
+ #endif /* __LZCNTINTRIN_H */
@@ -0,0 +1,167 @@
1
+ /*===---- mm3dnow.h - 3DNow! 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 _MM3DNOW_H_INCLUDED
25
+ #define _MM3DNOW_H_INCLUDED
26
+
27
+ #include <mmintrin.h>
28
+ #include <prfchwintrin.h>
29
+
30
+ typedef float __v2sf __attribute__((__vector_size__(8)));
31
+
32
+ /* Define the default attributes for the functions in this file. */
33
+ #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))
34
+
35
+ static __inline__ void __DEFAULT_FN_ATTRS
36
+ _m_femms() {
37
+ __builtin_ia32_femms();
38
+ }
39
+
40
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
41
+ _m_pavgusb(__m64 __m1, __m64 __m2) {
42
+ return (__m64)__builtin_ia32_pavgusb((__v8qi)__m1, (__v8qi)__m2);
43
+ }
44
+
45
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
46
+ _m_pf2id(__m64 __m) {
47
+ return (__m64)__builtin_ia32_pf2id((__v2sf)__m);
48
+ }
49
+
50
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
51
+ _m_pfacc(__m64 __m1, __m64 __m2) {
52
+ return (__m64)__builtin_ia32_pfacc((__v2sf)__m1, (__v2sf)__m2);
53
+ }
54
+
55
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
56
+ _m_pfadd(__m64 __m1, __m64 __m2) {
57
+ return (__m64)__builtin_ia32_pfadd((__v2sf)__m1, (__v2sf)__m2);
58
+ }
59
+
60
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
61
+ _m_pfcmpeq(__m64 __m1, __m64 __m2) {
62
+ return (__m64)__builtin_ia32_pfcmpeq((__v2sf)__m1, (__v2sf)__m2);
63
+ }
64
+
65
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
66
+ _m_pfcmpge(__m64 __m1, __m64 __m2) {
67
+ return (__m64)__builtin_ia32_pfcmpge((__v2sf)__m1, (__v2sf)__m2);
68
+ }
69
+
70
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
71
+ _m_pfcmpgt(__m64 __m1, __m64 __m2) {
72
+ return (__m64)__builtin_ia32_pfcmpgt((__v2sf)__m1, (__v2sf)__m2);
73
+ }
74
+
75
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
76
+ _m_pfmax(__m64 __m1, __m64 __m2) {
77
+ return (__m64)__builtin_ia32_pfmax((__v2sf)__m1, (__v2sf)__m2);
78
+ }
79
+
80
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
81
+ _m_pfmin(__m64 __m1, __m64 __m2) {
82
+ return (__m64)__builtin_ia32_pfmin((__v2sf)__m1, (__v2sf)__m2);
83
+ }
84
+
85
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
86
+ _m_pfmul(__m64 __m1, __m64 __m2) {
87
+ return (__m64)__builtin_ia32_pfmul((__v2sf)__m1, (__v2sf)__m2);
88
+ }
89
+
90
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
91
+ _m_pfrcp(__m64 __m) {
92
+ return (__m64)__builtin_ia32_pfrcp((__v2sf)__m);
93
+ }
94
+
95
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
96
+ _m_pfrcpit1(__m64 __m1, __m64 __m2) {
97
+ return (__m64)__builtin_ia32_pfrcpit1((__v2sf)__m1, (__v2sf)__m2);
98
+ }
99
+
100
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
101
+ _m_pfrcpit2(__m64 __m1, __m64 __m2) {
102
+ return (__m64)__builtin_ia32_pfrcpit2((__v2sf)__m1, (__v2sf)__m2);
103
+ }
104
+
105
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
106
+ _m_pfrsqrt(__m64 __m) {
107
+ return (__m64)__builtin_ia32_pfrsqrt((__v2sf)__m);
108
+ }
109
+
110
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
111
+ _m_pfrsqrtit1(__m64 __m1, __m64 __m2) {
112
+ return (__m64)__builtin_ia32_pfrsqit1((__v2sf)__m1, (__v2sf)__m2);
113
+ }
114
+
115
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
116
+ _m_pfsub(__m64 __m1, __m64 __m2) {
117
+ return (__m64)__builtin_ia32_pfsub((__v2sf)__m1, (__v2sf)__m2);
118
+ }
119
+
120
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
121
+ _m_pfsubr(__m64 __m1, __m64 __m2) {
122
+ return (__m64)__builtin_ia32_pfsubr((__v2sf)__m1, (__v2sf)__m2);
123
+ }
124
+
125
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
126
+ _m_pi2fd(__m64 __m) {
127
+ return (__m64)__builtin_ia32_pi2fd((__v2si)__m);
128
+ }
129
+
130
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
131
+ _m_pmulhrw(__m64 __m1, __m64 __m2) {
132
+ return (__m64)__builtin_ia32_pmulhrw((__v4hi)__m1, (__v4hi)__m2);
133
+ }
134
+
135
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
136
+ _m_pf2iw(__m64 __m) {
137
+ return (__m64)__builtin_ia32_pf2iw((__v2sf)__m);
138
+ }
139
+
140
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
141
+ _m_pfnacc(__m64 __m1, __m64 __m2) {
142
+ return (__m64)__builtin_ia32_pfnacc((__v2sf)__m1, (__v2sf)__m2);
143
+ }
144
+
145
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
146
+ _m_pfpnacc(__m64 __m1, __m64 __m2) {
147
+ return (__m64)__builtin_ia32_pfpnacc((__v2sf)__m1, (__v2sf)__m2);
148
+ }
149
+
150
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
151
+ _m_pi2fw(__m64 __m) {
152
+ return (__m64)__builtin_ia32_pi2fw((__v2si)__m);
153
+ }
154
+
155
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
156
+ _m_pswapdsf(__m64 __m) {
157
+ return (__m64)__builtin_ia32_pswapdsf((__v2sf)__m);
158
+ }
159
+
160
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
161
+ _m_pswapdsi(__m64 __m) {
162
+ return (__m64)__builtin_ia32_pswapdsi((__v2si)__m);
163
+ }
164
+
165
+ #undef __DEFAULT_FN_ATTRS
166
+
167
+ #endif
@@ -0,0 +1,75 @@
1
+ /*===---- mm_malloc.h - Allocating and Freeing Aligned Memory Blocks -------===
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 __MM_MALLOC_H
25
+ #define __MM_MALLOC_H
26
+
27
+ #include <stdlib.h>
28
+
29
+ #ifdef _WIN32
30
+ #include <malloc.h>
31
+ #else
32
+ #ifndef __cplusplus
33
+ extern int posix_memalign(void **__memptr, size_t __alignment, size_t __size);
34
+ #else
35
+ // Some systems (e.g. those with GNU libc) declare posix_memalign with an
36
+ // exception specifier. Via an "egregious workaround" in
37
+ // Sema::CheckEquivalentExceptionSpec, Clang accepts the following as a valid
38
+ // redeclaration of glibc's declaration.
39
+ extern "C" int posix_memalign(void **__memptr, size_t __alignment, size_t __size);
40
+ #endif
41
+ #endif
42
+
43
+ #if !(defined(_WIN32) && defined(_mm_malloc))
44
+ static __inline__ void *__attribute__((__always_inline__, __nodebug__,
45
+ __malloc__))
46
+ _mm_malloc(size_t __size, size_t __align)
47
+ {
48
+ if (__align == 1) {
49
+ return malloc(__size);
50
+ }
51
+
52
+ if (!(__align & (__align - 1)) && __align < sizeof(void *))
53
+ __align = sizeof(void *);
54
+
55
+ void *__mallocedMemory;
56
+ #if defined(__MINGW32__)
57
+ __mallocedMemory = __mingw_aligned_malloc(__size, __align);
58
+ #elif defined(_WIN32)
59
+ __mallocedMemory = _aligned_malloc(__size, __align);
60
+ #else
61
+ if (posix_memalign(&__mallocedMemory, __align, __size))
62
+ return 0;
63
+ #endif
64
+
65
+ return __mallocedMemory;
66
+ }
67
+
68
+ static __inline__ void __attribute__((__always_inline__, __nodebug__))
69
+ _mm_free(void *__p)
70
+ {
71
+ free(__p);
72
+ }
73
+ #endif
74
+
75
+ #endif /* __MM_MALLOC_H */
@@ -0,0 +1,507 @@
1
+ /*===---- mmintrin.h - MMX 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 __MMINTRIN_H
25
+ #define __MMINTRIN_H
26
+
27
+ #ifndef __MMX__
28
+ #error "MMX instruction set not enabled"
29
+ #else
30
+
31
+ typedef long long __m64 __attribute__((__vector_size__(8)));
32
+
33
+ typedef int __v2si __attribute__((__vector_size__(8)));
34
+ typedef short __v4hi __attribute__((__vector_size__(8)));
35
+ typedef char __v8qi __attribute__((__vector_size__(8)));
36
+
37
+ /* Define the default attributes for the functions in this file. */
38
+ #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))
39
+
40
+ static __inline__ void __DEFAULT_FN_ATTRS
41
+ _mm_empty(void)
42
+ {
43
+ __builtin_ia32_emms();
44
+ }
45
+
46
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
47
+ _mm_cvtsi32_si64(int __i)
48
+ {
49
+ return (__m64)__builtin_ia32_vec_init_v2si(__i, 0);
50
+ }
51
+
52
+ static __inline__ int __DEFAULT_FN_ATTRS
53
+ _mm_cvtsi64_si32(__m64 __m)
54
+ {
55
+ return __builtin_ia32_vec_ext_v2si((__v2si)__m, 0);
56
+ }
57
+
58
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
59
+ _mm_cvtsi64_m64(long long __i)
60
+ {
61
+ return (__m64)__i;
62
+ }
63
+
64
+ static __inline__ long long __DEFAULT_FN_ATTRS
65
+ _mm_cvtm64_si64(__m64 __m)
66
+ {
67
+ return (long long)__m;
68
+ }
69
+
70
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
71
+ _mm_packs_pi16(__m64 __m1, __m64 __m2)
72
+ {
73
+ return (__m64)__builtin_ia32_packsswb((__v4hi)__m1, (__v4hi)__m2);
74
+ }
75
+
76
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
77
+ _mm_packs_pi32(__m64 __m1, __m64 __m2)
78
+ {
79
+ return (__m64)__builtin_ia32_packssdw((__v2si)__m1, (__v2si)__m2);
80
+ }
81
+
82
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
83
+ _mm_packs_pu16(__m64 __m1, __m64 __m2)
84
+ {
85
+ return (__m64)__builtin_ia32_packuswb((__v4hi)__m1, (__v4hi)__m2);
86
+ }
87
+
88
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
89
+ _mm_unpackhi_pi8(__m64 __m1, __m64 __m2)
90
+ {
91
+ return (__m64)__builtin_ia32_punpckhbw((__v8qi)__m1, (__v8qi)__m2);
92
+ }
93
+
94
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
95
+ _mm_unpackhi_pi16(__m64 __m1, __m64 __m2)
96
+ {
97
+ return (__m64)__builtin_ia32_punpckhwd((__v4hi)__m1, (__v4hi)__m2);
98
+ }
99
+
100
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
101
+ _mm_unpackhi_pi32(__m64 __m1, __m64 __m2)
102
+ {
103
+ return (__m64)__builtin_ia32_punpckhdq((__v2si)__m1, (__v2si)__m2);
104
+ }
105
+
106
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
107
+ _mm_unpacklo_pi8(__m64 __m1, __m64 __m2)
108
+ {
109
+ return (__m64)__builtin_ia32_punpcklbw((__v8qi)__m1, (__v8qi)__m2);
110
+ }
111
+
112
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
113
+ _mm_unpacklo_pi16(__m64 __m1, __m64 __m2)
114
+ {
115
+ return (__m64)__builtin_ia32_punpcklwd((__v4hi)__m1, (__v4hi)__m2);
116
+ }
117
+
118
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
119
+ _mm_unpacklo_pi32(__m64 __m1, __m64 __m2)
120
+ {
121
+ return (__m64)__builtin_ia32_punpckldq((__v2si)__m1, (__v2si)__m2);
122
+ }
123
+
124
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
125
+ _mm_add_pi8(__m64 __m1, __m64 __m2)
126
+ {
127
+ return (__m64)__builtin_ia32_paddb((__v8qi)__m1, (__v8qi)__m2);
128
+ }
129
+
130
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
131
+ _mm_add_pi16(__m64 __m1, __m64 __m2)
132
+ {
133
+ return (__m64)__builtin_ia32_paddw((__v4hi)__m1, (__v4hi)__m2);
134
+ }
135
+
136
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
137
+ _mm_add_pi32(__m64 __m1, __m64 __m2)
138
+ {
139
+ return (__m64)__builtin_ia32_paddd((__v2si)__m1, (__v2si)__m2);
140
+ }
141
+
142
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
143
+ _mm_adds_pi8(__m64 __m1, __m64 __m2)
144
+ {
145
+ return (__m64)__builtin_ia32_paddsb((__v8qi)__m1, (__v8qi)__m2);
146
+ }
147
+
148
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
149
+ _mm_adds_pi16(__m64 __m1, __m64 __m2)
150
+ {
151
+ return (__m64)__builtin_ia32_paddsw((__v4hi)__m1, (__v4hi)__m2);
152
+ }
153
+
154
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
155
+ _mm_adds_pu8(__m64 __m1, __m64 __m2)
156
+ {
157
+ return (__m64)__builtin_ia32_paddusb((__v8qi)__m1, (__v8qi)__m2);
158
+ }
159
+
160
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
161
+ _mm_adds_pu16(__m64 __m1, __m64 __m2)
162
+ {
163
+ return (__m64)__builtin_ia32_paddusw((__v4hi)__m1, (__v4hi)__m2);
164
+ }
165
+
166
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
167
+ _mm_sub_pi8(__m64 __m1, __m64 __m2)
168
+ {
169
+ return (__m64)__builtin_ia32_psubb((__v8qi)__m1, (__v8qi)__m2);
170
+ }
171
+
172
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
173
+ _mm_sub_pi16(__m64 __m1, __m64 __m2)
174
+ {
175
+ return (__m64)__builtin_ia32_psubw((__v4hi)__m1, (__v4hi)__m2);
176
+ }
177
+
178
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
179
+ _mm_sub_pi32(__m64 __m1, __m64 __m2)
180
+ {
181
+ return (__m64)__builtin_ia32_psubd((__v2si)__m1, (__v2si)__m2);
182
+ }
183
+
184
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
185
+ _mm_subs_pi8(__m64 __m1, __m64 __m2)
186
+ {
187
+ return (__m64)__builtin_ia32_psubsb((__v8qi)__m1, (__v8qi)__m2);
188
+ }
189
+
190
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
191
+ _mm_subs_pi16(__m64 __m1, __m64 __m2)
192
+ {
193
+ return (__m64)__builtin_ia32_psubsw((__v4hi)__m1, (__v4hi)__m2);
194
+ }
195
+
196
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
197
+ _mm_subs_pu8(__m64 __m1, __m64 __m2)
198
+ {
199
+ return (__m64)__builtin_ia32_psubusb((__v8qi)__m1, (__v8qi)__m2);
200
+ }
201
+
202
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
203
+ _mm_subs_pu16(__m64 __m1, __m64 __m2)
204
+ {
205
+ return (__m64)__builtin_ia32_psubusw((__v4hi)__m1, (__v4hi)__m2);
206
+ }
207
+
208
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
209
+ _mm_madd_pi16(__m64 __m1, __m64 __m2)
210
+ {
211
+ return (__m64)__builtin_ia32_pmaddwd((__v4hi)__m1, (__v4hi)__m2);
212
+ }
213
+
214
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
215
+ _mm_mulhi_pi16(__m64 __m1, __m64 __m2)
216
+ {
217
+ return (__m64)__builtin_ia32_pmulhw((__v4hi)__m1, (__v4hi)__m2);
218
+ }
219
+
220
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
221
+ _mm_mullo_pi16(__m64 __m1, __m64 __m2)
222
+ {
223
+ return (__m64)__builtin_ia32_pmullw((__v4hi)__m1, (__v4hi)__m2);
224
+ }
225
+
226
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
227
+ _mm_sll_pi16(__m64 __m, __m64 __count)
228
+ {
229
+ return (__m64)__builtin_ia32_psllw((__v4hi)__m, __count);
230
+ }
231
+
232
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
233
+ _mm_slli_pi16(__m64 __m, int __count)
234
+ {
235
+ return (__m64)__builtin_ia32_psllwi((__v4hi)__m, __count);
236
+ }
237
+
238
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
239
+ _mm_sll_pi32(__m64 __m, __m64 __count)
240
+ {
241
+ return (__m64)__builtin_ia32_pslld((__v2si)__m, __count);
242
+ }
243
+
244
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
245
+ _mm_slli_pi32(__m64 __m, int __count)
246
+ {
247
+ return (__m64)__builtin_ia32_pslldi((__v2si)__m, __count);
248
+ }
249
+
250
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
251
+ _mm_sll_si64(__m64 __m, __m64 __count)
252
+ {
253
+ return (__m64)__builtin_ia32_psllq(__m, __count);
254
+ }
255
+
256
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
257
+ _mm_slli_si64(__m64 __m, int __count)
258
+ {
259
+ return (__m64)__builtin_ia32_psllqi(__m, __count);
260
+ }
261
+
262
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
263
+ _mm_sra_pi16(__m64 __m, __m64 __count)
264
+ {
265
+ return (__m64)__builtin_ia32_psraw((__v4hi)__m, __count);
266
+ }
267
+
268
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
269
+ _mm_srai_pi16(__m64 __m, int __count)
270
+ {
271
+ return (__m64)__builtin_ia32_psrawi((__v4hi)__m, __count);
272
+ }
273
+
274
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
275
+ _mm_sra_pi32(__m64 __m, __m64 __count)
276
+ {
277
+ return (__m64)__builtin_ia32_psrad((__v2si)__m, __count);
278
+ }
279
+
280
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
281
+ _mm_srai_pi32(__m64 __m, int __count)
282
+ {
283
+ return (__m64)__builtin_ia32_psradi((__v2si)__m, __count);
284
+ }
285
+
286
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
287
+ _mm_srl_pi16(__m64 __m, __m64 __count)
288
+ {
289
+ return (__m64)__builtin_ia32_psrlw((__v4hi)__m, __count);
290
+ }
291
+
292
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
293
+ _mm_srli_pi16(__m64 __m, int __count)
294
+ {
295
+ return (__m64)__builtin_ia32_psrlwi((__v4hi)__m, __count);
296
+ }
297
+
298
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
299
+ _mm_srl_pi32(__m64 __m, __m64 __count)
300
+ {
301
+ return (__m64)__builtin_ia32_psrld((__v2si)__m, __count);
302
+ }
303
+
304
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
305
+ _mm_srli_pi32(__m64 __m, int __count)
306
+ {
307
+ return (__m64)__builtin_ia32_psrldi((__v2si)__m, __count);
308
+ }
309
+
310
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
311
+ _mm_srl_si64(__m64 __m, __m64 __count)
312
+ {
313
+ return (__m64)__builtin_ia32_psrlq(__m, __count);
314
+ }
315
+
316
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
317
+ _mm_srli_si64(__m64 __m, int __count)
318
+ {
319
+ return (__m64)__builtin_ia32_psrlqi(__m, __count);
320
+ }
321
+
322
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
323
+ _mm_and_si64(__m64 __m1, __m64 __m2)
324
+ {
325
+ return __builtin_ia32_pand(__m1, __m2);
326
+ }
327
+
328
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
329
+ _mm_andnot_si64(__m64 __m1, __m64 __m2)
330
+ {
331
+ return __builtin_ia32_pandn(__m1, __m2);
332
+ }
333
+
334
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
335
+ _mm_or_si64(__m64 __m1, __m64 __m2)
336
+ {
337
+ return __builtin_ia32_por(__m1, __m2);
338
+ }
339
+
340
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
341
+ _mm_xor_si64(__m64 __m1, __m64 __m2)
342
+ {
343
+ return __builtin_ia32_pxor(__m1, __m2);
344
+ }
345
+
346
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
347
+ _mm_cmpeq_pi8(__m64 __m1, __m64 __m2)
348
+ {
349
+ return (__m64)__builtin_ia32_pcmpeqb((__v8qi)__m1, (__v8qi)__m2);
350
+ }
351
+
352
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
353
+ _mm_cmpeq_pi16(__m64 __m1, __m64 __m2)
354
+ {
355
+ return (__m64)__builtin_ia32_pcmpeqw((__v4hi)__m1, (__v4hi)__m2);
356
+ }
357
+
358
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
359
+ _mm_cmpeq_pi32(__m64 __m1, __m64 __m2)
360
+ {
361
+ return (__m64)__builtin_ia32_pcmpeqd((__v2si)__m1, (__v2si)__m2);
362
+ }
363
+
364
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
365
+ _mm_cmpgt_pi8(__m64 __m1, __m64 __m2)
366
+ {
367
+ return (__m64)__builtin_ia32_pcmpgtb((__v8qi)__m1, (__v8qi)__m2);
368
+ }
369
+
370
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
371
+ _mm_cmpgt_pi16(__m64 __m1, __m64 __m2)
372
+ {
373
+ return (__m64)__builtin_ia32_pcmpgtw((__v4hi)__m1, (__v4hi)__m2);
374
+ }
375
+
376
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
377
+ _mm_cmpgt_pi32(__m64 __m1, __m64 __m2)
378
+ {
379
+ return (__m64)__builtin_ia32_pcmpgtd((__v2si)__m1, (__v2si)__m2);
380
+ }
381
+
382
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
383
+ _mm_setzero_si64(void)
384
+ {
385
+ return (__m64){ 0LL };
386
+ }
387
+
388
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
389
+ _mm_set_pi32(int __i1, int __i0)
390
+ {
391
+ return (__m64)__builtin_ia32_vec_init_v2si(__i0, __i1);
392
+ }
393
+
394
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
395
+ _mm_set_pi16(short __s3, short __s2, short __s1, short __s0)
396
+ {
397
+ return (__m64)__builtin_ia32_vec_init_v4hi(__s0, __s1, __s2, __s3);
398
+ }
399
+
400
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
401
+ _mm_set_pi8(char __b7, char __b6, char __b5, char __b4, char __b3, char __b2,
402
+ char __b1, char __b0)
403
+ {
404
+ return (__m64)__builtin_ia32_vec_init_v8qi(__b0, __b1, __b2, __b3,
405
+ __b4, __b5, __b6, __b7);
406
+ }
407
+
408
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
409
+ _mm_set1_pi32(int __i)
410
+ {
411
+ return _mm_set_pi32(__i, __i);
412
+ }
413
+
414
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
415
+ _mm_set1_pi16(short __w)
416
+ {
417
+ return _mm_set_pi16(__w, __w, __w, __w);
418
+ }
419
+
420
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
421
+ _mm_set1_pi8(char __b)
422
+ {
423
+ return _mm_set_pi8(__b, __b, __b, __b, __b, __b, __b, __b);
424
+ }
425
+
426
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
427
+ _mm_setr_pi32(int __i0, int __i1)
428
+ {
429
+ return _mm_set_pi32(__i1, __i0);
430
+ }
431
+
432
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
433
+ _mm_setr_pi16(short __w0, short __w1, short __w2, short __w3)
434
+ {
435
+ return _mm_set_pi16(__w3, __w2, __w1, __w0);
436
+ }
437
+
438
+ static __inline__ __m64 __DEFAULT_FN_ATTRS
439
+ _mm_setr_pi8(char __b0, char __b1, char __b2, char __b3, char __b4, char __b5,
440
+ char __b6, char __b7)
441
+ {
442
+ return _mm_set_pi8(__b7, __b6, __b5, __b4, __b3, __b2, __b1, __b0);
443
+ }
444
+
445
+ #undef __DEFAULT_FN_ATTRS
446
+
447
+ /* Aliases for compatibility. */
448
+ #define _m_empty _mm_empty
449
+ #define _m_from_int _mm_cvtsi32_si64
450
+ #define _m_to_int _mm_cvtsi64_si32
451
+ #define _m_packsswb _mm_packs_pi16
452
+ #define _m_packssdw _mm_packs_pi32
453
+ #define _m_packuswb _mm_packs_pu16
454
+ #define _m_punpckhbw _mm_unpackhi_pi8
455
+ #define _m_punpckhwd _mm_unpackhi_pi16
456
+ #define _m_punpckhdq _mm_unpackhi_pi32
457
+ #define _m_punpcklbw _mm_unpacklo_pi8
458
+ #define _m_punpcklwd _mm_unpacklo_pi16
459
+ #define _m_punpckldq _mm_unpacklo_pi32
460
+ #define _m_paddb _mm_add_pi8
461
+ #define _m_paddw _mm_add_pi16
462
+ #define _m_paddd _mm_add_pi32
463
+ #define _m_paddsb _mm_adds_pi8
464
+ #define _m_paddsw _mm_adds_pi16
465
+ #define _m_paddusb _mm_adds_pu8
466
+ #define _m_paddusw _mm_adds_pu16
467
+ #define _m_psubb _mm_sub_pi8
468
+ #define _m_psubw _mm_sub_pi16
469
+ #define _m_psubd _mm_sub_pi32
470
+ #define _m_psubsb _mm_subs_pi8
471
+ #define _m_psubsw _mm_subs_pi16
472
+ #define _m_psubusb _mm_subs_pu8
473
+ #define _m_psubusw _mm_subs_pu16
474
+ #define _m_pmaddwd _mm_madd_pi16
475
+ #define _m_pmulhw _mm_mulhi_pi16
476
+ #define _m_pmullw _mm_mullo_pi16
477
+ #define _m_psllw _mm_sll_pi16
478
+ #define _m_psllwi _mm_slli_pi16
479
+ #define _m_pslld _mm_sll_pi32
480
+ #define _m_pslldi _mm_slli_pi32
481
+ #define _m_psllq _mm_sll_si64
482
+ #define _m_psllqi _mm_slli_si64
483
+ #define _m_psraw _mm_sra_pi16
484
+ #define _m_psrawi _mm_srai_pi16
485
+ #define _m_psrad _mm_sra_pi32
486
+ #define _m_psradi _mm_srai_pi32
487
+ #define _m_psrlw _mm_srl_pi16
488
+ #define _m_psrlwi _mm_srli_pi16
489
+ #define _m_psrld _mm_srl_pi32
490
+ #define _m_psrldi _mm_srli_pi32
491
+ #define _m_psrlq _mm_srl_si64
492
+ #define _m_psrlqi _mm_srli_si64
493
+ #define _m_pand _mm_and_si64
494
+ #define _m_pandn _mm_andnot_si64
495
+ #define _m_por _mm_or_si64
496
+ #define _m_pxor _mm_xor_si64
497
+ #define _m_pcmpeqb _mm_cmpeq_pi8
498
+ #define _m_pcmpeqw _mm_cmpeq_pi16
499
+ #define _m_pcmpeqd _mm_cmpeq_pi32
500
+ #define _m_pcmpgtb _mm_cmpgt_pi8
501
+ #define _m_pcmpgtw _mm_cmpgt_pi16
502
+ #define _m_pcmpgtd _mm_cmpgt_pi32
503
+
504
+ #endif /* __MMX__ */
505
+
506
+ #endif /* __MMINTRIN_H */
507
+