From e59e4f2ee0355cd27d77a1f8af5ea409dcb82b6f Mon Sep 17 00:00:00 2001
From: John Romein <romein@astron.nl>
Date: Mon, 17 Dec 2012 14:33:29 +0000
Subject: [PATCH] Task #3696 * removed generated *.ptx files from svn * better
 support for 288 stations (#define USE_NEW_CORRELATOR) * workqueues now
 scheduled asynchronously (#pragma omp ... nowait)

---
 .gitattributes                                |  17 -
 .../src/BeamFormer/BeamFormer.cl-0.ptx        | 607 --------------
 .../src/BeamFormer/CoherentStokes.cl-0.ptx    | Bin 29008 -> 0 bytes
 .../src/BeamFormer/Dedispersion.cl-0.ptx      | 417 ----------
 .../src/BeamFormer/IncoherentStokes.cl-0.ptx  | Bin 53912 -> 0 bytes
 .../src/BeamFormer/IntToFloat.cl-0.ptx        |  82 --
 .../GPUProc/src/BeamFormer/Transpose.cl-0.ptx | 134 ----
 RTCP/GPUProc/src/CL/cl.hpp                    |  14 +-
 RTCP/GPUProc/src/Correlator.cl                |  10 +-
 RTCP/GPUProc/src/Correlator.cl-0.ptx          | Bin 234324 -> 0 bytes
 RTCP/GPUProc/src/DelayAndBandPass.cl-0.ptx    | Bin 50580 -> 0 bytes
 RTCP/GPUProc/src/FIR.cl-0.ptx                 | Bin 92104 -> 0 bytes
 RTCP/GPUProc/src/FilterBank.cc                | 213 ++---
 RTCP/GPUProc/src/NewCorrelator.cl             | 551 +++++++++++--
 RTCP/GPUProc/src/NewCorrelator.cl-0.ptx       | Bin 43272 -> 0 bytes
 RTCP/GPUProc/src/RTCP.cc                      | 470 +++++++----
 RTCP/GPUProc/src/UHEP/BeamFormer.cl-0.ptx     | 207 -----
 RTCP/GPUProc/src/UHEP/BeamFormer.cl.hop-0.ptx | Bin 53640 -> 0 bytes
 RTCP/GPUProc/src/UHEP/InvFFT.cl-0.ptx         | 759 ------------------
 RTCP/GPUProc/src/UHEP/InvFIR.cl-0.ptx         | 447 -----------
 RTCP/GPUProc/src/UHEP/Transpose.cl-0.ptx      | 142 ----
 RTCP/GPUProc/src/UHEP/Trigger.cl-0.ptx        | 511 ------------
 RTCP/GPUProc/src/octave-core                  | Bin 96 -> 0 bytes
 23 files changed, 933 insertions(+), 3648 deletions(-)
 delete mode 100644 RTCP/GPUProc/src/BeamFormer/BeamFormer.cl-0.ptx
 delete mode 100644 RTCP/GPUProc/src/BeamFormer/CoherentStokes.cl-0.ptx
 delete mode 100644 RTCP/GPUProc/src/BeamFormer/Dedispersion.cl-0.ptx
 delete mode 100644 RTCP/GPUProc/src/BeamFormer/IncoherentStokes.cl-0.ptx
 delete mode 100644 RTCP/GPUProc/src/BeamFormer/IntToFloat.cl-0.ptx
 delete mode 100644 RTCP/GPUProc/src/BeamFormer/Transpose.cl-0.ptx
 delete mode 100644 RTCP/GPUProc/src/Correlator.cl-0.ptx
 delete mode 100644 RTCP/GPUProc/src/DelayAndBandPass.cl-0.ptx
 delete mode 100644 RTCP/GPUProc/src/FIR.cl-0.ptx
 delete mode 100644 RTCP/GPUProc/src/NewCorrelator.cl-0.ptx
 delete mode 100644 RTCP/GPUProc/src/UHEP/BeamFormer.cl-0.ptx
 delete mode 100644 RTCP/GPUProc/src/UHEP/BeamFormer.cl.hop-0.ptx
 delete mode 100644 RTCP/GPUProc/src/UHEP/InvFFT.cl-0.ptx
 delete mode 100644 RTCP/GPUProc/src/UHEP/InvFIR.cl-0.ptx
 delete mode 100644 RTCP/GPUProc/src/UHEP/Transpose.cl-0.ptx
 delete mode 100644 RTCP/GPUProc/src/UHEP/Trigger.cl-0.ptx
 delete mode 100644 RTCP/GPUProc/src/octave-core

diff --git a/.gitattributes b/.gitattributes
index 487a7678f0b..48ca44cd2d8 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -3657,7 +3657,6 @@ RTCP/GPUProc/src/Align.h -text
 RTCP/GPUProc/src/BandPass.cc -text
 RTCP/GPUProc/src/BandPass.h -text
 RTCP/GPUProc/src/BeamFormer/BeamFormer.cl -text
-RTCP/GPUProc/src/BeamFormer/BeamFormer.cl-0.ptx -text
 RTCP/GPUProc/src/BeamFormer/BeamFormer.cl.4x3 -text
 RTCP/GPUProc/src/BeamFormer/BeamFormer.cl.6x3 -text
 RTCP/GPUProc/src/BeamFormer/BeamFormer.cl.bak -text
@@ -3665,16 +3664,11 @@ RTCP/GPUProc/src/BeamFormer/BeamFormer.cl.not -text
 RTCP/GPUProc/src/BeamFormer/BeamFormer.cl.ok -text
 RTCP/GPUProc/src/BeamFormer/BeamFormer.cl.orig -text
 RTCP/GPUProc/src/BeamFormer/CoherentStokes.cl -text
-RTCP/GPUProc/src/BeamFormer/CoherentStokes.cl-0.ptx -text
 RTCP/GPUProc/src/BeamFormer/CoherentStokes.cl.ok -text
 RTCP/GPUProc/src/BeamFormer/Dedispersion.cl -text
-RTCP/GPUProc/src/BeamFormer/Dedispersion.cl-0.ptx -text
 RTCP/GPUProc/src/BeamFormer/IncoherentStokes.cl -text
-RTCP/GPUProc/src/BeamFormer/IncoherentStokes.cl-0.ptx -text
 RTCP/GPUProc/src/BeamFormer/IntToFloat.cl -text
-RTCP/GPUProc/src/BeamFormer/IntToFloat.cl-0.ptx -text
 RTCP/GPUProc/src/BeamFormer/Transpose.cl -text
-RTCP/GPUProc/src/BeamFormer/Transpose.cl-0.ptx -text
 RTCP/GPUProc/src/BeamletBuffer.cc -text
 RTCP/GPUProc/src/BeamletBuffer.h -text
 RTCP/GPUProc/src/BeamletBufferToComputeNode.cc -text
@@ -3682,14 +3676,11 @@ RTCP/GPUProc/src/BeamletBufferToComputeNode.h -text
 RTCP/GPUProc/src/CL/cl.hpp -text
 RTCP/GPUProc/src/CMakeLists.txt -text
 RTCP/GPUProc/src/Correlator.cl -text
-RTCP/GPUProc/src/Correlator.cl-0.ptx -text
 RTCP/GPUProc/src/DelayAndBandPass.cl -text
-RTCP/GPUProc/src/DelayAndBandPass.cl-0.ptx -text
 RTCP/GPUProc/src/Delays.cc -text
 RTCP/GPUProc/src/Delays.h -text
 RTCP/GPUProc/src/FFT.cl -text
 RTCP/GPUProc/src/FIR.cl -text
-RTCP/GPUProc/src/FIR.cl-0.ptx -text
 RTCP/GPUProc/src/FilterBank.cc -text
 RTCP/GPUProc/src/FilterBank.h -text
 RTCP/GPUProc/src/InputSection.cc -text
@@ -3700,7 +3691,6 @@ RTCP/GPUProc/src/LockedRanges.h -text
 RTCP/GPUProc/src/LogThread.cc -text
 RTCP/GPUProc/src/LogThread.h -text
 RTCP/GPUProc/src/NewCorrelator.cl -text
-RTCP/GPUProc/src/NewCorrelator.cl-0.ptx -text
 RTCP/GPUProc/src/OpenCL_Support.cc -text
 RTCP/GPUProc/src/OpenCL_Support.h -text
 RTCP/GPUProc/src/OpenMP_Support.h -text
@@ -3714,29 +3704,22 @@ RTCP/GPUProc/src/Scheduling.cc -text
 RTCP/GPUProc/src/Scheduling.h -text
 RTCP/GPUProc/src/SlidingPointer.h -text
 RTCP/GPUProc/src/UHEP/BeamFormer.cl -text
-RTCP/GPUProc/src/UHEP/BeamFormer.cl-0.ptx -text
 RTCP/GPUProc/src/UHEP/BeamFormer.cl.4groups -text
 RTCP/GPUProc/src/UHEP/BeamFormer.cl.hop -text
-RTCP/GPUProc/src/UHEP/BeamFormer.cl.hop-0.ptx -text
 RTCP/GPUProc/src/UHEP/BeamFormer.cl.not -text
 RTCP/GPUProc/src/UHEP/BeamFormer.cl.ok -text
 RTCP/GPUProc/src/UHEP/InvFFT.cl -text
-RTCP/GPUProc/src/UHEP/InvFFT.cl-0.ptx -text
 RTCP/GPUProc/src/UHEP/InvFIR.cl -text
-RTCP/GPUProc/src/UHEP/InvFIR.cl-0.ptx -text
 RTCP/GPUProc/src/UHEP/InvertedStationPPFWeights.cc -text
 RTCP/GPUProc/src/UHEP/InvertedStationPPFWeights.h -text
 RTCP/GPUProc/src/UHEP/Transpose.cl -text
-RTCP/GPUProc/src/UHEP/Transpose.cl-0.ptx -text
 RTCP/GPUProc/src/UHEP/Transpose.cl.ok -text
 RTCP/GPUProc/src/UHEP/Trigger.cl -text
-RTCP/GPUProc/src/UHEP/Trigger.cl-0.ptx -text
 RTCP/GPUProc/src/UHEP/Trigger.cl.8 -text
 RTCP/GPUProc/src/UHEP/Trigger.cl.ok -text
 RTCP/GPUProc/src/WallClockTime.h -text
 RTCP/GPUProc/src/fft2.cl -text
 RTCP/GPUProc/src/math.cl -text
-RTCP/GPUProc/src/octave-core -text
 RTCP/GPUProc/test/77_Stations.parset -text
 RTCP/GPUProc/test/AARTFAAC.parset -text
 RTCP/GPUProc/test/CMakeLists.txt -text
diff --git a/RTCP/GPUProc/src/BeamFormer/BeamFormer.cl-0.ptx b/RTCP/GPUProc/src/BeamFormer/BeamFormer.cl-0.ptx
deleted file mode 100644
index 7f1d211419f..00000000000
--- a/RTCP/GPUProc/src/BeamFormer/BeamFormer.cl-0.ptx
+++ /dev/null
@@ -1,607 +0,0 @@
-//
-// Generated by NVIDIA NVVM Compiler
-// Compiler built on Sat Sep 29 10:12:13 2012 (1348906333)
-// Driver 304.54
-//
-
-.version 3.0
-.target sm_30, texmode_independent
-.address_size 32
-
-.extern .shared .align 16 .b8 shr_4__local[4096];
-
-.entry complexVoltages(
-	.param .u32 .ptr .global .align 1 complexVoltages_param_0,
-	.param .u32 .ptr .global .align 1 complexVoltages_param_1,
-	.param .u32 .ptr .global .align 1 complexVoltages_param_2
-)
-{
-	.reg .f32 	%f<1124>;
-	.reg .pred 	%p<13>;
-	.reg .s32 	%r<206>;
-
-
-	ld.param.u32 	%r1, [complexVoltages_param_0];
-	ld.param.u32 	%r3, [complexVoltages_param_2];
-	// inline asm
-	mov.u32 	%r80, %tid.x;
-	// inline asm
-	// inline asm
-	mov.u32 	%r81, %tid.y;
-	// inline asm
-	// inline asm
-	mov.u32 	%r82, %envreg5;
-	// inline asm
-	// inline asm
-	mov.u32 	%r83, %ntid.z;
-	// inline asm
-	// inline asm
-	mov.u32 	%r84, %ctaid.z;
-	// inline asm
-	// inline asm
-	mov.u32 	%r85, %tid.z;
-	// inline asm
-	add.s32 	%r87, %r85, %r82;
-	mad.lo.s32 	%r10, %r84, %r83, %r87;
-	shl.b32 	%r88, %r10, 10;
-	shl.b32 	%r89, %r81, 3;
-	add.s32 	%r90, %r88, %r89;
-	add.s32 	%r91, %r3, %r90;
-	ld.global.v2.f32 	{%f1028, %f1029}, [%r91];
-	ld.global.v2.f32 	{%f1034, %f1035}, [%r91+2097152];
-	ld.global.v2.f32 	{%f1040, %f1041}, [%r91+4194304];
-	ld.global.v2.f32 	{%f1046, %f1047}, [%r91+6291456];
-	ld.global.v2.f32 	{%f1052, %f1053}, [%r91+8388608];
-	ld.global.v2.f32 	{%f1058, %f1059}, [%r91+10485760];
-	ld.global.v2.f32 	{%f1064, %f1065}, [%r91+12582912];
-	ld.global.v2.f32 	{%f1070, %f1071}, [%r91+14680064];
-	ld.global.v2.f32 	{%f1076, %f1077}, [%r91+16777216];
-	ld.global.v2.f32 	{%f1082, %f1083}, [%r91+18874368];
-	ld.global.v2.f32 	{%f1088, %f1089}, [%r91+20971520];
-	ld.global.v2.f32 	{%f1094, %f1095}, [%r91+23068672];
-	ld.global.v2.f32 	{%f1100, %f1101}, [%r91+25165824];
-	ld.global.v2.f32 	{%f1106, %f1107}, [%r91+27262976];
-	ld.global.v2.f32 	{%f1112, %f1113}, [%r91+29360128];
-	ld.global.v2.f32 	{%f1118, %f1119}, [%r91+31457280];
-	shl.b32 	%r92, %r10, 16;
-	shl.b32 	%r93, %r81, 4;
-	add.s32 	%r94, %r92, %r93;
-	shl.b32 	%r95, %r80, 3;
-	add.s32 	%r96, %r94, %r95;
-	add.s32 	%r189, %r1, %r96;
-	mov.u32 	%r97, shr_4__local;
-	add.s32 	%r98, %r97, %r95;
-	add.s32 	%r12, %r98, 2048;
-	mov.u32 	%r182, 0;
-
-BB0_1:
-	mov.u32 	%r187, %r189;
-	mov.u32 	%r13, %r187;
-	shl.b32 	%r15, %r182, 4;
-	// inline asm
-	mov.u32 	%r99, %tid.x;
-	// inline asm
-	// inline asm
-	mov.u32 	%r100, %tid.y;
-	// inline asm
-	shl.b32 	%r17, %r100, 1;
-	add.s32 	%r184, %r17, %r99;
-	setp.gt.u32 	%p1, %r184, 255;
-	@%p1 bra 	BB0_4;
-
-	add.s32 	%r19, %r99, %r17;
-	and.b32  	%r102, %r19, 15;
-	add.s32 	%r20, %r15, %r102;
-	mov.u32 	%r183, 0;
-
-BB0_3:
-	mov.u32 	%r22, %r184;
-	add.s32 	%r103, %r19, %r183;
-	and.b32  	%r104, %r103, 65520;
-	shl.b32 	%r105, %r104, 16;
-	ld.param.u32 	%r179, [complexVoltages_param_1];
-	add.s32 	%r106, %r179, %r105;
-	shl.b32 	%r107, %r10, 9;
-	add.s32 	%r108, %r106, %r107;
-	shl.b32 	%r109, %r20, 4;
-	add.s32 	%r110, %r108, %r109;
-	shl.b32 	%r111, %r22, 4;
-	add.s32 	%r113, %r97, %r111;
-	ld.global.v4.f32 	{%f1024, %f1025, %f1026, %f1027}, [%r110];
-	st.shared.v4.f32 	[%r113], {%f1024, %f1025, %f1026, %f1027};
-	add.s32 	%r23, %r22, 256;
-	add.s32 	%r183, %r183, 256;
-	setp.gt.u32 	%p2, %r22, -257;
-	mov.u32 	%r184, %r23;
-	@%p2 bra 	BB0_3;
-
-BB0_4:
-	mov.u32 	%r186, %r12;
-	bar.sync 	0;
-	mov.u32 	%r185, 16;
-	mov.u32 	%r188, %r13;
-
-BB0_5:
-	mov.u32 	%r28, %r188;
-	ld.shared.v2.f32 	{%f798, %f799}, [%r186+-2048];
-	mov.f32 	%f1, 0f00000000;
-	fma.rn.ftz.f32 	%f802, %f1028, %f798, %f1;
-	fma.rn.ftz.f32 	%f803, %f1028, %f799, %f1;
-	neg.ftz.f32 	%f3, %f799;
-	fma.rn.ftz.f32 	%f810, %f1029, %f3, %f802;
-	fma.rn.ftz.f32 	%f811, %f1029, %f798, %f803;
-	ld.shared.v2.f32 	{%f814, %f815}, [%r186+-1792];
-	fma.rn.ftz.f32 	%f816, %f1034, %f814, %f810;
-	fma.rn.ftz.f32 	%f817, %f1034, %f815, %f811;
-	neg.ftz.f32 	%f6, %f815;
-	fma.rn.ftz.f32 	%f824, %f1035, %f6, %f816;
-	fma.rn.ftz.f32 	%f825, %f1035, %f814, %f817;
-	ld.shared.v2.f32 	{%f828, %f829}, [%r186+-1536];
-	fma.rn.ftz.f32 	%f830, %f1040, %f828, %f824;
-	fma.rn.ftz.f32 	%f831, %f1040, %f829, %f825;
-	neg.ftz.f32 	%f9, %f829;
-	fma.rn.ftz.f32 	%f838, %f1041, %f9, %f830;
-	fma.rn.ftz.f32 	%f839, %f1041, %f828, %f831;
-	ld.shared.v2.f32 	{%f842, %f843}, [%r186+-1280];
-	fma.rn.ftz.f32 	%f844, %f1046, %f842, %f838;
-	fma.rn.ftz.f32 	%f845, %f1046, %f843, %f839;
-	neg.ftz.f32 	%f12, %f843;
-	fma.rn.ftz.f32 	%f852, %f1047, %f12, %f844;
-	fma.rn.ftz.f32 	%f853, %f1047, %f842, %f845;
-	ld.shared.v2.f32 	{%f856, %f857}, [%r186+-1024];
-	fma.rn.ftz.f32 	%f858, %f1052, %f856, %f852;
-	fma.rn.ftz.f32 	%f859, %f1052, %f857, %f853;
-	neg.ftz.f32 	%f15, %f857;
-	fma.rn.ftz.f32 	%f866, %f1053, %f15, %f858;
-	fma.rn.ftz.f32 	%f867, %f1053, %f856, %f859;
-	ld.shared.v2.f32 	{%f870, %f871}, [%r186+-768];
-	fma.rn.ftz.f32 	%f872, %f1058, %f870, %f866;
-	fma.rn.ftz.f32 	%f873, %f1058, %f871, %f867;
-	neg.ftz.f32 	%f18, %f871;
-	fma.rn.ftz.f32 	%f880, %f1059, %f18, %f872;
-	fma.rn.ftz.f32 	%f881, %f1059, %f870, %f873;
-	ld.shared.v2.f32 	{%f884, %f885}, [%r186+-512];
-	fma.rn.ftz.f32 	%f886, %f1064, %f884, %f880;
-	fma.rn.ftz.f32 	%f887, %f1064, %f885, %f881;
-	neg.ftz.f32 	%f21, %f885;
-	fma.rn.ftz.f32 	%f894, %f1065, %f21, %f886;
-	fma.rn.ftz.f32 	%f895, %f1065, %f884, %f887;
-	ld.shared.v2.f32 	{%f898, %f899}, [%r186+-256];
-	fma.rn.ftz.f32 	%f900, %f1070, %f898, %f894;
-	fma.rn.ftz.f32 	%f901, %f1070, %f899, %f895;
-	neg.ftz.f32 	%f24, %f899;
-	fma.rn.ftz.f32 	%f908, %f1071, %f24, %f900;
-	fma.rn.ftz.f32 	%f909, %f1071, %f898, %f901;
-	ld.shared.v2.f32 	{%f912, %f913}, [%r186];
-	fma.rn.ftz.f32 	%f914, %f1076, %f912, %f908;
-	fma.rn.ftz.f32 	%f915, %f1076, %f913, %f909;
-	neg.ftz.f32 	%f27, %f913;
-	fma.rn.ftz.f32 	%f922, %f1077, %f27, %f914;
-	fma.rn.ftz.f32 	%f923, %f1077, %f912, %f915;
-	ld.shared.v2.f32 	{%f926, %f927}, [%r186+256];
-	fma.rn.ftz.f32 	%f928, %f1082, %f926, %f922;
-	fma.rn.ftz.f32 	%f929, %f1082, %f927, %f923;
-	neg.ftz.f32 	%f30, %f927;
-	fma.rn.ftz.f32 	%f936, %f1083, %f30, %f928;
-	fma.rn.ftz.f32 	%f937, %f1083, %f926, %f929;
-	ld.shared.v2.f32 	{%f940, %f941}, [%r186+512];
-	fma.rn.ftz.f32 	%f942, %f1088, %f940, %f936;
-	fma.rn.ftz.f32 	%f943, %f1088, %f941, %f937;
-	neg.ftz.f32 	%f33, %f941;
-	fma.rn.ftz.f32 	%f950, %f1089, %f33, %f942;
-	fma.rn.ftz.f32 	%f951, %f1089, %f940, %f943;
-	ld.shared.v2.f32 	{%f954, %f955}, [%r186+768];
-	fma.rn.ftz.f32 	%f956, %f1094, %f954, %f950;
-	fma.rn.ftz.f32 	%f957, %f1094, %f955, %f951;
-	neg.ftz.f32 	%f36, %f955;
-	fma.rn.ftz.f32 	%f964, %f1095, %f36, %f956;
-	fma.rn.ftz.f32 	%f965, %f1095, %f954, %f957;
-	ld.shared.v2.f32 	{%f968, %f969}, [%r186+1024];
-	fma.rn.ftz.f32 	%f970, %f1100, %f968, %f964;
-	fma.rn.ftz.f32 	%f971, %f1100, %f969, %f965;
-	neg.ftz.f32 	%f39, %f969;
-	fma.rn.ftz.f32 	%f978, %f1101, %f39, %f970;
-	fma.rn.ftz.f32 	%f979, %f1101, %f968, %f971;
-	ld.shared.v2.f32 	{%f982, %f983}, [%r186+1280];
-	fma.rn.ftz.f32 	%f984, %f1106, %f982, %f978;
-	fma.rn.ftz.f32 	%f985, %f1106, %f983, %f979;
-	neg.ftz.f32 	%f42, %f983;
-	fma.rn.ftz.f32 	%f992, %f1107, %f42, %f984;
-	fma.rn.ftz.f32 	%f993, %f1107, %f982, %f985;
-	ld.shared.v2.f32 	{%f996, %f997}, [%r186+1536];
-	fma.rn.ftz.f32 	%f998, %f1112, %f996, %f992;
-	fma.rn.ftz.f32 	%f999, %f1112, %f997, %f993;
-	neg.ftz.f32 	%f45, %f997;
-	fma.rn.ftz.f32 	%f1006, %f1113, %f45, %f998;
-	fma.rn.ftz.f32 	%f1007, %f1113, %f996, %f999;
-	ld.shared.v2.f32 	{%f1010, %f1011}, [%r186+1792];
-	fma.rn.ftz.f32 	%f1012, %f1118, %f1010, %f1006;
-	fma.rn.ftz.f32 	%f1013, %f1118, %f1011, %f1007;
-	neg.ftz.f32 	%f48, %f1011;
-	fma.rn.ftz.f32 	%f1020, %f1119, %f48, %f1012;
-	fma.rn.ftz.f32 	%f1021, %f1119, %f1010, %f1013;
-	st.global.v2.f32 	[%r28], {%f1020, %f1021};
-	add.s32 	%r29, %r28, 2048;
-	add.s32 	%r186, %r186, 16;
-	add.s32 	%r185, %r185, -1;
-	setp.ne.s32 	%p3, %r185, 0;
-	mov.u32 	%r188, %r29;
-	@%p3 bra 	BB0_5;
-
-	bar.sync 	0;
-	add.s32 	%r182, %r182, 1;
-	add.s32 	%r33, %r13, 32768;
-	setp.ne.s32 	%p4, %r182, 2;
-	mov.u32 	%r189, %r33;
-	@%p4 bra 	BB0_1;
-
-	ld.param.u32 	%r181, [complexVoltages_param_2];
-	add.s32 	%r119, %r181, %r90;
-	ld.global.v2.f32 	{%f702, %f703}, [%r119+33554432];
-	ld.global.v2.f32 	{%f708, %f709}, [%r119+35651584];
-	ld.global.v2.f32 	{%f714, %f715}, [%r119+37748736];
-	ld.global.v2.f32 	{%f720, %f721}, [%r119+39845888];
-	ld.global.v2.f32 	{%f726, %f727}, [%r119+41943040];
-	ld.global.v2.f32 	{%f732, %f733}, [%r119+44040192];
-	ld.global.v2.f32 	{%f738, %f739}, [%r119+46137344];
-	ld.global.v2.f32 	{%f744, %f745}, [%r119+48234496];
-	ld.global.v2.f32 	{%f750, %f751}, [%r119+50331648];
-	ld.global.v2.f32 	{%f756, %f757}, [%r119+52428800];
-	ld.global.v2.f32 	{%f762, %f763}, [%r119+54525952];
-	ld.global.v2.f32 	{%f768, %f769}, [%r119+56623104];
-	ld.global.v2.f32 	{%f774, %f775}, [%r119+58720256];
-	ld.global.v2.f32 	{%f780, %f781}, [%r119+60817408];
-	ld.global.v2.f32 	{%f786, %f787}, [%r119+62914560];
-	ld.global.v2.f32 	{%f792, %f793}, [%r119+65011712];
-	ld.param.u32 	%r176, [complexVoltages_param_0];
-	add.s32 	%r197, %r176, %r96;
-	mov.u32 	%r190, 0;
-
-BB0_8:
-	mov.u32 	%r195, %r197;
-	mov.u32 	%r36, %r195;
-	shl.b32 	%r38, %r190, 4;
-	// inline asm
-	mov.u32 	%r129, %tid.x;
-	// inline asm
-	// inline asm
-	mov.u32 	%r130, %tid.y;
-	// inline asm
-	shl.b32 	%r40, %r130, 1;
-	add.s32 	%r192, %r40, %r129;
-	setp.gt.u32 	%p5, %r192, 255;
-	@%p5 bra 	BB0_11;
-
-	add.s32 	%r42, %r129, %r40;
-	and.b32  	%r132, %r42, 15;
-	add.s32 	%r43, %r38, %r132;
-	mov.u32 	%r191, 0;
-
-BB0_10:
-	mov.u32 	%r45, %r192;
-	add.s32 	%r133, %r42, %r191;
-	shl.b32 	%r134, %r43, 4;
-	shl.b32 	%r135, %r10, 9;
-	shl.b32 	%r136, %r45, 4;
-	add.s32 	%r138, %r97, %r136;
-	and.b32  	%r139, %r133, 65520;
-	shl.b32 	%r140, %r139, 16;
-	ld.param.u32 	%r178, [complexVoltages_param_1];
-	add.s32 	%r141, %r140, %r178;
-	add.s32 	%r142, %r141, %r135;
-	add.s32 	%r143, %r142, %r134;
-	ld.global.v4.f32 	{%f698, %f699, %f700, %f701}, [%r143+16777216];
-	st.shared.v4.f32 	[%r138], {%f698, %f699, %f700, %f701};
-	add.s32 	%r46, %r45, 256;
-	add.s32 	%r191, %r191, 256;
-	setp.gt.u32 	%p6, %r45, -257;
-	mov.u32 	%r192, %r46;
-	@%p6 bra 	BB0_10;
-
-BB0_11:
-	mov.u32 	%r194, %r12;
-	bar.sync 	0;
-	mov.u32 	%r193, 16;
-	mov.u32 	%r196, %r36;
-
-BB0_12:
-	mov.u32 	%r51, %r196;
-	ld.shared.v2.f32 	{%f472, %f473}, [%r194+-2048];
-	ld.global.v2.f32 	{%f474, %f475}, [%r51];
-	fma.rn.ftz.f32 	%f476, %f702, %f472, %f474;
-	fma.rn.ftz.f32 	%f477, %f702, %f473, %f475;
-	neg.ftz.f32 	%f51, %f473;
-	fma.rn.ftz.f32 	%f484, %f703, %f51, %f476;
-	fma.rn.ftz.f32 	%f485, %f703, %f472, %f477;
-	ld.shared.v2.f32 	{%f488, %f489}, [%r194+-1792];
-	fma.rn.ftz.f32 	%f490, %f708, %f488, %f484;
-	fma.rn.ftz.f32 	%f491, %f708, %f489, %f485;
-	neg.ftz.f32 	%f54, %f489;
-	fma.rn.ftz.f32 	%f498, %f709, %f54, %f490;
-	fma.rn.ftz.f32 	%f499, %f709, %f488, %f491;
-	ld.shared.v2.f32 	{%f502, %f503}, [%r194+-1536];
-	fma.rn.ftz.f32 	%f504, %f714, %f502, %f498;
-	fma.rn.ftz.f32 	%f505, %f714, %f503, %f499;
-	neg.ftz.f32 	%f57, %f503;
-	fma.rn.ftz.f32 	%f512, %f715, %f57, %f504;
-	fma.rn.ftz.f32 	%f513, %f715, %f502, %f505;
-	ld.shared.v2.f32 	{%f516, %f517}, [%r194+-1280];
-	fma.rn.ftz.f32 	%f518, %f720, %f516, %f512;
-	fma.rn.ftz.f32 	%f519, %f720, %f517, %f513;
-	neg.ftz.f32 	%f60, %f517;
-	fma.rn.ftz.f32 	%f526, %f721, %f60, %f518;
-	fma.rn.ftz.f32 	%f527, %f721, %f516, %f519;
-	ld.shared.v2.f32 	{%f530, %f531}, [%r194+-1024];
-	fma.rn.ftz.f32 	%f532, %f726, %f530, %f526;
-	fma.rn.ftz.f32 	%f533, %f726, %f531, %f527;
-	neg.ftz.f32 	%f63, %f531;
-	fma.rn.ftz.f32 	%f540, %f727, %f63, %f532;
-	fma.rn.ftz.f32 	%f541, %f727, %f530, %f533;
-	ld.shared.v2.f32 	{%f544, %f545}, [%r194+-768];
-	fma.rn.ftz.f32 	%f546, %f732, %f544, %f540;
-	fma.rn.ftz.f32 	%f547, %f732, %f545, %f541;
-	neg.ftz.f32 	%f66, %f545;
-	fma.rn.ftz.f32 	%f554, %f733, %f66, %f546;
-	fma.rn.ftz.f32 	%f555, %f733, %f544, %f547;
-	ld.shared.v2.f32 	{%f558, %f559}, [%r194+-512];
-	fma.rn.ftz.f32 	%f560, %f738, %f558, %f554;
-	fma.rn.ftz.f32 	%f561, %f738, %f559, %f555;
-	neg.ftz.f32 	%f69, %f559;
-	fma.rn.ftz.f32 	%f568, %f739, %f69, %f560;
-	fma.rn.ftz.f32 	%f569, %f739, %f558, %f561;
-	ld.shared.v2.f32 	{%f572, %f573}, [%r194+-256];
-	fma.rn.ftz.f32 	%f574, %f744, %f572, %f568;
-	fma.rn.ftz.f32 	%f575, %f744, %f573, %f569;
-	neg.ftz.f32 	%f72, %f573;
-	fma.rn.ftz.f32 	%f582, %f745, %f72, %f574;
-	fma.rn.ftz.f32 	%f583, %f745, %f572, %f575;
-	ld.shared.v2.f32 	{%f586, %f587}, [%r194];
-	fma.rn.ftz.f32 	%f588, %f750, %f586, %f582;
-	fma.rn.ftz.f32 	%f589, %f750, %f587, %f583;
-	neg.ftz.f32 	%f75, %f587;
-	fma.rn.ftz.f32 	%f596, %f751, %f75, %f588;
-	fma.rn.ftz.f32 	%f597, %f751, %f586, %f589;
-	ld.shared.v2.f32 	{%f600, %f601}, [%r194+256];
-	fma.rn.ftz.f32 	%f602, %f756, %f600, %f596;
-	fma.rn.ftz.f32 	%f603, %f756, %f601, %f597;
-	neg.ftz.f32 	%f78, %f601;
-	fma.rn.ftz.f32 	%f610, %f757, %f78, %f602;
-	fma.rn.ftz.f32 	%f611, %f757, %f600, %f603;
-	ld.shared.v2.f32 	{%f614, %f615}, [%r194+512];
-	fma.rn.ftz.f32 	%f616, %f762, %f614, %f610;
-	fma.rn.ftz.f32 	%f617, %f762, %f615, %f611;
-	neg.ftz.f32 	%f81, %f615;
-	fma.rn.ftz.f32 	%f624, %f763, %f81, %f616;
-	fma.rn.ftz.f32 	%f625, %f763, %f614, %f617;
-	ld.shared.v2.f32 	{%f628, %f629}, [%r194+768];
-	fma.rn.ftz.f32 	%f630, %f768, %f628, %f624;
-	fma.rn.ftz.f32 	%f631, %f768, %f629, %f625;
-	neg.ftz.f32 	%f84, %f629;
-	fma.rn.ftz.f32 	%f638, %f769, %f84, %f630;
-	fma.rn.ftz.f32 	%f639, %f769, %f628, %f631;
-	ld.shared.v2.f32 	{%f642, %f643}, [%r194+1024];
-	fma.rn.ftz.f32 	%f644, %f774, %f642, %f638;
-	fma.rn.ftz.f32 	%f645, %f774, %f643, %f639;
-	neg.ftz.f32 	%f87, %f643;
-	fma.rn.ftz.f32 	%f652, %f775, %f87, %f644;
-	fma.rn.ftz.f32 	%f653, %f775, %f642, %f645;
-	ld.shared.v2.f32 	{%f656, %f657}, [%r194+1280];
-	fma.rn.ftz.f32 	%f658, %f780, %f656, %f652;
-	fma.rn.ftz.f32 	%f659, %f780, %f657, %f653;
-	neg.ftz.f32 	%f90, %f657;
-	fma.rn.ftz.f32 	%f666, %f781, %f90, %f658;
-	fma.rn.ftz.f32 	%f667, %f781, %f656, %f659;
-	ld.shared.v2.f32 	{%f670, %f671}, [%r194+1536];
-	fma.rn.ftz.f32 	%f672, %f786, %f670, %f666;
-	fma.rn.ftz.f32 	%f673, %f786, %f671, %f667;
-	neg.ftz.f32 	%f93, %f671;
-	fma.rn.ftz.f32 	%f680, %f787, %f93, %f672;
-	fma.rn.ftz.f32 	%f681, %f787, %f670, %f673;
-	ld.shared.v2.f32 	{%f684, %f685}, [%r194+1792];
-	fma.rn.ftz.f32 	%f686, %f792, %f684, %f680;
-	fma.rn.ftz.f32 	%f687, %f792, %f685, %f681;
-	neg.ftz.f32 	%f96, %f685;
-	fma.rn.ftz.f32 	%f694, %f793, %f96, %f686;
-	fma.rn.ftz.f32 	%f695, %f793, %f684, %f687;
-	st.global.v2.f32 	[%r51], {%f694, %f695};
-	add.s32 	%r52, %r51, 2048;
-	add.s32 	%r194, %r194, 16;
-	add.s32 	%r193, %r193, -1;
-	setp.ne.s32 	%p7, %r193, 0;
-	mov.u32 	%r196, %r52;
-	@%p7 bra 	BB0_12;
-
-	bar.sync 	0;
-	add.s32 	%r190, %r190, 1;
-	add.s32 	%r56, %r36, 32768;
-	setp.ne.s32 	%p8, %r190, 2;
-	mov.u32 	%r197, %r56;
-	@%p8 bra 	BB0_8;
-
-	ld.param.u32 	%r180, [complexVoltages_param_2];
-	add.s32 	%r149, %r180, %r90;
-	ld.global.v2.f32 	{%f376, %f377}, [%r149+67108864];
-	ld.global.v2.f32 	{%f382, %f383}, [%r149+69206016];
-	ld.global.v2.f32 	{%f388, %f389}, [%r149+71303168];
-	ld.global.v2.f32 	{%f394, %f395}, [%r149+73400320];
-	ld.global.v2.f32 	{%f400, %f401}, [%r149+75497472];
-	ld.global.v2.f32 	{%f406, %f407}, [%r149+77594624];
-	ld.global.v2.f32 	{%f412, %f413}, [%r149+79691776];
-	ld.global.v2.f32 	{%f418, %f419}, [%r149+81788928];
-	ld.global.v2.f32 	{%f424, %f425}, [%r149+83886080];
-	ld.global.v2.f32 	{%f430, %f431}, [%r149+85983232];
-	ld.global.v2.f32 	{%f436, %f437}, [%r149+88080384];
-	ld.global.v2.f32 	{%f442, %f443}, [%r149+90177536];
-	ld.global.v2.f32 	{%f448, %f449}, [%r149+92274688];
-	ld.global.v2.f32 	{%f454, %f455}, [%r149+94371840];
-	ld.global.v2.f32 	{%f460, %f461}, [%r149+96468992];
-	ld.global.v2.f32 	{%f466, %f467}, [%r149+98566144];
-	ld.param.u32 	%r175, [complexVoltages_param_0];
-	add.s32 	%r205, %r175, %r96;
-	mov.u32 	%r198, 0;
-
-BB0_15:
-	mov.u32 	%r203, %r205;
-	mov.u32 	%r59, %r203;
-	shl.b32 	%r61, %r198, 4;
-	// inline asm
-	mov.u32 	%r159, %tid.x;
-	// inline asm
-	// inline asm
-	mov.u32 	%r160, %tid.y;
-	// inline asm
-	shl.b32 	%r63, %r160, 1;
-	add.s32 	%r200, %r63, %r159;
-	setp.gt.u32 	%p9, %r200, 255;
-	@%p9 bra 	BB0_18;
-
-	add.s32 	%r65, %r159, %r63;
-	and.b32  	%r162, %r65, 15;
-	add.s32 	%r66, %r61, %r162;
-	mov.u32 	%r199, 0;
-
-BB0_17:
-	mov.u32 	%r68, %r200;
-	add.s32 	%r163, %r65, %r199;
-	shl.b32 	%r164, %r66, 4;
-	shl.b32 	%r165, %r10, 9;
-	shl.b32 	%r166, %r68, 4;
-	add.s32 	%r168, %r97, %r166;
-	and.b32  	%r169, %r163, 65520;
-	shl.b32 	%r170, %r169, 16;
-	ld.param.u32 	%r177, [complexVoltages_param_1];
-	add.s32 	%r171, %r170, %r177;
-	add.s32 	%r172, %r171, %r165;
-	add.s32 	%r173, %r172, %r164;
-	ld.global.v4.f32 	{%f372, %f373, %f374, %f375}, [%r173+33554432];
-	st.shared.v4.f32 	[%r168], {%f372, %f373, %f374, %f375};
-	add.s32 	%r69, %r68, 256;
-	add.s32 	%r199, %r199, 256;
-	setp.gt.u32 	%p10, %r68, -257;
-	mov.u32 	%r200, %r69;
-	@%p10 bra 	BB0_17;
-
-BB0_18:
-	mov.u32 	%r202, %r12;
-	bar.sync 	0;
-	mov.u32 	%r201, 16;
-	mov.u32 	%r204, %r59;
-
-BB0_19:
-	mov.u32 	%r74, %r204;
-	ld.shared.v2.f32 	{%f146, %f147}, [%r202+-2048];
-	ld.global.v2.f32 	{%f148, %f149}, [%r74];
-	fma.rn.ftz.f32 	%f150, %f376, %f146, %f148;
-	fma.rn.ftz.f32 	%f151, %f376, %f147, %f149;
-	neg.ftz.f32 	%f99, %f147;
-	fma.rn.ftz.f32 	%f158, %f377, %f99, %f150;
-	fma.rn.ftz.f32 	%f159, %f377, %f146, %f151;
-	ld.shared.v2.f32 	{%f162, %f163}, [%r202+-1792];
-	fma.rn.ftz.f32 	%f164, %f382, %f162, %f158;
-	fma.rn.ftz.f32 	%f165, %f382, %f163, %f159;
-	neg.ftz.f32 	%f102, %f163;
-	fma.rn.ftz.f32 	%f172, %f383, %f102, %f164;
-	fma.rn.ftz.f32 	%f173, %f383, %f162, %f165;
-	ld.shared.v2.f32 	{%f176, %f177}, [%r202+-1536];
-	fma.rn.ftz.f32 	%f178, %f388, %f176, %f172;
-	fma.rn.ftz.f32 	%f179, %f388, %f177, %f173;
-	neg.ftz.f32 	%f105, %f177;
-	fma.rn.ftz.f32 	%f186, %f389, %f105, %f178;
-	fma.rn.ftz.f32 	%f187, %f389, %f176, %f179;
-	ld.shared.v2.f32 	{%f190, %f191}, [%r202+-1280];
-	fma.rn.ftz.f32 	%f192, %f394, %f190, %f186;
-	fma.rn.ftz.f32 	%f193, %f394, %f191, %f187;
-	neg.ftz.f32 	%f108, %f191;
-	fma.rn.ftz.f32 	%f200, %f395, %f108, %f192;
-	fma.rn.ftz.f32 	%f201, %f395, %f190, %f193;
-	ld.shared.v2.f32 	{%f204, %f205}, [%r202+-1024];
-	fma.rn.ftz.f32 	%f206, %f400, %f204, %f200;
-	fma.rn.ftz.f32 	%f207, %f400, %f205, %f201;
-	neg.ftz.f32 	%f111, %f205;
-	fma.rn.ftz.f32 	%f214, %f401, %f111, %f206;
-	fma.rn.ftz.f32 	%f215, %f401, %f204, %f207;
-	ld.shared.v2.f32 	{%f218, %f219}, [%r202+-768];
-	fma.rn.ftz.f32 	%f220, %f406, %f218, %f214;
-	fma.rn.ftz.f32 	%f221, %f406, %f219, %f215;
-	neg.ftz.f32 	%f114, %f219;
-	fma.rn.ftz.f32 	%f228, %f407, %f114, %f220;
-	fma.rn.ftz.f32 	%f229, %f407, %f218, %f221;
-	ld.shared.v2.f32 	{%f232, %f233}, [%r202+-512];
-	fma.rn.ftz.f32 	%f234, %f412, %f232, %f228;
-	fma.rn.ftz.f32 	%f235, %f412, %f233, %f229;
-	neg.ftz.f32 	%f117, %f233;
-	fma.rn.ftz.f32 	%f242, %f413, %f117, %f234;
-	fma.rn.ftz.f32 	%f243, %f413, %f232, %f235;
-	ld.shared.v2.f32 	{%f246, %f247}, [%r202+-256];
-	fma.rn.ftz.f32 	%f248, %f418, %f246, %f242;
-	fma.rn.ftz.f32 	%f249, %f418, %f247, %f243;
-	neg.ftz.f32 	%f120, %f247;
-	fma.rn.ftz.f32 	%f256, %f419, %f120, %f248;
-	fma.rn.ftz.f32 	%f257, %f419, %f246, %f249;
-	ld.shared.v2.f32 	{%f260, %f261}, [%r202];
-	fma.rn.ftz.f32 	%f262, %f424, %f260, %f256;
-	fma.rn.ftz.f32 	%f263, %f424, %f261, %f257;
-	neg.ftz.f32 	%f123, %f261;
-	fma.rn.ftz.f32 	%f270, %f425, %f123, %f262;
-	fma.rn.ftz.f32 	%f271, %f425, %f260, %f263;
-	ld.shared.v2.f32 	{%f274, %f275}, [%r202+256];
-	fma.rn.ftz.f32 	%f276, %f430, %f274, %f270;
-	fma.rn.ftz.f32 	%f277, %f430, %f275, %f271;
-	neg.ftz.f32 	%f126, %f275;
-	fma.rn.ftz.f32 	%f284, %f431, %f126, %f276;
-	fma.rn.ftz.f32 	%f285, %f431, %f274, %f277;
-	ld.shared.v2.f32 	{%f288, %f289}, [%r202+512];
-	fma.rn.ftz.f32 	%f290, %f436, %f288, %f284;
-	fma.rn.ftz.f32 	%f291, %f436, %f289, %f285;
-	neg.ftz.f32 	%f129, %f289;
-	fma.rn.ftz.f32 	%f298, %f437, %f129, %f290;
-	fma.rn.ftz.f32 	%f299, %f437, %f288, %f291;
-	ld.shared.v2.f32 	{%f302, %f303}, [%r202+768];
-	fma.rn.ftz.f32 	%f304, %f442, %f302, %f298;
-	fma.rn.ftz.f32 	%f305, %f442, %f303, %f299;
-	neg.ftz.f32 	%f132, %f303;
-	fma.rn.ftz.f32 	%f312, %f443, %f132, %f304;
-	fma.rn.ftz.f32 	%f313, %f443, %f302, %f305;
-	ld.shared.v2.f32 	{%f316, %f317}, [%r202+1024];
-	fma.rn.ftz.f32 	%f318, %f448, %f316, %f312;
-	fma.rn.ftz.f32 	%f319, %f448, %f317, %f313;
-	neg.ftz.f32 	%f135, %f317;
-	fma.rn.ftz.f32 	%f326, %f449, %f135, %f318;
-	fma.rn.ftz.f32 	%f327, %f449, %f316, %f319;
-	ld.shared.v2.f32 	{%f330, %f331}, [%r202+1280];
-	fma.rn.ftz.f32 	%f332, %f454, %f330, %f326;
-	fma.rn.ftz.f32 	%f333, %f454, %f331, %f327;
-	neg.ftz.f32 	%f138, %f331;
-	fma.rn.ftz.f32 	%f340, %f455, %f138, %f332;
-	fma.rn.ftz.f32 	%f341, %f455, %f330, %f333;
-	ld.shared.v2.f32 	{%f344, %f345}, [%r202+1536];
-	fma.rn.ftz.f32 	%f346, %f460, %f344, %f340;
-	fma.rn.ftz.f32 	%f347, %f460, %f345, %f341;
-	neg.ftz.f32 	%f141, %f345;
-	fma.rn.ftz.f32 	%f354, %f461, %f141, %f346;
-	fma.rn.ftz.f32 	%f355, %f461, %f344, %f347;
-	ld.shared.v2.f32 	{%f358, %f359}, [%r202+1792];
-	fma.rn.ftz.f32 	%f360, %f466, %f358, %f354;
-	fma.rn.ftz.f32 	%f361, %f466, %f359, %f355;
-	neg.ftz.f32 	%f144, %f359;
-	fma.rn.ftz.f32 	%f368, %f467, %f144, %f360;
-	fma.rn.ftz.f32 	%f369, %f467, %f358, %f361;
-	st.global.v2.f32 	[%r74], {%f368, %f369};
-	add.s32 	%r75, %r74, 2048;
-	add.s32 	%r202, %r202, 16;
-	add.s32 	%r201, %r201, -1;
-	setp.ne.s32 	%p11, %r201, 0;
-	mov.u32 	%r204, %r75;
-	@%p11 bra 	BB0_19;
-
-	bar.sync 	0;
-	add.s32 	%r198, %r198, 1;
-	add.s32 	%r79, %r59, 32768;
-	setp.ne.s32 	%p12, %r198, 2;
-	mov.u32 	%r205, %r79;
-	@%p12 bra 	BB0_15;
-
-	ret;
-}
-
-
diff --git a/RTCP/GPUProc/src/BeamFormer/CoherentStokes.cl-0.ptx b/RTCP/GPUProc/src/BeamFormer/CoherentStokes.cl-0.ptx
deleted file mode 100644
index 95682a21f13f73a46e51290282c947066bcf9e94..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 29008
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

diff --git a/RTCP/GPUProc/src/BeamFormer/Dedispersion.cl-0.ptx b/RTCP/GPUProc/src/BeamFormer/Dedispersion.cl-0.ptx
deleted file mode 100644
index 221a542fb5f..00000000000
--- a/RTCP/GPUProc/src/BeamFormer/Dedispersion.cl-0.ptx
+++ /dev/null
@@ -1,417 +0,0 @@
-//
-// Generated by NVIDIA NVVM Compiler
-// Compiler built on Sat Sep 29 10:12:13 2012 (1348906333)
-// Driver 304.54
-//
-
-.version 3.0
-.target sm_30, texmode_independent
-.address_size 32
-
-.extern .shared .align 4 .b8 shr_2_local_DMs[512];
-
-.entry applyChirp(
-	.param .u32 .ptr .global .align 1 applyChirp_param_0,
-	.param .u32 .ptr .global .align 4 applyChirp_param_1,
-	.param .f32 applyChirp_param_2
-)
-{
-	.reg .f32 	%f<225>;
-	.reg .pred 	%p<26>;
-	.reg .s32 	%r<97>;
-
-
-	// inline asm
-	mov.u32 	%r32, %tid.x;
-	// inline asm
-	setp.gt.s32 	%p4, %r32, 127;
-	mov.u32 	%r92, %r32;
-	@%p4 bra 	BB0_2;
-
-BB0_1:
-	shl.b32 	%r34, %r92, 2;
-	ld.param.u32 	%r91, [applyChirp_param_1];
-	add.s32 	%r35, %r91, %r34;
-	ld.global.f32 	%f29, [%r35];
-	add.ftz.f32 	%f30, %f29, %f29;
-	mul.ftz.f32 	%f31, %f30, 0f40490FDB;
-	mul.ftz.f32 	%f32, %f31, 0f596BD7E5;
-	mov.u32 	%r36, shr_2_local_DMs;
-	add.s32 	%r37, %r36, %r34;
-	st.shared.f32 	[%r37], %f32;
-	// inline asm
-	mov.u32 	%r33, %ntid.x;
-	// inline asm
-	add.s32 	%r92, %r33, %r92;
-	setp.lt.s32 	%p5, %r92, 128;
-	@%p5 bra 	BB0_1;
-
-BB0_2:
-	bar.sync 	0;
-	// inline asm
-	mov.u32 	%r38, %envreg3;
-	// inline asm
-	// inline asm
-	mov.u32 	%r39, %ntid.x;
-	// inline asm
-	// inline asm
-	mov.u32 	%r40, %ctaid.x;
-	// inline asm
-	// inline asm
-	mov.u32 	%r41, %tid.x;
-	// inline asm
-	add.s32 	%r50, %r41, %r38;
-	mad.lo.s32 	%r51, %r40, %r39, %r50;
-	// inline asm
-	mov.u32 	%r42, %envreg4;
-	// inline asm
-	// inline asm
-	mov.u32 	%r43, %ntid.y;
-	// inline asm
-	// inline asm
-	mov.u32 	%r44, %ctaid.y;
-	// inline asm
-	// inline asm
-	mov.u32 	%r45, %tid.y;
-	// inline asm
-	// inline asm
-	mov.u32 	%r46, %envreg5;
-	// inline asm
-	// inline asm
-	mov.u32 	%r47, %ntid.z;
-	// inline asm
-	// inline asm
-	mov.u32 	%r48, %ctaid.z;
-	// inline asm
-	// inline asm
-	mov.u32 	%r49, %tid.z;
-	// inline asm
-	add.s32 	%r52, %r49, %r46;
-	mad.lo.s32 	%r53, %r48, %r47, %r52;
-	cvt.rn.f32.u32 	%f35, %r53;
-	ld.param.f32 	%f217, [applyChirp_param_2];
-	add.ftz.f32 	%f36, %f217, 0fC7BEBC20;
-	fma.rn.ftz.f32 	%f2, %f35, 0f42BEBC20, %f36;
-	cvt.rn.f32.u32 	%f37, %r51;
-	mul.ftz.f32 	%f38, %f37, 0f403EBC20;
-	setp.gt.u32 	%p6, %r51, 32;
-	fma.rn.ftz.f32 	%f39, %f37, 0f403EBC20, 0fC2BEBC20;
-	selp.f32 	%f3, %f39, %f38, %p6;
-	div.rn.ftz.f32 	%f34, %f3, 0f42334A70;
-	// inline asm
-	abs.f32 	%f33, %f34;
-	// inline asm
-	setp.eq.ftz.f32 	%p7, %f34, 0f3F800000;
-	@%p7 bra 	BB0_25;
-
-	setp.nan.ftz.f32 	%p8, %f34, %f34;
-	@%p8 bra 	BB0_24;
-
-	mov.f32 	%f6, 0fFF800000;
-	mov.f32 	%f220, 0f42A00000;
-	mov.f32 	%f44, 0f3F000000;
-	mul.rn.f32 	%f41, %f44, %f220;
-	// inline asm
-	cvt.rmi.f32.f32 	%f40, %f41;
-	// inline asm
-	mov.f32 	%f45, 0f40000000;
-	mul.rn.f32 	%f46, %f45, %f40;
-	sub.ftz.f32 	%f47, %f220, %f46;
-	setp.eq.ftz.f32 	%p1, %f47, 0f3F800000;
-	// inline asm
-	cvt.rzi.f32.f32 	%f42, %f220;
-	// inline asm
-	setp.eq.ftz.f32 	%p2, %f42, 0f42A00000;
-	and.pred  	%p3, %p1, %p2;
-	setp.eq.ftz.f32 	%p9, %f33, 0f00000000;
-	@%p9 bra 	BB0_23;
-
-	setp.eq.ftz.f32 	%p10, %f34, 0f7F800000;
-	setp.eq.ftz.f32 	%p11, %f34, %f6;
-	or.pred  	%p12, %p10, %p11;
-	@%p12 bra 	BB0_20;
-
-	setp.geu.ftz.f32 	%p13, %f34, 0f00000000;
-	@%p13 bra 	BB0_8;
-
-	mov.f32 	%f49, 0f42A00000;
-	// inline asm
-	cvt.rzi.f32.f32 	%f48, %f49;
-	// inline asm
-	setp.neu.ftz.f32 	%p14, %f48, 0f42A00000;
-	@%p14 bra 	BB0_19;
-
-BB0_8:
-	// inline asm
-	abs.f32 	%f50, %f34;
-	// inline asm
-	mov.b32 	 %r18, %f50;
-	shr.u32 	%r54, %r18, 23;
-	and.b32  	%r55, %r54, 255;
-	add.s32 	%r93, %r55, -127;
-	setp.eq.s32 	%p15, %r55, 0;
-	mov.f32 	%f218, %f50;
-	@%p15 bra 	BB0_9;
-	bra.uni 	BB0_10;
-
-BB0_9:
-	and.b32  	%r56, %r18, -2139095041;
-	or.b32  	%r57, %r56, 1065353216;
-	mov.b32 	 %f52, %r57;
-	add.ftz.f32 	%f53, %f52, 0fBF800000;
-	mov.b32 	 %r58, %f53;
-	shr.u32 	%r59, %r58, 23;
-	and.b32  	%r60, %r59, 255;
-	add.s32 	%r93, %r60, -253;
-	and.b32  	%r61, %r58, -2139095041;
-	or.b32  	%r62, %r61, 1065353216;
-	mov.b32 	 %f218, %r62;
-
-BB0_10:
-	mov.b32 	 %r63, %f218;
-	and.b32  	%r64, %r63, -2139095041;
-	or.b32  	%r65, %r64, 1065353216;
-	mov.b32 	 %f219, %r65;
-	setp.gt.ftz.f32 	%p16, %f219, 0f3FB504F3;
-	@%p16 bra 	BB0_11;
-	bra.uni 	BB0_12;
-
-BB0_11:
-	mul.rn.f32 	%f219, %f219, %f44;
-	add.s32 	%r93, %r93, 1;
-
-BB0_12:
-	add.ftz.f32 	%f63, %f219, 0f3F800000;
-	rcp.approx.ftz.f32 	%f57, %f63;
-	add.ftz.f32 	%f56, %f219, 0fBF800000;
-	// inline asm
-	mul.rz.f32 	%f55, %f56, %f57;
-	// inline asm
-	mul.rn.f32 	%f65, %f45, %f55;
-	mul.rn.f32 	%f66, %f65, %f65;
-	mov.f32 	%f67, 0f3B18F0FE;
-	mul.rn.f32 	%f68, %f67, %f66;
-	add.ftz.f32 	%f69, %f68, 0f3C4CAF63;
-	mul.rn.f32 	%f70, %f69, %f66;
-	add.ftz.f32 	%f71, %f70, 0f3DAAAABD;
-	mul.rn.f32 	%f72, %f71, %f66;
-	mul.rn.f32 	%f60, %f72, %f65;
-	mov.b32 	 %r66, %f65;
-	and.b32  	%r67, %r66, -4096;
-	mov.b32 	 %f73, %r67;
-	mov.b32 	 %r68, %f56;
-	and.b32  	%r69, %r68, -4096;
-	mov.b32 	 %f74, %r69;
-	sub.ftz.f32 	%f75, %f56, %f73;
-	mul.rn.f32 	%f76, %f45, %f75;
-	sub.ftz.f32 	%f77, %f56, %f74;
-	mul.rn.f32 	%f78, %f73, %f74;
-	sub.ftz.f32 	%f79, %f76, %f78;
-	mul.rn.f32 	%f80, %f73, %f77;
-	sub.ftz.f32 	%f81, %f79, %f80;
-	mul.rn.f32 	%f82, %f57, %f81;
-	add.ftz.f32 	%f83, %f73, %f82;
-	sub.ftz.f32 	%f84, %f83, %f73;
-	sub.ftz.f32 	%f85, %f82, %f84;
-	add.ftz.f32 	%f86, %f83, %f60;
-	neg.ftz.f32 	%f59, %f60;
-	// inline asm
-	add.rz.f32 	%f58, %f59, %f60;
-	// inline asm
-	add.ftz.f32 	%f87, %f58, %f85;
-	add.ftz.f32 	%f88, %f86, %f87;
-	sub.ftz.f32 	%f89, %f87, %f87;
-	cvt.rn.f32.s32 	%f90, %r93;
-	mov.f32 	%f91, 0f3F317200;
-	mul.rn.f32 	%f92, %f90, %f91;
-	mov.f32 	%f93, 0f35BFBE8E;
-	mul.rn.f32 	%f94, %f90, %f93;
-	add.ftz.f32 	%f95, %f92, %f88;
-	sub.ftz.f32 	%f96, %f88, %f88;
-	add.ftz.f32 	%f97, %f96, %f89;
-	add.ftz.f32 	%f98, %f97, %f94;
-	add.ftz.f32 	%f13, %f95, %f98;
-	sub.ftz.f32 	%f14, %f98, %f98;
-	// inline asm
-	abs.f32 	%f61, %f220;
-	// inline asm
-	setp.gt.ftz.f32 	%p17, %f61, 0f77F684DF;
-	@%p17 bra 	BB0_13;
-	bra.uni 	BB0_14;
-
-BB0_13:
-	mov.f32 	%f100, 0f39000000;
-	mov.f32 	%f101, 0f42A00000;
-	mul.rn.f32 	%f220, %f101, %f100;
-
-BB0_14:
-	mov.f32 	%f102, 0f45800800;
-	mul.rn.f32 	%f103, %f13, %f102;
-	sub.ftz.f32 	%f104, %f13, %f103;
-	add.ftz.f32 	%f105, %f104, %f103;
-	sub.ftz.f32 	%f106, %f13, %f105;
-	mul.rn.f32 	%f107, %f220, %f102;
-	sub.ftz.f32 	%f108, %f220, %f107;
-	add.ftz.f32 	%f109, %f108, %f107;
-	sub.ftz.f32 	%f110, %f220, %f109;
-	mul.rn.f32 	%f111, %f105, %f109;
-	mul.rn.f32 	%f112, %f13, %f220;
-	sub.ftz.f32 	%f113, %f111, %f112;
-	mul.rn.f32 	%f114, %f105, %f110;
-	add.ftz.f32 	%f115, %f113, %f114;
-	mul.rn.f32 	%f116, %f106, %f109;
-	add.ftz.f32 	%f117, %f115, %f116;
-	mul.rn.f32 	%f118, %f106, %f110;
-	add.ftz.f32 	%f119, %f117, %f118;
-	mul.rn.f32 	%f120, %f14, %f220;
-	add.ftz.f32 	%f121, %f120, %f119;
-	add.ftz.f32 	%f122, %f112, %f121;
-	sub.ftz.f32 	%f17, %f121, %f121;
-	mov.f32 	%f223, %f17;
-	mov.f32 	%f224, %f122;
-	mov.b32 	 %r24, %f122;
-	setp.eq.s32 	%p18, %r24, 1118925336;
-	@%p18 bra 	BB0_15;
-	bra.uni 	BB0_16;
-
-BB0_15:
-	add.s32 	%r70, %r24, -1;
-	mov.b32 	 %f123, %r70;
-	add.ftz.f32 	%f124, %f17, 0f37000000;
-	mov.f32 	%f223, %f124;
-	mov.f32 	%f224, %f123;
-
-BB0_16:
-	// inline asm
-	mul.f32 	%f125, %f224, 0f3FB8AA3B;ex2.approx.f32 	%f125, %f125;
-	// inline asm
-	setp.neu.ftz.f32 	%p19, %f125, 0f7F800000;
-	mov.f32 	%f221, %f125;
-	@%p19 bra 	BB0_17;
-	bra.uni 	BB0_18;
-
-BB0_17:
-	// inline asm
-	mad.f32 	%f127, %f125, %f223, %f125;
-	// inline asm
-	mov.f32 	%f221, %f127;
-
-BB0_18:
-	not.pred 	%p21, %p3;
-	or.pred  	%p23, %p13, %p21;
-	mov.b32 	 %r71, %f221;
-	xor.b32  	%r72, %r71, -2147483648;
-	mov.b32 	 %f131, %r72;
-	selp.f32 	%f222, %f221, %f131, %p23;
-	bra.uni 	BB0_26;
-
-BB0_19:
-	mov.f32 	%f222, 0f7FFFFFFF;
-	bra.uni 	BB0_26;
-
-BB0_20:
-	mov.b32 	 %r73, %f34;
-	setp.lt.s32 	%p24, %r73, 0;
-	@%p24 bra 	BB0_22;
-
-	mov.f32 	%f222, 0f7F800000;
-	bra.uni 	BB0_26;
-
-BB0_22:
-	selp.f32 	%f222, 0fFF800000, 0f7F800000, %p3;
-	bra.uni 	BB0_26;
-
-BB0_23:
-	mov.b32 	 %r74, %f34;
-	and.b32  	%r75, %r74, -2147483648;
-	mov.b32 	 %f132, %r75;
-	selp.f32 	%f222, %f132, 0f00000000, %p3;
-	bra.uni 	BB0_26;
-
-BB0_24:
-	add.ftz.f32 	%f222, %f34, 0f42A00000;
-	bra.uni 	BB0_26;
-
-BB0_25:
-	mov.f32 	%f222, 0f3F800000;
-
-BB0_26:
-	add.ftz.f32 	%f135, %f222, 0f3F800000;
-	// inline asm
-	rsqrt.approx.f32 	%f134, %f135;
-	// inline asm
-	mul.ftz.f32 	%f136, %f134, 0f42000000;
-	div.approx.ftz.f32 	%f137, %f3, %f2;
-	mul.ftz.f32 	%f138, %f137, %f137;
-	add.ftz.f32 	%f139, %f2, %f3;
-	div.approx.ftz.f32 	%f28, %f138, %f139;
-	add.s32 	%r78, %r45, %r42;
-	mad.lo.s32 	%r79, %r44, %r43, %r78;
-	shl.b32 	%r80, %r79, 8;
-	shl.b32 	%r83, %r53, 8;
-	add.s32 	%r84, %r80, %r83;
-	shl.b32 	%r87, %r51, 3;
-	add.s32 	%r88, %r84, %r87;
-	ld.param.u32 	%r90, [applyChirp_param_0];
-	add.s32 	%r89, %r88, %r90;
-	add.s32 	%r95, %r89, 1048576;
-	mov.u32 	%r96, 128;
-	mov.u32 	%r94, shr_2_local_DMs;
-
-BB0_27:
-	ld.global.v2.f32 	{%f181, %f182}, [%r95+-1048576];
-	ld.global.v2.f32 	{%f183, %f184}, [%r95+-524288];
-	ld.shared.f32 	%f149, [%r94];
-	mul.ftz.f32 	%f144, %f149, %f28;
-	// inline asm
-	cos.approx.f32 	%f141, %f144;
-	// inline asm
-	// inline asm
-	sin.approx.f32 	%f143, %f144;
-	// inline asm
-	mul.ftz.f32 	%f187, %f141, %f136;
-	mul.ftz.f32 	%f188, %f143, %f136;
-	mul.ftz.f32 	%f152, %f187, %f181;
-	neg.f32 	%f155, %f188;
-	fma.rn.ftz.f32 	%f156, %f155, %f182, %f152;
-	mul.ftz.f32 	%f157, %f188, %f181;
-	fma.rn.ftz.f32 	%f158, %f187, %f182, %f157;
-	st.global.v2.f32 	[%r95+-1048576], {%f156, %f158};
-	mul.ftz.f32 	%f160, %f187, %f183;
-	fma.rn.ftz.f32 	%f162, %f155, %f184, %f160;
-	mul.ftz.f32 	%f163, %f188, %f183;
-	fma.rn.ftz.f32 	%f164, %f187, %f184, %f163;
-	st.global.v2.f32 	[%r95+-524288], {%f162, %f164};
-	ld.global.v2.f32 	{%f195, %f196}, [%r95];
-	ld.global.v2.f32 	{%f197, %f198}, [%r95+524288];
-	ld.shared.f32 	%f165, [%r94+4];
-	mul.ftz.f32 	%f148, %f165, %f28;
-	// inline asm
-	cos.approx.f32 	%f145, %f148;
-	// inline asm
-	// inline asm
-	sin.approx.f32 	%f147, %f148;
-	// inline asm
-	mul.ftz.f32 	%f201, %f145, %f136;
-	mul.ftz.f32 	%f202, %f147, %f136;
-	mul.ftz.f32 	%f168, %f201, %f195;
-	neg.f32 	%f171, %f202;
-	fma.rn.ftz.f32 	%f172, %f171, %f196, %f168;
-	mul.ftz.f32 	%f173, %f202, %f195;
-	fma.rn.ftz.f32 	%f174, %f201, %f196, %f173;
-	st.global.v2.f32 	[%r95], {%f172, %f174};
-	mul.ftz.f32 	%f176, %f201, %f197;
-	fma.rn.ftz.f32 	%f178, %f171, %f198, %f176;
-	mul.ftz.f32 	%f179, %f202, %f197;
-	fma.rn.ftz.f32 	%f180, %f201, %f198, %f179;
-	st.global.v2.f32 	[%r95+524288], {%f178, %f180};
-	add.s32 	%r95, %r95, 2097152;
-	add.s32 	%r94, %r94, 8;
-	add.s32 	%r96, %r96, -2;
-	setp.ne.s32 	%p25, %r96, 0;
-	@%p25 bra 	BB0_27;
-
-	ret;
-}
-
-
diff --git a/RTCP/GPUProc/src/BeamFormer/IncoherentStokes.cl-0.ptx b/RTCP/GPUProc/src/BeamFormer/IncoherentStokes.cl-0.ptx
deleted file mode 100644
index be0613c10bbe025940d0054bfd9e8579149984e3..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 53912
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
Kt$S4{iu`~6Nw-`8

diff --git a/RTCP/GPUProc/src/BeamFormer/IntToFloat.cl-0.ptx b/RTCP/GPUProc/src/BeamFormer/IntToFloat.cl-0.ptx
deleted file mode 100644
index ce5c60b9ac9..00000000000
--- a/RTCP/GPUProc/src/BeamFormer/IntToFloat.cl-0.ptx
+++ /dev/null
@@ -1,82 +0,0 @@
-//
-// Generated by NVIDIA NVVM Compiler
-// Compiler built on Sat Sep 29 10:12:13 2012 (1348906333)
-// Driver 304.54
-//
-
-.version 3.0
-.target sm_30, texmode_independent
-.address_size 32
-
-
-.entry intToFloat(
-	.param .u32 .ptr .global .align 1 intToFloat_param_0,
-	.param .u32 .ptr .global .align 1 intToFloat_param_1
-)
-{
-	.reg .f32 	%f<9>;
-	.reg .pred 	%p<3>;
-	.reg .s32 	%r<25>;
-	.reg .s16 	%rc<9>;
-
-
-	// inline asm
-	mov.u32 	%r7, %envreg4;
-	// inline asm
-	// inline asm
-	mov.u32 	%r8, %ntid.y;
-	// inline asm
-	// inline asm
-	mov.u32 	%r9, %ctaid.y;
-	// inline asm
-	// inline asm
-	mov.u32 	%r10, %tid.y;
-	// inline asm
-	add.s32 	%r12, %r10, %r7;
-	mad.lo.s32 	%r3, %r9, %r8, %r12;
-	// inline asm
-	mov.u32 	%r11, %tid.x;
-	// inline asm
-	setp.gt.u32 	%p1, %r11, 65535;
-	mov.u32 	%r24, %r11;
-	@%p1 bra 	BB0_2;
-
-BB0_1:
-	shl.b32 	%r14, %r3, 18;
-	ld.param.u32 	%r23, [intToFloat_param_1];
-	add.s32 	%r15, %r23, %r14;
-	shl.b32 	%r16, %r24, 2;
-	add.s32 	%r17, %r15, %r16;
-	ld.global.v2.u8 	{%rc5, %rc6}, [%r17];
-	// inline asm
-	cvt.rn.f32.s8 	%f1, %rc5;
-	// inline asm
-	// inline asm
-	cvt.rn.f32.s8 	%f2, %rc6;
-	// inline asm
-	shl.b32 	%r18, %r3, 20;
-	ld.param.u32 	%r22, [intToFloat_param_0];
-	add.s32 	%r19, %r22, %r18;
-	shl.b32 	%r20, %r24, 3;
-	add.s32 	%r21, %r19, %r20;
-	st.global.v2.f32 	[%r21], {%f1, %f2};
-	ld.global.v2.u8 	{%rc7, %rc8}, [%r17+2];
-	// inline asm
-	cvt.rn.f32.s8 	%f3, %rc7;
-	// inline asm
-	// inline asm
-	cvt.rn.f32.s8 	%f4, %rc8;
-	// inline asm
-	st.global.v2.f32 	[%r21+524288], {%f3, %f4};
-	// inline asm
-	mov.u32 	%r13, %ntid.x;
-	// inline asm
-	add.s32 	%r24, %r13, %r24;
-	setp.lt.u32 	%p2, %r24, 65536;
-	@%p2 bra 	BB0_1;
-
-BB0_2:
-	ret;
-}
-
-
diff --git a/RTCP/GPUProc/src/BeamFormer/Transpose.cl-0.ptx b/RTCP/GPUProc/src/BeamFormer/Transpose.cl-0.ptx
deleted file mode 100644
index 26a5c9cca9b..00000000000
--- a/RTCP/GPUProc/src/BeamFormer/Transpose.cl-0.ptx
+++ /dev/null
@@ -1,134 +0,0 @@
-//
-// Generated by NVIDIA NVVM Compiler
-// Compiler built on Sat Sep 29 10:12:13 2012 (1348906333)
-// Driver 304.54
-//
-
-.version 3.0
-.target sm_30, texmode_independent
-.address_size 32
-
-.extern .shared .align 16 .b8 shr_3_tmp[4352];
-
-.entry transposeComplexVoltages(
-	.param .u32 .ptr .global .align 1 transposeComplexVoltages_param_0,
-	.param .u32 .ptr .global .align 1 transposeComplexVoltages_param_1
-)
-{
-	.reg .f32 	%f<65>;
-	.reg .pred 	%p<2>;
-	.reg .s32 	%r<58>;
-
-
-	ld.param.u32 	%r26, [transposeComplexVoltages_param_0];
-	ld.param.u32 	%r27, [transposeComplexVoltages_param_1];
-	// inline asm
-	mov.u32 	%r13, %envreg4;
-	// inline asm
-	// inline asm
-	mov.u32 	%r14, %ntid.y;
-	// inline asm
-	// inline asm
-	mov.u32 	%r15, %ctaid.y;
-	// inline asm
-	// inline asm
-	mov.u32 	%r16, %tid.y;
-	// inline asm
-	// inline asm
-	mov.u32 	%r17, %envreg5;
-	// inline asm
-	// inline asm
-	mov.u32 	%r18, %ntid.z;
-	// inline asm
-	// inline asm
-	mov.u32 	%r19, %ctaid.z;
-	// inline asm
-	// inline asm
-	mov.u32 	%r20, %tid.z;
-	// inline asm
-	// inline asm
-	mov.u32 	%r21, %tid.x;
-	// inline asm
-	// inline asm
-	mov.u32 	%r22, %tid.x;
-	// inline asm
-	shr.u32 	%r28, %r22, 4;
-	// inline asm
-	mov.u32 	%r23, %tid.x;
-	// inline asm
-	shr.u32 	%r29, %r23, 4;
-	// inline asm
-	mov.u32 	%r24, %tid.x;
-	// inline asm
-	and.b32  	%r30, %r21, 15;
-	mov.u32 	%r31, shr_3_tmp;
-	mad.lo.s32 	%r32, %r30, 272, %r31;
-	and.b32  	%r33, %r22, -16;
-	add.s32 	%r1, %r32, %r33;
-	mad.lo.s32 	%r34, %r29, 272, %r31;
-	and.b32  	%r35, %r24, 15;
-	shl.b32 	%r36, %r35, 4;
-	add.s32 	%r2, %r34, %r36;
-	add.s32 	%r37, %r20, %r17;
-	mad.lo.s32 	%r38, %r19, %r18, %r37;
-	shl.b32 	%r39, %r38, 4;
-	add.s32 	%r40, %r28, %r39;
-	shl.b32 	%r41, %r40, 16;
-	add.s32 	%r42, %r16, %r13;
-	mad.lo.s32 	%r43, %r15, %r14, %r42;
-	shl.b32 	%r44, %r43, 4;
-	add.s32 	%r45, %r44, %r30;
-	shl.b32 	%r46, %r45, 4;
-	add.s32 	%r47, %r41, %r46;
-	add.s32 	%r48, %r47, %r27;
-	add.s32 	%r56, %r48, 4096;
-	add.s32 	%r49, %r29, %r44;
-	shl.b32 	%r50, %r49, 20;
-	add.s32 	%r51, %r39, %r35;
-	shl.b32 	%r52, %r51, 3;
-	add.s32 	%r53, %r50, %r52;
-	add.s32 	%r54, %r53, %r26;
-	add.s32 	%r55, %r54, 525056;
-	mov.u32 	%r57, 2048;
-
-BB0_1:
-	add.s32 	%r8, %r56, -4096;
-	ld.global.v4.f32 	{%f61, %f62, %f63, %f64}, [%r56+-4096];
-	st.shared.v4.f32 	[%r1], {%f61, %f62, %f63, %f64};
-	bar.sync 	0;
-	ld.shared.v4.f32 	{%f53, %f54, %f55, %f56}, [%r2];
-	add.s32 	%r9, %r55, -525056;
-	st.global.v2.f32 	[%r55+-525056], {%f53, %f54};
-	st.global.v2.f32 	[%r55+-768], {%f55, %f56};
-	bar.sync 	0;
-	ld.global.v4.f32 	{%f49, %f50, %f51, %f52}, [%r8+2048];
-	st.shared.v4.f32 	[%r1], {%f49, %f50, %f51, %f52};
-	bar.sync 	0;
-	ld.shared.v4.f32 	{%f41, %f42, %f43, %f44}, [%r2];
-	st.global.v2.f32 	[%r9+256], {%f41, %f42};
-	st.global.v2.f32 	[%r9+524544], {%f43, %f44};
-	bar.sync 	0;
-	ld.global.v4.f32 	{%f37, %f38, %f39, %f40}, [%r8+4096];
-	st.shared.v4.f32 	[%r1], {%f37, %f38, %f39, %f40};
-	bar.sync 	0;
-	ld.shared.v4.f32 	{%f29, %f30, %f31, %f32}, [%r2];
-	st.global.v2.f32 	[%r9+512], {%f29, %f30};
-	st.global.v2.f32 	[%r9+524800], {%f31, %f32};
-	bar.sync 	0;
-	ld.global.v4.f32 	{%f25, %f26, %f27, %f28}, [%r8+6144];
-	st.shared.v4.f32 	[%r1], {%f25, %f26, %f27, %f28};
-	bar.sync 	0;
-	ld.shared.v4.f32 	{%f17, %f18, %f19, %f20}, [%r2];
-	st.global.v2.f32 	[%r9+768], {%f17, %f18};
-	st.global.v2.f32 	[%r9+525056], {%f19, %f20};
-	bar.sync 	0;
-	add.s32 	%r56, %r56, 8192;
-	add.s32 	%r55, %r55, 1024;
-	add.s32 	%r57, %r57, -4;
-	setp.ne.s32 	%p1, %r57, 0;
-	@%p1 bra 	BB0_1;
-
-	ret;
-}
-
-
diff --git a/RTCP/GPUProc/src/CL/cl.hpp b/RTCP/GPUProc/src/CL/cl.hpp
index 5111f37dc8c..aa2b0bd040f 100644
--- a/RTCP/GPUProc/src/CL/cl.hpp
+++ b/RTCP/GPUProc/src/CL/cl.hpp
@@ -1,4 +1,4 @@
-#include <iostream>
+//#include <iostream>
 /*******************************************************************************
  * Copyright (c) 2008-2011 The Khronos Group Inc.
  *
@@ -2069,9 +2069,9 @@ public:
     {
         cl_int error;
         object_ = ::clCreateBuffer(context(), flags, size, host_ptr, &error);
-if (!(flags & CL_MEM_ALLOC_HOST_PTR))
-#pragma omp critical (cout)
-std::cout << "A: Allocating " << size << " bytes" << std::endl;
+//if (!(flags & CL_MEM_ALLOC_HOST_PTR))
+//#pragma omp critical (cout)
+//std::cout << "A: Allocating " << size << " bytes" << std::endl;
 
         detail::errHandler(error, __CREATE_BUFFER_ERR);
         if (err != NULL) {
@@ -2090,9 +2090,9 @@ std::cout << "A: Allocating " << size << " bytes" << std::endl;
         Context context = Context::getDefault(err);
 
         object_ = ::clCreateBuffer(context(), flags, size, host_ptr, &error);
-if (!(flags & CL_MEM_ALLOC_HOST_PTR))
-#pragma omp critical (cout)
-std::cout << "B: Allocating " << size << " bytes" << std::endl;
+//if (!(flags & CL_MEM_ALLOC_HOST_PTR))
+//#pragma omp critical (cout)
+//std::cout << "B: Allocating " << size << " bytes" << std::endl;
 
         detail::errHandler(error, __CREATE_BUFFER_ERR);
         if (err != NULL) {
diff --git a/RTCP/GPUProc/src/Correlator.cl b/RTCP/GPUProc/src/Correlator.cl
index 9ca1ce91620..5d41253f40d 100644
--- a/RTCP/GPUProc/src/Correlator.cl
+++ b/RTCP/GPUProc/src/Correlator.cl
@@ -1,7 +1,7 @@
 #define NR_BASELINES	 (NR_STATIONS * (NR_STATIONS + 1) / 2)
 
 #if NR_STATIONS == 288
-#define BLOCK_SIZE	 8
+#define BLOCK_SIZE	 6
 #elif defined NVIDIA_CUDA && NR_SAMPLES_PER_CHANNEL % 24 == 0
 #define BLOCK_SIZE	 24
 #else
@@ -24,7 +24,7 @@ __kernel void correlate(__global void *visibilitiesPtr,
   __local float samples[4][BLOCK_SIZE][NR_STATIONS | 1]; // avoid power-of-2
 
   uint baseline	    = get_global_id(0);
-  uint channel	    = get_global_id(1);
+  uint channel	    = get_global_id(1) + 1;
   uint stat_0	    = convert_uint_rtz(sqrt(convert_float(8 * baseline + 1)) - 0.99999f) / 2;
   uint stat_A	    = baseline - stat_0 * (stat_0 + 1) / 2;
 
@@ -84,7 +84,7 @@ __kernel void correlate_2x2(__global void *visibilitiesPtr,
 
   __local float4 samples[2][BLOCK_SIZE][(NR_STATIONS + 1) / 2 | 1]; // avoid power-of-2
 
-  uint channel	    = get_global_id(1);
+  uint channel	    = get_global_id(1) + 1;
   uint block	    = get_global_id(0);
 
   uint x	    = convert_uint_rtz(sqrt(convert_float(8 * block + 1)) - 0.99999f) / 2;
@@ -181,7 +181,7 @@ __kernel void correlate_3x3(__global void *visibilitiesPtr,
 
   __local float4 samples[3][BLOCK_SIZE][(NR_STATIONS + 2) / 3 | 1]; // avoid power-of-2
 
-  uint channel	    = get_global_id(1);
+  uint channel	    = get_global_id(1) + 1;
   uint block	    = get_global_id(0);
 
   uint x	    = convert_uint_rtz(sqrt(convert_float(8 * block + 1)) - 0.99999f) / 2;
@@ -338,7 +338,7 @@ __kernel void correlate_4x4(__global void *visibilitiesPtr,
 
   __local float4 samples[4][BLOCK_SIZE][(NR_STATIONS + 3) / 4 | 1]; // avoid power-of-2
 
-  uint channel	    = get_global_id(1);
+  uint channel	    = get_global_id(1) + 1;
   uint block	    = get_global_id(0);
 
   uint x	    = convert_uint_rtz(sqrt(convert_float(8 * block + 1)) - 0.99999f) / 2;
diff --git a/RTCP/GPUProc/src/Correlator.cl-0.ptx b/RTCP/GPUProc/src/Correlator.cl-0.ptx
deleted file mode 100644
index 37d40c5127c10f59970bebd14f4800ba1f03e8a1..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 234324
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
YNIX72-j2LAaAIuC->-~}Iya|(0=7U#QUCw|

diff --git a/RTCP/GPUProc/src/DelayAndBandPass.cl-0.ptx b/RTCP/GPUProc/src/DelayAndBandPass.cl-0.ptx
deleted file mode 100644
index 765b24b939aaab3b67274c4aedf221c92af81818..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 50580
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

diff --git a/RTCP/GPUProc/src/FIR.cl-0.ptx b/RTCP/GPUProc/src/FIR.cl-0.ptx
deleted file mode 100644
index d1a6fd1785efd5436cb75094fa168a1692b1643d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 92104
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
Wa2wwN!R6@}U9QuIXp{bveE%O&fn53k

diff --git a/RTCP/GPUProc/src/FilterBank.cc b/RTCP/GPUProc/src/FilterBank.cc
index beacf7cbcdf..b33756a68ba 100644
--- a/RTCP/GPUProc/src/FilterBank.cc
+++ b/RTCP/GPUProc/src/FilterBank.cc
@@ -174,152 +174,155 @@ void FilterBank::interpolate(const double x[], const double y[], unsigned xlen,
 // but has better stopband characteristics.
 void FilterBank::generate_fir_filter(unsigned n, double w, const double window[], double result[])
 {
-  // make sure grid is big enough for the window
-  // the grid must be at least (n+1)/2
-  // for all filters where the order is a power of two minus 1, grid_n = n+1;
-  unsigned grid_n = nextPowerOfTwo(n + 1);
+#pragma omp critical (FFTW)
+  {
+    // make sure grid is big enough for the window
+    // the grid must be at least (n+1)/2
+    // for all filters where the order is a power of two minus 1, grid_n = n+1;
+    unsigned grid_n = nextPowerOfTwo(n + 1);
 
-  unsigned ramp_n = 2; // grid_n/20;
+    unsigned ramp_n = 2; // grid_n/20;
 
-  // Apply ramps to discontinuities
-  // this is a low pass filter
-  // maybe we can omit the "w, 0" point?
-  // I did observe a small difference
-  double f[] = { 0.0, w - ramp_n / grid_n / 2.0, w, w + ramp_n / grid_n / 2.0, 1.0 };
-  double m[] = { 1.0, 1.0, 0.0, 0.0, 0.0 };
+    // Apply ramps to discontinuities
+    // this is a low pass filter
+    // maybe we can omit the "w, 0" point?
+    // I did observe a small difference
+    double f[] = { 0.0, w - ramp_n / grid_n / 2.0, w, w + ramp_n / grid_n / 2.0, 1.0 };
+    double m[] = { 1.0, 1.0, 0.0, 0.0, 0.0 };
 
-  // grid is a 1-D array with grid_n+1 points. Values are 1 in filter passband, 0 otherwise
-  std::vector<double> grid(grid_n + 1);
+    // grid is a 1-D array with grid_n+1 points. Values are 1 in filter passband, 0 otherwise
+    std::vector<double> grid(grid_n + 1);
 
-  // interpolate between grid points
-  interpolate(f, m, 5 /* length of f and m arrays */, grid_n + 1, &grid[0]);
+    // interpolate between grid points
+    interpolate(f, m, 5 /* length of f and m arrays */, grid_n + 1, &grid[0]);
 
 #if 0
-  std::stringstream logStr;
-  logStr << "interpolated = [";
-  for(unsigned i=0; i<grid_n+1; i++) {
-    logStr << grid[i];
-    if(i != grid_n+1-1) logStr << ", ";
-  }
-  logStr << "];";
-  LOG_DEBUG(logStr.str());
+    std::stringstream logStr;
+    logStr << "interpolated = [";
+    for(unsigned i=0; i<grid_n+1; i++) {
+      logStr << grid[i];
+      if(i != grid_n+1-1) logStr << ", ";
+    }
+    logStr << "];";
+    LOG_DEBUG(logStr.str());
 #endif
 
-  // the grid we do an ifft on is:
-  // grid appended with grid_n*2 zeros
-  // appended with original grid values from indices grid_n..2, i.e., the values in reverse order
-  // (note, arrays start at 1 in octave!)
-  // the input for the ifft is of size 4*grid_n
-  // input = [grid ; zeros(grid_n*2,1) ;grid(grid_n:-1:2)];
+    // the grid we do an ifft on is:
+    // grid appended with grid_n*2 zeros
+    // appended with original grid values from indices grid_n..2, i.e., the values in reverse order
+    // (note, arrays start at 1 in octave!)
+    // the input for the ifft is of size 4*grid_n
+    // input = [grid ; zeros(grid_n*2,1) ;grid(grid_n:-1:2)];
 
 #if defined HAVE_FFTW3
-  fftwf_complex* cinput = (fftwf_complex*) fftwf_malloc(grid_n * 4 * sizeof(fftwf_complex));
-  fftwf_complex* coutput = (fftwf_complex*) fftwf_malloc(grid_n * 4 * sizeof(fftwf_complex));
+    fftwf_complex* cinput = (fftwf_complex*) fftwf_malloc(grid_n * 4 * sizeof(fftwf_complex));
+    fftwf_complex* coutput = (fftwf_complex*) fftwf_malloc(grid_n * 4 * sizeof(fftwf_complex));
 #elif defined HAVE_FFTW2
-  fftw_complex* cinput = (fftw_complex*) fftw_malloc(grid_n*4*sizeof(fftw_complex));
-  fftw_complex* coutput = (fftw_complex*) fftw_malloc(grid_n*4*sizeof(fftw_complex));
+    fftw_complex* cinput = (fftw_complex*) fftw_malloc(grid_n*4*sizeof(fftw_complex));
+    fftw_complex* coutput = (fftw_complex*) fftw_malloc(grid_n*4*sizeof(fftw_complex));
 #endif
 
-  if (cinput == NULL || coutput == NULL) {
-    THROW(GPUProcException, "cannot allocate buffers");
-  }
+    if (cinput == NULL || coutput == NULL) {
+      THROW(GPUProcException, "cannot allocate buffers");
+    }
 
-  // wipe imaginary part
-  for (unsigned i = 0; i < grid_n * 4; i++) {
-    fftw_imag(cinput[i]) = 0.0;
-  }
+    // wipe imaginary part
+    for (unsigned i = 0; i < grid_n * 4; i++) {
+      fftw_imag(cinput[i]) = 0.0;
+    }
 
-  // copy first part of grid
-  for (unsigned i = 0; i < grid_n + 1; i++) {
-    fftw_real(cinput[i]) = grid[i];
-  }
+    // copy first part of grid
+    for (unsigned i = 0; i < grid_n + 1; i++) {
+      fftw_real(cinput[i]) = grid[i];
+    }
 
-  // append zeros
-  for (unsigned i = grid_n + 1; i <= grid_n * 3; i++) {
-    fftw_real(cinput[i]) = 0.0;
-  }
+    // append zeros
+    for (unsigned i = grid_n + 1; i <= grid_n * 3; i++) {
+      fftw_real(cinput[i]) = 0.0;
+    }
 
-  // now append the grid in reverse order
-  for (unsigned i = grid_n - 1, index = 0; i >= 1; i --, index ++) {
-    fftw_real(cinput[grid_n * 3 + 1 + index]) = grid[i];
-  }
+    // now append the grid in reverse order
+    for (unsigned i = grid_n - 1, index = 0; i >= 1; i --, index ++) {
+      fftw_real(cinput[grid_n * 3 + 1 + index]) = grid[i];
+    }
 
 #if 0
-  std::stringstream logStr;
-  logStr << "ifft_in = [";
-  for(unsigned i=0; i<grid_n*4; i++) {
-    logStr << fftw_real(cinput[i]) << " " << fftw_imag(cinput[i]);
-    if(i != grid_n*4-1) logStr << ", ";
-  }
-  logStr << "];";
-  LOG_DEBUG(logStr.str());
+    std::stringstream logStr;
+    logStr << "ifft_in = [";
+    for(unsigned i=0; i<grid_n*4; i++) {
+      logStr << fftw_real(cinput[i]) << " " << fftw_imag(cinput[i]);
+      if(i != grid_n*4-1) logStr << ", ";
+    }
+    logStr << "];";
+    LOG_DEBUG(logStr.str());
 #endif
 
 #if defined HAVE_FFTW3
-  fftwf_plan plan = fftwf_plan_dft_1d(grid_n * 4, cinput, coutput, FFTW_BACKWARD, FFTW_ESTIMATE);
-  fftwf_execute(plan);
+    fftwf_plan plan = fftwf_plan_dft_1d(grid_n * 4, cinput, coutput, FFTW_BACKWARD, FFTW_ESTIMATE);
+    fftwf_execute(plan);
 #elif defined HAVE_FFTW2
-  fftw_plan plan = fftw_create_plan(grid_n * 4, FFTW_BACKWARD, FFTW_ESTIMATE);
-  fftw_one(plan, cinput, coutput);
+    fftw_plan plan = fftw_create_plan(grid_n * 4, FFTW_BACKWARD, FFTW_ESTIMATE);
+    fftw_one(plan, cinput, coutput);
 #endif
 
 #if 0
-  for(unsigned i=0; i<grid_n*4; i++) {
-    LOG_DEBUG_STR("ifft result [" << i << "] = " << fftw_real(coutput[i]) << " " << fftw_imag(coutput[i]));
-  }
+    for(unsigned i=0; i<grid_n*4; i++) {
+      LOG_DEBUG_STR("ifft result [" << i << "] = " << fftw_real(coutput[i]) << " " << fftw_imag(coutput[i]));
+    }
 #endif
 
-  //                        half                   end
-  // 1 2       n+1          2(n+1)      3(n+1)     4(n+1)
-  //                                    x x x x x x x x x     # last quarter
-  //   x x x x x x                                            # first quarter
+    //                        half                   end
+    // 1 2       n+1          2(n+1)      3(n+1)     4(n+1)
+    //                                    x x x x x x x x x     # last quarter
+    //   x x x x x x                                            # first quarter
 
-  // last_quarter  = b([end-n+1:2:end]); # the size is only 1/8, since we skip half of the elements
-  // first_quarter = b(2:2:(n+1));       # the size is only 1/8, since we skip half of the elements
+    // last_quarter  = b([end-n+1:2:end]); # the size is only 1/8, since we skip half of the elements
+    // first_quarter = b(2:2:(n+1));       # the size is only 1/8, since we skip half of the elements
 
-  unsigned index = 0;
+    unsigned index = 0;
 
-  for (unsigned i = 4 * grid_n - n; i < 4 * grid_n; i += 2) {
-    result[index] = fftw_real(coutput[i]);
-    index++;
-  }
+    for (unsigned i = 4 * grid_n - n; i < 4 * grid_n; i += 2) {
+      result[index] = fftw_real(coutput[i]);
+      index++;
+    }
 
-  for (unsigned i = 1; i <= n; i += 2) {
-    result[index] = fftw_real(coutput[i]);
-    index++;
-  }
+    for (unsigned i = 1; i <= n; i += 2) {
+      result[index] = fftw_real(coutput[i]);
+      index++;
+    }
 
 #if defined HAVE_FFTW3
-  fftwf_destroy_plan(plan);
-  fftwf_free(cinput);
-  fftwf_free(coutput);
+    fftwf_destroy_plan(plan);
+    fftwf_free(cinput);
+    fftwf_free(coutput);
 #elif defined HAVE_FFTW2
-  fftw_destroy_plan(plan);
-  fftw_free(cinput);
-  fftw_free(coutput);
+    fftw_destroy_plan(plan);
+    fftw_free(cinput);
+    fftw_free(coutput);
 #endif
 
-  // multiply with window
-  for (unsigned i = 0; i <= n; i++) {
-    result[i] *= window[i];
-  }
+    // multiply with window
+    for (unsigned i = 0; i <= n; i++) {
+      result[i] *= window[i];
+    }
 
-  // normalize
-  double factor = result[n / 2];
-  for (unsigned i = 0; i <= n; i++) {
-    result[i] /= factor;
-  }
+    // normalize
+    double factor = result[n / 2];
+    for (unsigned i = 0; i <= n; i++) {
+      result[i] /= factor;
+    }
 
 #if 0
-  std::stringstream logStr;
-  logStr << "result = [";
-  for(unsigned i=0; i<=n; i++) {
-    logStr << result[i];
-    if(i != n) logStr << ", ";
-  }
-  logStr << "];";
-  LOG_DEBUG(logStr.str());
+    std::stringstream logStr;
+    logStr << "result = [";
+    for(unsigned i=0; i<=n; i++) {
+      logStr << result[i];
+      if(i != n) logStr << ", ";
+    }
+    logStr << "];";
+    LOG_DEBUG(logStr.str());
 #endif
+  }
 }
 
 
diff --git a/RTCP/GPUProc/src/NewCorrelator.cl b/RTCP/GPUProc/src/NewCorrelator.cl
index 307c70f3477..6d4e6ee4bc3 100644
--- a/RTCP/GPUProc/src/NewCorrelator.cl
+++ b/RTCP/GPUProc/src/NewCorrelator.cl
@@ -1,72 +1,124 @@
 #define NR_STATIONS_PER_BLOCK	32
-#define BLOCK_SIZE		8
+#define NR_TIMES_PER_BLOCK	8
 
 #define NR_BASELINES		(NR_STATIONS * (NR_STATIONS + 1) / 2)
 
 
-typedef __global float (*CorrectedDataType)[NR_STATIONS][NR_CHANNELS][NR_SAMPLES_PER_CHANNEL][NR_POLARIZATIONS * 2];
+typedef __global float4 (*CorrectedDataType)[NR_STATIONS][NR_CHANNELS][NR_SAMPLES_PER_CHANNEL];
 typedef __global float8 (*VisibilitiesType)[NR_BASELINES][NR_CHANNELS];
 
 
-#if 0
-__kernel void correlateTriangles(__global void *visibilitiesPtr,
-				 __global const void *correctedDataPtr
-)
+__kernel
+void correlateTriangleKernel(__global void *visibilitiesPtr,
+	       __global const void *correctedDataPtr)
 {
   VisibilitiesType visibilities = (VisibilitiesType) visibilitiesPtr;
   CorrectedDataType correctedData = (CorrectedDataType) correctedDataPtr;
 
-  __local float4 samples[BLOCK_SIZE][NR_STATIONS_PER_BLOCK];
+  __local float4 samples[2][NR_TIMES_PER_BLOCK][NR_STATIONS_PER_BLOCK / 2 | 1];
+  uint channel = get_global_id(2) + 1;
+  uint block = get_global_id(1);
+
+#if NR_STATIONS % NR_STATIONS_PER_BLOCK == 0
+  uint firstStation = block * NR_STATIONS_PER_BLOCK;
+  uint nrStationsThisBlock = NR_STATIONS_PER_BLOCK;
+#else
+  uint lastStation = block * NR_STATIONS_PER_BLOCK + NR_STATIONS % NR_STATIONS_PER_BLOCK;
+  uint firstStation = block == 0 ? 0 : lastStation - NR_STATIONS_PER_BLOCK;
+  uint nrStationsThisBlock = lastStation - firstStation;
+#endif
 
-  uint triangle = get_global_id(1);
-  uint channel  = get_global_id(2);
-  uint firstStation = triangle * NR_STATIONS_PER_BLOCK;
+  uint miniBlock = get_local_id(0);
+  uint statXoffset = convert_uint_rtz(sqrt(convert_float(8 * miniBlock + 1)) - 0.99999f) / 2;
+  uint statYoffset = miniBlock - statXoffset * (statXoffset + 1) / 2;
 
-  float4 vis_0A_r = (float4) 0, vis_0A_i = (float4) 0;
-  float4 vis_0B_r = (float4) 0, vis_0B_i = (float4) 0;
-  float4 vis_1A_r = (float4) 0, vis_1A_i = (float4) 0;
-  float4 vis_1B_r = (float4) 0, vis_1B_i = (float4) 0;
+  statXoffset *= 2, statYoffset *= 2;
 
-  for (uint major = 0; major < NR_SAMPLES_PER_CHANNEL; major += BLOCK_SIZE) {
+  float4 vis_0A_r = 0, vis_0A_i = 0;
+  float4 vis_0B_r = 0, vis_0B_i = 0;
+  float4 vis_1A_r = 0, vis_1A_i = 0;
+  float4 vis_1B_r = 0, vis_1B_i = 0;
+
+  bool doCorrelate = statXoffset < nrStationsThisBlock;
+
+  for (uint major = 0; major < NR_SAMPLES_PER_CHANNEL; major += NR_TIMES_PER_BLOCK) {
     // load data into local memory
-#pragma unroll 1
-    for (uint i = get_local_id(0); i < BLOCK_SIZE * NR_STATIONS_PER_BLOCK; i += get_local_size(0)) {
-      uint time = i % BLOCK_SIZE;
-      uint stat = i / BLOCK_SIZE;
+    barrier(CLK_LOCAL_MEM_FENCE);
 
-      if (firstStation + stat < NR_STATIONS)
-	samples[time][stat] = (*correctedData)[firstStation + stat][channel][major + time];
+    for (uint i = get_local_id(0); i < nrStationsThisBlock * NR_TIMES_PER_BLOCK; i += get_local_size(0)) {
+      uint time = i % NR_TIMES_PER_BLOCK;
+      uint stat = i / NR_TIMES_PER_BLOCK;
+
+      samples[stat % 2][time][stat / 2] = (*correctedData)[firstStation + stat][channel][major + time];
     }
 
     barrier(CLK_LOCAL_MEM_FENCE);
 
-    // compute auto-correlations
+#pragma unroll 1
+    for (uint time = 0; time < NR_TIMES_PER_BLOCK; time ++) {
+      float4 sample_0, sample_1, sample_A, sample_B;
+
+      if (doCorrelate) {
+        sample_0 = samples[0][time][statYoffset / 2];
+        sample_A = samples[0][time][statXoffset / 2];
+        sample_B = samples[1][time][statXoffset / 2];
+        sample_1 = samples[1][time][statYoffset / 2];
+
+        vis_0A_r += sample_0.xxzz * sample_A.xzxz;
+        vis_0A_i += sample_0.yyww * sample_A.xzxz;
+        vis_0B_r += sample_0.xxzz * sample_B.xzxz;
+        vis_0B_i += sample_0.yyww * sample_B.xzxz;
+        vis_1A_r += sample_1.xxzz * sample_A.xzxz;
+        vis_1A_i += sample_1.yyww * sample_A.xzxz;
+        vis_1B_r += sample_1.xxzz * sample_B.xzxz;
+        vis_1B_i += sample_1.yyww * sample_B.xzxz;
 
-    if (firstStation + get_local_id(0) < NR_STATIONS) {
-      for (time = 0; time + BLOCK_SIZE; time ++) {
-	float sample = samples[time][get_local_id(0)];
+        vis_0A_r += sample_0.yyww * sample_A.ywyw;
+        vis_0A_i -= sample_0.xxzz * sample_A.ywyw;
+        vis_0B_r += sample_0.yyww * sample_B.ywyw;
+        vis_0B_i -= sample_0.xxzz * sample_B.ywyw;
+        vis_1A_r += sample_1.yyww * sample_A.ywyw;
+        vis_1A_i -= sample_1.xxzz * sample_A.ywyw;
+        vis_1B_r += sample_1.yyww * sample_B.ywyw;
+        vis_1B_i -= sample_1.xxzz * sample_B.ywyw;
       }
+    }
+  }
 
+  int  statY = firstStation + statYoffset;
+  uint statX = firstStation + statXoffset;
+  uint baseline = (statX * (statX + 1) / 2) + statY;
 
-    barrier(CLK_LOCAL_MEM_FENCE);
+  if (statXoffset < nrStationsThisBlock) {
+    (*visibilities)[baseline	        ][channel].even = vis_0A_r;
+    (*visibilities)[baseline	        ][channel].odd  = vis_0A_i;
+  }
+
+  if (statXoffset < nrStationsThisBlock && statYoffset + 1 < nrStationsThisBlock) {
+    (*visibilities)[baseline	     + 1][channel].even = vis_1A_r;
+    (*visibilities)[baseline	     + 1][channel].odd  = vis_1A_i;
+  }
+
+  if (statXoffset + 1 < nrStationsThisBlock) {
+    (*visibilities)[baseline + statX + 1][channel].even = vis_0B_r;
+    (*visibilities)[baseline + statX + 1][channel].odd  = vis_0B_i;
+    (*visibilities)[baseline + statX + 2][channel].even = vis_1B_r;
+    (*visibilities)[baseline + statX + 2][channel].odd  = vis_1B_i;
   }
 }
-#endif
 
 
 __kernel __attribute__((reqd_work_group_size(NR_STATIONS_PER_BLOCK * NR_STATIONS_PER_BLOCK / 4, 1, 1)))
-void correlateRectangles(__global void *visibilitiesPtr,
-			 __global const void *correctedDataPtr
-)
+void correlateRectangleKernel(__global void *visibilitiesPtr,
+	       __global const void *correctedDataPtr)
 {
-  VisibilitiesType visibilities = (VisibilitiesType) visibilitiesPtr;
+  VisibilitiesType  visibilities  = (VisibilitiesType)  visibilitiesPtr;
   CorrectedDataType correctedData = (CorrectedDataType) correctedDataPtr;
 
-  __local float4 samplesX[2][BLOCK_SIZE][NR_STATIONS_PER_BLOCK / 2 | 1];
-  __local float4 samplesY[2][BLOCK_SIZE][NR_STATIONS_PER_BLOCK / 2 | 1];
+  __local float4 samplesX[2][NR_TIMES_PER_BLOCK][NR_STATIONS_PER_BLOCK / 2 | 1];
+  __local float4 samplesY[2][NR_TIMES_PER_BLOCK][NR_STATIONS_PER_BLOCK / 2 | 1];
 
   uint block	 = get_global_id(1);
-  uint channel   = get_global_id(2);
   uint blockX	 = convert_uint_rtz(sqrt(convert_float(8 * block + 1)) - 0.99999f) / 2;
   uint blockY	 = block - blockX * (blockX + 1) / 2;
 
@@ -78,35 +130,291 @@ void correlateRectangles(__global void *visibilitiesPtr,
   int  firstStationY = (blockY - 1) * NR_STATIONS_PER_BLOCK + NR_STATIONS % NR_STATIONS_PER_BLOCK;
 #endif
 
-  uint statXoffset = (get_local_id(0) / (NR_STATIONS_PER_BLOCK / 2));
-  uint statYoffset = (get_local_id(0) % (NR_STATIONS_PER_BLOCK / 2));
+  uint statXoffset = get_local_id(0) / (NR_STATIONS_PER_BLOCK / 2);
+  uint statYoffset = get_local_id(0) % (NR_STATIONS_PER_BLOCK / 2);
+
+  float4 vis_0A_r = 0, vis_0A_i = 0;
+  float4 vis_0B_r = 0, vis_0B_i = 0;
+  float4 vis_1A_r = 0, vis_1A_i = 0;
+  float4 vis_1B_r = 0, vis_1B_i = 0;
+
+  uint loadTime = get_local_id(0) % NR_TIMES_PER_BLOCK;
+  uint loadStat = get_local_id(0) / NR_TIMES_PER_BLOCK;
+
+  bool doCorrelateLower = NR_STATIONS % NR_STATIONS_PER_BLOCK == 0 || (int) (firstStationY + 2 * statYoffset) >= 0;
+  bool doCorrelateUpper = NR_STATIONS % NR_STATIONS_PER_BLOCK == 0 || (int) (firstStationY + 2 * statYoffset) >= -1;
+  bool doLoadY     = NR_STATIONS % NR_STATIONS_PER_BLOCK == 0 || (int) (firstStationY + loadStat) >= 0;
+
+  uint channel = get_global_id(2) + 1;
+
+  for (uint major = 0; major < NR_SAMPLES_PER_CHANNEL; major += NR_TIMES_PER_BLOCK) {
+    // load data into local memory
+    float4 sampleX = (*correctedData)[firstStationX + loadStat][channel][major + loadTime];
+    float4 sampleY;
+
+    if (doLoadY)
+      sampleY = (*correctedData)[firstStationY + loadStat][channel][major + loadTime];
+
+    barrier(CLK_LOCAL_MEM_FENCE);
+
+    samplesX[loadStat % 2][loadTime][loadStat / 2] = sampleX;
+
+    if (doLoadY)
+      samplesY[loadStat % 2][loadTime][loadStat / 2] = sampleY;
+
+    barrier(CLK_LOCAL_MEM_FENCE);
+
+#pragma unroll 1
+    for (uint time = 0; time < NR_TIMES_PER_BLOCK; time ++) {
+      float4 sample_0, sample_1, sample_A, sample_B;
+
+      if (doCorrelateLower) {
+        sample_0 = samplesY[0][time][statYoffset];
+      }
+
+      if (doCorrelateUpper) {
+        sample_A = samplesX[0][time][statXoffset];
+        sample_B = samplesX[1][time][statXoffset];
+        sample_1 = samplesY[1][time][statYoffset];
+      }
+
+      if (doCorrelateLower) {
+        vis_0A_r += sample_0.xxzz * sample_A.xzxz;
+        vis_0A_i += sample_0.yyww * sample_A.xzxz;
+        vis_0B_r += sample_0.xxzz * sample_B.xzxz;
+        vis_0B_i += sample_0.yyww * sample_B.xzxz;
+        vis_0A_r += sample_0.yyww * sample_A.ywyw;
+        vis_0A_i -= sample_0.xxzz * sample_A.ywyw;
+        vis_0B_r += sample_0.yyww * sample_B.ywyw;
+        vis_0B_i -= sample_0.xxzz * sample_B.ywyw;
+      }
+
+      if (doCorrelateUpper) {
+        vis_1A_r += sample_1.xxzz * sample_A.xzxz;
+        vis_1A_i += sample_1.yyww * sample_A.xzxz;
+        vis_1B_r += sample_1.xxzz * sample_B.xzxz;
+        vis_1B_i += sample_1.yyww * sample_B.xzxz;
+        vis_1A_r += sample_1.yyww * sample_A.ywyw;
+        vis_1A_i -= sample_1.xxzz * sample_A.ywyw;
+        vis_1B_r += sample_1.yyww * sample_B.ywyw;
+        vis_1B_i -= sample_1.xxzz * sample_B.ywyw;
+      }
+    }
+  }
+
+  int  statY = firstStationY + 2 * statYoffset;
+  uint statX = firstStationX + 2 * statXoffset;
+  uint baseline = (statX * (statX + 1) / 2) + statY;
+
+  if (doCorrelateLower) {
+    (*visibilities)[baseline	        ][channel].even = vis_0A_r;
+    (*visibilities)[baseline	        ][channel].odd  = vis_0A_i;
+    (*visibilities)[baseline + statX + 1][channel].even = vis_0B_r;
+    (*visibilities)[baseline + statX + 1][channel].odd  = vis_0B_i;
+  }
+
+  if (doCorrelateUpper) {
+    (*visibilities)[baseline	     + 1][channel].even = vis_1A_r;
+    (*visibilities)[baseline	     + 1][channel].odd  = vis_1A_i;
+    (*visibilities)[baseline + statX + 2][channel].even = vis_1B_r;
+    (*visibilities)[baseline + statX + 2][channel].odd  = vis_1B_i;
+  }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+void correlateTriangle(VisibilitiesType visibilities,
+		       CorrectedDataType correctedData,
+		       __local float4 samples[2][NR_TIMES_PER_BLOCK][NR_STATIONS_PER_BLOCK / 2 | 1],
+		       uint block)
+{
+  uint channel = get_global_id(2) + 1;
+
+#if NR_STATIONS % NR_STATIONS_PER_BLOCK == 0
+  uint firstStation = block * NR_STATIONS_PER_BLOCK;
+#else
+  int firstStation = (block - 1) * NR_STATIONS_PER_BLOCK + NR_STATIONS % NR_STATIONS_PER_BLOCK;
+#endif
+
+  bool doCorrelate = false, doAutoCorrelate = false, doNearAutoCorrelate = false;
+  uint statXoffset, statYoffset;
+
+  if (get_local_id(0) < 128) {
+    uint miniBlock = get_local_id(0);
+    uint miniBlockX = convert_uint_rtz(sqrt(convert_float(8 * miniBlock + 1)) - 0.99999f) / 2;
+    uint miniBlockY = miniBlock - miniBlockX * (miniBlockX + 1) / 2;
+
+    statXoffset = 2 * miniBlockX + 2;
+    statYoffset = 2 * miniBlockY;
+    doCorrelate = statXoffset < NR_STATIONS_PER_BLOCK && (NR_STATIONS % NR_STATIONS_PER_BLOCK == 0 || (int) (firstStation + statYoffset) >= 0);
+  } else if (get_local_id(0) < 128 + NR_STATIONS_PER_BLOCK / 2) {
+    statXoffset = statYoffset = 2 * (get_local_id(0) - 128);
+    // actually, it is the visibility one right of statXoffset
+    doNearAutoCorrelate = (int) (firstStation + statXoffset) >= 0;
+  } else if (get_local_id(0) >= 192 && get_local_id(0) < 192 + NR_STATIONS_PER_BLOCK) {
+    statXoffset = statYoffset = get_local_id(0) - 192;
+    doAutoCorrelate = NR_STATIONS % NR_STATIONS_PER_BLOCK == 0 || (int) (firstStation + statYoffset) >= 0;
+  }
 
   float4 vis_0A_r = 0, vis_0A_i = 0;
   float4 vis_0B_r = 0, vis_0B_i = 0;
   float4 vis_1A_r = 0, vis_1A_i = 0;
   float4 vis_1B_r = 0, vis_1B_i = 0;
 
-  for (uint major = 0; major < NR_SAMPLES_PER_CHANNEL; major += BLOCK_SIZE) {
+  uint loadTime = get_local_id(0) % NR_TIMES_PER_BLOCK;
+  uint loadStat = get_local_id(0) / NR_TIMES_PER_BLOCK;
+
+  bool doLoad     = NR_STATIONS % NR_STATIONS_PER_BLOCK == 0 || (int) (firstStation + loadStat) >= 0;
+
+  for (uint major = 0; major < NR_SAMPLES_PER_CHANNEL; major += NR_TIMES_PER_BLOCK) {
     // load data into local memory
-    for (uint i = get_local_id(0); i < 4 * BLOCK_SIZE * NR_STATIONS_PER_BLOCK; i += NR_STATIONS_PER_BLOCK * NR_STATIONS_PER_BLOCK / 4) {
-      uint p = i % 4;
-      uint time = i / 4 % BLOCK_SIZE;
-      uint stat = i / 4 / BLOCK_SIZE;
+    float4 sample;
+
+    if (doLoad)
+      sample = (*correctedData)[firstStation + loadStat][channel][major + loadTime];
+
+    barrier(CLK_LOCAL_MEM_FENCE);
+
+    if (doLoad)
+      samples[loadStat % 2][loadTime][loadStat / 2] = sample;
+
+    barrier(CLK_LOCAL_MEM_FENCE);
+
+#pragma unroll 1
+    for (uint time = 0; time < NR_TIMES_PER_BLOCK; time ++) {
+      if (doCorrelate) {
+        float4 sample_0 = samples[0][time][statYoffset / 2];
+        float4 sample_A = samples[0][time][statXoffset / 2];
+        float4 sample_B = samples[1][time][statXoffset / 2];
+        float4 sample_1 = samples[1][time][statYoffset / 2];
+
+        vis_0A_r += sample_0.xxzz * sample_A.xzxz;
+        vis_0A_i += sample_0.yyww * sample_A.xzxz;
+        vis_0B_r += sample_0.xxzz * sample_B.xzxz;
+        vis_0B_i += sample_0.yyww * sample_B.xzxz;
+        vis_0A_r += sample_0.yyww * sample_A.ywyw;
+        vis_0A_i -= sample_0.xxzz * sample_A.ywyw;
+        vis_0B_r += sample_0.yyww * sample_B.ywyw;
+        vis_0B_i -= sample_0.xxzz * sample_B.ywyw;
+
+        vis_1A_r += sample_1.xxzz * sample_A.xzxz;
+        vis_1A_i += sample_1.yyww * sample_A.xzxz;
+        vis_1B_r += sample_1.xxzz * sample_B.xzxz;
+        vis_1B_i += sample_1.yyww * sample_B.xzxz;
+        vis_1A_r += sample_1.yyww * sample_A.ywyw;
+        vis_1A_i -= sample_1.xxzz * sample_A.ywyw;
+        vis_1B_r += sample_1.yyww * sample_B.ywyw;
+        vis_1B_i -= sample_1.xxzz * sample_B.ywyw;
+      }
 
-      ((__local float *) &samplesX[stat % 2][time][stat / 2])[p] = (*correctedData)[firstStationX + stat][channel][major + time][p];
+      if (doAutoCorrelate) {
+        float4 sample_0 = samples[statYoffset % 2][time][statYoffset / 2];
+	vis_0A_r.xyw += sample_0.xxz * sample_0.xzz;
+	vis_0A_i.y   += sample_0.y * sample_0.z;
+	vis_0A_r.xyw += sample_0.yyw * sample_0.yww;
+	vis_0A_i.y   -= sample_0.x * sample_0.w;
+      }
 
-      if (NR_STATIONS % NR_STATIONS_PER_BLOCK == 0 || (int) (firstStationY + stat) >= 0)
-	((__local float *) &samplesY[stat % 2][time][stat / 2])[p] = (*correctedData)[firstStationY + stat][channel][major + time][p];
+      if (doNearAutoCorrelate) {
+        float4 sample_0 = samples[0][time][statYoffset / 2];
+        float4 sample_B = samples[1][time][statXoffset / 2];
+        vis_0B_r += sample_0.xxzz * sample_B.xzxz;
+        vis_0B_i += sample_0.yyww * sample_B.xzxz;
+        vis_0B_r += sample_0.yyww * sample_B.ywyw;
+        vis_0B_i -= sample_0.xxzz * sample_B.ywyw;
+      }
     }
+  }
+
+  if (doAutoCorrelate) {
+    vis_0A_r.z = vis_0A_r.y;
+    vis_0A_i.z = -vis_0A_i.y;
+  }
+
+  int  statY = firstStation + statYoffset;
+  uint statX = firstStation + statXoffset;
+  uint baseline = (statX * (statX + 1) / 2) + statY;
+
+  if (doCorrelate || doAutoCorrelate) {
+    (*visibilities)[baseline	        ][channel].even = vis_0A_r;
+    (*visibilities)[baseline	        ][channel].odd  = vis_0A_i;
+  }
+
+  if (doCorrelate || doNearAutoCorrelate) {
+    (*visibilities)[baseline + statX + 1][channel].even = vis_0B_r;
+    (*visibilities)[baseline + statX + 1][channel].odd  = vis_0B_i;
+  }
+
+  if (doCorrelate) {
+    (*visibilities)[baseline	     + 1][channel].even = vis_1A_r;
+    (*visibilities)[baseline	     + 1][channel].odd  = vis_1A_i;
+    (*visibilities)[baseline + statX + 2][channel].even = vis_1B_r;
+    (*visibilities)[baseline + statX + 2][channel].odd  = vis_1B_i;
+  }
+}
+
+
+void correlateTriangle2(VisibilitiesType visibilities,
+			CorrectedDataType correctedData,
+			__local float4 samples[2][NR_TIMES_PER_BLOCK][NR_STATIONS_PER_BLOCK / 2 | 1],
+			uint block
+)
+{
+  uint channel = get_global_id(2) + 1;
+
+#if NR_STATIONS % NR_STATIONS_PER_BLOCK == 0
+  uint firstStation = block * NR_STATIONS_PER_BLOCK;
+  //uint lastStation = firstStation + NR_STATIONS_PER_BLOCK;
+  uint nrStationsThisBlock = NR_STATIONS_PER_BLOCK;
+#else
+  uint lastStation = block * NR_STATIONS_PER_BLOCK + NR_STATIONS % NR_STATIONS_PER_BLOCK;
+  uint firstStation = block == 0 ? 0 : lastStation - NR_STATIONS_PER_BLOCK;
+  uint nrStationsThisBlock = lastStation - firstStation;
+#endif
+
+  uint miniBlock = get_local_id(0);
+  uint statXoffset = convert_uint_rtz(sqrt(convert_float(8 * miniBlock + 1)) - 0.99999f) / 2;
+  uint statYoffset = miniBlock - statXoffset * (statXoffset + 1) / 2;
+
+  statXoffset *= 2, statYoffset *= 2;
+
+  //bool doCorrelate = statXoffset < nrStationsThisBlock;
+
+  float4 vis_0A_r = 0, vis_0A_i = 0;
+  float4 vis_0B_r = 0, vis_0B_i = 0;
+  float4 vis_1A_r = 0, vis_1A_i = 0;
+  float4 vis_1B_r = 0, vis_1B_i = 0;
+
+  uint loadTime = get_local_id(0) % NR_TIMES_PER_BLOCK;
+  uint loadStat = get_local_id(0) / NR_TIMES_PER_BLOCK;
+
+  bool doCorrelateLeft = statXoffset < nrStationsThisBlock;
+  //bool doCorrelateRight = statXoffset + 1 < nrStationsThisBlock;
+  bool doLoad = NR_STATIONS % NR_STATIONS_PER_BLOCK == 0 || loadStat < nrStationsThisBlock;
+
+  for (uint major = 0; major < NR_SAMPLES_PER_CHANNEL; major += NR_TIMES_PER_BLOCK) {
+    // load data into local memory
+    float4 sample;
+
+    if (doLoad)
+      sample = (*correctedData)[firstStation + loadStat][channel][major + loadTime];
 
     barrier(CLK_LOCAL_MEM_FENCE);
 
-    if (NR_STATIONS % NR_STATIONS_PER_BLOCK == 0 || (int) (firstStationY + 2 * statYoffset) >= -1) {
-      for (uint time = 0; time < BLOCK_SIZE; time ++) {
-        float4 sample_0 = samplesY[0][time][statYoffset];
-        float4 sample_A = samplesX[0][time][statXoffset];
-        float4 sample_B = samplesX[1][time][statXoffset];
-        float4 sample_1 = samplesY[1][time][statYoffset];
+    if (doLoad)
+      samples[loadStat % 2][loadTime][loadStat / 2] = sample;
+
+    barrier(CLK_LOCAL_MEM_FENCE);
+
+#pragma unroll 1
+    for (uint time = 0; time < NR_TIMES_PER_BLOCK; time ++) {
+      float4 sample_0, sample_1, sample_A, sample_B;
+
+      if (doCorrelateLeft) {
+        sample_0 = samples[0][time][statYoffset / 2];
+        sample_A = samples[0][time][statXoffset / 2];
+        sample_B = samples[1][time][statXoffset / 2];
+        sample_1 = samples[1][time][statYoffset / 2];
 
         vis_0A_r += sample_0.xxzz * sample_A.xzxz;
         vis_0A_i += sample_0.yyww * sample_A.xzxz;
@@ -127,25 +435,152 @@ void correlateRectangles(__global void *visibilitiesPtr,
         vis_1B_i -= sample_1.xxzz * sample_B.ywyw;
       }
     }
+  }
+
+  int  statY = firstStation + statYoffset;
+  uint statX = firstStation + statXoffset;
+  uint baseline = (statX * (statX + 1) / 2) + statY;
+
+  if (statXoffset < nrStationsThisBlock) {
+    (*visibilities)[baseline	        ][channel].even = vis_0A_r;
+    (*visibilities)[baseline	        ][channel].odd  = vis_0A_i;
+  }
+
+  if (statXoffset < nrStationsThisBlock && statYoffset + 1 < nrStationsThisBlock) {
+    (*visibilities)[baseline	     + 1][channel].even = vis_1A_r;
+    (*visibilities)[baseline	     + 1][channel].odd  = vis_1A_i;
+  }
+
+  if (statXoffset + 1 < nrStationsThisBlock) {
+    (*visibilities)[baseline + statX + 1][channel].even = vis_0B_r;
+    (*visibilities)[baseline + statX + 1][channel].odd  = vis_0B_i;
+    (*visibilities)[baseline + statX + 2][channel].even = vis_1B_r;
+    (*visibilities)[baseline + statX + 2][channel].odd  = vis_1B_i;
+  }
+}
+
+
+void correlateRectangle(VisibilitiesType visibilities,
+			CorrectedDataType correctedData,
+			__local float4 samplesX[2][NR_TIMES_PER_BLOCK][NR_STATIONS_PER_BLOCK / 2 | 1],
+			__local float4 samplesY[2][NR_TIMES_PER_BLOCK][NR_STATIONS_PER_BLOCK / 2 | 1],
+			uint blockX,
+			uint blockY
+)
+{
+  uint channel = get_global_id(2) + 1;
+
+#if NR_STATIONS % NR_STATIONS_PER_BLOCK == 0
+  uint firstStationX = blockX * NR_STATIONS_PER_BLOCK;
+  uint firstStationY = blockY * NR_STATIONS_PER_BLOCK;
+#else
+  uint firstStationX = (blockX - 1) * NR_STATIONS_PER_BLOCK + NR_STATIONS % NR_STATIONS_PER_BLOCK;
+  int  firstStationY = (blockY - 1) * NR_STATIONS_PER_BLOCK + NR_STATIONS % NR_STATIONS_PER_BLOCK;
+#endif
+
+  uint statXoffset = get_local_id(0) / (NR_STATIONS_PER_BLOCK / 2);
+  uint statYoffset = get_local_id(0) % (NR_STATIONS_PER_BLOCK / 2);
+
+  float4 vis_0A_r = 0, vis_0A_i = 0;
+  float4 vis_0B_r = 0, vis_0B_i = 0;
+  float4 vis_1A_r = 0, vis_1A_i = 0;
+  float4 vis_1B_r = 0, vis_1B_i = 0;
+
+  uint loadTime = get_local_id(0) % NR_TIMES_PER_BLOCK;
+  uint loadStat = get_local_id(0) / NR_TIMES_PER_BLOCK;
+
+  bool doCorrelateLower = NR_STATIONS % NR_STATIONS_PER_BLOCK == 0 || (int) (firstStationY + 2 * statYoffset) >= 0;
+  bool doCorrelateUpper = NR_STATIONS % NR_STATIONS_PER_BLOCK == 0 || (int) (firstStationY + 2 * statYoffset) >= -1;
+  bool doLoadY     = NR_STATIONS % NR_STATIONS_PER_BLOCK == 0 || (int) (firstStationY + loadStat) >= 0;
+
+  for (uint major = 0; major < NR_SAMPLES_PER_CHANNEL; major += NR_TIMES_PER_BLOCK) {
+    // load data into local memory
+    float4 sampleX = (*correctedData)[firstStationX + loadStat][channel][major + loadTime];
+    float4 sampleY;
+
+    if (doLoadY)
+      sampleY = (*correctedData)[firstStationY + loadStat][channel][major + loadTime];
 
     barrier(CLK_LOCAL_MEM_FENCE);
+
+    samplesX[loadStat % 2][loadTime][loadStat / 2] = sampleX;
+
+    if (doLoadY)
+      samplesY[loadStat % 2][loadTime][loadStat / 2] = sampleY;
+
+    barrier(CLK_LOCAL_MEM_FENCE);
+
+#pragma unroll 1
+    for (uint time = 0; time < NR_TIMES_PER_BLOCK; time ++) {
+      float4 sample_0, sample_1, sample_A, sample_B;
+
+      if (doCorrelateLower) {
+        sample_0 = samplesY[0][time][statYoffset];
+      }
+
+      if (doCorrelateUpper) {
+        sample_A = samplesX[0][time][statXoffset];
+        sample_B = samplesX[1][time][statXoffset];
+        sample_1 = samplesY[1][time][statYoffset];
+      }
+
+      if (doCorrelateLower) {
+        vis_0A_r += sample_0.xxzz * sample_A.xzxz;
+        vis_0A_i += sample_0.yyww * sample_A.xzxz;
+        vis_0B_r += sample_0.xxzz * sample_B.xzxz;
+        vis_0B_i += sample_0.yyww * sample_B.xzxz;
+        vis_0A_r += sample_0.yyww * sample_A.ywyw;
+        vis_0A_i -= sample_0.xxzz * sample_A.ywyw;
+        vis_0B_r += sample_0.yyww * sample_B.ywyw;
+        vis_0B_i -= sample_0.xxzz * sample_B.ywyw;
+      }
+
+      if (doCorrelateUpper) {
+        vis_1A_r += sample_1.xxzz * sample_A.xzxz;
+        vis_1A_i += sample_1.yyww * sample_A.xzxz;
+        vis_1B_r += sample_1.xxzz * sample_B.xzxz;
+        vis_1B_i += sample_1.yyww * sample_B.xzxz;
+        vis_1A_r += sample_1.yyww * sample_A.ywyw;
+        vis_1A_i -= sample_1.xxzz * sample_A.ywyw;
+        vis_1B_r += sample_1.yyww * sample_B.ywyw;
+        vis_1B_i -= sample_1.xxzz * sample_B.ywyw;
+      }
+    }
   }
 
   int  statY = firstStationY + 2 * statYoffset;
   uint statX = firstStationX + 2 * statXoffset;
   uint baseline = (statX * (statX + 1) / 2) + statY;
 
-  if (NR_STATIONS % NR_STATIONS_PER_BLOCK == 0 || statY >= 0) {
-    (*visibilities)[baseline    ][channel].even = vis_0A_r;
-    (*visibilities)[baseline    ][channel].odd  = vis_0A_i;
-    (*visibilities)[baseline + 1][channel].even = vis_1A_r;
-    (*visibilities)[baseline + 1][channel].odd  = vis_1A_i;
-  }
-
-  if (NR_STATIONS % NR_STATIONS_PER_BLOCK == 0 || statY >= -1) {
+  if (doCorrelateLower) {
+    (*visibilities)[baseline	        ][channel].even = vis_0A_r;
+    (*visibilities)[baseline	        ][channel].odd  = vis_0A_i;
     (*visibilities)[baseline + statX + 1][channel].even = vis_0B_r;
     (*visibilities)[baseline + statX + 1][channel].odd  = vis_0B_i;
+  }
+
+  if (doCorrelateUpper) {
+    (*visibilities)[baseline	     + 1][channel].even = vis_1A_r;
+    (*visibilities)[baseline	     + 1][channel].odd  = vis_1A_i;
     (*visibilities)[baseline + statX + 2][channel].even = vis_1B_r;
     (*visibilities)[baseline + statX + 2][channel].odd  = vis_1B_i;
   }
 }
+
+
+__kernel __attribute__((reqd_work_group_size(NR_STATIONS_PER_BLOCK * NR_STATIONS_PER_BLOCK / 4, 1, 1)))
+void correlate(__global void *visibilitiesPtr,
+	       __global const void *correctedDataPtr)
+{
+  __local float4 samplesX[2][NR_TIMES_PER_BLOCK][NR_STATIONS_PER_BLOCK / 2 | 1];
+  __local float4 samplesY[2][NR_TIMES_PER_BLOCK][NR_STATIONS_PER_BLOCK / 2 | 1];
+
+  uint block	 = get_global_id(1);
+  uint blockX	 = convert_uint_rtz(sqrt(convert_float(8 * block + 1)) - 0.99999f) / 2;
+  uint blockY	 = block - blockX * (blockX + 1) / 2;
+
+  if (blockX == blockY)
+    correlateTriangle2((VisibilitiesType) visibilitiesPtr, (CorrectedDataType) correctedDataPtr, samplesX, blockX);
+  else
+    correlateRectangle((VisibilitiesType) visibilitiesPtr, (CorrectedDataType) correctedDataPtr, samplesX, samplesY, blockX, blockY);
+}
diff --git a/RTCP/GPUProc/src/NewCorrelator.cl-0.ptx b/RTCP/GPUProc/src/NewCorrelator.cl-0.ptx
deleted file mode 100644
index c69f71f47ba5748d5cb342ecbed29c627f766f0f..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 43272
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

diff --git a/RTCP/GPUProc/src/RTCP.cc b/RTCP/GPUProc/src/RTCP.cc
index 0e6c8b99b67..9c6a8830cdc 100644
--- a/RTCP/GPUProc/src/RTCP.cc
+++ b/RTCP/GPUProc/src/RTCP.cc
@@ -14,11 +14,11 @@
 #include <iostream>
 #include <sstream>
 #include <boost/multi_array.hpp>
+#include <boost/date_time/posix_time/posix_time.hpp>
 
 #include "Align.h"
-#include "BandPass.h"
 #include "ApplCommon/PosixTime.h"
-#include <boost/date_time/posix_time/posix_time.hpp>
+#include "BandPass.h"
 #include "Common/LofarLogger.h"
 #include "Common/SystemUtil.h"
 #include "FilterBank.h"
@@ -30,6 +30,11 @@
 #include "UHEP/InvertedStationPPFWeights.h"
 //#include "clAmdFft/include/clAmdFft.h"
 
+#if defined __linux__
+#include <sched.h>
+#include <sys/time.h>
+#endif
+
 namespace LOFAR {
 namespace RTCP {
 
@@ -41,9 +46,7 @@ unsigned nrGPUs;
 #define NR_TAPS			16
 #define NR_STATION_FILTER_TAPS	16
 
-// the SAP to process (we support only one SAP for now)
-#define SAP 0
-
+#undef USE_NEW_CORRELATOR
 #define USE_2X2
 #undef USE_CUSTOM_FFT
 #undef USE_TEST_DATA
@@ -81,6 +84,40 @@ double getTime()
   return now - firstTime;
 }
 
+#if defined __linux__
+
+inline void set_affinity(unsigned device)
+{
+#if 0
+  static const char mapping[1][12] = {
+     0,  1,  2,  3,  8,  9, 10, 11,
+  };
+#else
+  static const char mapping[8][12] = {
+     { 0,  1,  2,  3,  4,  5, 12, 13, 14, 15, 16, 17, },
+     { 0,  1,  2,  3,  4,  5, 12, 13, 14, 15, 16, 17, },
+     { 0,  1,  2,  3,  4,  5, 12, 13, 14, 15, 16, 17, },
+     { 0,  1,  2,  3,  4,  5, 12, 13, 14, 15, 16, 17, },
+     { 6,  7,  8,  9, 10, 11, 18, 19, 20, 21, 22, 23, },
+     { 6,  7,  8,  9, 10, 11, 18, 19, 20, 21, 22, 23, },
+     { 6,  7,  8,  9, 10, 11, 18, 19, 20, 21, 22, 23, },
+     { 6,  7,  8,  9, 10, 11, 18, 19, 20, 21, 22, 23, },
+  };
+#endif
+
+  cpu_set_t set;
+
+  CPU_ZERO(&set);
+
+  for (unsigned coreIndex = 0; coreIndex < 12; coreIndex ++)
+    CPU_SET(mapping[device][coreIndex], &set);
+
+  if (sched_setaffinity(0, sizeof set, &set) < 0)
+    perror("sched_setaffinity");
+}
+
+#endif
+
 
 class PerformanceCounter
 {
@@ -200,7 +237,7 @@ cl::Program createProgram(const Parset &ps, cl::Context &context, std::vector<cl
   args << " -DNR_SAMPLES_PER_CHANNEL=" << ps.nrSamplesPerChannel();
   args << " -DNR_SAMPLES_PER_SUBBAND=" << ps.nrSamplesPerSubband();
   args << " -DNR_BEAMS=" << ps.nrBeams();
-  args << " -DNR_TABS=" << ps.nrTABs(SAP);
+  args << " -DNR_TABS=" << ps.nrTABs(0);
   args << " -DNR_COHERENT_STOKES=" << ps.nrCoherentStokes();
   args << " -DNR_INCOHERENT_STOKES=" << ps.nrIncoherentStokes();
   args << " -DCOHERENT_STOKES_TIME_INTEGRATION_FACTOR=" << ps.coherentStokesTimeIntegrationFactor();
@@ -257,6 +294,10 @@ class Pipeline
     SmartPtr<InputSection<i16complex> > inputSection16;
     SmartPtr<InputSection<i8complex> >	inputSection8;
     SmartPtr<InputSection<i4complex> >	inputSection4;
+
+#if defined USE_B7015
+    OMP_Lock hostToDeviceLock[4], deviceToHostLock[4];
+#endif
 };
 
 
@@ -273,12 +314,12 @@ class CorrelatorPipeline : public Pipeline
     FilterBank		    filterBank;
 
     cl::Program		    firFilterProgram, delayAndBandPassProgram, correlatorProgram;
+#if defined USE_NEW_CORRELATOR
+    PerformanceCounter	    firFilterCounter, delayAndBandPassCounter, correlateTriangleCounter, correlateRectangleCounter, fftCounter;
+#else
     PerformanceCounter	    firFilterCounter, delayAndBandPassCounter, correlatorCounter, fftCounter;
-    PerformanceCounter	    samplesCounter, visibilitiesCounter;
-
-#if defined USE_B7015
-    OMP_Lock hostToDeviceLock[4], deviceToHostLock[4];
 #endif
+    PerformanceCounter	    samplesCounter, visibilitiesCounter;
 };
 
 
@@ -332,7 +373,12 @@ CorrelatorPipeline::CorrelatorPipeline(const Parset &ps)
   filterBank(true, NR_TAPS, ps.nrChannelsPerSubband(), KAISER),
   firFilterCounter("FIR filter"),
   delayAndBandPassCounter("delay/bp"),
+#if defined USE_NEW_CORRELATOR
+  correlateTriangleCounter("cor.triangle"),
+  correlateRectangleCounter("cor.rectangle"),
+#else
   correlatorCounter("correlator"),
+#endif
   fftCounter("FFT"),
   samplesCounter("samples"),
   visibilitiesCounter("visibilities")
@@ -348,8 +394,11 @@ CorrelatorPipeline::CorrelatorPipeline(const Parset &ps)
 #pragma omp section
     delayAndBandPassProgram = createProgram("DelayAndBandPass.cl");
 #pragma omp section
+#if defined USE_NEW_CORRELATOR
     correlatorProgram = createProgram("NewCorrelator.cl");
-    //correlatorProgram = createProgram("Correlator.cl");
+#else
+    correlatorProgram = createProgram("Correlator.cl");
+#endif
   }
 
   std::cout << "compile time = " << getTime() - startTime << std::endl;
@@ -666,7 +715,7 @@ class DelayAndBandPassKernel : public Kernel
 };
 
 
-#if 0
+#if !defined USE_NEW_CORRELATOR
 
 class CorrelatorKernel : public Kernel
 {
@@ -714,12 +763,13 @@ class CorrelatorKernel : public Kernel
       nrThreads = (nrThreads + preferredMultiple - 1) / preferredMultiple * preferredMultiple;
       //std::cout << "nrBlocks = " << nrBlocks << ", nrPasses = " << nrPasses << ", preferredMultiple = " << preferredMultiple << ", nrThreads = " << nrThreads << std::endl;
 
-      globalWorkSize = cl::NDRange(nrPasses * nrThreads, ps.nrChannelsPerSubband());
+      unsigned nrUsableChannels = std::max(ps.nrChannelsPerSubband() - 1, 1U);
+      globalWorkSize = cl::NDRange(nrPasses * nrThreads, nrUsableChannels);
       localWorkSize  = cl::NDRange(nrThreads, 1);
 
-      nrOperations   = (size_t) ps.nrChannelsPerSubband() * ps.nrBaselines() * ps.nrSamplesPerChannel() * 32;
-      nrBytesRead    = (size_t) nrPasses * ps.nrStations() * ps.nrChannelsPerSubband() * ps.nrSamplesPerChannel() * NR_POLARIZATIONS * sizeof(std::complex<float>);
-      nrBytesWritten = (size_t) ps.nrBaselines() * ps.nrChannelsPerSubband() * NR_POLARIZATIONS * NR_POLARIZATIONS * sizeof(std::complex<float>);
+      nrOperations   = (size_t) nrUsableChannels * ps.nrBaselines() * ps.nrSamplesPerChannel() * 32;
+      nrBytesRead    = (size_t) nrPasses * ps.nrStations() * nrUsableChannels * ps.nrSamplesPerChannel() * NR_POLARIZATIONS * sizeof(std::complex<float>);
+      nrBytesWritten = (size_t) ps.nrBaselines() * nrUsableChannels * NR_POLARIZATIONS * NR_POLARIZATIONS * sizeof(std::complex<float>);
     }
 };
 
@@ -731,7 +781,7 @@ class CorrelatorKernel : public Kernel
     CorrelatorKernel(const Parset &ps, cl::CommandQueue &queue, cl::Program &program, cl::Buffer &devVisibilities, cl::Buffer &devCorrectedData)
     :
 #if defined USE_2X2
-      Kernel(ps, program, "correlateRectangles")
+      Kernel(ps, program, "correlate")
 #else
 #error not implemented
 #endif
@@ -739,17 +789,90 @@ class CorrelatorKernel : public Kernel
       setArg(0, devVisibilities);
       setArg(1, devCorrectedData);
 
-      unsigned nrRectanglesPerSide = ((ps.nrStations() - 1) / (2 * 16));
+      unsigned nrRectanglesPerSide = (ps.nrStations() - 1) / (2 * 16);
+      unsigned nrRectangles = nrRectanglesPerSide * (nrRectanglesPerSide + 1) / 2;
+//#pragma omp critical (cout)
+      //std::cout << "nrRectangles = " << nrRectangles << std::endl;
+
+      unsigned nrBlocksPerSide = (ps.nrStations() + 2 * 16 - 1) / (2 * 16);
+      unsigned nrBlocks	       = nrBlocksPerSide * (nrBlocksPerSide + 1) / 2;
+//#pragma omp critical (cout)
+      //std::cout << "nrBlocks = " << nrBlocks << std::endl;
+
+      unsigned nrUsableChannels = std::max(ps.nrChannelsPerSubband() - 1, 1U);
+      globalWorkSize = cl::NDRange(16 * 16, nrBlocks, nrUsableChannels);
+      localWorkSize  = cl::NDRange(16 * 16, 1, 1);
+
+      // FIXME
+      //nrOperations   = (size_t) (32 * 32) * nrRectangles * nrUsableChannels * ps.nrSamplesPerChannel() * 32;
+      nrOperations   = (size_t) ps.nrBaselines() * ps.nrSamplesPerSubband() * 32;
+      nrBytesRead    = (size_t) (32 + 32) * nrRectangles * nrUsableChannels * ps.nrSamplesPerChannel() * NR_POLARIZATIONS * sizeof(std::complex<float>);
+      nrBytesWritten = (size_t) (32 * 32) * nrRectangles * nrUsableChannels * NR_POLARIZATIONS * NR_POLARIZATIONS * sizeof(std::complex<float>);
+    }
+};
+
+
+class CorrelateRectangleKernel : public Kernel
+{
+  public:
+    CorrelateRectangleKernel(const Parset &ps, cl::CommandQueue &queue, cl::Program &program, cl::Buffer &devVisibilities, cl::Buffer &devCorrectedData)
+    :
+#if defined USE_2X2
+      Kernel(ps, program, "correlateRectangleKernel")
+#else
+#error not implemented
+#endif
+    {
+      setArg(0, devVisibilities);
+      setArg(1, devCorrectedData);
+
+      unsigned nrRectanglesPerSide = (ps.nrStations() - 1) / (2 * 16);
       unsigned nrRectangles = nrRectanglesPerSide * (nrRectanglesPerSide + 1) / 2;
 #pragma omp critical (cout)
       std::cout << "nrRectangles = " << nrRectangles << std::endl;
 
-      globalWorkSize = cl::NDRange(16 * 16, nrRectangles, ps.nrChannelsPerSubband());
+      unsigned nrUsableChannels = std::max(ps.nrChannelsPerSubband() - 1, 1U);
+      globalWorkSize = cl::NDRange(16 * 16, nrRectangles, nrUsableChannels);
       localWorkSize  = cl::NDRange(16 * 16, 1, 1);
 
-      nrOperations   = (size_t) (32 * 32) * nrRectangles * ps.nrChannelsPerSubband() * ps.nrSamplesPerChannel() * 32;
-      nrBytesRead    = (size_t) (32 + 32) * nrRectangles * ps.nrChannelsPerSubband() * ps.nrSamplesPerChannel() * NR_POLARIZATIONS * sizeof(std::complex<float>);
-      nrBytesWritten = (size_t) (32 * 32) * nrRectangles * ps.nrChannelsPerSubband() * NR_POLARIZATIONS * NR_POLARIZATIONS * sizeof(std::complex<float>);
+      nrOperations   = (size_t) (32 * 32) * nrRectangles * nrUsableChannels * ps.nrSamplesPerChannel() * 32;
+      nrBytesRead    = (size_t) (32 + 32) * nrRectangles * nrUsableChannels * ps.nrSamplesPerChannel() * NR_POLARIZATIONS * sizeof(std::complex<float>);
+      nrBytesWritten = (size_t) (32 * 32) * nrRectangles * nrUsableChannels * NR_POLARIZATIONS * NR_POLARIZATIONS * sizeof(std::complex<float>);
+    }
+};
+
+
+class CorrelateTriangleKernel : public Kernel
+{
+  public:
+    CorrelateTriangleKernel(const Parset &ps, cl::CommandQueue &queue, cl::Program &program, cl::Buffer &devVisibilities, cl::Buffer &devCorrectedData)
+    :
+#if defined USE_2X2
+      Kernel(ps, program, "correlateTriangleKernel")
+#else
+#error not implemented
+#endif
+    {
+      setArg(0, devVisibilities);
+      setArg(1, devCorrectedData);
+
+      unsigned nrTriangles = (ps.nrStations() + 2 * 16 - 1) / (2 * 16);
+      unsigned nrMiniBlocksPerSide = 16;
+      unsigned nrMiniBlocks = nrMiniBlocksPerSide * (nrMiniBlocksPerSide + 1) / 2;
+      size_t   preferredMultiple;
+      getWorkGroupInfo(queue.getInfo<CL_QUEUE_DEVICE>(), CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, &preferredMultiple);
+      unsigned nrThreads = align(nrMiniBlocks, preferredMultiple);
+
+#pragma omp critical (cout)
+      std::cout << "nrTriangles = " << nrTriangles << ", nrMiniBlocks = " << nrMiniBlocks << ", nrThreads = " << nrThreads << std::endl;
+
+      unsigned nrUsableChannels = std::max(ps.nrChannelsPerSubband() - 1, 1U);
+      globalWorkSize = cl::NDRange(nrThreads, nrTriangles, nrUsableChannels);
+      localWorkSize  = cl::NDRange(nrThreads, 1, 1);
+
+      nrOperations   = (size_t) (32 * 32 / 2) * nrTriangles * nrUsableChannels * ps.nrSamplesPerChannel() * 32;
+      nrBytesRead    = (size_t) 32 * nrTriangles * nrUsableChannels * ps.nrSamplesPerChannel() * NR_POLARIZATIONS * sizeof(std::complex<float>);
+      nrBytesWritten = (size_t) (32 * 32 / 2) * nrTriangles * nrUsableChannels * NR_POLARIZATIONS * NR_POLARIZATIONS * sizeof(std::complex<float>);
     }
 };
 
@@ -815,18 +938,18 @@ class BeamFormerKernel : public Kernel
       setArg(1, devCorrectedData);
       setArg(2, devBeamFormerWeights);
 
-      globalWorkSize = cl::NDRange(NR_POLARIZATIONS, ps.nrTABs(SAP), ps.nrChannelsPerSubband());
-      localWorkSize  = cl::NDRange(NR_POLARIZATIONS, ps.nrTABs(SAP), 1);
+      globalWorkSize = cl::NDRange(NR_POLARIZATIONS, ps.nrTABs(0), ps.nrChannelsPerSubband());
+      localWorkSize  = cl::NDRange(NR_POLARIZATIONS, ps.nrTABs(0), 1);
 
       // FIXME: nrTABs
-      //queue.enqueueNDRangeKernel(*this, cl::NullRange, cl::NDRange(16, ps.nrTABs(SAP), ps.nrChannelsPerSubband()), cl::NDRange(16, ps.nrTABs(SAP), 1), 0, &event);
+      //queue.enqueueNDRangeKernel(*this, cl::NullRange, cl::NDRange(16, ps.nrTABs(0), ps.nrChannelsPerSubband()), cl::NDRange(16, ps.nrTABs(0), 1), 0, &event);
 
       size_t count = ps.nrChannelsPerSubband() * ps.nrSamplesPerChannel() * NR_POLARIZATIONS;
-      size_t nrWeightsBytes = ps.nrStations() * ps.nrTABs(SAP) * ps.nrChannelsPerSubband() * NR_POLARIZATIONS * sizeof(std::complex<float>);
+      size_t nrWeightsBytes = ps.nrStations() * ps.nrTABs(0) * ps.nrChannelsPerSubband() * NR_POLARIZATIONS * sizeof(std::complex<float>);
       size_t nrSampleBytesPerPass = count * ps.nrStations() * sizeof(std::complex<float>);
-      size_t nrComplexVoltagesBytesPerPass = count * ps.nrTABs(SAP) * sizeof(std::complex<float>);
+      size_t nrComplexVoltagesBytesPerPass = count * ps.nrTABs(0) * sizeof(std::complex<float>);
       unsigned nrPasses = std::max((ps.nrStations() + 6) / 16, 1U);
-      nrOperations   = count * ps.nrStations() * ps.nrTABs(SAP) * 8;
+      nrOperations   = count * ps.nrStations() * ps.nrTABs(0) * 8;
       nrBytesRead    = nrWeightsBytes + nrSampleBytesPerPass + (nrPasses - 1) * nrComplexVoltagesBytesPerPass;
       nrBytesWritten = nrPasses * nrComplexVoltagesBytesPerPass;
     }
@@ -844,14 +967,14 @@ class BeamFormerTransposeKernel : public Kernel
       setArg(0, devTransposedData);
       setArg(1, devComplexVoltages);
 
-      //globalWorkSize = cl::NDRange(256, (ps.nrTABs(SAP) + 15) / 16, (ps.nrChannelsPerSubband() + 15) / 16);
-      globalWorkSize = cl::NDRange(256, (ps.nrTABs(SAP) + 15) / 16, ps.nrSamplesPerChannel() / 16);
+      //globalWorkSize = cl::NDRange(256, (ps.nrTABs(0) + 15) / 16, (ps.nrChannelsPerSubband() + 15) / 16);
+      globalWorkSize = cl::NDRange(256, (ps.nrTABs(0) + 15) / 16, ps.nrSamplesPerChannel() / 16);
       localWorkSize  = cl::NDRange(256, 1, 1);
 
       nrOperations   = 0;
-      nrBytesRead    = (size_t) ps.nrChannelsPerSubband() * ps.nrSamplesPerChannel() * ps.nrTABs(SAP) * NR_POLARIZATIONS * sizeof(std::complex<float>),
-      //nrBytesWritten = (size_t) ps.nrTABs(SAP) * NR_POLARIZATIONS * ps.nrSamplesPerChannel() * ps.nrChannelsPerSubband() * sizeof(std::complex<float>);
-      nrBytesWritten = (size_t) ps.nrTABs(SAP) * NR_POLARIZATIONS * ps.nrChannelsPerSubband() * ps.nrSamplesPerChannel() * sizeof(std::complex<float>);
+      nrBytesRead    = (size_t) ps.nrChannelsPerSubband() * ps.nrSamplesPerChannel() * ps.nrTABs(0) * NR_POLARIZATIONS * sizeof(std::complex<float>),
+      //nrBytesWritten = (size_t) ps.nrTABs(0) * NR_POLARIZATIONS * ps.nrSamplesPerChannel() * ps.nrChannelsPerSubband() * sizeof(std::complex<float>);
+      nrBytesWritten = (size_t) ps.nrTABs(0) * NR_POLARIZATIONS * ps.nrChannelsPerSubband() * ps.nrSamplesPerChannel() * sizeof(std::complex<float>);
     }
 };
 
@@ -871,7 +994,7 @@ class Dedispersion_FFT_Kernel
 
     void enqueue(cl::CommandQueue &queue, PerformanceCounter &counter, clFFT_Direction direction)
     {
-      size_t nrFFTs = (size_t) ps.nrTABs(SAP) * NR_POLARIZATIONS * ps.nrChannelsPerSubband() * ps.nrSamplesPerChannel() / ps.dedispersionFFTsize();
+      size_t nrFFTs = (size_t) ps.nrTABs(0) * NR_POLARIZATIONS * ps.nrChannelsPerSubband() * ps.nrSamplesPerChannel() / ps.dedispersionFFTsize();
 
       cl_int error = clFFT_ExecuteInterleaved(queue(), plan.plan, nrFFTs, direction, buffer(), buffer(), 0, 0, &event());
 
@@ -896,7 +1019,7 @@ class DedispersionForwardFFTkernel : public FFT_Kernel
   public:
     DedispersionForwardFFTkernel(const Parset &ps, cl::Context &context, cl::Buffer &buffer)
     :
-      FFT_Kernel(context, ps.dedispersionFFTsize(), ps.nrTABs(SAP) * NR_POLARIZATIONS * ps.nrChannelsPerSubband() * ps.nrSamplesPerChannel() / ps.dedispersionFFTsize(), true, buffer)
+      FFT_Kernel(context, ps.dedispersionFFTsize(), ps.nrTABs(0) * NR_POLARIZATIONS * ps.nrChannelsPerSubband() * ps.nrSamplesPerChannel() / ps.dedispersionFFTsize(), true, buffer)
     {
       ASSERT(ps.nrSamplesPerChannel() % ps.dedispersionFFTsize() == 0);
     }
@@ -908,7 +1031,7 @@ class DedispersionBackwardFFTkernel : public FFT_Kernel
   public:
     DedispersionBackwardFFTkernel(const Parset &ps, cl::Context &context, cl::Buffer &buffer)
     :
-      FFT_Kernel(context, ps.dedispersionFFTsize(), ps.nrTABs(SAP) * NR_POLARIZATIONS * ps.nrChannelsPerSubband() * ps.nrSamplesPerChannel() / ps.dedispersionFFTsize(), false, buffer)
+      FFT_Kernel(context, ps.dedispersionFFTsize(), ps.nrTABs(0) * NR_POLARIZATIONS * ps.nrChannelsPerSubband() * ps.nrSamplesPerChannel() / ps.dedispersionFFTsize(), false, buffer)
     {
       ASSERT(ps.nrSamplesPerChannel() % ps.dedispersionFFTsize() == 0);
     }
@@ -946,8 +1069,8 @@ class DedispersionChirpKernel : public Kernel
 	//std::cout << "localWorkSize = NDRange(" << fftSize / divisor << ", 1, 1))" << std::endl;
       }
 
-      nrOperations = (size_t) NR_POLARIZATIONS * ps.nrChannelsPerSubband() * ps.nrSamplesPerChannel() * (9 * ps.nrTABs(SAP) + 17),
-      nrBytesRead  = nrBytesWritten = sizeof(std::complex<float>) * ps.nrTABs(SAP) * NR_POLARIZATIONS * ps.nrChannelsPerSubband() * ps.nrSamplesPerChannel();
+      nrOperations = (size_t) NR_POLARIZATIONS * ps.nrChannelsPerSubband() * ps.nrSamplesPerChannel() * (9 * ps.nrTABs(0) + 17),
+      nrBytesRead  = nrBytesWritten = sizeof(std::complex<float>) * ps.nrTABs(0) * NR_POLARIZATIONS * ps.nrChannelsPerSubband() * ps.nrSamplesPerChannel();
     }
 
     void enqueue(cl::CommandQueue &queue, PerformanceCounter &counter, double subbandFrequency)
@@ -970,12 +1093,12 @@ class CoherentStokesKernel : public Kernel
       setArg(0, devStokesData);
       setArg(1, devComplexVoltages);
 
-      globalWorkSize = cl::NDRange(256, (ps.nrTABs(SAP) + 15) / 16, (ps.nrChannelsPerSubband() + 15) / 16);
+      globalWorkSize = cl::NDRange(256, (ps.nrTABs(0) + 15) / 16, (ps.nrChannelsPerSubband() + 15) / 16);
       localWorkSize  = cl::NDRange(256, 1, 1);
 
-      nrOperations   = (size_t) ps.nrChannelsPerSubband() * ps.nrSamplesPerChannel() * ps.nrTABs(SAP) * (ps.nrCoherentStokes() == 1 ? 8 : 20 + 2.0 / ps.coherentStokesTimeIntegrationFactor());
-      nrBytesRead    = (size_t) ps.nrChannelsPerSubband() * ps.nrSamplesPerChannel() * ps.nrTABs(SAP) * NR_POLARIZATIONS * sizeof(std::complex<float>);
-      nrBytesWritten = (size_t) ps.nrTABs(SAP) * ps.nrCoherentStokes() * ps.nrSamplesPerChannel() / ps.coherentStokesTimeIntegrationFactor() * ps.nrChannelsPerSubband() * sizeof(float);
+      nrOperations   = (size_t) ps.nrChannelsPerSubband() * ps.nrSamplesPerChannel() * ps.nrTABs(0) * (ps.nrCoherentStokes() == 1 ? 8 : 20 + 2.0 / ps.coherentStokesTimeIntegrationFactor());
+      nrBytesRead    = (size_t) ps.nrChannelsPerSubband() * ps.nrSamplesPerChannel() * ps.nrTABs(0) * NR_POLARIZATIONS * sizeof(std::complex<float>);
+      nrBytesWritten = (size_t) ps.nrTABs(0) * ps.nrCoherentStokes() * ps.nrSamplesPerChannel() / ps.coherentStokesTimeIntegrationFactor() * ps.nrChannelsPerSubband() * sizeof(float);
     }
 };
 
@@ -992,31 +1115,31 @@ class UHEP_BeamFormerKernel : public Kernel
       setArg(2, devBeamFormerWeights);
 
 #if 1
-      globalWorkSize = cl::NDRange(NR_POLARIZATIONS, ps.nrTABs(SAP), ps.nrSubbands());
-      localWorkSize  = cl::NDRange(NR_POLARIZATIONS, ps.nrTABs(SAP), 1);
+      globalWorkSize = cl::NDRange(NR_POLARIZATIONS, ps.nrTABs(0), ps.nrSubbands());
+      localWorkSize  = cl::NDRange(NR_POLARIZATIONS, ps.nrTABs(0), 1);
 
       size_t count = ps.nrSubbands() * (ps.nrSamplesPerChannel() + NR_STATION_FILTER_TAPS - 1) * NR_POLARIZATIONS;
-      size_t nrWeightsBytes = ps.nrStations() * ps.nrTABs(SAP) * ps.nrSubbands() * NR_POLARIZATIONS * sizeof(std::complex<float>);
+      size_t nrWeightsBytes = ps.nrStations() * ps.nrTABs(0) * ps.nrSubbands() * NR_POLARIZATIONS * sizeof(std::complex<float>);
       size_t nrSampleBytes = count * ps.nrStations() * ps.nrBytesPerComplexSample();
-      size_t nrComplexVoltagesBytesPerPass = count * ps.nrTABs(SAP) * sizeof(std::complex<float>);
+      size_t nrComplexVoltagesBytesPerPass = count * ps.nrTABs(0) * sizeof(std::complex<float>);
       unsigned nrPasses = std::max((ps.nrStations() + 6) / 16, 1U);
-      nrOperations   = count * ps.nrStations() * ps.nrTABs(SAP) * 8;
+      nrOperations   = count * ps.nrStations() * ps.nrTABs(0) * 8;
       nrBytesRead    = nrWeightsBytes + nrSampleBytes + (nrPasses - 1) * nrComplexVoltagesBytesPerPass;
       nrBytesWritten = nrPasses * nrComplexVoltagesBytesPerPass;
 #else
-      ASSERT(ps.nrTABs(SAP) % 3 == 0);
+      ASSERT(ps.nrTABs(0) % 3 == 0);
       ASSERT(ps.nrStations() % 6 == 0);
-      unsigned nrThreads = NR_POLARIZATIONS * (ps.nrTABs(SAP) / 3) * (ps.nrStations() / 6);
+      unsigned nrThreads = NR_POLARIZATIONS * (ps.nrTABs(0) / 3) * (ps.nrStations() / 6);
       globalWorkSize = cl::NDRange(nrThreads, ps.nrSubbands());
       localWorkSize  = cl::NDRange(nrThreads, 1);
-      //globalWorkSize = cl::NDRange(ps.nrStations() / 6, ps.nrTABs(SAP) / 3, ps.nrSubbands());
-      //localWorkSize  = cl::NDRange(ps.nrStations() / 6, ps.nrTABs(SAP) / 3, 1);
+      //globalWorkSize = cl::NDRange(ps.nrStations() / 6, ps.nrTABs(0) / 3, ps.nrSubbands());
+      //localWorkSize  = cl::NDRange(ps.nrStations() / 6, ps.nrTABs(0) / 3, 1);
 
       size_t count = ps.nrSubbands() * (ps.nrSamplesPerChannel() + NR_STATION_FILTER_TAPS - 1) * NR_POLARIZATIONS;
-      size_t nrWeightsBytes = ps.nrStations() * ps.nrTABs(SAP) * ps.nrSubbands() * NR_POLARIZATIONS * sizeof(std::complex<float>);
+      size_t nrWeightsBytes = ps.nrStations() * ps.nrTABs(0) * ps.nrSubbands() * NR_POLARIZATIONS * sizeof(std::complex<float>);
       size_t nrSampleBytes = count * ps.nrStations() * ps.nrBytesPerComplexSample();
-      size_t nrComplexVoltagesBytes = count * ps.nrTABs(SAP) * sizeof(std::complex<float>);
-      nrOperations   = count * ps.nrStations() * ps.nrTABs(SAP) * 8;
+      size_t nrComplexVoltagesBytes = count * ps.nrTABs(0) * sizeof(std::complex<float>);
+      nrOperations   = count * ps.nrStations() * ps.nrTABs(0) * 8;
       nrBytesRead    = nrWeightsBytes + nrSampleBytes;
       nrBytesWritten = nrComplexVoltagesBytes;
 #endif
@@ -1035,12 +1158,12 @@ class UHEP_TransposeKernel : public Kernel
       setArg(1, devComplexVoltages);
       setArg(2, devReverseSubbandMapping);
 
-      globalWorkSize = cl::NDRange(256, (ps.nrTABs(SAP) + 15) / 16, 512 / 16);
+      globalWorkSize = cl::NDRange(256, (ps.nrTABs(0) + 15) / 16, 512 / 16);
       localWorkSize  = cl::NDRange(256, 1, 1);
 
       nrOperations   = 0;
-      nrBytesRead    = (size_t) ps.nrSubbands() * (ps.nrSamplesPerChannel() + NR_STATION_FILTER_TAPS - 1) * ps.nrTABs(SAP) * NR_POLARIZATIONS * sizeof(std::complex<float>);
-      nrBytesWritten = (size_t) ps.nrTABs(SAP) * NR_POLARIZATIONS * (ps.nrSamplesPerChannel() + NR_STATION_FILTER_TAPS - 1) * 512 * sizeof(std::complex<float>);
+      nrBytesRead    = (size_t) ps.nrSubbands() * (ps.nrSamplesPerChannel() + NR_STATION_FILTER_TAPS - 1) * ps.nrTABs(0) * NR_POLARIZATIONS * sizeof(std::complex<float>);
+      nrBytesWritten = (size_t) ps.nrTABs(0) * NR_POLARIZATIONS * (ps.nrSamplesPerChannel() + NR_STATION_FILTER_TAPS - 1) * 512 * sizeof(std::complex<float>);
     }
 };
 
@@ -1055,10 +1178,10 @@ class UHEP_InvFFT_Kernel : public Kernel
       setArg(0, devFFTedData);
       setArg(1, devFFTedData);
 
-      globalWorkSize = cl::NDRange(128, ps.nrTABs(SAP) * NR_POLARIZATIONS * ps.nrSamplesPerChannel());
+      globalWorkSize = cl::NDRange(128, ps.nrTABs(0) * NR_POLARIZATIONS * ps.nrSamplesPerChannel());
       localWorkSize  = cl::NDRange(128, 1);
 
-      size_t nrFFTs = (size_t) ps.nrTABs(SAP) * NR_POLARIZATIONS * (ps.nrSamplesPerChannel() + NR_STATION_FILTER_TAPS - 1);
+      size_t nrFFTs = (size_t) ps.nrTABs(0) * NR_POLARIZATIONS * (ps.nrSamplesPerChannel() + NR_STATION_FILTER_TAPS - 1);
       nrOperations   = nrFFTs * 5 * 1024 * 10;
       nrBytesRead    = nrFFTs * 512 * sizeof(std::complex<float>);
       nrBytesWritten = nrFFTs * 1024 * sizeof(float);
@@ -1083,10 +1206,10 @@ class UHEP_InvFIR_Kernel : public Kernel
       for (nrThreads = 1024; nrThreads > maxNrThreads; nrThreads /= 2)
 	;
 
-      globalWorkSize = cl::NDRange(1024, NR_POLARIZATIONS, ps.nrTABs(SAP));
+      globalWorkSize = cl::NDRange(1024, NR_POLARIZATIONS, ps.nrTABs(0));
       localWorkSize  = cl::NDRange(nrThreads, 1, 1);
 
-      size_t count = ps.nrTABs(SAP) * NR_POLARIZATIONS * 1024;
+      size_t count = ps.nrTABs(0) * NR_POLARIZATIONS * 1024;
       nrOperations   = count * ps.nrSamplesPerChannel() * NR_STATION_FILTER_TAPS * 2;
       nrBytesRead    = count * (ps.nrSamplesPerChannel() + NR_STATION_FILTER_TAPS - 1) * sizeof(float);
       nrBytesWritten = count * ps.nrSamplesPerChannel() * sizeof(float);
@@ -1104,12 +1227,12 @@ class UHEP_TriggerKernel : public Kernel
       setArg(0, devTriggerInfo);
       setArg(1, devInvFIRfilteredData);
 
-      globalWorkSize = cl::NDRange(16, 16, ps.nrTABs(SAP));
+      globalWorkSize = cl::NDRange(16, 16, ps.nrTABs(0));
       localWorkSize  = cl::NDRange(16, 16, 1);
 
-      nrOperations   = (size_t) ps.nrTABs(SAP) * ps.nrSamplesPerChannel() * 1024 * (3 /* power */ + 2 /* window */ + 1 /* max */ + 7 /* mean/variance */);
-      nrBytesRead    = (size_t) ps.nrTABs(SAP) * NR_POLARIZATIONS * ps.nrSamplesPerChannel() * 1024 * sizeof(float);
-      nrBytesWritten = (size_t) ps.nrTABs(SAP) * sizeof(TriggerInfo);
+      nrOperations   = (size_t) ps.nrTABs(0) * ps.nrSamplesPerChannel() * 1024 * (3 /* power */ + 2 /* window */ + 1 /* max */ + 7 /* mean/variance */);
+      nrBytesRead    = (size_t) ps.nrTABs(0) * NR_POLARIZATIONS * ps.nrSamplesPerChannel() * 1024 * sizeof(float);
+      nrBytesWritten = (size_t) ps.nrTABs(0) * sizeof(TriggerInfo);
     }
 };
 
@@ -1143,6 +1266,8 @@ CorrelatorWorkQueue::CorrelatorWorkQueue(CorrelatorPipeline &pipeline)
   inputSamples(boost::extents[ps.nrStations()][(ps.nrSamplesPerChannel() + NR_TAPS - 1) * ps.nrChannelsPerSubband()][NR_POLARIZATIONS][ps.nrBytesPerComplexSample()], queue, CL_MEM_WRITE_ONLY, devBufferA),
  visibilities(boost::extents[ps.nrBaselines()][ps.nrChannelsPerSubband()][NR_POLARIZATIONS][NR_POLARIZATIONS], queue, CL_MEM_READ_ONLY, devBufferB)
 {
+  memset(inputSamples.origin(), 0, inputSamples.bytesize()); // FIXME
+  memset(visibilities.origin(), 0, visibilities.bytesize()); // FIXME
   size_t firWeightsSize = ps.nrChannelsPerSubband() * NR_TAPS * sizeof(float);
   devFIRweights = cl::Buffer(pipeline.context, CL_MEM_READ_ONLY, firWeightsSize);
   queue.enqueueWriteBuffer(devFIRweights, CL_TRUE, 0, ps.nrChannelsPerSubband() * NR_TAPS * sizeof(float), pipeline.filterBank.getWeights().origin());
@@ -1168,7 +1293,12 @@ void CorrelatorWorkQueue::doWork()
   FIR_FilterKernel firFilterKernel(ps, queue, pipeline.firFilterProgram, devFilteredData, inputSamples, devFIRweights);
   Filter_FFT_Kernel fftKernel(ps, pipeline.context, devFilteredData);
   DelayAndBandPassKernel delayAndBandPassKernel(ps, pipeline.delayAndBandPassProgram, devCorrectedData, devFilteredData, delaysAtBegin, delaysAfterEnd, phaseOffsets, bandPassCorrectionWeights);
+#if defined USE_NEW_CORRELATOR
+  CorrelateTriangleKernel correlateTriangleKernel(ps, queue, pipeline.correlatorProgram, visibilities, devCorrectedData);
+  CorrelateRectangleKernel correlateRectangleKernel(ps, queue, pipeline.correlatorProgram, visibilities, devCorrectedData);
+#else
   CorrelatorKernel correlatorKernel(ps, queue, pipeline.correlatorProgram, visibilities, devCorrectedData);
+#endif
   double startTime = ps.startTime(), currentTime, stopTime = ps.stopTime(), blockTime = ps.CNintegrationTime();
 
 #pragma omp barrier
@@ -1176,7 +1306,7 @@ void CorrelatorWorkQueue::doWork()
   double executionStartTime = getTime();
 
   for (unsigned block = 0; (currentTime = startTime + block * blockTime) < stopTime; block ++) {
-#pragma omp single
+#pragma omp single nowait
 #pragma omp critical (cout)
     std::cout << "block = " << block << ", time = " << to_simple_string(from_ustime_t(currentTime)) << std::endl;
 
@@ -1185,17 +1315,14 @@ void CorrelatorWorkQueue::doWork()
     memset(phaseOffsets.origin(), 0, phaseOffsets.bytesize());
 
     // FIXME!!!
-    if (ps.nrStations() >= 3)
-      delaysAtBegin[0][2][0] = 1e-6, delaysAfterEnd[0][2][0] = 1.1e-6;
+    //if (ps.nrStations() >= 3)
+      //delaysAtBegin[0][2][0] = 1e-6, delaysAfterEnd[0][2][0] = 1.1e-6;
 
     delaysAtBegin.hostToDevice(CL_FALSE);
     delaysAfterEnd.hostToDevice(CL_FALSE);
     phaseOffsets.hostToDevice(CL_FALSE);
-    queue.finish();
 
-#pragma omp barrier
-
-#pragma omp for schedule(dynamic)
+#pragma omp for schedule(dynamic), nowait
     for (unsigned subband = 0; subband < ps.nrSubbands(); subband ++) {
       try {
 #if defined USE_TEST_DATA
@@ -1217,7 +1344,12 @@ void CorrelatorWorkQueue::doWork()
 	}
 
 	delayAndBandPassKernel.enqueue(queue, pipeline.delayAndBandPassCounter, subband);
+#if defined USE_NEW_CORRELATOR
+	correlateTriangleKernel.enqueue(queue, pipeline.correlateTriangleCounter);
+	correlateRectangleKernel.enqueue(queue, pipeline.correlateRectangleCounter);
+#else
 	correlatorKernel.enqueue(queue, pipeline.correlatorCounter);
+#endif
 	queue.finish();
 
 	{
@@ -1276,11 +1408,11 @@ BeamFormerWorkQueue::BeamFormerWorkQueue(BeamFormerPipeline &pipeline)
   delaysAfterEnd(boost::extents[ps.nrBeams()][ps.nrStations()][NR_POLARIZATIONS], queue, CL_MEM_WRITE_ONLY, CL_MEM_READ_ONLY),
   phaseOffsets(boost::extents[ps.nrBeams()][NR_POLARIZATIONS], queue, CL_MEM_WRITE_ONLY, CL_MEM_READ_ONLY),
   devCorrectedData(cl::Buffer(pipeline.context, CL_MEM_READ_WRITE, ps.nrStations() * ps.nrChannelsPerSubband() * ps.nrSamplesPerChannel() * NR_POLARIZATIONS * sizeof(std::complex<float>))),
-  beamFormerWeights(boost::extents[ps.nrStations()][ps.nrChannelsPerSubband()][ps.nrTABs(SAP)], queue, CL_MEM_WRITE_ONLY, CL_MEM_READ_ONLY),
-  devComplexVoltages(cl::Buffer(pipeline.context, CL_MEM_READ_WRITE, ps.nrChannelsPerSubband() * ps.nrSamplesPerChannel() * ps.nrTABs(SAP) * NR_POLARIZATIONS * sizeof(std::complex<float>))),
-  //transposedComplexVoltages(boost::extents[ps.nrTABs(SAP)][NR_POLARIZATIONS][ps.nrSamplesPerChannel()][ps.nrChannelsPerSubband()], queue, CL_MEM_READ_ONLY, CL_MEM_READ_WRITE)
-  transposedComplexVoltages(boost::extents[ps.nrTABs(SAP)][NR_POLARIZATIONS][ps.nrChannelsPerSubband()][ps.nrSamplesPerChannel()], queue, CL_MEM_READ_ONLY, CL_MEM_READ_WRITE),
-  DMs(boost::extents[ps.nrTABs(SAP)], queue, CL_MEM_READ_ONLY, CL_MEM_WRITE_ONLY)
+  beamFormerWeights(boost::extents[ps.nrStations()][ps.nrChannelsPerSubband()][ps.nrTABs(0)], queue, CL_MEM_WRITE_ONLY, CL_MEM_READ_ONLY),
+  devComplexVoltages(cl::Buffer(pipeline.context, CL_MEM_READ_WRITE, ps.nrChannelsPerSubband() * ps.nrSamplesPerChannel() * ps.nrTABs(0) * NR_POLARIZATIONS * sizeof(std::complex<float>))),
+  //transposedComplexVoltages(boost::extents[ps.nrTABs(0)][NR_POLARIZATIONS][ps.nrSamplesPerChannel()][ps.nrChannelsPerSubband()], queue, CL_MEM_READ_ONLY, CL_MEM_READ_WRITE)
+  transposedComplexVoltages(boost::extents[ps.nrTABs(0)][NR_POLARIZATIONS][ps.nrChannelsPerSubband()][ps.nrSamplesPerChannel()], queue, CL_MEM_READ_ONLY, CL_MEM_READ_WRITE),
+  DMs(boost::extents[ps.nrTABs(0)], queue, CL_MEM_READ_ONLY, CL_MEM_WRITE_ONLY)
 {
   if (ps.correctBandPass()) {
     BandPass::computeCorrectionFactors(bandPassCorrectionWeights.origin(), ps.nrChannelsPerSubband());
@@ -1310,7 +1442,7 @@ void BeamFormerWorkQueue::doWork()
   double executionStartTime = getTime();
 
   for (unsigned block = 0; (currentTime = startTime + block * blockTime) < stopTime; block ++) {
-#pragma omp single
+#pragma omp single nowait
 #pragma omp critical (cout)
     std::cout << "block = " << block << ", time = " << to_simple_string(from_ustime_t(currentTime)) << std::endl;
 
@@ -1326,11 +1458,8 @@ void BeamFormerWorkQueue::doWork()
     delaysAfterEnd.hostToDevice(CL_FALSE);
     phaseOffsets.hostToDevice(CL_FALSE);
     beamFormerWeights.hostToDevice(CL_FALSE);
-    queue.finish();
-
-#pragma omp barrier
 
-#pragma omp for schedule(dynamic)
+#pragma omp for schedule(dynamic), nowait
     for (unsigned subband = 0; subband < ps.nrSubbands(); subband ++) {
       try {
 #if 1
@@ -1384,13 +1513,13 @@ UHEP_WorkQueue::UHEP_WorkQueue(UHEP_Pipeline &pipeline)
   WorkQueue(pipeline),
   pipeline(pipeline),
   hostInputSamples(boost::extents[ps.nrStations()][ps.nrSubbands()][ps.nrSamplesPerChannel() + NR_STATION_FILTER_TAPS - 1][NR_POLARIZATIONS][ps.nrBytesPerComplexSample()], queue, CL_MEM_WRITE_ONLY),
-  hostBeamFormerWeights(boost::extents[ps.nrStations()][ps.nrSubbands()][ps.nrTABs(SAP)], queue, CL_MEM_WRITE_ONLY),
-  hostTriggerInfo(ps.nrTABs(SAP), queue, CL_MEM_READ_ONLY)
+  hostBeamFormerWeights(boost::extents[ps.nrStations()][ps.nrSubbands()][ps.nrTABs(0)], queue, CL_MEM_WRITE_ONLY),
+  hostTriggerInfo(ps.nrTABs(0), queue, CL_MEM_READ_ONLY)
 {
   size_t inputSamplesSize = ps.nrStations() * ps.nrSubbands() * (ps.nrSamplesPerChannel() + NR_STATION_FILTER_TAPS - 1) * NR_POLARIZATIONS * ps.nrBytesPerComplexSample();
-  size_t complexVoltagesSize = ps.nrSubbands() * (ps.nrSamplesPerChannel() + NR_STATION_FILTER_TAPS - 1) * ps.nrTABs(SAP) * NR_POLARIZATIONS * sizeof(std::complex<float>);
-  size_t transposedDataSize = ps.nrTABs(SAP) * NR_POLARIZATIONS * (ps.nrSamplesPerChannel() + NR_STATION_FILTER_TAPS - 1) * 512 * sizeof(std::complex<float>);
-  size_t invFIRfilteredDataSize = ps.nrTABs(SAP) * NR_POLARIZATIONS * ps.nrSamplesPerChannel() * 512 * sizeof(std::complex<float>);
+  size_t complexVoltagesSize = ps.nrSubbands() * (ps.nrSamplesPerChannel() + NR_STATION_FILTER_TAPS - 1) * ps.nrTABs(0) * NR_POLARIZATIONS * sizeof(std::complex<float>);
+  size_t transposedDataSize = ps.nrTABs(0) * NR_POLARIZATIONS * (ps.nrSamplesPerChannel() + NR_STATION_FILTER_TAPS - 1) * 512 * sizeof(std::complex<float>);
+  size_t invFIRfilteredDataSize = ps.nrTABs(0) * NR_POLARIZATIONS * ps.nrSamplesPerChannel() * 512 * sizeof(std::complex<float>);
 
   size_t buffer0size = std::max(inputSamplesSize, transposedDataSize);
   size_t buffer1size = std::max(complexVoltagesSize, invFIRfilteredDataSize);
@@ -1398,7 +1527,7 @@ UHEP_WorkQueue::UHEP_WorkQueue(UHEP_Pipeline &pipeline)
   devBuffers[0] = cl::Buffer(pipeline.context, CL_MEM_READ_WRITE, buffer0size);
   devBuffers[1] = cl::Buffer(pipeline.context, CL_MEM_READ_WRITE, buffer1size);
 
-  size_t beamFormerWeightsSize = ps.nrStations() * ps.nrSubbands() * ps.nrTABs(SAP) * sizeof(std::complex<float>);
+  size_t beamFormerWeightsSize = ps.nrStations() * ps.nrSubbands() * ps.nrTABs(0) * sizeof(std::complex<float>);
   devBeamFormerWeights = cl::Buffer(pipeline.context, CL_MEM_READ_ONLY, beamFormerWeightsSize);
 
   devInputSamples = devBuffers[0];
@@ -1409,7 +1538,7 @@ UHEP_WorkQueue::UHEP_WorkQueue(UHEP_Pipeline &pipeline)
   devFFTedData = devBuffers[0];
   devInvFIRfilteredData = devBuffers[1];
 
-  devTriggerInfo = cl::Buffer(pipeline.context, CL_MEM_WRITE_ONLY, ps.nrTABs(SAP) * sizeof(TriggerInfo));
+  devTriggerInfo = cl::Buffer(pipeline.context, CL_MEM_WRITE_ONLY, ps.nrTABs(0) * sizeof(TriggerInfo));
 }
 
 
@@ -1430,12 +1559,12 @@ void UHEP_WorkQueue::doWork(const float * /*delaysAtBegin*/, const float * /*del
 
   double executionStartTime = getTime();
 
-#pragma omp for schedule(dynamic)
+#pragma omp for schedule(dynamic), nowait
   for (unsigned block = 0; block < nrBlocks; block ++) {
     try {
       double currentTime = startTime + block * blockTime;
 
-//#pragma omp single // FIXME: why does the compiler complain here???
+//#pragma omp single nowait // FIXME: why does the compiler complain here???
 #pragma omp critical (cout)
       std::cout << "block = " << block << ", time = " << to_simple_string(from_ustime_t(currentTime)) << std::endl;
 
@@ -1607,18 +1736,21 @@ struct CorrelatorTest : public UnitTest
 {
   CorrelatorTest(const Parset &ps)
   :
-    //UnitTest(ps, "Correlator.cl")
+#if defined USE_NEW_CORRELATOR
     UnitTest(ps, "NewCorrelator.cl")
+#else
+    UnitTest(ps, "Correlator.cl")
+#endif
   {
     if (ps.nrStations() >= 5 && ps.nrChannelsPerSubband() >= 6 && ps.nrSamplesPerChannel() >= 100) {
-      MultiArraySharedBuffer<std::complex<float>, 4> inputData(boost::extents[ps.nrStations()][ps.nrChannelsPerSubband()][ps.nrSamplesPerChannel()][NR_POLARIZATIONS], queue, CL_MEM_WRITE_ONLY, CL_MEM_READ_ONLY);
       MultiArraySharedBuffer<std::complex<float>, 4> visibilities(boost::extents[ps.nrBaselines()][ps.nrChannelsPerSubband()][NR_POLARIZATIONS][NR_POLARIZATIONS], queue, CL_MEM_READ_ONLY, CL_MEM_WRITE_ONLY);
+      MultiArraySharedBuffer<std::complex<float>, 4> inputData(boost::extents[ps.nrStations()][ps.nrChannelsPerSubband()][ps.nrSamplesPerChannel()][NR_POLARIZATIONS], queue, CL_MEM_WRITE_ONLY, CL_MEM_READ_ONLY);
       CorrelatorKernel correlator(ps, queue, program, visibilities, inputData);
 
       //inputData[3][5][99][1] = std::complex<float>(3, 4);
       //inputData[4][5][99][1] = std::complex<float>(5, 6);
-      inputData[2][5][99][1] = std::complex<float>(3, 4);
-      inputData[65][5][99][1] = std::complex<float>(5, 6);
+      inputData[0][5][99][1] = std::complex<float>(3, 4);
+      inputData[2][5][99][1] = std::complex<float>(5, 6);
 
 visibilities.hostToDevice(CL_FALSE);
       inputData.hostToDevice(CL_FALSE);
@@ -1635,6 +1767,70 @@ visibilities.hostToDevice(CL_FALSE);
 };
 
 
+#if defined USE_NEW_CORRELATOR
+
+struct CorrelateRectangleTest : public UnitTest
+{
+  CorrelateRectangleTest(const Parset &ps)
+  :
+    //UnitTest(ps, "Correlator.cl")
+    UnitTest(ps, "NewCorrelator.cl")
+  {
+    if (ps.nrStations() >= 5 && ps.nrChannelsPerSubband() >= 6 && ps.nrSamplesPerChannel() >= 100) {
+      MultiArraySharedBuffer<std::complex<float>, 4> visibilities(boost::extents[ps.nrBaselines()][ps.nrChannelsPerSubband()][NR_POLARIZATIONS][NR_POLARIZATIONS], queue, CL_MEM_READ_ONLY, CL_MEM_WRITE_ONLY);
+      MultiArraySharedBuffer<std::complex<float>, 4> inputData(boost::extents[ps.nrStations()][ps.nrChannelsPerSubband()][ps.nrSamplesPerChannel()][NR_POLARIZATIONS], queue, CL_MEM_WRITE_ONLY, CL_MEM_READ_ONLY);
+      CorrelateRectangleKernel correlator(ps, queue, program, visibilities, inputData);
+
+      inputData[27][5][99][1] = std::complex<float>(3, 4);
+      inputData[68][5][99][1] = std::complex<float>(5, 6);
+
+visibilities.hostToDevice(CL_FALSE);
+      inputData.hostToDevice(CL_FALSE);
+      correlator.enqueue(queue, counter);
+      visibilities.deviceToHost(CL_TRUE);
+
+      //check(visibilities[5463][5][1][1], std::complex<float>(39, 2));
+      for (unsigned bl = 0; bl < ps.nrBaselines(); bl ++)
+	if (visibilities[bl][5][1][1] != std::complex<float>(0, 0))
+	  std::cout << "bl = " << bl << ", visibility = " << visibilities[bl][5][1][1] << std::endl;
+    }
+  }
+};
+
+
+struct CorrelateTriangleTest : public UnitTest
+{
+  CorrelateTriangleTest(const Parset &ps)
+  :
+    //UnitTest(ps, "Correlator.cl")
+    UnitTest(ps, "NewCorrelator.cl")
+  {
+    if (ps.nrStations() >= 5 && ps.nrChannelsPerSubband() >= 6 && ps.nrSamplesPerChannel() >= 100) {
+      MultiArraySharedBuffer<std::complex<float>, 4> visibilities(boost::extents[ps.nrBaselines()][ps.nrChannelsPerSubband()][NR_POLARIZATIONS][NR_POLARIZATIONS], queue, CL_MEM_READ_ONLY, CL_MEM_WRITE_ONLY);
+      MultiArraySharedBuffer<std::complex<float>, 4> inputData(boost::extents[ps.nrStations()][ps.nrChannelsPerSubband()][ps.nrSamplesPerChannel()][NR_POLARIZATIONS], queue, CL_MEM_WRITE_ONLY, CL_MEM_READ_ONLY);
+      CorrelateTriangleKernel correlator(ps, queue, program, visibilities, inputData);
+
+      //inputData[3][5][99][1] = std::complex<float>(3, 4);
+      //inputData[4][5][99][1] = std::complex<float>(5, 6);
+      inputData[0][5][99][1] = std::complex<float>(3, 4);
+      inputData[2][5][99][1] = std::complex<float>(5, 6);
+
+visibilities.hostToDevice(CL_FALSE);
+      inputData.hostToDevice(CL_FALSE);
+      correlator.enqueue(queue, counter);
+      visibilities.deviceToHost(CL_TRUE);
+
+      //check(visibilities[13][5][1][1], std::complex<float>(39, 2));
+      for (unsigned bl = 0; bl < ps.nrBaselines(); bl ++)
+	if (visibilities[bl][5][1][1] != std::complex<float>(0, 0))
+	  std::cout << "bl = " << bl << ", visibility = " << visibilities[bl][5][1][1] << std::endl;
+    }
+  }
+};
+
+#endif
+
+
 struct IncoherentStokesTest : public UnitTest
 {
   IncoherentStokesTest(const Parset &ps)
@@ -1699,10 +1895,10 @@ struct BeamFormerTest : public UnitTest
   :
     UnitTest(ps, "BeamFormer/BeamFormer.cl")
   {
-    if (ps.nrStations() >= 5 && ps.nrSamplesPerChannel() >= 13 && ps.nrChannelsPerSubband() >= 7 && ps.nrTABs(SAP) >= 6) {
+    if (ps.nrStations() >= 5 && ps.nrSamplesPerChannel() >= 13 && ps.nrChannelsPerSubband() >= 7 && ps.nrTABs(0) >= 6) {
       MultiArraySharedBuffer<std::complex<float>, 4> inputData(boost::extents[ps.nrStations()][ps.nrChannelsPerSubband()][ps.nrSamplesPerChannel()][NR_POLARIZATIONS], queue, CL_MEM_WRITE_ONLY, CL_MEM_READ_ONLY);
-      MultiArraySharedBuffer<std::complex<float>, 3> beamFormerWeights(boost::extents[ps.nrStations()][ps.nrChannelsPerSubband()][ps.nrTABs(SAP)], queue, CL_MEM_WRITE_ONLY, CL_MEM_READ_ONLY);
-      MultiArraySharedBuffer<std::complex<float>, 4> complexVoltages(boost::extents[ps.nrChannelsPerSubband()][ps.nrSamplesPerChannel()][ps.nrTABs(SAP)][NR_POLARIZATIONS], queue, CL_MEM_READ_ONLY, CL_MEM_READ_WRITE);
+      MultiArraySharedBuffer<std::complex<float>, 3> beamFormerWeights(boost::extents[ps.nrStations()][ps.nrChannelsPerSubband()][ps.nrTABs(0)], queue, CL_MEM_WRITE_ONLY, CL_MEM_READ_ONLY);
+      MultiArraySharedBuffer<std::complex<float>, 4> complexVoltages(boost::extents[ps.nrChannelsPerSubband()][ps.nrSamplesPerChannel()][ps.nrTABs(0)][NR_POLARIZATIONS], queue, CL_MEM_READ_ONLY, CL_MEM_READ_WRITE);
       BeamFormerKernel beamFormer(ps, program, complexVoltages, inputData, beamFormerWeights);
 
       inputData[4][6][12][1] = std::complex<float>(2.2, 3);
@@ -1716,7 +1912,7 @@ struct BeamFormerTest : public UnitTest
       check(complexVoltages[6][12][5][1], std::complex<float>(-6.2, 23));
 
 #if 0
-      for (unsigned tab = 0; tab < ps.nrTABs(SAP); tab ++)
+      for (unsigned tab = 0; tab < ps.nrTABs(0); tab ++)
 	for (unsigned pol = 0; pol < NR_POLARIZATIONS; pol ++)
 	  for (unsigned ch = 0; ch < ps.nrChannelsPerSubband(); ch ++)
 	    for (unsigned t = 0; t < ps.nrSamplesPerChannel(); t ++)
@@ -1734,9 +1930,9 @@ struct BeamFormerTransposeTest : public UnitTest
   :
     UnitTest(ps, "BeamFormer/Transpose.cl")
   {
-    if (ps.nrChannelsPerSubband() >= 19 && ps.nrSamplesPerChannel() >= 175 && ps.nrTABs(SAP) >= 5) {
-      MultiArraySharedBuffer<std::complex<float>, 4> transposedData(boost::extents[ps.nrTABs(SAP)][NR_POLARIZATIONS][ps.nrSamplesPerChannel()][ps.nrChannelsPerSubband()], queue, CL_MEM_READ_ONLY, CL_MEM_WRITE_ONLY);
-      MultiArraySharedBuffer<std::complex<float>, 4> complexVoltages(boost::extents[ps.nrChannelsPerSubband()][ps.nrSamplesPerChannel()][ps.nrTABs(SAP)][NR_POLARIZATIONS], queue, CL_MEM_READ_WRITE, CL_MEM_READ_ONLY);
+    if (ps.nrChannelsPerSubband() >= 19 && ps.nrSamplesPerChannel() >= 175 && ps.nrTABs(0) >= 5) {
+      MultiArraySharedBuffer<std::complex<float>, 4> transposedData(boost::extents[ps.nrTABs(0)][NR_POLARIZATIONS][ps.nrSamplesPerChannel()][ps.nrChannelsPerSubband()], queue, CL_MEM_READ_ONLY, CL_MEM_WRITE_ONLY);
+      MultiArraySharedBuffer<std::complex<float>, 4> complexVoltages(boost::extents[ps.nrChannelsPerSubband()][ps.nrSamplesPerChannel()][ps.nrTABs(0)][NR_POLARIZATIONS], queue, CL_MEM_READ_WRITE, CL_MEM_READ_ONLY);
       BeamFormerTransposeKernel transpose(ps, program, transposedData, complexVoltages);
 
       complexVoltages[18][174][4][1] = std::complex<float>(24, 42);
@@ -1757,9 +1953,9 @@ struct DedispersionChirpTest : public UnitTest
   :
     UnitTest(ps, "BeamFormer/Dedispersion.cl")
   {
-    if (ps.nrTABs(SAP) > 3 && ps.nrChannelsPerSubband() > 13 && ps.nrSamplesPerChannel() / ps.dedispersionFFTsize() > 1 && ps.dedispersionFFTsize() > 77) {
-      MultiArraySharedBuffer<std::complex<float>, 5> data(boost::extents[ps.nrTABs(SAP)][NR_POLARIZATIONS][ps.nrChannelsPerSubband()][ps.nrSamplesPerChannel() / ps.dedispersionFFTsize()][ps.dedispersionFFTsize()], queue, CL_MEM_READ_WRITE, CL_MEM_READ_WRITE);
-      MultiArraySharedBuffer<float, 1> DMs(boost::extents[ps.nrTABs(SAP)], queue, CL_MEM_READ_ONLY, CL_MEM_WRITE_ONLY);
+    if (ps.nrTABs(0) > 3 && ps.nrChannelsPerSubband() > 13 && ps.nrSamplesPerChannel() / ps.dedispersionFFTsize() > 1 && ps.dedispersionFFTsize() > 77) {
+      MultiArraySharedBuffer<std::complex<float>, 5> data(boost::extents[ps.nrTABs(0)][NR_POLARIZATIONS][ps.nrChannelsPerSubband()][ps.nrSamplesPerChannel() / ps.dedispersionFFTsize()][ps.dedispersionFFTsize()], queue, CL_MEM_READ_WRITE, CL_MEM_READ_WRITE);
+      MultiArraySharedBuffer<float, 1> DMs(boost::extents[ps.nrTABs(0)], queue, CL_MEM_READ_ONLY, CL_MEM_WRITE_ONLY);
       DedispersionChirpKernel dedispersionChirpKernel(ps, program, queue, data, DMs);
 
       data[3][1][13][1][77] = std::complex<float>(2, 3);
@@ -1782,16 +1978,16 @@ struct CoherentStokesTest : public UnitTest
   :
     UnitTest(ps, "BeamFormer/CoherentStokes.cl")
   {
-    if (ps.nrChannelsPerSubband() >= 19 && ps.nrSamplesPerChannel() >= 175 && ps.nrTABs(SAP) >= 5) {
-      MultiArraySharedBuffer<float, 4> stokesData(boost::extents[ps.nrTABs(SAP)][ps.nrCoherentStokes()][ps.nrSamplesPerChannel() / ps.coherentStokesTimeIntegrationFactor()][ps.nrChannelsPerSubband()], queue, CL_MEM_READ_ONLY, CL_MEM_WRITE_ONLY);
+    if (ps.nrChannelsPerSubband() >= 19 && ps.nrSamplesPerChannel() >= 175 && ps.nrTABs(0) >= 5) {
+      MultiArraySharedBuffer<float, 4> stokesData(boost::extents[ps.nrTABs(0)][ps.nrCoherentStokes()][ps.nrSamplesPerChannel() / ps.coherentStokesTimeIntegrationFactor()][ps.nrChannelsPerSubband()], queue, CL_MEM_READ_ONLY, CL_MEM_WRITE_ONLY);
 #if 1
-      MultiArraySharedBuffer<std::complex<float>, 4> complexVoltages(boost::extents[ps.nrChannelsPerSubband()][ps.nrSamplesPerChannel()][ps.nrTABs(SAP)][NR_POLARIZATIONS], queue, CL_MEM_READ_WRITE, CL_MEM_READ_ONLY);
+      MultiArraySharedBuffer<std::complex<float>, 4> complexVoltages(boost::extents[ps.nrChannelsPerSubband()][ps.nrSamplesPerChannel()][ps.nrTABs(0)][NR_POLARIZATIONS], queue, CL_MEM_READ_WRITE, CL_MEM_READ_ONLY);
       CoherentStokesKernel stokesKernel(ps, program, stokesData, complexVoltages);
 
       complexVoltages[18][174][4][0] = std::complex<float>(2, 3);
       complexVoltages[18][174][4][1] = std::complex<float>(4, 5);
 #else
-      MultiArraySharedBuffer<std::complex<float>, 4> complexVoltages(boost::extents[ps.nrTABs(SAP)][NR_POLARIZATIONS][ps.nrSamplesPerChannel()][ps.nrChannelsPerSubband()], queue, CL_MEM_READ_WRITE, CL_MEM_READ_ONLY);
+      MultiArraySharedBuffer<std::complex<float>, 4> complexVoltages(boost::extents[ps.nrTABs(0)][NR_POLARIZATIONS][ps.nrSamplesPerChannel()][ps.nrChannelsPerSubband()], queue, CL_MEM_READ_WRITE, CL_MEM_READ_ONLY);
       CoherentStokesKernel stokesKernel(ps, program, stokesData, complexVoltages);
 
       complexVoltages[18][174][4][0] = std::complex<float>(2, 3);
@@ -1815,10 +2011,10 @@ struct UHEP_BeamFormerTest : public UnitTest
   :
     UnitTest(ps, "UHEP/BeamFormer.cl")
   {
-    if (ps.nrStations() >= 5 && (ps.nrSamplesPerChannel() + NR_STATION_FILTER_TAPS - 1) >= 13 && ps.nrSubbands() >= 7 && ps.nrTABs(SAP) >= 6) {
+    if (ps.nrStations() >= 5 && (ps.nrSamplesPerChannel() + NR_STATION_FILTER_TAPS - 1) >= 13 && ps.nrSubbands() >= 7 && ps.nrTABs(0) >= 6) {
       MultiArraySharedBuffer<char, 5> inputSamples(boost::extents[ps.nrStations()][ps.nrSubbands()][ps.nrSamplesPerChannel() + NR_STATION_FILTER_TAPS - 1][NR_POLARIZATIONS][ps.nrBytesPerComplexSample()], queue, CL_MEM_WRITE_ONLY, CL_MEM_READ_ONLY);
-      MultiArraySharedBuffer<std::complex<float>, 3> beamFormerWeights(boost::extents[ps.nrStations()][ps.nrSubbands()][ps.nrTABs(SAP)], queue, CL_MEM_WRITE_ONLY, CL_MEM_READ_ONLY);
-      MultiArraySharedBuffer<std::complex<float>, 4> complexVoltages(boost::extents[ps.nrSubbands()][ps.nrSamplesPerChannel() + NR_STATION_FILTER_TAPS - 1][ps.nrTABs(SAP)][NR_POLARIZATIONS], queue, CL_MEM_READ_ONLY, CL_MEM_READ_WRITE);
+      MultiArraySharedBuffer<std::complex<float>, 3> beamFormerWeights(boost::extents[ps.nrStations()][ps.nrSubbands()][ps.nrTABs(0)], queue, CL_MEM_WRITE_ONLY, CL_MEM_READ_ONLY);
+      MultiArraySharedBuffer<std::complex<float>, 4> complexVoltages(boost::extents[ps.nrSubbands()][ps.nrSamplesPerChannel() + NR_STATION_FILTER_TAPS - 1][ps.nrTABs(0)][NR_POLARIZATIONS], queue, CL_MEM_READ_ONLY, CL_MEM_READ_WRITE);
       UHEP_BeamFormerKernel beamFormer(ps, program, complexVoltages, inputSamples, beamFormerWeights);
 
       switch (ps.nrBytesPerComplexSample()) {
@@ -1851,9 +2047,9 @@ struct UHEP_TransposeTest : public UnitTest
   :
     UnitTest(ps, "UHEP/Transpose.cl")
   {
-    if (ps.nrSubbands() >= 19 && ps.nrSamplesPerChannel() + NR_STATION_FILTER_TAPS - 1 >= 175 && ps.nrTABs(SAP) >= 5) {
-      MultiArraySharedBuffer<std::complex<float>, 4> transposedData(boost::extents[ps.nrTABs(SAP)][NR_POLARIZATIONS][ps.nrSamplesPerChannel() + NR_STATION_FILTER_TAPS - 1][512], queue, CL_MEM_READ_ONLY, CL_MEM_WRITE_ONLY);
-      MultiArraySharedBuffer<std::complex<float>, 4> complexVoltages(boost::extents[ps.nrSubbands()][ps.nrSamplesPerChannel() + NR_STATION_FILTER_TAPS - 1][ps.nrTABs(SAP)][NR_POLARIZATIONS], queue, CL_MEM_READ_WRITE, CL_MEM_READ_ONLY);
+    if (ps.nrSubbands() >= 19 && ps.nrSamplesPerChannel() + NR_STATION_FILTER_TAPS - 1 >= 175 && ps.nrTABs(0) >= 5) {
+      MultiArraySharedBuffer<std::complex<float>, 4> transposedData(boost::extents[ps.nrTABs(0)][NR_POLARIZATIONS][ps.nrSamplesPerChannel() + NR_STATION_FILTER_TAPS - 1][512], queue, CL_MEM_READ_ONLY, CL_MEM_WRITE_ONLY);
+      MultiArraySharedBuffer<std::complex<float>, 4> complexVoltages(boost::extents[ps.nrSubbands()][ps.nrSamplesPerChannel() + NR_STATION_FILTER_TAPS - 1][ps.nrTABs(0)][NR_POLARIZATIONS], queue, CL_MEM_READ_WRITE, CL_MEM_READ_ONLY);
       cl::Buffer devReverseSubbandMapping(context, CL_MEM_READ_ONLY, 512 * sizeof(int));
       UHEP_TransposeKernel transpose(ps, program, transposedData, complexVoltages, devReverseSubbandMapping);
 
@@ -1876,9 +2072,9 @@ struct UHEP_TriggerTest : public UnitTest
   :
     UnitTest(ps, "UHEP/Trigger.cl")
   {
-    if (ps.nrTABs(SAP) >= 4 && 1024 * ps.nrSamplesPerChannel() > 100015) {
-      MultiArraySharedBuffer<float, 3> inputData(boost::extents[ps.nrTABs(SAP)][NR_POLARIZATIONS][ps.nrSamplesPerChannel() * 1024], queue, CL_MEM_WRITE_ONLY, CL_MEM_READ_ONLY);
-      MultiArraySharedBuffer<TriggerInfo, 1> triggerInfo(boost::extents[ps.nrTABs(SAP)], queue, CL_MEM_READ_ONLY, CL_MEM_WRITE_ONLY);
+    if (ps.nrTABs(0) >= 4 && 1024 * ps.nrSamplesPerChannel() > 100015) {
+      MultiArraySharedBuffer<float, 3> inputData(boost::extents[ps.nrTABs(0)][NR_POLARIZATIONS][ps.nrSamplesPerChannel() * 1024], queue, CL_MEM_WRITE_ONLY, CL_MEM_READ_ONLY);
+      MultiArraySharedBuffer<TriggerInfo, 1> triggerInfo(boost::extents[ps.nrTABs(0)], queue, CL_MEM_READ_ONLY, CL_MEM_WRITE_ONLY);
       UHEP_TriggerKernel trigger(ps, program, triggerInfo, inputData);
 
       inputData[3][1][100015] = 1000;
@@ -1900,7 +2096,7 @@ struct UHEP_TriggerTest : public UnitTest
 struct FFT_Test : public UnitTest
 {
   FFT_Test(const Parset &ps)
-  : UnitTest(ps, "fft2.cl")
+  : UnitTest(ps, "fft.cl")
   {
     MultiArraySharedBuffer<std::complex<float>, 1> in(boost::extents[8], queue, CL_MEM_WRITE_ONLY, CL_MEM_READ_ONLY);
     MultiArraySharedBuffer<std::complex<float>, 1> out(boost::extents[8], queue, CL_MEM_READ_ONLY, CL_MEM_WRITE_ONLY);
@@ -1979,34 +2175,14 @@ int main(int argc, char **argv)
     const char *str = getenv("NR_GPUS");
     nrGPUs = str ? atoi(str) : 1;
 
-#if 0
-    ps.nrSubbands()		= 10;//488;
-    ps.nrChannelsPerSubband()	= 64;
-    ps.nrBeams()		= 1;
-    ps.nrSamplesPerChannel()	= 196608 / ps.nrChannelsPerSubband();
-    ps.subbandBandwidth()	= 195312.5;
-    ps.correctBandPass()	= true;
-#endif
+    profiling = false; CorrelatorPipeline(ps).doWork();
+    profiling = true; CorrelatorPipeline(ps).doWork();
 
-    //profiling = false; CorrelatorPipeline(ps).doWork();
-    //profiling = true; CorrelatorPipeline(ps).doWork();
-
-    (CorrelatorTest)(ps);
+    //(CorrelatorTest)(ps);
+    //(CorrelateRectangleTest)(ps);
+    //(CorrelateTriangleTest)(ps);
 
 #if 0
-    ps.nrSubbands()		  = 488;
-    ps.nrChannelsPerSubband()	  = 2048;
-    ps.nrBeams()		  = 1;
-    ps.nrTABs(SAP)			  = 128;
-    ps.nrIncoherentStokes()	  = 4;
-    ps.nrCoherentStokes()	  = 4;
-    ps.incoherentStokesTimeIntegrationFactor() = 8;
-    ps.coherentStokesTimeIntegrationFactor() = 8;
-    ps.nrSamplesPerChannel()	  = 65536 / ps.nrChannelsPerSubband();//262144 / ps.nrChannelsPerSubband();
-    ps.subbandBandwidth()	  = 195312.5;
-    ps.correctBandPass()	  = true;
-    ps.dedispersionFFTsize()	  = ps.nrSamplesPerChannel();
-  
     profiling = false; BeamFormerPipeline(ps).doWork();
     profiling = true; BeamFormerPipeline(ps).doWork();
     //(IncoherentStokesTest)(ps);
@@ -2018,12 +2194,6 @@ int main(int argc, char **argv)
 #endif
 
 #if 0
-    ps.nrSubbands()	   = 488;
-    ps.nrSamplesPerChannel() = 1024;
-    ps.nrBeams()	   = 1;
-    ps.subbandBandwidth()  = 195312.5;
-    ps.nrTABs(SAP)		   = 48;
-
     profiling = false; UHEP_Pipeline(ps).doWork();
     profiling = true; UHEP_Pipeline(ps).doWork();
     //(UHEP_BeamFormerTest)(ps);
diff --git a/RTCP/GPUProc/src/UHEP/BeamFormer.cl-0.ptx b/RTCP/GPUProc/src/UHEP/BeamFormer.cl-0.ptx
deleted file mode 100644
index ea220810bb7..00000000000
--- a/RTCP/GPUProc/src/UHEP/BeamFormer.cl-0.ptx
+++ /dev/null
@@ -1,207 +0,0 @@
-//
-// Generated by NVIDIA NVVM Compiler
-// Compiler built on Tue Feb  7 07:15:59 2012 (1328595359)
-// Driver 295.20
-//
-
-.version 3.0
-.target sm_21, texmode_independent
-.address_size 32
-
-.extern .shared .align 16 .b8 shr_2__local[2048];
-
-.entry complexVoltages(
-	.param .u32 .ptr .global .align 1 complexVoltages_param_0,
-	.param .u32 .ptr .global .align 1 complexVoltages_param_1,
-	.param .u32 .ptr .global .align 1 complexVoltages_param_2
-)
-{
-	.reg .f32 	%f<173>;
-	.reg .pred 	%p<7>;
-	.reg .s32 	%r<76>;
-	.reg .s16 	%rc<16>;
-
-
-	ld.param.u32 	%r29, [complexVoltages_param_2];
-	// inline asm
-	mov.u32 	%r22, %tid.x;
-	// inline asm
-	// inline asm
-	mov.u32 	%r23, %tid.y;
-	// inline asm
-	// inline asm
-	mov.u32 	%r24, %envreg5;
-	// inline asm
-	// inline asm
-	mov.u32 	%r25, %ntid.z;
-	// inline asm
-	// inline asm
-	mov.u32 	%r26, %ctaid.z;
-	// inline asm
-	// inline asm
-	mov.u32 	%r27, %tid.z;
-	// inline asm
-	add.s32 	%r30, %r27, %r24;
-	mad.lo.s32 	%r4, %r26, %r25, %r30;
-	shl.b32 	%r31, %r23, 4;
-	mad.lo.s32 	%r32, %r4, 66496, %r31;
-	shl.b32 	%r33, %r22, 3;
-	add.s32 	%r5, %r32, %r33;
-	shl.b32 	%r34, %r4, 5;
-	shl.b32 	%r35, %r23, 3;
-	add.s32 	%r36, %r34, %r35;
-	add.s32 	%r37, %r29, %r36;
-	ld.global.v2.f32 	{%f131, %f132}, [%r37];
-	ld.global.v2.f32 	{%f137, %f138}, [%r37+15616];
-	ld.global.v2.f32 	{%f143, %f144}, [%r37+31232];
-	ld.global.v2.f32 	{%f149, %f150}, [%r37+46848];
-	ld.global.v2.f32 	{%f155, %f156}, [%r37+62464];
-	ld.global.v2.f32 	{%f161, %f162}, [%r37+78080];
-	ld.global.v2.f32 	{%f167, %f168}, [%r37+93696];
-	mov.u32 	%r72, 0;
-
-BB0_1:
-	shl.b32 	%r40, %r72, 10;
-	add.s32 	%r7, %r5, %r40;
-	// inline asm
-	mov.u32 	%r38, %tid.x;
-	// inline asm
-	// inline asm
-	mov.u32 	%r39, %tid.y;
-	// inline asm
-	shl.b32 	%r9, %r39, 1;
-	add.s32 	%r74, %r9, %r38;
-	setp.gt.u32 	%p1, %r74, 127;
-	@%p1 bra 	BB0_6;
-
-	add.s32 	%r11, %r38, %r9;
-	cvt.u8.u32 	%rc1, %r11;
-	mov.u16 	%rc15, 0;
-	mov.u32 	%r73, 0;
-
-BB0_3:
-	add.s32 	%r14, %r11, %r73;
-	shl.b32 	%r42, %r72, 4;
-	shl.b16 	%rc5, %rc15, 3;
-	add.s16 	%rc6, %rc1, %rc5;
-	cvt.u32.u8 	%r43, %rc6;
-	and.b32  	%r44, %r43, 15;
-	add.s32 	%r15, %r42, %r44;
-	setp.gt.u32 	%p2, %r15, 1038;
-	@%p2 bra 	BB0_5;
-
-	shr.u32 	%r45, %r14, 4;
-	ld.param.u32 	%r71, [complexVoltages_param_1];
-	mad.lo.s32 	%r46, %r45, 2028128, %r71;
-	mad.lo.s32 	%r47, %r4, 4156, %r46;
-	shl.b32 	%r48, %r15, 2;
-	add.s32 	%r49, %r47, %r48;
-	ld.global.v4.u8 	{%rc11, %rc12, %rc13, %rc14}, [%r49];
-	// inline asm
-	cvt.rn.f32.s8 	%f1, %rc11;
-	// inline asm
-	// inline asm
-	cvt.rn.f32.s8 	%f2, %rc12;
-	// inline asm
-	// inline asm
-	cvt.rn.f32.s8 	%f3, %rc13;
-	// inline asm
-	// inline asm
-	cvt.rn.f32.s8 	%f4, %rc14;
-	// inline asm
-	shl.b32 	%r50, %r74, 4;
-	mov.u32 	%r51, shr_2__local;
-	add.s32 	%r52, %r51, %r50;
-	st.shared.v4.f32 	[%r52], {%f1, %f2, %f3, %f4};
-
-BB0_5:
-	add.s32 	%r74, %r74, 8;
-	setp.lt.u32 	%p3, %r74, 128;
-	add.s32 	%r73, %r73, 8;
-	add.s16 	%rc15, %rc15, 1;
-	@%p3 bra 	BB0_3;
-
-BB0_6:
-	bar.sync 	0;
-	mov.u32 	%r56, 1039;
-	shl.b32 	%r57, %r72, 4;
-	sub.s32 	%r18, %r56, %r57;
-	mov.u32 	%r54, 16;
-	// inline asm
-	min.u32 	%r53, %r54, %r18;
-	// inline asm
-	setp.eq.s32 	%p4, %r53, 0;
-	@%p4 bra 	BB0_9;
-
-	mov.u32 	%r75, 0;
-
-BB0_8:
-	shl.b32 	%r62, %r75, 6;
-	add.s32 	%r63, %r7, %r62;
-	ld.param.u32 	%r70, [complexVoltages_param_0];
-	add.s32 	%r64, %r70, %r63;
-	shl.b32 	%r65, %r75, 4;
-	mov.u32 	%r66, shr_2__local;
-	add.s32 	%r67, %r66, %r65;
-	add.s32 	%r69, %r67, %r33;
-	ld.shared.v2.f32 	{%f27, %f28}, [%r69];
-	mov.f32 	%f5, 0f00000000;
-	fma.rn.ftz.f32 	%f31, %f131, %f27, %f5;
-	fma.rn.ftz.f32 	%f32, %f131, %f28, %f5;
-	neg.ftz.f32 	%f7, %f28;
-	fma.rn.ftz.f32 	%f39, %f132, %f7, %f31;
-	fma.rn.ftz.f32 	%f40, %f132, %f27, %f32;
-	ld.shared.v2.f32 	{%f43, %f44}, [%r69+256];
-	fma.rn.ftz.f32 	%f45, %f137, %f43, %f39;
-	fma.rn.ftz.f32 	%f46, %f137, %f44, %f40;
-	neg.ftz.f32 	%f10, %f44;
-	fma.rn.ftz.f32 	%f53, %f138, %f10, %f45;
-	fma.rn.ftz.f32 	%f54, %f138, %f43, %f46;
-	ld.shared.v2.f32 	{%f57, %f58}, [%r69+512];
-	fma.rn.ftz.f32 	%f59, %f143, %f57, %f53;
-	fma.rn.ftz.f32 	%f60, %f143, %f58, %f54;
-	neg.ftz.f32 	%f13, %f58;
-	fma.rn.ftz.f32 	%f67, %f144, %f13, %f59;
-	fma.rn.ftz.f32 	%f68, %f144, %f57, %f60;
-	ld.shared.v2.f32 	{%f71, %f72}, [%r69+768];
-	fma.rn.ftz.f32 	%f73, %f149, %f71, %f67;
-	fma.rn.ftz.f32 	%f74, %f149, %f72, %f68;
-	neg.ftz.f32 	%f16, %f72;
-	fma.rn.ftz.f32 	%f81, %f150, %f16, %f73;
-	fma.rn.ftz.f32 	%f82, %f150, %f71, %f74;
-	ld.shared.v2.f32 	{%f85, %f86}, [%r69+1024];
-	fma.rn.ftz.f32 	%f87, %f155, %f85, %f81;
-	fma.rn.ftz.f32 	%f88, %f155, %f86, %f82;
-	neg.ftz.f32 	%f19, %f86;
-	fma.rn.ftz.f32 	%f95, %f156, %f19, %f87;
-	fma.rn.ftz.f32 	%f96, %f156, %f85, %f88;
-	ld.shared.v2.f32 	{%f99, %f100}, [%r69+1280];
-	fma.rn.ftz.f32 	%f101, %f161, %f99, %f95;
-	fma.rn.ftz.f32 	%f102, %f161, %f100, %f96;
-	neg.ftz.f32 	%f22, %f100;
-	fma.rn.ftz.f32 	%f109, %f162, %f22, %f101;
-	fma.rn.ftz.f32 	%f110, %f162, %f99, %f102;
-	ld.shared.v2.f32 	{%f113, %f114}, [%r69+1536];
-	fma.rn.ftz.f32 	%f115, %f167, %f113, %f109;
-	fma.rn.ftz.f32 	%f116, %f167, %f114, %f110;
-	neg.ftz.f32 	%f25, %f114;
-	fma.rn.ftz.f32 	%f123, %f168, %f25, %f115;
-	fma.rn.ftz.f32 	%f124, %f168, %f113, %f116;
-	st.global.v2.f32 	[%r64], {%f123, %f124};
-	// inline asm
-	min.u32 	%r59, %r54, %r18;
-	// inline asm
-	add.s32 	%r75, %r75, 1;
-	setp.lt.u32 	%p5, %r75, %r59;
-	@%p5 bra 	BB0_8;
-
-BB0_9:
-	bar.sync 	0;
-	add.s32 	%r72, %r72, 1;
-	setp.ne.s32 	%p6, %r72, 65;
-	@%p6 bra 	BB0_1;
-
-	ret;
-}
-
-
diff --git a/RTCP/GPUProc/src/UHEP/BeamFormer.cl.hop-0.ptx b/RTCP/GPUProc/src/UHEP/BeamFormer.cl.hop-0.ptx
deleted file mode 100644
index 79498463a835875a85828f52fd7f756eb2b37aab..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 53640
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%0DNn)VJiaDxGRu9DC5MqK3_aoT`ihZH
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
NVgD-m8lPO>{{x#lgRlSq

diff --git a/RTCP/GPUProc/src/UHEP/InvFFT.cl-0.ptx b/RTCP/GPUProc/src/UHEP/InvFFT.cl-0.ptx
deleted file mode 100644
index 86d5c2b0918..00000000000
--- a/RTCP/GPUProc/src/UHEP/InvFFT.cl-0.ptx
+++ /dev/null
@@ -1,759 +0,0 @@
-//
-// Generated by NVIDIA NVVM Compiler
-// Compiler built on Tue Feb  7 07:15:59 2012 (1328595359)
-// Driver 295.20
-//
-
-.version 3.0
-.target sm_21, texmode_independent
-.address_size 32
-
-.extern .shared .align 32 .b8 shr_3_lds[4096];
-
-.entry inv_fft(
-	.param .u32 .ptr .global .align 8 inv_fft_param_0,
-	.param .u32 .ptr .global .align 4 inv_fft_param_1
-)
-.reqntid 128, 1, 1
-{
-	.reg .f32 	%f<576>;
-	.reg .pred 	%p<2>;
-	.reg .s32 	%r<212>;
-
-
-	ld.param.u32 	%r26, [inv_fft_param_1];
-	// inline asm
-	mov.u32 	%r2, %tid.x;
-	// inline asm
-	// inline asm
-	mov.u32 	%r3, %envreg4;
-	// inline asm
-	// inline asm
-	mov.u32 	%r4, %ntid.y;
-	// inline asm
-	// inline asm
-	mov.u32 	%r5, %ctaid.y;
-	// inline asm
-	// inline asm
-	mov.u32 	%r6, %tid.y;
-	// inline asm
-	add.s32 	%r27, %r6, %r3;
-	mad.lo.s32 	%r28, %r5, %r4, %r27;
-	shl.b32 	%r29, %r28, 12;
-	add.s32 	%r30, %r26, %r29;
-	shl.b32 	%r31, %r2, 3;
-	add.s32 	%r32, %r30, %r31;
-	ld.global.v2.f32 	{%f574, %f575}, [%r32];
-	// inline asm
-	mov.u32 	%r7, %tid.x;
-	// inline asm
-	// inline asm
-	mov.u32 	%r8, %envreg4;
-	// inline asm
-	// inline asm
-	mov.u32 	%r9, %ntid.y;
-	// inline asm
-	// inline asm
-	mov.u32 	%r10, %ctaid.y;
-	// inline asm
-	// inline asm
-	mov.u32 	%r11, %tid.y;
-	// inline asm
-	add.s32 	%r33, %r11, %r8;
-	mad.lo.s32 	%r34, %r10, %r9, %r33;
-	shl.b32 	%r35, %r34, 12;
-	add.s32 	%r36, %r26, %r35;
-	shl.b32 	%r37, %r7, 3;
-	add.s32 	%r38, %r37, %r36;
-	ld.global.v2.f32 	{%f516, %f517}, [%r38+1024];
-	// inline asm
-	mov.u32 	%r12, %tid.x;
-	// inline asm
-	// inline asm
-	mov.u32 	%r13, %envreg4;
-	// inline asm
-	// inline asm
-	mov.u32 	%r14, %ntid.y;
-	// inline asm
-	// inline asm
-	mov.u32 	%r15, %ctaid.y;
-	// inline asm
-	// inline asm
-	mov.u32 	%r16, %tid.y;
-	// inline asm
-	add.s32 	%r39, %r16, %r13;
-	mad.lo.s32 	%r40, %r15, %r14, %r39;
-	shl.b32 	%r41, %r40, 12;
-	add.s32 	%r42, %r26, %r41;
-	shl.b32 	%r43, %r12, 3;
-	add.s32 	%r44, %r43, %r42;
-	ld.global.v2.f32 	{%f510, %f511}, [%r44+2048];
-	// inline asm
-	mov.u32 	%r17, %tid.x;
-	// inline asm
-	// inline asm
-	mov.u32 	%r18, %envreg4;
-	// inline asm
-	// inline asm
-	mov.u32 	%r19, %ntid.y;
-	// inline asm
-	// inline asm
-	mov.u32 	%r20, %ctaid.y;
-	// inline asm
-	// inline asm
-	mov.u32 	%r21, %tid.y;
-	// inline asm
-	add.s32 	%r45, %r21, %r18;
-	mad.lo.s32 	%r46, %r20, %r19, %r45;
-	shl.b32 	%r47, %r46, 12;
-	add.s32 	%r48, %r26, %r47;
-	shl.b32 	%r49, %r17, 3;
-	add.s32 	%r50, %r49, %r48;
-	ld.global.v2.f32 	{%f522, %f523}, [%r50+3072];
-	// inline asm
-	mov.u32 	%r22, %tid.x;
-	// inline asm
-	shl.b32 	%r51, %r22, 3;
-	mov.u32 	%r52, shr_3_lds;
-	add.s32 	%r53, %r52, %r51;
-	st.shared.v2.f32 	[%r53], {%f574, %f575};
-	// inline asm
-	mov.u32 	%r23, %tid.x;
-	// inline asm
-	shl.b32 	%r54, %r23, 3;
-	add.s32 	%r55, %r54, %r52;
-	st.shared.v2.f32 	[%r55+1024], {%f516, %f517};
-	// inline asm
-	mov.u32 	%r24, %tid.x;
-	// inline asm
-	shl.b32 	%r56, %r24, 3;
-	add.s32 	%r57, %r56, %r52;
-	st.shared.v2.f32 	[%r57+2048], {%f510, %f511};
-	// inline asm
-	mov.u32 	%r25, %tid.x;
-	// inline asm
-	shl.b32 	%r58, %r25, 3;
-	add.s32 	%r59, %r58, %r52;
-	st.shared.v2.f32 	[%r59+3072], {%f522, %f523};
-	bar.sync 	0;
-	// inline asm
-	mov.u32 	%r60, %tid.x;
-	// inline asm
-	setp.eq.s32 	%p1, %r60, 0;
-	@%p1 bra 	BB0_2;
-
-	// inline asm
-	mov.u32 	%r61, %tid.x;
-	// inline asm
-	mov.u32 	%r62, 512;
-	sub.s32 	%r63, %r62, %r61;
-	shl.b32 	%r64, %r63, 3;
-	add.s32 	%r66, %r52, %r64;
-	ld.shared.v2.f32 	{%f572, %f573}, [%r66];
-	bra.uni 	BB0_3;
-
-BB0_2:
-	mov.f32 	%f17, 0f00000000;
-	mov.f32 	%f572, %f575;
-	mov.f32 	%f573, %f17;
-	mov.f32 	%f574, %f574;
-	mov.f32 	%f575, %f17;
-
-BB0_3:
-	// inline asm
-	mov.u32 	%r67, %tid.x;
-	// inline asm
-	mov.u32 	%r70, 384;
-	sub.s32 	%r71, %r70, %r67;
-	shl.b32 	%r72, %r71, 3;
-	add.s32 	%r74, %r52, %r72;
-	ld.shared.v2.f32 	{%f490, %f491}, [%r74];
-	// inline asm
-	mov.u32 	%r68, %tid.x;
-	// inline asm
-	mov.u32 	%r75, 256;
-	sub.s32 	%r76, %r75, %r68;
-	shl.b32 	%r77, %r76, 3;
-	add.s32 	%r78, %r52, %r77;
-	ld.shared.v2.f32 	{%f492, %f493}, [%r78];
-	// inline asm
-	mov.u32 	%r69, %tid.x;
-	// inline asm
-	mov.u32 	%r79, 128;
-	sub.s32 	%r80, %r79, %r69;
-	shl.b32 	%r81, %r80, 3;
-	add.s32 	%r82, %r52, %r81;
-	neg.ftz.f32 	%f20, %f573;
-	neg.ftz.f32 	%f22, %f491;
-	neg.ftz.f32 	%f24, %f493;
-	ld.shared.v2.f32 	{%f500, %f501}, [%r82];
-	neg.ftz.f32 	%f26, %f501;
-	add.ftz.f32 	%f504, %f574, %f572;
-	add.ftz.f32 	%f505, %f575, %f20;
-	sub.ftz.f32 	%f506, %f574, %f572;
-	sub.ftz.f32 	%f507, %f575, %f20;
-	add.ftz.f32 	%f508, %f510, %f492;
-	add.ftz.f32 	%f509, %f511, %f24;
-	sub.ftz.f32 	%f512, %f510, %f492;
-	sub.ftz.f32 	%f513, %f511, %f24;
-	add.ftz.f32 	%f514, %f516, %f490;
-	add.ftz.f32 	%f515, %f517, %f22;
-	sub.ftz.f32 	%f518, %f516, %f490;
-	sub.ftz.f32 	%f519, %f517, %f22;
-	add.ftz.f32 	%f520, %f522, %f500;
-	add.ftz.f32 	%f521, %f523, %f26;
-	sub.ftz.f32 	%f524, %f522, %f500;
-	sub.ftz.f32 	%f525, %f523, %f26;
-	add.ftz.f32 	%f526, %f504, %f508;
-	add.ftz.f32 	%f527, %f505, %f509;
-	sub.ftz.f32 	%f528, %f504, %f508;
-	sub.ftz.f32 	%f529, %f505, %f509;
-	neg.ftz.f32 	%f28, %f513;
-	add.ftz.f32 	%f534, %f506, %f28;
-	add.ftz.f32 	%f535, %f507, %f512;
-	sub.ftz.f32 	%f536, %f506, %f28;
-	sub.ftz.f32 	%f537, %f507, %f512;
-	add.ftz.f32 	%f538, %f514, %f520;
-	add.ftz.f32 	%f539, %f515, %f521;
-	sub.ftz.f32 	%f540, %f514, %f520;
-	sub.ftz.f32 	%f541, %f515, %f521;
-	neg.ftz.f32 	%f31, %f525;
-	add.ftz.f32 	%f546, %f518, %f31;
-	add.ftz.f32 	%f547, %f519, %f524;
-	sub.ftz.f32 	%f548, %f518, %f31;
-	sub.ftz.f32 	%f549, %f519, %f524;
-	add.ftz.f32 	%f446, %f526, %f538;
-	add.ftz.f32 	%f447, %f527, %f539;
-	sub.ftz.f32 	%f454, %f526, %f538;
-	sub.ftz.f32 	%f455, %f527, %f539;
-	neg.ftz.f32 	%f34, %f547;
-	add.ftz.f32 	%f554, %f34, %f546;
-	add.ftz.f32 	%f555, %f546, %f547;
-	mov.f32 	%f36, 0f3F3504F3;
-	fma.rn.ftz.f32 	%f448, %f554, %f36, %f534;
-	fma.rn.ftz.f32 	%f449, %f555, %f36, %f535;
-	neg.f32 	%f558, %f554;
-	neg.f32 	%f559, %f555;
-	fma.rn.ftz.f32 	%f456, %f558, %f36, %f534;
-	fma.rn.ftz.f32 	%f457, %f559, %f36, %f535;
-	neg.ftz.f32 	%f38, %f541;
-	add.ftz.f32 	%f450, %f528, %f38;
-	add.ftz.f32 	%f451, %f529, %f540;
-	sub.ftz.f32 	%f458, %f528, %f38;
-	sub.ftz.f32 	%f459, %f529, %f540;
-	neg.ftz.f32 	%f41, %f549;
-	sub.ftz.f32 	%f568, %f41, %f548;
-	sub.ftz.f32 	%f569, %f548, %f549;
-	fma.rn.ftz.f32 	%f452, %f568, %f36, %f536;
-	fma.rn.ftz.f32 	%f453, %f569, %f36, %f537;
-	neg.f32 	%f570, %f568;
-	neg.f32 	%f571, %f569;
-	fma.rn.ftz.f32 	%f460, %f570, %f36, %f536;
-	fma.rn.ftz.f32 	%f461, %f571, %f36, %f537;
-	bar.sync 	0;
-	// inline asm
-	mov.u32 	%r83, %tid.x;
-	// inline asm
-	shl.b32 	%r84, %r83, 5;
-	add.s32 	%r86, %r52, %r84;
-	st.shared.v4.f32 	[%r86+16], {%f454, %f456, %f458, %f460};
-	st.shared.v4.f32 	[%r86], {%f446, %f448, %f450, %f452};
-	bar.sync 	0;
-	// inline asm
-	mov.u32 	%r87, %tid.x;
-	// inline asm
-	shl.b32 	%r95, %r87, 2;
-	add.s32 	%r97, %r52, %r95;
-	ld.shared.f32 	%f51, [%r97];
-	// inline asm
-	mov.u32 	%r88, %tid.x;
-	// inline asm
-	shl.b32 	%r98, %r88, 2;
-	add.s32 	%r99, %r98, %r52;
-	ld.shared.f32 	%f1, [%r99+512];
-	// inline asm
-	mov.u32 	%r89, %tid.x;
-	// inline asm
-	shl.b32 	%r100, %r89, 2;
-	add.s32 	%r101, %r100, %r52;
-	ld.shared.f32 	%f2, [%r101+1024];
-	// inline asm
-	mov.u32 	%r90, %tid.x;
-	// inline asm
-	shl.b32 	%r102, %r90, 2;
-	add.s32 	%r103, %r102, %r52;
-	ld.shared.f32 	%f3, [%r103+1536];
-	// inline asm
-	mov.u32 	%r91, %tid.x;
-	// inline asm
-	shl.b32 	%r104, %r91, 2;
-	add.s32 	%r105, %r104, %r52;
-	ld.shared.f32 	%f4, [%r105+2048];
-	// inline asm
-	mov.u32 	%r92, %tid.x;
-	// inline asm
-	shl.b32 	%r106, %r92, 2;
-	add.s32 	%r107, %r106, %r52;
-	ld.shared.f32 	%f5, [%r107+2560];
-	// inline asm
-	mov.u32 	%r93, %tid.x;
-	// inline asm
-	shl.b32 	%r108, %r93, 2;
-	add.s32 	%r109, %r108, %r52;
-	ld.shared.f32 	%f6, [%r109+3072];
-	// inline asm
-	mov.u32 	%r94, %tid.x;
-	// inline asm
-	shl.b32 	%r110, %r94, 2;
-	add.s32 	%r111, %r110, %r52;
-	ld.shared.f32 	%f7, [%r111+3584];
-	bar.sync 	0;
-	// inline asm
-	mov.u32 	%r112, %tid.x;
-	// inline asm
-	shl.b32 	%r113, %r112, 5;
-	add.s32 	%r115, %r52, %r113;
-	st.shared.v4.f32 	[%r115+16], {%f455, %f457, %f459, %f461};
-	st.shared.v4.f32 	[%r115], {%f447, %f449, %f451, %f453};
-	bar.sync 	0;
-	// inline asm
-	mov.u32 	%r116, %tid.x;
-	// inline asm
-	shl.b32 	%r124, %r116, 2;
-	add.s32 	%r126, %r52, %r124;
-	ld.shared.f32 	%f61, [%r126];
-	// inline asm
-	mov.u32 	%r117, %tid.x;
-	// inline asm
-	shl.b32 	%r127, %r117, 2;
-	add.s32 	%r128, %r127, %r52;
-	ld.shared.f32 	%f8, [%r128+512];
-	// inline asm
-	mov.u32 	%r118, %tid.x;
-	// inline asm
-	shl.b32 	%r129, %r118, 2;
-	add.s32 	%r130, %r129, %r52;
-	ld.shared.f32 	%f9, [%r130+1024];
-	// inline asm
-	mov.u32 	%r119, %tid.x;
-	// inline asm
-	shl.b32 	%r131, %r119, 2;
-	add.s32 	%r132, %r131, %r52;
-	ld.shared.f32 	%f10, [%r132+1536];
-	// inline asm
-	mov.u32 	%r120, %tid.x;
-	// inline asm
-	shl.b32 	%r133, %r120, 2;
-	add.s32 	%r134, %r133, %r52;
-	ld.shared.f32 	%f11, [%r134+2048];
-	// inline asm
-	mov.u32 	%r121, %tid.x;
-	// inline asm
-	shl.b32 	%r135, %r121, 2;
-	add.s32 	%r136, %r135, %r52;
-	ld.shared.f32 	%f12, [%r136+2560];
-	// inline asm
-	mov.u32 	%r122, %tid.x;
-	// inline asm
-	shl.b32 	%r137, %r122, 2;
-	add.s32 	%r138, %r137, %r52;
-	ld.shared.f32 	%f13, [%r138+3072];
-	// inline asm
-	mov.u32 	%r123, %tid.x;
-	// inline asm
-	shl.b32 	%r139, %r123, 2;
-	add.s32 	%r140, %r139, %r52;
-	ld.shared.f32 	%f14, [%r140+3584];
-	bar.sync 	0;
-	mov.f32 	%f90, 0f40000000;
-	mul.ftz.f32 	%f15, %f90, 0f40490FDB;
-	div.rn.ftz.f32 	%f91, %f15, 0f42800000;
-	// inline asm
-	mov.u32 	%r141, %tid.x;
-	// inline asm
-	and.b32  	%r144, %r141, 7;
-	cvt.rn.f32.u32 	%f92, %r144;
-	mul.ftz.f32 	%f65, %f91, %f92;
-	// inline asm
-	cos.approx.f32 	%f62, %f65;
-	// inline asm
-	// inline asm
-	sin.approx.f32 	%f64, %f65;
-	// inline asm
-	mul.ftz.f32 	%f93, %f62, %f1;
-	neg.f32 	%f94, %f64;
-	fma.rn.ftz.f32 	%f95, %f94, %f8, %f93;
-	mul.ftz.f32 	%f96, %f64, %f1;
-	fma.rn.ftz.f32 	%f97, %f62, %f8, %f96;
-	fma.rn.ftz.f32 	%f67, %f91, %f92, %f65;
-	// inline asm
-	cos.approx.f32 	%f66, %f67;
-	// inline asm
-	// inline asm
-	sin.approx.f32 	%f68, %f67;
-	// inline asm
-	mul.ftz.f32 	%f98, %f66, %f2;
-	neg.f32 	%f99, %f68;
-	fma.rn.ftz.f32 	%f100, %f99, %f9, %f98;
-	mul.ftz.f32 	%f101, %f68, %f2;
-	fma.rn.ftz.f32 	%f102, %f66, %f9, %f101;
-	mul.ftz.f32 	%f73, %f65, 0f40400000;
-	// inline asm
-	cos.approx.f32 	%f70, %f73;
-	// inline asm
-	// inline asm
-	sin.approx.f32 	%f72, %f73;
-	// inline asm
-	mul.ftz.f32 	%f103, %f70, %f3;
-	neg.f32 	%f104, %f72;
-	fma.rn.ftz.f32 	%f105, %f104, %f10, %f103;
-	mul.ftz.f32 	%f106, %f72, %f3;
-	fma.rn.ftz.f32 	%f107, %f70, %f10, %f106;
-	mul.ftz.f32 	%f77, %f65, 0f40800000;
-	// inline asm
-	cos.approx.f32 	%f74, %f77;
-	// inline asm
-	// inline asm
-	sin.approx.f32 	%f76, %f77;
-	// inline asm
-	mul.ftz.f32 	%f108, %f74, %f4;
-	neg.f32 	%f109, %f76;
-	fma.rn.ftz.f32 	%f110, %f109, %f11, %f108;
-	mul.ftz.f32 	%f111, %f76, %f4;
-	fma.rn.ftz.f32 	%f112, %f74, %f11, %f111;
-	mul.ftz.f32 	%f81, %f65, 0f40A00000;
-	// inline asm
-	cos.approx.f32 	%f78, %f81;
-	// inline asm
-	// inline asm
-	sin.approx.f32 	%f80, %f81;
-	// inline asm
-	mul.ftz.f32 	%f113, %f78, %f5;
-	neg.f32 	%f114, %f80;
-	fma.rn.ftz.f32 	%f115, %f114, %f12, %f113;
-	mul.ftz.f32 	%f116, %f80, %f5;
-	fma.rn.ftz.f32 	%f117, %f78, %f12, %f116;
-	mul.ftz.f32 	%f85, %f65, 0f40C00000;
-	// inline asm
-	cos.approx.f32 	%f82, %f85;
-	// inline asm
-	// inline asm
-	sin.approx.f32 	%f84, %f85;
-	// inline asm
-	mul.ftz.f32 	%f118, %f82, %f6;
-	neg.f32 	%f119, %f84;
-	fma.rn.ftz.f32 	%f120, %f119, %f13, %f118;
-	mul.ftz.f32 	%f121, %f84, %f6;
-	fma.rn.ftz.f32 	%f122, %f82, %f13, %f121;
-	mul.ftz.f32 	%f89, %f65, 0f40E00000;
-	// inline asm
-	cos.approx.f32 	%f86, %f89;
-	// inline asm
-	// inline asm
-	sin.approx.f32 	%f88, %f89;
-	// inline asm
-	mul.ftz.f32 	%f123, %f86, %f7;
-	neg.f32 	%f124, %f88;
-	fma.rn.ftz.f32 	%f125, %f124, %f14, %f123;
-	mul.ftz.f32 	%f126, %f88, %f7;
-	fma.rn.ftz.f32 	%f127, %f86, %f14, %f126;
-	add.ftz.f32 	%f380, %f51, %f110;
-	add.ftz.f32 	%f381, %f61, %f112;
-	sub.ftz.f32 	%f384, %f51, %f110;
-	sub.ftz.f32 	%f385, %f61, %f112;
-	add.ftz.f32 	%f386, %f100, %f120;
-	add.ftz.f32 	%f387, %f102, %f122;
-	sub.ftz.f32 	%f388, %f100, %f120;
-	sub.ftz.f32 	%f389, %f102, %f122;
-	add.ftz.f32 	%f390, %f95, %f115;
-	add.ftz.f32 	%f391, %f97, %f117;
-	sub.ftz.f32 	%f392, %f95, %f115;
-	sub.ftz.f32 	%f393, %f97, %f117;
-	add.ftz.f32 	%f394, %f105, %f125;
-	add.ftz.f32 	%f395, %f107, %f127;
-	sub.ftz.f32 	%f396, %f105, %f125;
-	sub.ftz.f32 	%f397, %f107, %f127;
-	add.ftz.f32 	%f398, %f380, %f386;
-	add.ftz.f32 	%f399, %f381, %f387;
-	sub.ftz.f32 	%f400, %f380, %f386;
-	sub.ftz.f32 	%f401, %f381, %f387;
-	neg.ftz.f32 	%f129, %f389;
-	add.ftz.f32 	%f406, %f384, %f129;
-	add.ftz.f32 	%f407, %f385, %f388;
-	sub.ftz.f32 	%f408, %f384, %f129;
-	sub.ftz.f32 	%f409, %f385, %f388;
-	add.ftz.f32 	%f410, %f390, %f394;
-	add.ftz.f32 	%f411, %f391, %f395;
-	sub.ftz.f32 	%f412, %f390, %f394;
-	sub.ftz.f32 	%f413, %f391, %f395;
-	neg.ftz.f32 	%f132, %f397;
-	add.ftz.f32 	%f418, %f392, %f132;
-	add.ftz.f32 	%f419, %f393, %f396;
-	sub.ftz.f32 	%f420, %f392, %f132;
-	sub.ftz.f32 	%f421, %f393, %f396;
-	add.ftz.f32 	%f348, %f398, %f410;
-	add.ftz.f32 	%f349, %f399, %f411;
-	sub.ftz.f32 	%f356, %f398, %f410;
-	sub.ftz.f32 	%f357, %f399, %f411;
-	neg.ftz.f32 	%f135, %f419;
-	add.ftz.f32 	%f426, %f135, %f418;
-	add.ftz.f32 	%f427, %f418, %f419;
-	fma.rn.ftz.f32 	%f350, %f426, %f36, %f406;
-	fma.rn.ftz.f32 	%f351, %f427, %f36, %f407;
-	neg.f32 	%f430, %f426;
-	neg.f32 	%f431, %f427;
-	fma.rn.ftz.f32 	%f358, %f430, %f36, %f406;
-	fma.rn.ftz.f32 	%f359, %f431, %f36, %f407;
-	neg.ftz.f32 	%f139, %f413;
-	add.ftz.f32 	%f352, %f400, %f139;
-	add.ftz.f32 	%f353, %f401, %f412;
-	sub.ftz.f32 	%f360, %f400, %f139;
-	sub.ftz.f32 	%f361, %f401, %f412;
-	neg.ftz.f32 	%f142, %f421;
-	sub.ftz.f32 	%f440, %f142, %f420;
-	sub.ftz.f32 	%f441, %f420, %f421;
-	fma.rn.ftz.f32 	%f354, %f440, %f36, %f408;
-	fma.rn.ftz.f32 	%f355, %f441, %f36, %f409;
-	neg.f32 	%f442, %f440;
-	neg.f32 	%f443, %f441;
-	fma.rn.ftz.f32 	%f362, %f442, %f36, %f408;
-	fma.rn.ftz.f32 	%f363, %f443, %f36, %f409;
-	// inline asm
-	mov.u32 	%r142, %tid.x;
-	// inline asm
-	shl.b32 	%r145, %r142, 3;
-	// inline asm
-	mov.u32 	%r143, %tid.x;
-	// inline asm
-	and.b32  	%r146, %r143, 7;
-	and.b32  	%r147, %r145, 1073741760;
-	add.s32 	%r148, %r147, %r146;
-	shl.b32 	%r149, %r148, 2;
-	add.s32 	%r1, %r52, %r149;
-	st.shared.f32 	[%r1], %f348;
-	st.shared.f32 	[%r1+32], %f350;
-	st.shared.f32 	[%r1+64], %f352;
-	st.shared.f32 	[%r1+96], %f354;
-	st.shared.f32 	[%r1+128], %f356;
-	st.shared.f32 	[%r1+160], %f358;
-	st.shared.f32 	[%r1+192], %f360;
-	st.shared.f32 	[%r1+224], %f362;
-	bar.sync 	0;
-	// inline asm
-	mov.u32 	%r151, %tid.x;
-	// inline asm
-	shl.b32 	%r155, %r151, 3;
-	add.s32 	%r157, %r52, %r155;
-	ld.shared.v2.f32 	{%f344, %f345}, [%r157];
-	// inline asm
-	mov.u32 	%r152, %tid.x;
-	// inline asm
-	shl.b32 	%r158, %r152, 3;
-	add.s32 	%r159, %r158, %r52;
-	ld.shared.v2.f32 	{%f282, %f283}, [%r159+1024];
-	// inline asm
-	mov.u32 	%r153, %tid.x;
-	// inline asm
-	shl.b32 	%r160, %r153, 3;
-	add.s32 	%r161, %r160, %r52;
-	ld.shared.v2.f32 	{%f288, %f289}, [%r161+2048];
-	// inline asm
-	mov.u32 	%r154, %tid.x;
-	// inline asm
-	shl.b32 	%r162, %r154, 3;
-	add.s32 	%r163, %r162, %r52;
-	ld.shared.v2.f32 	{%f294, %f295}, [%r163+3072];
-	bar.sync 	0;
-	st.shared.f32 	[%r1], %f349;
-	st.shared.f32 	[%r1+32], %f351;
-	st.shared.f32 	[%r1+64], %f353;
-	st.shared.f32 	[%r1+96], %f355;
-	st.shared.f32 	[%r1+128], %f357;
-	st.shared.f32 	[%r1+160], %f359;
-	st.shared.f32 	[%r1+192], %f361;
-	st.shared.f32 	[%r1+224], %f363;
-	bar.sync 	0;
-	// inline asm
-	mov.u32 	%r164, %tid.x;
-	// inline asm
-	shl.b32 	%r168, %r164, 3;
-	add.s32 	%r170, %r52, %r168;
-	ld.shared.v2.f32 	{%f342, %f343}, [%r170];
-	// inline asm
-	mov.u32 	%r165, %tid.x;
-	// inline asm
-	shl.b32 	%r171, %r165, 3;
-	add.s32 	%r172, %r171, %r52;
-	ld.shared.v2.f32 	{%f284, %f285}, [%r172+1024];
-	// inline asm
-	mov.u32 	%r166, %tid.x;
-	// inline asm
-	shl.b32 	%r173, %r166, 3;
-	add.s32 	%r174, %r173, %r52;
-	ld.shared.v2.f32 	{%f290, %f291}, [%r174+2048];
-	// inline asm
-	mov.u32 	%r167, %tid.x;
-	// inline asm
-	shl.b32 	%r175, %r167, 3;
-	add.s32 	%r176, %r175, %r52;
-	ld.shared.v2.f32 	{%f296, %f297}, [%r176+3072];
-	bar.sync 	0;
-	div.rn.ftz.f32 	%f184, %f15, 0f43800000;
-	// inline asm
-	mov.u32 	%r177, %tid.x;
-	// inline asm
-	shl.b32 	%r180, %r177, 1;
-	and.b32  	%r181, %r180, 62;
-	cvt.rn.f32.u32 	%f185, %r181;
-	mul.ftz.f32 	%f163, %f184, %f185;
-	// inline asm
-	cos.approx.f32 	%f160, %f163;
-	// inline asm
-	// inline asm
-	sin.approx.f32 	%f162, %f163;
-	// inline asm
-	mul.ftz.f32 	%f187, %f160, %f282;
-	neg.f32 	%f189, %f162;
-	fma.rn.ftz.f32 	%f190, %f189, %f284, %f187;
-	mul.ftz.f32 	%f191, %f162, %f282;
-	fma.rn.ftz.f32 	%f192, %f160, %f284, %f191;
-	fma.rn.ftz.f32 	%f165, %f184, %f185, %f163;
-	// inline asm
-	cos.approx.f32 	%f164, %f165;
-	// inline asm
-	// inline asm
-	sin.approx.f32 	%f166, %f165;
-	// inline asm
-	mul.ftz.f32 	%f194, %f164, %f288;
-	neg.f32 	%f196, %f166;
-	fma.rn.ftz.f32 	%f197, %f196, %f290, %f194;
-	mul.ftz.f32 	%f198, %f166, %f288;
-	fma.rn.ftz.f32 	%f199, %f164, %f290, %f198;
-	mul.ftz.f32 	%f171, %f163, 0f40400000;
-	// inline asm
-	cos.approx.f32 	%f168, %f171;
-	// inline asm
-	// inline asm
-	sin.approx.f32 	%f170, %f171;
-	// inline asm
-	mul.ftz.f32 	%f201, %f168, %f294;
-	neg.f32 	%f203, %f170;
-	fma.rn.ftz.f32 	%f204, %f203, %f296, %f201;
-	mul.ftz.f32 	%f205, %f170, %f294;
-	fma.rn.ftz.f32 	%f206, %f168, %f296, %f205;
-	fma.rn.ftz.f32 	%f175, %f184, %f185, %f184;
-	// inline asm
-	cos.approx.f32 	%f172, %f175;
-	// inline asm
-	// inline asm
-	sin.approx.f32 	%f174, %f175;
-	// inline asm
-	mul.ftz.f32 	%f208, %f172, %f283;
-	neg.f32 	%f210, %f174;
-	fma.rn.ftz.f32 	%f211, %f210, %f285, %f208;
-	mul.ftz.f32 	%f212, %f174, %f283;
-	fma.rn.ftz.f32 	%f213, %f172, %f285, %f212;
-	add.ftz.f32 	%f177, %f175, %f175;
-	// inline asm
-	cos.approx.f32 	%f176, %f177;
-	// inline asm
-	// inline asm
-	sin.approx.f32 	%f178, %f177;
-	// inline asm
-	mul.ftz.f32 	%f215, %f176, %f289;
-	neg.f32 	%f217, %f178;
-	fma.rn.ftz.f32 	%f218, %f217, %f291, %f215;
-	mul.ftz.f32 	%f219, %f178, %f289;
-	fma.rn.ftz.f32 	%f220, %f176, %f291, %f219;
-	mul.ftz.f32 	%f183, %f175, 0f40400000;
-	// inline asm
-	cos.approx.f32 	%f180, %f183;
-	// inline asm
-	// inline asm
-	sin.approx.f32 	%f182, %f183;
-	// inline asm
-	mul.ftz.f32 	%f222, %f180, %f295;
-	neg.f32 	%f224, %f182;
-	fma.rn.ftz.f32 	%f225, %f224, %f297, %f222;
-	mul.ftz.f32 	%f226, %f182, %f295;
-	fma.rn.ftz.f32 	%f227, %f180, %f297, %f226;
-	add.ftz.f32 	%f306, %f344, %f197;
-	add.ftz.f32 	%f307, %f342, %f199;
-	sub.ftz.f32 	%f310, %f344, %f197;
-	sub.ftz.f32 	%f311, %f342, %f199;
-	add.ftz.f32 	%f312, %f190, %f204;
-	add.ftz.f32 	%f313, %f192, %f206;
-	sub.ftz.f32 	%f314, %f190, %f204;
-	sub.ftz.f32 	%f315, %f192, %f206;
-	add.ftz.f32 	%f260, %f306, %f312;
-	add.ftz.f32 	%f261, %f307, %f313;
-	sub.ftz.f32 	%f272, %f306, %f312;
-	sub.ftz.f32 	%f273, %f307, %f313;
-	neg.ftz.f32 	%f229, %f315;
-	add.ftz.f32 	%f266, %f310, %f229;
-	add.ftz.f32 	%f267, %f311, %f314;
-	sub.ftz.f32 	%f278, %f310, %f229;
-	sub.ftz.f32 	%f279, %f311, %f314;
-	add.ftz.f32 	%f320, %f345, %f218;
-	add.ftz.f32 	%f321, %f343, %f220;
-	sub.ftz.f32 	%f324, %f345, %f218;
-	sub.ftz.f32 	%f325, %f343, %f220;
-	add.ftz.f32 	%f326, %f211, %f225;
-	add.ftz.f32 	%f327, %f213, %f227;
-	sub.ftz.f32 	%f328, %f211, %f225;
-	sub.ftz.f32 	%f329, %f213, %f227;
-	add.ftz.f32 	%f262, %f320, %f326;
-	add.ftz.f32 	%f263, %f321, %f327;
-	sub.ftz.f32 	%f274, %f320, %f326;
-	sub.ftz.f32 	%f275, %f321, %f327;
-	neg.ftz.f32 	%f232, %f329;
-	add.ftz.f32 	%f268, %f324, %f232;
-	add.ftz.f32 	%f269, %f325, %f328;
-	sub.ftz.f32 	%f280, %f324, %f232;
-	sub.ftz.f32 	%f281, %f325, %f328;
-	// inline asm
-	mov.u32 	%r178, %tid.x;
-	// inline asm
-	shl.b32 	%r182, %r178, 2;
-	// inline asm
-	mov.u32 	%r179, %tid.x;
-	// inline asm
-	and.b32  	%r183, %r179, 31;
-	and.b32  	%r184, %r182, 536870784;
-	add.s32 	%r185, %r184, %r183;
-	shl.b32 	%r186, %r185, 3;
-	add.s32 	%r188, %r52, %r186;
-	st.shared.v2.f32 	[%r188], {%f260, %f262};
-	st.shared.v2.f32 	[%r188+256], {%f266, %f268};
-	st.shared.v2.f32 	[%r188+512], {%f272, %f274};
-	st.shared.v2.f32 	[%r188+768], {%f278, %f280};
-	bar.sync 	0;
-	// inline asm
-	mov.u32 	%r193, %tid.x;
-	// inline asm
-	shl.b32 	%r197, %r193, 3;
-	add.s32 	%r199, %r52, %r197;
-	st.shared.v2.f32 	[%r199], {%f261, %f263};
-	// inline asm
-	mov.u32 	%r194, %tid.x;
-	// inline asm
-	shl.b32 	%r200, %r194, 3;
-	add.s32 	%r201, %r200, %r52;
-	st.shared.v2.f32 	[%r201+1024], {%f267, %f269};
-	// inline asm
-	mov.u32 	%r195, %tid.x;
-	// inline asm
-	shl.b32 	%r202, %r195, 3;
-	add.s32 	%r203, %r202, %r52;
-	st.shared.v2.f32 	[%r203+2048], {%f273, %f275};
-	// inline asm
-	mov.u32 	%r196, %tid.x;
-	// inline asm
-	shl.b32 	%r204, %r196, 3;
-	add.s32 	%r205, %r204, %r52;
-	st.shared.v2.f32 	[%r205+3072], {%f279, %f281};
-	bar.sync 	0;
-	ret;
-}
-
-
diff --git a/RTCP/GPUProc/src/UHEP/InvFIR.cl-0.ptx b/RTCP/GPUProc/src/UHEP/InvFIR.cl-0.ptx
deleted file mode 100644
index 2179b103dc7..00000000000
--- a/RTCP/GPUProc/src/UHEP/InvFIR.cl-0.ptx
+++ /dev/null
@@ -1,447 +0,0 @@
-//
-// Generated by NVIDIA NVVM Compiler
-// Compiler built on Tue Feb  7 07:15:59 2012 (1328595359)
-// Driver 295.20
-//
-
-.version 3.0
-.target sm_21, texmode_independent
-.address_size 32
-
-
-.entry invFIRfilter(
-	.param .u32 .ptr .global .align 1 invFIRfilter_param_0,
-	.param .u32 .ptr .global .align 1 invFIRfilter_param_1,
-	.param .u32 .ptr .global .align 1 invFIRfilter_param_2
-)
-{
-	.reg .f32 	%f<386>;
-	.reg .pred 	%p<2>;
-	.reg .s32 	%r<71>;
-
-
-	ld.param.u32 	%r21, [invFIRfilter_param_0];
-	ld.param.u32 	%r22, [invFIRfilter_param_1];
-	ld.param.u32 	%r23, [invFIRfilter_param_2];
-	// inline asm
-	mov.u32 	%r7, %envreg3;
-	// inline asm
-	// inline asm
-	mov.u32 	%r8, %ntid.x;
-	// inline asm
-	// inline asm
-	mov.u32 	%r9, %ctaid.x;
-	// inline asm
-	mul.lo.s32 	%r24, %r9, %r8;
-	// inline asm
-	mov.u32 	%r10, %tid.x;
-	// inline asm
-	add.s32 	%r25, %r10, %r7;
-	mad.lo.s32 	%r26, %r9, %r8, %r25;
-	// inline asm
-	mov.u32 	%r11, %envreg4;
-	// inline asm
-	// inline asm
-	mov.u32 	%r12, %ntid.y;
-	// inline asm
-	// inline asm
-	mov.u32 	%r13, %ctaid.y;
-	// inline asm
-	mul.lo.s32 	%r27, %r13, %r12;
-	// inline asm
-	mov.u32 	%r14, %tid.y;
-	// inline asm
-	add.s32 	%r28, %r14, %r11;
-	mad.lo.s32 	%r29, %r13, %r12, %r28;
-	// inline asm
-	mov.u32 	%r15, %envreg5;
-	// inline asm
-	// inline asm
-	mov.u32 	%r16, %ntid.z;
-	// inline asm
-	// inline asm
-	mov.u32 	%r17, %ctaid.z;
-	// inline asm
-	mul.lo.s32 	%r30, %r17, %r16;
-	// inline asm
-	mov.u32 	%r18, %tid.z;
-	// inline asm
-	add.s32 	%r31, %r18, %r15;
-	mad.lo.s32 	%r32, %r17, %r16, %r31;
-	shl.b32 	%r33, %r26, 6;
-	add.s32 	%r34, %r23, %r33;
-	mad.lo.s32 	%r35, %r32, 8511488, %r22;
-	mad.lo.s32 	%r36, %r29, 4255744, %r35;
-	shl.b32 	%r37, %r26, 2;
-	add.s32 	%r38, %r36, %r37;
-	ld.global.f32 	%f17, [%r38];
-	mov.u32 	%r70, 0;
-	ld.global.f32 	%f18, [%r38+4096];
-	ld.global.f32 	%f19, [%r38+8192];
-	ld.global.f32 	%f20, [%r38+12288];
-	ld.global.f32 	%f21, [%r38+16384];
-	ld.global.f32 	%f22, [%r38+20480];
-	ld.global.f32 	%f23, [%r38+24576];
-	ld.global.f32 	%f24, [%r38+28672];
-	ld.global.f32 	%f25, [%r38+32768];
-	ld.global.f32 	%f26, [%r38+36864];
-	ld.global.f32 	%f27, [%r38+40960];
-	ld.global.f32 	%f28, [%r38+45056];
-	ld.global.f32 	%f29, [%r38+49152];
-	ld.global.f32 	%f30, [%r38+53248];
-	ld.global.f32 	%f31, [%r38+57344];
-	ld.global.v4.f32 	{%f367, %f368, %f369, %f370}, [%r34+48];
-	ld.global.v4.f32 	{%f371, %f372, %f373, %f374}, [%r34+32];
-	ld.global.v4.f32 	{%f375, %f376, %f377, %f378}, [%r34+16];
-	ld.global.v4.f32 	{%f379, %f380, %f381, %f382}, [%r34];
-	shl.b32 	%r39, %r30, 23;
-	shl.b32 	%r40, %r15, 23;
-	add.s32 	%r41, %r39, %r40;
-	shl.b32 	%r42, %r18, 23;
-	add.s32 	%r43, %r41, %r42;
-	shl.b32 	%r44, %r27, 22;
-	add.s32 	%r45, %r43, %r44;
-	shl.b32 	%r46, %r11, 22;
-	add.s32 	%r47, %r45, %r46;
-	shl.b32 	%r48, %r14, 22;
-	add.s32 	%r49, %r47, %r48;
-	shl.b32 	%r50, %r24, 2;
-	add.s32 	%r51, %r49, %r50;
-	shl.b32 	%r52, %r7, 2;
-	add.s32 	%r53, %r51, %r52;
-	shl.b32 	%r54, %r10, 2;
-	add.s32 	%r55, %r53, %r54;
-	add.s32 	%r56, %r55, %r21;
-	add.s32 	%r1, %r56, 32768;
-	mul.lo.s32 	%r57, %r15, 8511488;
-	mad.lo.s32 	%r58, %r30, 8511488, %r57;
-	mad.lo.s32 	%r59, %r18, 8511488, %r58;
-	mad.lo.s32 	%r60, %r27, 4255744, %r59;
-	mad.lo.s32 	%r61, %r11, 4255744, %r60;
-	mad.lo.s32 	%r62, %r14, 4255744, %r61;
-	add.s32 	%r63, %r62, %r50;
-	add.s32 	%r64, %r63, %r52;
-	add.s32 	%r65, %r64, %r54;
-	add.s32 	%r66, %r65, %r22;
-	add.s32 	%r2, %r66, 122880;
-	mov.f32 	%f347, %f25;
-	mov.f32 	%f348, %f26;
-	mov.f32 	%f349, %f27;
-	mov.f32 	%f350, %f28;
-	mov.f32 	%f335, %f21;
-	mov.f32 	%f336, %f22;
-	mov.f32 	%f337, %f23;
-	mov.f32 	%f338, %f24;
-	mov.f32 	%f323, %f17;
-	mov.f32 	%f324, %f18;
-	mov.f32 	%f325, %f19;
-	mov.f32 	%f326, %f20;
-	mov.f32 	%f383, %f29;
-	mov.f32 	%f384, %f30;
-	mov.f32 	%f385, %f31;
-	mov.f32 	%f362, %f32;
-	mov.u32 	%r69, 64;
-
-BB0_1:
-	mul.ftz.f32 	%f35, %f369, %f324;
-	fma.rn.ftz.f32 	%f36, %f370, %f323, %f35;
-	fma.rn.ftz.f32 	%f38, %f368, %f325, %f36;
-	fma.rn.ftz.f32 	%f40, %f367, %f326, %f38;
-	fma.rn.ftz.f32 	%f42, %f374, %f335, %f40;
-	fma.rn.ftz.f32 	%f44, %f373, %f336, %f42;
-	fma.rn.ftz.f32 	%f46, %f372, %f337, %f44;
-	fma.rn.ftz.f32 	%f48, %f371, %f338, %f46;
-	fma.rn.ftz.f32 	%f50, %f378, %f347, %f48;
-	fma.rn.ftz.f32 	%f52, %f377, %f348, %f50;
-	fma.rn.ftz.f32 	%f54, %f376, %f349, %f52;
-	fma.rn.ftz.f32 	%f56, %f375, %f350, %f54;
-	fma.rn.ftz.f32 	%f58, %f382, %f383, %f56;
-	fma.rn.ftz.f32 	%f60, %f381, %f384, %f58;
-	fma.rn.ftz.f32 	%f62, %f380, %f385, %f60;
-	add.s32 	%r67, %r2, %r70;
-	ld.global.f32 	%f63, [%r67+-57344];
-	fma.rn.ftz.f32 	%f64, %f379, %f63, %f62;
-	add.s32 	%r68, %r1, %r70;
-	st.global.f32 	[%r68+-32768], %f64;
-	mul.ftz.f32 	%f65, %f369, %f325;
-	fma.rn.ftz.f32 	%f66, %f370, %f324, %f65;
-	fma.rn.ftz.f32 	%f67, %f368, %f326, %f66;
-	fma.rn.ftz.f32 	%f68, %f367, %f335, %f67;
-	fma.rn.ftz.f32 	%f69, %f374, %f336, %f68;
-	fma.rn.ftz.f32 	%f70, %f373, %f337, %f69;
-	fma.rn.ftz.f32 	%f71, %f372, %f338, %f70;
-	fma.rn.ftz.f32 	%f72, %f371, %f347, %f71;
-	fma.rn.ftz.f32 	%f73, %f378, %f348, %f72;
-	fma.rn.ftz.f32 	%f74, %f377, %f349, %f73;
-	fma.rn.ftz.f32 	%f75, %f376, %f350, %f74;
-	fma.rn.ftz.f32 	%f76, %f375, %f383, %f75;
-	fma.rn.ftz.f32 	%f77, %f382, %f384, %f76;
-	fma.rn.ftz.f32 	%f78, %f381, %f385, %f77;
-	ld.global.f32 	%f79, [%r67+-53248];
-	fma.rn.ftz.f32 	%f80, %f380, %f79, %f78;
-	fma.rn.ftz.f32 	%f81, %f379, %f323, %f80;
-	st.global.f32 	[%r68+-28672], %f81;
-	mul.ftz.f32 	%f82, %f369, %f326;
-	fma.rn.ftz.f32 	%f83, %f370, %f325, %f82;
-	fma.rn.ftz.f32 	%f84, %f368, %f335, %f83;
-	fma.rn.ftz.f32 	%f85, %f367, %f336, %f84;
-	fma.rn.ftz.f32 	%f86, %f374, %f337, %f85;
-	fma.rn.ftz.f32 	%f87, %f373, %f338, %f86;
-	fma.rn.ftz.f32 	%f88, %f372, %f347, %f87;
-	fma.rn.ftz.f32 	%f89, %f371, %f348, %f88;
-	fma.rn.ftz.f32 	%f90, %f378, %f349, %f89;
-	fma.rn.ftz.f32 	%f91, %f377, %f350, %f90;
-	fma.rn.ftz.f32 	%f92, %f376, %f383, %f91;
-	fma.rn.ftz.f32 	%f93, %f375, %f384, %f92;
-	fma.rn.ftz.f32 	%f94, %f382, %f385, %f93;
-	ld.global.f32 	%f95, [%r67+-49152];
-	fma.rn.ftz.f32 	%f96, %f381, %f95, %f94;
-	fma.rn.ftz.f32 	%f97, %f380, %f323, %f96;
-	fma.rn.ftz.f32 	%f98, %f379, %f324, %f97;
-	st.global.f32 	[%r68+-24576], %f98;
-	mul.ftz.f32 	%f99, %f369, %f335;
-	fma.rn.ftz.f32 	%f100, %f370, %f326, %f99;
-	fma.rn.ftz.f32 	%f101, %f368, %f336, %f100;
-	fma.rn.ftz.f32 	%f102, %f367, %f337, %f101;
-	fma.rn.ftz.f32 	%f103, %f374, %f338, %f102;
-	fma.rn.ftz.f32 	%f104, %f373, %f347, %f103;
-	fma.rn.ftz.f32 	%f105, %f372, %f348, %f104;
-	fma.rn.ftz.f32 	%f106, %f371, %f349, %f105;
-	fma.rn.ftz.f32 	%f107, %f378, %f350, %f106;
-	fma.rn.ftz.f32 	%f108, %f377, %f383, %f107;
-	fma.rn.ftz.f32 	%f109, %f376, %f384, %f108;
-	fma.rn.ftz.f32 	%f110, %f375, %f385, %f109;
-	ld.global.f32 	%f111, [%r67+-45056];
-	fma.rn.ftz.f32 	%f112, %f382, %f111, %f110;
-	fma.rn.ftz.f32 	%f113, %f381, %f323, %f112;
-	fma.rn.ftz.f32 	%f114, %f380, %f324, %f113;
-	fma.rn.ftz.f32 	%f115, %f379, %f325, %f114;
-	st.global.f32 	[%r68+-20480], %f115;
-	mul.ftz.f32 	%f116, %f369, %f336;
-	fma.rn.ftz.f32 	%f117, %f370, %f335, %f116;
-	fma.rn.ftz.f32 	%f118, %f368, %f337, %f117;
-	fma.rn.ftz.f32 	%f119, %f367, %f338, %f118;
-	fma.rn.ftz.f32 	%f120, %f374, %f347, %f119;
-	fma.rn.ftz.f32 	%f121, %f373, %f348, %f120;
-	fma.rn.ftz.f32 	%f122, %f372, %f349, %f121;
-	fma.rn.ftz.f32 	%f123, %f371, %f350, %f122;
-	fma.rn.ftz.f32 	%f124, %f378, %f383, %f123;
-	fma.rn.ftz.f32 	%f125, %f377, %f384, %f124;
-	fma.rn.ftz.f32 	%f126, %f376, %f385, %f125;
-	ld.global.f32 	%f127, [%r67+-40960];
-	fma.rn.ftz.f32 	%f128, %f375, %f127, %f126;
-	fma.rn.ftz.f32 	%f129, %f382, %f323, %f128;
-	fma.rn.ftz.f32 	%f130, %f381, %f324, %f129;
-	fma.rn.ftz.f32 	%f131, %f380, %f325, %f130;
-	fma.rn.ftz.f32 	%f132, %f379, %f326, %f131;
-	st.global.f32 	[%r68+-16384], %f132;
-	mul.ftz.f32 	%f133, %f369, %f337;
-	fma.rn.ftz.f32 	%f134, %f370, %f336, %f133;
-	fma.rn.ftz.f32 	%f135, %f368, %f338, %f134;
-	fma.rn.ftz.f32 	%f136, %f367, %f347, %f135;
-	fma.rn.ftz.f32 	%f137, %f374, %f348, %f136;
-	fma.rn.ftz.f32 	%f138, %f373, %f349, %f137;
-	fma.rn.ftz.f32 	%f139, %f372, %f350, %f138;
-	fma.rn.ftz.f32 	%f140, %f371, %f383, %f139;
-	fma.rn.ftz.f32 	%f141, %f378, %f384, %f140;
-	fma.rn.ftz.f32 	%f142, %f377, %f385, %f141;
-	ld.global.f32 	%f143, [%r67+-36864];
-	fma.rn.ftz.f32 	%f144, %f376, %f143, %f142;
-	fma.rn.ftz.f32 	%f145, %f375, %f323, %f144;
-	fma.rn.ftz.f32 	%f146, %f382, %f324, %f145;
-	fma.rn.ftz.f32 	%f147, %f381, %f325, %f146;
-	fma.rn.ftz.f32 	%f148, %f380, %f326, %f147;
-	fma.rn.ftz.f32 	%f149, %f379, %f335, %f148;
-	st.global.f32 	[%r68+-12288], %f149;
-	mul.ftz.f32 	%f150, %f369, %f338;
-	fma.rn.ftz.f32 	%f151, %f370, %f337, %f150;
-	fma.rn.ftz.f32 	%f152, %f368, %f347, %f151;
-	fma.rn.ftz.f32 	%f153, %f367, %f348, %f152;
-	fma.rn.ftz.f32 	%f154, %f374, %f349, %f153;
-	fma.rn.ftz.f32 	%f155, %f373, %f350, %f154;
-	fma.rn.ftz.f32 	%f156, %f372, %f383, %f155;
-	fma.rn.ftz.f32 	%f157, %f371, %f384, %f156;
-	fma.rn.ftz.f32 	%f158, %f378, %f385, %f157;
-	ld.global.f32 	%f159, [%r67+-32768];
-	fma.rn.ftz.f32 	%f160, %f377, %f159, %f158;
-	fma.rn.ftz.f32 	%f161, %f376, %f323, %f160;
-	fma.rn.ftz.f32 	%f162, %f375, %f324, %f161;
-	fma.rn.ftz.f32 	%f163, %f382, %f325, %f162;
-	fma.rn.ftz.f32 	%f164, %f381, %f326, %f163;
-	fma.rn.ftz.f32 	%f165, %f380, %f335, %f164;
-	fma.rn.ftz.f32 	%f166, %f379, %f336, %f165;
-	st.global.f32 	[%r68+-8192], %f166;
-	mul.ftz.f32 	%f167, %f369, %f347;
-	fma.rn.ftz.f32 	%f168, %f370, %f338, %f167;
-	fma.rn.ftz.f32 	%f169, %f368, %f348, %f168;
-	fma.rn.ftz.f32 	%f170, %f367, %f349, %f169;
-	fma.rn.ftz.f32 	%f171, %f374, %f350, %f170;
-	fma.rn.ftz.f32 	%f172, %f373, %f383, %f171;
-	fma.rn.ftz.f32 	%f173, %f372, %f384, %f172;
-	fma.rn.ftz.f32 	%f174, %f371, %f385, %f173;
-	ld.global.f32 	%f175, [%r67+-28672];
-	fma.rn.ftz.f32 	%f176, %f378, %f175, %f174;
-	fma.rn.ftz.f32 	%f177, %f377, %f323, %f176;
-	fma.rn.ftz.f32 	%f178, %f376, %f324, %f177;
-	fma.rn.ftz.f32 	%f179, %f375, %f325, %f178;
-	fma.rn.ftz.f32 	%f180, %f382, %f326, %f179;
-	fma.rn.ftz.f32 	%f181, %f381, %f335, %f180;
-	fma.rn.ftz.f32 	%f182, %f380, %f336, %f181;
-	fma.rn.ftz.f32 	%f183, %f379, %f337, %f182;
-	st.global.f32 	[%r68+-4096], %f183;
-	mul.ftz.f32 	%f184, %f369, %f348;
-	fma.rn.ftz.f32 	%f185, %f370, %f347, %f184;
-	fma.rn.ftz.f32 	%f186, %f368, %f349, %f185;
-	fma.rn.ftz.f32 	%f187, %f367, %f350, %f186;
-	fma.rn.ftz.f32 	%f188, %f374, %f383, %f187;
-	fma.rn.ftz.f32 	%f189, %f373, %f384, %f188;
-	fma.rn.ftz.f32 	%f190, %f372, %f385, %f189;
-	ld.global.f32 	%f191, [%r67+-24576];
-	fma.rn.ftz.f32 	%f192, %f371, %f191, %f190;
-	fma.rn.ftz.f32 	%f193, %f378, %f323, %f192;
-	fma.rn.ftz.f32 	%f194, %f377, %f324, %f193;
-	fma.rn.ftz.f32 	%f195, %f376, %f325, %f194;
-	fma.rn.ftz.f32 	%f196, %f375, %f326, %f195;
-	fma.rn.ftz.f32 	%f197, %f382, %f335, %f196;
-	fma.rn.ftz.f32 	%f198, %f381, %f336, %f197;
-	fma.rn.ftz.f32 	%f199, %f380, %f337, %f198;
-	fma.rn.ftz.f32 	%f200, %f379, %f338, %f199;
-	st.global.f32 	[%r68], %f200;
-	mul.ftz.f32 	%f201, %f369, %f349;
-	fma.rn.ftz.f32 	%f202, %f370, %f348, %f201;
-	fma.rn.ftz.f32 	%f203, %f368, %f350, %f202;
-	fma.rn.ftz.f32 	%f204, %f367, %f383, %f203;
-	fma.rn.ftz.f32 	%f205, %f374, %f384, %f204;
-	fma.rn.ftz.f32 	%f206, %f373, %f385, %f205;
-	ld.global.f32 	%f207, [%r67+-20480];
-	fma.rn.ftz.f32 	%f208, %f372, %f207, %f206;
-	fma.rn.ftz.f32 	%f209, %f371, %f323, %f208;
-	fma.rn.ftz.f32 	%f210, %f378, %f324, %f209;
-	fma.rn.ftz.f32 	%f211, %f377, %f325, %f210;
-	fma.rn.ftz.f32 	%f212, %f376, %f326, %f211;
-	fma.rn.ftz.f32 	%f213, %f375, %f335, %f212;
-	fma.rn.ftz.f32 	%f214, %f382, %f336, %f213;
-	fma.rn.ftz.f32 	%f215, %f381, %f337, %f214;
-	fma.rn.ftz.f32 	%f216, %f380, %f338, %f215;
-	fma.rn.ftz.f32 	%f217, %f379, %f347, %f216;
-	st.global.f32 	[%r68+4096], %f217;
-	mul.ftz.f32 	%f218, %f369, %f350;
-	fma.rn.ftz.f32 	%f219, %f370, %f349, %f218;
-	fma.rn.ftz.f32 	%f220, %f368, %f383, %f219;
-	fma.rn.ftz.f32 	%f221, %f367, %f384, %f220;
-	fma.rn.ftz.f32 	%f222, %f374, %f385, %f221;
-	ld.global.f32 	%f223, [%r67+-16384];
-	fma.rn.ftz.f32 	%f224, %f373, %f223, %f222;
-	fma.rn.ftz.f32 	%f225, %f372, %f323, %f224;
-	fma.rn.ftz.f32 	%f226, %f371, %f324, %f225;
-	fma.rn.ftz.f32 	%f227, %f378, %f325, %f226;
-	fma.rn.ftz.f32 	%f228, %f377, %f326, %f227;
-	fma.rn.ftz.f32 	%f229, %f376, %f335, %f228;
-	fma.rn.ftz.f32 	%f230, %f375, %f336, %f229;
-	fma.rn.ftz.f32 	%f231, %f382, %f337, %f230;
-	fma.rn.ftz.f32 	%f232, %f381, %f338, %f231;
-	fma.rn.ftz.f32 	%f233, %f380, %f347, %f232;
-	fma.rn.ftz.f32 	%f234, %f379, %f348, %f233;
-	st.global.f32 	[%r68+8192], %f234;
-	mul.ftz.f32 	%f235, %f369, %f383;
-	fma.rn.ftz.f32 	%f236, %f370, %f350, %f235;
-	fma.rn.ftz.f32 	%f237, %f368, %f384, %f236;
-	fma.rn.ftz.f32 	%f238, %f367, %f385, %f237;
-	ld.global.f32 	%f239, [%r67+-12288];
-	fma.rn.ftz.f32 	%f240, %f374, %f239, %f238;
-	fma.rn.ftz.f32 	%f241, %f373, %f323, %f240;
-	fma.rn.ftz.f32 	%f242, %f372, %f324, %f241;
-	fma.rn.ftz.f32 	%f243, %f371, %f325, %f242;
-	fma.rn.ftz.f32 	%f244, %f378, %f326, %f243;
-	fma.rn.ftz.f32 	%f245, %f377, %f335, %f244;
-	fma.rn.ftz.f32 	%f246, %f376, %f336, %f245;
-	fma.rn.ftz.f32 	%f247, %f375, %f337, %f246;
-	fma.rn.ftz.f32 	%f248, %f382, %f338, %f247;
-	fma.rn.ftz.f32 	%f249, %f381, %f347, %f248;
-	fma.rn.ftz.f32 	%f250, %f380, %f348, %f249;
-	fma.rn.ftz.f32 	%f251, %f379, %f349, %f250;
-	st.global.f32 	[%r68+12288], %f251;
-	mul.ftz.f32 	%f252, %f369, %f384;
-	fma.rn.ftz.f32 	%f253, %f370, %f383, %f252;
-	fma.rn.ftz.f32 	%f254, %f368, %f385, %f253;
-	ld.global.f32 	%f255, [%r67+-8192];
-	fma.rn.ftz.f32 	%f256, %f367, %f255, %f254;
-	fma.rn.ftz.f32 	%f257, %f374, %f323, %f256;
-	fma.rn.ftz.f32 	%f258, %f373, %f324, %f257;
-	fma.rn.ftz.f32 	%f259, %f372, %f325, %f258;
-	fma.rn.ftz.f32 	%f260, %f371, %f326, %f259;
-	fma.rn.ftz.f32 	%f261, %f378, %f335, %f260;
-	fma.rn.ftz.f32 	%f262, %f377, %f336, %f261;
-	fma.rn.ftz.f32 	%f263, %f376, %f337, %f262;
-	fma.rn.ftz.f32 	%f264, %f375, %f338, %f263;
-	fma.rn.ftz.f32 	%f265, %f382, %f347, %f264;
-	fma.rn.ftz.f32 	%f266, %f381, %f348, %f265;
-	fma.rn.ftz.f32 	%f267, %f380, %f349, %f266;
-	fma.rn.ftz.f32 	%f268, %f379, %f350, %f267;
-	st.global.f32 	[%r68+16384], %f268;
-	mul.ftz.f32 	%f269, %f369, %f385;
-	fma.rn.ftz.f32 	%f270, %f370, %f384, %f269;
-	ld.global.f32 	%f271, [%r67+-4096];
-	fma.rn.ftz.f32 	%f272, %f368, %f271, %f270;
-	fma.rn.ftz.f32 	%f273, %f367, %f323, %f272;
-	fma.rn.ftz.f32 	%f274, %f374, %f324, %f273;
-	fma.rn.ftz.f32 	%f275, %f373, %f325, %f274;
-	fma.rn.ftz.f32 	%f276, %f372, %f326, %f275;
-	fma.rn.ftz.f32 	%f277, %f371, %f335, %f276;
-	fma.rn.ftz.f32 	%f278, %f378, %f336, %f277;
-	fma.rn.ftz.f32 	%f279, %f377, %f337, %f278;
-	fma.rn.ftz.f32 	%f280, %f376, %f338, %f279;
-	fma.rn.ftz.f32 	%f281, %f375, %f347, %f280;
-	fma.rn.ftz.f32 	%f282, %f382, %f348, %f281;
-	fma.rn.ftz.f32 	%f283, %f381, %f349, %f282;
-	fma.rn.ftz.f32 	%f284, %f380, %f350, %f283;
-	fma.rn.ftz.f32 	%f285, %f379, %f383, %f284;
-	st.global.f32 	[%r68+20480], %f285;
-	ld.global.f32 	%f286, [%r67];
-	mul.ftz.f32 	%f287, %f369, %f286;
-	fma.rn.ftz.f32 	%f288, %f370, %f385, %f287;
-	fma.rn.ftz.f32 	%f289, %f368, %f323, %f288;
-	fma.rn.ftz.f32 	%f290, %f367, %f324, %f289;
-	fma.rn.ftz.f32 	%f291, %f374, %f325, %f290;
-	fma.rn.ftz.f32 	%f292, %f373, %f326, %f291;
-	fma.rn.ftz.f32 	%f293, %f372, %f335, %f292;
-	fma.rn.ftz.f32 	%f294, %f371, %f336, %f293;
-	fma.rn.ftz.f32 	%f295, %f378, %f337, %f294;
-	fma.rn.ftz.f32 	%f296, %f377, %f338, %f295;
-	fma.rn.ftz.f32 	%f297, %f376, %f347, %f296;
-	fma.rn.ftz.f32 	%f298, %f375, %f348, %f297;
-	fma.rn.ftz.f32 	%f299, %f382, %f349, %f298;
-	fma.rn.ftz.f32 	%f300, %f381, %f350, %f299;
-	fma.rn.ftz.f32 	%f301, %f380, %f383, %f300;
-	fma.rn.ftz.f32 	%f302, %f379, %f384, %f301;
-	st.global.f32 	[%r68+24576], %f302;
-	mul.ftz.f32 	%f303, %f369, %f323;
-	fma.rn.ftz.f32 	%f304, %f370, %f286, %f303;
-	fma.rn.ftz.f32 	%f305, %f368, %f324, %f304;
-	fma.rn.ftz.f32 	%f306, %f367, %f325, %f305;
-	fma.rn.ftz.f32 	%f307, %f374, %f326, %f306;
-	fma.rn.ftz.f32 	%f308, %f373, %f335, %f307;
-	fma.rn.ftz.f32 	%f309, %f372, %f336, %f308;
-	fma.rn.ftz.f32 	%f310, %f371, %f337, %f309;
-	fma.rn.ftz.f32 	%f311, %f378, %f338, %f310;
-	fma.rn.ftz.f32 	%f312, %f377, %f347, %f311;
-	fma.rn.ftz.f32 	%f313, %f376, %f348, %f312;
-	fma.rn.ftz.f32 	%f314, %f375, %f349, %f313;
-	fma.rn.ftz.f32 	%f315, %f382, %f350, %f314;
-	fma.rn.ftz.f32 	%f316, %f381, %f383, %f315;
-	fma.rn.ftz.f32 	%f317, %f380, %f384, %f316;
-	fma.rn.ftz.f32 	%f318, %f379, %f385, %f317;
-	st.global.f32 	[%r68+28672], %f318;
-	add.s32 	%r70, %r70, 65536;
-	add.s32 	%r69, %r69, -1;
-	setp.ne.s32 	%p1, %r69, 0;
-	mov.f32 	%f383, %f383;
-	mov.f32 	%f384, %f384;
-	mov.f32 	%f385, %f385;
-	mov.f32 	%f366, %f286;
-	@%p1 bra 	BB0_1;
-
-	ret;
-}
-
-
diff --git a/RTCP/GPUProc/src/UHEP/Transpose.cl-0.ptx b/RTCP/GPUProc/src/UHEP/Transpose.cl-0.ptx
deleted file mode 100644
index cb8248be325..00000000000
--- a/RTCP/GPUProc/src/UHEP/Transpose.cl-0.ptx
+++ /dev/null
@@ -1,142 +0,0 @@
-//
-// Generated by NVIDIA NVVM Compiler
-// Compiler built on Tue Feb  7 07:15:59 2012 (1328595359)
-// Driver 295.20
-//
-
-.version 3.0
-.target sm_21, texmode_independent
-.address_size 32
-
-.extern .shared .align 16 .b8 shr_1_tmp[4352];
-
-.entry UHEP_Transpose(
-	.param .u32 .ptr .global .align 1 UHEP_Transpose_param_0,
-	.param .u32 .ptr .global .align 1 UHEP_Transpose_param_1,
-	.param .u32 .ptr .global .align 4 UHEP_Transpose_param_2
-)
-{
-	.reg .f32 	%f<30>;
-	.reg .pred 	%p<7>;
-	.reg .s32 	%r<61>;
-
-
-	ld.param.u32 	%r25, [UHEP_Transpose_param_0];
-	ld.param.u32 	%r26, [UHEP_Transpose_param_1];
-	ld.param.u32 	%r27, [UHEP_Transpose_param_2];
-	// inline asm
-	mov.u32 	%r12, %envreg4;
-	// inline asm
-	// inline asm
-	mov.u32 	%r13, %ntid.y;
-	// inline asm
-	// inline asm
-	mov.u32 	%r14, %ctaid.y;
-	// inline asm
-	// inline asm
-	mov.u32 	%r15, %tid.y;
-	// inline asm
-	add.s32 	%r28, %r15, %r12;
-	mad.lo.s32 	%r29, %r14, %r13, %r28;
-	// inline asm
-	mov.u32 	%r16, %envreg5;
-	// inline asm
-	// inline asm
-	mov.u32 	%r17, %ntid.z;
-	// inline asm
-	// inline asm
-	mov.u32 	%r18, %ctaid.z;
-	// inline asm
-	// inline asm
-	mov.u32 	%r19, %tid.z;
-	// inline asm
-	add.s32 	%r30, %r19, %r16;
-	mad.lo.s32 	%r31, %r18, %r17, %r30;
-	// inline asm
-	mov.u32 	%r20, %tid.x;
-	// inline asm
-	shl.b32 	%r32, %r29, 4;
-	and.b32  	%r33, %r20, 15;
-	add.s32 	%r34, %r32, %r33;
-	// inline asm
-	mov.u32 	%r21, %tid.x;
-	// inline asm
-	shr.u32 	%r35, %r21, 4;
-	shl.b32 	%r36, %r31, 4;
-	add.s32 	%r37, %r36, %r35;
-	shl.b32 	%r38, %r37, 2;
-	add.s32 	%r39, %r27, %r38;
-	setp.lt.u32 	%p4, %r34, 4;
-	ld.global.u32 	%r40, [%r39];
-	setp.gt.s32 	%p5, %r40, -1;
-	and.pred  	%p1, %p4, %p5;
-	// inline asm
-	mov.u32 	%r22, %tid.x;
-	// inline asm
-	shr.u32 	%r41, %r22, 4;
-	// inline asm
-	mov.u32 	%r23, %tid.x;
-	// inline asm
-	and.b32  	%r42, %r23, 15;
-	add.s32 	%r43, %r36, %r42;
-	shl.b32 	%r44, %r43, 2;
-	add.s32 	%r45, %r27, %r44;
-	add.s32 	%r46, %r41, %r32;
-	setp.lt.u32 	%p2, %r46, 4;
-	mov.u32 	%r47, shr_1_tmp;
-	mad.lo.s32 	%r48, %r33, 272, %r47;
-	and.b32  	%r49, %r21, -16;
-	add.s32 	%r1, %r48, %r49;
-	ld.global.u32 	%r50, [%r45];
-	setp.gt.s32 	%p3, %r50, -1;
-	mad.lo.s32 	%r51, %r41, 272, %r47;
-	shl.b32 	%r52, %r42, 4;
-	add.s32 	%r2, %r51, %r52;
-	shl.b32 	%r53, %r43, 3;
-	mad.lo.s32 	%r54, %r46, 8511488, %r53;
-	add.s32 	%r55, %r54, %r25;
-	add.s32 	%r60, %r55, 4255744;
-	shl.b32 	%r56, %r34, 4;
-	mad.lo.s32 	%r57, %r40, 66496, %r56;
-	add.s32 	%r59, %r26, %r57;
-	mov.u32 	%r58, 1039;
-
-BB0_1:
-	add.s32 	%r8, %r60, -4255744;
-	@!%p1 bra 	BB0_3;
-
-	ld.global.v4.f32 	{%f22, %f23, %f24, %f25}, [%r59];
-	st.shared.v4.f32 	[%r1], {%f22, %f23, %f24, %f25};
-
-BB0_3:
-	bar.sync 	0;
-	@!%p2 bra 	BB0_8;
-
-	@%p3 bra 	BB0_6;
-
-	mov.f32 	%f1, 0f00000000;
-	mov.f32 	%f26, %f1;
-	mov.f32 	%f27, %f1;
-	mov.f32 	%f28, %f1;
-	mov.f32 	%f29, %f1;
-	bra.uni 	BB0_7;
-
-BB0_6:
-	ld.shared.v4.f32 	{%f26, %f27, %f28, %f29}, [%r2];
-
-BB0_7:
-	st.global.v2.f32 	[%r8], {%f26, %f27};
-	st.global.v2.f32 	[%r8+4255744], {%f28, %f29};
-
-BB0_8:
-	bar.sync 	0;
-	add.s32 	%r60, %r60, 4096;
-	add.s32 	%r59, %r59, 64;
-	add.s32 	%r58, %r58, -1;
-	setp.ne.s32 	%p6, %r58, 0;
-	@%p6 bra 	BB0_1;
-
-	ret;
-}
-
-
diff --git a/RTCP/GPUProc/src/UHEP/Trigger.cl-0.ptx b/RTCP/GPUProc/src/UHEP/Trigger.cl-0.ptx
deleted file mode 100644
index ae2713f9037..00000000000
--- a/RTCP/GPUProc/src/UHEP/Trigger.cl-0.ptx
+++ /dev/null
@@ -1,511 +0,0 @@
-//
-// Generated by NVIDIA NVVM Compiler
-// Compiler built on Tue Feb  7 07:15:59 2012 (1328595359)
-// Driver 295.20
-//
-
-.version 3.0
-.target sm_21, texmode_independent
-.address_size 32
-
-.extern .shared .align 64 .b8 shr_4_tmp[16384];
-
-.entry trigger(
-	.param .u32 .ptr .global .align 1 trigger_param_0,
-	.param .u32 .ptr .global .align 4 trigger_param_1
-)
-{
-	.reg .f32 	%f<434>;
-	.reg .pred 	%p<21>;
-	.reg .s32 	%r<71>;
-
-
-	ld.param.u32 	%r31, [trigger_param_1];
-	// inline asm
-	mov.u32 	%r23, %tid.x;
-	// inline asm
-	// inline asm
-	mov.u32 	%r24, %tid.y;
-	// inline asm
-	shl.b32 	%r32, %r24, 4;
-	// inline asm
-	mov.u32 	%r25, %envreg5;
-	// inline asm
-	// inline asm
-	mov.u32 	%r26, %ntid.z;
-	// inline asm
-	// inline asm
-	mov.u32 	%r27, %ctaid.z;
-	// inline asm
-	// inline asm
-	mov.u32 	%r28, %tid.z;
-	// inline asm
-	add.s32 	%r33, %r28, %r25;
-	mad.lo.s32 	%r3, %r27, %r26, %r33;
-	shl.b32 	%r34, %r24, 10;
-	mov.u32 	%r35, shr_4_tmp;
-	add.s32 	%r36, %r35, %r34;
-	shl.b32 	%r37, %r23, 6;
-	add.s32 	%r4, %r36, %r37;
-	add.s32 	%r2, %r32, %r23;
-	shl.b32 	%r38, %r2, 12;
-	and.b32  	%r5, %r38, 16773120;
-	shl.b32 	%r39, %r3, 21;
-	add.s32 	%r40, %r23, %r39;
-	shl.b32 	%r41, %r24, 12;
-	add.s32 	%r42, %r40, %r41;
-	shl.b32 	%r43, %r42, 2;
-	add.s32 	%r70, %r31, %r43;
-	shl.b32 	%r44, %r24, 6;
-	shl.b32 	%r45, %r23, 2;
-	add.s32 	%r46, %r35, %r44;
-	add.s32 	%r47, %r46, %r45;
-	add.s32 	%r7, %r47, 3072;
-	mov.f32 	%f420, 0f00000000;
-	mov.f32 	%f430, %f420;
-	mov.f32 	%f431, %f420;
-	mov.f32 	%f432, %f420;
-	mov.f32 	%f433, %f420;
-	mov.f32 	%f422, %f405;
-	mov.f32 	%f419, %f420;
-	mov.f32 	%f421, %f420;
-	mov.f32 	%f418, %f420;
-	mov.u32 	%r65, 0;
-	mov.u32 	%r64, %r65;
-	mov.f32 	%f426, %f420;
-	mov.f32 	%f427, %f420;
-	mov.f32 	%f428, %f420;
-	mov.f32 	%f429, %f420;
-	mov.f32 	%f423, %f420;
-	mov.f32 	%f424, %f420;
-	mov.f32 	%f425, %f420;
-
-BB0_1:
-	mov.u32 	%r68, %r70;
-	mov.u32 	%r8, %r68;
-	shl.b32 	%r49, %r64, 4;
-	add.s32 	%r12, %r5, %r49;
-	mov.u32 	%r67, 16;
-	mov.u32 	%r66, %r7;
-	mov.u32 	%r69, %r8;
-
-BB0_2:
-	mov.u32 	%r15, %r69;
-	ld.global.f32 	%f40, [%r15];
-	ld.global.f32 	%f41, [%r15+4194304];
-	mul.ftz.f32 	%f42, %f41, %f41;
-	fma.rn.ftz.f32 	%f43, %f40, %f40, %f42;
-	st.shared.f32 	[%r66+-3072], %f43;
-	sub.ftz.f32 	%f44, %f43, %f419;
-	add.ftz.f32 	%f45, %f421, 0f3F800000;
-	div.approx.ftz.f32 	%f46, %f44, %f45;
-	add.ftz.f32 	%f47, %f419, %f46;
-	sub.ftz.f32 	%f48, %f43, %f47;
-	fma.rn.ftz.f32 	%f49, %f44, %f48, %f420;
-	ld.global.f32 	%f50, [%r15+262144];
-	ld.global.f32 	%f51, [%r15+4456448];
-	mul.ftz.f32 	%f52, %f51, %f51;
-	fma.rn.ftz.f32 	%f53, %f50, %f50, %f52;
-	st.shared.f32 	[%r66+-2048], %f53;
-	add.ftz.f32 	%f54, %f45, 0f3F800000;
-	sub.ftz.f32 	%f55, %f53, %f47;
-	div.approx.ftz.f32 	%f56, %f55, %f54;
-	add.ftz.f32 	%f57, %f47, %f56;
-	sub.ftz.f32 	%f58, %f53, %f57;
-	fma.rn.ftz.f32 	%f59, %f55, %f58, %f49;
-	ld.global.f32 	%f60, [%r15+524288];
-	ld.global.f32 	%f61, [%r15+4718592];
-	mul.ftz.f32 	%f62, %f61, %f61;
-	fma.rn.ftz.f32 	%f63, %f60, %f60, %f62;
-	st.shared.f32 	[%r66+-1024], %f63;
-	add.ftz.f32 	%f64, %f54, 0f3F800000;
-	sub.ftz.f32 	%f65, %f63, %f57;
-	div.approx.ftz.f32 	%f66, %f65, %f64;
-	add.ftz.f32 	%f67, %f57, %f66;
-	sub.ftz.f32 	%f68, %f63, %f67;
-	fma.rn.ftz.f32 	%f69, %f65, %f68, %f59;
-	ld.global.f32 	%f70, [%r15+786432];
-	ld.global.f32 	%f71, [%r15+4980736];
-	mul.ftz.f32 	%f72, %f71, %f71;
-	fma.rn.ftz.f32 	%f73, %f70, %f70, %f72;
-	st.shared.f32 	[%r66], %f73;
-	add.ftz.f32 	%f421, %f64, 0f3F800000;
-	sub.ftz.f32 	%f74, %f73, %f67;
-	div.approx.ftz.f32 	%f75, %f74, %f421;
-	add.ftz.f32 	%f419, %f67, %f75;
-	sub.ftz.f32 	%f76, %f73, %f419;
-	fma.rn.ftz.f32 	%f420, %f74, %f76, %f69;
-	add.s32 	%r16, %r15, 1048576;
-	add.s32 	%r66, %r66, 4096;
-	add.s32 	%r67, %r67, -4;
-	setp.ne.s32 	%p1, %r67, 0;
-	mov.u32 	%r69, %r16;
-	@%p1 bra 	BB0_2;
-
-	bar.sync 	0;
-	ld.shared.v4.f32 	{%f258, %f259, %f260, %f261}, [%r4];
-	add.ftz.f32 	%f79, %f422, %f258;
-	sub.ftz.f32 	%f81, %f79, %f423;
-	add.ftz.f32 	%f83, %f81, %f259;
-	sub.ftz.f32 	%f85, %f83, %f424;
-	add.ftz.f32 	%f87, %f85, %f260;
-	sub.ftz.f32 	%f89, %f87, %f425;
-	add.ftz.f32 	%f91, %f89, %f261;
-	sub.ftz.f32 	%f93, %f91, %f426;
-	ld.shared.v4.f32 	{%f274, %f423, %f424, %f425}, [%r4+16];
-	add.ftz.f32 	%f95, %f93, %f274;
-	sub.ftz.f32 	%f97, %f95, %f427;
-	add.ftz.f32 	%f99, %f97, %f423;
-	sub.ftz.f32 	%f101, %f99, %f428;
-	add.ftz.f32 	%f103, %f101, %f424;
-	sub.ftz.f32 	%f105, %f103, %f429;
-	add.ftz.f32 	%f107, %f105, %f425;
-	sub.ftz.f32 	%f109, %f107, %f430;
-	ld.shared.v4.f32 	{%f426, %f427, %f428, %f429}, [%r4+32];
-	add.ftz.f32 	%f111, %f109, %f426;
-	sub.ftz.f32 	%f113, %f111, %f431;
-	add.ftz.f32 	%f115, %f113, %f427;
-	sub.ftz.f32 	%f117, %f115, %f432;
-	add.ftz.f32 	%f119, %f117, %f428;
-	sub.ftz.f32 	%f121, %f119, %f433;
-	add.ftz.f32 	%f123, %f121, %f429;
-	sub.ftz.f32 	%f124, %f123, %f258;
-	ld.shared.v4.f32 	{%f430, %f431, %f432, %f433}, [%r4+48];
-	add.ftz.f32 	%f126, %f124, %f430;
-	sub.ftz.f32 	%f127, %f126, %f259;
-	add.ftz.f32 	%f129, %f127, %f431;
-	sub.ftz.f32 	%f130, %f129, %f260;
-	add.ftz.f32 	%f132, %f130, %f432;
-	sub.ftz.f32 	%f133, %f132, %f261;
-	add.ftz.f32 	%f135, %f133, %f433;
-	sub.ftz.f32 	%f136, %f135, %f274;
-	max.f32 	%f137, %f81, %f85;
-	max.f32 	%f138, %f89, %f93;
-	max.f32 	%f139, %f137, %f138;
-	max.f32 	%f140, %f97, %f101;
-	max.f32 	%f141, %f105, %f109;
-	max.f32 	%f142, %f140, %f141;
-	max.f32 	%f143, %f113, %f117;
-	max.f32 	%f144, %f121, %f124;
-	max.f32 	%f145, %f143, %f144;
-	max.f32 	%f146, %f127, %f130;
-	max.f32 	%f147, %f133, %f136;
-	max.f32 	%f148, %f146, %f147;
-	max.f32 	%f149, %f139, %f142;
-	max.f32 	%f150, %f145, %f148;
-	max.f32 	%f151, %f149, %f150;
-	setp.ltu.ftz.f32 	%p2, %f151, %f418;
-	selp.f32 	%f418, %f418, %f151, %p2;
-	selp.b32 	%r65, %r65, %r12, %p2;
-	mov.f32 	%f306, %f81;
-	mov.f32 	%f307, %f85;
-	mov.f32 	%f308, %f89;
-	mov.f32 	%f309, %f93;
-	mov.f32 	%f326, %f97;
-	mov.f32 	%f327, %f101;
-	mov.f32 	%f328, %f105;
-	mov.f32 	%f329, %f109;
-	mov.f32 	%f346, %f113;
-	mov.f32 	%f347, %f117;
-	mov.f32 	%f348, %f121;
-	mov.f32 	%f349, %f124;
-	mov.f32 	%f362, %f127;
-	mov.f32 	%f363, %f130;
-	mov.f32 	%f364, %f133;
-	mov.f32 	%f422, %f136;
-	bar.sync 	0;
-	add.s32 	%r64, %r64, 1;
-	add.s32 	%r21, %r8, 64;
-	setp.ne.s32 	%p3, %r64, 256;
-	mov.u32 	%r70, %r21;
-	@%p3 bra 	BB0_1;
-
-	shl.b32 	%r50, %r2, 2;
-	add.s32 	%r22, %r35, %r50;
-	st.shared.f32 	[%r22], %f419;
-	st.shared.f32 	[%r22+1024], %f420;
-	st.shared.f32 	[%r22+2048], %f418;
-	st.shared.u32 	[%r22+3072], %r65;
-	setp.lt.u32 	%p4, %r2, 128;
-	@%p4 bra 	BB0_5;
-	bra.uni 	BB0_7;
-
-BB0_5:
-	ld.shared.f32 	%f152, [%r22+1536];
-	ld.shared.f32 	%f153, [%r22+512];
-	sub.ftz.f32 	%f154, %f153, %f419;
-	add.ftz.f32 	%f155, %f419, %f153;
-	div.rn.ftz.f32 	%f156, %f155, 0f40000000;
-	st.shared.f32 	[%r22], %f156;
-	add.ftz.f32 	%f157, %f420, %f152;
-	mul.ftz.f32 	%f158, %f154, %f154;
-	mul.ftz.f32 	%f159, %f158, %f421;
-	div.rn.ftz.f32 	%f160, %f159, 0f40000000;
-	add.ftz.f32 	%f161, %f157, %f160;
-	st.shared.f32 	[%r22+1024], %f161;
-	add.ftz.f32 	%f421, %f421, %f421;
-	ld.shared.f32 	%f13, [%r22+2560];
-	setp.lt.ftz.f32 	%p5, %f418, %f13;
-	@%p5 bra 	BB0_6;
-	bra.uni 	BB0_7;
-
-BB0_6:
-	st.shared.f32 	[%r22+2048], %f13;
-	ld.shared.u32 	%r52, [%r22+3584];
-	st.shared.u32 	[%r22+3072], %r52;
-
-BB0_7:
-	bar.sync 	0;
-	setp.lt.u32 	%p6, %r2, 64;
-	@%p6 bra 	BB0_8;
-	bra.uni 	BB0_10;
-
-BB0_8:
-	ld.shared.f32 	%f162, [%r22];
-	ld.shared.f32 	%f163, [%r22+1024];
-	ld.shared.f32 	%f164, [%r22+1280];
-	ld.shared.f32 	%f165, [%r22+256];
-	sub.ftz.f32 	%f166, %f165, %f162;
-	add.ftz.f32 	%f167, %f162, %f165;
-	div.rn.ftz.f32 	%f168, %f167, 0f40000000;
-	st.shared.f32 	[%r22], %f168;
-	add.ftz.f32 	%f169, %f163, %f164;
-	mul.ftz.f32 	%f170, %f166, %f166;
-	mul.ftz.f32 	%f171, %f170, %f421;
-	div.rn.ftz.f32 	%f172, %f171, 0f40000000;
-	add.ftz.f32 	%f173, %f169, %f172;
-	st.shared.f32 	[%r22+1024], %f173;
-	add.ftz.f32 	%f421, %f421, %f421;
-	ld.shared.f32 	%f16, [%r22+2304];
-	ld.shared.f32 	%f174, [%r22+2048];
-	setp.lt.ftz.f32 	%p7, %f174, %f16;
-	@%p7 bra 	BB0_9;
-	bra.uni 	BB0_10;
-
-BB0_9:
-	st.shared.f32 	[%r22+2048], %f16;
-	ld.shared.u32 	%r53, [%r22+3328];
-	st.shared.u32 	[%r22+3072], %r53;
-
-BB0_10:
-	bar.sync 	0;
-	setp.lt.u32 	%p8, %r2, 32;
-	@%p8 bra 	BB0_11;
-	bra.uni 	BB0_13;
-
-BB0_11:
-	ld.shared.f32 	%f175, [%r22];
-	ld.shared.f32 	%f176, [%r22+1024];
-	ld.shared.f32 	%f177, [%r22+1152];
-	ld.shared.f32 	%f178, [%r22+128];
-	sub.ftz.f32 	%f179, %f178, %f175;
-	add.ftz.f32 	%f180, %f175, %f178;
-	div.rn.ftz.f32 	%f181, %f180, 0f40000000;
-	st.shared.f32 	[%r22], %f181;
-	add.ftz.f32 	%f182, %f176, %f177;
-	mul.ftz.f32 	%f183, %f179, %f179;
-	mul.ftz.f32 	%f184, %f183, %f421;
-	div.rn.ftz.f32 	%f185, %f184, 0f40000000;
-	add.ftz.f32 	%f186, %f182, %f185;
-	st.shared.f32 	[%r22+1024], %f186;
-	add.ftz.f32 	%f421, %f421, %f421;
-	ld.shared.f32 	%f19, [%r22+2176];
-	ld.shared.f32 	%f187, [%r22+2048];
-	setp.lt.ftz.f32 	%p9, %f187, %f19;
-	@%p9 bra 	BB0_12;
-	bra.uni 	BB0_13;
-
-BB0_12:
-	st.shared.f32 	[%r22+2048], %f19;
-	ld.shared.u32 	%r54, [%r22+3200];
-	st.shared.u32 	[%r22+3072], %r54;
-
-BB0_13:
-	bar.sync 	0;
-	setp.lt.u32 	%p10, %r2, 16;
-	@%p10 bra 	BB0_14;
-	bra.uni 	BB0_16;
-
-BB0_14:
-	ld.shared.f32 	%f188, [%r22];
-	ld.shared.f32 	%f189, [%r22+1024];
-	ld.shared.f32 	%f190, [%r22+1088];
-	ld.shared.f32 	%f191, [%r22+64];
-	sub.ftz.f32 	%f192, %f191, %f188;
-	add.ftz.f32 	%f193, %f188, %f191;
-	div.rn.ftz.f32 	%f194, %f193, 0f40000000;
-	st.shared.f32 	[%r22], %f194;
-	add.ftz.f32 	%f195, %f189, %f190;
-	mul.ftz.f32 	%f196, %f192, %f192;
-	mul.ftz.f32 	%f197, %f196, %f421;
-	div.rn.ftz.f32 	%f198, %f197, 0f40000000;
-	add.ftz.f32 	%f199, %f195, %f198;
-	st.shared.f32 	[%r22+1024], %f199;
-	add.ftz.f32 	%f421, %f421, %f421;
-	ld.shared.f32 	%f22, [%r22+2112];
-	ld.shared.f32 	%f200, [%r22+2048];
-	setp.lt.ftz.f32 	%p11, %f200, %f22;
-	@%p11 bra 	BB0_15;
-	bra.uni 	BB0_16;
-
-BB0_15:
-	st.shared.f32 	[%r22+2048], %f22;
-	ld.shared.u32 	%r55, [%r22+3136];
-	st.shared.u32 	[%r22+3072], %r55;
-
-BB0_16:
-	bar.sync 	0;
-	setp.lt.u32 	%p12, %r2, 8;
-	@%p12 bra 	BB0_17;
-	bra.uni 	BB0_19;
-
-BB0_17:
-	ld.shared.f32 	%f201, [%r22];
-	ld.shared.f32 	%f202, [%r22+1024];
-	ld.shared.f32 	%f203, [%r22+1056];
-	ld.shared.f32 	%f204, [%r22+32];
-	sub.ftz.f32 	%f205, %f204, %f201;
-	add.ftz.f32 	%f206, %f201, %f204;
-	div.rn.ftz.f32 	%f207, %f206, 0f40000000;
-	st.shared.f32 	[%r22], %f207;
-	add.ftz.f32 	%f208, %f202, %f203;
-	mul.ftz.f32 	%f209, %f205, %f205;
-	mul.ftz.f32 	%f210, %f209, %f421;
-	div.rn.ftz.f32 	%f211, %f210, 0f40000000;
-	add.ftz.f32 	%f212, %f208, %f211;
-	st.shared.f32 	[%r22+1024], %f212;
-	add.ftz.f32 	%f421, %f421, %f421;
-	ld.shared.f32 	%f25, [%r22+2080];
-	ld.shared.f32 	%f213, [%r22+2048];
-	setp.lt.ftz.f32 	%p13, %f213, %f25;
-	@%p13 bra 	BB0_18;
-	bra.uni 	BB0_19;
-
-BB0_18:
-	st.shared.f32 	[%r22+2048], %f25;
-	ld.shared.u32 	%r56, [%r22+3104];
-	st.shared.u32 	[%r22+3072], %r56;
-
-BB0_19:
-	bar.sync 	0;
-	setp.lt.u32 	%p14, %r2, 4;
-	@%p14 bra 	BB0_20;
-	bra.uni 	BB0_22;
-
-BB0_20:
-	ld.shared.f32 	%f214, [%r22];
-	ld.shared.f32 	%f215, [%r22+1024];
-	ld.shared.f32 	%f216, [%r22+1040];
-	ld.shared.f32 	%f217, [%r22+16];
-	sub.ftz.f32 	%f218, %f217, %f214;
-	add.ftz.f32 	%f219, %f214, %f217;
-	div.rn.ftz.f32 	%f220, %f219, 0f40000000;
-	st.shared.f32 	[%r22], %f220;
-	add.ftz.f32 	%f221, %f215, %f216;
-	mul.ftz.f32 	%f222, %f218, %f218;
-	mul.ftz.f32 	%f223, %f222, %f421;
-	div.rn.ftz.f32 	%f224, %f223, 0f40000000;
-	add.ftz.f32 	%f225, %f221, %f224;
-	st.shared.f32 	[%r22+1024], %f225;
-	add.ftz.f32 	%f421, %f421, %f421;
-	ld.shared.f32 	%f28, [%r22+2064];
-	ld.shared.f32 	%f226, [%r22+2048];
-	setp.lt.ftz.f32 	%p15, %f226, %f28;
-	@%p15 bra 	BB0_21;
-	bra.uni 	BB0_22;
-
-BB0_21:
-	st.shared.f32 	[%r22+2048], %f28;
-	ld.shared.u32 	%r57, [%r22+3088];
-	st.shared.u32 	[%r22+3072], %r57;
-
-BB0_22:
-	bar.sync 	0;
-	setp.lt.u32 	%p16, %r2, 2;
-	@%p16 bra 	BB0_23;
-	bra.uni 	BB0_25;
-
-BB0_23:
-	ld.shared.f32 	%f227, [%r22];
-	ld.shared.f32 	%f228, [%r22+1024];
-	ld.shared.f32 	%f229, [%r22+1032];
-	ld.shared.f32 	%f230, [%r22+8];
-	sub.ftz.f32 	%f231, %f230, %f227;
-	add.ftz.f32 	%f232, %f227, %f230;
-	div.rn.ftz.f32 	%f233, %f232, 0f40000000;
-	st.shared.f32 	[%r22], %f233;
-	add.ftz.f32 	%f234, %f228, %f229;
-	mul.ftz.f32 	%f235, %f231, %f231;
-	mul.ftz.f32 	%f236, %f235, %f421;
-	div.rn.ftz.f32 	%f237, %f236, 0f40000000;
-	add.ftz.f32 	%f238, %f234, %f237;
-	st.shared.f32 	[%r22+1024], %f238;
-	add.ftz.f32 	%f421, %f421, %f421;
-	ld.shared.f32 	%f31, [%r22+2056];
-	ld.shared.f32 	%f239, [%r22+2048];
-	setp.lt.ftz.f32 	%p17, %f239, %f31;
-	@%p17 bra 	BB0_24;
-	bra.uni 	BB0_25;
-
-BB0_24:
-	st.shared.f32 	[%r22+2048], %f31;
-	ld.shared.u32 	%r58, [%r22+3080];
-	st.shared.u32 	[%r22+3072], %r58;
-
-BB0_25:
-	bar.sync 	0;
-	setp.eq.s32 	%p18, %r2, 0;
-	@%p18 bra 	BB0_26;
-	bra.uni 	BB0_28;
-
-BB0_26:
-	ld.shared.f32 	%f240, [%r22];
-	ld.shared.f32 	%f241, [%r22+1024];
-	ld.shared.f32 	%f242, [%r22+1028];
-	ld.shared.f32 	%f243, [%r22+4];
-	sub.ftz.f32 	%f244, %f243, %f240;
-	add.ftz.f32 	%f245, %f240, %f243;
-	div.rn.ftz.f32 	%f246, %f245, 0f40000000;
-	st.shared.f32 	[%r22], %f246;
-	add.ftz.f32 	%f247, %f241, %f242;
-	mul.ftz.f32 	%f248, %f244, %f244;
-	mul.ftz.f32 	%f249, %f248, %f421;
-	div.rn.ftz.f32 	%f250, %f249, 0f40000000;
-	add.ftz.f32 	%f251, %f247, %f250;
-	st.shared.f32 	[%r22+1024], %f251;
-	add.ftz.f32 	%f421, %f421, %f421;
-	ld.shared.f32 	%f34, [%r22+2052];
-	ld.shared.f32 	%f252, [%r22+2048];
-	setp.lt.ftz.f32 	%p19, %f252, %f34;
-	@%p19 bra 	BB0_27;
-	bra.uni 	BB0_28;
-
-BB0_27:
-	st.shared.f32 	[%r22+2048], %f34;
-	ld.shared.u32 	%r59, [%r22+3076];
-	st.shared.u32 	[%r22+3072], %r59;
-
-BB0_28:
-	bar.sync 	0;
-	@%p18 bra 	BB0_30;
-
-	ret;
-
-BB0_30:
-	shl.b32 	%r60, %r3, 4;
-	ld.param.u32 	%r63, [trigger_param_0];
-	add.s32 	%r61, %r63, %r60;
-	ld.shared.f32 	%f253, [shr_4_tmp];
-	st.global.f32 	[%r61], %f253;
-	add.ftz.f32 	%f254, %f421, 0fBF800000;
-	ld.shared.f32 	%f255, [shr_4_tmp+1024];
-	div.approx.ftz.f32 	%f256, %f255, %f254;
-	st.global.f32 	[%r61+4], %f256;
-	ld.shared.f32 	%f257, [shr_4_tmp+2048];
-	st.global.f32 	[%r61+8], %f257;
-	ld.shared.u32 	%r62, [shr_4_tmp+3072];
-	st.global.u32 	[%r61+12], %r62;
-	ret;
-}
-
-
diff --git a/RTCP/GPUProc/src/octave-core b/RTCP/GPUProc/src/octave-core
deleted file mode 100644
index 608aba01c896492a0c4befa1f98dc1416cc6cf6c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 96
zcmeZIE=ep))iu=hVc=k3V9?7;EK1MJ(*rUY82+;XiQ?qMoWvq_umF%?2I9oLVlekV
ZACOAU&n?JFtx!N#*Wl~`R=~h;007lH6G;F7

-- 
GitLab