Cycles: Code cleanup, spaces around keywords
[blender-staging.git] / intern / cycles / kernel / kernel_jitter.h
index 6aa29311ee65db6a2c06a2f520ea8964cb338442..9ba41635b9eccbc431c964bf26714aa53339673b 100644 (file)
@@ -47,6 +47,8 @@ ccl_device_inline int cmj_fast_div_pow2(int a, int b)
 #  else
        return a >> __builtin_ctz(b);
 #  endif
+#elif defined(__KERNEL_CUDA__)
+       return a >> (__ffs(b) - 1);
 #else
        return a/b;
 #endif
@@ -63,6 +65,8 @@ ccl_device_inline uint cmj_w_mask(uint w)
 #  else
        return ((1 << (32 - __builtin_clz(w))) - 1);
 #  endif
+#elif defined(__KERNEL_CUDA__)
+       return ((1 << (32 - __clz(w))) - 1);
 #else
        w |= w >> 1;
        w |= w >> 2;
@@ -124,7 +128,7 @@ ccl_device_inline uint cmj_permute(uint i, uint l, uint p)
                        i *= 0xc860a3df;
                        i &= w;
                        i ^= i >> 5;
-               } while (i >= l);
+               } while(i >= l);
 
                return (i + p) % l;
        }
@@ -167,7 +171,11 @@ ccl_device void cmj_sample_2D(int s, int N, int p, float *fx, float *fy)
 {
        kernel_assert(s < N);
 
+#if defined(__KERNEL_CUDA__)
+       int m = float_to_int(__fsqrt_ru(N));
+#else
        int m = float_to_int(sqrtf(N));
+#endif
        int n = (N + m - 1)/m;
        float invN = 1.0f/N;
        float invm = 1.0f/m;