xcodebuild-helper 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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
+