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,131 @@
1
+ /*===------------- avx512cdintrin.h - AVX512CD intrinsics ------------------===
2
+ *
3
+ *
4
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ * of this software and associated documentation files (the "Software"), to deal
6
+ * in the Software without restriction, including without limitation the rights
7
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ * copies of the Software, and to permit persons to whom the Software is
9
+ * furnished to do so, subject to the following conditions:
10
+ *
11
+ * The above copyright notice and this permission notice shall be included in
12
+ * all copies or substantial portions of the Software.
13
+ *
14
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20
+ * THE SOFTWARE.
21
+ *
22
+ *===-----------------------------------------------------------------------===
23
+ */
24
+ #ifndef __IMMINTRIN_H
25
+ #error "Never use <avx512cdintrin.h> directly; include <immintrin.h> instead."
26
+ #endif
27
+
28
+ #ifndef __AVX512CDINTRIN_H
29
+ #define __AVX512CDINTRIN_H
30
+
31
+ /* Define the default attributes for the functions in this file. */
32
+ #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512cd")))
33
+
34
+ static __inline__ __m512i __DEFAULT_FN_ATTRS
35
+ _mm512_conflict_epi64 (__m512i __A)
36
+ {
37
+ return (__m512i) __builtin_ia32_vpconflictdi_512_mask ((__v8di) __A,
38
+ (__v8di) _mm512_setzero_si512 (),
39
+ (__mmask8) -1);
40
+ }
41
+
42
+ static __inline__ __m512i __DEFAULT_FN_ATTRS
43
+ _mm512_mask_conflict_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
44
+ {
45
+ return (__m512i) __builtin_ia32_vpconflictdi_512_mask ((__v8di) __A,
46
+ (__v8di) __W,
47
+ (__mmask8) __U);
48
+ }
49
+
50
+ static __inline__ __m512i __DEFAULT_FN_ATTRS
51
+ _mm512_maskz_conflict_epi64 (__mmask8 __U, __m512i __A)
52
+ {
53
+ return (__m512i) __builtin_ia32_vpconflictdi_512_mask ((__v8di) __A,
54
+ (__v8di) _mm512_setzero_si512 (),
55
+ (__mmask8) __U);
56
+ }
57
+
58
+ static __inline__ __m512i __DEFAULT_FN_ATTRS
59
+ _mm512_conflict_epi32 (__m512i __A)
60
+ {
61
+ return (__m512i) __builtin_ia32_vpconflictsi_512_mask ((__v16si) __A,
62
+ (__v16si) _mm512_setzero_si512 (),
63
+ (__mmask16) -1);
64
+ }
65
+
66
+ static __inline__ __m512i __DEFAULT_FN_ATTRS
67
+ _mm512_mask_conflict_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
68
+ {
69
+ return (__m512i) __builtin_ia32_vpconflictsi_512_mask ((__v16si) __A,
70
+ (__v16si) __W,
71
+ (__mmask16) __U);
72
+ }
73
+
74
+ static __inline__ __m512i __DEFAULT_FN_ATTRS
75
+ _mm512_maskz_conflict_epi32 (__mmask16 __U, __m512i __A)
76
+ {
77
+ return (__m512i) __builtin_ia32_vpconflictsi_512_mask ((__v16si) __A,
78
+ (__v16si) _mm512_setzero_si512 (),
79
+ (__mmask16) __U);
80
+ }
81
+
82
+ static __inline__ __m512i __DEFAULT_FN_ATTRS
83
+ _mm512_lzcnt_epi32 (__m512i __A)
84
+ {
85
+ return (__m512i) __builtin_ia32_vplzcntd_512_mask ((__v16si) __A,
86
+ (__v16si) _mm512_setzero_si512 (),
87
+ (__mmask16) -1);
88
+ }
89
+
90
+ static __inline__ __m512i __DEFAULT_FN_ATTRS
91
+ _mm512_mask_lzcnt_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
92
+ {
93
+ return (__m512i) __builtin_ia32_vplzcntd_512_mask ((__v16si) __A,
94
+ (__v16si) __W,
95
+ (__mmask16) __U);
96
+ }
97
+
98
+ static __inline__ __m512i __DEFAULT_FN_ATTRS
99
+ _mm512_maskz_lzcnt_epi32 (__mmask16 __U, __m512i __A)
100
+ {
101
+ return (__m512i) __builtin_ia32_vplzcntd_512_mask ((__v16si) __A,
102
+ (__v16si) _mm512_setzero_si512 (),
103
+ (__mmask16) __U);
104
+ }
105
+
106
+ static __inline__ __m512i __DEFAULT_FN_ATTRS
107
+ _mm512_lzcnt_epi64 (__m512i __A)
108
+ {
109
+ return (__m512i) __builtin_ia32_vplzcntq_512_mask ((__v8di) __A,
110
+ (__v8di) _mm512_setzero_si512 (),
111
+ (__mmask8) -1);
112
+ }
113
+
114
+ static __inline__ __m512i __DEFAULT_FN_ATTRS
115
+ _mm512_mask_lzcnt_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
116
+ {
117
+ return (__m512i) __builtin_ia32_vplzcntq_512_mask ((__v8di) __A,
118
+ (__v8di) __W,
119
+ (__mmask8) __U);
120
+ }
121
+
122
+ static __inline__ __m512i __DEFAULT_FN_ATTRS
123
+ _mm512_maskz_lzcnt_epi64 (__mmask8 __U, __m512i __A)
124
+ {
125
+ return (__m512i) __builtin_ia32_vplzcntq_512_mask ((__v8di) __A,
126
+ (__v8di) _mm512_setzero_si512 (),
127
+ (__mmask8) __U);
128
+ }
129
+ #undef __DEFAULT_FN_ATTRS
130
+
131
+ #endif
@@ -0,0 +1,242 @@
1
+ /*===---- avx512dqintrin.h - AVX512DQ 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 __IMMINTRIN_H
25
+ #error "Never use <avx512dqintrin.h> directly; include <immintrin.h> instead."
26
+ #endif
27
+
28
+ #ifndef __AVX512DQINTRIN_H
29
+ #define __AVX512DQINTRIN_H
30
+
31
+ /* Define the default attributes for the functions in this file. */
32
+ #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))
33
+
34
+ static __inline__ __m512i __DEFAULT_FN_ATTRS
35
+ _mm512_mullo_epi64 (__m512i __A, __m512i __B) {
36
+ return (__m512i) ((__v8di) __A * (__v8di) __B);
37
+ }
38
+
39
+ static __inline__ __m512i __DEFAULT_FN_ATTRS
40
+ _mm512_mask_mullo_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) {
41
+ return (__m512i) __builtin_ia32_pmullq512_mask ((__v8di) __A,
42
+ (__v8di) __B,
43
+ (__v8di) __W,
44
+ (__mmask8) __U);
45
+ }
46
+
47
+ static __inline__ __m512i __DEFAULT_FN_ATTRS
48
+ _mm512_maskz_mullo_epi64 (__mmask8 __U, __m512i __A, __m512i __B) {
49
+ return (__m512i) __builtin_ia32_pmullq512_mask ((__v8di) __A,
50
+ (__v8di) __B,
51
+ (__v8di)
52
+ _mm512_setzero_si512 (),
53
+ (__mmask8) __U);
54
+ }
55
+
56
+ static __inline__ __m512d __DEFAULT_FN_ATTRS
57
+ _mm512_xor_pd (__m512d __A, __m512d __B) {
58
+ return (__m512d) ((__v8di) __A ^ (__v8di) __B);
59
+ }
60
+
61
+ static __inline__ __m512d __DEFAULT_FN_ATTRS
62
+ _mm512_mask_xor_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
63
+ return (__m512d) __builtin_ia32_xorpd512_mask ((__v8df) __A,
64
+ (__v8df) __B,
65
+ (__v8df) __W,
66
+ (__mmask8) __U);
67
+ }
68
+
69
+ static __inline__ __m512d __DEFAULT_FN_ATTRS
70
+ _mm512_maskz_xor_pd (__mmask8 __U, __m512d __A, __m512d __B) {
71
+ return (__m512d) __builtin_ia32_xorpd512_mask ((__v8df) __A,
72
+ (__v8df) __B,
73
+ (__v8df)
74
+ _mm512_setzero_pd (),
75
+ (__mmask8) __U);
76
+ }
77
+
78
+ static __inline__ __m512 __DEFAULT_FN_ATTRS
79
+ _mm512_xor_ps (__m512 __A, __m512 __B) {
80
+ return (__m512) ((__v16si) __A ^ (__v16si) __B);
81
+ }
82
+
83
+ static __inline__ __m512 __DEFAULT_FN_ATTRS
84
+ _mm512_mask_xor_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
85
+ return (__m512) __builtin_ia32_xorps512_mask ((__v16sf) __A,
86
+ (__v16sf) __B,
87
+ (__v16sf) __W,
88
+ (__mmask16) __U);
89
+ }
90
+
91
+ static __inline__ __m512 __DEFAULT_FN_ATTRS
92
+ _mm512_maskz_xor_ps (__mmask16 __U, __m512 __A, __m512 __B) {
93
+ return (__m512) __builtin_ia32_xorps512_mask ((__v16sf) __A,
94
+ (__v16sf) __B,
95
+ (__v16sf)
96
+ _mm512_setzero_ps (),
97
+ (__mmask16) __U);
98
+ }
99
+
100
+ static __inline__ __m512d __DEFAULT_FN_ATTRS
101
+ _mm512_or_pd (__m512d __A, __m512d __B) {
102
+ return (__m512d) ((__v8di) __A | (__v8di) __B);
103
+ }
104
+
105
+ static __inline__ __m512d __DEFAULT_FN_ATTRS
106
+ _mm512_mask_or_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
107
+ return (__m512d) __builtin_ia32_orpd512_mask ((__v8df) __A,
108
+ (__v8df) __B,
109
+ (__v8df) __W,
110
+ (__mmask8) __U);
111
+ }
112
+
113
+ static __inline__ __m512d __DEFAULT_FN_ATTRS
114
+ _mm512_maskz_or_pd (__mmask8 __U, __m512d __A, __m512d __B) {
115
+ return (__m512d) __builtin_ia32_orpd512_mask ((__v8df) __A,
116
+ (__v8df) __B,
117
+ (__v8df)
118
+ _mm512_setzero_pd (),
119
+ (__mmask8) __U);
120
+ }
121
+
122
+ static __inline__ __m512 __DEFAULT_FN_ATTRS
123
+ _mm512_or_ps (__m512 __A, __m512 __B) {
124
+ return (__m512) ((__v16si) __A | (__v16si) __B);
125
+ }
126
+
127
+ static __inline__ __m512 __DEFAULT_FN_ATTRS
128
+ _mm512_mask_or_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
129
+ return (__m512) __builtin_ia32_orps512_mask ((__v16sf) __A,
130
+ (__v16sf) __B,
131
+ (__v16sf) __W,
132
+ (__mmask16) __U);
133
+ }
134
+
135
+ static __inline__ __m512 __DEFAULT_FN_ATTRS
136
+ _mm512_maskz_or_ps (__mmask16 __U, __m512 __A, __m512 __B) {
137
+ return (__m512) __builtin_ia32_orps512_mask ((__v16sf) __A,
138
+ (__v16sf) __B,
139
+ (__v16sf)
140
+ _mm512_setzero_ps (),
141
+ (__mmask16) __U);
142
+ }
143
+
144
+ static __inline__ __m512d __DEFAULT_FN_ATTRS
145
+ _mm512_and_pd (__m512d __A, __m512d __B) {
146
+ return (__m512d) ((__v8di) __A & (__v8di) __B);
147
+ }
148
+
149
+ static __inline__ __m512d __DEFAULT_FN_ATTRS
150
+ _mm512_mask_and_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
151
+ return (__m512d) __builtin_ia32_andpd512_mask ((__v8df) __A,
152
+ (__v8df) __B,
153
+ (__v8df) __W,
154
+ (__mmask8) __U);
155
+ }
156
+
157
+ static __inline__ __m512d __DEFAULT_FN_ATTRS
158
+ _mm512_maskz_and_pd (__mmask8 __U, __m512d __A, __m512d __B) {
159
+ return (__m512d) __builtin_ia32_andpd512_mask ((__v8df) __A,
160
+ (__v8df) __B,
161
+ (__v8df)
162
+ _mm512_setzero_pd (),
163
+ (__mmask8) __U);
164
+ }
165
+
166
+ static __inline__ __m512 __DEFAULT_FN_ATTRS
167
+ _mm512_and_ps (__m512 __A, __m512 __B) {
168
+ return (__m512) ((__v16si) __A & (__v16si) __B);
169
+ }
170
+
171
+ static __inline__ __m512 __DEFAULT_FN_ATTRS
172
+ _mm512_mask_and_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
173
+ return (__m512) __builtin_ia32_andps512_mask ((__v16sf) __A,
174
+ (__v16sf) __B,
175
+ (__v16sf) __W,
176
+ (__mmask16) __U);
177
+ }
178
+
179
+ static __inline__ __m512 __DEFAULT_FN_ATTRS
180
+ _mm512_maskz_and_ps (__mmask16 __U, __m512 __A, __m512 __B) {
181
+ return (__m512) __builtin_ia32_andps512_mask ((__v16sf) __A,
182
+ (__v16sf) __B,
183
+ (__v16sf)
184
+ _mm512_setzero_ps (),
185
+ (__mmask16) __U);
186
+ }
187
+
188
+ static __inline__ __m512d __DEFAULT_FN_ATTRS
189
+ _mm512_andnot_pd (__m512d __A, __m512d __B) {
190
+ return (__m512d) __builtin_ia32_andnpd512_mask ((__v8df) __A,
191
+ (__v8df) __B,
192
+ (__v8df)
193
+ _mm512_setzero_pd (),
194
+ (__mmask8) -1);
195
+ }
196
+
197
+ static __inline__ __m512d __DEFAULT_FN_ATTRS
198
+ _mm512_mask_andnot_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
199
+ return (__m512d) __builtin_ia32_andnpd512_mask ((__v8df) __A,
200
+ (__v8df) __B,
201
+ (__v8df) __W,
202
+ (__mmask8) __U);
203
+ }
204
+
205
+ static __inline__ __m512d __DEFAULT_FN_ATTRS
206
+ _mm512_maskz_andnot_pd (__mmask8 __U, __m512d __A, __m512d __B) {
207
+ return (__m512d) __builtin_ia32_andnpd512_mask ((__v8df) __A,
208
+ (__v8df) __B,
209
+ (__v8df)
210
+ _mm512_setzero_pd (),
211
+ (__mmask8) __U);
212
+ }
213
+
214
+ static __inline__ __m512 __DEFAULT_FN_ATTRS
215
+ _mm512_andnot_ps (__m512 __A, __m512 __B) {
216
+ return (__m512) __builtin_ia32_andnps512_mask ((__v16sf) __A,
217
+ (__v16sf) __B,
218
+ (__v16sf)
219
+ _mm512_setzero_ps (),
220
+ (__mmask16) -1);
221
+ }
222
+
223
+ static __inline__ __m512 __DEFAULT_FN_ATTRS
224
+ _mm512_mask_andnot_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
225
+ return (__m512) __builtin_ia32_andnps512_mask ((__v16sf) __A,
226
+ (__v16sf) __B,
227
+ (__v16sf) __W,
228
+ (__mmask16) __U);
229
+ }
230
+
231
+ static __inline__ __m512 __DEFAULT_FN_ATTRS
232
+ _mm512_maskz_andnot_ps (__mmask16 __U, __m512 __A, __m512 __B) {
233
+ return (__m512) __builtin_ia32_andnps512_mask ((__v16sf) __A,
234
+ (__v16sf) __B,
235
+ (__v16sf)
236
+ _mm512_setzero_ps (),
237
+ (__mmask16) __U);
238
+ }
239
+
240
+ #undef __DEFAULT_FN_ATTRS
241
+
242
+ #endif
@@ -0,0 +1,285 @@
1
+ /*===---- avx512fintrin.h - AVX2 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
+ #ifndef __IMMINTRIN_H
24
+ #error "Never use <avx512erintrin.h> directly; include <immintrin.h> instead."
25
+ #endif
26
+
27
+ #ifndef __AVX512ERINTRIN_H
28
+ #define __AVX512ERINTRIN_H
29
+
30
+ // exp2a23
31
+ #define _mm512_exp2a23_round_pd(A, R) __extension__ ({ \
32
+ (__m512d)__builtin_ia32_exp2pd_mask((__v8df)(__m512d)(A), \
33
+ (__v8df)_mm512_setzero_pd(), \
34
+ (__mmask8)-1, (R)); })
35
+
36
+ #define _mm512_mask_exp2a23_round_pd(S, M, A, R) __extension__ ({ \
37
+ (__m512d)__builtin_ia32_exp2pd_mask((__v8df)(__m512d)(A), \
38
+ (__v8df)(__m512d)(S), \
39
+ (__mmask8)(M), (R)); })
40
+
41
+ #define _mm512_maskz_exp2a23_round_pd(M, A, R) __extension__ ({ \
42
+ (__m512d)__builtin_ia32_exp2pd_mask((__v8df)(__m512d)(A), \
43
+ (__v8df)_mm512_setzero_pd(), \
44
+ (__mmask8)(M), (R)); })
45
+
46
+ #define _mm512_exp2a23_pd(A) \
47
+ _mm512_exp2a23_round_pd((A), _MM_FROUND_CUR_DIRECTION)
48
+
49
+ #define _mm512_mask_exp2a23_pd(S, M, A) \
50
+ _mm512_mask_exp2a23_round_pd((S), (M), (A), _MM_FROUND_CUR_DIRECTION)
51
+
52
+ #define _mm512_maskz_exp2a23_pd(M, A) \
53
+ _mm512_maskz_exp2a23_round_pd((M), (A), _MM_FROUND_CUR_DIRECTION)
54
+
55
+ #define _mm512_exp2a23_round_ps(A, R) __extension__ ({ \
56
+ (__m512)__builtin_ia32_exp2ps_mask((__v16sf)(__m512)(A), \
57
+ (__v16sf)_mm512_setzero_ps(), \
58
+ (__mmask8)-1, (R)); })
59
+
60
+ #define _mm512_mask_exp2a23_round_ps(S, M, A, R) __extension__ ({ \
61
+ (__m512)__builtin_ia32_exp2ps_mask((__v16sf)(__m512)(A), \
62
+ (__v16sf)(__m512)(S), \
63
+ (__mmask8)(M), (R)); })
64
+
65
+ #define _mm512_maskz_exp2a23_round_ps(M, A, R) __extension__ ({ \
66
+ (__m512)__builtin_ia32_exp2ps_mask((__v16sf)(__m512)(A), \
67
+ (__v16sf)_mm512_setzero_ps(), \
68
+ (__mmask8)(M), (R)); })
69
+
70
+ #define _mm512_exp2a23_ps(A) \
71
+ _mm512_exp2a23_round_ps((A), _MM_FROUND_CUR_DIRECTION)
72
+
73
+ #define _mm512_mask_exp2a23_ps(S, M, A) \
74
+ _mm512_mask_exp2a23_round_ps((S), (M), (A), _MM_FROUND_CUR_DIRECTION)
75
+
76
+ #define _mm512_maskz_exp2a23_ps(M, A) \
77
+ _mm512_maskz_exp2a23_round_ps((M), (A), _MM_FROUND_CUR_DIRECTION)
78
+
79
+ // rsqrt28
80
+ #define _mm512_rsqrt28_round_pd(A, R) __extension__ ({ \
81
+ (__m512d)__builtin_ia32_rsqrt28pd_mask((__v8df)(__m512d)(A), \
82
+ (__v8df)_mm512_setzero_pd(), \
83
+ (__mmask8)-1, (R)); })
84
+
85
+ #define _mm512_mask_rsqrt28_round_pd(S, M, A, R) __extension__ ({ \
86
+ (__m512d)__builtin_ia32_rsqrt28pd_mask((__v8df)(__m512d)(A), \
87
+ (__v8df)(__m512d)(S), \
88
+ (__mmask8)(M), (R)); })
89
+
90
+ #define _mm512_maskz_rsqrt28_round_pd(M, A, R) __extension__ ({ \
91
+ (__m512d)__builtin_ia32_rsqrt28pd_mask((__v8df)(__m512d)(A), \
92
+ (__v8df)_mm512_setzero_pd(), \
93
+ (__mmask8)(M), (R)); })
94
+
95
+ #define _mm512_rsqrt28_pd(A) \
96
+ _mm512_rsqrt28_round_pd((A), _MM_FROUND_CUR_DIRECTION)
97
+
98
+ #define _mm512_mask_rsqrt28_pd(S, M, A) \
99
+ _mm512_mask_rsqrt28_round_pd((S), (M), (A), _MM_FROUND_CUR_DIRECTION)
100
+
101
+ #define _mm512_maskz_rsqrt28_pd(M, A) \
102
+ _mm512_maskz_rsqrt28_round_pd((M), (A), _MM_FROUND_CUR_DIRECTION)
103
+
104
+ #define _mm512_rsqrt28_round_ps(A, R) __extension__ ({ \
105
+ (__m512)__builtin_ia32_rsqrt28ps_mask((__v16sf)(__m512)(A), \
106
+ (__v16sf)_mm512_setzero_ps(), \
107
+ (__mmask16)-1, (R)); })
108
+
109
+ #define _mm512_mask_rsqrt28_round_ps(S, M, A, R) __extension__ ({ \
110
+ (__m512)__builtin_ia32_rsqrt28ps_mask((__v16sf)(__m512)(A), \
111
+ (__v16sf)(__m512)(S), \
112
+ (__mmask16)(M), (R)); })
113
+
114
+ #define _mm512_maskz_rsqrt28_round_ps(M, A, R) __extension__ ({ \
115
+ (__m512)__builtin_ia32_rsqrt28ps_mask((__v16sf)(__m512)(A), \
116
+ (__v16sf)_mm512_setzero_ps(), \
117
+ (__mmask16)(M), (R)); })
118
+
119
+ #define _mm512_rsqrt28_ps(A) \
120
+ _mm512_rsqrt28_round_ps((A), _MM_FROUND_CUR_DIRECTION)
121
+
122
+ #define _mm512_mask_rsqrt28_ps(S, M, A) \
123
+ _mm512_mask_rsqrt28_round_ps((S), (M), A, _MM_FROUND_CUR_DIRECTION)
124
+
125
+ #define _mm512_maskz_rsqrt28_ps(M, A) \
126
+ _mm512_maskz_rsqrt28_round_ps((M), (A), _MM_FROUND_CUR_DIRECTION)
127
+
128
+ #define _mm_rsqrt28_round_ss(A, B, R) __extension__ ({ \
129
+ (__m128)__builtin_ia32_rsqrt28ss_mask((__v4sf)(__m128)(A), \
130
+ (__v4sf)(__m128)(B), \
131
+ (__v4sf)_mm_setzero_ps(), \
132
+ (__mmask8)-1, (R)); })
133
+
134
+ #define _mm_mask_rsqrt28_round_ss(S, M, A, B, R) __extension__ ({ \
135
+ (__m128)__builtin_ia32_rsqrt28ss_mask((__v4sf)(__m128)(A), \
136
+ (__v4sf)(__m128)(B), \
137
+ (__v4sf)(__m128)(S), \
138
+ (__mmask8)(M), (R)); })
139
+
140
+ #define _mm_maskz_rsqrt28_round_ss(M, A, B, R) __extension__ ({ \
141
+ (__m128)__builtin_ia32_rsqrt28ss_mask((__v4sf)(__m128)(A), \
142
+ (__v4sf)(__m128)(B), \
143
+ (__v4sf)_mm_setzero_ps(), \
144
+ (__mmask8)(M), (R)); })
145
+
146
+ #define _mm_rsqrt28_ss(A, B) \
147
+ _mm_rsqrt28_round_ss((A), (B), _MM_FROUND_CUR_DIRECTION)
148
+
149
+ #define _mm_mask_rsqrt28_ss(S, M, A, B) \
150
+ _mm_mask_rsqrt28_round_ss((S), (M), (A), (B), _MM_FROUND_CUR_DIRECTION)
151
+
152
+ #define _mm_maskz_rsqrt28_ss(M, A, B) \
153
+ _mm_maskz_rsqrt28_round_ss((M), (A), (B), _MM_FROUND_CUR_DIRECTION)
154
+
155
+ #define _mm_rsqrt28_round_sd(A, B, R) __extension__ ({ \
156
+ (__m128d)__builtin_ia32_rsqrt28sd_mask((__v2df)(__m128d)(A), \
157
+ (__v2df)(__m128d)(B), \
158
+ (__v2df)_mm_setzero_pd(), \
159
+ (__mmask8)-1, (R)); })
160
+
161
+ #define _mm_mask_rsqrt28_round_sd(S, M, A, B, R) __extension__ ({ \
162
+ (__m128d)__builtin_ia32_rsqrt28sd_mask((__v2df)(__m128d)(A), \
163
+ (__v2df)(__m128d)(B), \
164
+ (__v2df)(__m128d)(S), \
165
+ (__mmask8)(M), (R)); })
166
+
167
+ #define _mm_maskz_rsqrt28_round_sd(M, A, B, R) __extension__ ({ \
168
+ (__m128d)__builtin_ia32_rsqrt28sd_mask((__v2df)(__m128d)(A), \
169
+ (__v2df)(__m128d)(B), \
170
+ (__v2df)_mm_setzero_pd(), \
171
+ (__mmask8)(M), (R)); })
172
+
173
+ #define _mm_rsqrt28_sd(A, B) \
174
+ _mm_rsqrt28_round_sd((A), (B), _MM_FROUND_CUR_DIRECTION)
175
+
176
+ #define _mm_mask_rsqrt28_sd(S, M, A, B) \
177
+ _mm_mask_rsqrt28_round_sd((S), (M), (A), (B), _MM_FROUND_CUR_DIRECTION)
178
+
179
+ #define _mm_maskz_rsqrt28_sd(M, A, B) \
180
+ _mm_mask_rsqrt28_round_sd((M), (A), (B), _MM_FROUND_CUR_DIRECTION)
181
+
182
+ // rcp28
183
+ #define _mm512_rcp28_round_pd(A, R) __extension__ ({ \
184
+ (__m512d)__builtin_ia32_rcp28pd_mask((__v8df)(__m512d)(A), \
185
+ (__v8df)_mm512_setzero_pd(), \
186
+ (__mmask8)-1, (R)); })
187
+
188
+ #define _mm512_mask_rcp28_round_pd(S, M, A, R) __extension__ ({ \
189
+ (__m512d)__builtin_ia32_rcp28pd_mask((__v8df)(__m512d)(A), \
190
+ (__v8df)(__m512d)(S), \
191
+ (__mmask8)(M), (R)); })
192
+
193
+ #define _mm512_maskz_rcp28_round_pd(M, A, R) __extension__ ({ \
194
+ (__m512d)__builtin_ia32_rcp28pd_mask((__v8df)(__m512d)(A), \
195
+ (__v8df)_mm512_setzero_pd(), \
196
+ (__mmask8)(M), (R)); })
197
+
198
+ #define _mm512_rcp28_pd(A) \
199
+ _mm512_rcp28_round_pd((A), _MM_FROUND_CUR_DIRECTION)
200
+
201
+ #define _mm512_mask_rcp28_pd(S, M, A) \
202
+ _mm512_mask_rcp28_round_pd((S), (M), (A), _MM_FROUND_CUR_DIRECTION)
203
+
204
+ #define _mm512_maskz_rcp28_pd(M, A) \
205
+ _mm512_maskz_rcp28_round_pd((M), (A), _MM_FROUND_CUR_DIRECTION)
206
+
207
+ #define _mm512_rcp28_round_ps(A, R) __extension__ ({ \
208
+ (__m512)__builtin_ia32_rcp28ps_mask((__v16sf)(__m512)(A), \
209
+ (__v16sf)_mm512_setzero_ps(), \
210
+ (__mmask16)-1, (R)); })
211
+
212
+ #define _mm512_mask_rcp28_round_ps(S, M, A, R) __extension__ ({ \
213
+ (__m512)__builtin_ia32_rcp28ps_mask((__v16sf)(__m512)(A), \
214
+ (__v16sf)(__m512)(S), \
215
+ (__mmask16)(M), (R)); })
216
+
217
+ #define _mm512_maskz_rcp28_round_ps(M, A, R) __extension__ ({ \
218
+ (__m512)__builtin_ia32_rcp28ps_mask((__v16sf)(__m512)(A), \
219
+ (__v16sf)_mm512_setzero_ps(), \
220
+ (__mmask16)(M), (R)); })
221
+
222
+ #define _mm512_rcp28_ps(A) \
223
+ _mm512_rcp28_round_ps((A), _MM_FROUND_CUR_DIRECTION)
224
+
225
+ #define _mm512_mask_rcp28_ps(S, M, A) \
226
+ _mm512_mask_rcp28_round_ps((S), (M), (A), _MM_FROUND_CUR_DIRECTION)
227
+
228
+ #define _mm512_maskz_rcp28_ps(M, A) \
229
+ _mm512_maskz_rcp28_round_ps((M), (A), _MM_FROUND_CUR_DIRECTION)
230
+
231
+ #define _mm_rcp28_round_ss(A, B, R) __extension__ ({ \
232
+ (__m128)__builtin_ia32_rcp28ss_mask((__v4sf)(__m128)(A), \
233
+ (__v4sf)(__m128)(B), \
234
+ (__v4sf)_mm_setzero_ps(), \
235
+ (__mmask8)-1, (R)); })
236
+
237
+ #define _mm_mask_rcp28_round_ss(S, M, A, B, R) __extension__ ({ \
238
+ (__m128)__builtin_ia32_rcp28ss_mask((__v4sf)(__m128)(A), \
239
+ (__v4sf)(__m128)(B), \
240
+ (__v4sf)(__m128)(S), \
241
+ (__mmask8)(M), (R)); })
242
+
243
+ #define _mm_maskz_rcp28_round_ss(M, A, B, R) __extension__ ({ \
244
+ (__m128)__builtin_ia32_rcp28ss_mask((__v4sf)(__m128)(A), \
245
+ (__v4sf)(__m128)(B), \
246
+ (__v4sf)_mm_setzero_ps(), \
247
+ (__mmask8)(M), (R)); })
248
+
249
+ #define _mm_rcp28_ss(A, B) \
250
+ _mm_rcp28_round_ss((A), (B), _MM_FROUND_CUR_DIRECTION)
251
+
252
+ #define _mm_mask_rcp28_ss(S, M, A, B) \
253
+ _mm_mask_rcp28_round_ss((S), (M), (A), (B), _MM_FROUND_CUR_DIRECTION)
254
+
255
+ #define _mm_maskz_rcp28_ss(M, A, B) \
256
+ _mm_maskz_rcp28_round_ss((M), (A), (B), _MM_FROUND_CUR_DIRECTION)
257
+
258
+ #define _mm_rcp28_round_sd(A, B, R) __extension__ ({ \
259
+ (__m128d)__builtin_ia32_rcp28sd_mask((__v2df)(__m128d)(A), \
260
+ (__v2df)(__m128d)(B), \
261
+ (__v2df)_mm_setzero_pd(), \
262
+ (__mmask8)-1, (R)); })
263
+
264
+ #define _mm_mask_rcp28_round_sd(S, M, A, B, R) __extension__ ({ \
265
+ (__m128d)__builtin_ia32_rcp28sd_mask((__v2df)(__m128d)(A), \
266
+ (__v2df)(__m128d)(B), \
267
+ (__v2df)(__m128d)(S), \
268
+ (__mmask8)(M), (R)); })
269
+
270
+ #define _mm_maskz_rcp28_round_sd(M, A, B, R) __extension__ ({ \
271
+ (__m128d)__builtin_ia32_rcp28sd_mask((__v2df)(__m128d)(A), \
272
+ (__v2df)(__m128d)(B), \
273
+ (__v2df)_mm_setzero_pd(), \
274
+ (__mmask8)(M), (R)); })
275
+
276
+ #define _mm_rcp28_sd(A, B) \
277
+ _mm_rcp28_round_sd((A), (B), _MM_FROUND_CUR_DIRECTION)
278
+
279
+ #define _mm_mask_rcp28_sd(S, M, A, B) \
280
+ _mm_mask_rcp28_round_sd((S), (M), (A), (B), _MM_FROUND_CUR_DIRECTION)
281
+
282
+ #define _mm_maskz_rcp28_sd(M, A, B) \
283
+ _mm_maskz_rcp28_round_sd((M), (A), (B), _MM_FROUND_CUR_DIRECTION)
284
+
285
+ #endif // __AVX512ERINTRIN_H