Skip to content

Instantly share code, notes, and snippets.

@IJzerbaard
IJzerbaard / HuffmanTest.txt
Last active July 15, 2020 07:12
Test file for Huffman encoders. Results in a code length of 17 if no special care is taken.
ABCCCDDDDDDEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
__m128i divu16(__m128i x, __m128i y, __m128i &remainder)
{
__m128i bitrev1 = _mm_setr_epi8(0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15);
__m128i bitrev2 = _mm_slli_epi16(bitrev1, 4);
__m128i lownib = _mm_set1_epi8(15);
// swap adjacent bytes
__m128i bswap = _mm_setr_epi8(1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14);
__m128i yr = _mm_shuffle_epi8(y, bswap);
// swap adjacent nibbles and bit-reverse nibbles
yr = _mm_or_si128(
void cofactorSSE(const float src[16], float dst[16]) {
__m128 r0 = _mm_load_ps(&src[0]);
__m128 r1 = _mm_load_ps(&src[4]);
__m128 r2 = _mm_load_ps(&src[8]);
__m128 r3 = _mm_load_ps(&src[12]);
__m128 r0_0001 = _mm_shuffle_ps(r0, r0, _MM_SHUFFLE(0, 0, 0, 1));
__m128 r1_0001 = _mm_shuffle_ps(r1, r1, _MM_SHUFFLE(0, 0, 0, 1));
__m128 r2_0001 = _mm_shuffle_ps(r2, r2, _MM_SHUFFLE(0, 0, 0, 1));
__m128 r3_0001 = _mm_shuffle_ps(r3, r3, _MM_SHUFFLE(0, 0, 0, 1));
using System;
using System.Runtime.Intrinsics;
using System.Runtime.Intrinsics.X86;
namespace C3Test
{
class Program
{
static void Main(string[] args)
{
section .data
align 64
buf1: dq 0
section .text
global storeload_L
proc_frame storeload_L
alloc_stack 8
using System;
using System.Diagnostics;
using System.Runtime.CompilerServices;
namespace CSTest
{
class Program
{
static void Main(string[] args)
{
@IJzerbaard
IJzerbaard / testingmlp.cpp
Created November 6, 2018 16:23
Daniel Lemire's memory parallelism test but with a volatile sink
#include <iostream>
#include <stddef.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
static uint64_t murmur64(uint64_t h) {
h ^= h >> 33;
h *= UINT64_C(0xff51afd7ed558ccd);
@IJzerbaard
IJzerbaard / sortedset_vs_heap.cs
Created November 4, 2018 18:00
Benchmark sortedset versus a MinHeap implementation on a load that a heap might see.
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Numerics;
using System.Runtime.CompilerServices;
using System.Threading.Tasks;
namespace CSTest
{
class Program
@IJzerbaard
IJzerbaard / parallelfor.cs
Created October 24, 2018 16:24
Parallel.For test
static void Main(string[] args)
{
for (int j = 0; j < 10; j++)
{
bool par = (j & 1) == 1;
var sw = Stopwatch.StartNew();
if (par)
{
Parallel.For(0, 4, test);
}