rtl.go 82 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200
  1. // Copyright 2023 The Libc Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style
  3. // license that can be found in the LICENSE file.
  4. //go:build linux && (amd64 || arm64 || loong64 || ppc64le || s390x || riscv64 || 386 || arm)
  5. package libc // import "modernc.org/libc"
  6. import (
  7. "math"
  8. "reflect"
  9. "sync/atomic"
  10. "unsafe"
  11. )
  12. // VaList fills a varargs list at p with args and returns p. The list must
  13. // have been allocated by caller and it must not be in Go managed memory, ie.
  14. // it must be pinned. Caller is responsible for freeing the list.
  15. //
  16. // This function supports code generated by ccgo/v4.
  17. //
  18. // Note: The C translated to Go varargs ABI alignment for all types is 8 on all
  19. // architectures.
  20. func VaList(p uintptr, args ...interface{}) (r uintptr) {
  21. if p&7 != 0 {
  22. panic("internal error")
  23. }
  24. r = p
  25. for _, v := range args {
  26. switch x := v.(type) {
  27. case int:
  28. *(*int64)(unsafe.Pointer(p)) = int64(x)
  29. case int32:
  30. *(*int64)(unsafe.Pointer(p)) = int64(x)
  31. case int64:
  32. *(*int64)(unsafe.Pointer(p)) = x
  33. case uint:
  34. *(*uint64)(unsafe.Pointer(p)) = uint64(x)
  35. case uint16:
  36. *(*uint64)(unsafe.Pointer(p)) = uint64(x)
  37. case uint32:
  38. *(*uint64)(unsafe.Pointer(p)) = uint64(x)
  39. case uint64:
  40. *(*uint64)(unsafe.Pointer(p)) = x
  41. case float64:
  42. *(*float64)(unsafe.Pointer(p)) = x
  43. case uintptr:
  44. *(*uintptr)(unsafe.Pointer(p)) = x
  45. default:
  46. sz := reflect.TypeOf(v).Size()
  47. copy(unsafe.Slice((*byte)(unsafe.Pointer(p)), sz), unsafe.Slice((*byte)(unsafe.Pointer((*[2]uintptr)(unsafe.Pointer(&v))[1])), sz))
  48. p += roundup(sz, 8)
  49. continue
  50. }
  51. p += 8
  52. }
  53. return r
  54. }
  55. // Bool returns v as a non-constant boolean value.
  56. func Bool(v bool) bool { return v }
  57. func Bool32(b bool) int32 {
  58. if b {
  59. return 1
  60. }
  61. return 0
  62. }
  63. func roundup(n, to uintptr) uintptr {
  64. if r := n % to; r != 0 {
  65. return n + to - r
  66. }
  67. return n
  68. }
  69. func VaOther(app *uintptr, sz uint64) (r uintptr) {
  70. ap := *(*uintptr)(unsafe.Pointer(app))
  71. if ap == 0 {
  72. return 0
  73. }
  74. r = ap
  75. ap = roundup(ap+uintptr(sz), 8)
  76. *(*uintptr)(unsafe.Pointer(app)) = ap
  77. return r
  78. }
  79. func VaInt32(app *uintptr) int32 {
  80. ap := *(*uintptr)(unsafe.Pointer(app))
  81. if ap == 0 {
  82. return 0
  83. }
  84. ap = roundup(ap, 8)
  85. v := int32(*(*int64)(unsafe.Pointer(ap)))
  86. ap += 8
  87. *(*uintptr)(unsafe.Pointer(app)) = ap
  88. return v
  89. }
  90. func VaUint32(app *uintptr) uint32 {
  91. ap := *(*uintptr)(unsafe.Pointer(app))
  92. if ap == 0 {
  93. return 0
  94. }
  95. ap = roundup(ap, 8)
  96. v := uint32(*(*uint64)(unsafe.Pointer(ap)))
  97. ap += 8
  98. *(*uintptr)(unsafe.Pointer(app)) = ap
  99. return v
  100. }
  101. func VaInt64(app *uintptr) int64 {
  102. ap := *(*uintptr)(unsafe.Pointer(app))
  103. if ap == 0 {
  104. return 0
  105. }
  106. ap = roundup(ap, 8)
  107. v := *(*int64)(unsafe.Pointer(ap))
  108. ap += 8
  109. *(*uintptr)(unsafe.Pointer(app)) = ap
  110. return v
  111. }
  112. func VaUint64(app *uintptr) uint64 {
  113. ap := *(*uintptr)(unsafe.Pointer(app))
  114. if ap == 0 {
  115. return 0
  116. }
  117. ap = roundup(ap, 8)
  118. v := *(*uint64)(unsafe.Pointer(ap))
  119. ap += 8
  120. *(*uintptr)(unsafe.Pointer(app)) = ap
  121. return v
  122. }
  123. func VaFloat32(app *uintptr) float32 {
  124. ap := *(*uintptr)(unsafe.Pointer(app))
  125. if ap == 0 {
  126. return 0
  127. }
  128. ap = roundup(ap, 8)
  129. v := *(*float64)(unsafe.Pointer(ap))
  130. ap += 8
  131. *(*uintptr)(unsafe.Pointer(app)) = ap
  132. return float32(v)
  133. }
  134. func VaFloat64(app *uintptr) float64 {
  135. ap := *(*uintptr)(unsafe.Pointer(app))
  136. if ap == 0 {
  137. return 0
  138. }
  139. ap = roundup(ap, 8)
  140. v := *(*float64)(unsafe.Pointer(ap))
  141. ap += 8
  142. *(*uintptr)(unsafe.Pointer(app)) = ap
  143. return v
  144. }
  145. func VaUintptr(app *uintptr) uintptr {
  146. ap := *(*uintptr)(unsafe.Pointer(app))
  147. if ap == 0 {
  148. return 0
  149. }
  150. ap = roundup(ap, 8)
  151. v := *(*uintptr)(unsafe.Pointer(ap))
  152. ap += 8
  153. *(*uintptr)(unsafe.Pointer(app)) = ap
  154. return v
  155. }
  156. func AtomicStoreNUint8(ptr uintptr, val uint8, memorder int32) {
  157. a_store_8(ptr, int8(val))
  158. }
  159. func AtomicStorePInt8(addr uintptr, val int8) int8 {
  160. a_store_8(addr, val)
  161. return val
  162. }
  163. func AtomicStorePUint8(addr uintptr, val byte) byte {
  164. a_store_8(addr, int8(val))
  165. return val
  166. }
  167. func AtomicStorePInt32(addr uintptr, val int32) int32 {
  168. atomic.StoreInt32((*int32)(unsafe.Pointer(addr)), val)
  169. return val
  170. }
  171. func AtomicStorePInt64(addr uintptr, val int64) int64 {
  172. atomic.StoreInt64((*int64)(unsafe.Pointer(addr)), val)
  173. return val
  174. }
  175. func AtomicStorePUint32(addr uintptr, val uint32) uint32 {
  176. atomic.StoreUint32((*uint32)(unsafe.Pointer(addr)), val)
  177. return val
  178. }
  179. func AtomicStorePUint64(addr uintptr, val uint64) uint64 {
  180. atomic.StoreUint64((*uint64)(unsafe.Pointer(addr)), val)
  181. return val
  182. }
  183. func AtomicStorePUintptr(addr uintptr, val uintptr) uintptr {
  184. atomic.StoreUintptr((*uintptr)(unsafe.Pointer(addr)), val)
  185. return val
  186. }
  187. func AtomicStorePFloat32(addr uintptr, val float32) float32 {
  188. atomic.StoreUint32((*uint32)(unsafe.Pointer(addr)), math.Float32bits(val))
  189. return val
  190. }
  191. func AtomicStorePFloat64(addr uintptr, val float64) float64 {
  192. atomic.StoreUint64((*uint64)(unsafe.Pointer(addr)), math.Float64bits(val))
  193. return val
  194. }
  195. func AtomicLoadPInt8(addr uintptr) (val int8) {
  196. return a_load_8(addr)
  197. }
  198. func AtomicLoadPInt16(addr uintptr) (val int16) {
  199. return a_load_16(addr)
  200. }
  201. func AtomicLoadPInt32(addr uintptr) (val int32) {
  202. return atomic.LoadInt32((*int32)(unsafe.Pointer(addr)))
  203. }
  204. func AtomicLoadPInt64(addr uintptr) (val int64) {
  205. return atomic.LoadInt64((*int64)(unsafe.Pointer(addr)))
  206. }
  207. func AtomicLoadPUint8(addr uintptr) byte {
  208. return byte(a_load_8(addr))
  209. }
  210. func AtomicLoadPUint16(addr uintptr) uint16 {
  211. return uint16(a_load_16(addr))
  212. }
  213. func AtomicLoadPUint32(addr uintptr) (val uint32) {
  214. return atomic.LoadUint32((*uint32)(unsafe.Pointer(addr)))
  215. }
  216. func AtomicLoadPUint64(addr uintptr) (val uint64) {
  217. return atomic.LoadUint64((*uint64)(unsafe.Pointer(addr)))
  218. }
  219. func AtomicLoadPUintptr(addr uintptr) (val uintptr) {
  220. return atomic.LoadUintptr((*uintptr)(unsafe.Pointer(addr)))
  221. }
  222. func AtomicLoadPFloat32(addr uintptr) (val float32) {
  223. return math.Float32frombits(atomic.LoadUint32((*uint32)(unsafe.Pointer(addr))))
  224. }
  225. func AtomicLoadPFloat64(addr uintptr) (val float64) {
  226. return math.Float64frombits(atomic.LoadUint64((*uint64)(unsafe.Pointer(addr))))
  227. }
  228. func AtomicStoreNUint16(ptr uintptr, val uint16, memorder int32) {
  229. a_store_16(ptr, val)
  230. }
  231. func AtomicStoreNInt32(ptr uintptr, val int32, memorder int32) {
  232. atomic.StoreInt32((*int32)(unsafe.Pointer(ptr)), val)
  233. }
  234. func AtomicStoreNInt64(ptr uintptr, val int64, memorder int32) {
  235. atomic.StoreInt64((*int64)(unsafe.Pointer(ptr)), val)
  236. }
  237. func AtomicStoreNUint32(ptr uintptr, val uint32, memorder int32) {
  238. atomic.StoreUint32((*uint32)(unsafe.Pointer(ptr)), val)
  239. }
  240. func AtomicStoreNUint64(ptr uintptr, val uint64, memorder int32) {
  241. atomic.StoreUint64((*uint64)(unsafe.Pointer(ptr)), val)
  242. }
  243. func AtomicStoreNUintptr(ptr uintptr, val uintptr, memorder int32) {
  244. atomic.StoreUintptr((*uintptr)(unsafe.Pointer(ptr)), val)
  245. }
  246. func AtomicLoadNUint8(ptr uintptr, memorder int32) uint8 {
  247. return byte(a_load_8(ptr))
  248. }
  249. func AtomicLoadNUint16(ptr uintptr, memorder int32) uint16 {
  250. return uint16(a_load_16(ptr))
  251. }
  252. func AtomicLoadNInt32(ptr uintptr, memorder int32) int32 {
  253. return atomic.LoadInt32((*int32)(unsafe.Pointer(ptr)))
  254. }
  255. func AtomicLoadNInt64(ptr uintptr, memorder int32) int64 {
  256. return atomic.LoadInt64((*int64)(unsafe.Pointer(ptr)))
  257. }
  258. func AtomicLoadNUint32(ptr uintptr, memorder int32) uint32 {
  259. return atomic.LoadUint32((*uint32)(unsafe.Pointer(ptr)))
  260. }
  261. func AtomicLoadNUint64(ptr uintptr, memorder int32) uint64 {
  262. return atomic.LoadUint64((*uint64)(unsafe.Pointer(ptr)))
  263. }
  264. func AtomicLoadNUintptr(ptr uintptr, memorder int32) uintptr {
  265. return atomic.LoadUintptr((*uintptr)(unsafe.Pointer(ptr)))
  266. }
  267. func AssignInt8(p *int8, v int8) int8 { *p = v; return v }
  268. func AssignInt16(p *int16, v int16) int16 { *p = v; return v }
  269. func AssignInt32(p *int32, v int32) int32 { *p = v; return v }
  270. func AssignInt64(p *int64, v int64) int64 { *p = v; return v }
  271. func AssignUint8(p *uint8, v uint8) uint8 { *p = v; return v }
  272. func AssignUint16(p *uint16, v uint16) uint16 { *p = v; return v }
  273. func AssignUint32(p *uint32, v uint32) uint32 { *p = v; return v }
  274. func AssignUint64(p *uint64, v uint64) uint64 { *p = v; return v }
  275. func AssignFloat32(p *float32, v float32) float32 { *p = v; return v }
  276. func AssignFloat64(p *float64, v float64) float64 { *p = v; return v }
  277. func AssignComplex64(p *complex64, v complex64) complex64 { *p = v; return v }
  278. func AssignComplex128(p *complex128, v complex128) complex128 { *p = v; return v }
  279. func AssignUintptr(p *uintptr, v uintptr) uintptr { *p = v; return v }
  280. func AssignPtrInt8(p uintptr, v int8) int8 { *(*int8)(unsafe.Pointer(p)) = v; return v }
  281. func AssignPtrInt16(p uintptr, v int16) int16 { *(*int16)(unsafe.Pointer(p)) = v; return v }
  282. func AssignPtrInt32(p uintptr, v int32) int32 { *(*int32)(unsafe.Pointer(p)) = v; return v }
  283. func AssignPtrInt64(p uintptr, v int64) int64 { *(*int64)(unsafe.Pointer(p)) = v; return v }
  284. func AssignPtrUint8(p uintptr, v uint8) uint8 { *(*uint8)(unsafe.Pointer(p)) = v; return v }
  285. func AssignPtrUint16(p uintptr, v uint16) uint16 { *(*uint16)(unsafe.Pointer(p)) = v; return v }
  286. func AssignPtrUint32(p uintptr, v uint32) uint32 { *(*uint32)(unsafe.Pointer(p)) = v; return v }
  287. func AssignPtrUint64(p uintptr, v uint64) uint64 { *(*uint64)(unsafe.Pointer(p)) = v; return v }
  288. func AssignPtrFloat32(p uintptr, v float32) float32 { *(*float32)(unsafe.Pointer(p)) = v; return v }
  289. func AssignPtrFloat64(p uintptr, v float64) float64 { *(*float64)(unsafe.Pointer(p)) = v; return v }
  290. func AssignPtrComplex64(p uintptr, v complex64) complex64 {
  291. *(*complex64)(unsafe.Pointer(p)) = v
  292. return v
  293. }
  294. func AssignPtrComplex128(p uintptr, v complex128) complex128 {
  295. *(*complex128)(unsafe.Pointer(p)) = v
  296. return v
  297. }
  298. func AssignPtrUintptr(p uintptr, v uintptr) uintptr { *(*uintptr)(unsafe.Pointer(p)) = v; return v }
  299. func AssignMulInt8(p *int8, v int8) int8 { *p *= v; return *p }
  300. func AssignMulInt16(p *int16, v int16) int16 { *p *= v; return *p }
  301. func AssignMulInt32(p *int32, v int32) int32 { *p *= v; return *p }
  302. func AssignMulInt64(p *int64, v int64) int64 { *p *= v; return *p }
  303. func AssignMulUint8(p *uint8, v uint8) uint8 { *p *= v; return *p }
  304. func AssignMulUint16(p *uint16, v uint16) uint16 { *p *= v; return *p }
  305. func AssignMulUint32(p *uint32, v uint32) uint32 { *p *= v; return *p }
  306. func AssignMulUint64(p *uint64, v uint64) uint64 { *p *= v; return *p }
  307. func AssignMulFloat32(p *float32, v float32) float32 { *p *= v; return *p }
  308. func AssignMulFloat64(p *float64, v float64) float64 { *p *= v; return *p }
  309. func AssignMulComplex64(p *complex64, v complex64) complex64 { *p *= v; return *p }
  310. func AssignMulComplex128(p *complex128, v complex128) complex128 { *p *= v; return *p }
  311. func AssignMulUintptr(p *uintptr, v uintptr) uintptr { *p *= v; return *p }
  312. func AssignDivInt8(p *int8, v int8) int8 { *p /= v; return *p }
  313. func AssignDivInt16(p *int16, v int16) int16 { *p /= v; return *p }
  314. func AssignDivInt32(p *int32, v int32) int32 { *p /= v; return *p }
  315. func AssignDivInt64(p *int64, v int64) int64 { *p /= v; return *p }
  316. func AssignDivUint8(p *uint8, v uint8) uint8 { *p /= v; return *p }
  317. func AssignDivUint16(p *uint16, v uint16) uint16 { *p /= v; return *p }
  318. func AssignDivUint32(p *uint32, v uint32) uint32 { *p /= v; return *p }
  319. func AssignDivUint64(p *uint64, v uint64) uint64 { *p /= v; return *p }
  320. func AssignDivFloat32(p *float32, v float32) float32 { *p /= v; return *p }
  321. func AssignDivFloat64(p *float64, v float64) float64 { *p /= v; return *p }
  322. func AssignDivComplex64(p *complex64, v complex64) complex64 { *p /= v; return *p }
  323. func AssignDivComplex128(p *complex128, v complex128) complex128 { *p /= v; return *p }
  324. func AssignDivUintptr(p *uintptr, v uintptr) uintptr { *p /= v; return *p }
  325. func AssignRemInt8(p *int8, v int8) int8 { *p %= v; return *p }
  326. func AssignRemInt16(p *int16, v int16) int16 { *p %= v; return *p }
  327. func AssignRemInt32(p *int32, v int32) int32 { *p %= v; return *p }
  328. func AssignRemInt64(p *int64, v int64) int64 { *p %= v; return *p }
  329. func AssignRemUint8(p *uint8, v uint8) uint8 { *p %= v; return *p }
  330. func AssignRemUint16(p *uint16, v uint16) uint16 { *p %= v; return *p }
  331. func AssignRemUint32(p *uint32, v uint32) uint32 { *p %= v; return *p }
  332. func AssignRemUint64(p *uint64, v uint64) uint64 { *p %= v; return *p }
  333. func AssignRemUintptr(p *uintptr, v uintptr) uintptr { *p %= v; return *p }
  334. func AssignAddInt8(p *int8, v int8) int8 { *p += v; return *p }
  335. func AssignAddInt16(p *int16, v int16) int16 { *p += v; return *p }
  336. func AssignAddInt32(p *int32, v int32) int32 { *p += v; return *p }
  337. func AssignAddInt64(p *int64, v int64) int64 { *p += v; return *p }
  338. func AssignAddUint8(p *uint8, v uint8) uint8 { *p += v; return *p }
  339. func AssignAddUint16(p *uint16, v uint16) uint16 { *p += v; return *p }
  340. func AssignAddUint32(p *uint32, v uint32) uint32 { *p += v; return *p }
  341. func AssignAddUint64(p *uint64, v uint64) uint64 { *p += v; return *p }
  342. func AssignAddFloat32(p *float32, v float32) float32 { *p += v; return *p }
  343. func AssignAddFloat64(p *float64, v float64) float64 { *p += v; return *p }
  344. func AssignAddComplex64(p *complex64, v complex64) complex64 { *p += v; return *p }
  345. func AssignAddComplex128(p *complex128, v complex128) complex128 { *p += v; return *p }
  346. func AssignAddUintptr(p *uintptr, v uintptr) uintptr { *p += v; return *p }
  347. func AssignSubInt8(p *int8, v int8) int8 { *p -= v; return *p }
  348. func AssignSubInt16(p *int16, v int16) int16 { *p -= v; return *p }
  349. func AssignSubInt32(p *int32, v int32) int32 { *p -= v; return *p }
  350. func AssignSubInt64(p *int64, v int64) int64 { *p -= v; return *p }
  351. func AssignSubUint8(p *uint8, v uint8) uint8 { *p -= v; return *p }
  352. func AssignSubUint16(p *uint16, v uint16) uint16 { *p -= v; return *p }
  353. func AssignSubUint32(p *uint32, v uint32) uint32 { *p -= v; return *p }
  354. func AssignSubUint64(p *uint64, v uint64) uint64 { *p -= v; return *p }
  355. func AssignSubFloat32(p *float32, v float32) float32 { *p -= v; return *p }
  356. func AssignSubFloat64(p *float64, v float64) float64 { *p -= v; return *p }
  357. func AssignSubComplex64(p *complex64, v complex64) complex64 { *p -= v; return *p }
  358. func AssignSubComplex128(p *complex128, v complex128) complex128 { *p -= v; return *p }
  359. func AssignSubUintptr(p *uintptr, v uintptr) uintptr { *p -= v; return *p }
  360. func AssignAndInt8(p *int8, v int8) int8 { *p &= v; return *p }
  361. func AssignAndInt16(p *int16, v int16) int16 { *p &= v; return *p }
  362. func AssignAndInt32(p *int32, v int32) int32 { *p &= v; return *p }
  363. func AssignAndInt64(p *int64, v int64) int64 { *p &= v; return *p }
  364. func AssignAndUint8(p *uint8, v uint8) uint8 { *p &= v; return *p }
  365. func AssignAndUint16(p *uint16, v uint16) uint16 { *p &= v; return *p }
  366. func AssignAndUint32(p *uint32, v uint32) uint32 { *p &= v; return *p }
  367. func AssignAndUint64(p *uint64, v uint64) uint64 { *p &= v; return *p }
  368. func AssignAndUintptr(p *uintptr, v uintptr) uintptr { *p &= v; return *p }
  369. func AssignXorInt8(p *int8, v int8) int8 { *p ^= v; return *p }
  370. func AssignXorInt16(p *int16, v int16) int16 { *p ^= v; return *p }
  371. func AssignXorInt32(p *int32, v int32) int32 { *p ^= v; return *p }
  372. func AssignXorInt64(p *int64, v int64) int64 { *p ^= v; return *p }
  373. func AssignXorUint8(p *uint8, v uint8) uint8 { *p ^= v; return *p }
  374. func AssignXorUint16(p *uint16, v uint16) uint16 { *p ^= v; return *p }
  375. func AssignXorUint32(p *uint32, v uint32) uint32 { *p ^= v; return *p }
  376. func AssignXorUint64(p *uint64, v uint64) uint64 { *p ^= v; return *p }
  377. func AssignXorUintptr(p *uintptr, v uintptr) uintptr { *p ^= v; return *p }
  378. func AssignOrInt8(p *int8, v int8) int8 { *p |= v; return *p }
  379. func AssignOrInt16(p *int16, v int16) int16 { *p |= v; return *p }
  380. func AssignOrInt32(p *int32, v int32) int32 { *p |= v; return *p }
  381. func AssignOrInt64(p *int64, v int64) int64 { *p |= v; return *p }
  382. func AssignOrUint8(p *uint8, v uint8) uint8 { *p |= v; return *p }
  383. func AssignOrUint16(p *uint16, v uint16) uint16 { *p |= v; return *p }
  384. func AssignOrUint32(p *uint32, v uint32) uint32 { *p |= v; return *p }
  385. func AssignOrUint64(p *uint64, v uint64) uint64 { *p |= v; return *p }
  386. func AssignOrUintptr(p *uintptr, v uintptr) uintptr { *p |= v; return *p }
  387. func AssignMulPtrInt8(p uintptr, v int8) int8 {
  388. *(*int8)(unsafe.Pointer(p)) *= v
  389. return *(*int8)(unsafe.Pointer(p))
  390. }
  391. func AssignMulPtrInt16(p uintptr, v int16) int16 {
  392. *(*int16)(unsafe.Pointer(p)) *= v
  393. return *(*int16)(unsafe.Pointer(p))
  394. }
  395. func AssignMulPtrInt32(p uintptr, v int32) int32 {
  396. *(*int32)(unsafe.Pointer(p)) *= v
  397. return *(*int32)(unsafe.Pointer(p))
  398. }
  399. func AssignMulPtrInt64(p uintptr, v int64) int64 {
  400. *(*int64)(unsafe.Pointer(p)) *= v
  401. return *(*int64)(unsafe.Pointer(p))
  402. }
  403. func AssignMulPtrUint8(p uintptr, v uint8) uint8 {
  404. *(*uint8)(unsafe.Pointer(p)) *= v
  405. return *(*uint8)(unsafe.Pointer(p))
  406. }
  407. func AssignMulPtrUint16(p uintptr, v uint16) uint16 {
  408. *(*uint16)(unsafe.Pointer(p)) *= v
  409. return *(*uint16)(unsafe.Pointer(p))
  410. }
  411. func AssignMulPtrUint32(p uintptr, v uint32) uint32 {
  412. *(*uint32)(unsafe.Pointer(p)) *= v
  413. return *(*uint32)(unsafe.Pointer(p))
  414. }
  415. func AssignMulPtrUint64(p uintptr, v uint64) uint64 {
  416. *(*uint64)(unsafe.Pointer(p)) *= v
  417. return *(*uint64)(unsafe.Pointer(p))
  418. }
  419. func AssignMulPtrFloat32(p uintptr, v float32) float32 {
  420. *(*float32)(unsafe.Pointer(p)) *= v
  421. return *(*float32)(unsafe.Pointer(p))
  422. }
  423. func AssignMulPtrFloat64(p uintptr, v float64) float64 {
  424. *(*float64)(unsafe.Pointer(p)) *= v
  425. return *(*float64)(unsafe.Pointer(p))
  426. }
  427. func AssignMulPtrComplex64(p uintptr, v complex64) complex64 {
  428. *(*complex64)(unsafe.Pointer(p)) *= v
  429. return *(*complex64)(unsafe.Pointer(p))
  430. }
  431. func AssignMulPtrComplex128(p uintptr, v complex128) complex128 {
  432. *(*complex128)(unsafe.Pointer(p)) *= v
  433. return *(*complex128)(unsafe.Pointer(p))
  434. }
  435. func AssignMulPtrUintptr(p uintptr, v uintptr) uintptr {
  436. *(*uintptr)(unsafe.Pointer(p)) *= v
  437. return *(*uintptr)(unsafe.Pointer(p))
  438. }
  439. func AssignDivPtrInt8(p uintptr, v int8) int8 {
  440. *(*int8)(unsafe.Pointer(p)) /= v
  441. return *(*int8)(unsafe.Pointer(p))
  442. }
  443. func AssignDivPtrInt16(p uintptr, v int16) int16 {
  444. *(*int16)(unsafe.Pointer(p)) /= v
  445. return *(*int16)(unsafe.Pointer(p))
  446. }
  447. func AssignDivPtrInt32(p uintptr, v int32) int32 {
  448. *(*int32)(unsafe.Pointer(p)) /= v
  449. return *(*int32)(unsafe.Pointer(p))
  450. }
  451. func AssignDivPtrInt64(p uintptr, v int64) int64 {
  452. *(*int64)(unsafe.Pointer(p)) /= v
  453. return *(*int64)(unsafe.Pointer(p))
  454. }
  455. func AssignDivPtrUint8(p uintptr, v uint8) uint8 {
  456. *(*uint8)(unsafe.Pointer(p)) /= v
  457. return *(*uint8)(unsafe.Pointer(p))
  458. }
  459. func AssignDivPtrUint16(p uintptr, v uint16) uint16 {
  460. *(*uint16)(unsafe.Pointer(p)) /= v
  461. return *(*uint16)(unsafe.Pointer(p))
  462. }
  463. func AssignDivPtrUint32(p uintptr, v uint32) uint32 {
  464. *(*uint32)(unsafe.Pointer(p)) /= v
  465. return *(*uint32)(unsafe.Pointer(p))
  466. }
  467. func AssignDivPtrUint64(p uintptr, v uint64) uint64 {
  468. *(*uint64)(unsafe.Pointer(p)) /= v
  469. return *(*uint64)(unsafe.Pointer(p))
  470. }
  471. func AssignDivPtrFloat32(p uintptr, v float32) float32 {
  472. *(*float32)(unsafe.Pointer(p)) /= v
  473. return *(*float32)(unsafe.Pointer(p))
  474. }
  475. func AssignDivPtrFloat64(p uintptr, v float64) float64 {
  476. *(*float64)(unsafe.Pointer(p)) /= v
  477. return *(*float64)(unsafe.Pointer(p))
  478. }
  479. func AssignDivPtrComplex64(p uintptr, v complex64) complex64 {
  480. *(*complex64)(unsafe.Pointer(p)) /= v
  481. return *(*complex64)(unsafe.Pointer(p))
  482. }
  483. func AssignDivPtrComplex128(p uintptr, v complex128) complex128 {
  484. *(*complex128)(unsafe.Pointer(p)) /= v
  485. return *(*complex128)(unsafe.Pointer(p))
  486. }
  487. func AssignDivPtrUintptr(p uintptr, v uintptr) uintptr {
  488. *(*uintptr)(unsafe.Pointer(p)) /= v
  489. return *(*uintptr)(unsafe.Pointer(p))
  490. }
  491. func AssignRemPtrInt8(p uintptr, v int8) int8 {
  492. *(*int8)(unsafe.Pointer(p)) %= v
  493. return *(*int8)(unsafe.Pointer(p))
  494. }
  495. func AssignRemPtrInt16(p uintptr, v int16) int16 {
  496. *(*int16)(unsafe.Pointer(p)) %= v
  497. return *(*int16)(unsafe.Pointer(p))
  498. }
  499. func AssignRemPtrInt32(p uintptr, v int32) int32 {
  500. *(*int32)(unsafe.Pointer(p)) %= v
  501. return *(*int32)(unsafe.Pointer(p))
  502. }
  503. func AssignRemPtrInt64(p uintptr, v int64) int64 {
  504. *(*int64)(unsafe.Pointer(p)) %= v
  505. return *(*int64)(unsafe.Pointer(p))
  506. }
  507. func AssignRemPtrUint8(p uintptr, v uint8) uint8 {
  508. *(*uint8)(unsafe.Pointer(p)) %= v
  509. return *(*uint8)(unsafe.Pointer(p))
  510. }
  511. func AssignRemPtrUint16(p uintptr, v uint16) uint16 {
  512. *(*uint16)(unsafe.Pointer(p)) %= v
  513. return *(*uint16)(unsafe.Pointer(p))
  514. }
  515. func AssignRemPtrUint32(p uintptr, v uint32) uint32 {
  516. *(*uint32)(unsafe.Pointer(p)) %= v
  517. return *(*uint32)(unsafe.Pointer(p))
  518. }
  519. func AssignRemPtrUint64(p uintptr, v uint64) uint64 {
  520. *(*uint64)(unsafe.Pointer(p)) %= v
  521. return *(*uint64)(unsafe.Pointer(p))
  522. }
  523. func AssignRemPtrUintptr(p uintptr, v uintptr) uintptr {
  524. *(*uintptr)(unsafe.Pointer(p)) %= v
  525. return *(*uintptr)(unsafe.Pointer(p))
  526. }
  527. func AssignAddPtrInt8(p uintptr, v int8) int8 {
  528. *(*int8)(unsafe.Pointer(p)) += v
  529. return *(*int8)(unsafe.Pointer(p))
  530. }
  531. func AssignAddPtrInt16(p uintptr, v int16) int16 {
  532. *(*int16)(unsafe.Pointer(p)) += v
  533. return *(*int16)(unsafe.Pointer(p))
  534. }
  535. func AssignAddPtrInt32(p uintptr, v int32) int32 {
  536. *(*int32)(unsafe.Pointer(p)) += v
  537. return *(*int32)(unsafe.Pointer(p))
  538. }
  539. func AssignAddPtrInt64(p uintptr, v int64) int64 {
  540. *(*int64)(unsafe.Pointer(p)) += v
  541. return *(*int64)(unsafe.Pointer(p))
  542. }
  543. func AssignAddPtrUint8(p uintptr, v uint8) uint8 {
  544. *(*uint8)(unsafe.Pointer(p)) += v
  545. return *(*uint8)(unsafe.Pointer(p))
  546. }
  547. func AssignAddPtrUint16(p uintptr, v uint16) uint16 {
  548. *(*uint16)(unsafe.Pointer(p)) += v
  549. return *(*uint16)(unsafe.Pointer(p))
  550. }
  551. func AssignAddPtrUint32(p uintptr, v uint32) uint32 {
  552. *(*uint32)(unsafe.Pointer(p)) += v
  553. return *(*uint32)(unsafe.Pointer(p))
  554. }
  555. func AssignAddPtrUint64(p uintptr, v uint64) uint64 {
  556. *(*uint64)(unsafe.Pointer(p)) += v
  557. return *(*uint64)(unsafe.Pointer(p))
  558. }
  559. func AssignAddPtrFloat32(p uintptr, v float32) float32 {
  560. *(*float32)(unsafe.Pointer(p)) += v
  561. return *(*float32)(unsafe.Pointer(p))
  562. }
  563. func AssignAddPtrFloat64(p uintptr, v float64) float64 {
  564. *(*float64)(unsafe.Pointer(p)) += v
  565. return *(*float64)(unsafe.Pointer(p))
  566. }
  567. func AssignAddPtrComplex64(p uintptr, v complex64) complex64 {
  568. *(*complex64)(unsafe.Pointer(p)) += v
  569. return *(*complex64)(unsafe.Pointer(p))
  570. }
  571. func AssignAddPtrComplex128(p uintptr, v complex128) complex128 {
  572. *(*complex128)(unsafe.Pointer(p)) += v
  573. return *(*complex128)(unsafe.Pointer(p))
  574. }
  575. func AssignAddPtrUintptr(p uintptr, v uintptr) uintptr {
  576. *(*uintptr)(unsafe.Pointer(p)) += v
  577. return *(*uintptr)(unsafe.Pointer(p))
  578. }
  579. func AssignSubPtrInt8(p uintptr, v int8) int8 {
  580. *(*int8)(unsafe.Pointer(p)) -= v
  581. return *(*int8)(unsafe.Pointer(p))
  582. }
  583. func AssignSubPtrInt16(p uintptr, v int16) int16 {
  584. *(*int16)(unsafe.Pointer(p)) -= v
  585. return *(*int16)(unsafe.Pointer(p))
  586. }
  587. func AssignSubPtrInt32(p uintptr, v int32) int32 {
  588. *(*int32)(unsafe.Pointer(p)) -= v
  589. return *(*int32)(unsafe.Pointer(p))
  590. }
  591. func AssignSubPtrInt64(p uintptr, v int64) int64 {
  592. *(*int64)(unsafe.Pointer(p)) -= v
  593. return *(*int64)(unsafe.Pointer(p))
  594. }
  595. func AssignSubPtrUint8(p uintptr, v uint8) uint8 {
  596. *(*uint8)(unsafe.Pointer(p)) -= v
  597. return *(*uint8)(unsafe.Pointer(p))
  598. }
  599. func AssignSubPtrUint16(p uintptr, v uint16) uint16 {
  600. *(*uint16)(unsafe.Pointer(p)) -= v
  601. return *(*uint16)(unsafe.Pointer(p))
  602. }
  603. func AssignSubPtrUint32(p uintptr, v uint32) uint32 {
  604. *(*uint32)(unsafe.Pointer(p)) -= v
  605. return *(*uint32)(unsafe.Pointer(p))
  606. }
  607. func AssignSubPtrUint64(p uintptr, v uint64) uint64 {
  608. *(*uint64)(unsafe.Pointer(p)) -= v
  609. return *(*uint64)(unsafe.Pointer(p))
  610. }
  611. func AssignSubPtrFloat32(p uintptr, v float32) float32 {
  612. *(*float32)(unsafe.Pointer(p)) -= v
  613. return *(*float32)(unsafe.Pointer(p))
  614. }
  615. func AssignSubPtrFloat64(p uintptr, v float64) float64 {
  616. *(*float64)(unsafe.Pointer(p)) -= v
  617. return *(*float64)(unsafe.Pointer(p))
  618. }
  619. func AssignSubPtrComplex64(p uintptr, v complex64) complex64 {
  620. *(*complex64)(unsafe.Pointer(p)) -= v
  621. return *(*complex64)(unsafe.Pointer(p))
  622. }
  623. func AssignSubPtrComplex128(p uintptr, v complex128) complex128 {
  624. *(*complex128)(unsafe.Pointer(p)) -= v
  625. return *(*complex128)(unsafe.Pointer(p))
  626. }
  627. func AssignSubPtrUintptr(p uintptr, v uintptr) uintptr {
  628. *(*uintptr)(unsafe.Pointer(p)) -= v
  629. return *(*uintptr)(unsafe.Pointer(p))
  630. }
  631. func AssignAndPtrInt8(p uintptr, v int8) int8 {
  632. *(*int8)(unsafe.Pointer(p)) &= v
  633. return *(*int8)(unsafe.Pointer(p))
  634. }
  635. func AssignAndPtrInt16(p uintptr, v int16) int16 {
  636. *(*int16)(unsafe.Pointer(p)) &= v
  637. return *(*int16)(unsafe.Pointer(p))
  638. }
  639. func AssignAndPtrInt32(p uintptr, v int32) int32 {
  640. *(*int32)(unsafe.Pointer(p)) &= v
  641. return *(*int32)(unsafe.Pointer(p))
  642. }
  643. func AssignAndPtrInt64(p uintptr, v int64) int64 {
  644. *(*int64)(unsafe.Pointer(p)) &= v
  645. return *(*int64)(unsafe.Pointer(p))
  646. }
  647. func AssignAndPtrUint8(p uintptr, v uint8) uint8 {
  648. *(*uint8)(unsafe.Pointer(p)) &= v
  649. return *(*uint8)(unsafe.Pointer(p))
  650. }
  651. func AssignAndPtrUint16(p uintptr, v uint16) uint16 {
  652. *(*uint16)(unsafe.Pointer(p)) &= v
  653. return *(*uint16)(unsafe.Pointer(p))
  654. }
  655. func AssignAndPtrUint32(p uintptr, v uint32) uint32 {
  656. *(*uint32)(unsafe.Pointer(p)) &= v
  657. return *(*uint32)(unsafe.Pointer(p))
  658. }
  659. func AssignAndPtrUint64(p uintptr, v uint64) uint64 {
  660. *(*uint64)(unsafe.Pointer(p)) &= v
  661. return *(*uint64)(unsafe.Pointer(p))
  662. }
  663. func AssignAndPtrUintptr(p uintptr, v uintptr) uintptr {
  664. *(*uintptr)(unsafe.Pointer(p)) &= v
  665. return *(*uintptr)(unsafe.Pointer(p))
  666. }
  667. func AssignXorPtrInt8(p uintptr, v int8) int8 {
  668. *(*int8)(unsafe.Pointer(p)) ^= v
  669. return *(*int8)(unsafe.Pointer(p))
  670. }
  671. func AssignXorPtrInt16(p uintptr, v int16) int16 {
  672. *(*int16)(unsafe.Pointer(p)) ^= v
  673. return *(*int16)(unsafe.Pointer(p))
  674. }
  675. func AssignXorPtrInt32(p uintptr, v int32) int32 {
  676. *(*int32)(unsafe.Pointer(p)) ^= v
  677. return *(*int32)(unsafe.Pointer(p))
  678. }
  679. func AssignXorPtrInt64(p uintptr, v int64) int64 {
  680. *(*int64)(unsafe.Pointer(p)) ^= v
  681. return *(*int64)(unsafe.Pointer(p))
  682. }
  683. func AssignXorPtrUint8(p uintptr, v uint8) uint8 {
  684. *(*uint8)(unsafe.Pointer(p)) ^= v
  685. return *(*uint8)(unsafe.Pointer(p))
  686. }
  687. func AssignXorPtrUint16(p uintptr, v uint16) uint16 {
  688. *(*uint16)(unsafe.Pointer(p)) ^= v
  689. return *(*uint16)(unsafe.Pointer(p))
  690. }
  691. func AssignXorPtrUint32(p uintptr, v uint32) uint32 {
  692. *(*uint32)(unsafe.Pointer(p)) ^= v
  693. return *(*uint32)(unsafe.Pointer(p))
  694. }
  695. func AssignXorPtrUint64(p uintptr, v uint64) uint64 {
  696. *(*uint64)(unsafe.Pointer(p)) ^= v
  697. return *(*uint64)(unsafe.Pointer(p))
  698. }
  699. func AssignXorPtrUintptr(p uintptr, v uintptr) uintptr {
  700. *(*uintptr)(unsafe.Pointer(p)) ^= v
  701. return *(*uintptr)(unsafe.Pointer(p))
  702. }
  703. func AssignOrPtrInt8(p uintptr, v int8) int8 {
  704. *(*int8)(unsafe.Pointer(p)) |= v
  705. return *(*int8)(unsafe.Pointer(p))
  706. }
  707. func AssignOrPtrInt16(p uintptr, v int16) int16 {
  708. *(*int16)(unsafe.Pointer(p)) |= v
  709. return *(*int16)(unsafe.Pointer(p))
  710. }
  711. func AssignOrPtrInt32(p uintptr, v int32) int32 {
  712. *(*int32)(unsafe.Pointer(p)) |= v
  713. return *(*int32)(unsafe.Pointer(p))
  714. }
  715. func AssignOrPtrInt64(p uintptr, v int64) int64 {
  716. *(*int64)(unsafe.Pointer(p)) |= v
  717. return *(*int64)(unsafe.Pointer(p))
  718. }
  719. func AssignOrPtrUint8(p uintptr, v uint8) uint8 {
  720. *(*uint8)(unsafe.Pointer(p)) |= v
  721. return *(*uint8)(unsafe.Pointer(p))
  722. }
  723. func AssignOrPtrUint16(p uintptr, v uint16) uint16 {
  724. *(*uint16)(unsafe.Pointer(p)) |= v
  725. return *(*uint16)(unsafe.Pointer(p))
  726. }
  727. func AssignOrPtrUint32(p uintptr, v uint32) uint32 {
  728. *(*uint32)(unsafe.Pointer(p)) |= v
  729. return *(*uint32)(unsafe.Pointer(p))
  730. }
  731. func AssignOrPtrUint64(p uintptr, v uint64) uint64 {
  732. *(*uint64)(unsafe.Pointer(p)) |= v
  733. return *(*uint64)(unsafe.Pointer(p))
  734. }
  735. func AssignOrPtrUintptr(p uintptr, v uintptr) uintptr {
  736. *(*uintptr)(unsafe.Pointer(p)) |= v
  737. return *(*uintptr)(unsafe.Pointer(p))
  738. }
  739. func AssignShlPtrInt8(p uintptr, v int) int8 {
  740. *(*int8)(unsafe.Pointer(p)) <<= v
  741. return *(*int8)(unsafe.Pointer(p))
  742. }
  743. func AssignShlPtrInt16(p uintptr, v int) int16 {
  744. *(*int16)(unsafe.Pointer(p)) <<= v
  745. return *(*int16)(unsafe.Pointer(p))
  746. }
  747. func AssignShlPtrInt32(p uintptr, v int) int32 {
  748. *(*int32)(unsafe.Pointer(p)) <<= v
  749. return *(*int32)(unsafe.Pointer(p))
  750. }
  751. func AssignShlPtrInt64(p uintptr, v int) int64 {
  752. *(*int64)(unsafe.Pointer(p)) <<= v
  753. return *(*int64)(unsafe.Pointer(p))
  754. }
  755. func AssignShlPtrUint8(p uintptr, v int) uint8 {
  756. *(*uint8)(unsafe.Pointer(p)) <<= v
  757. return *(*uint8)(unsafe.Pointer(p))
  758. }
  759. func AssignShlPtrUint16(p uintptr, v int) uint16 {
  760. *(*uint16)(unsafe.Pointer(p)) <<= v
  761. return *(*uint16)(unsafe.Pointer(p))
  762. }
  763. func AssignShlPtrUint32(p uintptr, v int) uint32 {
  764. *(*uint32)(unsafe.Pointer(p)) <<= v
  765. return *(*uint32)(unsafe.Pointer(p))
  766. }
  767. func AssignShlPtrUint64(p uintptr, v int) uint64 {
  768. *(*uint64)(unsafe.Pointer(p)) <<= v
  769. return *(*uint64)(unsafe.Pointer(p))
  770. }
  771. func AssignShlPtrUintptr(p uintptr, v int) uintptr {
  772. *(*uintptr)(unsafe.Pointer(p)) <<= v
  773. return *(*uintptr)(unsafe.Pointer(p))
  774. }
  775. func AssignShrPtrInt8(p uintptr, v int) int8 {
  776. *(*int8)(unsafe.Pointer(p)) >>= v
  777. return *(*int8)(unsafe.Pointer(p))
  778. }
  779. func AssignShrPtrInt16(p uintptr, v int) int16 {
  780. *(*int16)(unsafe.Pointer(p)) >>= v
  781. return *(*int16)(unsafe.Pointer(p))
  782. }
  783. func AssignShrPtrInt32(p uintptr, v int) int32 {
  784. *(*int32)(unsafe.Pointer(p)) >>= v
  785. return *(*int32)(unsafe.Pointer(p))
  786. }
  787. func AssignShrPtrInt64(p uintptr, v int) int64 {
  788. *(*int64)(unsafe.Pointer(p)) >>= v
  789. return *(*int64)(unsafe.Pointer(p))
  790. }
  791. func AssignShrPtrUint8(p uintptr, v int) uint8 {
  792. *(*uint8)(unsafe.Pointer(p)) >>= v
  793. return *(*uint8)(unsafe.Pointer(p))
  794. }
  795. func AssignShrPtrUint16(p uintptr, v int) uint16 {
  796. *(*uint16)(unsafe.Pointer(p)) >>= v
  797. return *(*uint16)(unsafe.Pointer(p))
  798. }
  799. func AssignShrPtrUint32(p uintptr, v int) uint32 {
  800. *(*uint32)(unsafe.Pointer(p)) >>= v
  801. return *(*uint32)(unsafe.Pointer(p))
  802. }
  803. func AssignShrPtrUint64(p uintptr, v int) uint64 {
  804. *(*uint64)(unsafe.Pointer(p)) >>= v
  805. return *(*uint64)(unsafe.Pointer(p))
  806. }
  807. func AssignShrPtrUintptr(p uintptr, v int) uintptr {
  808. *(*uintptr)(unsafe.Pointer(p)) >>= v
  809. return *(*uintptr)(unsafe.Pointer(p))
  810. }
  811. func AssignShlInt8(p *int8, v int) int8 { *p <<= v; return *p }
  812. func AssignShlInt16(p *int16, v int) int16 { *p <<= v; return *p }
  813. func AssignShlInt32(p *int32, v int) int32 { *p <<= v; return *p }
  814. func AssignShlInt64(p *int64, v int) int64 { *p <<= v; return *p }
  815. func AssignShlUint8(p *uint8, v int) uint8 { *p <<= v; return *p }
  816. func AssignShlUint16(p *uint16, v int) uint16 { *p <<= v; return *p }
  817. func AssignShlUint32(p *uint32, v int) uint32 { *p <<= v; return *p }
  818. func AssignShlUint64(p *uint64, v int) uint64 { *p <<= v; return *p }
  819. func AssignShlUintptr(p *uintptr, v int) uintptr { *p <<= v; return *p }
  820. func AssignShrInt8(p *int8, v int) int8 { *p >>= v; return *p }
  821. func AssignShrInt16(p *int16, v int) int16 { *p >>= v; return *p }
  822. func AssignShrInt32(p *int32, v int) int32 { *p >>= v; return *p }
  823. func AssignShrInt64(p *int64, v int) int64 { *p >>= v; return *p }
  824. func AssignShrUint8(p *uint8, v int) uint8 { *p >>= v; return *p }
  825. func AssignShrUint16(p *uint16, v int) uint16 { *p >>= v; return *p }
  826. func AssignShrUint32(p *uint32, v int) uint32 { *p >>= v; return *p }
  827. func AssignShrUint64(p *uint64, v int) uint64 { *p >>= v; return *p }
  828. func AssignShrUintptr(p *uintptr, v int) uintptr { *p >>= v; return *p }
  829. func PreIncInt8(p *int8, d int8) int8 { *p += d; return *p }
  830. func PreIncInt16(p *int16, d int16) int16 { *p += d; return *p }
  831. func PreIncInt32(p *int32, d int32) int32 { *p += d; return *p }
  832. func PreIncInt64(p *int64, d int64) int64 { *p += d; return *p }
  833. func PreIncUint8(p *uint8, d uint8) uint8 { *p += d; return *p }
  834. func PreIncUint16(p *uint16, d uint16) uint16 { *p += d; return *p }
  835. func PreIncUint32(p *uint32, d uint32) uint32 { *p += d; return *p }
  836. func PreIncUint64(p *uint64, d uint64) uint64 { *p += d; return *p }
  837. func PreIncFloat32(p *float32, d float32) float32 { *p += d; return *p }
  838. func PreIncFloat64(p *float64, d float64) float64 { *p += d; return *p }
  839. func PreIncComplex64(p *complex64, d complex64) complex64 { *p += d; return *p }
  840. func PreIncComplex128(p *complex128, d complex128) complex128 { *p += d; return *p }
  841. func PreIncUintptr(p *uintptr, d uintptr) uintptr { *p += d; return *p }
  842. func PreIncAtomicInt32(p *int32, d int32) int32 { return atomic.AddInt32(p, d) }
  843. func PreIncAtomicInt64(p *int64, d int64) int64 { return atomic.AddInt64(p, d) }
  844. func PreIncAtomicUint32(p *uint32, d uint32) uint32 { return atomic.AddUint32(p, d) }
  845. func PreIncAtomicUint64(p *uint64, d uint64) uint64 { return atomic.AddUint64(p, d) }
  846. func PreIncAtomicUintptr(p *uintptr, d uintptr) uintptr { return atomic.AddUintptr(p, d) }
  847. func PreIncAtomicInt32P(p uintptr, d int32) int32 {
  848. return atomic.AddInt32((*int32)(unsafe.Pointer(p)), d)
  849. }
  850. func PreIncAtomicInt64P(p uintptr, d int64) int64 {
  851. return atomic.AddInt64((*int64)(unsafe.Pointer(p)), d)
  852. }
  853. func PreIncAtomicUint32P(p uintptr, d uint32) uint32 {
  854. return atomic.AddUint32((*uint32)(unsafe.Pointer(p)), d)
  855. }
  856. func PreIncAtomicUint64P(p uintptr, d uint64) uint64 {
  857. return atomic.AddUint64((*uint64)(unsafe.Pointer(p)), d)
  858. }
  859. func PreInrAtomicUintptrP(p uintptr, d uintptr) uintptr {
  860. return atomic.AddUintptr((*uintptr)(unsafe.Pointer(p)), d)
  861. }
  862. func PreDecInt8(p *int8, d int8) int8 { *p -= d; return *p }
  863. func PreDecInt16(p *int16, d int16) int16 { *p -= d; return *p }
  864. func PreDecInt32(p *int32, d int32) int32 { *p -= d; return *p }
  865. func PreDecInt64(p *int64, d int64) int64 { *p -= d; return *p }
  866. func PreDecUint8(p *uint8, d uint8) uint8 { *p -= d; return *p }
  867. func PreDecUint16(p *uint16, d uint16) uint16 { *p -= d; return *p }
  868. func PreDecUint32(p *uint32, d uint32) uint32 { *p -= d; return *p }
  869. func PreDecUint64(p *uint64, d uint64) uint64 { *p -= d; return *p }
  870. func PreDecFloat32(p *float32, d float32) float32 { *p -= d; return *p }
  871. func PreDecFloat64(p *float64, d float64) float64 { *p -= d; return *p }
  872. func PreDecComplex64(p *complex64, d complex64) complex64 { *p -= d; return *p }
  873. func PreDecComplex128(p *complex128, d complex128) complex128 { *p -= d; return *p }
  874. func PreDecUintptr(p *uintptr, d uintptr) uintptr { *p -= d; return *p }
  875. func PreDecAtomicInt32(p *int32, d int32) int32 { return atomic.AddInt32(p, -d) }
  876. func PreDecAtomicInt64(p *int64, d int64) int64 { return atomic.AddInt64(p, -d) }
  877. func PreDecAtomicUint32(p *uint32, d uint32) uint32 { return atomic.AddUint32(p, -d) }
  878. func PreDecAtomicUint64(p *uint64, d uint64) uint64 { return atomic.AddUint64(p, -d) }
  879. func PreDecAtomicUintptr(p *uintptr, d uintptr) uintptr { return atomic.AddUintptr(p, -d) }
  880. func PostIncInt8(p *int8, d int8) int8 { r := *p; *p += d; return r }
  881. func PostIncInt16(p *int16, d int16) int16 { r := *p; *p += d; return r }
  882. func PostIncInt32(p *int32, d int32) int32 { r := *p; *p += d; return r }
  883. func PostIncInt64(p *int64, d int64) int64 { r := *p; *p += d; return r }
  884. func PostIncUint8(p *uint8, d uint8) uint8 { r := *p; *p += d; return r }
  885. func PostIncUint16(p *uint16, d uint16) uint16 { r := *p; *p += d; return r }
  886. func PostIncUint32(p *uint32, d uint32) uint32 { r := *p; *p += d; return r }
  887. func PostIncUint64(p *uint64, d uint64) uint64 { r := *p; *p += d; return r }
  888. func PostIncFloat32(p *float32, d float32) float32 { r := *p; *p += d; return r }
  889. func PostIncFloat64(p *float64, d float64) float64 { r := *p; *p += d; return r }
  890. func PostIncComplex64(p *complex64, d complex64) complex64 { r := *p; *p += d; return r }
  891. func PostIncComplex128(p *complex128, d complex128) complex128 { r := *p; *p += d; return r }
  892. func PostIncUintptr(p *uintptr, d uintptr) uintptr { r := *p; *p += d; return r }
  893. func PostIncAtomicInt32(p *int32, d int32) int32 { return atomic.AddInt32(p, d) - d }
  894. func PostIncAtomicInt64(p *int64, d int64) int64 { return atomic.AddInt64(p, d) - d }
  895. func PostIncAtomicUint32(p *uint32, d uint32) uint32 { return atomic.AddUint32(p, d) - d }
  896. func PostIncAtomicUint64(p *uint64, d uint64) uint64 { return atomic.AddUint64(p, d) - d }
  897. func PostIncAtomicUintptr(p *uintptr, d uintptr) uintptr { return atomic.AddUintptr(p, d) - d }
  898. func PostIncAtomicInt32P(p uintptr, d int32) int32 {
  899. return atomic.AddInt32((*int32)(unsafe.Pointer(p)), d) - d
  900. }
  901. func PostIncAtomicInt64P(p uintptr, d int64) int64 {
  902. return atomic.AddInt64((*int64)(unsafe.Pointer(p)), d) - d
  903. }
  904. func PostIncAtomicUint32P(p uintptr, d uint32) uint32 {
  905. return atomic.AddUint32((*uint32)(unsafe.Pointer(p)), d) - d
  906. }
  907. func PostIncAtomicUint64P(p uintptr, d uint64) uint64 {
  908. return atomic.AddUint64((*uint64)(unsafe.Pointer(p)), d) - d
  909. }
  910. func PostIncAtomicUintptrP(p uintptr, d uintptr) uintptr {
  911. return atomic.AddUintptr((*uintptr)(unsafe.Pointer(p)), d) - d
  912. }
  913. func PostDecInt8(p *int8, d int8) int8 { r := *p; *p -= d; return r }
  914. func PostDecInt16(p *int16, d int16) int16 { r := *p; *p -= d; return r }
  915. func PostDecInt32(p *int32, d int32) int32 { r := *p; *p -= d; return r }
  916. func PostDecInt64(p *int64, d int64) int64 { r := *p; *p -= d; return r }
  917. func PostDecUint8(p *uint8, d uint8) uint8 { r := *p; *p -= d; return r }
  918. func PostDecUint16(p *uint16, d uint16) uint16 { r := *p; *p -= d; return r }
  919. func PostDecUint32(p *uint32, d uint32) uint32 { r := *p; *p -= d; return r }
  920. func PostDecUint64(p *uint64, d uint64) uint64 { r := *p; *p -= d; return r }
  921. func PostDecFloat32(p *float32, d float32) float32 { r := *p; *p -= d; return r }
  922. func PostDecFloat64(p *float64, d float64) float64 { r := *p; *p -= d; return r }
  923. func PostDecComplex64(p *complex64, d complex64) complex64 { r := *p; *p -= d; return r }
  924. func PostDecComplex128(p *complex128, d complex128) complex128 { r := *p; *p -= d; return r }
  925. func PostDecUintptr(p *uintptr, d uintptr) uintptr { r := *p; *p -= d; return r }
  926. func PostDecAtomicInt32(p *int32, d int32) int32 { return atomic.AddInt32(p, -d) + d }
  927. func PostDecAtomicInt64(p *int64, d int64) int64 { return atomic.AddInt64(p, -d) + d }
  928. func PostDecAtomicUint32(p *uint32, d uint32) uint32 { return atomic.AddUint32(p, -d) + d }
  929. func PostDecAtomicUint64(p *uint64, d uint64) uint64 { return atomic.AddUint64(p, -d) + d }
  930. func PostDecAtomicUintptr(p *uintptr, d uintptr) uintptr { return atomic.AddUintptr(p, -d) + d }
  931. func Int8FromInt8(n int8) int8 { return n }
  932. func Int8FromInt16(n int16) int8 { return int8(n) }
  933. func Int8FromInt32(n int32) int8 { return int8(n) }
  934. func Int8FromInt64(n int64) int8 { return int8(n) }
  935. func Int8FromUint8(n uint8) int8 { return int8(n) }
  936. func Int8FromUint16(n uint16) int8 { return int8(n) }
  937. func Int8FromUint32(n uint32) int8 { return int8(n) }
  938. func Int8FromUint64(n uint64) int8 { return int8(n) }
  939. func Int8FromFloat32(n float32) int8 { return int8(n) }
  940. func Int8FromFloat64(n float64) int8 { return int8(n) }
  941. func Int8FromComplex64(n complex64) int8 { return int8(real(n)) }
  942. func Int8FromComplex128(n complex128) int8 { return int8(real(n)) }
  943. func Int8FromUintptr(n uintptr) int8 { return int8(n) }
  944. func Int16FromInt8(n int8) int16 { return int16(n) }
  945. func Int16FromInt16(n int16) int16 { return n }
  946. func Int16FromInt32(n int32) int16 { return int16(n) }
  947. func Int16FromInt64(n int64) int16 { return int16(n) }
  948. func Int16FromUint8(n uint8) int16 { return int16(n) }
  949. func Int16FromUint16(n uint16) int16 { return int16(n) }
  950. func Int16FromUint32(n uint32) int16 { return int16(n) }
  951. func Int16FromUint64(n uint64) int16 { return int16(n) }
  952. func Int16FromFloat32(n float32) int16 { return int16(n) }
  953. func Int16FromFloat64(n float64) int16 { return int16(n) }
  954. func Int16FromComplex64(n complex64) int16 { return int16(real(n)) }
  955. func Int16FromComplex128(n complex128) int16 { return int16(real(n)) }
  956. func Int16FromUintptr(n uintptr) int16 { return int16(n) }
  957. func Int32FromInt8(n int8) int32 { return int32(n) }
  958. func Int32FromInt16(n int16) int32 { return int32(n) }
  959. func Int32FromInt32(n int32) int32 { return n }
  960. func Int32FromInt64(n int64) int32 { return int32(n) }
  961. func Int32FromUint8(n uint8) int32 { return int32(n) }
  962. func Int32FromUint16(n uint16) int32 { return int32(n) }
  963. func Int32FromUint32(n uint32) int32 { return int32(n) }
  964. func Int32FromUint64(n uint64) int32 { return int32(n) }
  965. func Int32FromFloat32(n float32) int32 { return int32(n) }
  966. func Int32FromFloat64(n float64) int32 { return int32(n) }
  967. func Int32FromComplex64(n complex64) int32 { return int32(real(n)) }
  968. func Int32FromComplex128(n complex128) int32 { return int32(real(n)) }
  969. func Int32FromUintptr(n uintptr) int32 { return int32(n) }
  970. func Int64FromInt8(n int8) int64 { return int64(n) }
  971. func Int64FromInt16(n int16) int64 { return int64(n) }
  972. func Int64FromInt32(n int32) int64 { return int64(n) }
  973. func Int64FromInt64(n int64) int64 { return n }
  974. func Int64FromUint8(n uint8) int64 { return int64(n) }
  975. func Int64FromUint16(n uint16) int64 { return int64(n) }
  976. func Int64FromUint32(n uint32) int64 { return int64(n) }
  977. func Int64FromUint64(n uint64) int64 { return int64(n) }
  978. func Int64FromFloat32(n float32) int64 { return int64(n) }
  979. func Int64FromFloat64(n float64) int64 { return int64(n) }
  980. func Int64FromComplex64(n complex64) int64 { return int64(real(n)) }
  981. func Int64FromComplex128(n complex128) int64 { return int64(real(n)) }
  982. func Int64FromUintptr(n uintptr) int64 { return int64(n) }
  983. func Uint8FromInt8(n int8) uint8 { return uint8(n) }
  984. func Uint8FromInt16(n int16) uint8 { return uint8(n) }
  985. func Uint8FromInt32(n int32) uint8 { return uint8(n) }
  986. func Uint8FromInt64(n int64) uint8 { return uint8(n) }
  987. func Uint8FromUint8(n uint8) uint8 { return n }
  988. func Uint8FromUint16(n uint16) uint8 { return uint8(n) }
  989. func Uint8FromUint32(n uint32) uint8 { return uint8(n) }
  990. func Uint8FromUint64(n uint64) uint8 { return uint8(n) }
  991. func Uint8FromFloat32(n float32) uint8 { return uint8(n) }
  992. func Uint8FromFloat64(n float64) uint8 { return uint8(n) }
  993. func Uint8FromComplex64(n complex64) uint8 { return uint8(real(n)) }
  994. func Uint8FromComplex128(n complex128) uint8 { return uint8(real(n)) }
  995. func Uint8FromUintptr(n uintptr) uint8 { return uint8(n) }
  996. func Uint16FromInt8(n int8) uint16 { return uint16(n) }
  997. func Uint16FromInt16(n int16) uint16 { return uint16(n) }
  998. func Uint16FromInt32(n int32) uint16 { return uint16(n) }
  999. func Uint16FromInt64(n int64) uint16 { return uint16(n) }
  1000. func Uint16FromUint8(n uint8) uint16 { return uint16(n) }
  1001. func Uint16FromUint16(n uint16) uint16 { return n }
  1002. func Uint16FromUint32(n uint32) uint16 { return uint16(n) }
  1003. func Uint16FromUint64(n uint64) uint16 { return uint16(n) }
  1004. func Uint16FromFloat32(n float32) uint16 { return uint16(n) }
  1005. func Uint16FromFloat64(n float64) uint16 { return uint16(n) }
  1006. func Uint16FromComplex64(n complex64) uint16 { return uint16(real(n)) }
  1007. func Uint16FromComplex128(n complex128) uint16 { return uint16(real(n)) }
  1008. func Uint16FromUintptr(n uintptr) uint16 { return uint16(n) }
  1009. func Uint32FromInt8(n int8) uint32 { return uint32(n) }
  1010. func Uint32FromInt16(n int16) uint32 { return uint32(n) }
  1011. func Uint32FromInt32(n int32) uint32 { return uint32(n) }
  1012. func Uint32FromInt64(n int64) uint32 { return uint32(n) }
  1013. func Uint32FromUint8(n uint8) uint32 { return uint32(n) }
  1014. func Uint32FromUint16(n uint16) uint32 { return uint32(n) }
  1015. func Uint32FromUint32(n uint32) uint32 { return n }
  1016. func Uint32FromUint64(n uint64) uint32 { return uint32(n) }
  1017. func Uint32FromFloat32(n float32) uint32 { return uint32(n) }
  1018. func Uint32FromFloat64(n float64) uint32 { return uint32(n) }
  1019. func Uint32FromComplex64(n complex64) uint32 { return uint32(real(n)) }
  1020. func Uint32FromComplex128(n complex128) uint32 { return uint32(real(n)) }
  1021. func Uint32FromUintptr(n uintptr) uint32 { return uint32(n) }
  1022. func Uint64FromInt8(n int8) uint64 { return uint64(n) }
  1023. func Uint64FromInt16(n int16) uint64 { return uint64(n) }
  1024. func Uint64FromInt32(n int32) uint64 { return uint64(n) }
  1025. func Uint64FromInt64(n int64) uint64 { return uint64(n) }
  1026. func Uint64FromUint8(n uint8) uint64 { return uint64(n) }
  1027. func Uint64FromUint16(n uint16) uint64 { return uint64(n) }
  1028. func Uint64FromUint32(n uint32) uint64 { return uint64(n) }
  1029. func Uint64FromUint64(n uint64) uint64 { return n }
  1030. func Uint64FromFloat32(n float32) uint64 { return uint64(n) }
  1031. func Uint64FromFloat64(n float64) uint64 { return uint64(n) }
  1032. func Uint64FromComplex64(n complex64) uint64 { return uint64(real(n)) }
  1033. func Uint64FromComplex128(n complex128) uint64 { return uint64(real(n)) }
  1034. func Uint64FromUintptr(n uintptr) uint64 { return uint64(n) }
  1035. func Float32FromInt8(n int8) float32 { return float32(n) }
  1036. func Float32FromInt16(n int16) float32 { return float32(n) }
  1037. func Float32FromInt32(n int32) float32 { return float32(n) }
  1038. func Float32FromInt64(n int64) float32 { return float32(n) }
  1039. func Float32FromUint8(n uint8) float32 { return float32(n) }
  1040. func Float32FromUint16(n uint16) float32 { return float32(n) }
  1041. func Float32FromUint32(n uint32) float32 { return float32(n) }
  1042. func Float32FromUint64(n uint64) float32 { return float32(n) }
  1043. func Float32FromFloat32(n float32) float32 { return n }
  1044. func Float32FromFloat64(n float64) float32 { return float32(n) }
  1045. func Float32FromComplex64(n complex64) float32 { return real(n) }
  1046. func Float32FromComplex128(n complex128) float32 { return float32(real(n)) }
  1047. func Float32FromUintptr(n uintptr) float32 { return float32(n) }
  1048. func Float64FromInt8(n int8) float64 { return float64(n) }
  1049. func Float64FromInt16(n int16) float64 { return float64(n) }
  1050. func Float64FromInt32(n int32) float64 { return float64(n) }
  1051. func Float64FromInt64(n int64) float64 { return float64(n) }
  1052. func Float64FromUint8(n uint8) float64 { return float64(n) }
  1053. func Float64FromUint16(n uint16) float64 { return float64(n) }
  1054. func Float64FromUint32(n uint32) float64 { return float64(n) }
  1055. func Float64FromUint64(n uint64) float64 { return float64(n) }
  1056. func Float64FromFloat32(n float32) float64 { return float64(n) }
  1057. func Float64FromFloat64(n float64) float64 { return n }
  1058. func Float64FromComplex64(n complex64) float64 { return float64(real(n)) }
  1059. func Float64FromComplex128(n complex128) float64 { return real(n) }
  1060. func Float64FromUintptr(n uintptr) float64 { return float64(n) }
  1061. func Complex64FromInt8(n int8) complex64 { return complex(float32(n), 0) }
  1062. func Complex64FromInt16(n int16) complex64 { return complex(float32(n), 0) }
  1063. func Complex64FromInt32(n int32) complex64 { return complex(float32(n), 0) }
  1064. func Complex64FromInt64(n int64) complex64 { return complex(float32(n), 0) }
  1065. func Complex64FromUint8(n uint8) complex64 { return complex(float32(n), 0) }
  1066. func Complex64FromUint16(n uint16) complex64 { return complex(float32(n), 0) }
  1067. func Complex64FromUint32(n uint32) complex64 { return complex(float32(n), 0) }
  1068. func Complex64FromUint64(n uint64) complex64 { return complex(float32(n), 0) }
  1069. func Complex64FromFloat32(n float32) complex64 { return complex(n, 0) }
  1070. func Complex64FromFloat64(n float64) complex64 { return complex(float32(n), 0) }
  1071. func Complex64FromComplex64(n complex64) complex64 { return n }
  1072. func Complex64FromComplex128(n complex128) complex64 { return complex64(n) }
  1073. func Complex64FromUintptr(n uintptr) complex64 { return complex(float32(n), 0) }
  1074. func Complex128FromInt8(n int8) complex128 { return complex(float64(n), 0) }
  1075. func Complex128FromInt16(n int16) complex128 { return complex(float64(n), 0) }
  1076. func Complex128FromInt32(n int32) complex128 { return complex(float64(n), 0) }
  1077. func Complex128FromInt64(n int64) complex128 { return complex(float64(n), 0) }
  1078. func Complex128FromUint8(n uint8) complex128 { return complex(float64(n), 0) }
  1079. func Complex128FromUint16(n uint16) complex128 { return complex(float64(n), 0) }
  1080. func Complex128FromUint32(n uint32) complex128 { return complex(float64(n), 0) }
  1081. func Complex128FromUint64(n uint64) complex128 { return complex(float64(n), 0) }
  1082. func Complex128FromFloat32(n float32) complex128 { return complex(float64(n), 0) }
  1083. func Complex128FromFloat64(n float64) complex128 { return complex(n, 0) }
  1084. func Complex128FromComplex64(n complex64) complex128 { return complex128(n) }
  1085. func Complex128FromComplex128(n complex128) complex128 { return n }
  1086. func Complex128FromUintptr(n uintptr) complex128 { return complex(float64(n), 0) }
  1087. func UintptrFromInt8(n int8) uintptr { return uintptr(n) }
  1088. func UintptrFromInt16(n int16) uintptr { return uintptr(n) }
  1089. func UintptrFromInt32(n int32) uintptr { return uintptr(n) }
  1090. func UintptrFromInt64(n int64) uintptr { return uintptr(n) }
  1091. func UintptrFromUint8(n uint8) uintptr { return uintptr(n) }
  1092. func UintptrFromUint16(n uint16) uintptr { return uintptr(n) }
  1093. func UintptrFromUint32(n uint32) uintptr { return uintptr(n) }
  1094. func UintptrFromUint64(n uint64) uintptr { return uintptr(n) }
  1095. func UintptrFromFloat32(n float32) uintptr { return uintptr(n) }
  1096. func UintptrFromFloat64(n float64) uintptr { return uintptr(n) }
  1097. func UintptrFromComplex64(n complex64) uintptr { return uintptr(real(n)) }
  1098. func UintptrFromComplex128(n complex128) uintptr { return uintptr(real(n)) }
  1099. func UintptrFromUintptr(n uintptr) uintptr { return n }
  1100. func Int8(n int8) int8 { return n }
  1101. func Int16(n int16) int16 { return n }
  1102. func Int32(n int32) int32 { return n }
  1103. func Int64(n int64) int64 { return n }
  1104. func Uint8(n uint8) uint8 { return n }
  1105. func Uint16(n uint16) uint16 { return n }
  1106. func Uint32(n uint32) uint32 { return n }
  1107. func Uint64(n uint64) uint64 { return n }
  1108. func Float32(n float32) float32 { return n }
  1109. func Float64(n float64) float64 { return n }
  1110. func Complex64(n complex64) complex64 { return n }
  1111. func Complex128(n complex128) complex128 { return n }
  1112. func Uintptr(n uintptr) uintptr { return n }
  1113. func NegInt8(n int8) int8 { return -n }
  1114. func NegInt16(n int16) int16 { return -n }
  1115. func NegInt32(n int32) int32 { return -n }
  1116. func NegInt64(n int64) int64 { return -n }
  1117. func NegUint8(n uint8) uint8 { return -n }
  1118. func NegUint16(n uint16) uint16 { return -n }
  1119. func NegUint32(n uint32) uint32 { return -n }
  1120. func NegUint64(n uint64) uint64 { return -n }
  1121. func NegUintptr(n uintptr) uintptr { return -n }
  1122. func CplInt8(n int8) int8 { return ^n }
  1123. func CplInt16(n int16) int16 { return ^n }
  1124. func CplInt32(n int32) int32 { return ^n }
  1125. func CplInt64(n int64) int64 { return ^n }
  1126. func CplUint8(n uint8) uint8 { return ^n }
  1127. func CplUint16(n uint16) uint16 { return ^n }
  1128. func CplUint32(n uint32) uint32 { return ^n }
  1129. func CplUint64(n uint64) uint64 { return ^n }
  1130. func CplUintptr(n uintptr) uintptr { return ^n }
  1131. func BoolInt8(b bool) int8 {
  1132. if b {
  1133. return 1
  1134. }
  1135. return 0
  1136. }
  1137. func BoolInt16(b bool) int16 {
  1138. if b {
  1139. return 1
  1140. }
  1141. return 0
  1142. }
  1143. func BoolInt32(b bool) int32 {
  1144. if b {
  1145. return 1
  1146. }
  1147. return 0
  1148. }
  1149. func BoolInt64(b bool) int64 {
  1150. if b {
  1151. return 1
  1152. }
  1153. return 0
  1154. }
  1155. func BoolUint8(b bool) uint8 {
  1156. if b {
  1157. return 1
  1158. }
  1159. return 0
  1160. }
  1161. func BoolUint16(b bool) uint16 {
  1162. if b {
  1163. return 1
  1164. }
  1165. return 0
  1166. }
  1167. func BoolUint32(b bool) uint32 {
  1168. if b {
  1169. return 1
  1170. }
  1171. return 0
  1172. }
  1173. func BoolUint64(b bool) uint64 {
  1174. if b {
  1175. return 1
  1176. }
  1177. return 0
  1178. }
  1179. func BoolUintptr(b bool) uintptr {
  1180. if b {
  1181. return 1
  1182. }
  1183. return 0
  1184. }
  1185. func SetBitFieldPtr8Int8(p uintptr, v int8, off int, mask uint8) {
  1186. *(*uint8)(unsafe.Pointer(p)) = *(*uint8)(unsafe.Pointer(p))&^mask | uint8(v)<<off&mask
  1187. }
  1188. func SetBitFieldPtr8Int16(p uintptr, v int16, off int, mask uint8) {
  1189. *(*uint8)(unsafe.Pointer(p)) = *(*uint8)(unsafe.Pointer(p))&^mask | uint8(v)<<off&mask
  1190. }
  1191. func SetBitFieldPtr8Int32(p uintptr, v int32, off int, mask uint8) {
  1192. *(*uint8)(unsafe.Pointer(p)) = *(*uint8)(unsafe.Pointer(p))&^mask | uint8(v)<<off&mask
  1193. }
  1194. func SetBitFieldPtr8Int64(p uintptr, v int64, off int, mask uint8) {
  1195. *(*uint8)(unsafe.Pointer(p)) = *(*uint8)(unsafe.Pointer(p))&^mask | uint8(v)<<off&mask
  1196. }
  1197. func SetBitFieldPtr8Uint8(p uintptr, v uint8, off int, mask uint8) {
  1198. *(*uint8)(unsafe.Pointer(p)) = *(*uint8)(unsafe.Pointer(p))&^mask | v<<off&mask
  1199. }
  1200. func SetBitFieldPtr8Uint16(p uintptr, v uint16, off int, mask uint8) {
  1201. *(*uint8)(unsafe.Pointer(p)) = *(*uint8)(unsafe.Pointer(p))&^mask | uint8(v)<<off&mask
  1202. }
  1203. func SetBitFieldPtr8Uint32(p uintptr, v uint32, off int, mask uint8) {
  1204. *(*uint8)(unsafe.Pointer(p)) = *(*uint8)(unsafe.Pointer(p))&^mask | uint8(v)<<off&mask
  1205. }
  1206. func SetBitFieldPtr8Uint64(p uintptr, v uint64, off int, mask uint8) {
  1207. *(*uint8)(unsafe.Pointer(p)) = *(*uint8)(unsafe.Pointer(p))&^mask | uint8(v)<<off&mask
  1208. }
  1209. func SetBitFieldPtr16Int8(p uintptr, v int8, off int, mask uint16) {
  1210. *(*uint16)(unsafe.Pointer(p)) = *(*uint16)(unsafe.Pointer(p))&^mask | uint16(v)<<off&mask
  1211. }
  1212. func SetBitFieldPtr16Int16(p uintptr, v int16, off int, mask uint16) {
  1213. *(*uint16)(unsafe.Pointer(p)) = *(*uint16)(unsafe.Pointer(p))&^mask | uint16(v)<<off&mask
  1214. }
  1215. func SetBitFieldPtr16Int32(p uintptr, v int32, off int, mask uint16) {
  1216. *(*uint16)(unsafe.Pointer(p)) = *(*uint16)(unsafe.Pointer(p))&^mask | uint16(v)<<off&mask
  1217. }
  1218. func SetBitFieldPtr16Int64(p uintptr, v int64, off int, mask uint16) {
  1219. *(*uint16)(unsafe.Pointer(p)) = *(*uint16)(unsafe.Pointer(p))&^mask | uint16(v)<<off&mask
  1220. }
  1221. func SetBitFieldPtr16Uint8(p uintptr, v uint8, off int, mask uint16) {
  1222. *(*uint16)(unsafe.Pointer(p)) = *(*uint16)(unsafe.Pointer(p))&^mask | uint16(v)<<off&mask
  1223. }
  1224. func SetBitFieldPtr16Uint16(p uintptr, v uint16, off int, mask uint16) {
  1225. *(*uint16)(unsafe.Pointer(p)) = *(*uint16)(unsafe.Pointer(p))&^mask | v<<off&mask
  1226. }
  1227. func SetBitFieldPtr16Uint32(p uintptr, v uint32, off int, mask uint16) {
  1228. *(*uint16)(unsafe.Pointer(p)) = *(*uint16)(unsafe.Pointer(p))&^mask | uint16(v)<<off&mask
  1229. }
  1230. func SetBitFieldPtr16Uint64(p uintptr, v uint64, off int, mask uint16) {
  1231. *(*uint16)(unsafe.Pointer(p)) = *(*uint16)(unsafe.Pointer(p))&^mask | uint16(v)<<off&mask
  1232. }
  1233. func SetBitFieldPtr32Int8(p uintptr, v int8, off int, mask uint32) {
  1234. *(*uint32)(unsafe.Pointer(p)) = *(*uint32)(unsafe.Pointer(p))&^mask | uint32(v)<<off&mask
  1235. }
  1236. func SetBitFieldPtr32Int16(p uintptr, v int16, off int, mask uint32) {
  1237. *(*uint32)(unsafe.Pointer(p)) = *(*uint32)(unsafe.Pointer(p))&^mask | uint32(v)<<off&mask
  1238. }
  1239. func SetBitFieldPtr32Int32(p uintptr, v int32, off int, mask uint32) {
  1240. *(*uint32)(unsafe.Pointer(p)) = *(*uint32)(unsafe.Pointer(p))&^mask | uint32(v)<<off&mask
  1241. }
  1242. func SetBitFieldPtr32Int64(p uintptr, v int64, off int, mask uint32) {
  1243. *(*uint32)(unsafe.Pointer(p)) = *(*uint32)(unsafe.Pointer(p))&^mask | uint32(v)<<off&mask
  1244. }
  1245. func SetBitFieldPtr32Uint8(p uintptr, v uint8, off int, mask uint32) {
  1246. *(*uint32)(unsafe.Pointer(p)) = *(*uint32)(unsafe.Pointer(p))&^mask | uint32(v)<<off&mask
  1247. }
  1248. func SetBitFieldPtr32Uint16(p uintptr, v uint16, off int, mask uint32) {
  1249. *(*uint32)(unsafe.Pointer(p)) = *(*uint32)(unsafe.Pointer(p))&^mask | uint32(v)<<off&mask
  1250. }
  1251. func SetBitFieldPtr32Uint32(p uintptr, v uint32, off int, mask uint32) {
  1252. *(*uint32)(unsafe.Pointer(p)) = *(*uint32)(unsafe.Pointer(p))&^mask | v<<off&mask
  1253. }
  1254. func SetBitFieldPtr32Uint64(p uintptr, v uint64, off int, mask uint32) {
  1255. *(*uint32)(unsafe.Pointer(p)) = *(*uint32)(unsafe.Pointer(p))&^mask | uint32(v)<<off&mask
  1256. }
  1257. func SetBitFieldPtr64Int8(p uintptr, v int8, off int, mask uint64) {
  1258. *(*uint64)(unsafe.Pointer(p)) = *(*uint64)(unsafe.Pointer(p))&^mask | uint64(v)<<off&mask
  1259. }
  1260. func SetBitFieldPtr64Int16(p uintptr, v int16, off int, mask uint64) {
  1261. *(*uint64)(unsafe.Pointer(p)) = *(*uint64)(unsafe.Pointer(p))&^mask | uint64(v)<<off&mask
  1262. }
  1263. func SetBitFieldPtr64Int32(p uintptr, v int32, off int, mask uint64) {
  1264. *(*uint64)(unsafe.Pointer(p)) = *(*uint64)(unsafe.Pointer(p))&^mask | uint64(v)<<off&mask
  1265. }
  1266. func SetBitFieldPtr64Int64(p uintptr, v int64, off int, mask uint64) {
  1267. *(*uint64)(unsafe.Pointer(p)) = *(*uint64)(unsafe.Pointer(p))&^mask | uint64(v)<<off&mask
  1268. }
  1269. func SetBitFieldPtr64Uint8(p uintptr, v uint8, off int, mask uint64) {
  1270. *(*uint64)(unsafe.Pointer(p)) = *(*uint64)(unsafe.Pointer(p))&^mask | uint64(v)<<off&mask
  1271. }
  1272. func SetBitFieldPtr64Uint16(p uintptr, v uint16, off int, mask uint64) {
  1273. *(*uint64)(unsafe.Pointer(p)) = *(*uint64)(unsafe.Pointer(p))&^mask | uint64(v)<<off&mask
  1274. }
  1275. func SetBitFieldPtr64Uint32(p uintptr, v uint32, off int, mask uint64) {
  1276. *(*uint64)(unsafe.Pointer(p)) = *(*uint64)(unsafe.Pointer(p))&^mask | uint64(v)<<off&mask
  1277. }
  1278. func SetBitFieldPtr64Uint64(p uintptr, v uint64, off int, mask uint64) {
  1279. *(*uint64)(unsafe.Pointer(p)) = *(*uint64)(unsafe.Pointer(p))&^mask | v<<off&mask
  1280. }
  1281. func AssignBitFieldPtr8Int8(p uintptr, v int8, w, off int, mask uint8) int8 {
  1282. *(*uint8)(unsafe.Pointer(p)) = *(*uint8)(unsafe.Pointer(p))&^mask | uint8(v)<<off&mask
  1283. s := 8 - w
  1284. return v << s >> s
  1285. }
  1286. func AssignBitFieldPtr8Int16(p uintptr, v int16, w, off int, mask uint8) int16 {
  1287. *(*uint8)(unsafe.Pointer(p)) = *(*uint8)(unsafe.Pointer(p))&^mask | uint8(v)<<off&mask
  1288. s := 16 - w
  1289. return v << s >> s
  1290. }
  1291. func AssignBitFieldPtr8Int32(p uintptr, v int32, w, off int, mask uint8) int32 {
  1292. *(*uint8)(unsafe.Pointer(p)) = *(*uint8)(unsafe.Pointer(p))&^mask | uint8(v)<<off&mask
  1293. s := 32 - w
  1294. return v << s >> s
  1295. }
  1296. func AssignBitFieldPtr8Int64(p uintptr, v int64, w, off int, mask uint8) int64 {
  1297. *(*uint8)(unsafe.Pointer(p)) = *(*uint8)(unsafe.Pointer(p))&^mask | uint8(v)<<off&mask
  1298. s := 64 - w
  1299. return v << s >> s
  1300. }
  1301. func AssignBitFieldPtr16Int8(p uintptr, v int8, w, off int, mask uint16) int8 {
  1302. *(*uint16)(unsafe.Pointer(p)) = *(*uint16)(unsafe.Pointer(p))&^mask | uint16(v)<<off&mask
  1303. s := 8 - w
  1304. return v << s >> s
  1305. }
  1306. func AssignBitFieldPtr16Int16(p uintptr, v int16, w, off int, mask uint16) int16 {
  1307. *(*uint16)(unsafe.Pointer(p)) = *(*uint16)(unsafe.Pointer(p))&^mask | uint16(v)<<off&mask
  1308. s := 16 - w
  1309. return v << s >> s
  1310. }
  1311. func AssignBitFieldPtr16Int32(p uintptr, v int32, w, off int, mask uint16) int32 {
  1312. *(*uint16)(unsafe.Pointer(p)) = *(*uint16)(unsafe.Pointer(p))&^mask | uint16(v)<<off&mask
  1313. s := 32 - w
  1314. return v << s >> s
  1315. }
  1316. func AssignBitFieldPtr16Int64(p uintptr, v int64, w, off int, mask uint16) int64 {
  1317. *(*uint16)(unsafe.Pointer(p)) = *(*uint16)(unsafe.Pointer(p))&^mask | uint16(v)<<off&mask
  1318. s := 64 - w
  1319. return v << s >> s
  1320. }
  1321. func AssignBitFieldPtr32Int8(p uintptr, v int8, w, off int, mask uint32) int8 {
  1322. *(*uint32)(unsafe.Pointer(p)) = *(*uint32)(unsafe.Pointer(p))&^mask | uint32(v)<<off&mask
  1323. s := 8 - w
  1324. return v << s >> s
  1325. }
  1326. func AssignBitFieldPtr32Int16(p uintptr, v int16, w, off int, mask uint32) int16 {
  1327. *(*uint32)(unsafe.Pointer(p)) = *(*uint32)(unsafe.Pointer(p))&^mask | uint32(v)<<off&mask
  1328. s := 16 - w
  1329. return v << s >> s
  1330. }
  1331. func AssignBitFieldPtr32Int32(p uintptr, v int32, w, off int, mask uint32) int32 {
  1332. *(*uint32)(unsafe.Pointer(p)) = *(*uint32)(unsafe.Pointer(p))&^mask | uint32(v)<<off&mask
  1333. s := 32 - w
  1334. return v << s >> s
  1335. }
  1336. func AssignBitFieldPtr32Int64(p uintptr, v int64, w, off int, mask uint32) int64 {
  1337. *(*uint32)(unsafe.Pointer(p)) = *(*uint32)(unsafe.Pointer(p))&^mask | uint32(v)<<off&mask
  1338. s := 64 - w
  1339. return v << s >> s
  1340. }
  1341. func AssignBitFieldPtr64Int8(p uintptr, v int8, w, off int, mask uint64) int8 {
  1342. *(*uint64)(unsafe.Pointer(p)) = *(*uint64)(unsafe.Pointer(p))&^mask | uint64(v)<<off&mask
  1343. s := 8 - w
  1344. return v << s >> s
  1345. }
  1346. func AssignBitFieldPtr64Int16(p uintptr, v int16, w, off int, mask uint64) int16 {
  1347. *(*uint64)(unsafe.Pointer(p)) = *(*uint64)(unsafe.Pointer(p))&^mask | uint64(v)<<off&mask
  1348. s := 16 - w
  1349. return v << s >> s
  1350. }
  1351. func AssignBitFieldPtr64Int32(p uintptr, v int32, w, off int, mask uint64) int32 {
  1352. *(*uint64)(unsafe.Pointer(p)) = *(*uint64)(unsafe.Pointer(p))&^mask | uint64(v)<<off&mask
  1353. s := 32 - w
  1354. return v << s >> s
  1355. }
  1356. func AssignBitFieldPtr64Int64(p uintptr, v int64, w, off int, mask uint64) int64 {
  1357. *(*uint64)(unsafe.Pointer(p)) = *(*uint64)(unsafe.Pointer(p))&^mask | uint64(v)<<off&mask
  1358. s := 64 - w
  1359. return v << s >> s
  1360. }
  1361. func AssignBitFieldPtr8Uint8(p uintptr, v uint8, w, off int, mask uint8) uint8 {
  1362. *(*uint8)(unsafe.Pointer(p)) = *(*uint8)(unsafe.Pointer(p))&^mask | v<<off&mask
  1363. return v & (mask >> off)
  1364. }
  1365. func AssignBitFieldPtr8Uint16(p uintptr, v uint16, w, off int, mask uint8) uint16 {
  1366. *(*uint8)(unsafe.Pointer(p)) = *(*uint8)(unsafe.Pointer(p))&^mask | uint8(v)<<off&mask
  1367. return v & uint16(mask>>off)
  1368. }
  1369. func AssignBitFieldPtr8Uint32(p uintptr, v uint32, w, off int, mask uint8) uint32 {
  1370. *(*uint8)(unsafe.Pointer(p)) = *(*uint8)(unsafe.Pointer(p))&^mask | uint8(v)<<off&mask
  1371. return v & uint32(mask>>off)
  1372. }
  1373. func AssignBitFieldPtr8Uint64(p uintptr, v uint64, w, off int, mask uint8) uint64 {
  1374. *(*uint8)(unsafe.Pointer(p)) = *(*uint8)(unsafe.Pointer(p))&^mask | uint8(v)<<off&mask
  1375. return v & uint64(mask>>off)
  1376. }
  1377. func AssignBitFieldPtr16Uint8(p uintptr, v uint8, w, off int, mask uint16) uint8 {
  1378. *(*uint16)(unsafe.Pointer(p)) = *(*uint16)(unsafe.Pointer(p))&^mask | uint16(v)<<off&mask
  1379. return v & uint8(mask>>off)
  1380. }
  1381. func AssignBitFieldPtr16Uint16(p uintptr, v uint16, w, off int, mask uint16) uint16 {
  1382. *(*uint16)(unsafe.Pointer(p)) = *(*uint16)(unsafe.Pointer(p))&^mask | v<<off&mask
  1383. return v & (mask >> off)
  1384. }
  1385. func AssignBitFieldPtr16Uint32(p uintptr, v uint32, w, off int, mask uint16) uint32 {
  1386. *(*uint16)(unsafe.Pointer(p)) = *(*uint16)(unsafe.Pointer(p))&^mask | uint16(v)<<off&mask
  1387. return v & uint32(mask>>off)
  1388. }
  1389. func AssignBitFieldPtr16Uint64(p uintptr, v uint64, w, off int, mask uint16) uint64 {
  1390. *(*uint16)(unsafe.Pointer(p)) = *(*uint16)(unsafe.Pointer(p))&^mask | uint16(v)<<off&mask
  1391. return v & uint64(mask>>off)
  1392. }
  1393. func AssignBitFieldPtr32Uint8(p uintptr, v uint8, w, off int, mask uint32) uint8 {
  1394. *(*uint32)(unsafe.Pointer(p)) = *(*uint32)(unsafe.Pointer(p))&^mask | uint32(v)<<off&mask
  1395. return v & uint8(mask>>off)
  1396. }
  1397. func AssignBitFieldPtr32Uint16(p uintptr, v uint16, w, off int, mask uint32) uint16 {
  1398. *(*uint32)(unsafe.Pointer(p)) = *(*uint32)(unsafe.Pointer(p))&^mask | uint32(v)<<off&mask
  1399. return v & uint16(mask>>off)
  1400. }
  1401. func AssignBitFieldPtr32Uint32(p uintptr, v uint32, w, off int, mask uint32) uint32 {
  1402. *(*uint32)(unsafe.Pointer(p)) = *(*uint32)(unsafe.Pointer(p))&^mask | v<<off&mask
  1403. return v & (mask >> off)
  1404. }
  1405. func AssignBitFieldPtr32Uint64(p uintptr, v uint64, w, off int, mask uint32) uint64 {
  1406. *(*uint32)(unsafe.Pointer(p)) = *(*uint32)(unsafe.Pointer(p))&^mask | uint32(v)<<off&mask
  1407. return v & uint64(mask>>off)
  1408. }
  1409. func AssignBitFieldPtr64Uint8(p uintptr, v uint8, w, off int, mask uint64) uint8 {
  1410. *(*uint64)(unsafe.Pointer(p)) = *(*uint64)(unsafe.Pointer(p))&^mask | uint64(v)<<off&mask
  1411. return v & uint8(mask>>off)
  1412. }
  1413. func AssignBitFieldPtr64Uint16(p uintptr, v uint16, w, off int, mask uint64) uint16 {
  1414. *(*uint64)(unsafe.Pointer(p)) = *(*uint64)(unsafe.Pointer(p))&^mask | uint64(v)<<off&mask
  1415. return v & uint16(mask>>off)
  1416. }
  1417. func AssignBitFieldPtr64Uint32(p uintptr, v uint32, w, off int, mask uint64) uint32 {
  1418. *(*uint64)(unsafe.Pointer(p)) = *(*uint64)(unsafe.Pointer(p))&^mask | uint64(v)<<off&mask
  1419. return v & uint32(mask>>off)
  1420. }
  1421. func AssignBitFieldPtr64Uint64(p uintptr, v uint64, w, off int, mask uint64) uint64 {
  1422. *(*uint64)(unsafe.Pointer(p)) = *(*uint64)(unsafe.Pointer(p))&^mask | v<<off&mask
  1423. return v & (mask >> off)
  1424. }
  1425. func PostDecBitFieldPtr8Int8(p uintptr, d int8, w, off int, mask uint8) (r int8) {
  1426. x0 := *(*uint8)(unsafe.Pointer(p))
  1427. s := 8 - w - off
  1428. r = int8(x0) & int8(mask) << s >> (s + off)
  1429. *(*uint8)(unsafe.Pointer(p)) = x0&^mask | uint8(r-d)<<off&mask
  1430. return r
  1431. }
  1432. func PostDecBitFieldPtr8Int16(p uintptr, d int16, w, off int, mask uint8) (r int16) {
  1433. x0 := *(*uint8)(unsafe.Pointer(p))
  1434. s := 16 - w - off
  1435. r = int16(x0) & int16(mask) << s >> (s + off)
  1436. *(*uint8)(unsafe.Pointer(p)) = x0&^mask | uint8(r-d)<<off&mask
  1437. return r
  1438. }
  1439. func PostDecBitFieldPtr8Int32(p uintptr, d int32, w, off int, mask uint8) (r int32) {
  1440. x0 := *(*uint8)(unsafe.Pointer(p))
  1441. s := 32 - w - off
  1442. r = int32(x0) & int32(mask) << s >> (s + off)
  1443. *(*uint8)(unsafe.Pointer(p)) = x0&^mask | uint8(r-d)<<off&mask
  1444. return r
  1445. }
  1446. func PostDecBitFieldPtr8Int64(p uintptr, d int64, w, off int, mask uint8) (r int64) {
  1447. x0 := *(*uint8)(unsafe.Pointer(p))
  1448. s := 64 - w - off
  1449. r = int64(x0) & int64(mask) << s >> (s + off)
  1450. *(*uint8)(unsafe.Pointer(p)) = x0&^mask | uint8(r-d)<<off&mask
  1451. return r
  1452. }
  1453. func PostDecBitFieldPtr16Int8(p uintptr, d int8, w, off int, mask uint16) (r int8) {
  1454. x0 := *(*uint16)(unsafe.Pointer(p))
  1455. s := 8 - w - off
  1456. r = int8(x0) & int8(mask) << s >> (s + off)
  1457. *(*uint16)(unsafe.Pointer(p)) = x0&^mask | uint16(r-d)<<off&mask
  1458. return r
  1459. }
  1460. func PostDecBitFieldPtr16Int16(p uintptr, d int16, w, off int, mask uint16) (r int16) {
  1461. x0 := *(*uint16)(unsafe.Pointer(p))
  1462. s := 16 - w - off
  1463. r = int16(x0) & int16(mask) << s >> (s + off)
  1464. *(*uint16)(unsafe.Pointer(p)) = x0&^mask | uint16(r-d)<<off&mask
  1465. return r
  1466. }
  1467. func PostDecBitFieldPtr16Int32(p uintptr, d int32, w, off int, mask uint16) (r int32) {
  1468. x0 := *(*uint16)(unsafe.Pointer(p))
  1469. s := 32 - w - off
  1470. r = int32(x0) & int32(mask) << s >> (s + off)
  1471. *(*uint16)(unsafe.Pointer(p)) = x0&^mask | uint16(r-d)<<off&mask
  1472. return r
  1473. }
  1474. func PostDecBitFieldPtr16Int64(p uintptr, d int64, w, off int, mask uint16) (r int64) {
  1475. x0 := *(*uint16)(unsafe.Pointer(p))
  1476. s := 64 - w - off
  1477. r = int64(x0) & int64(mask) << s >> (s + off)
  1478. *(*uint16)(unsafe.Pointer(p)) = x0&^mask | uint16(r-d)<<off&mask
  1479. return r
  1480. }
  1481. func PostDecBitFieldPtr32Int8(p uintptr, d int8, w, off int, mask uint32) (r int8) {
  1482. x0 := *(*uint32)(unsafe.Pointer(p))
  1483. s := 8 - w - off
  1484. r = int8(x0) & int8(mask) << s >> (s + off)
  1485. *(*uint32)(unsafe.Pointer(p)) = x0&^mask | uint32(r-d)<<off&mask
  1486. return r
  1487. }
  1488. func PostDecBitFieldPtr32Int16(p uintptr, d int16, w, off int, mask uint32) (r int16) {
  1489. x0 := *(*uint32)(unsafe.Pointer(p))
  1490. s := 16 - w - off
  1491. r = int16(x0) & int16(mask) << s >> (s + off)
  1492. *(*uint32)(unsafe.Pointer(p)) = x0&^mask | uint32(r-d)<<off&mask
  1493. return r
  1494. }
  1495. func PostDecBitFieldPtr32Int32(p uintptr, d int32, w, off int, mask uint32) (r int32) {
  1496. x0 := *(*uint32)(unsafe.Pointer(p))
  1497. s := 32 - w - off
  1498. r = int32(x0) & int32(mask) << s >> (s + off)
  1499. *(*uint32)(unsafe.Pointer(p)) = x0&^mask | uint32(r-d)<<off&mask
  1500. return r
  1501. }
  1502. func PostDecBitFieldPtr32Int64(p uintptr, d int64, w, off int, mask uint32) (r int64) {
  1503. x0 := *(*uint32)(unsafe.Pointer(p))
  1504. s := 64 - w - off
  1505. r = int64(x0) & int64(mask) << s >> (s + off)
  1506. *(*uint32)(unsafe.Pointer(p)) = x0&^mask | uint32(r-d)<<off&mask
  1507. return r
  1508. }
  1509. func PostDecBitFieldPtr64Int8(p uintptr, d int8, w, off int, mask uint64) (r int8) {
  1510. x0 := *(*uint64)(unsafe.Pointer(p))
  1511. s := 8 - w - off
  1512. r = int8(x0) & int8(mask) << s >> (s + off)
  1513. *(*uint64)(unsafe.Pointer(p)) = x0&^mask | uint64(r-d)<<off&mask
  1514. return r
  1515. }
  1516. func PostDecBitFieldPtr64Int16(p uintptr, d int16, w, off int, mask uint64) (r int16) {
  1517. x0 := *(*uint64)(unsafe.Pointer(p))
  1518. s := 16 - w - off
  1519. r = int16(x0) & int16(mask) << s >> (s + off)
  1520. *(*uint64)(unsafe.Pointer(p)) = x0&^mask | uint64(r-d)<<off&mask
  1521. return r
  1522. }
  1523. func PostDecBitFieldPtr64Int32(p uintptr, d int32, w, off int, mask uint64) (r int32) {
  1524. x0 := *(*uint64)(unsafe.Pointer(p))
  1525. s := 32 - w - off
  1526. r = int32(x0) & int32(mask) << s >> (s + off)
  1527. *(*uint64)(unsafe.Pointer(p)) = x0&^mask | uint64(r-d)<<off&mask
  1528. return r
  1529. }
  1530. func PostDecBitFieldPtr64Int64(p uintptr, d int64, w, off int, mask uint64) (r int64) {
  1531. x0 := *(*uint64)(unsafe.Pointer(p))
  1532. s := 64 - w - off
  1533. r = int64(x0) & int64(mask) << s >> (s + off)
  1534. *(*uint64)(unsafe.Pointer(p)) = x0&^mask | uint64(r-d)<<off&mask
  1535. return r
  1536. }
  1537. func PostDecBitFieldPtr8Uint8(p uintptr, d uint8, w, off int, mask uint8) (r uint8) {
  1538. x0 := *(*uint8)(unsafe.Pointer(p))
  1539. r = x0 & mask >> off
  1540. *(*uint8)(unsafe.Pointer(p)) = x0&^mask | (r-d)<<off&mask
  1541. return r
  1542. }
  1543. func PostDecBitFieldPtr8Uint16(p uintptr, d uint16, w, off int, mask uint8) (r uint16) {
  1544. x0 := *(*uint8)(unsafe.Pointer(p))
  1545. r = uint16(x0) & uint16(mask) >> off
  1546. *(*uint8)(unsafe.Pointer(p)) = x0&^mask | uint8(r-d)<<off&mask
  1547. return r
  1548. }
  1549. func PostDecBitFieldPtr8Uint32(p uintptr, d uint32, w, off int, mask uint8) (r uint32) {
  1550. x0 := *(*uint8)(unsafe.Pointer(p))
  1551. r = uint32(x0) & uint32(mask) >> off
  1552. *(*uint8)(unsafe.Pointer(p)) = x0&^mask | uint8(r-d)<<off&mask
  1553. return r
  1554. }
  1555. func PostDecBitFieldPtr8Uint64(p uintptr, d uint64, w, off int, mask uint8) (r uint64) {
  1556. x0 := *(*uint8)(unsafe.Pointer(p))
  1557. r = uint64(x0) & uint64(mask) >> off
  1558. *(*uint8)(unsafe.Pointer(p)) = x0&^mask | uint8(r-d)<<off&mask
  1559. return r
  1560. }
  1561. func PostDecBitFieldPtr16Uint8(p uintptr, d uint8, w, off int, mask uint16) (r uint8) {
  1562. x0 := *(*uint16)(unsafe.Pointer(p))
  1563. r = uint8(x0) & uint8(mask) >> off
  1564. *(*uint16)(unsafe.Pointer(p)) = x0&^mask | uint16(r-d)<<off&mask
  1565. return r
  1566. }
  1567. func PostDecBitFieldPtr16Uint16(p uintptr, d uint16, w, off int, mask uint16) (r uint16) {
  1568. x0 := *(*uint16)(unsafe.Pointer(p))
  1569. r = x0 & mask >> off
  1570. *(*uint16)(unsafe.Pointer(p)) = x0&^mask | (r-d)<<off&mask
  1571. return r
  1572. }
  1573. func PostDecBitFieldPtr16Uint32(p uintptr, d uint32, w, off int, mask uint16) (r uint32) {
  1574. x0 := *(*uint16)(unsafe.Pointer(p))
  1575. r = uint32(x0) & uint32(mask) >> off
  1576. *(*uint16)(unsafe.Pointer(p)) = x0&^mask | uint16(r-d)<<off&mask
  1577. return r
  1578. }
  1579. func PostDecBitFieldPtr16Uint64(p uintptr, d uint64, w, off int, mask uint16) (r uint64) {
  1580. x0 := *(*uint16)(unsafe.Pointer(p))
  1581. r = uint64(x0) & uint64(mask) >> off
  1582. *(*uint16)(unsafe.Pointer(p)) = x0&^mask | uint16(r-d)<<off&mask
  1583. return r
  1584. }
  1585. func PostDecBitFieldPtr32Uint8(p uintptr, d uint8, w, off int, mask uint32) (r uint8) {
  1586. x0 := *(*uint32)(unsafe.Pointer(p))
  1587. r = uint8(x0) & uint8(mask) >> off
  1588. *(*uint32)(unsafe.Pointer(p)) = x0&^mask | uint32(r-d)<<off&mask
  1589. return r
  1590. }
  1591. func PostDecBitFieldPtr32Uint16(p uintptr, d uint16, w, off int, mask uint32) (r uint16) {
  1592. x0 := *(*uint32)(unsafe.Pointer(p))
  1593. r = uint16(x0) & uint16(mask) >> off
  1594. *(*uint32)(unsafe.Pointer(p)) = x0&^mask | uint32(r-d)<<off&mask
  1595. return r
  1596. }
  1597. func PostDecBitFieldPtr32Uint32(p uintptr, d uint32, w, off int, mask uint32) (r uint32) {
  1598. x0 := *(*uint32)(unsafe.Pointer(p))
  1599. r = x0 & mask >> off
  1600. *(*uint32)(unsafe.Pointer(p)) = x0&^mask | (r-d)<<off&mask
  1601. return r
  1602. }
  1603. func PostDecBitFieldPtr32Uint64(p uintptr, d uint64, w, off int, mask uint32) (r uint64) {
  1604. x0 := *(*uint32)(unsafe.Pointer(p))
  1605. r = uint64(x0) & uint64(mask) >> off
  1606. *(*uint32)(unsafe.Pointer(p)) = x0&^mask | uint32(r-d)<<off&mask
  1607. return r
  1608. }
  1609. func PostDecBitFieldPtr64Uint8(p uintptr, d uint8, w, off int, mask uint64) (r uint8) {
  1610. x0 := *(*uint64)(unsafe.Pointer(p))
  1611. r = uint8(x0) & uint8(mask) >> off
  1612. *(*uint64)(unsafe.Pointer(p)) = x0&^mask | uint64(r-d)<<off&mask
  1613. return r
  1614. }
  1615. func PostDecBitFieldPtr64Uint16(p uintptr, d uint16, w, off int, mask uint64) (r uint16) {
  1616. x0 := *(*uint64)(unsafe.Pointer(p))
  1617. r = uint16(x0) & uint16(mask) >> off
  1618. *(*uint64)(unsafe.Pointer(p)) = x0&^mask | uint64(r-d)<<off&mask
  1619. return r
  1620. }
  1621. func PostDecBitFieldPtr64Uint32(p uintptr, d uint32, w, off int, mask uint64) (r uint32) {
  1622. x0 := *(*uint64)(unsafe.Pointer(p))
  1623. r = uint32(x0) & uint32(mask) >> off
  1624. *(*uint64)(unsafe.Pointer(p)) = x0&^mask | uint64(r-d)<<off&mask
  1625. return r
  1626. }
  1627. func PostDecBitFieldPtr64Uint64(p uintptr, d uint64, w, off int, mask uint64) (r uint64) {
  1628. x0 := *(*uint64)(unsafe.Pointer(p))
  1629. r = x0 & mask >> off
  1630. *(*uint64)(unsafe.Pointer(p)) = x0&^mask | (r-d)<<off&mask
  1631. return r
  1632. }
  1633. func PostIncBitFieldPtr8Int8(p uintptr, d int8, w, off int, mask uint8) (r int8) {
  1634. x0 := *(*uint8)(unsafe.Pointer(p))
  1635. s := 8 - w - off
  1636. r = int8(x0) & int8(mask) << s >> (s + off)
  1637. *(*uint8)(unsafe.Pointer(p)) = x0&^mask | uint8(r+d)<<off&mask
  1638. return r
  1639. }
  1640. func PostIncBitFieldPtr8Int16(p uintptr, d int16, w, off int, mask uint8) (r int16) {
  1641. x0 := *(*uint8)(unsafe.Pointer(p))
  1642. s := 16 - w - off
  1643. r = int16(x0) & int16(mask) << s >> (s + off)
  1644. *(*uint8)(unsafe.Pointer(p)) = x0&^mask | uint8(r+d)<<off&mask
  1645. return r
  1646. }
  1647. func PostIncBitFieldPtr8Int32(p uintptr, d int32, w, off int, mask uint8) (r int32) {
  1648. x0 := *(*uint8)(unsafe.Pointer(p))
  1649. s := 32 - w - off
  1650. r = int32(x0) & int32(mask) << s >> (s + off)
  1651. *(*uint8)(unsafe.Pointer(p)) = x0&^mask | uint8(r+d)<<off&mask
  1652. return r
  1653. }
  1654. func PostIncBitFieldPtr8Int64(p uintptr, d int64, w, off int, mask uint8) (r int64) {
  1655. x0 := *(*uint8)(unsafe.Pointer(p))
  1656. s := 64 - w - off
  1657. r = int64(x0) & int64(mask) << s >> (s + off)
  1658. *(*uint8)(unsafe.Pointer(p)) = x0&^mask | uint8(r+d)<<off&mask
  1659. return r
  1660. }
  1661. func PostIncBitFieldPtr16Int8(p uintptr, d int8, w, off int, mask uint16) (r int8) {
  1662. x0 := *(*uint16)(unsafe.Pointer(p))
  1663. s := 8 - w - off
  1664. r = int8(x0) & int8(mask) << s >> (s + off)
  1665. *(*uint16)(unsafe.Pointer(p)) = x0&^mask | uint16(r+d)<<off&mask
  1666. return r
  1667. }
  1668. func PostIncBitFieldPtr16Int16(p uintptr, d int16, w, off int, mask uint16) (r int16) {
  1669. x0 := *(*uint16)(unsafe.Pointer(p))
  1670. s := 16 - w - off
  1671. r = int16(x0) & int16(mask) << s >> (s + off)
  1672. *(*uint16)(unsafe.Pointer(p)) = x0&^mask | uint16(r+d)<<off&mask
  1673. return r
  1674. }
  1675. func PostIncBitFieldPtr16Int32(p uintptr, d int32, w, off int, mask uint16) (r int32) {
  1676. x0 := *(*uint16)(unsafe.Pointer(p))
  1677. s := 32 - w - off
  1678. r = int32(x0) & int32(mask) << s >> (s + off)
  1679. *(*uint16)(unsafe.Pointer(p)) = x0&^mask | uint16(r+d)<<off&mask
  1680. return r
  1681. }
  1682. func PostIncBitFieldPtr16Int64(p uintptr, d int64, w, off int, mask uint16) (r int64) {
  1683. x0 := *(*uint16)(unsafe.Pointer(p))
  1684. s := 64 - w - off
  1685. r = int64(x0) & int64(mask) << s >> (s + off)
  1686. *(*uint16)(unsafe.Pointer(p)) = x0&^mask | uint16(r+d)<<off&mask
  1687. return r
  1688. }
  1689. func PostIncBitFieldPtr32Int8(p uintptr, d int8, w, off int, mask uint32) (r int8) {
  1690. x0 := *(*uint32)(unsafe.Pointer(p))
  1691. s := 8 - w - off
  1692. r = int8(x0) & int8(mask) << s >> (s + off)
  1693. *(*uint32)(unsafe.Pointer(p)) = x0&^mask | uint32(r+d)<<off&mask
  1694. return r
  1695. }
  1696. func PostIncBitFieldPtr32Int16(p uintptr, d int16, w, off int, mask uint32) (r int16) {
  1697. x0 := *(*uint32)(unsafe.Pointer(p))
  1698. s := 16 - w - off
  1699. r = int16(x0) & int16(mask) << s >> (s + off)
  1700. *(*uint32)(unsafe.Pointer(p)) = x0&^mask | uint32(r+d)<<off&mask
  1701. return r
  1702. }
  1703. func PostIncBitFieldPtr32Int32(p uintptr, d int32, w, off int, mask uint32) (r int32) {
  1704. x0 := *(*uint32)(unsafe.Pointer(p))
  1705. s := 32 - w - off
  1706. r = int32(x0) & int32(mask) << s >> (s + off)
  1707. *(*uint32)(unsafe.Pointer(p)) = x0&^mask | uint32(r+d)<<off&mask
  1708. return r
  1709. }
  1710. func PostIncBitFieldPtr32Int64(p uintptr, d int64, w, off int, mask uint32) (r int64) {
  1711. x0 := *(*uint32)(unsafe.Pointer(p))
  1712. s := 64 - w - off
  1713. r = int64(x0) & int64(mask) << s >> (s + off)
  1714. *(*uint32)(unsafe.Pointer(p)) = x0&^mask | uint32(r+d)<<off&mask
  1715. return r
  1716. }
  1717. func PostIncBitFieldPtr64Int8(p uintptr, d int8, w, off int, mask uint64) (r int8) {
  1718. x0 := *(*uint64)(unsafe.Pointer(p))
  1719. s := 8 - w - off
  1720. r = int8(x0) & int8(mask) << s >> (s + off)
  1721. *(*uint64)(unsafe.Pointer(p)) = x0&^mask | uint64(r+d)<<off&mask
  1722. return r
  1723. }
  1724. func PostIncBitFieldPtr64Int16(p uintptr, d int16, w, off int, mask uint64) (r int16) {
  1725. x0 := *(*uint64)(unsafe.Pointer(p))
  1726. s := 16 - w - off
  1727. r = int16(x0) & int16(mask) << s >> (s + off)
  1728. *(*uint64)(unsafe.Pointer(p)) = x0&^mask | uint64(r+d)<<off&mask
  1729. return r
  1730. }
  1731. func PostIncBitFieldPtr64Int32(p uintptr, d int32, w, off int, mask uint64) (r int32) {
  1732. x0 := *(*uint64)(unsafe.Pointer(p))
  1733. s := 32 - w - off
  1734. r = int32(x0) & int32(mask) << s >> (s + off)
  1735. *(*uint64)(unsafe.Pointer(p)) = x0&^mask | uint64(r+d)<<off&mask
  1736. return r
  1737. }
  1738. func PostIncBitFieldPtr64Int64(p uintptr, d int64, w, off int, mask uint64) (r int64) {
  1739. x0 := *(*uint64)(unsafe.Pointer(p))
  1740. s := 64 - w - off
  1741. r = int64(x0) & int64(mask) << s >> (s + off)
  1742. *(*uint64)(unsafe.Pointer(p)) = x0&^mask | uint64(r+d)<<off&mask
  1743. return r
  1744. }
  1745. func PostIncBitFieldPtr8Uint8(p uintptr, d uint8, w, off int, mask uint8) (r uint8) {
  1746. x0 := *(*uint8)(unsafe.Pointer(p))
  1747. r = x0 & mask >> off
  1748. *(*uint8)(unsafe.Pointer(p)) = x0&^mask | (r+d)<<off&mask
  1749. return r
  1750. }
  1751. func PostIncBitFieldPtr8Uint16(p uintptr, d uint16, w, off int, mask uint8) (r uint16) {
  1752. x0 := *(*uint8)(unsafe.Pointer(p))
  1753. r = uint16(x0) & uint16(mask) >> off
  1754. *(*uint8)(unsafe.Pointer(p)) = x0&^mask | uint8(r+d)<<off&mask
  1755. return r
  1756. }
  1757. func PostIncBitFieldPtr8Uint32(p uintptr, d uint32, w, off int, mask uint8) (r uint32) {
  1758. x0 := *(*uint8)(unsafe.Pointer(p))
  1759. r = uint32(x0) & uint32(mask) >> off
  1760. *(*uint8)(unsafe.Pointer(p)) = x0&^mask | uint8(r+d)<<off&mask
  1761. return r
  1762. }
  1763. func PostIncBitFieldPtr8Uint64(p uintptr, d uint64, w, off int, mask uint8) (r uint64) {
  1764. x0 := *(*uint8)(unsafe.Pointer(p))
  1765. r = uint64(x0) & uint64(mask) >> off
  1766. *(*uint8)(unsafe.Pointer(p)) = x0&^mask | uint8(r+d)<<off&mask
  1767. return r
  1768. }
  1769. func PostIncBitFieldPtr16Uint8(p uintptr, d uint8, w, off int, mask uint16) (r uint8) {
  1770. x0 := *(*uint16)(unsafe.Pointer(p))
  1771. r = uint8(x0) & uint8(mask) >> off
  1772. *(*uint16)(unsafe.Pointer(p)) = x0&^mask | uint16(r+d)<<off&mask
  1773. return r
  1774. }
  1775. func PostIncBitFieldPtr16Uint16(p uintptr, d uint16, w, off int, mask uint16) (r uint16) {
  1776. x0 := *(*uint16)(unsafe.Pointer(p))
  1777. r = x0 & mask >> off
  1778. *(*uint16)(unsafe.Pointer(p)) = x0&^mask | (r+d)<<off&mask
  1779. return r
  1780. }
  1781. func PostIncBitFieldPtr16Uint32(p uintptr, d uint32, w, off int, mask uint16) (r uint32) {
  1782. x0 := *(*uint16)(unsafe.Pointer(p))
  1783. r = uint32(x0) & uint32(mask) >> off
  1784. *(*uint16)(unsafe.Pointer(p)) = x0&^mask | uint16(r+d)<<off&mask
  1785. return r
  1786. }
  1787. func PostIncBitFieldPtr16Uint64(p uintptr, d uint64, w, off int, mask uint16) (r uint64) {
  1788. x0 := *(*uint16)(unsafe.Pointer(p))
  1789. r = uint64(x0) & uint64(mask) >> off
  1790. *(*uint16)(unsafe.Pointer(p)) = x0&^mask | uint16(r+d)<<off&mask
  1791. return r
  1792. }
  1793. func PostIncBitFieldPtr32Uint8(p uintptr, d uint8, w, off int, mask uint32) (r uint8) {
  1794. x0 := *(*uint32)(unsafe.Pointer(p))
  1795. r = uint8(x0) & uint8(mask) >> off
  1796. *(*uint32)(unsafe.Pointer(p)) = x0&^mask | uint32(r+d)<<off&mask
  1797. return r
  1798. }
  1799. func PostIncBitFieldPtr32Uint16(p uintptr, d uint16, w, off int, mask uint32) (r uint16) {
  1800. x0 := *(*uint32)(unsafe.Pointer(p))
  1801. r = uint16(x0) & uint16(mask) >> off
  1802. *(*uint32)(unsafe.Pointer(p)) = x0&^mask | uint32(r+d)<<off&mask
  1803. return r
  1804. }
  1805. func PostIncBitFieldPtr32Uint32(p uintptr, d uint32, w, off int, mask uint32) (r uint32) {
  1806. x0 := *(*uint32)(unsafe.Pointer(p))
  1807. r = x0 & mask >> off
  1808. *(*uint32)(unsafe.Pointer(p)) = x0&^mask | (r+d)<<off&mask
  1809. return r
  1810. }
  1811. func PostIncBitFieldPtr32Uint64(p uintptr, d uint64, w, off int, mask uint32) (r uint64) {
  1812. x0 := *(*uint32)(unsafe.Pointer(p))
  1813. r = uint64(x0) & uint64(mask) >> off
  1814. *(*uint32)(unsafe.Pointer(p)) = x0&^mask | uint32(r+d)<<off&mask
  1815. return r
  1816. }
  1817. func PostIncBitFieldPtr64Uint8(p uintptr, d uint8, w, off int, mask uint64) (r uint8) {
  1818. x0 := *(*uint64)(unsafe.Pointer(p))
  1819. r = uint8(x0) & uint8(mask) >> off
  1820. *(*uint64)(unsafe.Pointer(p)) = x0&^mask | uint64(r+d)<<off&mask
  1821. return r
  1822. }
  1823. func PostIncBitFieldPtr64Uint16(p uintptr, d uint16, w, off int, mask uint64) (r uint16) {
  1824. x0 := *(*uint64)(unsafe.Pointer(p))
  1825. r = uint16(x0) & uint16(mask) >> off
  1826. *(*uint64)(unsafe.Pointer(p)) = x0&^mask | uint64(r+d)<<off&mask
  1827. return r
  1828. }
  1829. func PostIncBitFieldPtr64Uint32(p uintptr, d uint32, w, off int, mask uint64) (r uint32) {
  1830. x0 := *(*uint64)(unsafe.Pointer(p))
  1831. r = uint32(x0) & uint32(mask) >> off
  1832. *(*uint64)(unsafe.Pointer(p)) = x0&^mask | uint64(r+d)<<off&mask
  1833. return r
  1834. }
  1835. func PostIncBitFieldPtr64Uint64(p uintptr, d uint64, w, off int, mask uint64) (r uint64) {
  1836. x0 := *(*uint64)(unsafe.Pointer(p))
  1837. r = x0 & mask >> off
  1838. *(*uint64)(unsafe.Pointer(p)) = x0&^mask | (r+d)<<off&mask
  1839. return r
  1840. }
  1841. func GetEnviron() (r []string) {
  1842. for p := Xenviron; ; p += unsafe.Sizeof(p) {
  1843. q := *(*uintptr)(unsafe.Pointer(p))
  1844. if q == 0 {
  1845. return r
  1846. }
  1847. r = append(r, GoString(q))
  1848. }
  1849. }