summaryrefslogtreecommitdiff
path: root/benchmarks/CUDA/MUM/morton.c
blob: 13599c6940a44a78354a84fdcff1bb71401994a1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <stdio.h>

void morton(int i, int *x, int *y)
{
  *x = 0;
  *y = 0;

  int b;
  for (b = 0; b < 16; b++)
  {
    *x |= (i & (1 << (b*2)))     >> b;
    *y |= (i & (1 << (b*2+1))) >> (b+1);
  }
}

int main(int argc, char ** argv)
{
  int i;
  for (i = 0; i < 100; i++)
  {
    int x;
    int y;

    morton(i,&x,&y);

    printf("%d: %d %d\n", i, x, y);
  }

  return 0;
}