feat(third_party/bazel): Check in rules_haskell from Tweag
This commit is contained in:
		
							parent
							
								
									2eb1dc26e4
								
							
						
					
					
						commit
						f723b8b878
					
				
					 479 changed files with 51484 additions and 0 deletions
				
			
		
							
								
								
									
										56
									
								
								third_party/bazel/rules_haskell/examples/primitive/cbits/primitive-memops.c
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								third_party/bazel/rules_haskell/examples/primitive/cbits/primitive-memops.c
									
										
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,56 @@ | |||
| #include <string.h> | ||||
| #include "primitive-memops.h" | ||||
| 
 | ||||
| void hsprimitive_memcpy( void *dst, ptrdiff_t doff, void *src, ptrdiff_t soff, size_t len ) | ||||
| { | ||||
|   memcpy( (char *)dst + doff, (char *)src + soff, len ); | ||||
| } | ||||
| 
 | ||||
| void hsprimitive_memmove( void *dst, ptrdiff_t doff, void *src, ptrdiff_t soff, size_t len ) | ||||
| { | ||||
|   memmove( (char *)dst + doff, (char *)src + soff, len ); | ||||
| } | ||||
| 
 | ||||
| #define MEMSET(TYPE, ATYPE)                                                  \ | ||||
| void hsprimitive_memset_ ## TYPE (Hs ## TYPE *p, ptrdiff_t off, size_t n, ATYPE x) \ | ||||
| {                                                                            \ | ||||
|   p += off;                                                                  \ | ||||
|   if (x == 0)                                                                \ | ||||
|     memset(p, 0, n * sizeof(Hs ## TYPE));                                    \ | ||||
|   else if (sizeof(Hs ## TYPE) == sizeof(int)*2) {                            \ | ||||
|     int *q = (int *)p;                                                       \ | ||||
|     const int *r = (const int *)(void *)&x;                                  \ | ||||
|     while (n>0) {                                                            \ | ||||
|       q[0] = r[0];                                                           \ | ||||
|       q[1] = r[1];                                                           \ | ||||
|       q += 2;                                                                \ | ||||
|       --n;                                                                   \ | ||||
|     }                                                                        \ | ||||
|   }                                                                          \ | ||||
|   else {                                                                     \ | ||||
|     while (n>0) {                                                            \ | ||||
|       *p++ = x;                                                              \ | ||||
|       --n;                                                                   \ | ||||
|     }                                                                        \ | ||||
|   }                                                                          \ | ||||
| } | ||||
| 
 | ||||
| int hsprimitive_memcmp( HsWord8 *s1, HsWord8 *s2, size_t n ) | ||||
| { | ||||
|   return memcmp( s1, s2, n ); | ||||
| } | ||||
| 
 | ||||
| void hsprimitive_memset_Word8 (HsWord8 *p, ptrdiff_t off, size_t n, HsWord x) | ||||
| { | ||||
|   memset( (char *)(p+off), x, n ); | ||||
| } | ||||
| 
 | ||||
| /* MEMSET(HsWord8, HsWord) */ | ||||
| MEMSET(Word16, HsWord) | ||||
| MEMSET(Word32, HsWord) | ||||
| MEMSET(Word64, HsWord64) | ||||
| MEMSET(Word, HsWord) | ||||
| MEMSET(Ptr, HsPtr) | ||||
| MEMSET(Float, HsFloat) | ||||
| MEMSET(Double, HsDouble) | ||||
| MEMSET(Char, HsChar) | ||||
							
								
								
									
										23
									
								
								third_party/bazel/rules_haskell/examples/primitive/cbits/primitive-memops.h
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								third_party/bazel/rules_haskell/examples/primitive/cbits/primitive-memops.h
									
										
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,23 @@ | |||
| #ifndef haskell_primitive_memops_h | ||||
| #define haskell_primitive_memops_h | ||||
| 
 | ||||
| #include <stdlib.h> | ||||
| #include <stddef.h> | ||||
| #include <HsFFI.h> | ||||
| 
 | ||||
| void hsprimitive_memcpy( void *dst, ptrdiff_t doff, void *src, ptrdiff_t soff, size_t len ); | ||||
| void hsprimitive_memmove( void *dst, ptrdiff_t doff, void *src, ptrdiff_t soff, size_t len ); | ||||
| int  hsprimitive_memcmp( HsWord8 *s1, HsWord8 *s2, size_t n ); | ||||
| 
 | ||||
| void hsprimitive_memset_Word8 (HsWord8 *, ptrdiff_t, size_t, HsWord); | ||||
| void hsprimitive_memset_Word16 (HsWord16 *, ptrdiff_t, size_t, HsWord); | ||||
| void hsprimitive_memset_Word32 (HsWord32 *, ptrdiff_t, size_t, HsWord); | ||||
| void hsprimitive_memset_Word64 (HsWord64 *, ptrdiff_t, size_t, HsWord64); | ||||
| void hsprimitive_memset_Word (HsWord *, ptrdiff_t, size_t, HsWord); | ||||
| void hsprimitive_memset_Ptr (HsPtr *, ptrdiff_t, size_t, HsPtr); | ||||
| void hsprimitive_memset_Float (HsFloat *, ptrdiff_t, size_t, HsFloat); | ||||
| void hsprimitive_memset_Double (HsDouble *, ptrdiff_t, size_t, HsDouble); | ||||
| void hsprimitive_memset_Char (HsChar *, ptrdiff_t, size_t, HsChar); | ||||
| 
 | ||||
| #endif | ||||
| 
 | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue